From afb71662b83d0da169baf0542a9b37003b1bdb03 Mon Sep 17 00:00:00 2001 From: Sujal Goel Date: Fri, 3 Apr 2026 17:22:41 +0530 Subject: [PATCH 1/7] refactor(styles): replace Sass with plain CSS and Tailwind @apply --- package.json | 8 +- src/components/Site/Site.jsx | 2 +- src/styles/dark.css | 150 ++++++++++++++++++++++++++++ src/styles/dark.scss | 150 ---------------------------- src/styles/index.css | 67 +++++++++++++ src/styles/index.scss | 80 --------------- src/styles/partials/_functions.scss | 20 ---- src/styles/partials/_index.scss | 3 - src/styles/partials/_mixins.scss | 22 ---- src/styles/partials/_vars.scss | 40 -------- webpack.common.mjs | 18 +--- yarn.lock | 82 ++------------- 12 files changed, 233 insertions(+), 409 deletions(-) create mode 100644 src/styles/dark.css delete mode 100644 src/styles/dark.scss create mode 100644 src/styles/index.css delete mode 100644 src/styles/index.scss delete mode 100644 src/styles/partials/_functions.scss delete mode 100644 src/styles/partials/_index.scss delete mode 100644 src/styles/partials/_mixins.scss delete mode 100644 src/styles/partials/_vars.scss diff --git a/package.json b/package.json index 1810822cc99a..369c01d8c831 100644 --- a/package.json +++ b/package.json @@ -64,13 +64,14 @@ "*.{md,mdx}": [ "npm run lint:markdown" ], - "*.{js,mjs,jsx,css,scss,md,mdx,json}": [ + "*.{js,mjs,jsx,css,md,mdx,json}": [ "prettier --write" ] }, "resolutions": { "sitemap-static/minimist": "1.2.5", - "eval": "^0.1.5" + "eval": "^0.1.5", + "lodash": "4.17.21" }, "dependencies": { "@docsearch/react": "^4.6.0", @@ -133,7 +134,6 @@ "mdast-util-to-string": "^4.0.0", "mini-css-extract-plugin": "^2.10.1", "mkdirp": "^3.0.1", - "modularscale-sass": "^3.0.3", "npm-run-all": "^4.1.1", "postcss": "^8.5.8", "postcss-loader": "^8.2.0", @@ -150,8 +150,6 @@ "remark-gfm": "^4.0.1", "remark-html": "^16.0.1", "rimraf": "^6.1.2", - "sass": "^1.97.3", - "sass-loader": "^16.0.6", "sirv-cli": "^3.0.1", "sitemap-static": "^0.4.2", "static-site-generator-webpack-plugin": "^3.4.1", diff --git a/src/components/Site/Site.jsx b/src/components/Site/Site.jsx index e948ddcbe046..20686fb6d286 100644 --- a/src/components/Site/Site.jsx +++ b/src/components/Site/Site.jsx @@ -40,7 +40,7 @@ import Splash from "../Splash/Splash.jsx"; import Sponsors from "../Sponsors/Sponsors.jsx"; // Load Styling -import "../../styles/index.scss"; +import "../../styles/index.css"; // Load Content Tree diff --git a/src/styles/dark.css b/src/styles/dark.css new file mode 100644 index 000000000000..848e50c9c2e3 --- /dev/null +++ b/src/styles/dark.css @@ -0,0 +1,150 @@ +@reference "tailwindcss"; + +[data-theme="dark"] { + body { + @apply bg-[#121212] text-[#e0e0e0]; + } + + .splash__section--dark { + @apply bg-[#202020]; + } + + .markdown { + h1, + h2, + h3, + h4, + h5, + h6 { + @apply text-[#9ab3c0]; + } + + code, + tt { + text-shadow: none; + @apply bg-[rgba(70,94,105,0.45)]; + } + + blockquote { + @apply border-l-[#343434] text-[#a3a3a3]; + } + + blockquote.tip { + @apply bg-[#192429] text-[#7da2b4]; + } + + blockquote.warning { + @apply bg-[#27220a] text-[#a49d83]; + } + + blockquote.todo { + @apply bg-[#402b1f] text-[#998478]; + } + + hr { + @apply bg-[#343434]; + } + + th { + @apply bg-[#121212] border-[#252525]; + } + + tr, + tr:last-child { + @apply border-[#252525]; + } + + tr:nth-child(2n) { + @apply bg-[#202020]; + } + + td { + @apply border-[#252525]; + } + + pre { + @apply bg-[#131b1f]; + + code { + @apply bg-transparent; + } + } + + a code { + @apply text-[#69a8ee]; + + &:hover { + @apply text-[#82b7f6]; + } + } + + aside.tip, + aside.warning, + aside.preview, + aside.todo { + @apply bg-[#222222] text-white; + } + + aside.tip > .tip__prefix, + aside.warning > .warning__prefix, + aside.preview > .preview__prefix, + aside.todo > .todo__prefix { + @apply text-white; + } + } + + .gitter__button { + @apply bg-[#1c3b39]; + } + + .sponsors__content, + .footer__inner { + @apply border-[#252525]; + } + + .page-links__gap { + @apply text-gray-300; + } + + .site { + background: #121212 !important; + } + + .sidebar__docs-version { + @apply border-[#252525] text-[#b8b8b8]; + } + + .contributor .contributor__name { + @apply bg-[#121212] text-[#9ab3c0]; + } + + .placeholder h2, + .placeholder p { + @apply bg-[#252525]; + + &:after { + background: linear-gradient(90deg, #252525, #121212, #252525); + } + } + + .footer-openjsf-logo { + @apply invert; + } + + .footer p { + @apply text-white; + } +} + +@layer base { + [data-theme="dark"] a, + [data-theme="dark"] button.as-link { + @apply text-[#69a8ee]; + } +} + +@layer base { + [data-theme="dark"] a:hover { + @apply text-[#82b7f6]; + } +} diff --git a/src/styles/dark.scss b/src/styles/dark.scss deleted file mode 100644 index cad11536d3a7..000000000000 --- a/src/styles/dark.scss +++ /dev/null @@ -1,150 +0,0 @@ -@use "sass:color"; -@use "partials/vars" as *; -@use "partials/functions" as *; - -[data-theme="dark"] { - body { - background-color: #121212; - color: #e0e0e0; - } - .splash__section--dark { - background-color: #202020; - } - .markdown { - h1, - h2, - h3, - h4, - h5, - h6 { - color: getColor(dusty-blue); - } - code, - tt { - text-shadow: none; - background-color: color.adjust(getColor(fiord), $alpha: -0.55); - } - blockquote { - border-left-color: #343434; - color: #a3a3a3; - } - blockquote.tip { - background-color: #192429; - color: #7da2b4; - } - blockquote.warning { - background-color: #27220a; - color: #a49d83; - } - blockquote.todo { - background-color: #402b1f; - color: #998478; - } - hr { - background-color: #343434; - } - th { - background-color: #121212; - border-color: #252525; - } - tr, - tr:last-child { - border-color: #252525; - } - tr:nth-child(2n) { - background-color: #202020; - } - td { - border-color: #252525; - } - pre { - background-color: #131b1f; - code { - background: transparent; - } - } - a code { - color: #69a8ee; - &:hover { - color: #82b7f6; - } - } - - aside.tip, - aside.warning, - aside.preview, - aside.todo { - background-color: #222222; - color: #fff; - } - aside.tip { - > .tip__prefix { - color: #fff; - } - } - aside.warning { - > .warning__prefix { - color: #fff; - } - } - aside.preview { - > .preview__prefix { - color: #fff; - } - } - aside.todo { - > .todo__prefix { - color: #fff; - } - } - } - .gitter__button { - background: #1c3b39; - } - .sponsors__content, - .footer__inner { - border-color: #252525; - } - .page-links__gap { - color: #999; - } - .site { - background: #121212 !important; - } - .sidebar__docs-version { - border-color: #252525; - color: #b8b8b8; - } - .contributor .contributor__name { - background-color: #121212; - color: getColor(dusty-blue); - } - .placeholder h2, - .placeholder p { - background-color: #252525; - &:after { - background: linear-gradient(90deg, #252525, #121212, #252525); - } - } - - .footer-openjsf-logo { - filter: invert(1); - } - - .footer p { - color: white; - } -} - -@layer base { - [data-theme="dark"] a, - [data-theme="dark"] button.as-link { - color: #69a8ee; - } -} - -@layer base { - [data-theme="dark"] a:hover { - color: #82b7f6; - } -} diff --git a/src/styles/index.css b/src/styles/index.css new file mode 100644 index 000000000000..e31984fe806b --- /dev/null +++ b/src/styles/index.css @@ -0,0 +1,67 @@ +@reference "tailwindcss"; +@import url("https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600&family=Source+Sans+Pro:ital,wght@0,400;0,600;1,400&family=Source+Serif+Pro:wght@600&display=swap"); +@import "./dark.css"; + +* { + box-sizing: inherit; +} + +html { + @apply box-border; +} + +body { + font: + 400 1rem "Source Sans Pro", + -apple-system, + BlinkMacSystemFont, + "Segoe UI", + Helvetica, + Arial, + sans-serif; + @apply text-blue-800; +} + +.header-link { + @apply inline-block w-[22px] h-[22px] bg-no-repeat bg-center bg-contain; + background-image: url("../assets/link.svg"); +} + +[aria-hidden="true"]:hover .header-link { + @apply visible; +} + +@layer base { + a, + button.as-link { + @apply text-[#1a6bac] no-underline; + transition: color 250ms; + + &.icon-link { + @apply inline-block text-[0.7em] ml-[16px] -rotate-45 text-[#909090]; + + &:hover { + @apply text-[#1a6bac]; + } + } + + &:hover { + @apply text-[#144f80]; + } + } + + ::selection { + @apply bg-[rgba(141,214,249,0.35)]; + } + + .language-diff { + .token.prefix.inserted, + .token.prefix.deleted { + user-select: none; + } + } +} + +.screen-reader-only { + @apply sr-only; +} diff --git a/src/styles/index.scss b/src/styles/index.scss deleted file mode 100644 index 68f4793805b8..000000000000 --- a/src/styles/index.scss +++ /dev/null @@ -1,80 +0,0 @@ -@use "sass:color"; -@use "partials/vars" as *; -@use "partials/functions" as *; -@use "partials/mixins" as *; -@use "dark"; - -@import url("https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600&family=Source+Sans+Pro:ital,wght@0,400;0,600;1,400&family=Source+Serif+Pro:wght@600&display=swap"); - -* { - box-sizing: inherit; -} - -html { - box-sizing: border-box; -} - -body { - font: 400 getFontSize(0) $font-stack-body; - color: getColor(elephant); -} - -.header-link { - display: inline-block; - width: 22px; - height: 22px; - background-repeat: no-repeat; - background-position: center; - background-image: url("../assets/link.svg"); - background-size: contain; -} -[aria-hidden="true"]:hover .header-link { - visibility: visible; -} -@layer base { - a, - button.as-link { - color: $text-color-highlight; - text-decoration: none; - transition: color 250ms; - - &.icon-link { - display: inline-block; - font-size: 0.7em; - margin-left: 16px; - transform: rotate(-45deg); - - color: color.adjust(getColor(dusty-grey), $lightness: 10%); - &:hover { - color: $text-color-highlight; - } - } - - &:hover { - color: color.adjust(getColor(denim), $lightness: -5%); - } - } - - ::selection { - background: color.adjust(getColor(malibu), $alpha: -0.65); - } - - .language-diff { - .token.prefix.inserted, - .token.prefix.deleted { - user-select: none; - } - } -} - -.screen-reader-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0; -} diff --git a/src/styles/partials/_functions.scss b/src/styles/partials/_functions.scss deleted file mode 100644 index 79cfda5fab20..000000000000 --- a/src/styles/partials/_functions.scss +++ /dev/null @@ -1,20 +0,0 @@ -@use "sass:map"; -@use "vars" as *; - -$modular-scale: ( - -2: 11.109px, - -1: 13.331px, - 0: 16px, - 1: 19.2px, - 2: 23.04px, - 3: 27.648px, - 4: 33.178px, - 5: 39.813px -); - -@function getFontSize($step) { - @return map.get($modular-scale, $step); -} -@function getColor($name) { - @return map.get($colors, $name); -} diff --git a/src/styles/partials/_index.scss b/src/styles/partials/_index.scss deleted file mode 100644 index de403cf2db48..000000000000 --- a/src/styles/partials/_index.scss +++ /dev/null @@ -1,3 +0,0 @@ -@forward "vars"; -@forward "functions"; -@forward "mixins"; diff --git a/src/styles/partials/_mixins.scss b/src/styles/partials/_mixins.scss deleted file mode 100644 index b159bd80de11..000000000000 --- a/src/styles/partials/_mixins.scss +++ /dev/null @@ -1,22 +0,0 @@ -@use "sass:map"; -@use "vars" as *; - -@mixin break($size: medium) { - @media (min-width: map.get($screens, $size)) { - @content; - } -} -@mixin control-overflow { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -@mixin fontantialias($on) { - @if $on == true { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } @else { - -webkit-font-smoothing: subpixel-antialiased; - -moz-osx-font-smoothing: auto; - } -} diff --git a/src/styles/partials/_vars.scss b/src/styles/partials/_vars.scss deleted file mode 100644 index 99407fde6fb7..000000000000 --- a/src/styles/partials/_vars.scss +++ /dev/null @@ -1,40 +0,0 @@ -@use "sass:color"; -@use "sass:map"; - -$colors: ( - malibu: #8dd6f9, - dusty-blue: #9ab3c0, - light-gray: #36393c, - denim: #175d96, - fiord: #465e69, - elephant: #2b3a42, - white: #ffffff, - concrete: #f2f2f2, - alto: #dedede, - dusty-grey: #777676, - dove-grey: #666666, - emperor: #535353, - mine-shaft: #333333, -); - -$screens: ( - xlarge: 1525px, - large: 1024px, - medium: 768px, -); - -$font-stack-body: - "Source Sans Pro", - -apple-system, - BlinkMacSystemFont, - "Segoe UI", - Helvetica, - Arial, - sans-serif; -$font-stack-heading: - "Source Serif Pro", ui-serif, Georgia, Cambria, "Times New Roman", Times, - serif; -$font-stack-code: - "Source Code Pro", Consolas, "Liberation Mono", Menlo, Courier, monospace; - -$text-color-highlight: color.adjust(map.get($colors, denim), $lightness: 5%); diff --git a/webpack.common.mjs b/webpack.common.mjs index fc1c3deb81a3..0e71fb7393fa 100644 --- a/webpack.common.mjs +++ b/webpack.common.mjs @@ -62,7 +62,7 @@ export default ({ ssg = false }) => ({ cacheDirectory: path.resolve(__dirname, "node_modules/.cache/webpack"), }, resolve: { - extensions: [".js", ".jsx", ".scss"], + extensions: [".js", ".jsx"], fallback: { path: require.resolve("path-browserify"), }, @@ -96,22 +96,6 @@ export default ({ ssg = false }) => ({ test: /\.css$/, use: [MiniCssExtractPlugin.loader, "css-loader", "postcss-loader"], }, - { - test: /\.scss$/, - use: [ - MiniCssExtractPlugin.loader, - "css-loader", - "postcss-loader", - { - loader: "sass-loader", - options: { - sassOptions: { - loadPaths: [path.join("./src/styles/partials")], - }, - }, - }, - ], - }, { test: /\.woff2?$/, type: "asset/resource", diff --git a/yarn.lock b/yarn.lock index af46cb6d55f2..fa37ecc8c1b9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3167,15 +3167,6 @@ "@typescript-eslint/visitor-keys" "8.58.0" debug "^4.4.3" -"@typescript-eslint/project-service@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.54.0.tgz#f582aceb3d752544c8e1b11fea8d95d00cf9adc6" - integrity sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g== - dependencies: - "@typescript-eslint/tsconfig-utils" "^8.54.0" - "@typescript-eslint/types" "^8.54.0" - debug "^4.4.3" - "@typescript-eslint/project-service@8.58.0": version "8.58.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.58.0.tgz#66ceda0aabf7427aec3e2713fa43eb278dead2aa" @@ -3185,14 +3176,6 @@ "@typescript-eslint/types" "^8.58.0" debug "^4.4.3" -"@typescript-eslint/scope-manager@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz#307dc8cbd80157e2772c2d36216857415a71ab33" - integrity sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg== - dependencies: - "@typescript-eslint/types" "8.54.0" - "@typescript-eslint/visitor-keys" "8.54.0" - "@typescript-eslint/scope-manager@8.58.0": version "8.58.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz#e304142775e49a1b7ac3c8bf2536714447c72cab" @@ -3201,11 +3184,6 @@ "@typescript-eslint/types" "8.58.0" "@typescript-eslint/visitor-keys" "8.58.0" -"@typescript-eslint/tsconfig-utils@8.54.0", "@typescript-eslint/tsconfig-utils@^8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz#71dd7ba1674bd48b172fc4c85b2f734b0eae3dbc" - integrity sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw== - "@typescript-eslint/tsconfig-utils@8.58.0", "@typescript-eslint/tsconfig-utils@^8.58.0": version "8.58.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz#c5a8edb21f31e0fdee565724e1b984171c559482" @@ -3222,31 +3200,11 @@ debug "^4.4.3" ts-api-utils "^2.5.0" -"@typescript-eslint/types@8.54.0", "@typescript-eslint/types@^8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.54.0.tgz#c12d41f67a2e15a8a96fbc5f2d07b17331130889" - integrity sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA== - -"@typescript-eslint/types@8.58.0", "@typescript-eslint/types@^8.56.0", "@typescript-eslint/types@^8.58.0": +"@typescript-eslint/types@8.58.0", "@typescript-eslint/types@^8.54.0", "@typescript-eslint/types@^8.56.0", "@typescript-eslint/types@^8.58.0": version "8.58.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.58.0.tgz#e94ae7abdc1c6530e71183c1007b61fa93112a5a" integrity sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww== -"@typescript-eslint/typescript-estree@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz#3c7716905b2b811fadbd2114804047d1bfc86527" - integrity sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA== - dependencies: - "@typescript-eslint/project-service" "8.54.0" - "@typescript-eslint/tsconfig-utils" "8.54.0" - "@typescript-eslint/types" "8.54.0" - "@typescript-eslint/visitor-keys" "8.54.0" - debug "^4.4.3" - minimatch "^9.0.5" - semver "^7.7.3" - tinyglobby "^0.2.15" - ts-api-utils "^2.4.0" - "@typescript-eslint/typescript-estree@8.58.0": version "8.58.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz#ed233faa8e2f2a2e1357c3e7d553d6465a0ee59a" @@ -3262,7 +3220,7 @@ tinyglobby "^0.2.15" ts-api-utils "^2.5.0" -"@typescript-eslint/utils@8.58.0": +"@typescript-eslint/utils@8.58.0", "@typescript-eslint/utils@^8.0.0": version "8.58.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.58.0.tgz#21a74a7963b0d288b719a4121c7dd555adaab3c3" integrity sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA== @@ -3272,24 +3230,6 @@ "@typescript-eslint/types" "8.58.0" "@typescript-eslint/typescript-estree" "8.58.0" -"@typescript-eslint/utils@^8.0.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.54.0.tgz#c79a4bcbeebb4f571278c0183ed1cb601d84c6c8" - integrity sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA== - dependencies: - "@eslint-community/eslint-utils" "^4.9.1" - "@typescript-eslint/scope-manager" "8.54.0" - "@typescript-eslint/types" "8.54.0" - "@typescript-eslint/typescript-estree" "8.54.0" - -"@typescript-eslint/visitor-keys@8.54.0": - version "8.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz#0e4b50124b210b8600b245dd66cbad52deb15590" - integrity sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA== - dependencies: - "@typescript-eslint/types" "8.54.0" - eslint-visitor-keys "^4.2.1" - "@typescript-eslint/visitor-keys@8.58.0": version "8.58.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz#2abd55a4be70fd55967aceaba4330b9ba9f45189" @@ -9318,10 +9258,15 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= +lodash@4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + lodash@^4.17.14, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.23, lodash@^4.7.0: - version "4.18.0" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.18.0.tgz#dfd726f07ab2e39dd763de28fcf66e395c03e440" - integrity sha512-l1mfj2atMqndAHI3ls7XqPxEjV2J9ZkcNyHpoZA3r2T1LLwDB69jgkMWh71YKwhBbK0G2f4WSn05ahmQXVxupA== + version "4.18.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.18.1.tgz#ff2b66c1f6326d59513de2407bf881439812771c" + integrity sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q== log-symbols@^4.0.0: version "4.1.0" @@ -10237,7 +10182,7 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.0, minimatch@^9.0.4, minimatch@^9.0.5: +minimatch@^9.0.0, minimatch@^9.0.4: version "9.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== @@ -13641,11 +13586,6 @@ trough@^2.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-2.0.2.tgz#94a3aa9d5ce379fc561f6244905b3f36b7458d96" integrity sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w== -ts-api-utils@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.4.0.tgz#2690579f96d2790253bdcf1ca35d569ad78f9ad8" - integrity sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA== - ts-api-utils@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.5.0.tgz#4acd4a155e22734990a5ed1fe9e97f113bcb37c1" From 8def374145c82d204f1c4d2179786677f07d772b Mon Sep 17 00:00:00 2001 From: Sujal Goel Date: Fri, 3 Apr 2026 17:24:36 +0530 Subject: [PATCH 2/7] chore: update yarn.lock after removing sass dependencies --- yarn.lock | 137 +----------------------------------------------------- 1 file changed, 2 insertions(+), 135 deletions(-) diff --git a/yarn.lock b/yarn.lock index fa37ecc8c1b9..beab9edcd248 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2106,89 +2106,6 @@ dependencies: "@octokit/openapi-types" "^27.0.0" -"@parcel/watcher-android-arm64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz#c2c19a3c442313ff007d2d7a9c2c1dd3e1c9ca84" - integrity sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg== - -"@parcel/watcher-darwin-arm64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz#c817c7a3b4f3a79c1535bfe54a1c2818d9ffdc34" - integrity sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA== - -"@parcel/watcher-darwin-x64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz#1a3f69d9323eae4f1c61a5f480a59c478d2cb020" - integrity sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg== - -"@parcel/watcher-freebsd-x64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz#0d67fef1609f90ba6a8a662bc76a55fc93706fc8" - integrity sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w== - -"@parcel/watcher-linux-arm-glibc@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz#ce5b340da5829b8e546bd00f752ae5292e1c702d" - integrity sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA== - -"@parcel/watcher-linux-arm64-glibc@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz#6d7c00dde6d40608f9554e73998db11b2b1ff7c7" - integrity sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA== - -"@parcel/watcher-linux-arm64-musl@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz#bd39bc71015f08a4a31a47cd89c236b9d6a7f635" - integrity sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA== - -"@parcel/watcher-linux-x64-glibc@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz#0ce29966b082fb6cdd3de44f2f74057eef2c9e39" - integrity sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg== - -"@parcel/watcher-linux-x64-musl@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz#d2ebbf60e407170bb647cd6e447f4f2bab19ad16" - integrity sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ== - -"@parcel/watcher-win32-arm64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz#eb4deef37e80f0b5e2f215dd6d7a6d40a85f8adc" - integrity sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg== - -"@parcel/watcher-win32-ia32@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz#94fbd4b497be39fd5c8c71ba05436927842c9df7" - integrity sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw== - -"@parcel/watcher-win32-x64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz#4bf920912f67cae5f2d264f58df81abfea68dadf" - integrity sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A== - -"@parcel/watcher@^2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.4.1.tgz#a50275151a1bb110879c6123589dba90c19f1bf8" - integrity sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA== - dependencies: - detect-libc "^1.0.3" - is-glob "^4.0.3" - micromatch "^4.0.5" - node-addon-api "^7.0.0" - optionalDependencies: - "@parcel/watcher-android-arm64" "2.4.1" - "@parcel/watcher-darwin-arm64" "2.4.1" - "@parcel/watcher-darwin-x64" "2.4.1" - "@parcel/watcher-freebsd-x64" "2.4.1" - "@parcel/watcher-linux-arm-glibc" "2.4.1" - "@parcel/watcher-linux-arm64-glibc" "2.4.1" - "@parcel/watcher-linux-arm64-musl" "2.4.1" - "@parcel/watcher-linux-x64-glibc" "2.4.1" - "@parcel/watcher-linux-x64-musl" "2.4.1" - "@parcel/watcher-win32-arm64" "2.4.1" - "@parcel/watcher-win32-ia32" "2.4.1" - "@parcel/watcher-win32-x64" "2.4.1" - "@peculiar/asn1-cms@^2.6.0": version "2.6.0" resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.6.0.tgz#88267055c460ca806651f916315a934c1b1ac994" @@ -4460,13 +4377,6 @@ chokidar@^3.6.0: optionalDependencies: fsevents "~2.3.2" -chokidar@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.0.tgz#4d603963e5dd762dc5c7bb1cb5664e53a3002225" - integrity sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA== - dependencies: - readdirp "^4.0.1" - chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" @@ -5410,11 +5320,6 @@ detect-indent@^7.0.2: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-7.0.2.tgz#16c516bf75d4b2f759f68214554996d467c8d648" integrity sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A== -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== - detect-libc@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" @@ -7681,11 +7586,6 @@ imageinfo@^1.0.4: resolved "https://registry.yarnpkg.com/imageinfo/-/imageinfo-1.0.4.tgz#1dd2456ecb96fc395f0aa1179c467dfb3d5d7a2a" integrity sha1-HdJFbsuW/DlfCqEXnEZ9+z1deio= -immutable@^5.0.2: - version "5.1.5" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.5.tgz#93ee4db5c2a9ab42a4a783069f3c5d8847d40165" - integrity sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A== - import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -10101,7 +10001,7 @@ micromark@4.0.2, micromark@^4.0.0: micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" -micromatch@^4.0.2, micromatch@^4.0.5: +micromatch@^4.0.2: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -10224,11 +10124,6 @@ mkdirp@^3.0.1: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== -modularscale-sass@^3.0.3: - version "3.0.10" - resolved "https://registry.yarnpkg.com/modularscale-sass/-/modularscale-sass-3.0.10.tgz#3a596b090360129dd2375bee81b9318085cb47b3" - integrity sha512-ppbMfcXC+ESpqk1s8BfqsuY85DTAJdoPLxrYFohAUjg3r9eh2CBm2Wn7+JAh26DbRpAHynRt3a8ma2FOfk7JGA== - mri@^1.1.0: version "1.1.6" resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.6.tgz#49952e1044db21dbf90f6cd92bc9c9a777d415a6" @@ -10321,11 +10216,6 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-addon-api@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" - integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== - node-emoji@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-2.1.3.tgz#93cfabb5cc7c3653aa52f29d6ffb7927d8047c06" @@ -11820,11 +11710,6 @@ readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdirp@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.0.1.tgz#b2fe35f8dca63183cd3b86883ecc8f720ea96ae6" - integrity sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw== - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -12302,24 +12187,6 @@ safe-regex-test@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-loader@^16.0.6: - version "16.0.7" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-16.0.7.tgz#d1f8723b795805831d41b5825e3d9cd72cb939e7" - integrity sha512-w6q+fRHourZ+e+xA1kcsF27iGM6jdB8teexYCfdUw0sYgcDNeZESnDNT9sUmmPm3ooziwUJXGwZJSTF3kOdBfA== - dependencies: - neo-async "^2.6.2" - -sass@^1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.97.3.tgz#9cb59339514fa7e2aec592b9700953ac6e331ab2" - integrity sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg== - dependencies: - chokidar "^4.0.0" - immutable "^5.0.2" - source-map-js ">=0.6.2 <2.0.0" - optionalDependencies: - "@parcel/watcher" "^2.4.1" - sax@>=0.6.0, sax@^1.2.4: version "1.4.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.4.tgz#f29c2bba80ce5b86f4343b4c2be9f2b96627cf8b" @@ -12737,7 +12604,7 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.2.1: +source-map-js@^1.0.1, source-map-js@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== From 12cbdc3b808969dcd38cf0fa40264ca425e4aa55 Mon Sep 17 00:00:00 2001 From: Sujal Goel Date: Fri, 3 Apr 2026 17:28:29 +0530 Subject: [PATCH 3/7] chore: restore yarn.lock to keep platform-specific entries --- yarn.lock | 219 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 206 insertions(+), 13 deletions(-) diff --git a/yarn.lock b/yarn.lock index beab9edcd248..af46cb6d55f2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2106,6 +2106,89 @@ dependencies: "@octokit/openapi-types" "^27.0.0" +"@parcel/watcher-android-arm64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz#c2c19a3c442313ff007d2d7a9c2c1dd3e1c9ca84" + integrity sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg== + +"@parcel/watcher-darwin-arm64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz#c817c7a3b4f3a79c1535bfe54a1c2818d9ffdc34" + integrity sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA== + +"@parcel/watcher-darwin-x64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz#1a3f69d9323eae4f1c61a5f480a59c478d2cb020" + integrity sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg== + +"@parcel/watcher-freebsd-x64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz#0d67fef1609f90ba6a8a662bc76a55fc93706fc8" + integrity sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w== + +"@parcel/watcher-linux-arm-glibc@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz#ce5b340da5829b8e546bd00f752ae5292e1c702d" + integrity sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA== + +"@parcel/watcher-linux-arm64-glibc@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz#6d7c00dde6d40608f9554e73998db11b2b1ff7c7" + integrity sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA== + +"@parcel/watcher-linux-arm64-musl@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz#bd39bc71015f08a4a31a47cd89c236b9d6a7f635" + integrity sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA== + +"@parcel/watcher-linux-x64-glibc@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz#0ce29966b082fb6cdd3de44f2f74057eef2c9e39" + integrity sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg== + +"@parcel/watcher-linux-x64-musl@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz#d2ebbf60e407170bb647cd6e447f4f2bab19ad16" + integrity sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ== + +"@parcel/watcher-win32-arm64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz#eb4deef37e80f0b5e2f215dd6d7a6d40a85f8adc" + integrity sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg== + +"@parcel/watcher-win32-ia32@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz#94fbd4b497be39fd5c8c71ba05436927842c9df7" + integrity sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw== + +"@parcel/watcher-win32-x64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz#4bf920912f67cae5f2d264f58df81abfea68dadf" + integrity sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A== + +"@parcel/watcher@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.4.1.tgz#a50275151a1bb110879c6123589dba90c19f1bf8" + integrity sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.4.1" + "@parcel/watcher-darwin-arm64" "2.4.1" + "@parcel/watcher-darwin-x64" "2.4.1" + "@parcel/watcher-freebsd-x64" "2.4.1" + "@parcel/watcher-linux-arm-glibc" "2.4.1" + "@parcel/watcher-linux-arm64-glibc" "2.4.1" + "@parcel/watcher-linux-arm64-musl" "2.4.1" + "@parcel/watcher-linux-x64-glibc" "2.4.1" + "@parcel/watcher-linux-x64-musl" "2.4.1" + "@parcel/watcher-win32-arm64" "2.4.1" + "@parcel/watcher-win32-ia32" "2.4.1" + "@parcel/watcher-win32-x64" "2.4.1" + "@peculiar/asn1-cms@^2.6.0": version "2.6.0" resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.6.0.tgz#88267055c460ca806651f916315a934c1b1ac994" @@ -3084,6 +3167,15 @@ "@typescript-eslint/visitor-keys" "8.58.0" debug "^4.4.3" +"@typescript-eslint/project-service@8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.54.0.tgz#f582aceb3d752544c8e1b11fea8d95d00cf9adc6" + integrity sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g== + dependencies: + "@typescript-eslint/tsconfig-utils" "^8.54.0" + "@typescript-eslint/types" "^8.54.0" + debug "^4.4.3" + "@typescript-eslint/project-service@8.58.0": version "8.58.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.58.0.tgz#66ceda0aabf7427aec3e2713fa43eb278dead2aa" @@ -3093,6 +3185,14 @@ "@typescript-eslint/types" "^8.58.0" debug "^4.4.3" +"@typescript-eslint/scope-manager@8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz#307dc8cbd80157e2772c2d36216857415a71ab33" + integrity sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg== + dependencies: + "@typescript-eslint/types" "8.54.0" + "@typescript-eslint/visitor-keys" "8.54.0" + "@typescript-eslint/scope-manager@8.58.0": version "8.58.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz#e304142775e49a1b7ac3c8bf2536714447c72cab" @@ -3101,6 +3201,11 @@ "@typescript-eslint/types" "8.58.0" "@typescript-eslint/visitor-keys" "8.58.0" +"@typescript-eslint/tsconfig-utils@8.54.0", "@typescript-eslint/tsconfig-utils@^8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz#71dd7ba1674bd48b172fc4c85b2f734b0eae3dbc" + integrity sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw== + "@typescript-eslint/tsconfig-utils@8.58.0", "@typescript-eslint/tsconfig-utils@^8.58.0": version "8.58.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz#c5a8edb21f31e0fdee565724e1b984171c559482" @@ -3117,11 +3222,31 @@ debug "^4.4.3" ts-api-utils "^2.5.0" -"@typescript-eslint/types@8.58.0", "@typescript-eslint/types@^8.54.0", "@typescript-eslint/types@^8.56.0", "@typescript-eslint/types@^8.58.0": +"@typescript-eslint/types@8.54.0", "@typescript-eslint/types@^8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.54.0.tgz#c12d41f67a2e15a8a96fbc5f2d07b17331130889" + integrity sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA== + +"@typescript-eslint/types@8.58.0", "@typescript-eslint/types@^8.56.0", "@typescript-eslint/types@^8.58.0": version "8.58.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.58.0.tgz#e94ae7abdc1c6530e71183c1007b61fa93112a5a" integrity sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww== +"@typescript-eslint/typescript-estree@8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz#3c7716905b2b811fadbd2114804047d1bfc86527" + integrity sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA== + dependencies: + "@typescript-eslint/project-service" "8.54.0" + "@typescript-eslint/tsconfig-utils" "8.54.0" + "@typescript-eslint/types" "8.54.0" + "@typescript-eslint/visitor-keys" "8.54.0" + debug "^4.4.3" + minimatch "^9.0.5" + semver "^7.7.3" + tinyglobby "^0.2.15" + ts-api-utils "^2.4.0" + "@typescript-eslint/typescript-estree@8.58.0": version "8.58.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz#ed233faa8e2f2a2e1357c3e7d553d6465a0ee59a" @@ -3137,7 +3262,7 @@ tinyglobby "^0.2.15" ts-api-utils "^2.5.0" -"@typescript-eslint/utils@8.58.0", "@typescript-eslint/utils@^8.0.0": +"@typescript-eslint/utils@8.58.0": version "8.58.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.58.0.tgz#21a74a7963b0d288b719a4121c7dd555adaab3c3" integrity sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA== @@ -3147,6 +3272,24 @@ "@typescript-eslint/types" "8.58.0" "@typescript-eslint/typescript-estree" "8.58.0" +"@typescript-eslint/utils@^8.0.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.54.0.tgz#c79a4bcbeebb4f571278c0183ed1cb601d84c6c8" + integrity sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA== + dependencies: + "@eslint-community/eslint-utils" "^4.9.1" + "@typescript-eslint/scope-manager" "8.54.0" + "@typescript-eslint/types" "8.54.0" + "@typescript-eslint/typescript-estree" "8.54.0" + +"@typescript-eslint/visitor-keys@8.54.0": + version "8.54.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz#0e4b50124b210b8600b245dd66cbad52deb15590" + integrity sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA== + dependencies: + "@typescript-eslint/types" "8.54.0" + eslint-visitor-keys "^4.2.1" + "@typescript-eslint/visitor-keys@8.58.0": version "8.58.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz#2abd55a4be70fd55967aceaba4330b9ba9f45189" @@ -4377,6 +4520,13 @@ chokidar@^3.6.0: optionalDependencies: fsevents "~2.3.2" +chokidar@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.0.tgz#4d603963e5dd762dc5c7bb1cb5664e53a3002225" + integrity sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA== + dependencies: + readdirp "^4.0.1" + chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" @@ -5320,6 +5470,11 @@ detect-indent@^7.0.2: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-7.0.2.tgz#16c516bf75d4b2f759f68214554996d467c8d648" integrity sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A== +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + detect-libc@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" @@ -7586,6 +7741,11 @@ imageinfo@^1.0.4: resolved "https://registry.yarnpkg.com/imageinfo/-/imageinfo-1.0.4.tgz#1dd2456ecb96fc395f0aa1179c467dfb3d5d7a2a" integrity sha1-HdJFbsuW/DlfCqEXnEZ9+z1deio= +immutable@^5.0.2: + version "5.1.5" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.5.tgz#93ee4db5c2a9ab42a4a783069f3c5d8847d40165" + integrity sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A== + import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -9158,15 +9318,10 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - lodash@^4.17.14, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.23, lodash@^4.7.0: - version "4.18.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.18.1.tgz#ff2b66c1f6326d59513de2407bf881439812771c" - integrity sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q== + version "4.18.0" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.18.0.tgz#dfd726f07ab2e39dd763de28fcf66e395c03e440" + integrity sha512-l1mfj2atMqndAHI3ls7XqPxEjV2J9ZkcNyHpoZA3r2T1LLwDB69jgkMWh71YKwhBbK0G2f4WSn05ahmQXVxupA== log-symbols@^4.0.0: version "4.1.0" @@ -10001,7 +10156,7 @@ micromark@4.0.2, micromark@^4.0.0: micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" -micromatch@^4.0.2: +micromatch@^4.0.2, micromatch@^4.0.5: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -10082,7 +10237,7 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.0, minimatch@^9.0.4: +minimatch@^9.0.0, minimatch@^9.0.4, minimatch@^9.0.5: version "9.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== @@ -10124,6 +10279,11 @@ mkdirp@^3.0.1: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== +modularscale-sass@^3.0.3: + version "3.0.10" + resolved "https://registry.yarnpkg.com/modularscale-sass/-/modularscale-sass-3.0.10.tgz#3a596b090360129dd2375bee81b9318085cb47b3" + integrity sha512-ppbMfcXC+ESpqk1s8BfqsuY85DTAJdoPLxrYFohAUjg3r9eh2CBm2Wn7+JAh26DbRpAHynRt3a8ma2FOfk7JGA== + mri@^1.1.0: version "1.1.6" resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.6.tgz#49952e1044db21dbf90f6cd92bc9c9a777d415a6" @@ -10216,6 +10376,11 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-addon-api@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" + integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== + node-emoji@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-2.1.3.tgz#93cfabb5cc7c3653aa52f29d6ffb7927d8047c06" @@ -11710,6 +11875,11 @@ readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readdirp@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.0.1.tgz#b2fe35f8dca63183cd3b86883ecc8f720ea96ae6" + integrity sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw== + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -12187,6 +12357,24 @@ safe-regex-test@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +sass-loader@^16.0.6: + version "16.0.7" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-16.0.7.tgz#d1f8723b795805831d41b5825e3d9cd72cb939e7" + integrity sha512-w6q+fRHourZ+e+xA1kcsF27iGM6jdB8teexYCfdUw0sYgcDNeZESnDNT9sUmmPm3ooziwUJXGwZJSTF3kOdBfA== + dependencies: + neo-async "^2.6.2" + +sass@^1.97.3: + version "1.97.3" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.97.3.tgz#9cb59339514fa7e2aec592b9700953ac6e331ab2" + integrity sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg== + dependencies: + chokidar "^4.0.0" + immutable "^5.0.2" + source-map-js ">=0.6.2 <2.0.0" + optionalDependencies: + "@parcel/watcher" "^2.4.1" + sax@>=0.6.0, sax@^1.2.4: version "1.4.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.4.tgz#f29c2bba80ce5b86f4343b4c2be9f2b96627cf8b" @@ -12604,7 +12792,7 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-js@^1.0.1, source-map-js@^1.2.1: +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== @@ -13453,6 +13641,11 @@ trough@^2.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-2.0.2.tgz#94a3aa9d5ce379fc561f6244905b3f36b7458d96" integrity sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w== +ts-api-utils@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.4.0.tgz#2690579f96d2790253bdcf1ca35d569ad78f9ad8" + integrity sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA== + ts-api-utils@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.5.0.tgz#4acd4a155e22734990a5ed1fe9e97f113bcb37c1" From 22c17a2d7d8221d8445a02ec6ecb3e73fd501d46 Mon Sep 17 00:00:00 2001 From: Sujal Goel Date: Fri, 3 Apr 2026 17:37:35 +0530 Subject: [PATCH 4/7] fix: update lodash resolution to 4.18.1 (4.18.0 bad publish was fixed in 4.18.1) --- package.json | 2 +- yarn.lock | 145 +++------------------------------------------------ 2 files changed, 7 insertions(+), 140 deletions(-) diff --git a/package.json b/package.json index 369c01d8c831..e12635431dc7 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "resolutions": { "sitemap-static/minimist": "1.2.5", "eval": "^0.1.5", - "lodash": "4.17.21" + "lodash": "4.18.1" }, "dependencies": { "@docsearch/react": "^4.6.0", diff --git a/yarn.lock b/yarn.lock index af46cb6d55f2..711f779a6521 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2106,89 +2106,6 @@ dependencies: "@octokit/openapi-types" "^27.0.0" -"@parcel/watcher-android-arm64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz#c2c19a3c442313ff007d2d7a9c2c1dd3e1c9ca84" - integrity sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg== - -"@parcel/watcher-darwin-arm64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz#c817c7a3b4f3a79c1535bfe54a1c2818d9ffdc34" - integrity sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA== - -"@parcel/watcher-darwin-x64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz#1a3f69d9323eae4f1c61a5f480a59c478d2cb020" - integrity sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg== - -"@parcel/watcher-freebsd-x64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz#0d67fef1609f90ba6a8a662bc76a55fc93706fc8" - integrity sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w== - -"@parcel/watcher-linux-arm-glibc@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz#ce5b340da5829b8e546bd00f752ae5292e1c702d" - integrity sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA== - -"@parcel/watcher-linux-arm64-glibc@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz#6d7c00dde6d40608f9554e73998db11b2b1ff7c7" - integrity sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA== - -"@parcel/watcher-linux-arm64-musl@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz#bd39bc71015f08a4a31a47cd89c236b9d6a7f635" - integrity sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA== - -"@parcel/watcher-linux-x64-glibc@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz#0ce29966b082fb6cdd3de44f2f74057eef2c9e39" - integrity sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg== - -"@parcel/watcher-linux-x64-musl@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz#d2ebbf60e407170bb647cd6e447f4f2bab19ad16" - integrity sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ== - -"@parcel/watcher-win32-arm64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz#eb4deef37e80f0b5e2f215dd6d7a6d40a85f8adc" - integrity sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg== - -"@parcel/watcher-win32-ia32@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz#94fbd4b497be39fd5c8c71ba05436927842c9df7" - integrity sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw== - -"@parcel/watcher-win32-x64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz#4bf920912f67cae5f2d264f58df81abfea68dadf" - integrity sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A== - -"@parcel/watcher@^2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.4.1.tgz#a50275151a1bb110879c6123589dba90c19f1bf8" - integrity sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA== - dependencies: - detect-libc "^1.0.3" - is-glob "^4.0.3" - micromatch "^4.0.5" - node-addon-api "^7.0.0" - optionalDependencies: - "@parcel/watcher-android-arm64" "2.4.1" - "@parcel/watcher-darwin-arm64" "2.4.1" - "@parcel/watcher-darwin-x64" "2.4.1" - "@parcel/watcher-freebsd-x64" "2.4.1" - "@parcel/watcher-linux-arm-glibc" "2.4.1" - "@parcel/watcher-linux-arm64-glibc" "2.4.1" - "@parcel/watcher-linux-arm64-musl" "2.4.1" - "@parcel/watcher-linux-x64-glibc" "2.4.1" - "@parcel/watcher-linux-x64-musl" "2.4.1" - "@parcel/watcher-win32-arm64" "2.4.1" - "@parcel/watcher-win32-ia32" "2.4.1" - "@parcel/watcher-win32-x64" "2.4.1" - "@peculiar/asn1-cms@^2.6.0": version "2.6.0" resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.6.0.tgz#88267055c460ca806651f916315a934c1b1ac994" @@ -4520,13 +4437,6 @@ chokidar@^3.6.0: optionalDependencies: fsevents "~2.3.2" -chokidar@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.0.tgz#4d603963e5dd762dc5c7bb1cb5664e53a3002225" - integrity sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA== - dependencies: - readdirp "^4.0.1" - chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" @@ -5470,11 +5380,6 @@ detect-indent@^7.0.2: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-7.0.2.tgz#16c516bf75d4b2f759f68214554996d467c8d648" integrity sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A== -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== - detect-libc@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" @@ -7741,11 +7646,6 @@ imageinfo@^1.0.4: resolved "https://registry.yarnpkg.com/imageinfo/-/imageinfo-1.0.4.tgz#1dd2456ecb96fc395f0aa1179c467dfb3d5d7a2a" integrity sha1-HdJFbsuW/DlfCqEXnEZ9+z1deio= -immutable@^5.0.2: - version "5.1.5" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.5.tgz#93ee4db5c2a9ab42a4a783069f3c5d8847d40165" - integrity sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A== - import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -9318,10 +9218,10 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.14, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.23, lodash@^4.7.0: - version "4.18.0" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.18.0.tgz#dfd726f07ab2e39dd763de28fcf66e395c03e440" - integrity sha512-l1mfj2atMqndAHI3ls7XqPxEjV2J9ZkcNyHpoZA3r2T1LLwDB69jgkMWh71YKwhBbK0G2f4WSn05ahmQXVxupA== +lodash@4.18.1, lodash@^4.17.14, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.23, lodash@^4.7.0: + version "4.18.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.18.1.tgz#ff2b66c1f6326d59513de2407bf881439812771c" + integrity sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q== log-symbols@^4.0.0: version "4.1.0" @@ -10156,7 +10056,7 @@ micromark@4.0.2, micromark@^4.0.0: micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" -micromatch@^4.0.2, micromatch@^4.0.5: +micromatch@^4.0.2: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -10279,11 +10179,6 @@ mkdirp@^3.0.1: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== -modularscale-sass@^3.0.3: - version "3.0.10" - resolved "https://registry.yarnpkg.com/modularscale-sass/-/modularscale-sass-3.0.10.tgz#3a596b090360129dd2375bee81b9318085cb47b3" - integrity sha512-ppbMfcXC+ESpqk1s8BfqsuY85DTAJdoPLxrYFohAUjg3r9eh2CBm2Wn7+JAh26DbRpAHynRt3a8ma2FOfk7JGA== - mri@^1.1.0: version "1.1.6" resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.6.tgz#49952e1044db21dbf90f6cd92bc9c9a777d415a6" @@ -10376,11 +10271,6 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-addon-api@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" - integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== - node-emoji@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-2.1.3.tgz#93cfabb5cc7c3653aa52f29d6ffb7927d8047c06" @@ -11875,11 +11765,6 @@ readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdirp@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.0.1.tgz#b2fe35f8dca63183cd3b86883ecc8f720ea96ae6" - integrity sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw== - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -12357,24 +12242,6 @@ safe-regex-test@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-loader@^16.0.6: - version "16.0.7" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-16.0.7.tgz#d1f8723b795805831d41b5825e3d9cd72cb939e7" - integrity sha512-w6q+fRHourZ+e+xA1kcsF27iGM6jdB8teexYCfdUw0sYgcDNeZESnDNT9sUmmPm3ooziwUJXGwZJSTF3kOdBfA== - dependencies: - neo-async "^2.6.2" - -sass@^1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.97.3.tgz#9cb59339514fa7e2aec592b9700953ac6e331ab2" - integrity sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg== - dependencies: - chokidar "^4.0.0" - immutable "^5.0.2" - source-map-js ">=0.6.2 <2.0.0" - optionalDependencies: - "@parcel/watcher" "^2.4.1" - sax@>=0.6.0, sax@^1.2.4: version "1.4.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.4.tgz#f29c2bba80ce5b86f4343b4c2be9f2b96627cf8b" @@ -12792,7 +12659,7 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.2.1: +source-map-js@^1.0.1, source-map-js@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== From cee27aefe53b881e20ba95a60931b31e92e1c16c Mon Sep 17 00:00:00 2001 From: Sujal Goel Date: Fri, 3 Apr 2026 18:28:57 +0530 Subject: [PATCH 5/7] chore: remove lodash resolution (4.18.1 is stable) --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index e12635431dc7..51f986bf840f 100644 --- a/package.json +++ b/package.json @@ -70,8 +70,7 @@ }, "resolutions": { "sitemap-static/minimist": "1.2.5", - "eval": "^0.1.5", - "lodash": "4.18.1" + "eval": "^0.1.5" }, "dependencies": { "@docsearch/react": "^4.6.0", From d7fecbe8bd3a12f8d7f89c232060325b968cbea7 Mon Sep 17 00:00:00 2001 From: Sujal Goel Date: Sat, 4 Apr 2026 13:23:29 +0530 Subject: [PATCH 6/7] rewrite class components to functional components Converts all 7 class components to functional components, closes #8161. Also fixes a bug in SidebarMobile where touchmove listeners were attached via React's JSX event system which defaults to passive, blocking preventDefault() during swipe gestures. Moved those handlers to native addEventListener with { passive: false }. Adds tests for Dropdown, SidebarMobile, and Support per issue discussion. Also updates jest.config.mjs to handle .mjs transforms and adds a file mock for png/jpg assets. --- jest.config.mjs | 3 +- src/components/Configuration/components.jsx | 120 +++--- src/components/Cube/Cube.jsx | 245 +++++------- src/components/Dropdown/Dropdown.jsx | 258 ++++++------- src/components/Dropdown/Dropdown.test.jsx | 127 ++++++ .../__snapshots__/Dropdown.test.jsx.snap | 107 ++++++ .../SidebarMobile/SidebarMobile.jsx | 355 +++++++++-------- .../SidebarMobile/SidebarMobile.test.jsx | 97 +++++ .../__snapshots__/SidebarMobile.test.jsx.snap | 141 +++++++ src/components/SplashViz/SplashViz.jsx | 51 ++- src/components/Support/Support.jsx | 361 +++++++++--------- src/components/Support/Support.test.jsx | 87 +++++ .../__snapshots__/Support.test.jsx.snap | 7 + src/components/TextRotater/TextRotater.jsx | 163 ++++---- src/components/__mocks__/fileMock.js | 1 + 15 files changed, 1300 insertions(+), 823 deletions(-) create mode 100644 src/components/Dropdown/Dropdown.test.jsx create mode 100644 src/components/Dropdown/__snapshots__/Dropdown.test.jsx.snap create mode 100644 src/components/SidebarMobile/SidebarMobile.test.jsx create mode 100644 src/components/SidebarMobile/__snapshots__/SidebarMobile.test.jsx.snap create mode 100644 src/components/Support/Support.test.jsx create mode 100644 src/components/Support/__snapshots__/Support.test.jsx.snap create mode 100644 src/components/__mocks__/fileMock.js diff --git a/jest.config.mjs b/jest.config.mjs index 25552207926f..3540d474c0f3 100644 --- a/jest.config.mjs +++ b/jest.config.mjs @@ -3,11 +3,12 @@ export default { testEnvironment: "node", setupFiles: ["./src/setupTests.js"], transform: { - "^.+\\.jsx?$": "babel-jest", + "^.+\\.(m|c)?jsx?$": "babel-jest", }, moduleNameMapper: { "\\.(scss|css)$": "/src/components/__mocks__/styleMock.js", "\\.svg$": "/src/components/__mocks__/svgMock.js", + "\\.(png|jpg|jpeg|ico)$": "/src/components/__mocks__/fileMock.js", }, moduleFileExtensions: [ "js", diff --git a/src/components/Configuration/components.jsx b/src/components/Configuration/components.jsx index e395168b3b1a..db2abb0fb188 100644 --- a/src/components/Configuration/components.jsx +++ b/src/components/Configuration/components.jsx @@ -1,5 +1,5 @@ import PropTypes from "prop-types"; -import { Component, isValidElement } from "react"; +import { isValidElement, useState } from "react"; import Popover from "react-tiny-popover"; const DEFAULT_CHILDREN_SIZE = 4; @@ -20,8 +20,8 @@ const addLink = (child, i, url) => const Card = ({ body }) => ( // Applied .shadow > .markdown styles: max-height and overflow
- {/* Combined .inline and .shadow pre.inline styles: - display: block, margin: 0, padding: 0 with right-padding override + {/* Combined .inline and .shadow pre.inline styles: + display: block, margin: 0, padding: 0 with right-padding override */}
       {body}
@@ -33,71 +33,53 @@ Card.propTypes = {
   body: PropTypes.node,
 };
 
-export class Details extends Component {
-  static propTypes = {
-    url: PropTypes.string,
-    myChilds: PropTypes.arrayOf(PropTypes.node),
-  };
-
-  constructor(props) {
-    super(props);
-    this.state = {
-      open: false,
-    };
-  }
-
-  clickOutsideHandler = () => {
-    this.setState({ open: false });
-  };
-
-  toggleVisibility = () => {
-    this.setState({ open: !this.state.open });
-  };
-
-  render() {
-    const { myChilds, url } = this.props;
-
-    // Find the index of 
-    const closeDefaultTagIndex = myChilds.findIndex((child) => {
-      if (isValidElement(child)) {
-        return (
-          child.props.className.includes("tag") &&
-          child.props.children.length === DEFAULT_CHILDREN_SIZE
-        );
-      }
-
-      return false;
-    });
-
-    const content = [...myChilds];
-
-    // Summary is the part of the snippet that would be shown in the code snippet,
-    // to get it we need to cut the  enclosing tags
-    const summary = content
-      .splice(2, closeDefaultTagIndex - 3)
-      .map(removeSpaces)
-      .map((child, i) => addLink(child, i, url));
-
-    content.splice(0, DEFAULT_CHILDREN_SIZE); // Remove  information
-
-    const { open } = this.state;
-    return (
-      }
+export function Details({ url, myChilds }) {
+  const [open, setOpen] = useState(false);
+
+  // Find the index of 
+  const closeDefaultTagIndex = myChilds.findIndex((child) => {
+    if (isValidElement(child)) {
+      return (
+        child.props.className.includes("tag") &&
+        child.props.children.length === DEFAULT_CHILDREN_SIZE
+      );
+    }
+
+    return false;
+  });
+
+  const content = [...myChilds];
+
+  // Summary is the part of the snippet that would be shown in the code snippet,
+  // to get it we need to cut the  enclosing tags
+  const summary = content
+    .splice(2, closeDefaultTagIndex - 3)
+    .map(removeSpaces)
+    .map((child, i) => addLink(child, i, url));
+
+  content.splice(0, DEFAULT_CHILDREN_SIZE); // Remove  information
+
+  return (
+     setOpen(false)}
+      // Replaced .shadow with Tailwind equivalents, including the custom rgba box-shadow
+      containerClassName="overflow-visible rounded shadow-[-1px_1px_10px_0_rgba(255,255,255,0.44)]"
+      content={}
+    >
+       setOpen((prev) => !prev)}
       >
-        
-          {summary}
-        
-      
-    );
-  }
+        {summary}
+      
+    
+  );
 }
