diff --git a/.eslintignore b/.eslintignore index 61967d553..eb0660506 100644 --- a/.eslintignore +++ b/.eslintignore @@ -8,4 +8,3 @@ static cypress-coverage vitest-coverage .storybook-dist -common/styles/themeMap.js diff --git a/.lintstagedrc b/.lintstagedrc index 938f9a8ba..49717b314 100644 --- a/.lintstagedrc +++ b/.lintstagedrc @@ -1,4 +1,4 @@ { "*.{js,jsx,ts,tsx}": ["prettier --write", "eslint --fix"], - "*.css": ["prettier --write", "stylelint --fix"] + "*.css": ["prettier --write"] } diff --git a/.prettierignore b/.prettierignore index 85840f81b..3cf1bebf2 100644 --- a/.prettierignore +++ b/.prettierignore @@ -10,7 +10,6 @@ static cypress-coverage vitest-coverage .storybook-dist -common/styles/themeMap.js **/*.snap **/*.mp4 **/*.png diff --git a/.storybook/backgrounds.js b/.storybook/backgrounds.js deleted file mode 100644 index 153e36314..000000000 --- a/.storybook/backgrounds.js +++ /dev/null @@ -1,9 +0,0 @@ -import { brandColorsObject } from 'common/styles/styleExports'; -import { capitalizeFirstLetter } from 'common/utils/string-utils'; - -const backgroundsPaletteArray = Object.keys(brandColorsObject).map(name => ({ - name: capitalizeFirstLetter(name), - value: brandColorsObject[name], -})); - -export default backgroundsPaletteArray; diff --git a/.storybook/preview-head.html b/.storybook/preview-head.html index 663c8841e..683f6688c 100644 --- a/.storybook/preview-head.html +++ b/.storybook/preview-head.html @@ -1,20 +1,2 @@ - - + diff --git a/.storybook/preview.js b/.storybook/preview.js index d3e5f9115..a9f4bed49 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.js @@ -1,4 +1,3 @@ -import backgroundsPalleteArray from './backgrounds'; import 'common/styles/globals.css'; import * as viewports from '@storybook/addon-viewport'; @@ -13,10 +12,6 @@ export const decorators = [ const preview = { parameters: { actions: { argTypesRegex: '^on[A-Z].*' }, - backgrounds: { - values: backgroundsPalleteArray, - default: 'White', - }, viewport: { viewports: { ...viewports.MINIMAL_VIEWPORTS, diff --git a/.stylelintrc b/.stylelintrc deleted file mode 100644 index d2798323d..000000000 --- a/.stylelintrc +++ /dev/null @@ -1,26 +0,0 @@ -{ - "extends": ["stylelint-config-standard", "stylelint-prettier/recommended"], - "plugins": ["stylelint-prettier"], - "ignoreFiles": [ - "**/*.js", - "coverage/**/*", - "cypress-coverage/**/*", - "vitest-coverage/**/*", - "node_modules/**/*" - ], - "rules": { - "prettier/prettier": true, - "alpha-value-notation": null, - "color-hex-length": "long", - "custom-property-pattern": null, - "hue-degree-notation": null, - "keyframes-name-pattern": null, - "color-function-notation": "legacy", - "no-duplicate-selectors": true, - "property-no-unknown": [true, { "ignoreProperties": ["composes", "composes-with"] }], - "selector-id-pattern": null, - "selector-class-pattern": null, - "selector-pseudo-class-no-unknown": [true, { "ignorePseudoClasses": ["global"] }], - "shorthand-property-no-redundant-values": null - } -} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f53be6d6c..9706f3954 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -30,8 +30,6 @@ Being an open source project involving contributors of varying levels of experie - [What Is The Front-End?](#what-is-the-front-end) - [What Is The Back-End?](#what-is-the-back-end) - [What is REST? What is an API?](#what-is-rest-what-is-an-api) -- [Technologies](#technologies) - - [PostCSS](#postcss) - [Development Workflow](#development-workflow) - [Installing Dependencies](#installing-dependencies) - [Run The Development Server](#run-the-development-server) @@ -90,102 +88,6 @@ The back-end is responsible for providing data for the front-end to display. Thi [What is an API?](https://medium.freecodecamp.org/what-is-an-api-in-english-please-b880a3214a82) -## Technologies - -Here is an alphabetically-sorted list of technologies this project leverages: - -- [Babel](https://babeljs.io/) - JavaScript compiler to unify all the different versions of JS that may have been used or will be used in the future. [Here's a blog post from Scotch.io on why JavaScript utilizes "transpiling" with Babel](https://scotch.io/tutorials/javascript-transpilers-what-they-are-why-we-need-them). -- [CSS Modules](https://github.com/css-modules/css-modules) - CSS Modules allow us to encapsulate CSS within components. Instead of HTML/CSS - our project structure is basically JSX/CSS. -- [Cypress](https://cypress.io/) - Hand-picked resources [here](https://github.com/OperationCode/front-end/tree/main/cypress/README.md). -- [Jest](https://jestjs.io/) - A JavaScript testing framework from Facebook. We use it for all of our unit and some of our integration/regression tests. -- [Next.js](https://nextjs.org/) - Next is a framework for creating ["server-side rendered"](https://medium.freecodecamp.org/demystifying-reacts-server-side-render-de335d408fe4) React applications with a lot of performance and [search engine optimizations](https://searchengineland.com/guide/what-is-seo) out-of-the-box. -- [Node.js](https://www.nodejs.org/) - Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. React utilizes a tiny Node/Express server for it's development environment. -- [PostCSS](#PostCSS) - Extensive documentation listed below... -- [React.js](https://facebook.github.io/react/) - Facebook's popular JavaScript front-end framework. -- [Storybook](https://storybook.js.org) - Storybook acts as a "component workbench" and source for component documentation. You can learn more about Storybook on your own [here](https://www.learnstorybook.com/). You can see our Storybook here: [![Storybook](https://github.com/storybookjs/brand/blob/8d28584c89959d7075c237e9345955c895048977/badge/badge-storybook.svg)](http://storybook.operationcode.org) -- [Webpack](https://webpack.js.org/) - The premier module bundler for JavaScript. Read [this article](https://survivejs.com/webpack/what-is-webpack/) for more information. -- [pnpm](https://pnpm.io/) - Fast, disk space efficient package manager that uses a content-addressable storage system. - -### PostCSS - -In our repo, we use PostCSS plug-ins to help simplify how we write our CSS. PostCSS is included in our webpack configuration, so there are no additional steps necessary to leverage these plug-ins. - -#### What is PostCSS? - -"PostCSS is a tool for transforming styles with JS plugins. These plugins can lint your CSS, support variables and mixins, transpile future CSS syntax, inline images, and more." - [PostCSS Repo](https://github.com/postcss/postcss) - -#### PostCSS Plug-ins in Use - -- [Autoprefixer](https://github.com/postcss/autoprefixer): used to parse vendor prefixes for certain CSS property values - ([What is a vendor prefix?](https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Prefix)). In our repo, you will not have to include vendor prefixes when you create a non-standard CSS selector. - -**Example:** -During development, we would write: - -``` -.someClass { - disply: flex; -} -``` - -Which will output the following once compiled: - -``` -.someClass { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} -``` - -- [PostCSS Media Variables](https://github.com/WolfgangKluge/postcss-media-variables): This plugin allows us to set 'default' breakpoints, and manipulate those values as needed without changing the defaults. Our defaults are defined in `common/styles/variables.css` - -**Example:** -During development, we would write: - -``` -:root { - --largeViewportWidth: 992px; -} -@media (min-width: var(--largeViewportWidth)) {} -``` - -Which will output the following when deployed: - -``` -@media (min-width: 992px){} -``` - -- [PostCSS CSS Variables](https://github.com/MadLittleMods/postcss-css-variables): This plug-in allows us to use [CSS3 variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_variables) across older browsers. On run-time, this plug-in extracts and translates our custom variables into 'vanilla' CSS. - -**Example:** -During development, we would write: - -``` -:root { - --some-color: red; - /*here we have defined the property `--some-color` as red*/ -} - -.foo { - color: --some-color; -/*the element with class selector `.foo` will be red */ -} - -``` - -Which will output the following when deployed: - -``` -.foo { - color: red; -} -``` - -- [PostCSS Export Custom Variables](https://github.com/jonathantneal/postcss-export-custom-variables): We use this plug-in simply to export our collection of CSS variables to [common/styles/themeMap.js](https://github.com/OperationCode/front-end/blob/main/common/styles/themeMap.js) so that they're leveragable within any JavaScript context. - -- [PostCSS Import](https://github.com/postcss/postcss-import): This plug-in essentially tries to emulate the existing [CSS Import spec](https://developer.mozilla.org/en-US/docs/Web/CSS/@import) allowing for modularization and concatenation of CSS files. - ## Development Workflow ### Installing Dependencies @@ -248,9 +150,6 @@ You can see interactive documentation on all of our components via [![Storybook] | ├── index.js # Landing page | └── *.js # All the other pages | -├── scripts -| └── createComponent -| ├── static | ├── fonts | └── images @@ -316,12 +215,6 @@ pnpm test $fileName # Opens up a Cypress browser with which you can check e2e tests locally. Be sure the local dev server is running before this command! pnpm test:e2e - -#Create all the necessary files/folders for a new, reusable component. Please make `ComponentName` TitleCase. -pnpm create-component $ComponentName - -#Create a new page in the pages directory. -pnpm create-page $pageName ``` ## Mocking Back-end Server API diff --git a/common/constants/navigation.ts b/common/constants/navigation.ts index eef4dcf30..eb220d62a 100644 --- a/common/constants/navigation.ts +++ b/common/constants/navigation.ts @@ -101,7 +101,7 @@ const aboutUsGroup = { const getInvolvedGroup = { ...getInvolved, - sublinks: [chapters, sponsorship, merchStore, contact, donate], + sublinks: [chapters, sponsorship, merchStore, contact], }; // MARK: Nav items diff --git a/common/styles/breakpoints.js b/common/styles/breakpoints.js deleted file mode 100644 index e473ec3ef..000000000 --- a/common/styles/breakpoints.js +++ /dev/null @@ -1,6 +0,0 @@ -import { breakpointsObject } from 'common/styles/styleExports'; -import { getBreakpoints } from 'common/utils/style-utils'; - -const breakpoints = getBreakpoints(Object.values(breakpointsObject)); - -export default breakpoints; diff --git a/common/styles/globals.css b/common/styles/globals.css index 15c83e473..34c0dcd2f 100644 --- a/common/styles/globals.css +++ b/common/styles/globals.css @@ -1,120 +1,53 @@ -/* Do not attempt to change values in themeMap - only change in ./variables.css */ -@import url('./variables.css'); - -/* stylelint-disable at-rule-no-unknown */ -@tailwind base; -@tailwind components; -@tailwind utilities; +@import 'tailwindcss' source('../../'); + +@theme { + /* Colors for Tailwind utilities */ + --color-white: #f7f7f7; + --color-primary: #3ed6f0; + --color-secondary: #252e3e; + --color-burnt-orange: hsl(14 55% 45%); + --color-theme-gray-800: #e2e2e2; + --color-error: hsl(355 70% 91%); + --color-error-deep: hsl(355 63% 34%); + --color-success: hsl(132 35% 88%); + --color-success-deep: hsl(132 60% 23%); + --color-warning: hsl(46 100% 90%); + --color-warning-deep: hsl(39 80% 31%); + --font-family-bebas: 'Bebas Neue', sans-serif; + --font-family-encode: 'Encode Sans', sans-serif; + --spacing-prose: 65ch; +} @layer base { - :root { - --primary-rgb: 62 214 240; - --secondary-rgb: 37 46 62; - --gray-rgb: 226 226 226; - --white-rgb: 247 247 247; - --burnt-orange-hsl: 14 55% 45%; - --success-hsl: 132 35% 88%; - --success-deep-hsl: 132 60% 23%; - --warning-hsl: 46 100% 90%; - --warning-deep-hsl: 39 80% 31%; - --error-hsl: 355 70% 91%; - --error-deep-hsl: 355 63% 34%; + html { + @apply font-family-encode size-full m-0 p-0 text-lg font-normal; + color: #47566b; } -} -/* stylelint-enable at-rule-no-unknown */ - -/* Global Styles */ -@font-face { - font-family: 'DIN Condensed Bold'; - font-style: normal; - font-weight: normal; - font-display: auto; - /* stylelint-disable-next-line at-rule-descriptor-no-unknown */ - -webkit-font-smoothing: antialiased; - /* stylelint-disable-next-line at-rule-descriptor-no-unknown */ - -moz-osx-font-smoothing: grayscale; - - /* prettier-ignore */ - src: - url("/static/fonts/DINCondensed-Bold.ttf") format("truetype"), - url("/static/fonts/DINCondensed-Bold.woff2") format("woff2"), - url("/static/fonts/DINCondensed-Bold.woff") format("woff"); -} - -html { - width: 100%; - height: 100%; - margin: 0; - padding: 0; - font-family: var(--secondaryFontFamily), serif; - font-size: 18px; - font-weight: 400; - color: #47566b; -} - -body { - hyphens: none; - margin: 0; - min-width: 300px; -} - -h1, -h2, -h3, -h4, -h5, -h6, -button, -nav, -footer { - font-family: var(--primaryFontFamily), sans-serif; - text-transform: uppercase; -} - -button, -footer { - letter-spacing: 2px; -} - -footer { - background-color: var(--secondary); - color: var(--white); -} - -h1, -h2, -h3, -h4, -h5, -h6 { - letter-spacing: 3px; - margin: 0; - padding: 0; - text-wrap: initial; - text-wrap: balance; -} -a { - color: var(--burntOrange500); - text-decoration: none; -} + body { + @apply min-h-screen min-w-xs m-0 hyphens-none; + } -nav a, -footer a { - color: currentcolor; -} + h1, + h2, + h3, + h4, + h5, + h6 { + @apply font-family-bebas uppercase tracking-widest; + } -a:hover { - text-decoration: underline; -} + footer { + @apply bg-secondary text-white; + } -p { - line-height: 1.75; - max-width: var(--typicalMaxWidth); -} + a { + @apply hover:underline; + } -#root { - min-height: 100%; + p { + @apply max-w-prose; + } } /* Custom font scaling formula https://blog.envylabs.com/responsive-typographic-scales-in-css-b9f60431d1c4 */ @@ -142,29 +75,6 @@ h6 { font-size: 1.125rem; } -@media screen and (--large-viewport) { - html { - font-size: 16px !important; - } -} - -@media screen and (--small-viewport) { - html { - font-size: 14px !important; - } -} - -/* React Scroll Button styles */ -.ScrollUpButton { - position: fixed; - bottom: 50px; - right: 30px; - cursor: pointer; - transition-duration: 0.2s; - transition-timing-function: linear; - transition-delay: 0s; -} - code { background-color: #f0f2f2; border-radius: 4px; diff --git a/common/styles/media-queries.css b/common/styles/media-queries.css deleted file mode 100644 index 675ce3a0d..000000000 --- a/common/styles/media-queries.css +++ /dev/null @@ -1,9 +0,0 @@ -@custom-media --extra-small-viewport (max-width: 350px); - -/* NOTE: Any changes made to these values should also be reflected in `../variables.css` under "Breakpoint" */ -@custom-media --small-viewport (max-width: 576px); -@custom-media --medium-viewport (max-width: 768px); -@custom-media --large-viewport (max-width: 992px); -@custom-media --extra-large-viewport (max-width: 1200px); -@custom-media --mobile-viewport (--large-viewport); -@custom-media --desktop-viewport (min-width: 992px); diff --git a/common/styles/styleExports.ts b/common/styles/styleExports.ts deleted file mode 100644 index 134c44934..000000000 --- a/common/styles/styleExports.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { isHexColor } from 'common/utils/style-utils'; -import * as themeMap from './themeMap'; - -const themeMapValues = Object.entries(themeMap); - -type StyleObjectType = Record; - -export const breakpointsObject: StyleObjectType = themeMapValues.reduce((object, [key, value]) => { - const isBreakpoint = key.includes('ViewportWidth'); - - if (isBreakpoint) { - object[key] = value; // eslint-disable-line no-param-reassign - } - - return object; -}, {} as StyleObjectType); - -export const brandColorsObject: StyleObjectType = themeMapValues.reduce((object, [key, value]) => { - if (isHexColor(value)) { - object[key] = value; // eslint-disable-line no-param-reassign - } - - return object; -}, {} as StyleObjectType); - -export const fontsObject: StyleObjectType = themeMapValues.reduce((object, [key, value]) => { - if (key.includes('Font')) { - // Remove extra quotes from font name - object[key] = value.replace(/^"(.*)"$/, '$1'); // eslint-disable-line no-param-reassign - } - - return object; -}, {} as StyleObjectType); diff --git a/common/styles/themeMap.js b/common/styles/themeMap.js deleted file mode 100644 index f3f04e5ab..000000000 --- a/common/styles/themeMap.js +++ /dev/null @@ -1,23 +0,0 @@ -export const primary = "#3ed6f0"; -export const secondary = "#252e3e"; -export const gray = "#e2e2e2"; -export const white = "#f7f7f7"; -export const burntOrange500 = "hsl(14, 55%, 45%, 1)"; -export const rgbValuesPrimary = "62, 214, 240"; -export const rgbValuesSecondary = "37, 46, 62"; -export const success = "hsl(132, 35%, 88%, 0.6)"; -export const successDeep = "hsl(132, 60%, 23%, 1)"; -export const warning = "hsl(46, 100%, 90%, 0.6)"; -export const warningDeep = "hsl(39, 80%, 31%, 1)"; -export const error = "hsl(355, 70%, 91%, 0.6)"; -export const errorDeep = "hsl(355, 63%, 34%, 1)"; -export const primaryFontFamily = "\"DIN Condensed Bold\""; -export const secondaryFontFamily = "\"Encode Sans\""; -export const smallViewportWidth = "576px"; -export const mediumViewportWidth = "768px"; -export const largeViewportWidth = "992px"; -export const extraLargeViewportWidth = "1200px"; -export const borderRadius = "3px"; -export const navBarHeight = "65px"; -export const navBarTopGutterHeight = "20px"; -export const typicalMaxWidth = "65ch"; diff --git a/common/styles/variables.css b/common/styles/variables.css deleted file mode 100644 index 3922df81d..000000000 --- a/common/styles/variables.css +++ /dev/null @@ -1,40 +0,0 @@ -/* IMPORTANT: Please run `pnpm storybook` when file changes to update `./themeMap.js` */ -:root { - /* Colors */ - --primary: #3ed6f0; /* cerulean */ - --secondary: #252e3e; /* navy */ - --gray: #e2e2e2; /* gainsboro */ - --white: #f7f7f7; /* offwhite */ - --burntOrange500: hsl(14, 55%, 45%, 1); - - /* Colors as RGB values for rgba() usage */ - --rgbValuesPrimary: 62, 214, 240; - --rgbValuesSecondary: 37, 46, 62; - - /* Bootstrap "state" colors */ - --success: hsl(132, 35%, 88%, 0.6); - --successDeep: hsl(132, 60%, 23%, 1); - --warning: hsl(46, 100%, 90%, 0.6); - --warningDeep: hsl(39, 80%, 31%, 1); - --error: hsl(355, 70%, 91%, 0.6); - --errorDeep: hsl(355, 63%, 34%, 1); - - /* Fonts */ - --primaryFontFamily: 'DIN Condensed Bold'; - --secondaryFontFamily: 'Encode Sans'; - - /* - * Breakpoint definitions used in Storybook - * NOTE: Any changes here should be also made to `../media-queries.css` - */ - --smallViewportWidth: 576px; - --mediumViewportWidth: 768px; - --largeViewportWidth: 992px; - --extraLargeViewportWidth: 1200px; - - /* Commonly referenced dimensions */ - --borderRadius: 3px; - --navBarHeight: 65px; - --navBarTopGutterHeight: 20px; - --typicalMaxWidth: 65ch; /* TODO: Remove for max-w-prose */ -} diff --git a/common/utils/__tests__/style-utils.test.js b/common/utils/__tests__/style-utils.test.js deleted file mode 100644 index 3d5a9b339..000000000 --- a/common/utils/__tests__/style-utils.test.js +++ /dev/null @@ -1,111 +0,0 @@ -import { - getNumberFromPixelValue, - hasPixelSuffix, - isHexColor, - getSortedBreakpointValues, - getBreakpoints, -} from '../style-utils'; - -describe('Style Utilities', () => { - describe('getNumberFromPixelValue', () => { - it('should return 50 when passed "50px"', () => { - expect(getNumberFromPixelValue('50px')).toStrictEqual(50); - }); - - it('should return 1000 when passed "1000px"', () => { - expect(getNumberFromPixelValue('1000px')).toStrictEqual(1000); - }); - - it('should error when passing a string without a pixel unit suffix', () => { - expect(() => getNumberFromPixelValue('700')).toThrow('700 is not a pixel value!'); - }); - }); - - describe('hasPixelSuffix', () => { - it('should return true if px is at the end of the string', () => { - expect(hasPixelSuffix('700px')).toStrictEqual(true); - }); - - it('should return false the string is just px', () => { - expect(hasPixelSuffix('px')).toStrictEqual(false); - }); - - it('should return false if not related to pixel value', () => { - expect(hasPixelSuffix('#663399')).toStrictEqual(false); - }); - }); - - describe('isHexColor', () => { - it('should return true if # is at the start of passed string of 4 characters', () => { - expect(isHexColor('#3ab')).toStrictEqual(true); - }); - - it('should return true if # is at the start of passed string of 7 all-caps characters', () => { - expect(isHexColor('#FFFFFF')).toStrictEqual(true); - }); - - it('should return false if passed string is just #', () => { - expect(isHexColor('#')).toStrictEqual(false); - }); - - it('should return false if passed string starts with #, but is 5 characters long', () => { - expect(isHexColor('#2345')).toStrictEqual(false); - }); - - it('should return false if passed string starts with #, but is 10 characters long', () => { - expect(isHexColor('#123456789')).toStrictEqual(false); - }); - - it('should throw an error if not passed a string', () => { - expect(() => isHexColor(3725)).toThrow( - 'Must pass a string to this method. You passed 3725 which is type of: number.', - ); - }); - - it('should throw an error if not passed a string - specifically an object', () => { - const someObject = { someKey: 'value' }; - const errorMessage = `Must pass a string to this method. You passed an object! Keys: someKey`; - - expect(() => isHexColor(someObject)).toThrow(errorMessage); - }); - }); - - describe('getSortedBreakpointValues', () => { - const testValues = ['768px', '1000px', '900px']; - const sortedBreakpointValues = [768, 900, 1000]; - - it('should return an array', () => { - expect(Array.isArray(getSortedBreakpointValues(testValues))).toStrictEqual(true); - }); - - it('should return breakpoint-related values in order from least to greatest', () => { - expect(getSortedBreakpointValues(testValues)).toStrictEqual([...sortedBreakpointValues]); - }); - }); - - describe('getBreakpoints', () => { - const testValues = ['768px', '1000px', '900px', '500px']; - - const errorMessage = `We require a small, medium, large, and extra-large breakpoint. Ensure - "common/styles/variables.css" has exactly 4 breakpoint values.`; - - it('should throw an error when passed an array with fewer than 4 items', () => { - expect(() => getBreakpoints([testValues[0], testValues[1], testValues[2]])).toThrow( - errorMessage, - ); - }); - - it('should throw an error when passed an array with more than 4 items', () => { - expect(() => getBreakpoints([...testValues, '1200px'])).toThrow(errorMessage); - }); - - it('should return a breakpoint object when passed an array of 4 pixel-suffixed values', () => { - expect(getBreakpoints(testValues)).toStrictEqual({ - sm: 500, - md: 768, - lg: 900, - xl: 1000, - }); - }); - }); -}); diff --git a/common/utils/style-utils.js b/common/utils/style-utils.js deleted file mode 100644 index a0c3d1db7..000000000 --- a/common/utils/style-utils.js +++ /dev/null @@ -1,109 +0,0 @@ -/** - * @description Return the number from a pixel-valued string - * - * @exports - * @param {string} pxValue (ex: "768px") - * @returns {number} - */ -export function getNumberFromPixelValue(pxValue) { - if (!hasPixelSuffix(pxValue)) { - throw new Error(`${pxValue} is not a pixel value!`); - } - - const [value] = pxValue.split('px'); - const number = parseInt(value, 10); - return number; -} - -/** - * @description Check if a string has px at the end of it. - * - * @exports - * @param {string} someString - * @returns {boolean} - */ -export function hasPixelSuffix(someString) { - return someString.slice(-2) === 'px' && someString.length > 2; -} - -/** - * @description Check to see if a string is a valid hex color - * - * @exports - * @param {string} value - * @throws Will throw an error if method is not passed a string - * @returns {boolean} - */ -export function isHexColor(value) { - if (typeof value === 'object') { - throw new TypeError( - `Must pass a string to this method. You passed an object! Keys: ${Object.keys(value)}.`, - ); - } - - if (typeof value !== 'string') { - throw new TypeError( - `Must pass a string to this method. You passed ${value} which is type of: ${typeof value}.`, - ); - } - - // #FFF (smallest possible hex color pattern) - // #FFFFFF (largest possible hex color pattern) - const stringLength = value.length; - if (stringLength !== 4 && stringLength !== 7) { - return false; - } - - // Edge Cases: If you pass characters unrelated to a hex letter like 'g' or '+' - // and it begins with a hashtag, you'll get a false-positive - return value.startsWith('#'); -} - -/** - * @description Get a sorted array of every breakpoint value converted to a number - * - * @exports - * @param {string[]} arrayOfBreakpointValues - * @returns {string[]} - */ -export function getSortedBreakpointValues(arrayOfBreakpointValues) { - return arrayOfBreakpointValues - .map(pixelValue => getNumberFromPixelValue(pixelValue)) - .sort((a, b) => a - b); -} - -/** - * An object representing the application's visual breakpoints. - * @typedef {{ - * sm: number, - * md: number, - * lg: number, - * xl: number - * }} Breakpoints - */ - -/** - * @description Take an array of every CSS variable value, return a Breakpoint object - * - * @exports - * @param {string[]} arrayOfBreakpointValues - * @throws Will throw an error if breakpoint-related values array is not exactly length 4 - * @returns {Breakpoints} - */ -export function getBreakpoints(arrayOfBreakpointValues) { - if (arrayOfBreakpointValues.length !== 4) { - throw new Error(` - We require a small, medium, large, and extra-large breakpoint. Ensure - "common/styles/variables.css" has exactly 4 breakpoint values. - `); - } - - const sortedBreakpointValues = getSortedBreakpointValues(arrayOfBreakpointValues); - - return { - sm: sortedBreakpointValues[0], - md: sortedBreakpointValues[1], - lg: sortedBreakpointValues[2], - xl: sortedBreakpointValues[3], - }; -} diff --git a/components/Branding/ColorSection/ColorSection.tsx b/components/Branding/ColorSection/ColorSection.tsx index 7d57e9d8e..65fd91758 100644 --- a/components/Branding/ColorSection/ColorSection.tsx +++ b/components/Branding/ColorSection/ColorSection.tsx @@ -1,44 +1,32 @@ -import { brandColorsObject } from 'common/styles/styleExports'; import Swatch from 'components/Branding/Swatch/Swatch'; import Content from 'components/Content/Content'; -function ColorSection() { - const primaryColor = { name: 'Primary', hexCode: brandColorsObject.primary }; - const secondaryColor = { name: 'Secondary', hexCode: brandColorsObject.secondary }; - - // Compose a list of colors excluding primary and secondary - const otherColorNames = Object.keys(brandColorsObject).filter(colorName => { - const isPrimary = colorName === 'primary'; - const isSecondary = colorName === 'secondary'; +const brandColors = { + primary: '#3ed6f0', + secondary: '#252e3e', + gray: '#e2e2e2', + white: '#f7f7f7', + burntOrange: '#b25134', +}; - return !isPrimary && !isSecondary; - }); +const colors = [ + { name: 'primary', hexCode: brandColors.primary }, + { name: 'secondary', hexCode: brandColors.secondary }, + { name: 'gray', hexCode: brandColors.gray }, + { name: 'white', hexCode: brandColors.white }, + { name: 'burnt orange', hexCode: brandColors.burntOrange }, +]; +function ColorSection() { return ( -
- -

