diff --git a/.dockerignore b/.dockerignore index 833c23a..ce9b5e5 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,13 +1,13 @@ -.dockerignore - -.git - -.next - -Dockerfile - -node_modules - -npm-debug.log - -README.md +.dockerignore + +.git + +.next + +Dockerfile + +node_modules + +npm-debug.log + +README.md \ No newline at end of file diff --git a/.editorconfig b/.editorconfig index 88bf97c..2d4b6f5 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,12 +1,12 @@ -# EditorConfig is awesome: https://EditorConfig.org - -# top-most EditorConfig file -root = true - -[*] -indent_style = space -indent_size = 2 -end_of_line = crlf -charset = utf-8 -trim_trailing_whitespace = false +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = crlf +charset = utf-8 +trim_trailing_whitespace = false insert_final_newline = false \ No newline at end of file diff --git a/.eslintignore b/.eslintignore index 719c5af..f82b9c5 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,3 +1,371 @@ -node_modules -.next -coverage \ No newline at end of file +# Created by https://www.toptal.com/developers/gitignore/api/nextjs,vercel,react,sublimetext,visualstudiocode,node,yarn,bower,macos,powershell,windows,linux,vim,dotenv,typings +# Edit at https://www.toptal.com/developers/gitignore?templates=nextjs,vercel,react,sublimetext,visualstudiocode,node,yarn,bower,macos,powershell,windows,linux,vim,dotenv,typings + +### Bower ### +bower_components +.bower-cache +.bower-registry +.bower-tmp + +### dotenv ### +.env + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### macOS Patch ### +# iCloud generated files +*.icloud + +### NextJS ### +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +### Node ### +# Logs +logs +*.log +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity +.yarn + +# dotenv environment variable files +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +### Node Patch ### +# Serverless Webpack directories +.webpack/ + +# Optional stylelint cache + +# SvelteKit build / generate output +.svelte-kit + +### PowerShell ### +# Exclude packaged modules +*.zip + +# Exclude .NET assemblies from source +*.dll + +### react ### +.DS_* +**/*.backup.* +**/*.back.* + +node_modules + +*.sublime* + +psd +thumb +sketch + +### SublimeText ### +# Cache files for Sublime Text +*.tmlanguage.cache +*.tmPreferences.cache +*.stTheme.cache + +# Workspace files are user-specific +*.sublime-workspace + +# Project files should be checked into the repository, unless a significant +# proportion of contributors will probably not be using Sublime Text +# *.sublime-project + +# SFTP configuration file +sftp-config.json +sftp-config-alt*.json + +# Package control specific files +Package Control.last-run +Package Control.ca-list +Package Control.ca-bundle +Package Control.system-ca-bundle +Package Control.cache/ +Package Control.ca-certs/ +Package Control.merged-ca-bundle +Package Control.user-ca-bundle +oscrypto-ca-bundle.crt +bh_unicode_properties.cache + +# Sublime-github package stores a github token in this file +# https://packagecontrol.io/packages/sublime-github +GitHub.sublime-settings + +### Typings ### +## Ignore downloaded typings +typings + +### Vercel ### + +### Vim ### +# Swap +[._]*.s[a-v][a-z] +!*.svg # comment out if you don't need vector files +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim +Sessionx.vim + +# Temporary +.netrwhist +# Auto-generated tag files +tags +# Persistent undo +[._]*.un~ + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history +.ionide + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +### yarn ### +# https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored + +.yarn/* +!.yarn/releases +!.yarn/patches +!.yarn/plugins +!.yarn/sdks +!.yarn/versions + +# if you are NOT using Zero-installs, then: +# comment the following lines +!.yarn/cache + +# and uncomment the following lines +# .pnp.* + +# End of https://www.toptal.com/developers/gitignore/api/nextjs,vercel,react,sublimetext,visualstudiocode,node,yarn,bower,macos,powershell,windows,linux,vim,dotenv,typings \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json index 3a8b206..1b5102c 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,103 +1,103 @@ -{ - "$schema": "https://json.schemastore.org/eslintrc", - "env": { - "browser": true, - "es2021": true, - "node": true - }, - "extends": [ - "next/core-web-vitals", - "plugin:react/recommended", - "prettier", - "airbnb", - "next", - "plugin:prettier/recommended", - "plugin:tailwindcss/recommended" - ], - "settings": { - "react": { - "version": "detect" - } - }, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 2021, - "sourceType": "module", - "ecmaFeatures": { - "jsx": true - } - }, - "plugins": [ - "@typescript-eslint", - "import", - "jsx-a11y", - "prettier", - "promise", - "react", - "tailwindcss", - "jsdoc" - ], - "rules": { - "quotes": [2, "double"], - "semi": [2, "always"], - "@typescript-eslint/quotes": [2, "double"], - "@typescript-eslint/semi": [2, "always"], - "@typescript-eslint/strict-boolean-expressions": 0, - "@typescript-eslint/explicit-function-return-type": 0, - "react/jsx-no-bind": 0, - "react/react-in-jsx-scope": 0, - "import/no-extraneous-dependencies": 0, - "import/prefer-default-export": 0, - "import/extensions": 0, - "import/no-anonymous-default-export": 0, - "@next/next/no-html-link-for-pages": [2, "src/app"], - "react/jsx-filename-extension": [ - 1, - { "extensions": [".js", ".jsx", ".ts", ".tsx"] } - ], - "react/require-default-props": 0, - "react/jsx-props-no-spreading": 0, - "tailwindcss/no-custom-classname": 0, - "tailwindcss/classnames-order": [ - 2, - { - "callees": ["classnames", "clsx", "ctl", "cva", "tv", "cn"], - "removeDuplicates": true, - "skipClassAttribute": true - } - ], - "prettier/prettier": [ - 2, - { - "semi": true, - "tabWidth": 2, - "printWidth": 80, - "singleQuote": false, - "jsxSingleQuote": false, - "singleAttributePerLine": true, - "endOfLine": "auto", - "trailingComma": "all" - } - ], - "react/function-component-definition": [ - 2, - { - "namedComponents": [ - "function-declaration", - "function-expression", - "arrow-function" - ], - "unnamedComponents": ["function-expression", "arrow-function"] - } - ], - "jsx-a11y/label-has-associated-control": [ - 2, - { - "labelComponents": ["CustomInputLabel"], - "labelAttributes": ["label"], - "controlComponents": ["CustomInput"], - "depth": 3 - } - ] - } -} +{ + "$schema": "https://json.schemastore.org/eslintrc", + "env": { + "browser": true, + "es2021": true, + "node": true + }, + "extends": [ + "next/core-web-vitals", + "plugin:react/recommended", + "prettier", + "airbnb", + "next", + "plugin:prettier/recommended", + "plugin:tailwindcss/recommended" + ], + "settings": { + "react": { + "version": "detect" + } + }, + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module", + "ecmaFeatures": { + "jsx": true + } + }, + "plugins": [ + "@typescript-eslint", + "import", + "jsx-a11y", + "prettier", + "promise", + "react", + "tailwindcss", + "jsdoc" + ], + "rules": { + "quotes": [2, "double"], + "semi": [2, "always"], + "@typescript-eslint/quotes": [2, "double"], + "@typescript-eslint/semi": [2, "always"], + "@typescript-eslint/strict-boolean-expressions": 0, + "@typescript-eslint/explicit-function-return-type": 0, + "react/jsx-no-bind": 0, + "react/react-in-jsx-scope": 0, + "import/no-extraneous-dependencies": 0, + "import/prefer-default-export": 0, + "import/extensions": 0, + "import/no-anonymous-default-export": 0, + "@next/next/no-html-link-for-pages": [2, "src/app"], + "react/jsx-filename-extension": [ + 1, + { "extensions": [".js", ".jsx", ".ts", ".tsx"] } + ], + "react/require-default-props": 0, + "react/jsx-props-no-spreading": 0, + "tailwindcss/no-custom-classname": 0, + "tailwindcss/classnames-order": [ + 2, + { + "callees": ["className", "clsx", "ctl", "cva", "tv", "cn"], + "removeDuplicates": true, + "skipClassAttribute": true + } + ], + "prettier/prettier": [ + 2, + { + "semi": true, + "tabWidth": 2, + "printWidth": 80, + "singleQuote": false, + "jsxSingleQuote": false, + "singleAttributePerLine": true, + "endOfLine": "auto", + "trailingComma": "all" + } + ], + "react/function-component-definition": [ + 2, + { + "namedComponents": [ + "function-declaration", + "function-expression", + "arrow-function" + ], + "unnamedComponents": ["function-expression", "arrow-function"] + } + ], + "jsx-a11y/label-has-associated-control": [ + 2, + { + "labelComponents": ["CustomInputLabel"], + "labelAttributes": ["label"], + "controlComponents": ["CustomInput"], + "depth": 3 + } + ] + } +} diff --git a/.github/CODE_OF_CONDUCT b/.github/CODE_OF_CONDUCT index afaa98f..ac19e2d 100644 --- a/.github/CODE_OF_CONDUCT +++ b/.github/CODE_OF_CONDUCT @@ -1,128 +1,128 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity -and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -- Demonstrating empathy and kindness toward other people -- Being respectful of differing opinions, viewpoints, and experiences -- Giving and gracefully accepting constructive feedback -- Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -- Focusing on what is best not just for us as individuals, but for the - overall community - -Examples of unacceptable behavior include: - -- The use of sexualized language or imagery, and sexual attention or - advances of any kind -- Trolling, insulting or derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information, such as a physical or email - address, without their explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -. -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series -of actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or -permanent ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within -the community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.0, available at -https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. - -Community Impact Guidelines were inspired by [Mozilla's code of conduct -enforcement ladder](https://github.com/mozilla/diversity). - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see the FAQ at -https://www.contributor-covenant.org/faq. Translations are available at -https://www.contributor-covenant.org/translations. +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +- Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +- The use of sexualized language or imagery, and sexual attention or + advances of any kind +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email + address, without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. \ No newline at end of file diff --git a/.github/LICENSE b/.github/LICENSE index 807a3d7..2a284e3 100644 --- a/.github/LICENSE +++ b/.github/LICENSE @@ -1,21 +1,21 @@ -MIT License - -Copyright (c) 2023 Dimas Saputra - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +MIT License + +Copyright (c) 2023 Dimas Saputra + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yaml similarity index 70% rename from .github/workflows/eslint.yml rename to .github/workflows/eslint.yaml index 442165c..935e830 100644 --- a/.github/workflows/eslint.yml +++ b/.github/workflows/eslint.yaml @@ -1,62 +1,52 @@ -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. -# ESLint is a tool for identifying and reporting on patterns -# found in ECMAScript/JavaScript code. -# More details at https://github.com/eslint/eslint -# and https://eslint.org - -name: ESLint - -on: - push: - branches: ["main"] - pull_request: - # The branches below must be a subset of the branches above - branches: ["main"] - schedule: - - cron: "44 23 * * 3" - -jobs: - eslint: - name: Run eslint scanning - runs-on: ubuntu-latest - permissions: - contents: read - security-events: write - actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Install ESLint - run: | - npm install eslint@8.10.0 - npm install @microsoft/eslint-formatter-sarif@2.1.7 - npm install @typescript-eslint/eslint-plugin - npm install @typescript-eslint/parser - npm install eslint-config-airbnb - npm install eslint-config-next - npm install eslint-config-prettier - npm install eslint-plugin-import - npm install eslint-plugin-jsdoc - npm install eslint-plugin-jsx-a11y - npm install eslint-plugin-prettier - npm install eslint-plugin-promise - npm install eslint-plugin-react - npm install eslint-plugin-react-hooks - - - name: Run ESLint - run: npx eslint . - --config .eslintrc.json - --ext .js,.jsx,.ts,.tsx - --format @microsoft/eslint-formatter-sarif - --output-file eslint-results.sarif - continue-on-error: true - - - name: Upload analysis results to GitHub - uses: github/codeql-action/upload-sarif@v2 - with: - sarif_file: eslint-results.sarif - wait-for-processing: true +name: ESLint + +on: + push: + branches: ["main"] + pull_request: + branches: ["main"] + schedule: + - cron: "44 23 * * 3" + +jobs: + eslint: + name: Run eslint scanning + runs-on: ubuntu-latest + permissions: + contents: read + security-events: write + actions: read + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Install ESLint + run: | + npm install eslint@8.10.0 + npm install @microsoft/eslint-formatter-sarif@2.1.7 + npm install @typescript-eslint/eslint-plugin + npm install @typescript-eslint/parser + npm install eslint-config-airbnb + npm install eslint-config-next + npm install eslint-config-prettier + npm install eslint-plugin-import + npm install eslint-plugin-jsdoc + npm install eslint-plugin-jsx-a11y + npm install eslint-plugin-prettier + npm install eslint-plugin-promise + npm install eslint-plugin-react + npm install eslint-plugin-react-hooks + + - name: Run ESLint + run: npx eslint . + --config .eslintrc.json + --ext .js,.jsx,.ts,.tsx + --format @microsoft/eslint-formatter-sarif + --output-file eslint-results.sarif + continue-on-error: true + + - name: Upload analysis results to GitHub + uses: github/codeql-action/upload-sarif@v2 + with: + sarif_file: eslint-results.sarif + wait-for-processing: true \ No newline at end of file diff --git a/.husky/pre-commit b/.husky/pre-commit old mode 100644 new mode 100755 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..f82b9c5 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,371 @@ +# Created by https://www.toptal.com/developers/gitignore/api/nextjs,vercel,react,sublimetext,visualstudiocode,node,yarn,bower,macos,powershell,windows,linux,vim,dotenv,typings +# Edit at https://www.toptal.com/developers/gitignore?templates=nextjs,vercel,react,sublimetext,visualstudiocode,node,yarn,bower,macos,powershell,windows,linux,vim,dotenv,typings + +### Bower ### +bower_components +.bower-cache +.bower-registry +.bower-tmp + +### dotenv ### +.env + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### macOS Patch ### +# iCloud generated files +*.icloud + +### NextJS ### +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +### Node ### +# Logs +logs +*.log +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity +.yarn + +# dotenv environment variable files +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +### Node Patch ### +# Serverless Webpack directories +.webpack/ + +# Optional stylelint cache + +# SvelteKit build / generate output +.svelte-kit + +### PowerShell ### +# Exclude packaged modules +*.zip + +# Exclude .NET assemblies from source +*.dll + +### react ### +.DS_* +**/*.backup.* +**/*.back.* + +node_modules + +*.sublime* + +psd +thumb +sketch + +### SublimeText ### +# Cache files for Sublime Text +*.tmlanguage.cache +*.tmPreferences.cache +*.stTheme.cache + +# Workspace files are user-specific +*.sublime-workspace + +# Project files should be checked into the repository, unless a significant +# proportion of contributors will probably not be using Sublime Text +# *.sublime-project + +# SFTP configuration file +sftp-config.json +sftp-config-alt*.json + +# Package control specific files +Package Control.last-run +Package Control.ca-list +Package Control.ca-bundle +Package Control.system-ca-bundle +Package Control.cache/ +Package Control.ca-certs/ +Package Control.merged-ca-bundle +Package Control.user-ca-bundle +oscrypto-ca-bundle.crt +bh_unicode_properties.cache + +# Sublime-github package stores a github token in this file +# https://packagecontrol.io/packages/sublime-github +GitHub.sublime-settings + +### Typings ### +## Ignore downloaded typings +typings + +### Vercel ### + +### Vim ### +# Swap +[._]*.s[a-v][a-z] +!*.svg # comment out if you don't need vector files +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim +Sessionx.vim + +# Temporary +.netrwhist +# Auto-generated tag files +tags +# Persistent undo +[._]*.un~ + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history +.ionide + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +### yarn ### +# https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored + +.yarn/* +!.yarn/releases +!.yarn/patches +!.yarn/plugins +!.yarn/sdks +!.yarn/versions + +# if you are NOT using Zero-installs, then: +# comment the following lines +!.yarn/cache + +# and uncomment the following lines +# .pnp.* + +# End of https://www.toptal.com/developers/gitignore/api/nextjs,vercel,react,sublimetext,visualstudiocode,node,yarn,bower,macos,powershell,windows,linux,vim,dotenv,typings \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index d7df89c..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["esbenp.prettier-vscode", "dbaeumer.vscode-eslint"] -} diff --git a/.vscode/settings.json b/.vscode/settings.json index eff851d..b2377e0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,16 +1,23 @@ -{ - "typescript.tsdk": "./node_modules/typescript/lib", - "typescript.enablePromptUseWorkspaceTsdk": true, - "explorer.fileNesting.enabled": true, - "explorer.fileNesting.expand": false, - "explorer.fileNesting.patterns": { - "Dockerfile": ".dockerignore, Dockerfile.development, Dockerfile.production, Dockerfile.testing", - "*.ts": "${capture}.d.ts", - "next.config.js": "next-env.d.ts", - "tailwind.config.js": "postcss.config.js", - "README.md": "${capture}.md", - ".eslintrc.json": ".eslintcache, .eslintignore", - "package.json": "package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb" - }, - "editor.wordWrap": "on" -} +{ + "typescript.tsdk": "./node_modules/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true, + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.expand": false, + "explorer.fileNesting.patterns": { + "Docker*": ".dockerignore, Dockerfile.development, Dockerfile.production, Dockerfile.testing, docker-compose.*", + "*.ts": "${capture}.d.ts", + "next.config.*": "next-env.d.ts", + "tailwind.config.*": "postcss.config.js", + "README.md": "${capture}.md", + ".eslintrc*": ".eslintcache, .eslintignore", + ".prettierrc*": ".prettierignore", + "package.json": "package*, yarn.lock, pnpm-lock.yaml, bun.lockb, bunfig.toml, .npmrc, .nvmrc, .yarnrc" + }, + "editor.wordWrap": "wordWrapColumn", + "files.exclude": { + "**/.git": false + }, + "editor.codeActionsOnSave": { + "source.fixAll": true + } +} diff --git a/README.md b/README.md index e523343..ecb7b0e 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,90 @@ -# This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app) +# Portfolio -## Getting Started +my personal web page -First, run the development server: +## Tech Stack + +Here's my technology i used in this project + +- React +- TypeScript +- TailwindCSS +- Next 13 +- Framer motion +- Dockerfile +- Bun.js + +## Installation + +First of all Clone this project + +- HTTP + +```bash +git clone https://github.com/infinitedim/portfolio.git + +cd portfolio +``` + +- SSH ```bash -npm run dev -# or -yarn dev -# or -pnpm dev +git clone git@github.com:infinitedim/portfolio.git + +cd portfolio ``` -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. +- GITHUB CLI -You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. +```bash +gh repo clone infinitedim/portfolio + +cd portfolio +``` + +- if you want to change name the output you can use -o arguments + +```bash +git clone https://github.com/infinitedim/portfolio.git -o portfolioNameHasChanged + +cd portfolioNameHasChanged +``` + +This project use bun as runtime if you not using bun i personally recommend to use yarn + +- Install dependencies + +```bash +// use npm +npm install + +// use yarn +yarn install + +// use pnpm +pnpm install + +// use bun +bun install +``` -[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`. +## Color Reference -The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. +- coming soon -This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. +## Demo -## Learn More +see [development demo](https://dev.infinitedim.site) +or see [stable demo](https://infinitedim.site) -To learn more about Next.js, take a look at the following resources: +## Authors -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. +- [Dimas Saputra](https://www.github.com/infinitedim) -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! +## Contributing -## Deploy on Vercel +Contributions are always welcome! -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. +See `contributing.md` for ways to get started. -Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. +Please adhere to this project's `code of conduct`. diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000..62b112e Binary files /dev/null and b/bun.lockb differ diff --git a/bunfig.toml b/bunfig.toml index 193b0cd..13924c2 100644 --- a/bunfig.toml +++ b/bunfig.toml @@ -11,4 +11,4 @@ save = true # whether to save a non-Bun lockfile alongside bun.lockb # only "yarn" is supported -print = "yarn" +print = "yarn" \ No newline at end of file diff --git a/components.json b/components.json deleted file mode 100644 index 97c869e..0000000 --- a/components.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "$schema": "https://ui.shadcn.com/schema.json", - "style": "default", - "rsc": true, - "tsx": true, - "tailwind": { - "config": "tailwind.config.js", - "css": "src/styles/globals.css", - "baseColor": "zinc", - "cssVariables": true - }, - "aliases": { - "components": "@/components", - "utils": "@/utils" - } -} diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..7022a3e --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,6 @@ +version: "3" +services: + app: + build: . + ports: + - 3000:3000 diff --git a/package.json b/package.json index c97988f..fefd041 100644 --- a/package.json +++ b/package.json @@ -39,18 +39,14 @@ ] }, "dependencies": { - "@radix-ui/react-dropdown-menu": "^2.0.5", - "@radix-ui/react-slot": "^1.0.2", - "@types/mdx": "^2.0.7", "@vercel/analytics": "^1.0.2", - "class-variance-authority": "^0.6.1", - "clsx": "^1.2.1", - "lucide-react": "^0.272.0", + "clsx": "^2.0.0", + "framer-motion": "^10.16.4", "next": "13.4.10", "react": "18.2.0", "react-dom": "18.2.0", "tailwind-merge": "^1.14.0", - "tailwindcss-animate": "^1.0.7" + "usehooks-ts": "^2.9.1" }, "devDependencies": { "@jridgewell/sourcemap-codec": "^1.4.15", diff --git a/public/assets/pdf/resume.pdf b/public/assets/pdf/resume.pdf deleted file mode 100644 index 0f15b90..0000000 Binary files a/public/assets/pdf/resume.pdf and /dev/null differ diff --git a/public/assets/svg/hero.svg b/public/assets/svg/hero.svg deleted file mode 100644 index 8956aca..0000000 --- a/public/assets/svg/hero.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/assets/svg/logo.svg b/public/assets/svg/logo.svg deleted file mode 100644 index b46f105..0000000 --- a/public/assets/svg/logo.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - \ No newline at end of file diff --git a/public/hero.svg b/public/hero.svg new file mode 100644 index 0000000..00edf11 --- /dev/null +++ b/public/hero.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/not_found.svg b/public/not_found.svg new file mode 100644 index 0000000..f47c505 --- /dev/null +++ b/public/not_found.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/[...notfound]/layout.tsx b/src/app/[...notfound]/layout.tsx index 38da053..88bc376 100644 --- a/src/app/[...notfound]/layout.tsx +++ b/src/app/[...notfound]/layout.tsx @@ -1,5 +1,6 @@ -import { ReactNode } from "react"; - -export default function Layout({ children }: { children: ReactNode }) { - return
{children}
; -} +import { cn } from "@/utils"; +import { ReactNode } from "react"; + +export default function Layout({ children }: { children: ReactNode }) { + return
{children}
; +} diff --git a/src/app/[...notfound]/page.tsx b/src/app/[...notfound]/page.tsx index 7021b00..cf7a56f 100644 --- a/src/app/[...notfound]/page.tsx +++ b/src/app/[...notfound]/page.tsx @@ -1,37 +1,37 @@ -import { notFound } from "next/navigation"; -import type { Metadata } from "next"; - -export const metadata: Metadata = { - title: "404 - Page Not Found", - description: "This is my personal portfolio web pages", - keywords: [ - "dimas", - "dimas Saputra", - "dimas Saputra resume", - "resume dimas saputra", - "infinitedim resume", - "cv", - "cv dimas saputra", - "infinitedim cv", - "cv infinitedim", - "resume infinitedim", - "infinitedim", - "infinitedim portfolio", - "portfolio infinitedim", - "dimas portfolio", - "error page", - "not found page", - "404", - "error 404", - "404 not found", - "404 page", - ], - authors: [{ name: "infinitedim", url: "https://infinitedim.site" }], - creator: "infinitedim", - viewport: { width: "device-width", initialScale: 1 }, -}; - -export default function NotFoundCatchAll(): null { - notFound(); - return null; -} +import { notFound } from "next/navigation"; +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "404 - Page Not Found", + description: "This is my personal portfolio web pages", + keywords: [ + "dimas", + "dimas Saputra", + "dimas Saputra resume", + "resume dimas saputra", + "infinitedim resume", + "cv", + "cv dimas saputra", + "infinitedim cv", + "cv infinitedim", + "resume infinitedim", + "infinitedim", + "infinitedim portfolio", + "portfolio infinitedim", + "dimas portfolio", + "error page", + "not found page", + "404", + "error 404", + "404 not found", + "404 page", + ], + authors: [{ name: "infinitedim", url: "https://infinitedim.site" }], + creator: "infinitedim", + viewport: { width: "device-width", initialScale: 1 }, +}; + +export default function NotFoundCatchAll(): null { + notFound(); + return null; +} diff --git a/src/app/about/layout.tsx b/src/app/about/layout.tsx index 38da053..88bc376 100644 --- a/src/app/about/layout.tsx +++ b/src/app/about/layout.tsx @@ -1,5 +1,6 @@ -import { ReactNode } from "react"; - -export default function Layout({ children }: { children: ReactNode }) { - return
{children}
; -} +import { cn } from "@/utils"; +import { ReactNode } from "react"; + +export default function Layout({ children }: { children: ReactNode }) { + return
{children}
; +} diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx index 177d286..a267d4b 100644 --- a/src/app/about/page.tsx +++ b/src/app/about/page.tsx @@ -1,37 +1,34 @@ -import { Heading, Paragraph } from "@/components"; - -export default function Page() { - return ( -
- - About me - - - {/* Hello there, my name is Dimas Saputra, i am a software developer at - voltras international, i was born in Jakarta, Indonesia in second July - 2004 and i start coding when i was 10th grade in vocational highscool - named smk boedi luhur. */} - Lorem, ipsum dolor sit amet consectetur adipisicing elit. Nesciunt - necessitatibus alias natus beatae asperiores enim ex doloribus facere id - eligendi tenetur laudantium labore, earum dicta quod voluptatem incidunt - nisi. Et! - - - {/* when i first write code i was create a hello world, yeah it‘s very - common for every programmer to write the first code with hello world, - and when i first learn to code, i was use html for the language */} - Lorem, ipsum dolor sit amet consectetur adipisicing elit. Voluptatum - deserunt ea ab odit in aliquid, hic quia amet autem sit unde at eveniet - doloribus dolore. Quidem aliquid dolorem facere atque? - - - {/* and after that i falling in love with code and learn without mentor, - teacher or lecturer to teach me about code */} - - {/* so its about me, maybe i will update this later */} -
- ); -} +import { Heading } from "@/components"; +import { cn } from "@/utils"; +import { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Dimas Saputra - About", + description: "This is my about page", + keywords: [ + "dimas", + "dimas Saputra", + "resume", + "infinitedim", + "portfolio", + "about", + "about page", + "infinitedim about", + ], + authors: [{ name: "Dimas Saputra", url: "https://infinitedim.site" }], + creator: "Dimas Saputra", + viewport: { width: "device-width", initialScale: 1 }, +}; + +export default function Page() { + return ( +
+ Ini Halaman About +
+ ); +} diff --git a/src/app/favicon.ico b/src/app/favicon.ico index 718d6fe..a0b7c44 100644 Binary files a/src/app/favicon.ico and b/src/app/favicon.ico differ diff --git a/src/app/fonts.ts b/src/app/fonts.ts new file mode 100644 index 0000000..6684074 --- /dev/null +++ b/src/app/fonts.ts @@ -0,0 +1,16 @@ +import { NextFont } from "next/dist/compiled/@next/font"; +import { Inter, Oswald } from "next/font/google"; + +export const inter: NextFont = Inter({ + weight: ["100", "200", "300", "400", "500", "600", "700", "800", "900"], + subsets: ["latin"], + display: "swap", + preload: true, +}); + +export const oswald: NextFont = Oswald({ + weight: ["200", "300", "400", "500", "600", "700"], + subsets: ["latin"], + display: "swap", + preload: true, +}); diff --git a/src/app/icon.tsx b/src/app/icon.tsx new file mode 100644 index 0000000..83ea6b7 --- /dev/null +++ b/src/app/icon.tsx @@ -0,0 +1,9 @@ +export const runtime = "edge"; + +// Image metadata +export const size = { + width: 32, + height: 32, +}; + +export const contentType = "image/png"; diff --git a/src/app/layout.tsx b/src/app/layout.tsx index d7c7e5c..30fc06b 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,50 +1,34 @@ -import { NextFont } from "next/dist/compiled/@next/font"; -import { Inter } from "next/font/google"; -import { Analytics } from "@vercel/analytics/react"; -import { Navbar } from "@/components"; -import { cn } from "@/utils"; -import type { ReactNode } from "react"; -import "@/styles/globals.css"; - -const inter: NextFont = Inter({ - subsets: ["latin"], - display: "swap", -}); - -/** - * @param {ReactNode} children - The node to render the component on. - * @returns {JSX.Element} the root node of the tree structure of the application - * @type {JSX.Element} - */ -export default function RootLayout({ children }: { children: ReactNode }) { - return ( - - - - -
- {children} -
- - - - ); -} +import { ReactNode } from "react"; +import { Analytics } from "@vercel/analytics/react"; +import { Header } from "@/components"; +import { cn } from "@/utils"; +import { inter } from "./fonts"; +import "@/styles/globals.css"; + +export default function RootLayout({ children }: { children: ReactNode }) { + return ( + + + + Skip To Content + +
+
+ {children} +
+ + + + ); +} diff --git a/src/app/loading.tsx b/src/app/loading.tsx index 316beb9..0fd6d52 100644 --- a/src/app/loading.tsx +++ b/src/app/loading.tsx @@ -1,35 +1,39 @@ -export default function Loading() { - return ( -
-
-
-
-
- - - - - - - - - -
- ); -} +import { cn } from "@/utils"; + +export default function Loading() { + return ( +
+
+
+
+
+ + + + + + + + + +
+ ); +} diff --git a/src/app/middleware.ts b/src/app/middleware.ts deleted file mode 100644 index 4c26974..0000000 --- a/src/app/middleware.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { NextResponse } from "next/server"; -import type { NextRequest } from "next/server"; - -export default function middleware(req: NextRequest) { - const path = req.nextUrl.pathname; - const slug = path.slice(1); - - // Set a cookie on the response using the `ResponseCookies` API - const response = NextResponse.next(); - response.cookies.set({ - name: "middleware-slug", - value: slug, - path, - }); - - return response; -} - -export const config = { - matcher: [ - "/disclaimer", // match a single, specific page - "/((?!public|static).*)", // match all paths not starting with 'public' or 'static' - ], -}; diff --git a/src/app/not-found.tsx b/src/app/not-found.tsx index 7c58606..48a2a62 100644 --- a/src/app/not-found.tsx +++ b/src/app/not-found.tsx @@ -1,15 +1,51 @@ -import { Heading } from "@/components"; - -export default function NotFound() { - return ( -
- - Error - - 404 Page Not Found -
- ); -} +import Image from "next/image"; +import { cn } from "@/utils"; +import Dog from "@/public/not_found.svg"; +import { Button, Heading } from "@/components"; +import Link from "next/link"; +import { inter, oswald } from "./fonts"; + +export default function NotFound() { + return ( +
+ not found + + Error + + + 404 Page Not Found + + +
+ ); +} diff --git a/src/app/page.tsx b/src/app/page.tsx index 8cea5d9..26a7260 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,106 +1,203 @@ -import Link from "next/link"; -import { Metadata } from "next"; -import Image from "next/image"; -import { Heading, Paragraph } from "@/components/atoms"; -import Sapiens from "@/public/assets/svg/hero.svg"; - -/** - * @description This is the main metadata in this pages - * @type {Metadata} The type of metadata - */ -export const metadata: Metadata = { - title: "Dimas Saputra - Home", - description: "This is my personal portfolio web pages", - keywords: [ - "dimas", - "dimas Saputra", - "dimas Saputra resume", - "resume dimas saputra", - "infinitedim resume", - "cv", - "cv dimas saputra", - "infinitedim cv", - "cv infinitedim", - "resume infinitedim", - "infinitedim", - "infinitedim portfolio", - "portfolio infinitedim", - "Dimas portfolio", - "devixid", - "devix", - "devixid member", - "devix member", - "member devix", - "member devixid", - ], - authors: [{ name: "infinitedim", url: "https://infinitedim.vercel.app" }], - colorScheme: "light", - publisher: "vercel", - openGraph: { - type: "website", - url: "https://infinitedim.vercel.app", - title: "Dimas Saputra - Home", - description: "My Portfolio website", - siteName: "My Website", - images: [ - { - url: "https://infinitedim.vercel.app/opengraph.png", - }, - ], - }, - creator: "infinitedim", - viewport: { width: "device-width", initialScale: 1 }, -}; - -/** - * @description this function is create home page components - * @returns {ReactNode} - * @type {JSX.Element} - */ -export default function Page() { - return ( -
-
- Hero - - What‘s going on here? - -
-
- - This is my portfolio - - - I am a junior front end web developer especially react.js based in - bekasi indonesia. i am a fresh graduate from vocational high school - -
-
- - Resume - - - Github - -
-
- ); -} +/* eslint-disable no-nested-ternary */ + +import { Metadata } from "next"; +import { myFirstName, myLastName } from "@/constants"; +import { Heading, Text } from "@/components"; +import { cn } from "@/utils"; +import HeroImage from "@/components/atoms/images/HeroImage"; +import { inter, oswald } from "./fonts"; + +export const metadata: Metadata = { + title: "Dimas Saputra - Home", + description: "This is my personal portfolio web pages", + keywords: [ + "dimas", + "dimas Saputra", + "dimas Saputra resume", + "resume dimas saputra", + "infinitedim resume", + "cv", + "cv dimas saputra", + "infinitedim cv", + "cv infinitedim", + "resume infinitedim", + "infinitedim", + "infinitedim portfolio", + "portfolio infinitedim", + "Dimas portfolio", + ], + authors: [{ name: "infinitedim", url: "https://infinitedim.site" }], + publisher: "vercel", + creator: "infinitedim", + viewport: { width: "device-width", initialScale: 1 }, +}; + +export default function Home() { + const greeting: Array = ["Hi!", "my", "name", "is"]; + + return ( +
+
+
+ {greeting.map((item) => { + return ( + + {item} + + ); + })} +
+
+ + {myFirstName.map((name) => { + return ( + + {name} + + ); + })} + + + {myLastName.map((name) => { + return ( + + {name} + + ); + })} + +
+
+ +
+ + Who i am? + + + Lorem ipsum dolor sit amet consectetur adipisicing elit. Explicabo, + ut! Nesciunt quos unde dolore ducimus, illo magni maiores + consequuntur, optio praesentium distinctio officia sequi, temporibus + magnam nihil explicabo? + +
+
+ ); +} diff --git a/src/app/project/layout.tsx b/src/app/project/layout.tsx deleted file mode 100644 index 7632169..0000000 --- a/src/app/project/layout.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { ReactNode } from "react"; - -export default function Layout({ children }: { children: ReactNode }) { - return
{children}
; -} diff --git a/src/app/project/page.tsx b/src/app/project/page.tsx deleted file mode 100644 index 136880a..0000000 --- a/src/app/project/page.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { Heading, Paragraph } from "@/components"; - -export default function Page() { - return ( -
- - Project - - - Lorem ipsum dolor sit amet consectetur adipisicing elit. A voluptatum - error culpa? Ab, dolorum! Id neque laborum laudantium doloremque - provident aut inventore eveniet, quam, tempore impedit dolorum beatae - velit in similique quo voluptatibus voluptatem, doloribus eum voluptatum - eligendi totam suscipit tempora! Rerum veniam quam eveniet vitae vel - doloribus - - -
-
- Miolica - - Lorem ipsum dolor sit amet consectetur adipisicing elit. Nostrum - alias veritatis aliquam necessitatibus. Sint unde maiores illum - facere est, animi a possimus, quo nulla officia eligendi porro - reiciendis vel eos architecto obcaecati, accusantium ullam impedit - veniam sequi! Quas doloremque at, quam nulla eum sequi tenetur. - Odit, impedit deleniti laborum placeat id vitae alias ducimus unde - repellat facere necessitatibus dolores eligendi. Numquam, veniam - nostrum? Qui, quasi aspernatur nihil soluta ad magnam blanditiis - delectus, adipisci est, cupiditate reprehenderit inventore. Quod - enim perspiciatis natus deserunt doloremque officia iusto quae - temporibus numquam similique tenetur, necessitatibus atque deleniti. - Labore deserunt, iure veniam doloremque aut natus! - -
-
-
- ); -} diff --git a/src/app/projects/layout.tsx b/src/app/projects/layout.tsx new file mode 100644 index 0000000..88bc376 --- /dev/null +++ b/src/app/projects/layout.tsx @@ -0,0 +1,6 @@ +import { cn } from "@/utils"; +import { ReactNode } from "react"; + +export default function Layout({ children }: { children: ReactNode }) { + return
{children}
; +} diff --git a/src/app/projects/page.tsx b/src/app/projects/page.tsx new file mode 100644 index 0000000..7d89fd9 --- /dev/null +++ b/src/app/projects/page.tsx @@ -0,0 +1,19 @@ +import { Heading } from "@/components"; +import { cn } from "@/utils"; +import { inter } from "../fonts"; + +export default function Page() { + return ( +
+ + Project Page + +
+ ); +} diff --git a/src/components/Header.tsx b/src/components/Header.tsx new file mode 100644 index 0000000..e984d31 --- /dev/null +++ b/src/components/Header.tsx @@ -0,0 +1,71 @@ +/* eslint-disable no-nested-ternary */ +/* eslint-disable no-console */ +/* eslint-disable no-unsafe-optional-chaining */ + +"use client"; + +import Link from "next/link"; +import { usePathname } from "next/navigation"; +import { memo } from "react"; +import { oswald } from "@/app/fonts"; +import { cn } from "@/utils"; +import { GithubIcon, Heading } from "./atoms"; +import Navbar from "./molecules/Navbar"; + +function Header() { + const pathname = usePathname(); + + return ( +
+ +
+ + {pathname === "/" + ? "Welcome" + : pathname === "/about" + ? "About" + : pathname === "/blog" + ? "Blog" + : pathname === "/project" + ? "Project" + : pathname === "/contact" + ? "Contact" + : pathname === "/resume" + ? "Resume" + : "Page not Found"} + +
+ + + +
+
+ ); +} + +export default memo(Header); diff --git a/src/components/atoms/Button.tsx b/src/components/atoms/Button.tsx index bb98389..93abba3 100644 --- a/src/components/atoms/Button.tsx +++ b/src/components/atoms/Button.tsx @@ -1,21 +1,20 @@ -import { Slot } from "@radix-ui/react-slot"; -import { buttonVariants } from "@/constants/variants"; -import { ButtonProps } from "@/interfaces"; -import { cn } from "@/utils"; -import { forwardRef, memo } from "react"; - -const Button = forwardRef( - ({ className, variant, size, asChild = false, ...props }, ref) => { - const Comp = asChild ? Slot : "button"; - return ( - - ); - }, -); -Button.displayName = "Button"; - -export default memo(Button); +"use client"; + +import { cn } from "@/utils"; +import { motion } from "framer-motion"; +import { memo } from "react"; +import type { ButtonProps } from "@/interfaces"; + +function Button({ children, className, type, ...props }: ButtonProps) { + return ( + + {children} + + ); +} + +export default memo(Button); diff --git a/src/components/atoms/Heading.tsx b/src/components/atoms/Heading.tsx index f87617a..541602d 100644 --- a/src/components/atoms/Heading.tsx +++ b/src/components/atoms/Heading.tsx @@ -1,63 +1,49 @@ -/* eslint-disable no-nested-ternary */ - -"use client"; - -import { HeadingProps } from "@/interfaces"; -import { memo } from "react"; -import { cn } from "@/utils"; - -function Heading({ as, children, className, ...props }: HeadingProps) { - return as === "h1" ? ( -

- {children} -

- ) : as === "h2" ? ( -

- {children} -

- ) : as === "h3" ? ( -

- {children} -

- ) : as === "h4" ? ( -

- {children} -

- ) : ( -

- {children} -

- ); -} - -export default memo(Heading); +/* eslint-disable no-nested-ternary */ + +"use client"; + +import { motion } from "framer-motion"; +import { memo } from "react"; +import type { HeadingProps } from "@/interfaces"; +import { cn } from "@/utils"; + +function Heading({ as, children, className, ...props }: HeadingProps) { + return as === "h1" ? ( + + {children} + + ) : as === "h2" ? ( + + {children} + + ) : as === "h3" ? ( + + {children} + + ) : as === "h4" ? ( + + {children} + + ) : ( + + {children} + + ); +} + +export default memo(Heading); diff --git a/src/components/atoms/Paragraph.tsx b/src/components/atoms/Paragraph.tsx deleted file mode 100644 index 6ada8e4..0000000 --- a/src/components/atoms/Paragraph.tsx +++ /dev/null @@ -1,18 +0,0 @@ -"use client"; - -import { ParagraphProps } from "@/interfaces"; -import { cn } from "@/utils"; -import { memo } from "react"; - -function Paragraph({ children, className, ...props }: ParagraphProps) { - return ( -

- {children} -

- ); -} - -export default memo(Paragraph); diff --git a/src/components/atoms/Text.tsx b/src/components/atoms/Text.tsx new file mode 100644 index 0000000..db3dc20 --- /dev/null +++ b/src/components/atoms/Text.tsx @@ -0,0 +1,35 @@ +/* eslint-disable no-nested-ternary */ + +"use client"; + +import { cn } from "@/utils"; +import { motion } from "framer-motion"; +import { memo } from "react"; +import type { TextProps } from "@/interfaces"; + +function Text({ children, className, type, ...props }: TextProps) { + return type === "p" ? ( + + {children} + + ) : type === "span" ? ( + + {children} + + ) : ( + + {children} + + ); +} + +export default memo(Text); diff --git a/src/components/atoms/icons/CloseIcon.tsx b/src/components/atoms/icons/CloseIcon.tsx new file mode 100644 index 0000000..d9328f1 --- /dev/null +++ b/src/components/atoms/icons/CloseIcon.tsx @@ -0,0 +1,35 @@ +"use client"; + +import { memo } from "react"; +import { motion } from "framer-motion"; +import type { AnimationableSVGProps } from "@/interfaces"; +import { cn } from "@/utils"; + +export const CloseIcon = ({ + className = "w-6 h-6", + pathVariants, + svgVariants, + ...props +}: AnimationableSVGProps) => { + return ( + + + + ); +}; + +export default memo(CloseIcon); diff --git a/src/components/atoms/icons/GithubIcon.tsx b/src/components/atoms/icons/GithubIcon.tsx new file mode 100644 index 0000000..14ec710 --- /dev/null +++ b/src/components/atoms/icons/GithubIcon.tsx @@ -0,0 +1,28 @@ +"use client"; + +import { AnimationableSVGProps } from "@/interfaces"; +import { motion } from "framer-motion"; +import { memo } from "react"; + +function GithubIcon({ + className, + svgVariants, + pathVariants, + ...props +}: AnimationableSVGProps) { + return ( + + + + ); +} + +export default memo(GithubIcon); diff --git a/src/components/atoms/icons/MenuIcon.tsx b/src/components/atoms/icons/MenuIcon.tsx new file mode 100644 index 0000000..e5dd9a7 --- /dev/null +++ b/src/components/atoms/icons/MenuIcon.tsx @@ -0,0 +1,35 @@ +"use client"; + +import { memo } from "react"; +import { motion } from "framer-motion"; +import type { AnimationableSVGProps } from "@/interfaces"; +import { cn } from "@/utils"; + +const MenuIcon = ({ + className = "h-6 w-6", + pathVariants, + svgVariants, + ...props +}: AnimationableSVGProps) => { + return ( + + + + ); +}; + +export default memo(MenuIcon); diff --git a/src/components/atoms/icons/index.ts b/src/components/atoms/icons/index.ts new file mode 100644 index 0000000..9a0cc18 --- /dev/null +++ b/src/components/atoms/icons/index.ts @@ -0,0 +1,3 @@ +export { default as CloseIcon } from "./CloseIcon"; +export { default as GithubIcon } from "./GithubIcon"; +export { default as MenuIcon } from "./MenuIcon"; diff --git a/src/components/atoms/images/HeroImage.tsx b/src/components/atoms/images/HeroImage.tsx new file mode 100644 index 0000000..5f00bdb --- /dev/null +++ b/src/components/atoms/images/HeroImage.tsx @@ -0,0 +1,23 @@ +"use client"; + +import { motion } from "framer-motion"; +import Image from "next/image"; +import { memo } from "react"; +import Hero from "@/public/hero.svg"; +import { cn } from "@/utils"; +import { HeroImageProps } from "@/interfaces"; + +function HeroImage({ ...props }: HeroImageProps) { + return ( + + Hero + + ); +} + +export default memo(HeroImage); diff --git a/src/components/atoms/index.ts b/src/components/atoms/index.ts index f9310a0..e45704d 100644 --- a/src/components/atoms/index.ts +++ b/src/components/atoms/index.ts @@ -1,2 +1,4 @@ -export { default as Paragraph } from "./Paragraph"; -export { default as Heading } from "./Heading"; +export * from "./icons"; +export { default as Heading } from "./Heading"; +export { default as Button } from "./Button"; +export { default as Text } from "./Text"; diff --git a/src/components/index.ts b/src/components/index.ts index 797403e..88c9aa0 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -1,3 +1,3 @@ -export * from "./atoms"; -export * from "./molecules"; -export * from "./template"; +export * from "./atoms"; + +export { default as Header } from "./Header"; diff --git a/src/components/molecules/Card.tsx b/src/components/molecules/Card.tsx deleted file mode 100644 index 24ae111..0000000 --- a/src/components/molecules/Card.tsx +++ /dev/null @@ -1,95 +0,0 @@ -import { forwardRef, memo } from "react"; -import type { - ForwardRefExoticComponent, - HTMLAttributes, - RefAttributes, -} from "react"; -import type { HeadingProps } from "@/interfaces"; -import { cn } from "@/utils"; - -const Card: ForwardRefExoticComponent< - HTMLAttributes & RefAttributes -> = forwardRef>( - ({ className, ...props }, ref) => ( -
- ), -); -Card.displayName = "Card"; - -const CardHeader: ForwardRefExoticComponent< - HTMLAttributes & RefAttributes -> = forwardRef>( - ({ className, ...props }, ref) => ( -
- ), -); -CardHeader.displayName = "CardHeader"; - -const CardTitle: ForwardRefExoticComponent< - HeadingProps & RefAttributes -> = forwardRef( - ({ className, ...props }, ref) => ( - // eslint-disable-next-line jsx-a11y/heading-has-content -

- ), -); -CardTitle.displayName = "CardTitle"; - -const CardDescription: ForwardRefExoticComponent< - HTMLAttributes & RefAttributes -> = forwardRef>( - ({ className, ...props }, ref) => ( -

- ), -); -CardDescription.displayName = "CardDescription"; - -const CardContent = forwardRef>( - ({ className, ...props }, ref) => ( -

- ), -); -CardContent.displayName = "CardContent"; - -const CardFooter: ForwardRefExoticComponent< - HTMLAttributes & RefAttributes -> = forwardRef>( - ({ className, ...props }, ref) => ( -
- ), -); -CardFooter.displayName = "CardFooter"; - -export { CardHeader, CardFooter, CardTitle, CardDescription, CardContent }; - -export default memo(Card); diff --git a/src/components/molecules/Dropdown.tsx b/src/components/molecules/Dropdown.tsx deleted file mode 100644 index 5cf6636..0000000 --- a/src/components/molecules/Dropdown.tsx +++ /dev/null @@ -1,186 +0,0 @@ -"use client"; - -import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; -import { Check, ChevronRight, Circle } from "lucide-react"; -import { forwardRef } from "react"; -import type { - ComponentPropsWithoutRef, - ElementRef, - HTMLAttributes, -} from "react"; -import { cn } from "@/utils/index"; - -const DropdownMenuSubTrigger = forwardRef< - ElementRef, - ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, children, ...props }, ref) => ( - - {children} - - -)); -DropdownMenuSubTrigger.displayName = - DropdownMenuPrimitive.SubTrigger.displayName; - -const DropdownMenuSubContent = forwardRef< - ElementRef, - ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -DropdownMenuSubContent.displayName = - DropdownMenuPrimitive.SubContent.displayName; - -const DropdownMenuContent = forwardRef< - ElementRef, - ComponentPropsWithoutRef ->(({ className, sideOffset = 4, ...props }, ref) => ( - - - -)); -DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName; - -const DropdownMenuItem = forwardRef< - ElementRef, - ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( - -)); -DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName; - -const DropdownMenuCheckboxItem = forwardRef< - ElementRef, - ComponentPropsWithoutRef ->(({ className, children, checked, ...props }, ref) => ( - - - - - - - {children} - -)); -DropdownMenuCheckboxItem.displayName = - DropdownMenuPrimitive.CheckboxItem.displayName; - -const DropdownMenuRadioItem = forwardRef< - ElementRef, - ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - - - - - - - {children} - -)); -DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName; - -const DropdownMenuLabel = forwardRef< - ElementRef, - ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( - -)); -DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName; - -const DropdownMenuSeparator = forwardRef< - ElementRef, - ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName; - -const DropdownMenuShortcut = ({ - className, - ...props -}: HTMLAttributes) => { - return ( - - ); -}; -DropdownMenuShortcut.displayName = "DropdownMenuShortcut"; - -export { - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuCheckboxItem, - DropdownMenuRadioItem, - DropdownMenuLabel, - DropdownMenuSeparator, - DropdownMenuShortcut, - DropdownMenuSubContent, - DropdownMenuSubTrigger, -}; diff --git a/src/components/molecules/Navbar.tsx b/src/components/molecules/Navbar.tsx new file mode 100644 index 0000000..deffd89 --- /dev/null +++ b/src/components/molecules/Navbar.tsx @@ -0,0 +1,256 @@ +/* eslint-disable no-nested-ternary */ +/* eslint-disable no-console */ + +"use client"; + +import { motion } from "framer-motion"; +import { memo, useEffect, useState } from "react"; +import { inter } from "@/app/fonts"; +import { closeIconAnimation, menuIconAnimation, menuItems } from "@/constants"; +import { Button, CloseIcon, Heading, MenuIcon } from "@/components/atoms"; +import Link from "next/link"; +import { cn } from "@/utils"; +import { useWindowSize } from "usehooks-ts"; + +function Navbar() { + const { width } = useWindowSize(); + const [isNavOpen, setIsNavOpen] = useState(false); + + useEffect(() => { + console.log(width); + }); + + function handleButtonClick() { + setIsNavOpen((prevState: boolean) => !prevState); + } + + return width < 577 ? ( + = 576 ? "hidden w-0 opacity-0" : "flex w-full opacity-100"}`, + "fixed inset-x-0 bottom-0 z-10 h-16 items-center justify-between bg-woodsmoke-950 px-5 text-woodsmoke-50", + )} + > +
+ + + Dimas + + +
+
    + {menuItems.map((item) => { + return ( + + + {item} + + + ); + })} +
+ +
+ ) : ( + +
+ + + Dimas + + +
+
    + {menuItems.map((item) => { + return ( + + + {item} + + + ); + })} +
+ +
+ ); +} + +export default memo(Navbar); diff --git a/src/components/molecules/index.ts b/src/components/molecules/index.ts deleted file mode 100644 index 8bfc271..0000000 --- a/src/components/molecules/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { default as Card } from "./Card"; - -export * from "./Dropdown"; diff --git a/src/components/template/Navbar.tsx b/src/components/template/Navbar.tsx deleted file mode 100644 index cb972b1..0000000 --- a/src/components/template/Navbar.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import Link from "next/link"; -import { Heading } from "../atoms"; - -export default function Navbar() { - return ( - - ); -} diff --git a/src/components/template/index.ts b/src/components/template/index.ts deleted file mode 100644 index 1b78fbf..0000000 --- a/src/components/template/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as Navbar } from "./Navbar"; diff --git a/src/constants/index.ts b/src/constants/index.ts index 263d092..df9aab5 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -1,17 +1,62 @@ -import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; - -export const DropdownMenu = DropdownMenuPrimitive.Root; -export const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger; -export const DropdownMenuGroup = DropdownMenuPrimitive.Group; -export const DropdownMenuPortal = DropdownMenuPrimitive.Portal; -export const DropdownMenuSub = DropdownMenuPrimitive.Sub; -export const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; - -export const HeadingType = { - h1: "h1", - h2: "h2", - h3: "h3", - h4: "h4", -} as const; - -export * from "./variants"; +import { Variants } from "framer-motion"; +// import Link from "next/link"; + +export const ButtonType = { + button: "button", + submit: "submit", + reset: "reset", +} as const; + +export const ButtonTypeAs = { + button: "button", + a: "link", +} as const; + +export const HeadingTypeAs = { + h1: "h1", + h2: "h2", + h3: "h3", + h4: "h4", +} as const; + +export const TextType = { + p: "p", + span: "span", +} as const; + +export const menuItems: Array = ["About", "Blog", "Projects"]; + +export const closeIconAnimation: Variants = { + hidden: { + pathLength: 0, + opacity: 1, + rotate: 180, + }, + visible: { + rotate: 0, + pathLength: 1, + opacity: 1, + transition: { + duration: 1, + ease: "easeInOut", + }, + }, +}; + +export const menuIconAnimation: Variants = { + hidden: { + pathLength: 0, + opacity: 1, + }, + visible: { + pathLength: 1, + opacity: 1, + transition: { + duration: 1, + ease: "easeInOut", + }, + }, +}; + +export const myFirstName: Array = ["D", "i", "m", "a", "s"]; +export const myLastName: Array = ["Sa", "pu", "tr", "a"]; diff --git a/src/constants/variants.ts b/src/constants/variants.ts deleted file mode 100644 index d3225a1..0000000 --- a/src/constants/variants.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { cva } from "class-variance-authority"; - -export const buttonVariants = cva( - "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", - { - variants: { - variant: { - default: "bg-primary text-primary-foreground hover:bg-primary/90", - destructive: - "bg-destructive text-destructive-foreground hover:bg-destructive/90", - outline: - "border border-input bg-background hover:bg-accent hover:text-accent-foreground", - secondary: - "bg-secondary text-secondary-foreground hover:bg-secondary/80", - ghost: "hover:bg-accent hover:text-accent-foreground", - link: "text-primary underline-offset-4 hover:underline", - }, - size: { - default: "h-10 px-4 py-2", - sm: "h-9 rounded-md px-3", - lg: "h-11 rounded-md px-8", - icon: "h-10 w-10", - }, - }, - defaultVariants: { - variant: "default", - size: "default", - }, - }, -); - -export const headingVariants = cva({ - variants: { - variant: { - h1: "lg:text-5x scroll-m-20 text-4xl font-extrabold tracking-tight", - h2: "scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight transition-colors first:mt-0", - h3: "scroll-m-20 text-2xl font-semibold tracking-tight", - h4: "scroll-m-20 text-xl font-semibold tracking-tight", - }, - }, - defaultVariants: { - variant: "h1", - }, -}); diff --git a/src/interfaces/index.ts b/src/interfaces/index.ts index ed48a47..33f899e 100644 --- a/src/interfaces/index.ts +++ b/src/interfaces/index.ts @@ -1,19 +1,37 @@ -import { buttonVariants } from "@/constants"; -import { HeadingTypeAs } from "@/types"; -import { VariantProps } from "class-variance-authority"; -import { ButtonHTMLAttributes, HtmlHTMLAttributes } from "react"; - -export interface ButtonProps - extends ButtonHTMLAttributes, - VariantProps { - asChild?: boolean; -} - -export interface HeadingProps extends HtmlHTMLAttributes { - as: HeadingTypeAs; -} - -export interface ParagraphProps - extends HtmlHTMLAttributes { - className?: string; -} +import { ReactNode } from "react"; +import { HTMLMotionProps, SVGMotionProps, Variants } from "framer-motion"; +import { ButtonType, HeadingTypeAs, TextType } from "@/constants"; + +export interface AnimationableSVGProps extends SVGMotionProps { + className?: string; + pathVariants?: Variants | undefined; + svgVariants?: Variants | undefined; +} + +export interface HeroImageProps extends HTMLMotionProps<"div"> {} + +export interface TextProps extends HTMLMotionProps { + type?: keyof typeof TextType; +} + +export interface ButtonProps extends HTMLMotionProps<"button"> { + children: ReactNode; + className?: string; + type: keyof typeof ButtonType; +} + +export interface HeadingProps + extends HTMLMotionProps { + as?: keyof typeof HeadingTypeAs; +} + +export type ButtonOrLinkProps = + | (HTMLMotionProps<"button"> & { + children: ReactNode; + className?: string; + type: keyof typeof ButtonType; + }) + | (HTMLMotionProps<"a"> & { + children: ReactNode; + className?: string; + }); diff --git a/src/styles/globals.css b/src/styles/globals.css index 4d9bca1..b6c15e5 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -1,77 +1,6 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; -@tailwind variants; - -@layer base { - :root { - --background: 0 0% 100%; - --foreground: 240 10% 3.9%; - - --card: 0 0% 100%; - --card-foreground: 240 10% 3.9%; - - --popover: 0 0% 100%; - --popover-foreground: 240 10% 3.9%; - - --primary: 240 5.9% 10%; - --primary-foreground: 0 0% 98%; - - --secondary: 240 4.8% 95.9%; - --secondary-foreground: 240 5.9% 10%; - - --muted: 240 4.8% 95.9%; - --muted-foreground: 240 3.8% 46.1%; - - --accent: 240 4.8% 95.9%; - --accent-foreground: 240 5.9% 10%; - - --destructive: 0 84.2% 60.2%; - --destructive-foreground: 0 0% 98%; - - --border: 240 5.9% 90%; - --input: 240 5.9% 90%; - --ring: 240 10% 3.9%; - - --radius: 0.5rem; - } - - .dark { - --background: 240 10% 3.9%; - --foreground: 0 0% 98%; - - --card: 240 10% 3.9%; - --card-foreground: 0 0% 98%; - - --popover: 240 10% 3.9%; - --popover-foreground: 0 0% 98%; - - --primary: 0 0% 98%; - --primary-foreground: 240 5.9% 10%; - - --secondary: 240 3.7% 15.9%; - --secondary-foreground: 0 0% 98%; - - --muted: 240 3.7% 15.9%; - --muted-foreground: 240 5% 64.9%; - - --accent: 240 3.7% 15.9%; - --accent-foreground: 0 0% 98%; - - --destructive: 0 62.8% 30.6%; - --destructive-foreground: 0 0% 98%; - - --border: 240 3.7% 15.9%; - --input: 240 3.7% 15.9%; - --ring: 240 4.9% 83.9%; - } -} - -@layer base { - * { - @apply border-border; - } - body { - @apply bg-background text-foreground; - } -} +@tailwind base; +@tailwind components; +@tailwind utilities; +@tailwind variants; + +@import url("./jelly-maker.css"); diff --git a/src/styles/jelly-maker.css b/src/styles/jelly-maker.css index 43b002e..40f11cd 100644 --- a/src/styles/jelly-maker.css +++ b/src/styles/jelly-maker.css @@ -1,128 +1,128 @@ -.jelly-triangle { - --uib-size: 42px; - --uib-speed: 1.25s; - --uib-color: #0f172a; - position: relative; - height: var(--uib-size); - width: var(--uib-size); - -webkit-filter: url("#uib-jelly-triangle-ooze"); - filter: url("#uib-jelly-triangle-ooze"); -} - -.jelly-triangle__dot, -.jelly-triangle::before, -.jelly-triangle::after { - content: ""; - position: absolute; - width: 33%; - height: 33%; - background: var(--uib-color); - border-radius: 100%; -} - -.jelly-triangle__dot { - top: 6%; - left: 30%; - -webkit-animation: grow0 var(--uib-speed) ease infinite; - animation: grow0 var(--uib-speed) ease infinite; -} - -.jelly-triangle::before { - bottom: 6%; - right: 0; - -webkit-animation: grow0 var(--uib-speed) ease calc(var(--uib-speed) * -0.666) - infinite; - animation: grow0 var(--uib-speed) ease calc(var(--uib-speed) * -0.666) - infinite; -} - -.jelly-triangle::after { - bottom: 6%; - left: 0; - -webkit-animation: grow0 var(--uib-speed) ease calc(var(--uib-speed) * -0.333) - infinite; - animation: grow0 var(--uib-speed) ease calc(var(--uib-speed) * -0.333) - infinite; -} - -.jelly-triangle__traveler { - position: absolute; - top: 6%; - left: 30%; - width: 33%; - height: 33%; - background: var(--uib-color); - border-radius: 100%; - -webkit-animation: triangulate var(--uib-speed) ease infinite; - animation: triangulate var(--uib-speed) ease infinite; -} - -.jelly-maker { - width: 0; - height: 0; - position: absolute; -} - -@-webkit-keyframes triangulate { - 0%, - 100% { - -webkit-transform: none; - transform: none; - } - - 33.333% { - -webkit-transform: translate(120%, 175%); - transform: translate(120%, 175%); - } - - 66.666% { - -webkit-transform: translate(-95%, 175%); - transform: translate(-95%, 175%); - } -} - -@keyframes triangulate { - 0%, - 100% { - -webkit-transform: none; - transform: none; - } - - 33.333% { - -webkit-transform: translate(120%, 175%); - transform: translate(120%, 175%); - } - - 66.666% { - -webkit-transform: translate(-95%, 175%); - transform: translate(-95%, 175%); - } -} - -@-webkit-keyframes grow0 { - 0%, - 100% { - -webkit-transform: scale(1.5); - transform: scale(1.5); - } - - 20%, - 70% { - -webkit-transform: none; - transform: none; - } -} - -@keyframes grow0 { - 0%, - 100% { - -webkit-transform: scale(1.5); - transform: scale(1.5); - } - - 20%, - 70% { - -webkit-transform: none; - transform: none; - } -} +.jelly-triangle { + --uib-size: 42px; + --uib-speed: 1.25s; + --uib-color: #09090b; + position: relative; + height: var(--uib-size); + width: var(--uib-size); + -webkit-filter: url("#uib-jelly-triangle-ooze"); + filter: url("#uib-jelly-triangle-ooze"); +} + +.jelly-triangle__dot, +.jelly-triangle::before, +.jelly-triangle::after { + content: ""; + position: absolute; + width: 33%; + height: 33%; + background: var(--uib-color); + border-radius: 100%; +} + +.jelly-triangle__dot { + top: 6%; + left: 30%; + -webkit-animation: grow0 var(--uib-speed) ease infinite; + animation: grow0 var(--uib-speed) ease infinite; +} + +.jelly-triangle::before { + bottom: 6%; + right: 0; + -webkit-animation: grow0 var(--uib-speed) ease calc(var(--uib-speed) * -0.666) + infinite; + animation: grow0 var(--uib-speed) ease calc(var(--uib-speed) * -0.666) + infinite; +} + +.jelly-triangle::after { + bottom: 6%; + left: 0; + -webkit-animation: grow0 var(--uib-speed) ease calc(var(--uib-speed) * -0.333) + infinite; + animation: grow0 var(--uib-speed) ease calc(var(--uib-speed) * -0.333) + infinite; +} + +.jelly-triangle__traveler { + position: absolute; + top: 6%; + left: 30%; + width: 33%; + height: 33%; + background: var(--uib-color); + border-radius: 100%; + -webkit-animation: triangulate var(--uib-speed) ease infinite; + animation: triangulate var(--uib-speed) ease infinite; +} + +.jelly-maker { + width: 0; + height: 0; + position: absolute; +} + +@-webkit-keyframes triangulate { + 0%, + 100% { + -webkit-transform: none; + transform: none; + } + + 33.333% { + -webkit-transform: translate(120%, 175%); + transform: translate(120%, 175%); + } + + 66.666% { + -webkit-transform: translate(-95%, 175%); + transform: translate(-95%, 175%); + } +} + +@keyframes triangulate { + 0%, + 100% { + -webkit-transform: none; + transform: none; + } + + 33.333% { + -webkit-transform: translate(120%, 175%); + transform: translate(120%, 175%); + } + + 66.666% { + -webkit-transform: translate(-95%, 175%); + transform: translate(-95%, 175%); + } +} + +@-webkit-keyframes grow0 { + 0%, + 100% { + -webkit-transform: scale(1.5); + transform: scale(1.5); + } + + 20%, + 70% { + -webkit-transform: none; + transform: none; + } +} + +@keyframes grow0 { + 0%, + 100% { + -webkit-transform: scale(1.5); + transform: scale(1.5); + } + + 20%, + 70% { + -webkit-transform: none; + transform: none; + } +} diff --git a/src/types/index.ts b/src/types/index.ts deleted file mode 100644 index f9a20de..0000000 --- a/src/types/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { HeadingType } from "@/constants"; - -export type HeadingTypeAs = keyof typeof HeadingType; diff --git a/src/utils/cn-merge.ts b/src/utils/cn-merge.ts index 5936f93..f6c3fba 100644 --- a/src/utils/cn-merge.ts +++ b/src/utils/cn-merge.ts @@ -1,7 +1,6 @@ -import clsx from "clsx"; -import type { ClassValue } from "clsx"; -import { twMerge } from "tailwind-merge"; - -export function cn(...inputs: Array): string { - return twMerge(clsx(inputs)); -} +import clsx from "clsx"; +import type { ClassValue } from "clsx"; +import { twMerge } from "tailwind-merge"; + +export const cn = (...inputs: Array): string => + twMerge(clsx(inputs)); diff --git a/src/utils/index.ts b/src/utils/index.ts index d563a5d..d5c00db 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1 +1 @@ -export * from "./cn-merge"; +export * from "./cn-merge"; diff --git a/tailwind.config.js b/tailwind.config.js deleted file mode 100644 index 80b0bbc..0000000 --- a/tailwind.config.js +++ /dev/null @@ -1,77 +0,0 @@ -/* eslint-disable global-require */ -/** @type {import('tailwindcss').Config} */ -module.exports = { - darkMode: ["class"], - content: [ - "./pages/**/*.{ts,tsx}", - "./components/**/*.{ts,tsx}", - "./app/**/*.{ts,tsx}", - "./src/**/*.{ts,tsx}", - ], - theme: { - container: { - center: true, - padding: "2rem", - screens: { - "2xl": "1400px", - }, - }, - extend: { - colors: { - border: "hsl(var(--border))", - input: "hsl(var(--input))", - ring: "hsl(var(--ring))", - background: "hsl(var(--background))", - foreground: "hsl(var(--foreground))", - primary: { - DEFAULT: "hsl(var(--primary))", - foreground: "hsl(var(--primary-foreground))", - }, - secondary: { - DEFAULT: "hsl(var(--secondary))", - foreground: "hsl(var(--secondary-foreground))", - }, - destructive: { - DEFAULT: "hsl(var(--destructive))", - foreground: "hsl(var(--destructive-foreground))", - }, - muted: { - DEFAULT: "hsl(var(--muted))", - foreground: "hsl(var(--muted-foreground))", - }, - accent: { - DEFAULT: "hsl(var(--accent))", - foreground: "hsl(var(--accent-foreground))", - }, - popover: { - DEFAULT: "hsl(var(--popover))", - foreground: "hsl(var(--popover-foreground))", - }, - card: { - DEFAULT: "hsl(var(--card))", - foreground: "hsl(var(--card-foreground))", - }, - }, - borderRadius: { - lg: "var(--radius)", - md: "calc(var(--radius) - 2px)", - sm: "calc(var(--radius) - 4px)", - }, - keyframes: { - "accordion-down": { - from: { height: 0 }, - to: { height: "var(--radix-accordion-content-height)" }, - }, - "accordion-up": { - from: { height: "var(--radix-accordion-content-height)" }, - to: { height: 0 }, - }, - }, - animation: { - "accordion-down": "accordion-down 0.2s ease-out", - "accordion-up": "accordion-up 0.2s ease-out", - }, - }, - }, - plugins: [require("tailwindcss-animate")], -}; diff --git a/tailwind.config.ts b/tailwind.config.ts new file mode 100644 index 0000000..d440d1b --- /dev/null +++ b/tailwind.config.ts @@ -0,0 +1,79 @@ +/* eslint-disable global-require */ +import type { Config } from "tailwindcss"; + +const config: Config = { + content: [ + "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", + "./src/components/**/*.{js,ts,jsx,tsx,mdx}", + "./src/app/**/*.{js,ts,jsx,tsx,mdx}", + "./node_modules/@nextui-org/theme/dist/**/*.{js,ts,jsx,tsx}", + ], + theme: { + container: { + center: true, + padding: "1.5rem", + screens: { + "2xl": "1360px", + }, + }, + screens: { + sm: "576px", + // => @media (min-width: 576px) { ... } + md: "768px", + // => @media (min-width: 768px) { ... } + lg: "1024px", + // => @media (min-width: 1024px) { ... } + xl: "1200px", + // => @media (min-width: 1200px) { ... } + "2xl": "1400px", + // => @media (min-width: 1400px) { ... } + }, + extend: { + colors: ({ colors }) => ({ + inherit: colors.inherit, + current: colors.current, + transparent: colors.transparent, + black: colors.black, + white: colors.white, + slate: colors.slate, + gray: colors.gray, + zinc: colors.zinc, + neutral: colors.neutral, + stone: colors.stone, + red: colors.red, + orange: colors.orange, + amber: colors.amber, + yellow: colors.yellow, + lime: colors.lime, + green: colors.green, + emerald: colors.emerald, + teal: colors.teal, + cyan: colors.cyan, + sky: colors.sky, + blue: colors.blue, + indigo: colors.indigo, + violet: colors.violet, + purple: colors.purple, + fuchsia: colors.fuchsia, + pink: colors.pink, + rose: colors.rose, + woodsmoke: { + 50: "#f6f6f7", + 100: "#e1e2e6", + 200: "#c2c4cd", + 300: "#9c9eac", + 400: "#77798a", + 500: "#5c5e70", + 600: "#484a59", + 700: "#3c3d49", + 800: "#33343c", + 900: "#2d2d34", + 950: "#09090b", + }, + }), + }, + }, + darkMode: "class", + plugins: [require("@tailwindcss/typography"), require("@tailwindcss/forms")], +}; +export default config; diff --git a/tsconfig.json b/tsconfig.json index 0c75234..51f3a21 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,32 +1,32 @@ -{ - "compilerOptions": { - "types": ["bun-types"], - "target": "esnext", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "bundler", - "noEmit": true, - "allowImportingTsExtensions": true, - "moduleDetection": "force", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "paths": { - "@/*": ["./src/*"], - "@/public/*": ["./public/*"] - } - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] -} +{ + "compilerOptions": { + "types": ["bun-types", "./src/reset"], + "target": "esnext", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "noEmit": true, + "allowImportingTsExtensions": true, + "moduleDetection": "force", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"], + "@/public/*": ["./public/*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/yarn.lock b/yarn.lock index f4985e9..dc2dc70 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,6 +1,6 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 -# bun ./bun.lockb --hash: A79531F477BE9D7D-bef39a68fea44f83-A6DFCE8E84444059-4cd085509eb443e2 +# bun ./bun.lockb --hash: 80A62BDA274C0577-3fd0af7b5fb3ae88-120EE694BB47954D-9916efa53311ea18 "@aashutoshrathi/word-wrap@^1.2.3": @@ -22,9 +22,9 @@ chalk "^2.4.2" "@babel/helper-validator-identifier@^7.22.5": - version "7.22.15" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz" - integrity sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ== + version "7.22.19" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.19.tgz" + integrity sha512-Tinq7ybnEPFFXhlYOYFiSjespWQk0dq2dRNAiMdRTOYQzEGqnnNyrTxPYHP5r6wGjlF1rFgABdDV0g8EwD6Qbg== "@babel/highlight@^7.22.13": version "7.22.13" @@ -35,7 +35,7 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/runtime@^7.13.10", "@babel/runtime@^7.20.7": +"@babel/runtime@^7.20.7": version "7.22.15" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz" integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA== @@ -101,6 +101,18 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@emotion/is-prop-valid@^0.8.2": + version "0.8.8" + resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" + integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== + dependencies: + "@emotion/memoize" "0.7.4" + +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + "@es-joy/jsdoccomment@~0.37.0": version "0.37.1" resolved "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.37.1.tgz" @@ -142,33 +154,6 @@ resolved "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz" integrity sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw== -"@floating-ui/core@^1.4.1": - version "1.4.1" - resolved "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.1.tgz" - integrity sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ== - dependencies: - "@floating-ui/utils" "^0.1.1" - -"@floating-ui/dom@^1.5.1": - version "1.5.2" - resolved "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.2.tgz" - integrity sha512-6ArmenS6qJEWmwzczWyhvrXRdI/rI78poBcW0h/456+onlabit+2G+QxHx5xTOX60NBJQXjsCLFbW2CmsXpUog== - dependencies: - "@floating-ui/core" "^1.4.1" - "@floating-ui/utils" "^0.1.1" - -"@floating-ui/react-dom@^2.0.0": - version "2.0.2" - resolved "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz" - integrity sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ== - dependencies: - "@floating-ui/dom" "^1.5.1" - -"@floating-ui/utils@^0.1.1": - version "0.1.2" - resolved "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.2.tgz" - integrity sha512-ou3elfqG/hZsbmF4bxeJhPHIf3G2pm0ujc39hYEZrfVqt7Vk/Zji6CXc3W0pmYM8BW1g40U+akTl9DKZhFhInQ== - "@humanwhocodes/config-array@^0.11.10": version "0.11.11" resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz" @@ -314,248 +299,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@radix-ui/primitive@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz" - integrity sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-arrow@1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz" - integrity sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-primitive" "1.0.3" - -"@radix-ui/react-collection@1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz" - integrity sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-slot" "1.0.2" - -"@radix-ui/react-compose-refs@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz" - integrity sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-context@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz" - integrity sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-direction@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz" - integrity sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-dismissable-layer@1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.4.tgz" - integrity sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-callback-ref" "1.0.1" - "@radix-ui/react-use-escape-keydown" "1.0.3" - -"@radix-ui/react-dropdown-menu@^2.0.5": - version "2.0.5" - resolved "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.0.5.tgz" - integrity sha512-xdOrZzOTocqqkCkYo8yRPCib5OkTkqN7lqNCdxwPOdE466DOaNl4N8PkUIlsXthQvW5Wwkd+aEmWpfWlBoDPEw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-id" "1.0.1" - "@radix-ui/react-menu" "2.0.5" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-controllable-state" "1.0.1" - -"@radix-ui/react-focus-guards@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz" - integrity sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-focus-scope@1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.3.tgz" - integrity sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-callback-ref" "1.0.1" - -"@radix-ui/react-id@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz" - integrity sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-layout-effect" "1.0.1" - -"@radix-ui/react-menu@2.0.5": - version "2.0.5" - resolved "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.0.5.tgz" - integrity sha512-Gw4f9pwdH+w5w+49k0gLjN0PfRDHvxmAgG16AbyJZ7zhwZ6PBHKtWohvnSwfusfnK3L68dpBREHpVkj8wEM7ZA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-collection" "1.0.3" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-dismissable-layer" "1.0.4" - "@radix-ui/react-focus-guards" "1.0.1" - "@radix-ui/react-focus-scope" "1.0.3" - "@radix-ui/react-id" "1.0.1" - "@radix-ui/react-popper" "1.1.2" - "@radix-ui/react-portal" "1.0.3" - "@radix-ui/react-presence" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-roving-focus" "1.0.4" - "@radix-ui/react-slot" "1.0.2" - "@radix-ui/react-use-callback-ref" "1.0.1" - aria-hidden "^1.1.1" - react-remove-scroll "2.5.5" - -"@radix-ui/react-popper@1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.2.tgz" - integrity sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg== - dependencies: - "@babel/runtime" "^7.13.10" - "@floating-ui/react-dom" "^2.0.0" - "@radix-ui/react-arrow" "1.0.3" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-callback-ref" "1.0.1" - "@radix-ui/react-use-layout-effect" "1.0.1" - "@radix-ui/react-use-rect" "1.0.1" - "@radix-ui/react-use-size" "1.0.1" - "@radix-ui/rect" "1.0.1" - -"@radix-ui/react-portal@1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.3.tgz" - integrity sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-primitive" "1.0.3" - -"@radix-ui/react-presence@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz" - integrity sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-use-layout-effect" "1.0.1" - -"@radix-ui/react-primitive@1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz" - integrity sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-slot" "1.0.2" - -"@radix-ui/react-roving-focus@1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz" - integrity sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-collection" "1.0.3" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-id" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-callback-ref" "1.0.1" - "@radix-ui/react-use-controllable-state" "1.0.1" - -"@radix-ui/react-slot@1.0.2", "@radix-ui/react-slot@^1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz" - integrity sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.1" - -"@radix-ui/react-use-callback-ref@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz" - integrity sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-use-controllable-state@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz" - integrity sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-callback-ref" "1.0.1" - -"@radix-ui/react-use-escape-keydown@1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz" - integrity sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-callback-ref" "1.0.1" - -"@radix-ui/react-use-layout-effect@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz" - integrity sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-use-rect@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz" - integrity sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/rect" "1.0.1" - -"@radix-ui/react-use-size@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz" - integrity sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-layout-effect" "1.0.1" - -"@radix-ui/rect@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz" - integrity sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@rollup/plugin-terser@^0.4.3": version "0.4.3" resolved "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.3.tgz" @@ -566,9 +309,9 @@ terser "^5.17.4" "@rushstack/eslint-patch@^1.1.3": - version "1.3.3" - resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.3.tgz" - integrity sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw== + version "1.4.0" + resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.4.0.tgz" + integrity sha512-cEjvTPU32OM9lUFegJagO0mRnIn+rbqrG89vV8/xLnLFX0DoR0r1oy5IlTga71Q7uT3Qus7qm7wgeiMT/+Irlg== "@swc/helpers@0.5.1": version "0.5.1" @@ -630,20 +373,15 @@ integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== "@types/json-schema@^7.0.12": - version "7.0.12" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz" - integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== + version "7.0.13" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz" + integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/mdx@^2.0.7": - version "2.0.7" - resolved "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.7.tgz" - integrity sha512-BG4tyr+4amr3WsSEmHn/fXPqaCba/AYZ7dsaQTiavihQunHSIxk+uAtqsjvicNpyHN6cm+B9RVrUOtW9VzIKHw== - "@types/node@20.4.2": version "20.4.2" resolved "https://registry.npmjs.org/@types/node/-/node-20.4.2.tgz" @@ -659,7 +397,7 @@ resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== -"@types/react@*", "@types/react@18.2.15", "@types/react@^16.8.0 || ^17.0.0 || ^18.0.0", "@types/react@^16.9.0 || ^17.0.0 || ^18.0.0": +"@types/react@18.2.15": version "18.2.15" resolved "https://registry.npmjs.org/@types/react/-/react-18.2.15.tgz" integrity sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA== @@ -690,9 +428,9 @@ integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== "@types/semver@^7.5.0": - version "7.5.1" - resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz" - integrity sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg== + version "7.5.2" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz" + integrity sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw== "@typescript-eslint/eslint-plugin@^6.5.0": version "6.7.0" @@ -939,13 +677,6 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-hidden@^1.1.1: - version "1.2.3" - resolved "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz" - integrity sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ== - dependencies: - tslib "^2.0.0" - aria-query@^5.1.3: version "5.3.0" resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" @@ -1019,7 +750,7 @@ array.prototype.tosorted@^1.1.1: es-shim-unscopables "^1.0.0" get-intrinsic "^1.2.1" -arraybuffer.prototype.slice@^1.0.1: +arraybuffer.prototype.slice@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz" integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== @@ -1145,6 +876,11 @@ buffer-from@^1.0.0: resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +bun-types@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/bun-types/-/bun-types-1.0.2.tgz" + integrity sha512-yqBp2SX9cqr5/GReb56uCfM+YP+Hntx3XPjbqX1VJXqOBu+Yqw8iWRFLKFIsz9uEfykLgflhramQ8a5Jgo+Tlg== + busboy@1.6.0: version "1.6.0" resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" @@ -1186,9 +922,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001517: - version "1.0.30001533" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001533.tgz" - integrity sha512-9aY/b05NKU4Yl2sbcJhn4A7MsGwR1EPfW/nrqsnqVA0Oq50wpmPaGI+R1Z0UKlUl96oxUkGEOILWtOHck0eCWw== + version "1.0.30001534" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001534.tgz" + integrity sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q== chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -1232,13 +968,6 @@ chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" -class-variance-authority@^0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.6.1.tgz" - integrity sha512-eurOEGc7YVx3majOrOb099PNKgO3KnKSApOprXI4BTq6bcfbqbQXPN2u+rPPmIJ2di23bMwhk0SxCCthBmszEQ== - dependencies: - clsx "1.2.1" - cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" @@ -1254,9 +983,9 @@ cli-cursor@^4.0.0: restore-cursor "^4.0.0" cli-spinners@^2.5.0: - version "2.9.0" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz" - integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== + version "2.9.1" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz" + integrity sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ== cli-truncate@^3.1.0: version "3.1.0" @@ -1281,10 +1010,10 @@ clone@^1.0.2: resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== -clsx@1.2.1, clsx@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" - integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== +clsx@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz" + integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== color-convert@^1.9.0: version "1.9.3" @@ -1381,9 +1110,9 @@ conventional-commit-types@^3.0.0: integrity sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg== cosmiconfig@>=7, cosmiconfig@^8.0.0: - version "8.3.5" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.5.tgz" - integrity sha512-A5Xry3xfS96wy2qbiLkQLAg4JUrR2wvfybxj6yqLmrUfMAvhS3MZxIP2oQn0grgYIvJqzpeTEWu4vK0t+12NNw== + version "8.3.6" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== dependencies: import-fresh "^3.3.0" js-yaml "^4.1.0" @@ -1561,11 +1290,21 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== +define-data-property@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz" + integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: + define-data-property "^1.0.1" has-property-descriptors "^1.0.0" object-keys "^1.1.1" @@ -1584,11 +1323,6 @@ detect-indent@6.1.0: resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== -detect-node-es@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz" - integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== - didyoumean@^1.2.2: version "1.2.2" resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" @@ -1661,9 +1395,9 @@ eastasianwidth@^0.2.0: integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== electron-to-chromium@^1.4.477: - version "1.4.518" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.518.tgz" - integrity sha512-eqbfyW9i/en/qgIPsddW+cuxQvjq3KZmfH+/gc3f/gnynYj0qxee0yRmll69W0SGwiVD+goeU1J9LT6zDHDzlg== + version "1.4.523" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz" + integrity sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg== emoji-regex@^8.0.0: version "8.0.0" @@ -1696,17 +1430,17 @@ error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.22.1: - version "1.22.1" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz" - integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== + version "1.22.2" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz" + integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== dependencies: array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.1" + arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" call-bind "^1.0.2" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function.prototype.name "^1.1.5" + function.prototype.name "^1.1.6" get-intrinsic "^1.2.1" get-symbol-description "^1.0.0" globalthis "^1.0.3" @@ -1722,32 +1456,32 @@ es-abstract@^1.22.1: is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-typed-array "^1.1.10" + is-typed-array "^1.1.12" is-weakref "^1.0.2" object-inspect "^1.12.3" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.5.0" - safe-array-concat "^1.0.0" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.7" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" typed-array-buffer "^1.0.0" typed-array-byte-length "^1.0.0" typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.10" + which-typed-array "^1.1.11" es-iterator-helpers@^1.0.12: - version "1.0.14" - resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.14.tgz" - integrity sha512-JgtVnwiuoRuzLvqelrvN3Xu7H9bu2ap/kQ2CrM62iidP8SKuD99rWU3CJy++s7IVL2qb/AjXPGR/E7i9ngd/Cw== + version "1.0.15" + resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz" + integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== dependencies: asynciterator.prototype "^1.0.0" call-bind "^1.0.2" - define-properties "^1.2.0" + define-properties "^1.2.1" es-abstract "^1.22.1" es-set-tostringtag "^2.0.1" function-bind "^1.1.1" @@ -1757,8 +1491,8 @@ es-iterator-helpers@^1.0.12: has-proto "^1.0.1" has-symbols "^1.0.3" internal-slot "^1.0.5" - iterator.prototype "^1.1.0" - safe-array-concat "^1.0.0" + iterator.prototype "^1.1.2" + safe-array-concat "^1.0.1" es-set-tostringtag@^2.0.1: version "2.0.1" @@ -2204,9 +1938,9 @@ flat-cache@^3.0.4: rimraf "^3.0.2" flatted@^3.2.7: - version "3.2.7" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + version "3.2.9" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== for-each@^0.3.3: version "0.3.3" @@ -2220,6 +1954,15 @@ fraction.js@^4.2.0: resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz" integrity sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg== +framer-motion@^10.16.4: + version "10.16.4" + resolved "https://registry.npmjs.org/framer-motion/-/framer-motion-10.16.4.tgz" + integrity sha512-p9V9nGomS3m6/CALXqv6nFGMuFOxbWsmaOrdmhyQimMIlLl3LC7h7l86wge/Js/8cRu5ktutS/zlzgR7eBOtFA== + dependencies: + tslib "^2.4.0" + optionalDependencies: + "@emotion/is-prop-valid" "^0.8.2" + fs-extra@9.1.0: version "9.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" @@ -2245,7 +1988,7 @@ function-bind@^1.1.1: resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function.prototype.name@^1.1.5: +function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: version "1.1.6" resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz" integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== @@ -2270,11 +2013,6 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@ has-proto "^1.0.1" has-symbols "^1.0.3" -get-nonce@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz" - integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== - get-stream@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" @@ -2561,13 +2299,6 @@ internal-slot@^1.0.5: has "^1.0.3" side-channel "^1.0.4" -invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" @@ -2737,7 +2468,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.9: +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: version "1.1.12" resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz" integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== @@ -2789,15 +2520,16 @@ isexe@^2.0.0: resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -iterator.prototype@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.1.tgz" - integrity sha512-9E+nePc8C9cnQldmNl6bgpTY6zI4OPRZd97fhJ/iVZ1GifIUDVV5F6x1nEDqpe8KaMEZGT4xgrwKQDxXnjOIZQ== +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== dependencies: - define-properties "^1.2.0" + define-properties "^1.2.1" get-intrinsic "^1.2.1" has-symbols "^1.0.3" - reflect.getprototypeof "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" jiti@^1.18.2: version "1.20.0" @@ -3008,7 +2740,7 @@ longest@^2.0.1: resolved "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz" integrity sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q== -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -3022,11 +2754,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lucide-react@^0.272.0: - version "0.272.0" - resolved "https://registry.npmjs.org/lucide-react/-/lucide-react-0.272.0.tgz" - integrity sha512-TXk88XsL9YC9psZR6GSXDLpbppxlm2jN2uMjIWI5A7sPWb/dllib59lNcORC20N33TEeelDwcTR0dLKl/fhYLw== - make-error@^1.1.1: version "1.3.6" resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" @@ -3748,34 +3475,6 @@ react-is@^16.13.1: resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-remove-scroll@2.5.5: - version "2.5.5" - resolved "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz" - integrity sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw== - dependencies: - react-remove-scroll-bar "^2.3.3" - react-style-singleton "^2.2.1" - tslib "^2.1.0" - use-callback-ref "^1.3.0" - use-sidecar "^1.1.2" - -react-remove-scroll-bar@^2.3.3: - version "2.3.4" - resolved "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz" - integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A== - dependencies: - tslib "^2.0.0" - react-style-singleton "^2.2.1" - -react-style-singleton@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz" - integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== - dependencies: - tslib "^2.0.0" - get-nonce "^1.0.0" - invariant "^2.2.4" - read-cache@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" @@ -3799,7 +3498,7 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -reflect.getprototypeof@^1.0.3: +reflect.getprototypeof@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz" integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== @@ -3816,14 +3515,14 @@ regenerator-runtime@^0.14.0: resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz" integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== -regexp.prototype.flags@^1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz" - integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" - functions-have-names "^1.2.3" + set-function-name "^2.0.0" require-from-string@^2.0.2: version "2.0.2" @@ -3831,9 +3530,9 @@ require-from-string@^2.0.2: integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== resolve@^1.1.7, resolve@^1.22.2, resolve@^1.22.4: - version "1.22.4" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz" - integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== + version "1.22.6" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz" + integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== dependencies: is-core-module "^2.13.0" path-parse "^1.0.7" @@ -3930,7 +3629,7 @@ rxjs@^7.5.5: dependencies: tslib "^2.1.0" -safe-array-concat@^1.0.0: +safe-array-concat@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz" integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== @@ -3985,6 +3684,15 @@ serialize-javascript@^6.0.1: dependencies: randombytes "^2.1.0" +set-function-name@^2.0.0, set-function-name@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" @@ -4094,9 +3802,9 @@ string-width@^5.0.0, string-width@^5.0.1: strip-ansi "^7.0.1" string.prototype.matchall@^4.0.8: - version "4.0.9" - resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.9.tgz" - integrity sha512-6i5hL3MqG/K2G43mWXWgP+qizFW/QH/7kCNN13JrJS5q48FN5IKksLDscexKP3dnmB6cdm9jlNgAsWNLpSykmA== + version "4.0.10" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz" + integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" @@ -4105,9 +3813,10 @@ string.prototype.matchall@^4.0.8: has-symbols "^1.0.3" internal-slot "^1.0.5" regexp.prototype.flags "^1.5.0" + set-function-name "^2.0.0" side-channel "^1.0.4" -string.prototype.trim@^1.2.7: +string.prototype.trim@^1.2.8: version "1.2.8" resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz" integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== @@ -4116,7 +3825,7 @@ string.prototype.trim@^1.2.7: define-properties "^1.2.0" es-abstract "^1.22.1" -string.prototype.trimend@^1.0.6: +string.prototype.trimend@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz" integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== @@ -4125,7 +3834,7 @@ string.prototype.trimend@^1.0.6: define-properties "^1.2.0" es-abstract "^1.22.1" -string.prototype.trimstart@^1.0.6: +string.prototype.trimstart@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz" integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== @@ -4267,11 +3976,6 @@ tailwind-merge@^1.14.0: resolve "^1.22.2" sucrase "^3.32.0" -tailwindcss-animate@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz" - integrity sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA== - tapable@^2.2.0: version "2.2.1" resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" @@ -4369,7 +4073,7 @@ tslib@^1.8.1: resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0: +tslib@^2.1.0, tslib@^2.4.0: version "2.6.2" resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -4442,7 +4146,12 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typescript@>=2.7, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", typescript@>=3.3.1, typescript@>=4, typescript@>=4.2.0, typescript@>=4.9.5, "typescript@^4.6.4 || ^5.0.0", typescript@^5.1.3: +typescript@5.1.3, typescript@>=2.7, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", typescript@>=3.3.1, typescript@>=4, typescript@>=4.2.0, typescript@>=4.9.5: + version "5.1.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz" + integrity sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw== + +"typescript@^4.6.4 || ^5.0.0": version "5.2.2" resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== @@ -4477,20 +4186,10 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -use-callback-ref@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz" - integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w== - dependencies: - tslib "^2.0.0" - -use-sidecar@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz" - integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== - dependencies: - detect-node-es "^1.1.0" - tslib "^2.0.0" +usehooks-ts@^2.9.1: + version "2.9.1" + resolved "https://registry.npmjs.org/usehooks-ts/-/usehooks-ts-2.9.1.tgz" + integrity sha512-2FAuSIGHlY+apM9FVlj8/oNhd+1y+Uwv5QNkMQz1oSfdHk4PXo1qoCw9I5M7j0vpH8CSWFJwXbVPeYDjLCx9PA== util-deprecate@^1.0.1, util-deprecate@^1.0.2: version "1.0.2" @@ -4570,7 +4269,7 @@ which-collection@^1.0.1: is-weakmap "^2.0.1" is-weakset "^2.0.1" -which-typed-array@^1.1.10, which-typed-array@^1.1.11, which-typed-array@^1.1.9: +which-typed-array@^1.1.11, which-typed-array@^1.1.9: version "1.1.11" resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz" integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==