+
+Details.propTypes = {
+  url: PropTypes.string,
+  myChilds: PropTypes.arrayOf(PropTypes.node),
+};
diff --git a/src/components/Cube/Cube.jsx b/src/components/Cube/Cube.jsx
index a7c323b0f78e..b2481cb91420 100644
--- a/src/components/Cube/Cube.jsx
+++ b/src/components/Cube/Cube.jsx
@@ -1,92 +1,43 @@
 // Import External Dependencies
 import PropTypes from "prop-types";
-import { Component } from "react";
-
-export default class Cube extends Component {
-  static propTypes = {
-    hover: PropTypes.bool,
-    theme: PropTypes.string,
-    depth: PropTypes.number,
-    repeatDelay: PropTypes.number,
-    className: PropTypes.string,
-    continuous: PropTypes.bool,
-  };
-
-  static defaultProps = {
-    hover: false,
-    theme: "dark",
-    depth: 30,
-    repeatDelay: 1000,
-  };
+import { useEffect, useRef, useState } from "react";
 
-  state = {
-    x: 0,
-    y: 0,
-    z: 0,
-    iteration: 0,
-  };
+export default function Cube({
+  hover = false,
+  theme = "dark",
+  depth = 30,
+  repeatDelay = 1000,
+  className = "",
+  continuous,
+}) {
+  const [state, setState] = useState({ x: 0, y: 0, z: 0, iteration: 0 });
+  const containerRef = useRef(null);
+  const timeoutRef = useRef(null);
 
-  render() {
-    const { x, y, z } = this.state;
-    const { theme, depth, className = "" } = this.props;
+  const { x, y, z, iteration } = state;
 
-    return (
-      
- (this.container = ref)} - className={`cube cube--${theme} relative block [transform-style:preserve-3d]`} - style={{ - width: `${depth}px`, - paddingBottom: `${depth * 0.5}px`, - transform: "rotateX(-35.5deg) rotateY(45deg)", - }} - > -
- {this._getFaces("outer")} -
-
- {this._getFaces("inner")} -
-
-
- ); - } - - componentDidMount() { - const { hover, continuous, repeatDelay } = this.props; + useEffect(() => { + const container = containerRef.current; if (hover) { - this.container.addEventListener("mouseenter", this._spin); - this.container.addEventListener("mouseleave", this._reset); + const spin = () => { + const axes = ["x", "y", "z", "iteration"]; + const axis = axes[Math.floor(Math.random() * axes.length)]; + const sign = Math.random() < 0.5 ? -1 : 1; + setState((prev) => ({ ...prev, [axis]: sign * 90 })); + }; + + const reset = () => { + setState((prev) => ({ ...prev, x: 0, y: 0, z: 0 })); + }; + + container.addEventListener("mouseenter", spin); + container.addEventListener("mouseleave", reset); + + return () => { + container.removeEventListener("mouseenter", spin); + container.removeEventListener("mouseleave", reset); + }; } else if (continuous) { let degrees = 0; const axis = "y"; @@ -94,10 +45,11 @@ export default class Cube extends Component { const animation = () => { const obj = {}; obj[axis] = degrees += 90; - this.setState({ + setState((prev) => ({ + ...prev, ...obj, - iteration: (this.state.iteration + 1) % 4, - }); + iteration: (prev.iteration + 1) % 4, + })); // eslint-disable-next-line no-use-before-define tick(); }; @@ -105,30 +57,13 @@ export default class Cube extends Component { const tick = () => setTimeout(() => requestAnimationFrame(animation), repeatDelay); - this._timeout = tick(); - } - } - - componentWillUnmount() { - const { hover, continuous } = this.props; + timeoutRef.current = tick(); - if (hover) { - this.container.removeEventListener("mouseenter", this._spin); - this.container.removeEventListener("mouseleave", this._reset); - } else if (continuous) { - clearTimeout(this._timeout); + return () => clearTimeout(timeoutRef.current); } - } - - /** - * Get all faces for a cube - * - * @param {'inner' | 'outer' } type - * @return {array} - An array of nodes - */ - _getFaces(type) { - const { iteration } = this.state; + }, []); // eslint-disable-line react-hooks/exhaustive-deps + const getFaces = (type) => { // Keep the thicker border on // the outside on each iteration const borderWidthMap = { @@ -201,50 +136,70 @@ export default class Cube extends Component { key={i} className={`cube__face ${baseFaceClasses} ${variantClasses}`} style={{ - transform: `${rotation} translateZ(${this.props.depth / 2}px)`, + transform: `${rotation} translateZ(${depth / 2}px)`, ...borderStyles, }} /> ); }); - } - - /** - * Get a random axis - * - * @return {string} - A random axis (i.e. x, y, or z) - */ - _getRandomAxis() { - const axes = Object.keys(this.state); - - return axes[Math.floor(Math.random() * axes.length)]; - } - - /** - * Spin the cubes in opposite directions semi-randomly - * - * @param {object} e - Native event - */ - _spin = () => { - const obj = {}; - const axis = this._getRandomAxis(); - const sign = Math.random() < 0.5 ? -1 : 1; - - obj[axis] = sign * 90; - - this.setState(obj); }; - /** - * Rotate the cubes back to their original position - * - * @param {object} e - Native event - */ - _reset = () => { - this.setState({ - x: 0, - y: 0, - z: 0, - }); - }; + return ( +
+ +
+ {getFaces("outer")} +
+
+ {getFaces("inner")} +
+
+
+ ); } + +Cube.propTypes = { + hover: PropTypes.bool, + theme: PropTypes.string, + depth: PropTypes.number, + repeatDelay: PropTypes.number, + className: PropTypes.string, + continuous: PropTypes.bool, +}; diff --git a/src/components/Dropdown/Dropdown.jsx b/src/components/Dropdown/Dropdown.jsx index e838402810c6..600e7388e5fb 100644 --- a/src/components/Dropdown/Dropdown.jsx +++ b/src/components/Dropdown/Dropdown.jsx @@ -1,127 +1,53 @@ import PropTypes from "prop-types"; -import { Component } from "react"; +import { useEffect, useRef, useState } from "react"; -export default class Dropdown extends Component { - static propTypes = { - className: PropTypes.string, - items: PropTypes.array, - }; - - state = { - active: false, - }; +export default function Dropdown({ className = "", items = [] }) { + const [active, setActive] = useState(false); + const activeRef = useRef(false); + const dropdownRef = useRef(null); + const dropdownButtonRef = useRef(null); + const linksRef = useRef([]); + const openedByClickRef = useRef(false); - componentDidMount() { - document.addEventListener("keyup", this._closeDropdownOnEsc, true); - document.addEventListener("focus", this._closeDropdownIfFocusLost, true); - document.addEventListener("click", this._closeDropdownIfFocusLost, true); - } + // Keep activeRef in sync for use inside stable event listeners + useEffect(() => { + activeRef.current = active; + }, [active]); - componentWillUnmount() { - document.removeEventListener("keyup", this._closeDropdownOnEsc, true); - document.removeEventListener("focus", this._closeDropdownIfFocusLost, true); - document.removeEventListener("click", this._closeDropdownIfFocusLost, true); - } + useEffect(() => { + const handleEsc = (event) => { + if (event.key === "Escape" && activeRef.current) { + setActive(false); + dropdownButtonRef.current.focus(); + } + }; - _closeDropdownOnEsc = (event) => { - if (event.key === "Escape" && this.state.active) { - this.setState({ active: false }, () => { - this.dropdownButton.focus(); - }); - } - }; + const handleFocusLost = (event) => { + if (activeRef.current && !dropdownRef.current.contains(event.target)) { + setActive(false); + } + }; - _closeDropdownIfFocusLost = (event) => { - if (this.state.active && !this.dropdown.contains(event.target)) { - this.setState({ active: false }); - } - }; + document.addEventListener("keyup", handleEsc, true); + document.addEventListener("focus", handleFocusLost, true); + document.addEventListener("click", handleFocusLost, true); - render() { - const { className = "", items = [] } = this.props; + return () => { + document.removeEventListener("keyup", handleEsc, true); + document.removeEventListener("focus", handleFocusLost, true); + document.removeEventListener("click", handleFocusLost, true); + }; + }, []); - return ( -