Primary

- -
, -
-

Secondary

- -
, - ]} - /> - ( - - ))} - /> - + ( + + ))} + /> ); } diff --git a/components/Branding/ColorSection/__tests__/__snapshots__/ColorSection.test.tsx.snap b/components/Branding/ColorSection/__tests__/__snapshots__/ColorSection.test.tsx.snap index 3e017f538..3f6dcec03 100644 --- a/components/Branding/ColorSection/__tests__/__snapshots__/ColorSection.test.tsx.snap +++ b/components/Branding/ColorSection/__tests__/__snapshots__/ColorSection.test.tsx.snap @@ -1,51 +1,33 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`ColorSection > should render with required props 1`] = ` -
- -

- Primary -

- -
, -
-

- Secondary -

- -
, - ] - } - hasTitleUnderline={true} - theme="white" - title="Colors" - /> - , - , - ] - } - theme="white" - title="Other On-Brand Colors" - /> - +, + , + , + , + , + ] + } + hasTitleUnderline={true} + theme="white" + title="Colors" +/> `; diff --git a/components/Branding/FontSection/FontSection.tsx b/components/Branding/FontSection/FontSection.tsx index f39e6fcce..7082fce5b 100644 --- a/components/Branding/FontSection/FontSection.tsx +++ b/components/Branding/FontSection/FontSection.tsx @@ -1,8 +1,11 @@ import Content from 'components/Content/Content'; -import { fontsObject } from 'common/styles/styleExports'; + +const fonts = [ + { name: 'DIN Condensed Bold', className: 'font-din-condensed' }, + { name: 'Encode Sans', className: 'font-encode-sans' }, +]; function FontSection() { - // Every letter of the alphabet in one string const demoText = 'Sphinx of black quartz, judge my vow!'; return ( @@ -11,26 +14,15 @@ function FontSection() { theme="gray" hasTitleUnderline columns={[ -
    - {Object.keys(fontsObject).map(item => { - const fontStyle = { - fontFamily: fontsObject[item], - }; - return ( -
  • -
    p]:font-serif [&>h6]:font-serif [&>p]:font-din-condensed [&>h6]:font-din-condensed' - : '[&>p]:font-sans [&>p]:font-encode-sans [&>h6]:font-sans [&>h6]:font-encode-sans' - } - > -
    {fontsObject[item]}
    -

    {demoText}

    -
    -
  • - ); - })} +
      + {fonts.map(font => ( +
    • +
      p]:${font.className} [&>h6]:${font.className}`}> +
      {font.name}
      +

      {demoText}

      +
      +
    • + ))}
    , ]} /> diff --git a/components/Branding/FontSection/__tests__/__snapshots__/FontSection.test.tsx.snap b/components/Branding/FontSection/__tests__/__snapshots__/FontSection.test.tsx.snap index c40222ffc..cc0f28dea 100644 --- a/components/Branding/FontSection/__tests__/__snapshots__/FontSection.test.tsx.snap +++ b/components/Branding/FontSection/__tests__/__snapshots__/FontSection.test.tsx.snap @@ -5,52 +5,28 @@ exports[`FontSection > should render with required props 1`] = ` columns={ [
    • -
      +
      DIN Condensed Bold
      -

      +

      Sphinx of black quartz, judge my vow!

    • -
      +
      Encode Sans
      -

      +

      Sphinx of black quartz, judge my vow!

      diff --git a/components/Branding/LogoSection/LogoSection.tsx b/components/Branding/LogoSection/LogoSection.tsx index 713ca7b1a..e4ec6622f 100644 --- a/components/Branding/LogoSection/LogoSection.tsx +++ b/components/Branding/LogoSection/LogoSection.tsx @@ -1,4 +1,3 @@ -import { cx } from 'common/utils/cva'; import Badge from 'components/Badge/Badge'; import Content from 'components/Content/Content'; import { s3 } from 'common/constants/urls'; @@ -17,7 +16,7 @@ const stackedLogos = [ { img: 'small-stacked-logo.png', alt: 'Light Stacked Logo', label: 'Slate' }, ]; -const medalsOrBadges = [ +const medals = [ { img: 'large-blue-medal.png', alt: 'OC Blue', label: 'OC Blue' }, { img: 'large-red-medal.png', alt: 'Red', label: 'Red' }, { img: 'large-slate-medal.png', alt: 'Navy', label: 'Navy' }, @@ -31,15 +30,14 @@ const lgLogos = [ ]; function LogoSection() { - const badgeListClassNames = - 'flex justify-around items-center flex-wrap pb-4 border-b border-solid border-slate-400'; return ( +
        {/* - SMALL LOGOS - */}
      • Small Logos
        @@ -50,10 +48,10 @@ function LogoSection() { Code logo name still under 1 inch in height.

        -
          +
          • TYPICAL
            -
              +
                {smLogos.map(logo => (
              • -
                  +
                    {stackedLogos.map(logo => (
                  • -
                  • -
                    Medals
                    -

                    - Use the following medals when you are prompted to upload a thumbnail logo only or - profile photo. In most cases, use the OC Blue Medal. The Red Medal should only be - used for holidays and special events (such as Thanksgiving, fall, or Christmas). - The Navy Medal should be used memorandums or lighter bright colored backgrounds. +

                    Medals / Badges
                    +

                    + Use the following images when you are prompted to upload a thumbnail logo only or + profile photo. In most cases, use the OC Blue option. The Red option should only + be used for holidays and special events (such as Thanksgiving, fall, or + Christmas). The Navy option should be used memorandums or lighter bright colored + backgrounds. +

                    +

                    + You may also use them as a profile photo or thumbnail. They should be used to + accompany corporate sponsors or alliance partnerships on shared branding. Use the + original OC Blue option in most cases, except the Red option for special events + and holidays (Thanksgiving, fall and Christmas). The Navy option may be used with + light backgrounds and bright colored backgrounds.

                    -
                      - {medalsOrBadges.map(medal => ( +
                        + {medals.map(medal => (
                      • - -
                      • -
                        Badges
                        -

                        - You may also use badges as a profile photo or thumbnail. Badges should be used to - accompany corporate sponsors or alliance partnerships on shared branding. Use the - original OC Blue Badge in most cases, except the Red Badge for special events and - holidays (Thanksgiving, fall and Christmas). The Navy Badge may be used with light - backgrounds and bright colored backgrounds. -

                        -
                          - {medalsOrBadges.map(badge => ( -
                        • - - } - isImageFirst={false} - label={`${badge.label} Badge`} - /> -
                        • - ))} -
                        -
                      @@ -170,28 +146,23 @@ function LogoSection() { backgrounds.

                      -
                        -
                      • -
                        TYPICAL
                        -
                          - {lgLogos.map(logo => ( -
                        • - - } - isImageFirst={false} - label={logo.label} +
                            + {lgLogos.map(logo => ( +
                          • + -
                          • - ))} -
                          -
                        • + } + isImageFirst={false} + label={logo.label} + /> + + ))}
                      , diff --git a/components/Branding/LogoSection/__tests__/__snapshots__/LogoSection.test.tsx.snap b/components/Branding/LogoSection/__tests__/__snapshots__/LogoSection.test.tsx.snap index c878ac15e..323440954 100644 --- a/components/Branding/LogoSection/__tests__/__snapshots__/LogoSection.test.tsx.snap +++ b/components/Branding/LogoSection/__tests__/__snapshots__/LogoSection.test.tsx.snap @@ -2,10 +2,11 @@ exports[`LogoSection > should render with required props 1`] = `
                    • should render with required props 1`] = ` For use when Operation Code's logo name is between 0-1 inch in height. In most cases, use the Original Small Logo. The Stacked Small Logo is to be used where graphics needs are larger in vertical height than horizontal width with the Operation Code logo name still under 1 inch in height.

                      , bodyChildren:

                      {faq.content}

                      , diff --git a/pages/team.tsx b/pages/team.tsx index 6540942f3..99391b268 100644 --- a/pages/team.tsx +++ b/pages/team.tsx @@ -3,7 +3,6 @@ import HeroBanner from 'components/HeroBanner/HeroBanner'; import { s3 } from 'common/constants/urls'; import Content from 'components/Content/Content'; import FlatCard from 'components/Cards/FlatCard/FlatCard'; -import styles from 'styles/team.module.css'; import cynthiaHeadshot from 'public/static/images/cynthia.jpg'; import glomaniHeadshot from 'public/static/images/glomani.jpg'; @@ -61,13 +60,13 @@ const boardMembers = [ export default function Team() { return ( -
                      +
                      +
                      {boardMembers.map(({ name, role, imageSrc: imageSource, description }) => ( ))}
                      , -
                      +

                      Operation Code deeply appreciates the time, energy, and hard work of our{' '} Founding Board Members, including Conrad Hollomon (Executive Director), Nell @@ -110,7 +112,7 @@ export default function Team() { commitment in the early days.

                      -

                      +

                      Thank you for setting us up for success!

                      , diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 133be6dae..eafc33fa9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,9 +8,6 @@ importers: .: dependencies: - '@innocuous/components': - specifier: ^2.1.1 - version: 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@next/bundle-analyzer': specifier: ^12.3.1 version: 12.3.7 @@ -41,9 +38,6 @@ importers: cva: specifier: ^1.0.0-beta.4 version: 1.0.0-beta.4(typescript@5.9.3) - date-fns: - specifier: ^2.29.3 - version: 2.30.0 fast-xml-parser: specifier: ^3.21.1 version: 3.21.1 @@ -56,9 +50,6 @@ importers: formik: specifier: ^2.4.6 version: 2.4.8(@types/react@18.3.26)(react@18.3.1) - history: - specifier: ^5.3.0 - version: 5.3.0 intersection-observer: specifier: ^0.12.2 version: 0.12.2 @@ -86,9 +77,6 @@ importers: next-sitemap: specifier: ^4.2.3 version: 4.2.3(next@12.3.7(@babel/core@7.28.5)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - nuka-carousel: - specifier: ^5.2.0 - version: 5.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) object-hash: specifier: ^3.0.0 version: 3.0.0 @@ -104,30 +92,12 @@ importers: react-dom: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) - react-facebook-login: - specifier: ^4.1.1 - version: 4.1.1(react@18.3.1) - react-google-login: - specifier: ^5.2.2 - version: 5.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-on-screen: - specifier: ^2.1.1 - version: 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-player: specifier: ^2.16.0 version: 2.16.1(react@18.3.1) - react-scroll: - specifier: ^1.9.3 - version: 1.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-scroll-up-button: - specifier: ^1.6.4 - version: 1.6.4(react@18.3.1) react-select: specifier: ^4.0.2 version: 4.3.1(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-youtube: - specifier: 9.0.3 - version: 9.0.3(react@18.3.1) tailwind-merge: specifier: ^3.3.1 version: 3.3.1 @@ -171,6 +141,9 @@ importers: '@svgr/webpack': specifier: ^6.3.1 version: 6.5.1 + '@tailwindcss/postcss': + specifier: ^4.1.17 + version: 4.1.17 '@testing-library/jest-dom': specifier: ^6.9.1 version: 6.9.1 @@ -218,16 +191,13 @@ importers: version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-react': specifier: ^4.4.1 - version: 4.7.0(vite@7.2.2(@types/node@24.10.0)(jiti@1.21.7)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1)) + version: 4.7.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)) '@vitest/coverage-v8': specifier: ^3.1.2 version: 3.2.4(vitest@3.2.4) '@vitest/ui': specifier: ^3.1.2 version: 3.2.4(vitest@3.2.4) - autoprefixer: - specifier: ^10.4.21 - version: 10.4.21(postcss@8.5.6) axios-mock-adapter: specifier: ^2.1.0 version: 2.1.0(axios@1.13.2) @@ -306,21 +276,6 @@ importers: postcss: specifier: ^8.5.6 version: 8.5.6 - postcss-custom-media: - specifier: ^8.0.2 - version: 8.0.2(postcss@8.5.6) - postcss-custom-properties: - specifier: ^12.1.8 - version: 12.1.11(postcss@8.5.6) - postcss-export-custom-variables: - specifier: ^1.0.0 - version: 1.0.0 - postcss-import: - specifier: ^14.1.0 - version: 14.1.0(postcss@8.5.6) - postcss-prepend-imports: - specifier: ^1.0.1 - version: 1.0.1 prettier: specifier: ^3.6.2 version: 3.6.2 @@ -345,21 +300,9 @@ importers: style-loader: specifier: ^3.3.1 version: 3.3.4(webpack@5.102.1(@swc/core@1.15.1)(esbuild@0.18.20)) - stylelint: - specifier: ^16.25.0 - version: 16.25.0(typescript@5.9.3) - stylelint-config-prettier: - specifier: ^9.0.3 - version: 9.0.5(stylelint@16.25.0(typescript@5.9.3)) - stylelint-config-standard: - specifier: ^37.0.0 - version: 37.0.0(stylelint@16.25.0(typescript@5.9.3)) - stylelint-prettier: - specifier: ^5.0.3 - version: 5.0.3(prettier@3.6.2)(stylelint@16.25.0(typescript@5.9.3)) tailwindcss: - specifier: ^3.4.17 - version: 3.4.18(yaml@2.8.1) + specifier: ^4.1.17 + version: 4.1.17 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -368,13 +311,13 @@ importers: version: 4.1.1(file-loader@6.2.0(webpack@5.102.1(@swc/core@1.15.1)(esbuild@0.18.20)))(webpack@5.102.1(@swc/core@1.15.1)(esbuild@0.18.20)) vite-plugin-magical-svg: specifier: ^1.8.0 - version: 1.8.0(vite@7.2.2(@types/node@24.10.0)(jiti@1.21.7)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1)) + version: 1.8.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.0)(jiti@1.21.7)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1)) + version: 5.1.4(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)) vitest: specifier: ^3.1.2 - version: 3.2.4(@types/node@24.10.0)(@vitest/ui@3.2.4)(jiti@1.21.7)(jsdom@26.1.0)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1) + version: 3.2.4(@types/node@24.10.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) webpack: specifier: ^5.102.1 version: 5.102.1(@swc/core@1.15.1)(esbuild@0.18.20) @@ -1013,15 +956,6 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} - '@cacheable/memoize@2.0.3': - resolution: {integrity: sha512-hl9wfQgpiydhQEIv7fkjEzTGE+tcosCXLKFDO707wYJ/78FVOlowb36djex5GdbSyeHnG62pomYLMuV/OT8Pbw==} - - '@cacheable/memory@2.0.4': - resolution: {integrity: sha512-cCmJKCKlT1t7hNBI1+gFCwmKFd9I4pS3zqBeNGXTSODnpa0EeDmORHY8oEMTuozfdg3cgsVh8ojLaPYb6eC7Cg==} - - '@cacheable/utils@2.2.0': - resolution: {integrity: sha512-7xaQayO3msdVcxXLYcLU5wDqJBNdQcPPPHr6mdTEIQI7N7TbtSVVTpWOTfjyhg0L6AQwQdq7miKdWtTDBoBldQ==} - '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -1057,26 +991,10 @@ packages: resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} - '@csstools/media-query-list-parser@4.0.3': - resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 - - '@csstools/selector-specificity@5.0.0': - resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} - engines: {node: '>=18'} - peerDependencies: - postcss-selector-parser: ^7.0.0 - '@discoveryjs/json-ext@0.5.7': resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} - '@dual-bundle/import-meta-resolve@4.2.1': - resolution: {integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==} - '@emotion/babel-plugin@11.13.5': resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} @@ -1461,18 +1379,6 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead - '@innocuous/components@2.1.1': - resolution: {integrity: sha512-yU4a5kYCerTJOGDWdVsaLL3TvbDf9ZTitQBbTO8DS4fq6sjcHzhQcIyJ5Ox0EgNRtk1RujXHC5OOsMN3uUXYuA==} - peerDependencies: - react: '>=16.8.6' - react-dom: '>=16.8.6' - - '@innocuous/hooks@2.1.1': - resolution: {integrity: sha512-aEmassaakqeAsI0FXeScMNexZTppDRxIMSOxD12aVFLBxCIdXjSMwBd1tQZJpFYTtUbTjh6x76GPUTfyI8WsqQ==} - peerDependencies: - react: '>=16.8.6' - react-dom: '>=16.8.6' - '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -1523,15 +1429,6 @@ packages: '@juggle/resize-observer@3.4.0': resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} - '@keyv/bigmap@1.1.0': - resolution: {integrity: sha512-MX7XIUNwVRK+hjZcAbNJ0Z8DREo+Weu9vinBOjGU1thEi9F6vPhICzBbk4CCf3eEefKRz7n6TfZXwUFZTSgj8Q==} - engines: {node: '>= 18'} - peerDependencies: - keyv: ^5.5.3 - - '@keyv/serialize@1.1.1': - resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} - '@mdx-js/react@2.3.0': resolution: {integrity: sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==} peerDependencies: @@ -2841,6 +2738,94 @@ packages: '@swc/types@0.1.25': resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} + '@tailwindcss/node@4.1.17': + resolution: {integrity: sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg==} + + '@tailwindcss/oxide-android-arm64@4.1.17': + resolution: {integrity: sha512-BMqpkJHgOZ5z78qqiGE6ZIRExyaHyuxjgrJ6eBO5+hfrfGkuya0lYfw8fRHG77gdTjWkNWEEm+qeG2cDMxArLQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.17': + resolution: {integrity: sha512-EquyumkQweUBNk1zGEU/wfZo2qkp/nQKRZM8bUYO0J+Lums5+wl2CcG1f9BgAjn/u9pJzdYddHWBiFXJTcxmOg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.17': + resolution: {integrity: sha512-gdhEPLzke2Pog8s12oADwYu0IAw04Y2tlmgVzIN0+046ytcgx8uZmCzEg4VcQh+AHKiS7xaL8kGo/QTiNEGRog==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.17': + resolution: {integrity: sha512-hxGS81KskMxML9DXsaXT1H0DyA+ZBIbyG/sSAjWNe2EDl7TkPOBI42GBV3u38itzGUOmFfCzk1iAjDXds8Oh0g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17': + resolution: {integrity: sha512-k7jWk5E3ldAdw0cNglhjSgv501u7yrMf8oeZ0cElhxU6Y2o7f8yqelOp3fhf7evjIS6ujTI3U8pKUXV2I4iXHQ==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.17': + resolution: {integrity: sha512-HVDOm/mxK6+TbARwdW17WrgDYEGzmoYayrCgmLEw7FxTPLcp/glBisuyWkFz/jb7ZfiAXAXUACfyItn+nTgsdQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.17': + resolution: {integrity: sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.17': + resolution: {integrity: sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.17': + resolution: {integrity: sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.17': + resolution: {integrity: sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.17': + resolution: {integrity: sha512-JU5AHr7gKbZlOGvMdb4722/0aYbU+tN6lv1kONx0JK2cGsh7g148zVWLM0IKR3NeKLv+L90chBVYcJ8uJWbC9A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.17': + resolution: {integrity: sha512-SKWM4waLuqx0IH+FMDUw6R66Hu4OuTALFgnleKbqhgGU30DY20NORZMZUKgLRjQXNN2TLzKvh48QXTig4h4bGw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.17': + resolution: {integrity: sha512-F0F7d01fmkQhsTjXezGBLdrl1KresJTcI3DB8EkScCldyKp3Msz4hub4uyYaVnk88BAS1g5DQjjF6F5qczheLA==} + engines: {node: '>= 10'} + + '@tailwindcss/postcss@4.1.17': + resolution: {integrity: sha512-+nKl9N9mN5uJ+M7dBOOCzINw94MPstNR/GtIhz1fpZysxL/4a+No64jCBD6CPN+bIHWFx3KWuu8XJRrj/572Dw==} + '@testing-library/dom@8.20.1': resolution: {integrity: sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==} engines: {node: '>=12'} @@ -3417,10 +3402,6 @@ packages: engines: {'0': node >= 0.8.0} hasBin: true - ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -3429,14 +3410,6 @@ packages: resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} - ansi-styles@2.2.1: - resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} - engines: {node: '>=0.10.0'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -3449,9 +3422,6 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -3563,13 +3533,6 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - autoprefixer@10.4.21: - resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -3642,9 +3605,6 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - balanced-match@2.0.0: - resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} - bare-events@2.8.2: resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} peerDependencies: @@ -3805,9 +3765,6 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - cacheable@2.1.1: - resolution: {integrity: sha512-LmF4AXiSNdiRbI2UjH8pAp9NIXxeQsTotpEaegPiDcnN0YPygDJDV3l/Urc0mL72JWdATEorKqIHEx55nDlONg==} - call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -3827,10 +3784,6 @@ packages: camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} @@ -3850,14 +3803,6 @@ packages: resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} engines: {node: '>=18'} - chalk@1.1.3: - resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} - engines: {node: '>=0.10.0'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} engines: {node: '>=8'} @@ -3954,16 +3899,10 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -3978,9 +3917,6 @@ packages: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} - colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -3995,10 +3931,6 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - commander@6.2.1: resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} engines: {node: '>= 6'} @@ -4105,15 +4037,6 @@ packages: typescript: optional: true - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - create-ecdh@4.0.4: resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} @@ -4140,10 +4063,6 @@ packages: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} - css-functions-list@3.2.3: - resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==} - engines: {node: '>=12 || >=16'} - css-loader@3.6.0: resolution: {integrity: sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==} engines: {node: '>= 8.9.0'} @@ -4234,10 +4153,6 @@ packages: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} - date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} - debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -4368,17 +4283,11 @@ packages: resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} engines: {node: '>=12'} - detect-passive-events@1.0.5: - resolution: {integrity: sha512-foW7Q35wwOCxVzW0xLf5XeB5Fhe7oyRgvkBYdiP9IWgLMzjqUqTvsJv9ymuEWGjY6AoDXD3OC294+Z9iuOw0QA==} - detect-port@1.6.1: resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} engines: {node: '>= 4.0.0'} hasBin: true - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4390,9 +4299,6 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -4521,10 +4427,6 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} - env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - envinfo@7.20.0: resolution: {integrity: sha512-+zUomDcLXsVkQ37vUqWBvQwLaLlj8eZPSi61llaEFAVBY5mhcXdaSw1pSJVl4yTYD5g/gEfpNl28YYk4IPvrrg==} engines: {node: '>=4'} @@ -4873,10 +4775,6 @@ packages: resolution: {integrity: sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg==} hasBin: true - fastest-levenshtein@1.0.16: - resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} - engines: {node: '>= 4.9.1'} - fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} @@ -4901,9 +4799,6 @@ packages: fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} - file-entry-cache@10.1.4: - resolution: {integrity: sha512-5XRUFc0WTtUbjfGzEwXc42tiGxQHBmtbUG1h9L2apu4SulCGN3Hqm//9D6FAolf8MYNL7f/YlJl9vy08pj5JuA==} - file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -4971,9 +4866,6 @@ packages: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} - flat-cache@6.1.18: - resolution: {integrity: sha512-JUPnFgHMuAVmLmoH9/zoZ6RHOt5n9NlUw/sDXsTbROJ2SFoS2DS4s+swAV6UTeTbGH/CAsZIE6M8TaG/3jVxgQ==} - flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} @@ -5021,9 +4913,6 @@ packages: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -5155,14 +5044,6 @@ packages: engines: {node: '>=12'} deprecated: Glob versions prior to v9 are no longer supported - global-modules@2.0.0: - resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} - engines: {node: '>=6'} - - global-prefix@3.0.0: - resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} - engines: {node: '>=6'} - globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} @@ -5179,9 +5060,6 @@ packages: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - globjoin@0.1.4: - resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} - globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} @@ -5211,22 +5089,10 @@ packages: harmony-reflect@1.6.2: resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} - has-ansi@2.0.0: - resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} - engines: {node: '>=0.10.0'} - has-bigints@1.1.0: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} - has-flag@1.0.0: - resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} - engines: {node: '>=0.10.0'} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -5268,18 +5134,12 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - history@5.3.0: - resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} - hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - hookified@1.12.2: - resolution: {integrity: sha512-aokUX1VdTpI0DUsndvW+OiwmBpKCu/NgRsSSkuSY0zq8PY6Q6a+lmOfAFDXAAOtBqJELvcWY9L1EVtzjbQcMdg==} - hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -5382,10 +5242,6 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} - engines: {node: '>= 4'} - image-size@0.5.5: resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} engines: {node: '>=0.10.0'} @@ -5716,12 +5572,13 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + joi@17.13.3: resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} - js-base64@2.6.4: - resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} - js-cookie@3.0.5: resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} engines: {node: '>=14'} @@ -5800,9 +5657,6 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - keyv@5.5.3: - resolution: {integrity: sha512-h0Un1ieD+HUrzBH6dJXhod3ifSghk5Hw/2Y4/KHBziPlZecrFyE9YOTPU6eOs0V9pYl8gOs86fkr/KN8lUX39A==} - kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -5815,9 +5669,6 @@ packages: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} - known-css-properties@0.37.0: - resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==} - language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -5856,14 +5707,80 @@ packages: lie@3.1.1: resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + lightningcss-android-arm64@1.30.2: + resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.30.2: + resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.2: + resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.2: + resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.2: + resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.2: + resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.2: + resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.2: + resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.2: + resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.2: + resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.2: + resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.2: + resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} + engines: {node: '>= 12.0.0'} + lilconfig@2.0.5: resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} engines: {node: '>=10'} - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -5928,12 +5845,6 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.throttle@4.1.1: - resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - - lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -6022,9 +5933,6 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - mathml-tag-names@2.1.3: - resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} - md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} @@ -6057,10 +5965,6 @@ packages: memoizerific@1.11.3: resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} - meow@13.2.0: - resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} - engines: {node: '>=18'} - merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} @@ -6193,9 +6097,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -6305,10 +6206,6 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -6324,13 +6221,6 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nuka-carousel@5.6.0: - resolution: {integrity: sha512-pELQHcOTJ5yJvs7wtXD5J5pqBMHDfdI667V9jaEhJVr9VQKMwq87xXv5P1cXiNamJuT3g2zw30ic6Y4eII4ofA==} - engines: {node: '>=12.0.0'} - peerDependencies: - react: ^15.3.0 || ^16.0.0 || ^17.0.1 || ^18.0.0 - react-dom: ^15.3.0 || ^16.0.0 || ^17.0.1 || ^18.0.0 - nwsapi@2.2.22: resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==} @@ -6581,10 +6471,6 @@ packages: engines: {node: '>=0.10'} hasBin: true - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -6638,58 +6524,6 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss-custom-media@8.0.2: - resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.3 - - postcss-custom-properties@12.1.11: - resolution: {integrity: sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==} - engines: {node: ^12 || ^14 || >=16} - peerDependencies: - postcss: ^8.2 - - postcss-export-custom-variables@1.0.0: - resolution: {integrity: sha512-86qxZUMGLEo1LUyBh0JJnwC1YeP1kNfKW7sCZZem7jliCbR9DbfEhfG1FLDkXYEdxycjJeHuK9ObXsLTLFs7jQ==} - engines: {node: '>=4.0.0'} - - postcss-import@14.1.0: - resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} - engines: {node: '>=10.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.1.0: - resolution: {integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@6.0.1: - resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} - engines: {node: '>= 18'} - peerDependencies: - jiti: '>=1.21.0' - postcss: '>=8.0.9' - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - jiti: - optional: true - postcss: - optional: true - tsx: - optional: true - yaml: - optional: true - postcss-loader@4.3.0: resolution: {integrity: sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==} engines: {node: '>= 10.13.0'} @@ -6743,24 +6577,6 @@ packages: peerDependencies: postcss: ^8.1.0 - postcss-nested@6.2.0: - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-prepend-imports@1.0.1: - resolution: {integrity: sha512-UCJ8nTBWWNWe+ksYnltSjfhUQbPictX7eNnUoL7n2/ljICF+R34Omstn7EePSBUFIJ7GPTnWgH65wsUda5L8ow==} - - postcss-resolve-nested-selector@0.1.6: - resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} - - postcss-safe-parser@7.0.1: - resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} - engines: {node: '>=18.0'} - peerDependencies: - postcss: ^8.4.31 - postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} @@ -6772,14 +6588,6 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@5.2.18: - resolution: {integrity: sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==} - engines: {node: '>=0.12'} - - postcss@6.0.23: - resolution: {integrity: sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==} - engines: {node: '>=4.0.0'} - postcss@7.0.39: resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} engines: {node: '>=6.0.0'} @@ -6889,10 +6697,6 @@ packages: resolution: {integrity: sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w==} engines: {node: '>=8.16.0'} - qified@0.5.1: - resolution: {integrity: sha512-+BtFN3dCP+IaFA6IYNOu/f/uK1B8xD2QWyOeCse0rjtAebBmkzgd2d1OAXi3ikAzJMIBSdzZDNZ3wZKEUDQs5w==} - engines: {node: '>=20'} - qs@6.13.0: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} @@ -6958,24 +6762,12 @@ packages: react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 - react-facebook-login@4.1.1: - resolution: {integrity: sha512-COnHEHlYGTKipz4963safFAK9PaNTcCiXfPXMS/yxo8El+/AJL5ye8kMJf23lKSSGGPgqFQuInskIHVqGqTvSw==} - peerDependencies: - react: ^16.0.0 - react-fast-compare@2.0.4: resolution: {integrity: sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==} react-fast-compare@3.2.2: resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - react-google-login@5.2.2: - resolution: {integrity: sha512-JUngfvaSMcOuV0lFff7+SzJ2qviuNMQdqlsDJkUM145xkGPVIfqWXq9Ui+2Dr6jdJWH5KYdynz9+4CzKjI5u6g==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^16 || ^17 - react-dom: ^16 || ^17 - react-input-autosize@3.0.0: resolution: {integrity: sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==} peerDependencies: @@ -6993,12 +6785,6 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-on-screen@2.1.1: - resolution: {integrity: sha512-mV2Ntd61ncJ9nBsXF/p5Y6lMDGTTwXTGvHaal4b7O1eX3GwSwDXKAe7KKXTf/4Oc1BuYc7j5Sy0XdT89w/MjDA==} - peerDependencies: - react: '>=15.0.0' - react-dom: '>=15.0.0' - react-player@2.16.1: resolution: {integrity: sha512-mxP6CqjSWjidtyDoMOSHVPdhX0pY16aSvw5fVr44EMaT7X5Xz46uQ4b/YBm1v2x+3hHkB9PmjEEkmbHb9PXQ4w==} peerDependencies: @@ -7042,17 +6828,6 @@ packages: '@types/react': optional: true - react-scroll-up-button@1.6.4: - resolution: {integrity: sha512-ou/ZLbjAXgXnszmNp9g17XlZBat48V3Oz40ssEcu6dEIM2CVn/yWxej3Y4Fx1LyUtQ1cc/MoWOSXC2dufaiACg==} - peerDependencies: - react: ^15.5.4 || ^16.0.0 - - react-scroll@1.9.3: - resolution: {integrity: sha512-xv7FXqF3k63aSLNu4/NjFvRNI0ge7DmmmsbeGarP7LZVAlJMSjUuW3dTtLxp1Afijyv0lS2qwC0GiFHvx1KBHQ==} - peerDependencies: - react: ^15.5.4 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^15.5.4 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-select@4.3.1: resolution: {integrity: sha512-HBBd0dYwkF5aZk1zP81Wx5UsLIIT2lSvAY2JiJo199LjoLHoivjn9//KsmvQMEFGNhe58xyuOITjfxKCcGc62Q==} peerDependencies: @@ -7085,19 +6860,10 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' - react-youtube@9.0.3: - resolution: {integrity: sha512-NfLSlFRTGz5sanbt23Yfw+2TOhWZFMM8qBESb4qs5VxMcykVC1BsQhPcptdAKCFK5YOa0le/y8+lp/obrSZUjQ==} - engines: {node: '>= 14.x'} - peerDependencies: - react: '>=0.14.1' - react@18.3.1: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -7400,9 +7166,6 @@ packages: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} - shallowequal@1.1.0: - resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - sharp@0.32.6: resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} engines: {node: '>=14.15.0'} @@ -7458,9 +7221,6 @@ packages: resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} engines: {node: '>=18'} - sister@3.0.2: - resolution: {integrity: sha512-p19rtTs+NksBRKW9qn0UhZ8/TUI9BPw9lmtHny+Y3TinWlOa9jWh9xB0AtPSdmOy49NJJJSSe0Ey4C7h0TrcYA==} - sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -7618,10 +7378,6 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -7702,56 +7458,8 @@ packages: babel-plugin-macros: optional: true - stylelint-config-prettier@9.0.5: - resolution: {integrity: sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA==} - engines: {node: '>= 12'} - hasBin: true - peerDependencies: - stylelint: '>= 11.x < 15' - - stylelint-config-recommended@15.0.0: - resolution: {integrity: sha512-9LejMFsat7L+NXttdHdTq94byn25TD+82bzGRiV1Pgasl99pWnwipXS5DguTpp3nP1XjvLXVnEJIuYBfsRjRkA==} - engines: {node: '>=18.12.0'} - peerDependencies: - stylelint: ^16.13.0 - - stylelint-config-standard@37.0.0: - resolution: {integrity: sha512-+6eBlbSTrOn/il2RlV0zYGQwRTkr+WtzuVSs1reaWGObxnxLpbcspCUYajVQHonVfxVw2U+h42azGhrBvcg8OA==} - engines: {node: '>=18.12.0'} - peerDependencies: - stylelint: ^16.13.0 - - stylelint-prettier@5.0.3: - resolution: {integrity: sha512-B6V0oa35ekRrKZlf+6+jA+i50C4GXJ7X1PPmoCqSUoXN6BrNF6NhqqhanvkLjqw2qgvrS0wjdpeC+Tn06KN3jw==} - engines: {node: '>=18.12.0'} - peerDependencies: - prettier: '>=3.0.0' - stylelint: '>=16.0.0' - - stylelint@16.25.0: - resolution: {integrity: sha512-Li0avYWV4nfv1zPbdnxLYBGq4z8DVZxbRgx4Kn6V+Uftz1rMoF1qiEI3oL4kgWqyYgCgs7gT5maHNZ82Gk03vQ==} - engines: {node: '>=18.12.0'} - hasBin: true - - stylis@4.2.0: - resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} - - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - supports-color@2.0.0: - resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} - engines: {node: '>=0.8.0'} - - supports-color@3.2.3: - resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} - engines: {node: '>=0.8.0'} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -7761,10 +7469,6 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} - supports-hyperlinks@3.2.0: - resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} - engines: {node: '>=14.18'} - supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -7772,9 +7476,6 @@ packages: svg-parser@2.0.4: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} - svg-tags@1.0.0: - resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} - svgo@2.8.0: resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} engines: {node: '>=10.13.0'} @@ -7801,17 +7502,11 @@ packages: resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} engines: {node: ^14.18.0 || >=16.0.0} - table@6.9.0: - resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} - engines: {node: '>=10.0.0'} - tailwind-merge@3.3.1: resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==} - tailwindcss@3.4.18: - resolution: {integrity: sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==} - engines: {node: '>=14.0.0'} - hasBin: true + tailwindcss@4.1.17: + resolution: {integrity: sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==} tapable@2.3.0: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} @@ -7884,13 +7579,6 @@ packages: text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} @@ -7989,9 +7677,6 @@ packages: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-pnp@1.2.0: resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} engines: {node: '>=6'} @@ -8040,9 +7725,6 @@ packages: tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - tween-functions@1.2.0: - resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} - type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -8433,10 +8115,6 @@ packages: resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} engines: {node: '>= 0.4'} - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -8479,10 +8157,6 @@ packages: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - write-file-atomic@5.0.1: - resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ws@6.2.3: resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} peerDependencies: @@ -8563,9 +8237,6 @@ packages: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} - youtube-player@5.5.2: - resolution: {integrity: sha512-ZGtsemSpXnDky2AUYWgxjaopgB+shFHgXVpiJFeNB5nWEugpW1KWYDaHKuLqh2b67r24GtP6HoSW5swvf0fFIQ==} - yup@1.7.1: resolution: {integrity: sha512-GKHFX2nXul2/4Dtfxhozv701jLQHdf6J34YDh2cEkpqoo8le5Mg6/LrdseVLrFarmFygZTlfIhHx/QKfb/QWXw==} @@ -9387,21 +9058,6 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} - '@cacheable/memoize@2.0.3': - dependencies: - '@cacheable/utils': 2.2.0 - - '@cacheable/memory@2.0.4': - dependencies: - '@cacheable/utils': 2.2.0 - '@keyv/bigmap': 1.1.0(keyv@5.5.3) - hookified: 1.12.2 - keyv: 5.5.3 - - '@cacheable/utils@2.2.0': - dependencies: - keyv: 5.5.3 - '@colors/colors@1.5.0': optional: true @@ -9427,19 +9083,8 @@ snapshots: '@csstools/css-tokenizer@3.0.4': {} - '@csstools/media-query-list-parser@4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': - dependencies: - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 - - '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)': - dependencies: - postcss-selector-parser: 7.1.0 - '@discoveryjs/json-ext@0.5.7': {} - '@dual-bundle/import-meta-resolve@4.2.1': {} - '@emotion/babel-plugin@11.13.5': dependencies: '@babel/helper-module-imports': 7.27.1 @@ -9708,17 +9353,6 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} - '@innocuous/components@2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@innocuous/hooks': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@innocuous/hooks@2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -9801,13 +9435,6 @@ snapshots: '@juggle/resize-observer@3.4.0': {} - '@keyv/bigmap@1.1.0(keyv@5.5.3)': - dependencies: - hookified: 1.12.2 - keyv: 5.5.3 - - '@keyv/serialize@1.1.1': {} - '@mdx-js/react@2.3.0(react@18.3.1)': dependencies: '@types/mdx': 2.0.13 @@ -11609,6 +11236,75 @@ snapshots: dependencies: '@swc/counter': 0.1.3 + '@tailwindcss/node@4.1.17': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.18.3 + jiti: 2.6.1 + lightningcss: 1.30.2 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.1.17 + + '@tailwindcss/oxide-android-arm64@4.1.17': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.17': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.17': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.17': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.17': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.17': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.17': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.17': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.17': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.17': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.17': + optional: true + + '@tailwindcss/oxide@4.1.17': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.17 + '@tailwindcss/oxide-darwin-arm64': 4.1.17 + '@tailwindcss/oxide-darwin-x64': 4.1.17 + '@tailwindcss/oxide-freebsd-x64': 4.1.17 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.17 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.17 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.17 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.17 + '@tailwindcss/oxide-linux-x64-musl': 4.1.17 + '@tailwindcss/oxide-wasm32-wasi': 4.1.17 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.17 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.17 + + '@tailwindcss/postcss@4.1.17': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.1.17 + '@tailwindcss/oxide': 4.1.17 + postcss: 8.5.6 + tailwindcss: 4.1.17 + '@testing-library/dom@8.20.1': dependencies: '@babel/code-frame': 7.27.1 @@ -12041,7 +11737,7 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@4.7.0(vite@7.2.2(@types/node@24.10.0)(jiti@1.21.7)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1))': + '@vitejs/plugin-react@4.7.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -12049,7 +11745,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.2.2(@types/node@24.10.0)(jiti@1.21.7)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12068,7 +11764,7 @@ snapshots: std-env: 3.10.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.10.0)(@vitest/ui@3.2.4)(jiti@1.21.7)(jsdom@26.1.0)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.10.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12080,13 +11776,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.2.2(@types/node@24.10.0)(jiti@1.21.7)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.2(@types/node@24.10.0)(jiti@1.21.7)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -12117,7 +11813,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.10.0)(@vitest/ui@3.2.4)(jiti@1.21.7)(jsdom@26.1.0)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.10.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) '@vitest/utils@3.2.4': dependencies: @@ -12320,18 +12016,10 @@ snapshots: ansi-html@0.0.9: {} - ansi-regex@2.1.1: {} - ansi-regex@5.0.1: {} ansi-regex@6.2.2: {} - ansi-styles@2.2.1: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -12340,8 +12028,6 @@ snapshots: ansi-styles@6.2.3: {} - any-promise@1.3.0: {} - anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -12483,16 +12169,6 @@ snapshots: asynckit@0.4.0: {} - autoprefixer@10.4.21(postcss@8.5.6): - dependencies: - browserslist: 4.27.0 - caniuse-lite: 1.0.30001754 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.1 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 @@ -12579,8 +12255,6 @@ snapshots: balanced-match@1.0.2: {} - balanced-match@2.0.0: {} - bare-events@2.8.2: {} bare-fs@4.5.0: @@ -12768,15 +12442,6 @@ snapshots: cac@6.7.14: {} - cacheable@2.1.1: - dependencies: - '@cacheable/memoize': 2.0.3 - '@cacheable/memory': 2.0.4 - '@cacheable/utils': 2.2.0 - hookified: 1.12.2 - keyv: 5.5.3 - qified: 0.5.1 - call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -12801,8 +12466,6 @@ snapshots: pascal-case: 3.1.2 tslib: 2.8.1 - camelcase-css@2.0.1: {} - camelcase@5.3.1: {} camelcase@6.3.0: {} @@ -12819,20 +12482,6 @@ snapshots: loupe: 3.2.1 pathval: 2.0.1 - chalk@1.1.3: - dependencies: - ansi-styles: 2.2.1 - escape-string-regexp: 1.0.5 - has-ansi: 2.0.0 - strip-ansi: 3.0.1 - supports-color: 2.0.0 - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - chalk@3.0.0: dependencies: ansi-styles: 4.3.0 @@ -12925,16 +12574,10 @@ snapshots: clsx@2.1.1: {} - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - color-convert@2.0.1: dependencies: color-name: 1.1.4 - color-name@1.1.3: {} - color-name@1.1.4: {} color-string@1.9.1: @@ -12949,8 +12592,6 @@ snapshots: color-convert: 2.0.1 color-string: 1.9.1 - colord@2.9.3: {} - colorette@2.0.20: {} combined-stream@1.0.8: @@ -12961,8 +12602,6 @@ snapshots: commander@2.20.3: {} - commander@4.1.1: {} - commander@6.2.1: {} commander@7.2.0: {} @@ -13057,15 +12696,6 @@ snapshots: optionalDependencies: typescript: 5.9.3 - cosmiconfig@9.0.0(typescript@5.9.3): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - parse-json: 5.2.0 - optionalDependencies: - typescript: 5.9.3 - create-ecdh@4.0.4: dependencies: bn.js: 4.12.2 @@ -13115,8 +12745,6 @@ snapshots: crypto-random-string@2.0.0: {} - css-functions-list@3.2.3: {} - css-loader@3.6.0(webpack@5.102.1(@swc/core@1.15.1)(esbuild@0.18.20)): dependencies: camelcase: 5.3.1 @@ -13230,10 +12858,6 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 - date-fns@2.30.0: - dependencies: - '@babel/runtime': 7.28.4 - debug@2.6.9: dependencies: ms: 2.0.0 @@ -13350,8 +12974,6 @@ snapshots: dependencies: execa: 5.1.1 - detect-passive-events@1.0.5: {} - detect-port@1.6.1: dependencies: address: 1.2.2 @@ -13359,8 +12981,6 @@ snapshots: transitivePeerDependencies: - supports-color - didyoumean@1.2.2: {} - diff-sequences@29.6.3: {} diffie-hellman@5.0.3: @@ -13373,8 +12993,6 @@ snapshots: dependencies: path-type: 4.0.0 - dlv@1.1.3: {} - doctrine@2.1.0: dependencies: esutils: 2.0.3 @@ -13509,8 +13127,6 @@ snapshots: entities@6.0.1: {} - env-paths@2.2.1: {} - envinfo@7.20.0: {} errno@0.1.8: @@ -13871,7 +13487,7 @@ snapshots: eslint: 8.57.1 optionalDependencies: '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) - vitest: 3.2.4(@types/node@24.10.0)(@vitest/ui@3.2.4)(jiti@1.21.7)(jsdom@26.1.0)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.10.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color - typescript @@ -14104,8 +13720,6 @@ snapshots: dependencies: strnum: 1.1.2 - fastest-levenshtein@1.0.16: {} - fastq@1.19.1: dependencies: reusify: 1.1.0 @@ -14126,10 +13740,6 @@ snapshots: fflate@0.8.2: {} - file-entry-cache@10.1.4: - dependencies: - flat-cache: 6.1.18 - file-entry-cache@6.0.1: dependencies: flat-cache: 3.2.0 @@ -14213,12 +13823,6 @@ snapshots: keyv: 4.5.4 rimraf: 3.0.2 - flat-cache@6.1.18: - dependencies: - cacheable: 2.1.1 - flatted: 3.3.3 - hookified: 1.12.2 - flatted@3.3.3: {} flow-parser@0.290.0: {} @@ -14279,8 +13883,6 @@ snapshots: forwarded@0.2.0: {} - fraction.js@4.3.7: {} - fresh@0.5.2: {} from@0.1.7: {} @@ -14432,16 +14034,6 @@ snapshots: minimatch: 5.1.6 once: 1.4.0 - global-modules@2.0.0: - dependencies: - global-prefix: 3.0.0 - - global-prefix@3.0.0: - dependencies: - ini: 1.3.8 - kind-of: 6.0.3 - which: 1.3.1 - globals@13.24.0: dependencies: type-fest: 0.20.2 @@ -14462,8 +14054,6 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globjoin@0.1.4: {} - globrex@0.1.2: {} gopd@1.2.0: {} @@ -14496,16 +14086,8 @@ snapshots: harmony-reflect@1.6.2: {} - has-ansi@2.0.0: - dependencies: - ansi-regex: 2.1.1 - has-bigints@1.1.0: {} - has-flag@1.0.0: {} - - has-flag@3.0.0: {} - has-flag@4.0.0: {} has-property-descriptors@1.0.2: @@ -14547,10 +14129,6 @@ snapshots: he@1.2.0: {} - history@5.3.0: - dependencies: - '@babel/runtime': 7.28.4 - hmac-drbg@1.0.1: dependencies: hash.js: 1.1.7 @@ -14561,8 +14139,6 @@ snapshots: dependencies: react-is: 16.13.1 - hookified@1.12.2: {} - hosted-git-info@2.8.9: {} html-encoding-sniffer@4.0.0: @@ -14670,8 +14246,6 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.5: {} - image-size@0.5.5: optional: true @@ -15015,6 +14589,8 @@ snapshots: jiti@1.21.7: {} + jiti@2.6.1: {} + joi@17.13.3: dependencies: '@hapi/hoek': 9.3.0 @@ -15023,8 +14599,6 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 - js-base64@2.6.4: {} - js-cookie@3.0.5: {} js-tokens@4.0.0: {} @@ -15131,18 +14705,12 @@ snapshots: dependencies: json-buffer: 3.0.1 - keyv@5.5.3: - dependencies: - '@keyv/serialize': 1.1.1 - kind-of@6.0.3: {} kleur@3.0.3: {} klona@2.0.6: {} - known-css-properties@0.37.0: {} - language-subtag-registry@0.3.23: {} language-tags@1.0.9: @@ -15187,9 +14755,56 @@ snapshots: dependencies: immediate: 3.0.6 - lilconfig@2.0.5: {} + lightningcss-android-arm64@1.30.2: + optional: true + + lightningcss-darwin-arm64@1.30.2: + optional: true + + lightningcss-darwin-x64@1.30.2: + optional: true + + lightningcss-freebsd-x64@1.30.2: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.2: + optional: true + + lightningcss-linux-arm64-gnu@1.30.2: + optional: true + + lightningcss-linux-arm64-musl@1.30.2: + optional: true + + lightningcss-linux-x64-gnu@1.30.2: + optional: true + + lightningcss-linux-x64-musl@1.30.2: + optional: true + + lightningcss-win32-arm64-msvc@1.30.2: + optional: true + + lightningcss-win32-x64-msvc@1.30.2: + optional: true + + lightningcss@1.30.2: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.30.2 + lightningcss-darwin-arm64: 1.30.2 + lightningcss-darwin-x64: 1.30.2 + lightningcss-freebsd-x64: 1.30.2 + lightningcss-linux-arm-gnueabihf: 1.30.2 + lightningcss-linux-arm64-gnu: 1.30.2 + lightningcss-linux-arm64-musl: 1.30.2 + lightningcss-linux-x64-gnu: 1.30.2 + lightningcss-linux-x64-musl: 1.30.2 + lightningcss-win32-arm64-msvc: 1.30.2 + lightningcss-win32-x64-msvc: 1.30.2 - lilconfig@3.1.3: {} + lilconfig@2.0.5: {} lines-and-columns@1.2.4: {} @@ -15268,10 +14883,6 @@ snapshots: lodash.merge@4.6.2: {} - lodash.throttle@4.1.1: {} - - lodash.truncate@4.4.2: {} - lodash@4.17.21: {} log-symbols@4.1.0: @@ -15355,8 +14966,6 @@ snapshots: math-intrinsics@1.1.0: {} - mathml-tag-names@2.1.3: {} - md5.js@1.3.5: dependencies: hash-base: 3.0.5 @@ -15387,8 +14996,6 @@ snapshots: dependencies: map-or-similar: 1.5.0 - meow@13.2.0: {} - merge-descriptors@1.0.3: {} merge-stream@2.0.0: {} @@ -15487,12 +15094,6 @@ snapshots: ms@2.1.3: {} - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - nanoid@3.3.11: {} napi-build-utils@2.0.0: {} @@ -15621,8 +15222,6 @@ snapshots: normalize-path@3.0.0: {} - normalize-range@0.1.2: {} - npm-run-path@4.0.1: dependencies: path-key: 3.1.1 @@ -15642,11 +15241,6 @@ snapshots: dependencies: boolbase: 1.0.0 - nuka-carousel@5.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - nwsapi@2.2.22: {} nypm@0.5.4: @@ -15906,8 +15500,6 @@ snapshots: pidtree@0.6.0: {} - pify@2.3.0: {} - pify@4.0.1: {} pirates@4.0.7: {} @@ -15956,47 +15548,6 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-custom-media@8.0.2(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-custom-properties@12.1.11(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-export-custom-variables@1.0.0: - dependencies: - postcss: 6.0.23 - - postcss-import@14.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.11 - - postcss-import@15.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.11 - - postcss-js@4.1.0(postcss@8.5.6): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.5.6 - - postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.1): - dependencies: - lilconfig: 3.1.3 - optionalDependencies: - jiti: 1.21.7 - postcss: 8.5.6 - yaml: 2.8.1 - postcss-loader@4.3.0(postcss@7.0.39)(webpack@5.102.1(@swc/core@1.15.1)(esbuild@0.18.20)): dependencies: cosmiconfig: 7.1.0 @@ -16059,21 +15610,6 @@ snapshots: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 - postcss-nested@6.2.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - - postcss-prepend-imports@1.0.1: - dependencies: - postcss: 5.2.18 - - postcss-resolve-nested-selector@0.1.6: {} - - postcss-safe-parser@7.0.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 @@ -16086,19 +15622,6 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@5.2.18: - dependencies: - chalk: 1.1.3 - js-base64: 2.6.4 - source-map: 0.5.7 - supports-color: 3.2.3 - - postcss@6.0.23: - dependencies: - chalk: 2.4.2 - source-map: 0.6.1 - supports-color: 5.5.0 - postcss@7.0.39: dependencies: picocolors: 0.2.1 @@ -16239,10 +15762,6 @@ snapshots: - supports-color - utf-8-validate - qified@0.5.1: - dependencies: - hookified: 1.12.2 - qs@6.13.0: dependencies: side-channel: 1.1.0 @@ -16324,21 +15843,10 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-is: 18.1.0 - react-facebook-login@4.1.1(react@18.3.1): - dependencies: - react: 18.3.1 - react-fast-compare@2.0.4: {} react-fast-compare@3.2.2: {} - react-google-login@5.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@types/react': 18.3.26 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-input-autosize@3.0.0(react@18.3.1): dependencies: prop-types: 15.8.1 @@ -16352,14 +15860,6 @@ snapshots: react-is@18.3.1: {} - react-on-screen@2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - lodash.throttle: 4.1.1 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - shallowequal: 1.1.0 - react-player@2.16.1(react@18.3.1): dependencies: deepmerge: 4.3.1 @@ -16403,20 +15903,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.26 - react-scroll-up-button@1.6.4(react@18.3.1): - dependencies: - detect-passive-events: 1.0.5 - prop-types: 15.8.1 - react: 18.3.1 - tween-functions: 1.2.0 - - react-scroll@1.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - lodash.throttle: 4.1.1 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-select@4.3.1(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.28.4 @@ -16462,23 +15948,10 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-youtube@9.0.3(react@18.3.1): - dependencies: - fast-deep-equal: 3.1.3 - prop-types: 15.8.1 - react: 18.3.1 - youtube-player: 5.5.2 - transitivePeerDependencies: - - supports-color - react@18.3.1: dependencies: loose-envify: 1.4.0 - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - read-pkg-up@7.0.1: dependencies: find-up: 4.1.0 @@ -16853,8 +16326,6 @@ snapshots: dependencies: kind-of: 6.0.3 - shallowequal@1.1.0: {} - sharp@0.32.6: dependencies: color: 4.2.3 @@ -16934,8 +16405,6 @@ snapshots: mrmime: 2.0.1 totalist: 3.0.1 - sister@3.0.2: {} - sisteransi@1.0.5: {} slash@3.0.0: {} @@ -17138,10 +16607,6 @@ snapshots: dependencies: safe-buffer: 5.2.1 - strip-ansi@3.0.1: - dependencies: - ansi-regex: 2.1.1 - strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -17197,91 +16662,8 @@ snapshots: '@babel/core': 7.28.5 babel-plugin-macros: 3.1.0 - stylelint-config-prettier@9.0.5(stylelint@16.25.0(typescript@5.9.3)): - dependencies: - stylelint: 16.25.0(typescript@5.9.3) - - stylelint-config-recommended@15.0.0(stylelint@16.25.0(typescript@5.9.3)): - dependencies: - stylelint: 16.25.0(typescript@5.9.3) - - stylelint-config-standard@37.0.0(stylelint@16.25.0(typescript@5.9.3)): - dependencies: - stylelint: 16.25.0(typescript@5.9.3) - stylelint-config-recommended: 15.0.0(stylelint@16.25.0(typescript@5.9.3)) - - stylelint-prettier@5.0.3(prettier@3.6.2)(stylelint@16.25.0(typescript@5.9.3)): - dependencies: - prettier: 3.6.2 - prettier-linter-helpers: 1.0.0 - stylelint: 16.25.0(typescript@5.9.3) - - stylelint@16.25.0(typescript@5.9.3): - dependencies: - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 - '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) - '@dual-bundle/import-meta-resolve': 4.2.1 - balanced-match: 2.0.0 - colord: 2.9.3 - cosmiconfig: 9.0.0(typescript@5.9.3) - css-functions-list: 3.2.3 - css-tree: 3.1.0 - debug: 4.4.3 - fast-glob: 3.3.3 - fastest-levenshtein: 1.0.16 - file-entry-cache: 10.1.4 - global-modules: 2.0.0 - globby: 11.1.0 - globjoin: 0.1.4 - html-tags: 3.3.1 - ignore: 7.0.5 - imurmurhash: 0.1.4 - is-plain-object: 5.0.0 - known-css-properties: 0.37.0 - mathml-tag-names: 2.1.3 - meow: 13.2.0 - micromatch: 4.0.8 - normalize-path: 3.0.0 - picocolors: 1.1.1 - postcss: 8.5.6 - postcss-resolve-nested-selector: 0.1.6 - postcss-safe-parser: 7.0.1(postcss@8.5.6) - postcss-selector-parser: 7.1.0 - postcss-value-parser: 4.2.0 - resolve-from: 5.0.0 - string-width: 4.2.3 - supports-hyperlinks: 3.2.0 - svg-tags: 1.0.0 - table: 6.9.0 - write-file-atomic: 5.0.1 - transitivePeerDependencies: - - supports-color - - typescript - stylis@4.2.0: {} - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - commander: 4.1.1 - glob: 10.4.5 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.7 - ts-interface-checker: 0.1.13 - - supports-color@2.0.0: {} - - supports-color@3.2.3: - dependencies: - has-flag: 1.0.0 - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -17290,17 +16672,10 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-hyperlinks@3.2.0: - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - supports-preserve-symlinks-flag@1.0.0: {} svg-parser@2.0.4: {} - svg-tags@1.0.0: {} - svgo@2.8.0: dependencies: '@trysound/sax': 0.2.0 @@ -17335,43 +16710,9 @@ snapshots: dependencies: '@pkgr/core': 0.2.9 - table@6.9.0: - dependencies: - ajv: 8.17.1 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - tailwind-merge@3.3.1: {} - tailwindcss@3.4.18(yaml@2.8.1): - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.3 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.7 - lilconfig: 3.1.3 - micromatch: 4.0.8 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.1.1 - postcss: 8.5.6 - postcss-import: 15.1.0(postcss@8.5.6) - postcss-js: 4.1.0(postcss@8.5.6) - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.1) - postcss-nested: 6.2.0(postcss@8.5.6) - postcss-selector-parser: 6.1.2 - resolve: 1.22.11 - sucrase: 3.35.0 - transitivePeerDependencies: - - tsx - - yaml + tailwindcss@4.1.17: {} tapable@2.3.0: {} @@ -17477,14 +16818,6 @@ snapshots: text-table@0.2.0: {} - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - through2@2.0.5: dependencies: readable-stream: 2.3.8 @@ -17561,8 +16894,6 @@ snapshots: ts-dedent@2.2.0: {} - ts-interface-checker@0.1.13: {} - ts-pnp@1.2.0(typescript@5.9.3): optionalDependencies: typescript: 5.9.3 @@ -17606,8 +16937,6 @@ snapshots: dependencies: safe-buffer: 5.2.1 - tween-functions@1.2.0: {} - type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -17804,13 +17133,13 @@ snapshots: vary@1.1.2: {} - vite-node@3.2.4(@types/node@24.10.0)(jiti@1.21.7)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1): + vite-node@3.2.4(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.2.2(@types/node@24.10.0)(jiti@1.21.7)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -17825,25 +17154,25 @@ snapshots: - tsx - yaml - vite-plugin-magical-svg@1.8.0(vite@7.2.2(@types/node@24.10.0)(jiti@1.21.7)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1)): + vite-plugin-magical-svg@1.8.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)): dependencies: magic-string: 0.30.21 svgo: 4.0.0 - vite: 7.2.2(@types/node@24.10.0)(jiti@1.21.7)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) xml2js: 0.6.2 - vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.0)(jiti@1.21.7)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1)): + vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) optionalDependencies: - vite: 7.2.2(@types/node@24.10.0)(jiti@1.21.7)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color - typescript - vite@7.2.2(@types/node@24.10.0)(jiti@1.21.7)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1): + vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -17854,16 +17183,17 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 fsevents: 2.3.3 - jiti: 1.21.7 + jiti: 2.6.1 less: 4.4.2 + lightningcss: 1.30.2 terser: 5.44.1 yaml: 2.8.1 - vitest@3.2.4(@types/node@24.10.0)(@vitest/ui@3.2.4)(jiti@1.21.7)(jsdom@26.1.0)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1): + vitest@3.2.4(@types/node@24.10.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.2.2(@types/node@24.10.0)(jiti@1.21.7)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -17881,8 +17211,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.2.2(@types/node@24.10.0)(jiti@1.21.7)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.10.0)(jiti@1.21.7)(less@4.4.2)(terser@5.44.1)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.0 @@ -18061,10 +17391,6 @@ snapshots: gopd: 1.2.0 has-tostringtag: 1.0.2 - which@1.3.1: - dependencies: - isexe: 2.0.0 - which@2.0.2: dependencies: isexe: 2.0.0 @@ -18113,11 +17439,6 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 - write-file-atomic@5.0.1: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 4.1.0 - ws@6.2.3: dependencies: async-limiter: 1.0.1 @@ -18156,14 +17477,6 @@ snapshots: yocto-queue@1.2.1: {} - youtube-player@5.5.2: - dependencies: - debug: 2.6.9 - load-script: 1.0.0 - sister: 3.0.2 - transitivePeerDependencies: - - supports-color - yup@1.7.1: dependencies: property-expr: 2.0.6 diff --git a/postcss.config.js b/postcss.config.js index 782e376f1..e5640725a 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,17 +1,5 @@ module.exports = { plugins: { - tailwindcss: {}, - autoprefixer: {}, - 'postcss-prepend-imports': { - path: 'common/styles', - files: ['media-queries.css'], - }, - 'postcss-import': {}, - 'postcss-custom-media': {}, - 'postcss-custom-properties': { - importFrom: './common/styles/variables.css', - preserve: false, - disableDeprecationNotice: true, - }, + '@tailwindcss/postcss': {}, }, }; diff --git a/public/static/fonts/DINCondensed-Bold.ttf b/public/static/fonts/DINCondensed-Bold.ttf deleted file mode 100755 index 708c0a561..000000000 Binary files a/public/static/fonts/DINCondensed-Bold.ttf and /dev/null differ diff --git a/public/static/fonts/DINCondensed-Bold.woff b/public/static/fonts/DINCondensed-Bold.woff deleted file mode 100644 index dab296c6c..000000000 Binary files a/public/static/fonts/DINCondensed-Bold.woff and /dev/null differ diff --git a/public/static/fonts/DINCondensed-Bold.woff2 b/public/static/fonts/DINCondensed-Bold.woff2 deleted file mode 100644 index 8121c18b2..000000000 Binary files a/public/static/fonts/DINCondensed-Bold.woff2 and /dev/null differ diff --git a/public/static/images/icons/facebook_logo.svg b/public/static/images/icons/facebook_logo.svg index 2014f4532..3a00e6585 100644 --- a/public/static/images/icons/facebook_logo.svg +++ b/public/static/images/icons/facebook_logo.svg @@ -1 +1,5 @@ -Facebook Logo \ No newline at end of file + + Facebook Logo + + + diff --git a/public/static/images/icons/linkedin_logo_circle.svg b/public/static/images/icons/linkedin_logo_circle.svg index 20fe709e9..393db47ec 100644 --- a/public/static/images/icons/linkedin_logo_circle.svg +++ b/public/static/images/icons/linkedin_logo_circle.svg @@ -1 +1,5 @@ -LinkedIn Logo \ No newline at end of file + + LinkedIn Logo + + + diff --git a/scripts/README.md b/scripts/README.md deleted file mode 100644 index 2b706bed3..000000000 --- a/scripts/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Scripts - -This should probably be called `bin`, but this folder is for local development scripts only. They -will not be available for deployments as they ignored in `.vercelignore`, so don't consume the files -within via source code. diff --git a/scripts/createComponent/builders.js b/scripts/createComponent/builders.js deleted file mode 100644 index 2d27a6f0a..000000000 --- a/scripts/createComponent/builders.js +++ /dev/null @@ -1,61 +0,0 @@ -/* This file contains the functions which generate the output of each file */ -module.exports = { - // Output generated for component's definition file - buildJS: componentName => - `import { string, node } from 'prop-types'; -import {cx} from 'common/utils/cva'; -import styles from './${componentName}.module.css'; - -${componentName}.propTypes = { - children: node.isRequired, - className: string, -}; - -${componentName}.defaultProps = { - className: undefined, -}; - -export default function ${componentName}({ className, children }) { - return
                      {children}
                      -} -`, - - // Output generated for component's css file - buildCss: componentName => `.${componentName} {}`, - - // Output generated for component's story file - buildStoryJs: componentName => - ` -import ${componentName} from '../${componentName}'; - -export default { - component: ${componentName}, - title: '${componentName}', -}; - -const Template = (args) => <${componentName} {...args} />; - -export const Default = Template.bind({}); - -/** Default ${componentName} supplied with only required args */ -Default.args = { - children: '', -}; - -`, - - // Output generated for component's test file - buildTestJs: componentName => - `import { render } from '@testing-library/react'; - -import ${componentName} from '../${componentName}'; - -describe('${componentName}', () => { - it('should render', () => { - const { container } = render(<${componentName} />); - - expect(container.firstChild).not.toBeNull(); - }) -}); -`, -}; diff --git a/scripts/createComponent/createComponent.js b/scripts/createComponent/createComponent.js deleted file mode 100644 index fba75bffc..000000000 --- a/scripts/createComponent/createComponent.js +++ /dev/null @@ -1,176 +0,0 @@ -const path = require('path'); -const fs = require('fs'); -const { buildJS, buildCss, buildStoryJs, buildTestJs } = require('./builders'); - -const replacementString = 'Component'; -const componentPath = 'components/'; - -const componentStruct = { - root: { - components: { - Component: [ - { - __stories__: [ - { - 'Component.stories.js': buildStoryJs, - }, - ], - }, - { - __tests__: [ - { - 'Component.test.js': buildTestJs, - }, - ], - }, - { - 'Component.module.css': buildCss, - }, - { - 'Component.js': buildJS, - }, - ], - }, - }, -}; - -/* - * Finds the project main directory with the `package.json` file - * 1. Start at the directory you run the script - * 2. Continually `cd ..` to see if `package.json` is there - * - * Question: do we need to check for skipping the folder? - * --> package.json has to be found for a yarn script to run - * --> if no package.json then we'll get some other error prior to running script - */ -const findRoot = () => { - let thisPath = path.resolve(__dirname); - while (!fs.existsSync(path.join(thisPath, 'package.json'))) { - thisPath = path.join(thisPath, '..'); - } - return thisPath; -}; - -const doesComponentExist = (componentName, root) => { - const newPath = path.join(root, componentPath, componentName); - if (fs.existsSync(newPath)) { - console.log(`Component "${componentName}" Already Exists`); // eslint-disable-line no-console - return true; - } - return false; -}; - -/* - * Split path into segments, and incrementally mkdir until we have built the full path - * -> this could be done with `mkdir -p` if we had some other cross platform node package. - */ - -const mkdirSyncRecursive = directory => { - // adjust windows path delim to match bash. - const newPath = directory.replace(/\\{1,2}/g, '/').split('/'); - - newPath.reduce((accumPath, nextPath) => { - const incrementalPath = `${accumPath}/${nextPath}`; - - if (incrementalPath.length > 0 && !fs.existsSync(incrementalPath)) { - fs.mkdirSync(incrementalPath); - } - - return incrementalPath; - }); -}; - -// Only call recursive create if the folder doesn't yet exist -const doesDirectoryExist = directoryName => { - if (fs.existsSync(directoryName)) { - return true; - } - - return false; -}; - -const writeFileData = (fileData, fileName) => { - console.log(`Creating file: ${fileName}`); // eslint-disable-line no-console - - const directoryName = path.dirname(fileName); - - if (!doesDirectoryExist(directoryName)) { - mkdirSyncRecursive(directoryName); - } - - fs.writeFileSync(fileName, fileData); -}; - -// Changes path when the configuration tree needs to be modified to respect user input. -const conditionallyAdjustPath = (key, currentPath, componentName) => { - let pathBase; - if (key.indexOf(replacementString) === 0) { - pathBase = key.replace(replacementString, componentName); - } else { - pathBase = key; - } - - // Adjusted path - return path.join(currentPath, pathBase); -}; - -// Interacts with the configuration tree based on what it finds in each object. -const recurseStructure = (subObject, currentPath, componentName) => { - let newPath; - - /* eslint-disable no-restricted-syntax */ - /* eslint-disable no-unused-vars */ - for (const key in subObject) { - if (subObject[key]) { - newPath = conditionallyAdjustPath(key, currentPath, componentName); - - // Recursive base case - write file data when a function is found - if (typeof subObject[key] === 'function') { - const fileData = subObject[key](componentName); - writeFileData(fileData, newPath, key); - - return; - } - - // Recurse over arrays or objects within file/folder structure - if (Array.isArray(subObject[key])) { - /* eslint-disable no-loop-func */ - subObject[key].forEach(arrayItem => { - recurseStructure(arrayItem, newPath, componentName); - }); - /* eslint-enable no-loop-func */ - - return; - } - - recurseStructure(subObject[key], newPath, componentName); - } - } - /* eslint-enable no-restricted-syntax */ - /* eslint-enable no-unused-vars */ -}; - -// Function runner -(() => { - if (process.argv.length < 3) { - // eslint-disable-next-line no-console - console.error( - 'Error: You must provide at least one component name to script.', - 'Example: "yarn create-component componentName"', - ); - - return; - } - - const mainTree = componentStruct.root; - const root = findRoot(); - - process.argv - .slice(2) - .filter(componentName => { - return doesComponentExist(componentName, root) === false; - }) - .map(componentName => { - return recurseStructure(mainTree, root, componentName); - }); -})(); diff --git a/scripts/createPage/builders.js b/scripts/createPage/builders.js deleted file mode 100644 index 7d1835f9c..000000000 --- a/scripts/createPage/builders.js +++ /dev/null @@ -1,37 +0,0 @@ -const camelCase = require('lodash/camelCase'); -const upperFirst = require('lodash/upperFirst'); - -// example LikeThisCase -const pascalCase = someString => upperFirst(camelCase(someString)); - -const builder = { - buildJS: pageTitle => { - const componentName = pascalCase(pageTitle); - - return `import Head from 'components/head'; - import HeroBanner from 'components/HeroBanner/HeroBanner'; - // customize styles by creating and importing a stylesheet in the ~/styles folder - - const pageTitle = '${pageTitle}'; - - function ${componentName}() { - return ( - <> - - - - {/* Don't forget to define the imageSource prop in the HeroBanner Component */} - {/* Call-to-action goes here */} - - - {/* Rest of page content goes in here */} - - ); - } - - export default ${componentName}; - `; - }, -}; - -module.exports = builder; diff --git a/scripts/createPage/createPage.js b/scripts/createPage/createPage.js deleted file mode 100644 index b15040c5b..000000000 --- a/scripts/createPage/createPage.js +++ /dev/null @@ -1,81 +0,0 @@ -/* eslint-disable no-console */ -const path = require('path'); -const fs = require('fs'); -const { capitalizeFirstLetter } = require('../../common/utils/string-utils'); -const { buildJS } = require('./builders'); - -const pagePath = 'pages/'; - -const findRoot = () => { - let thisPath = path.resolve(__dirname); - while (!fs.existsSync(path.join(thisPath, 'package.json'))) { - thisPath = path.join(thisPath, '..'); - } - - return thisPath; -}; - -const doesPageExist = (pageName, root) => { - const newPath = path.join(root, pagePath, pageName); - - if (fs.existsSync(`${newPath}.js`)) { - console.log(`Page "${pageName}" Already Exists`); - return true; - } - - return false; -}; - -const createPageTitle = pageName => - // Example 1: `some_page_name` becomes `Some Page Name` - // Example 2: `page` becomes `Page` - // Example 3: `_some_page_name` becomes `Some Page Name` - pageName - .split('_') - .map(word => capitalizeFirstLetter(word)) - .join(' ') - .trim(); - -const createPage = (root, pageName) => { - // test to make sure file meets requirements - const isNotValidPageName = pageName.includes('-') || pageName.includes(' '); - - if (isNotValidPageName) { - console.log(`Page: ${pageName} wasn't created because of a dash or white space in name.`); - return false; - } - - const pageAbsolutePath = `${path.join(root, pageName)}.js`; - const pageTitle = createPageTitle(pageName); - const pageData = buildJS(pageTitle); - - console.log(`Creating file: ${pageName}`); - - // create file - try { - fs.writeFileSync(pageAbsolutePath, pageData); - } catch (error) { - console.log(error); - } - - console.log(`File created: ${pageAbsolutePath}`); - return true; -}; - -(() => { - if (process.argv.length < 3) { - console.error( - 'Error: You must provide at least one page name to script.', - 'Example: "yarn create-page pageName"', - ); - - return; - } - - const root = findRoot(); - - process.argv - .slice(2) - .filter(pageName => doesPageExist(pageName, root) === false) - .map(pageName => createPage(path.join(root, pagePath), pageName)); -})(); diff --git a/styles/about.module.css b/styles/about.module.css deleted file mode 100644 index 5825fefd1..000000000 --- a/styles/about.module.css +++ /dev/null @@ -1,11 +0,0 @@ -.About .hero { - background-position: top center; -} - -.About .imageCard h6 { - font-size: 1.125rem; -} - -.About .imageCard p { - font-size: 85%; -} diff --git a/styles/challenge.module.css b/styles/challenge.module.css deleted file mode 100644 index d3c1488bf..000000000 --- a/styles/challenge.module.css +++ /dev/null @@ -1,36 +0,0 @@ -/* On this component, all non-classed images are inline */ -.Challenge .instructionList img { - max-width: 100%; - height: auto; - padding: 0 10px; -} - -.Challenge .instructionList { - line-height: 1.5; - padding: 0 0 0 5px; - margin: 0; -} - -.Challenge .instructionList li { - padding: 0 0 25px 0; -} - -.Challenge .blockImage { - padding: 0 !important; -} - -.Challenge .centerText { - text-align: center; -} - -.Challenge .challengerListColumn { - padding: 0; - align-self: flex-start; - flex-basis: 225px; - list-style-position: inside; -} - -.Challenge .challengerListContainer div { - width: 85vw; - margin: 0; -} diff --git a/styles/chapter_leader.module.css b/styles/chapter_leader.module.css deleted file mode 100644 index de73f1652..000000000 --- a/styles/chapter_leader.module.css +++ /dev/null @@ -1,4 +0,0 @@ -.ChapterLeader .fullWidth { - width: 100%; - max-width: 100%; -} diff --git a/styles/contact.module.css b/styles/contact.module.css deleted file mode 100644 index 258a1441c..000000000 --- a/styles/contact.module.css +++ /dev/null @@ -1,23 +0,0 @@ -.Contact .verticalSpacing { - margin: 1rem 0; -} - -.Contact .contactHero a { - transition: color 0.2s linear; -} - -.Contact .contactHero a:focus-visible, -.Contact .contactHero a:hover { - text-shadow: none; - color: var(--primary); -} - -.Contact .contactMethod { - margin: 0 auto 2rem; - max-width: var(--typicalMaxWidth); - font-style: normal; -} - -.Contact .forceWidth { - width: 100%; -} diff --git a/styles/get_involved.module.css b/styles/get_involved.module.css deleted file mode 100644 index f06ab89d3..000000000 --- a/styles/get_involved.module.css +++ /dev/null @@ -1,61 +0,0 @@ -:global(#__next) .GetInvolved .ctaContainer { - display: flex; - width: 100%; - max-width: var(--typicalMaxWidth); - justify-content: space-evenly; - flex-wrap: wrap; - column-gap: 0.5rem; -} - -:global(#__next) .GetInvolved .ctaContainer > * { - margin-top: 1rem; -} - -:global(#__next) .GetInvolved .topMargin { - margin-top: 1rem; -} - -:global(#__next) .GetInvolved .extraTopMargin { - margin-top: 2rem; -} - -:global(#__next) .GetInvolved .image { - margin: 2rem; - max-width: 500px; -} - -:global(#__next) .GetInvolved .cta { - display: flex; - flex-direction: column; -} - -:global(#__next) .GetInvolved .centeredText { - text-align: center; -} - -:global(#__next) .GetInvolved .image img { - max-width: 100%; - opacity: 0; - transition: opacity 1s; -} - -:global(#__next) .GetInvolved .showImage img { - opacity: 1; -} - -:global(#__next) .GetInvolved .badgeGroupings { - display: flex; - flex-wrap: wrap; - justify-content: center; - margin-top: -1rem; -} - -:global(#__next) .GetInvolved .badge { - margin: 1rem 4rem; -} - -@media screen and (--medium-viewport) { - :global(#__next) .GetInvolved .heroBannerMobilePositioning { - background-position: 60% center; - } -} diff --git a/styles/history.module.css b/styles/history.module.css deleted file mode 100644 index ec6528f6d..000000000 --- a/styles/history.module.css +++ /dev/null @@ -1,12 +0,0 @@ -.History .hero { - background-position: right center; -} - -.History .quote { - font-size: 1.5rem; -} - -.History .author { - font-size: 1.75rem; - float: right; -} diff --git a/styles/kc.module.css b/styles/kc.module.css deleted file mode 100644 index 7dd8b4b3e..000000000 --- a/styles/kc.module.css +++ /dev/null @@ -1,41 +0,0 @@ -.KC .hero { - min-height: 0; - padding-top: 6rem; -} - -.KC .info { - text-align: center; - width: 100%; -} - -.KC .podcastThumbnailList { - display: grid; - grid-template-columns: 1fr 1fr; - grid-template-rows: 1fr; - gap: 3rem; - list-style: none; - padding: 0; - margin: 0; -} - -@media screen and (--small-viewport) { - .KC .podcastThumbnailList { - grid-template-columns: 1fr; - } -} - -.KC .podcastThumbnailListItem { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - text-align: center; -} - -.KC .podcastThumbnailListItem a { - text-decoration: none; -} - -.KC .podcastThumbnailListItem a:hover { - text-decoration: underline; -} diff --git a/styles/password_reset.module.css b/styles/password_reset.module.css deleted file mode 100644 index f85e8d747..000000000 --- a/styles/password_reset.module.css +++ /dev/null @@ -1,3 +0,0 @@ -.PasswordReset .centerAlign { - text-align: center; -} diff --git a/styles/podcast.module.css b/styles/podcast.module.css deleted file mode 100644 index d08424ebf..000000000 --- a/styles/podcast.module.css +++ /dev/null @@ -1,39 +0,0 @@ -.Podcast .hero { - min-height: 0; - padding-top: 7rem; - margin-bottom: -4rem; -} - -.Podcast .podcastCards { - display: flex; - justify-content: center; - align-items: flex-start; - flex-wrap: wrap; -} - -.Podcast .podcastCard { - align-items: center; - display: flex; - flex-flow: column; - justify-content: center; - overflow: hidden; /* prevent devs from bloating content */ - margin: 1.5rem; - width: 500px; -} - -.Podcast .podcastCard p { - overflow-y: scroll; - height: 250px; -} - -@media screen and (--small-viewport) { - .Podcast .podcastCard { - width: 100%; - } -} - -.Podcast .img { - max-height: 200px; - max-width: 100%; - object-fit: cover; -} diff --git a/styles/policy.module.css b/styles/policy.module.css deleted file mode 100644 index 4f34ea1c2..000000000 --- a/styles/policy.module.css +++ /dev/null @@ -1,52 +0,0 @@ -.Policy .statisticContainer { - display: flex; - flex-direction: column; - font-family: var(--primaryFontFamily), sans-serif; - margin-top: 3em; -} - -.Policy .statistic { - background-color: rgba(0, 5, 30, 0.7); - display: flex; - margin: 0; - padding: 0.5rem; - max-width: 500px; -} - -.Policy .statistic + .statistic { - margin-top: 1rem; -} - -.Policy .shortenedStatistic { - max-width: 370px; -} - -.Policy .statisticNumber { - display: flex; - align-items: center; - flex-grow: 1; - flex-shrink: 0; - color: var(--primary); - font-size: 2.5rem; - line-height: 2.5rem; - padding: 0 1rem 0 0.5rem; -} - -@media screen and (--large-viewport) { - .Policy .statisticNumber { - font-size: 2rem; - line-height: 2rem; - } -} - -@media screen and (--medium-viewport) { - .Policy .statisticNumber { - flex-grow: 0; - } -} - -.Policy .statisticDescription { - color: var(--white); - font-size: 1.5rem; - line-height: 1.7rem; -} diff --git a/styles/press.module.css b/styles/press.module.css deleted file mode 100644 index 18403e113..000000000 --- a/styles/press.module.css +++ /dev/null @@ -1,57 +0,0 @@ -.Press .row { - display: flex; - flex-wrap: wrap; - justify-content: center; -} - -.Press .column { - flex: 33%; -} - -@media screen and (--large-viewport) { - .Press .column { - flex: 50%; - } -} - -@media screen and (--medium-viewport) { - .Press .column { - flex: 100%; - } -} - -.Press .textGrouping { - margin: 1rem; -} - -.Press .logos { - padding-top: 15px; - display: flex; - flex-flow: row wrap; - justify-content: space-around; - align-items: center; -} - -.Press .logos > .imgBox { - padding: 25px; - height: auto; - width: 45%; - max-width: 560px; -} - -.Press .logos a { - color: var(--primary); - text-decoration: none; -} - -@media screen and (--extra-large-viewport) { - .Press .logos > .imgBox { - width: 350px; - } -} - -@media screen and (--extra-small-viewport) { - .Press .logos > .imgBox { - width: 300px; - } -} diff --git a/styles/profile.module.css b/styles/profile.module.css deleted file mode 100644 index 4535bfd1e..000000000 --- a/styles/profile.module.css +++ /dev/null @@ -1,12 +0,0 @@ -.Profile .actionItems { - display: flex; - flex-direction: column; - justify-content: center; - width: 100%; - margin: auto; - text-align: center; -} - -.Profile .actionItems > a { - margin: 1rem; -} diff --git a/styles/project_rebuild.module.css b/styles/project_rebuild.module.css deleted file mode 100644 index 9528a6384..000000000 --- a/styles/project_rebuild.module.css +++ /dev/null @@ -1,45 +0,0 @@ -.logosSection { - margin-bottom: 0; -} - -.logos { - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: center; - gap: 4rem; - margin-bottom: -2rem; -} - -@media screen and (--large-viewport) { - .logos { - gap: 3rem; - } - - .logos > *:nth-child(3) { - order: 3; - } - - .logos > *:nth-child(2) { - order: 1; - } - - .logos > *:nth-child(1) { - order: 2; - } -} - -.bold { - font-weight: bold; -} - -.donateLinkContainer { - display: flex; - width: 300px; -} - -.donateLinkButtonContainer { - width: 100%; - margin: 2rem auto 0; - text-align: center; -} diff --git a/styles/services.module.css b/styles/services.module.css deleted file mode 100644 index 574ee25c1..000000000 --- a/styles/services.module.css +++ /dev/null @@ -1,19 +0,0 @@ -.Services .centeredText { - text-align: center; -} - -.Services .topMargin { - margin-top: 2.5rem; -} - -.Services .badgeGroupings { - display: flex; - flex-wrap: wrap; - justify-content: center; - margin-top: -1rem; -} - -:global(#__next) .Services .badgeGroupings .badge { - fill: var(--secondary); - margin: 1rem 4rem; -} diff --git a/styles/slack_guide.module.css b/styles/slack_guide.module.css deleted file mode 100644 index 997cf809a..000000000 --- a/styles/slack_guide.module.css +++ /dev/null @@ -1,27 +0,0 @@ -.FAQ .FAQAccordion { - background-color: rgba(0, 0, 0, 0); - border-radius: 5px; - border: 1px solid #c5c5c5; - box-shadow: none; - color: var(--white); - display: block; - padding: 1.125rem; - width: 100%; -} - -.FAQ .FAQAccordion > button > svg { - fill: currentcolor; - top: 0.825rem; -} - -@media screen and (--small-viewport) { - .slackVideo { - height: 100%; - width: 100%; - } - - .exploreChannels, - .joinChannels { - width: 100%; - } -} diff --git a/styles/team.module.css b/styles/team.module.css deleted file mode 100644 index 45fb36f69..000000000 --- a/styles/team.module.css +++ /dev/null @@ -1,23 +0,0 @@ -.Team .hero { - background-position: center 30%; -} - -.Team .teamMembers { - display: flex; - align-items: flex-start; - justify-content: center; - flex-wrap: wrap; - width: 100%; -} - -.Team .teamMembers img { - object-fit: cover; -} - -.Team .foundingMembers { - padding: 2rem 0 0 0; -} - -.textAlignCenter { - text-align: center; -} diff --git a/tailwind.config.ts b/tailwind.config.ts deleted file mode 100644 index 23559814f..000000000 --- a/tailwind.config.ts +++ /dev/null @@ -1,72 +0,0 @@ -import plugin from 'tailwindcss/plugin'; -import type { Config } from 'tailwindcss'; -import type { PluginUtils } from 'tailwindcss/types/config'; - -const hslWithOpacity: PluginUtils['hsl'] = (value: string) => { - return ({ opacityValue }): string => { - // when using bare tw class name like `text-success` we add 0.6 opacity - if (opacityValue?.toString()?.includes('tw')) return `hsl(${value} / 0.6)`; - return `hsl(${value} / ${opacityValue})`; - }; -}; - -export default { - content: [ - './app/**/*.{js,ts,jsx,tsx,mdx}', - './pages/**/*.{js,ts,jsx,tsx,mdx}', - './components/**/*.{js,ts,jsx,tsx,mdx}', - - // Or if using `src` directory: - './src/**/*.{js,ts,jsx,tsx,mdx}', - ], - theme: { - extend: { - colors: { - white: 'rgb(var(--white-rgb) / )', - primary: 'rgb(var(--primary-rgb) / )', - secondary: 'rgb(var(--secondary-rgb)/ )', - 'burnt-orange': 'hsl(var(--burnt-orange-hsl) / )', - 'theme-gray-800': 'rgb(var(--gray-rgb) / )', - error: hslWithOpacity('var(--error-hsl)') as unknown as string, - 'error-deep': 'hsl(var(--error-deep-hsl) / )', - success: hslWithOpacity('var(--success-hsl)') as unknown as string, - 'success-deep': 'hsl(var(--success-deep-hsl) / )', - warning: hslWithOpacity('var(--warning-hsl)') as unknown as string, - 'warning-deep': 'hsl(var(--warning-deep-hsl) / )', - }, - maxWidth: { - girderWidth: '700px', - 'prose-sm': '50ch', - }, - fontFamily: { - 'din-condensed': '"DIN Condensed Bold"', - 'encode-sans': '"Encode Sans"', - }, - boxShadow: { - xs: '0 0 1px 1px var(--tw-shadow-color)', - }, - boxShadowColor: { - // tw has shadow-primary bug with var(--primary-rgb) so putting fix here for now - primary: 'rgb(62 214 240 / )', - secondary: 'rgb(37 46 62 / )', - 'theme-gray-800': 'rgb(226 226 266 / )', - white: 'rgb(247 247 247 / )', - success: hslWithOpacity('132 35% 88%') as unknown as string, - 'success-deep': 'hsl(132 60% 23% / )', - error: hslWithOpacity('355 70% 91%') as unknown as string, - 'error-deep': 'hsl(355 63% 34% / )', - warning: hslWithOpacity('46 100% 90%') as unknown as string, - 'warning-deep': 'hsl(39 80% 31% / )', - }, - }, - }, - plugins: [ - plugin(({ matchUtilities, theme }) => { - matchUtilities( - { 'text-shadow': value => ({ textShadow: value }) }, - { values: theme('textShadow') }, - ); - }), - ], - important: '#__next', -} satisfies Config; diff --git a/types/index.d.ts b/types/index.d.ts index 9b3c868b8..248824c5a 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -1,3 +1 @@ -declare module 'react-scroll-up-button'; declare module 'faker'; -declare module 'react-scroll';