diff --git a/.changeset/gentle-wombats-joke.md b/.changeset/gentle-wombats-joke.md
new file mode 100644
index 0000000000..a845151cc8
--- /dev/null
+++ b/.changeset/gentle-wombats-joke.md
@@ -0,0 +1,2 @@
+---
+---
diff --git a/.changeset/silver-years-push.md b/.changeset/silver-years-push.md
new file mode 100644
index 0000000000..433a1edfd3
--- /dev/null
+++ b/.changeset/silver-years-push.md
@@ -0,0 +1,5 @@
+---
+"@khanacademy/wonder-blocks-link": major
+---
+
+Switches Link to use CSS modules
diff --git a/.changeset/soft-queens-brake.md b/.changeset/soft-queens-brake.md
new file mode 100644
index 0000000000..a845151cc8
--- /dev/null
+++ b/.changeset/soft-queens-brake.md
@@ -0,0 +1,2 @@
+---
+---
diff --git a/.changeset/yellow-bats-deny.md b/.changeset/yellow-bats-deny.md
new file mode 100644
index 0000000000..c4dc3a1da3
--- /dev/null
+++ b/.changeset/yellow-bats-deny.md
@@ -0,0 +1,6 @@
+---
+"@khanacademy/wonder-blocks-core": major
+"@khanacademy/wb-dev-build-settings": major
+---
+
+Use CSS modules
diff --git a/.github/workflows/node-ci-lint.yml b/.github/workflows/node-ci-lint.yml
index ad3a9f0df9..a766dbb766 100644
--- a/.github/workflows/node-ci-lint.yml
+++ b/.github/workflows/node-ci-lint.yml
@@ -72,5 +72,8 @@ jobs:
- name: Build .d.ts types
run: pnpm build:types
+ - name: Stylelint
+ run: pnpm lint:style
+
- name: Check package.json files
run: ./utils/publish/pre-publish-check-ci.ts
diff --git a/.stylelintignore b/.stylelintignore
new file mode 100644
index 0000000000..a920718427
--- /dev/null
+++ b/.stylelintignore
@@ -0,0 +1 @@
+packages/**/dist/**/*.css
\ No newline at end of file
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index 655e371669..3a2769f845 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -14,6 +14,7 @@
"eamodio.gitlens",
// Jest
- "orta.vscode-jest"
+ "orta.vscode-jest",
+ "vunguyentuan.vscode-css-variables"
]
}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 8a9c2bc5c6..611c13590a 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -30,5 +30,10 @@
"typescript.inlayHints.propertyDeclarationTypes.enabled": true,
"typescript.inlayHints.variableTypes.enabled": true,
- "jest.jestCommandLine": "pnpm jest"
+ "jest.jestCommandLine": "pnpm jest",
+
+ "cssVariables.lookupFiles": [
+ "./packages/wonder-blocks-tokens/dist/css/index.css"
+ ]
+
}
diff --git a/__docs__/wonder-blocks-core/view.stories.module.css b/__docs__/wonder-blocks-core/view.stories.module.css
new file mode 100644
index 0000000000..068b093e33
--- /dev/null
+++ b/__docs__/wonder-blocks-core/view.stories.module.css
@@ -0,0 +1,6 @@
+.cssModulesExample {
+ background: var(--wb-semanticColor-core-background-instructive-subtle);
+ border: 1px solid var(--wb-semanticColor-core-border-instructive-default);
+ padding: var(--wb-spacing-xxxSmall-4);
+ color: var(--wb-semanticColor-core-foreground-instructive-strong);
+}
\ No newline at end of file
diff --git a/__docs__/wonder-blocks-core/view.stories.tsx b/__docs__/wonder-blocks-core/view.stories.tsx
index 42f4eca37a..5995e86977 100644
--- a/__docs__/wonder-blocks-core/view.stories.tsx
+++ b/__docs__/wonder-blocks-core/view.stories.tsx
@@ -14,6 +14,8 @@ import packageConfig from "../../packages/wonder-blocks-core/package.json";
import ComponentInfo from "../components/component-info";
import viewArgTypes from "./view.argtypes";
+import newStyles from "./view.stories.module.css";
+
export default {
title: "Packages / Core / View",
component: View,
@@ -72,6 +74,29 @@ InlineStyles.parameters = {
},
};
+/**
+ * Styles can also be applied using CSS modules.
+ */
+export const CssModules: StoryComponentType = {
+ render: () => (
+
+ Hello, world!
+
+ 1. The style prop can accept a (nested) array of Aphrodite
+ styles and CSS modules. Note that in this case, Aphrodite styles
+ are applied after CSS modules due to the order of the styles
+ that are being injected in the document.
+
+
+ 2. In this case, only CSS modules are applied.
+
+
+ ),
+};
+
export const OtherProps: StoryComponentType = {
name: "Using other props",
render: () => (
diff --git a/__docs__/wonder-blocks-typography/styles.css b/__docs__/wonder-blocks-typography/styles.css
index 2cfa371951..d73025390a 100644
--- a/__docs__/wonder-blocks-typography/styles.css
+++ b/__docs__/wonder-blocks-typography/styles.css
@@ -1,5 +1,6 @@
.custom-style {
border: 1px solid #000;
+
/* NOTE: The color style is not applied to the text because the styles
defined via Aphrodite take more precedence */
color: red!important;
diff --git a/build-settings/rollup.config.mjs b/build-settings/rollup.config.mjs
index bf625dcc1d..e156d60e39 100644
--- a/build-settings/rollup.config.mjs
+++ b/build-settings/rollup.config.mjs
@@ -5,6 +5,7 @@ import path from "path";
import {nodeExternals} from "rollup-plugin-node-externals";
import swc from "@rollup/plugin-swc";
import resolve from "@rollup/plugin-node-resolve";
+import postcss from "rollup-plugin-postcss";
const createConfig = (pkgName) => {
const packageJsonPath = path.join("packages", pkgName, "package.json");
@@ -28,6 +29,15 @@ const createConfig = (pkgName) => {
],
input: `packages/${pkgName}/src/index.ts`,
plugins: [
+ postcss({
+ modules: {
+ generateScopedName: "[hash:base64:5]",
+ getJSON() {},
+ },
+ extract: true,
+ minimize: true,
+ sourceMap: true,
+ }),
swc({
swc: {
swcrc: true,
diff --git a/config/jest/test.config.js b/config/jest/test.config.js
index f60ed6a270..575d08f98c 100644
--- a/config/jest/test.config.js
+++ b/config/jest/test.config.js
@@ -27,6 +27,7 @@ module.exports = {
// Compile .svg files using a custom transformer that returns the
// basename of the file being transformed.
"^.+.svg$": "/config/jest/svg.transform.js",
+ "\\.css$": "/config/jest/svg.transform.js",
},
// Allow transforming files imported from @phosphor-icons/core.
// This is required by the .svg transform above.
diff --git a/package.json b/package.json
index 1539d95bd1..e4ffadc383 100644
--- a/package.json
+++ b/package.json
@@ -25,6 +25,7 @@
"lint:watch": "esw --watch --config ./eslint/eslintrc packages",
"lint": "pnpm lint:ci .",
"lint:ci": "eslint --ext .ts --ext .js --ext .tsx --ext .jsx",
+ "lint:style": "stylelint \"packages/**/*.css\" \"__docs__/**/*.css\"",
"publish:check": "pnpm run lint:pkg-json && ./utils/publish/pre-publish-check-ci.ts",
"publish:ci": "pnpm run publish:check && git diff --stat --exit-code HEAD && pnpm build && pnpm build:types && pnpm changeset publish",
"start": "pnpm start:storybook",
@@ -36,6 +37,7 @@
"typecheck": "tsc",
"typewatch": "tsc --noEmit --watch --incremental",
"add:devdepbysha": "bash -c 'pnpm add -W --dev \"git+https://git@github.com/Khan/$0.git#$1\"'"
+
},
"author": "",
"license": "MIT",
@@ -46,8 +48,8 @@
"@khanacademy/eslint-plugin": "^3.1.1",
"@khanacademy/wonder-blocks-accordion": "workspace:*",
"@khanacademy/wonder-blocks-announcer": "workspace:*",
- "@khanacademy/wonder-blocks-banner": "workspace:*",
"@khanacademy/wonder-blocks-badge": "workspace:*",
+ "@khanacademy/wonder-blocks-banner": "workspace:*",
"@khanacademy/wonder-blocks-birthday-picker": "workspace:*",
"@khanacademy/wonder-blocks-breadcrumbs": "workspace:*",
"@khanacademy/wonder-blocks-button": "workspace:*",
@@ -132,13 +134,18 @@
"jscodeshift": "catalog:",
"npm-package-json-lint": "^8.0.0",
"playwright": "^1.50.1",
+ "postcss": "^8.5.6",
"prettier": "^3.4.2",
"react-refresh": "^0.16.0",
"remark-gfm": "^4.0.0",
"rollup": "^2.79.2",
"rollup-plugin-node-externals": "^8.0.0",
+ "rollup-plugin-postcss": "^4.0.2",
"storybook": "catalog:",
"storybook-addon-pseudo-states": "^9.1.8",
+ "stylelint": "^16.25.0",
+ "stylelint-config-standard": "^39.0.0",
+ "stylelint-value-no-unknown-custom-properties": "^6.0.1",
"swc_mut_cjs_exports": "^10.7.0",
"turbo": "^2.5.3",
"typescript": "5.7.3",
diff --git a/packages/wonder-blocks-cell/src/components/internal/cell-core.tsx b/packages/wonder-blocks-cell/src/components/internal/cell-core.tsx
index abf7e12aa7..05aa6f8016 100644
--- a/packages/wonder-blocks-cell/src/components/internal/cell-core.tsx
+++ b/packages/wonder-blocks-cell/src/components/internal/cell-core.tsx
@@ -39,7 +39,7 @@ const LeftAccessory = ({
styles.accessory,
styles.accessoryLeft,
disabled && styles.accessoryDisabled,
- {...style},
+ style,
]}
>
{leftAccessory}
@@ -75,7 +75,7 @@ const RightAccessory = ({
styles.accessory,
styles.accessoryRight,
disabled && styles.accessoryDisabled,
- {...style},
+ style,
active && styles.accessoryActive,
]}
>
diff --git a/packages/wonder-blocks-core/src/components/view.module.css b/packages/wonder-blocks-core/src/components/view.module.css
new file mode 100644
index 0000000000..a746bdabfa
--- /dev/null
+++ b/packages/wonder-blocks-core/src/components/view.module.css
@@ -0,0 +1,17 @@
+/* https://github.com/facebook/css-layout#default-values */
+.default {
+ align-items: stretch;
+ border-width: 0;
+ border-style: solid;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ margin: 0;
+ padding: 0;
+ position: relative;
+ z-index: 0;
+
+ /* fix flexbox bugs */
+ min-height: 0;
+ min-width: 0;
+}
\ No newline at end of file
diff --git a/packages/wonder-blocks-core/src/components/view.tsx b/packages/wonder-blocks-core/src/components/view.tsx
index 013a51bfd8..595d8312dc 100644
--- a/packages/wonder-blocks-core/src/components/view.tsx
+++ b/packages/wonder-blocks-core/src/components/view.tsx
@@ -1,30 +1,11 @@
// WARNING: If you modify this file you must update view.js.flow.
import * as React from "react";
-import {StyleSheet} from "aphrodite";
import {useMemo} from "react";
import addStyle from "../util/add-style";
import type {TextViewSharedProps} from "../util/types";
-
-const styles = StyleSheet.create({
- // https://github.com/facebook/css-layout#default-values
- default: {
- alignItems: "stretch",
- borderWidth: 0,
- borderStyle: "solid",
- boxSizing: "border-box",
- display: "flex",
- flexDirection: "column",
- margin: 0,
- padding: 0,
- position: "relative",
- zIndex: 0,
- // fix flexbox bugs
- minHeight: 0,
- minWidth: 0,
- },
-});
+import styles from "./view.module.css";
type Props = TextViewSharedProps & {
/**
@@ -42,7 +23,7 @@ type Props = TextViewSharedProps & {
* manners:
*
* - An inline style object
- * - An `aphrodite` StyleSheet style
+ * - CSS module classes
* - An array combining the above
*
* `View` sets the following defaults:
diff --git a/packages/wonder-blocks-core/src/util/add-style.tsx b/packages/wonder-blocks-core/src/util/add-style.tsx
index a5015cec6a..2e0e8309ea 100644
--- a/packages/wonder-blocks-core/src/util/add-style.tsx
+++ b/packages/wonder-blocks-core/src/util/add-style.tsx
@@ -37,19 +37,38 @@ export default function addStyle<
const reset =
typeof Component === "string" ? overrides[Component] : null;
- const {className: aphroditeClassName, style: inlineStyles} =
- processStyleList([reset, defaultStyle, style]);
+ // Check if defaultStyle is a string (CSS module class) or StyleType
+ if (typeof defaultStyle === "string") {
+ // CSS module case
+ const {className: aphroditeClassName, style: inlineStyles} =
+ processStyleList([reset, style]);
- return (
-
- );
+ return (
+
+ );
+ } else {
+ // Aphrodite case (legacy)
+ const {className: aphroditeClassName, style: inlineStyles} =
+ processStyleList([reset, defaultStyle, style]);
+
+ return (
+
+ );
+ }
});
}
diff --git a/packages/wonder-blocks-core/src/util/types.ts b/packages/wonder-blocks-core/src/util/types.ts
index fd4344111d..852a7b0a52 100644
--- a/packages/wonder-blocks-core/src/util/types.ts
+++ b/packages/wonder-blocks-core/src/util/types.ts
@@ -8,8 +8,9 @@ type NestedArray = ReadonlyArray>;
type Falsy = false | 0 | null | undefined;
export type StyleType =
| CSSProperties
+ | string
| Falsy
- | NestedArray;
+ | NestedArray;
export type AriaProps = Readonly &
Readonly<{
diff --git a/packages/wonder-blocks-core/src/util/util.ts b/packages/wonder-blocks-core/src/util/util.ts
index 50e97fb54c..002fff0d26 100644
--- a/packages/wonder-blocks-core/src/util/util.ts
+++ b/packages/wonder-blocks-core/src/util/util.ts
@@ -28,6 +28,7 @@ function flatten(list?: StyleType): Array {
export function processStyleList(style?: StyleType): StyledExport {
const stylesheetStyles: Array = [];
+ const classNameStyles: Array = [];
const inlineStyles: Array> = [];
if (!style) {
@@ -65,6 +66,8 @@ export function processStyleList(style?: StyleType): StyledExport {
} else {
stylesheetStyles.push(child);
}
+ } else if (typeof child === "string") {
+ classNameStyles.push(child);
} else {
inlineStyles.push(child);
}
@@ -86,6 +89,6 @@ export function processStyleList(style?: StyleType): StyledExport {
return {
style: shouldInlineStyles ? inlineStylesObject : {},
- className: css(...stylesheetStyles),
+ className: [css(...stylesheetStyles), ...classNameStyles].join(" "),
};
}
diff --git a/packages/wonder-blocks-link/src/components/link-core.module.css b/packages/wonder-blocks-link/src/components/link-core.module.css
new file mode 100644
index 0000000000..4c59bebbe2
--- /dev/null
+++ b/packages/wonder-blocks-link/src/components/link-core.module.css
@@ -0,0 +1,63 @@
+.shared {
+ font-family: var(--wb-c-link-root-font-family);
+ font-weight: var(--wb-c-link-root-font-weight);
+ cursor: pointer;
+ text-decoration: none;
+ outline: none;
+ align-items: center;
+}
+
+.rest {
+ color: var(--wb-semanticColor-link-rest);
+
+ &:hover {
+ text-decoration: underline currentcolor solid;
+ color: var(--wb-semanticColor-link-hover);
+ text-underline-offset: var(--wb-font-textDecoration-underlineOffset);
+ }
+
+ &:focus-visible {
+ border-radius: var(--wb-border-radius-radius_010);
+ box-shadow: 0 0 0 var(--wb-border-width-medium) var(--wb-semanticColor-focus-inner);
+ outline: var(--wb-border-width-medium) solid var(--wb-semanticColor-focus-outer);
+ outline-offset: var(--wb-border-width-medium);
+ }
+
+ &:active {
+ color: var(--wb-semanticColor-link-press);
+ text-decoration: underline currentcolor solid;
+ text-underline-offset: var(--wb-font-textDecoration-underlineOffset);
+ }
+}
+
+.restInline {
+ text-decoration: underline currentcolor solid;
+ text-decoration-thickness: var(--wb-font-textDecoration-thickness);
+ text-underline-offset: var(--wb-font-textDecoration-underlineOffset);
+}
+
+.focus {
+ border-radius: var(--wb-border-radius-radius_010);
+ outline: var(--wb-border-width-medium) solid var(--wb-semanticColor-focus-outer);
+ outline-offset: var(--wb-border-width-medium);
+}
+
+.press {
+ color: var(--wb-semanticColor-link-press);
+ text-decoration: underline currentcolor solid;
+ text-underline-offset: var(--wb-font-textDecoration-underlineOffset);
+}
+
+/* Content styles */
+.startIcon {
+ margin-inline-end: var(--wb-sizing-size_040);
+}
+
+.endIcon {
+ margin-inline-start: var(--wb-sizing-size_040);
+}
+
+.centered {
+ /* Manually align the bottom of start/end icons with the text baseline. */
+ vertical-align: -10%;
+}
\ No newline at end of file
diff --git a/packages/wonder-blocks-link/src/components/link-core.tsx b/packages/wonder-blocks-link/src/components/link-core.tsx
index d3b72800f3..b0c0150d04 100644
--- a/packages/wonder-blocks-link/src/components/link-core.tsx
+++ b/packages/wonder-blocks-link/src/components/link-core.tsx
@@ -1,15 +1,7 @@
import * as React from "react";
-import {StyleSheet} from "aphrodite";
import {Link, useInRouterContext} from "react-router-dom-v5-compat";
import {addStyle} from "@khanacademy/wonder-blocks-core";
-import {
- spacing,
- semanticColor,
- border,
- font,
-} from "@khanacademy/wonder-blocks-tokens";
-import {focusStyles} from "@khanacademy/wonder-blocks-styles";
import {isClientSideUrl} from "@khanacademy/wonder-blocks-clickable";
import {PhosphorIcon} from "@khanacademy/wonder-blocks-icon";
import externalLinkIcon from "@phosphor-icons/core/bold/arrow-square-out-bold.svg";
@@ -19,7 +11,7 @@ import type {
ClickableState,
} from "@khanacademy/wonder-blocks-clickable";
import type {SharedProps} from "./link";
-import theme from "../theme";
+import styles from "./link-core.module.css";
type Props = SharedProps &
ChildrenProps &
@@ -54,17 +46,19 @@ const LinkCore = React.forwardRef(function LinkCore(
...restProps
} = props;
- const defaultStyles = [
+ const classNames = [
styles.shared,
styles.rest,
inline && styles.restInline,
// focused is preserved to allow for programmatic focus.
!pressed && focused && styles.focus,
- ];
+ ]
+ .filter(Boolean)
+ .join(" ");
const commonProps = {
"data-testid": testId,
- style: [defaultStyles, style],
+ style: [classNames, style],
target,
...restProps,
} as const;
@@ -77,7 +71,7 @@ const LinkCore = React.forwardRef(function LinkCore(
);
@@ -87,7 +81,7 @@ const LinkCore = React.forwardRef(function LinkCore(
if (startIcon) {
startIconElement = React.cloneElement(startIcon, {
- style: [styles.startIcon, styles.centered],
+ className: [styles.startIcon, styles.centered].join(" "),
testId: "start-icon",
"aria-hidden": "true",
...startIcon.props,
@@ -98,7 +92,7 @@ const LinkCore = React.forwardRef(function LinkCore(
if (endIcon) {
endIconElement = React.cloneElement(endIcon, {
- style: [styles.endIcon, styles.centered],
+ className: [styles.endIcon, styles.centered].join(" "),
testId: "end-icon",
"aria-hidden": "true",
...endIcon.props,
@@ -137,59 +131,4 @@ const LinkCore = React.forwardRef(function LinkCore(
);
});
-const focusStyling = {
- ...focusStyles.focus[":focus-visible"],
- borderRadius: border.radius.radius_010,
- outlineOffset: border.width.medium,
-};
-
-const pressStyling = {
- color: semanticColor.link.press,
- textDecoration: "underline currentcolor solid",
- textUnderlineOffset: font.textDecoration.underlineOffset,
-};
-
-const styles = StyleSheet.create({
- shared: {
- fontFamily: theme.root.font.family,
- fontWeight: theme.root.font.weight,
- cursor: "pointer",
- textDecoration: "none",
- outline: "none",
- alignItems: "center",
- },
- rest: {
- color: semanticColor.link.rest,
- ":hover": {
- textDecoration: "underline currentcolor solid",
- color: semanticColor.link.hover,
- textUnderlineOffset: font.textDecoration.underlineOffset,
- },
- // Focus styles only show up with keyboard navigation.
- // Mouse users don't see focus styles.
- ":focus-visible": focusStyling,
- ":active": pressStyling,
- },
- restInline: {
- textDecoration: "underline currentcolor solid",
- textDecorationThickness: font.textDecoration.thickness,
- textUnderlineOffset: font.textDecoration.underlineOffset,
- },
- focus: focusStyling,
- press: pressStyling,
- /**
- * Content styles
- */
- startIcon: {
- marginInlineEnd: spacing.xxxSmall_4,
- },
- endIcon: {
- marginInlineStart: spacing.xxxSmall_4,
- },
- centered: {
- // Manually align the bottom of start/end icons with the text baseline.
- verticalAlign: "-10%",
- },
-});
-
export default LinkCore;
diff --git a/packages/wonder-blocks-modal/src/components/flexible-panel.tsx b/packages/wonder-blocks-modal/src/components/flexible-panel.tsx
index 1f2e72dac4..a741529a6a 100644
--- a/packages/wonder-blocks-modal/src/components/flexible-panel.tsx
+++ b/packages/wonder-blocks-modal/src/components/flexible-panel.tsx
@@ -113,14 +113,13 @@ export default function FlexiblePanel({
backgroundColor: semanticColor.core.background.base.default,
};
- const combinedBackgroundStyles = {
- ...defaultBackgroundStyle,
- ...styles?.panel,
- };
-
return (
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b40ff3ac1e..cd1edb3b34 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -381,6 +381,9 @@ importers:
playwright:
specifier: ^1.50.1
version: 1.50.1
+ postcss:
+ specifier: ^8.5.6
+ version: 8.5.6
prettier:
specifier: ^3.4.2
version: 3.4.2
@@ -396,12 +399,24 @@ importers:
rollup-plugin-node-externals:
specifier: ^8.0.0
version: 8.0.0(rollup@2.79.2)
+ rollup-plugin-postcss:
+ specifier: ^4.0.2
+ version: 4.0.2(postcss@8.5.6)
storybook:
specifier: 'catalog:'
version: 9.1.8(@testing-library/dom@10.4.0)(msw@2.7.0(@types/node@22.13.0)(typescript@5.7.3))(prettier@3.4.2)(vite@6.0.11(@types/node@22.13.0)(terser@5.39.0)(yaml@2.7.0))
storybook-addon-pseudo-states:
specifier: ^9.1.8
version: 9.1.8(storybook@9.1.8(@testing-library/dom@10.4.0)(msw@2.7.0(@types/node@22.13.0)(typescript@5.7.3))(prettier@3.4.2)(vite@6.0.11(@types/node@22.13.0)(terser@5.39.0)(yaml@2.7.0)))
+ stylelint:
+ specifier: ^16.25.0
+ version: 16.25.0(typescript@5.7.3)
+ stylelint-config-standard:
+ specifier: ^39.0.0
+ version: 39.0.0(stylelint@16.25.0(typescript@5.7.3))
+ stylelint-value-no-unknown-custom-properties:
+ specifier: ^6.0.1
+ version: 6.0.1(stylelint@16.25.0(typescript@5.7.3))
swc_mut_cjs_exports:
specifier: ^10.7.0
version: 10.7.0(@swc/core@1.11.22(@swc/helpers@0.5.17))(@swc/jest@0.2.38(@swc/core@1.11.22(@swc/helpers@0.5.17)))
@@ -2115,6 +2130,15 @@ packages:
'@bundled-es-modules/tough-cookie@0.1.6':
resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==}
+ '@cacheable/memoize@2.0.3':
+ resolution: {integrity: sha512-hl9wfQgpiydhQEIv7fkjEzTGE+tcosCXLKFDO707wYJ/78FVOlowb36djex5GdbSyeHnG62pomYLMuV/OT8Pbw==}
+
+ '@cacheable/memory@2.0.3':
+ resolution: {integrity: sha512-R3UKy/CKOyb1LZG/VRCTMcpiMDyLH7SH3JrraRdK6kf3GweWCOU3sgvE13W3TiDRbxnDKylzKJvhUAvWl9LQOA==}
+
+ '@cacheable/utils@2.0.3':
+ resolution: {integrity: sha512-m7Rce68cMHlAUjvWBy9Ru1Nmw5gU0SjGGtQDdhpe6E0xnbcvrIY0Epy//JU1VYYBUTzrG9jvgmTauULGKzOkWA==}
+
'@changesets/apply-release-plan@7.0.8':
resolution: {integrity: sha512-qjMUj4DYQ1Z6qHawsn7S71SujrExJ+nceyKKyI9iB+M5p9lCL55afuEd6uLBPRpLGWQwkwvWegDHtwHJb1UjpA==}
@@ -2174,6 +2198,32 @@ packages:
resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
engines: {node: '>=0.1.90'}
+ '@csstools/css-parser-algorithms@3.0.5':
+ resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@csstools/css-tokenizer': ^3.0.4
+
+ '@csstools/css-tokenizer@3.0.4':
+ 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
+
+ '@dual-bundle/import-meta-resolve@4.2.1':
+ resolution: {integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==}
+
'@emnapi/core@1.4.3':
resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==}
@@ -2500,6 +2550,13 @@ packages:
'@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+ '@keyv/bigmap@1.0.2':
+ resolution: {integrity: sha512-KR03xkEZlAZNF4IxXgVXb+uNIVNvwdh8UwI0cnc7WI6a+aQcDp8GL80qVfeB4E5NpsKJzou5jU0r6yLSSbMOtA==}
+ engines: {node: '>= 18'}
+
+ '@keyv/serialize@1.1.1':
+ resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==}
+
'@khanacademy/eslint-config@5.2.0':
resolution: {integrity: sha512-fTlATb2MmPeEudBRSGTpydliukkBZ9/H/zXEdM1xau9+XbZ73RCMFOFdYSD9r9XhwyM5EcfSIO/V3kYnbx5cWg==}
peerDependencies:
@@ -3032,6 +3089,10 @@ packages:
resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
engines: {node: '>= 10'}
+ '@trysound/sax@0.2.0':
+ resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
+ engines: {node: '>=10.13.0'}
+
'@tybys/wasm-util@0.9.0':
resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==}
@@ -3407,6 +3468,9 @@ packages:
ajv@6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+ ajv@8.17.1:
+ resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
+
alex@11.0.1:
resolution: {integrity: sha512-rKLBZxD/lvuykdC6XB8ma9YjDl46j9ayHROZUtC1yJ2jlGpoP7RZR1tBBSjtlr260ixIW6iCkqAnHzmti5Q6CQ==}
hasBin: true
@@ -3542,6 +3606,10 @@ packages:
resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==}
engines: {node: '>=4'}
+ astral-regex@2.0.0:
+ resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
+ engines: {node: '>=8'}
+
async-function@1.0.0:
resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
engines: {node: '>= 0.4'}
@@ -3615,6 +3683,9 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ balanced-match@2.0.0:
+ resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==}
+
better-opn@3.0.2:
resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==}
engines: {node: '>=12.0.0'}
@@ -3627,6 +3698,9 @@ packages:
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
engines: {node: '>=8'}
+ boolbase@1.0.0:
+ resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
+
bowser@1.9.4:
resolution: {integrity: sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==}
@@ -3675,6 +3749,9 @@ packages:
resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==}
engines: {node: '>=14.16'}
+ cacheable@2.0.3:
+ resolution: {integrity: sha512-nZF80J3d8RMrroMSYm1E9pBllVDXWPuECZgEZxH+vusCY4MAXAJVrY0jutcHSgh3xYX3G2EUNnmtWGZVVjWCXw==}
+
call-bind-apply-helpers@1.0.1:
resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==}
engines: {node: '>= 0.4'}
@@ -3711,6 +3788,9 @@ packages:
resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==}
engines: {node: '>=14.16'}
+ caniuse-api@3.0.0:
+ resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
+
caniuse-lite@1.0.30001718:
resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==}
@@ -3814,6 +3894,9 @@ packages:
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ colord@2.9.3:
+ resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
+
colorette@2.0.20:
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
@@ -3831,6 +3914,10 @@ packages:
resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==}
engines: {node: '>= 6'}
+ commander@7.2.0:
+ resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
+ engines: {node: '>= 10'}
+
comment-parser@1.4.1:
resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==}
engines: {node: '>= 12.0.0'}
@@ -3845,6 +3932,9 @@ packages:
resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==}
engines: {'0': node >= 6.0}
+ concat-with-sourcemaps@1.1.0:
+ resolution: {integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==}
+
config-chain@1.1.13:
resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
@@ -3874,6 +3964,15 @@ 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-jest@29.7.0:
resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -3887,12 +3986,64 @@ packages:
resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==}
engines: {node: '>=12'}
+ css-declaration-sorter@6.4.1:
+ resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==}
+ engines: {node: ^10 || ^12 || >=14}
+ peerDependencies:
+ postcss: ^8.0.9
+
+ css-functions-list@3.2.3:
+ resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==}
+ engines: {node: '>=12 || >=16'}
+
css-in-js-utils@2.0.1:
resolution: {integrity: sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==}
+ css-select@4.3.0:
+ resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
+
+ css-tree@1.1.3:
+ resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==}
+ engines: {node: '>=8.0.0'}
+
+ css-tree@3.1.0:
+ resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==}
+ engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
+
+ css-what@6.2.2:
+ resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==}
+ engines: {node: '>= 6'}
+
css.escape@1.5.1:
resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
+ cssesc@3.0.0:
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ cssnano-preset-default@5.2.14:
+ resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ cssnano-utils@3.1.0:
+ resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ cssnano@5.1.15:
+ resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ csso@4.2.0:
+ resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==}
+ engines: {node: '>=8.0.0'}
+
cssom@0.3.8:
resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==}
@@ -3945,6 +4096,15 @@ packages:
supports-color:
optional: true
+ debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
decamelize-keys@1.1.1:
resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==}
engines: {node: '>=0.10.0'}
@@ -4055,11 +4215,24 @@ packages:
dom-accessibility-api@0.6.3:
resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==}
+ dom-serializer@1.4.1:
+ resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
+
+ domelementtype@2.3.0:
+ resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
+
domexception@4.0.0:
resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==}
engines: {node: '>=12'}
deprecated: Use your platform's native DOMException instead
+ domhandler@4.3.1:
+ resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
+ engines: {node: '>= 4'}
+
+ domutils@2.8.0:
+ resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
+
dot-prop@6.0.1:
resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==}
engines: {node: '>=10'}
@@ -4098,10 +4271,17 @@ packages:
resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
engines: {node: '>=8.6'}
+ entities@2.2.0:
+ resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
+
entities@4.5.0:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
+ env-paths@2.2.1:
+ resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
+ engines: {node: '>=6'}
+
error-ex@1.3.2:
resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
@@ -4356,6 +4536,9 @@ packages:
estree-util-visit@1.2.1:
resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==}
+ estree-walker@0.6.1:
+ resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==}
+
estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
@@ -4369,6 +4552,9 @@ packages:
event-stream@3.1.7:
resolution: {integrity: sha512-ddACn1VEffD+nvbofs8gs/0qJZC9gtEGLG+WykE//rinSpYLSaTsnN96eVQV+gHdUhV/nVtxUNKC3OjrApuEMw==}
+ eventemitter3@4.0.7:
+ resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
+
execa@5.1.1:
resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
engines: {node: '>=10'}
@@ -4411,6 +4597,13 @@ packages:
fast-levenshtein@2.0.6:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+ fast-uri@3.1.0:
+ resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
+
+ fastest-levenshtein@1.0.16:
+ resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==}
+ engines: {node: '>= 4.9.1'}
+
fastq@1.19.0:
resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==}
@@ -4420,6 +4613,9 @@ packages:
fb-watchman@2.0.2:
resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
+ 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}
@@ -4456,9 +4652,15 @@ packages:
resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
engines: {node: ^10.12.0 || >=12.0.0}
+ flat-cache@6.1.17:
+ resolution: {integrity: sha512-Jzse4YoiUJBVYTwz5Bwl4h/2VQM7e2KK3MVAMlXzX9uamIHAH/TXUlRKU1AQGQOryQhN0EsmufiiF40G057YXA==}
+
flatted@3.3.2:
resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==}
+ flatted@3.3.3:
+ resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
+
flow-parser@0.259.1:
resolution: {integrity: sha512-xiXLmMH2Z7OmdE9Q+MjljUMr/rbemFqZIRxaeZieVScG4HzQrKKhNcCYZbWTGpoN7ZPi7z8ClQbeVPq6t5AszQ==}
engines: {node: '>=0.4.0'}
@@ -4517,6 +4719,9 @@ packages:
functions-have-names@1.2.3:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+ generic-names@4.0.0:
+ resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==}
+
gensync@1.0.0-beta.2:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
@@ -4582,6 +4787,14 @@ packages:
resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==}
engines: {node: '>=10'}
+ 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@11.12.0:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
engines: {node: '>=4'}
@@ -4602,6 +4815,9 @@ packages:
resolution: {integrity: sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==}
engines: {node: '>=4'}
+ globjoin@0.1.4:
+ resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==}
+
gopd@1.2.0:
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
engines: {node: '>= 0.4'}
@@ -4703,6 +4919,9 @@ packages:
hoist-non-react-statics@3.3.2:
resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
+ hookified@1.12.1:
+ resolution: {integrity: sha512-xnKGl+iMIlhrZmGHB729MqlmPoWBznctSQTYCpFKqNsCgimJQmithcW0xSQMMFzYnV2iKUh25alswn6epgxS0Q==}
+
hosted-git-info@2.8.9:
resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
@@ -4721,6 +4940,10 @@ packages:
html-escaper@2.0.2:
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
+ html-tags@3.3.1:
+ resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
+ engines: {node: '>=8'}
+
http-cache-semantics@4.1.1:
resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
@@ -4754,6 +4977,15 @@ packages:
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
engines: {node: '>=0.10.0'}
+ icss-replace-symbols@1.1.0:
+ resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==}
+
+ icss-utils@5.1.0:
+ resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+
ignore@3.3.10:
resolution: {integrity: sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==}
@@ -4761,10 +4993,22 @@ packages:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
+ ignore@7.0.5:
+ resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
+ engines: {node: '>= 4'}
+
+ import-cwd@3.0.0:
+ resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==}
+ engines: {node: '>=8'}
+
import-fresh@3.3.0:
resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
engines: {node: '>=6'}
+ import-from@3.0.0:
+ resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==}
+ engines: {node: '>=8'}
+
import-lazy@4.0.0:
resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==}
engines: {node: '>=8'}
@@ -4962,6 +5206,10 @@ packages:
resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
engines: {node: '>=0.10.0'}
+ is-plain-object@5.0.0:
+ resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
+ engines: {node: '>=0.10.0'}
+
is-potential-custom-element-name@1.0.1:
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
@@ -5293,6 +5541,9 @@ packages:
json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+ json-schema-traverse@1.0.0:
+ resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+
json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
@@ -5321,6 +5572,9 @@ 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'}
@@ -5333,6 +5587,9 @@ packages:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'}
+ known-css-properties@0.37.0:
+ resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==}
+
language-subtag-registry@0.3.23:
resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==}
@@ -5352,6 +5609,10 @@ packages:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
+ lilconfig@2.1.0:
+ resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
+ engines: {node: '>=10'}
+
limit-spawn@0.0.3:
resolution: {integrity: sha512-2vJ6FDCit0ohq77qdbIdk5JqGs/98W1fGEgozoAMq/oybKPdgLuB8bHH/wWgvCdQzEJpm6Sxh0abG/PtxFr7XA==}
engines: {node: '>= 0.8.0'}
@@ -5370,6 +5631,10 @@ packages:
load-plugin@5.1.0:
resolution: {integrity: sha512-Lg1CZa1CFj2CbNaxijTL6PCbzd4qGTlZov+iH2p5Xwy/ApcZJh+i6jMN2cYePouTfjJfrNu3nXFdEw8LvbjPFQ==}
+ loader-utils@3.3.1:
+ resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==}
+ engines: {node: '>= 12.13.0'}
+
locate-path@3.0.0:
resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==}
engines: {node: '>=6'}
@@ -5386,6 +5651,9 @@ packages:
resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ lodash.camelcase@4.3.0:
+ resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
+
lodash.debounce@4.0.8:
resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
@@ -5399,15 +5667,24 @@ packages:
lodash.kebabcase@4.1.1:
resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==}
+ lodash.memoize@4.1.2:
+ resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
+
lodash.merge@4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
lodash.startcase@4.4.0:
resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
+ lodash.truncate@4.4.2:
+ resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==}
+
lodash.unionwith@4.6.0:
resolution: {integrity: sha512-Hk8otPCkVM4UxRoft3E5dAREwExyXci6iVPCibHIEiG7neb9KAdWHYS75MYpVTvxDrnpp7WCJNZ84vAk7j7tVA==}
+ lodash.uniq@4.5.0:
+ resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
+
lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
@@ -5482,6 +5759,9 @@ packages:
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
engines: {node: '>= 0.4'}
+ mathml-tag-names@2.1.3:
+ resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==}
+
mdast-comment-marker@2.1.2:
resolution: {integrity: sha512-HED3ezseRVkBzZ0uK4q6RJMdufr/2p3VfVZstE3H1N9K8bwtspztWo6Xd7rEatuGNoCXaBna8oEqMwUn0Ve1bw==}
@@ -5569,6 +5849,12 @@ packages:
mdast-util-to-string@4.0.0:
resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
+ mdn-data@2.0.14:
+ resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
+
+ mdn-data@2.12.2:
+ resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==}
+
memoize-one@5.2.1:
resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==}
@@ -5576,6 +5862,10 @@ packages:
resolution: {integrity: sha512-Cl0yeeIrko6d94KpUo1M+0X1sB14ikoaqlIGuTH1fW4I+E3+YljL54/hb/BWmVfrV9tTV9zU04+xjw08Fh2WkA==}
engines: {node: '>=14.16'}
+ meow@13.2.0:
+ resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==}
+ engines: {node: '>=18'}
+
meow@9.0.0:
resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==}
engines: {node: '>=10'}
@@ -5858,8 +6148,8 @@ packages:
resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}
engines: {node: ^18.17.0 || >=20.5.0}
- nanoid@3.3.8:
- resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==}
+ nanoid@3.3.11:
+ resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
@@ -5923,6 +6213,10 @@ packages:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
+ normalize-url@6.1.0:
+ resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
+ engines: {node: '>=10'}
+
normalize-url@8.0.1:
resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==}
engines: {node: '>=14.16'}
@@ -5940,6 +6234,9 @@ packages:
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
engines: {node: '>=8'}
+ nth-check@2.1.1:
+ resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
+
nwsapi@2.2.16:
resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==}
@@ -6018,6 +6315,10 @@ packages:
resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==}
engines: {node: '>=8'}
+ p-finally@1.0.0:
+ resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
+ engines: {node: '>=4'}
+
p-limit@2.3.0:
resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
engines: {node: '>=6'}
@@ -6050,6 +6351,14 @@ packages:
resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
engines: {node: '>=6'}
+ p-queue@6.6.2:
+ resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==}
+ engines: {node: '>=8'}
+
+ p-timeout@3.2.0:
+ resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==}
+ engines: {node: '>=8'}
+
p-try@2.2.0:
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
engines: {node: '>=6'}
@@ -6176,6 +6485,10 @@ packages:
resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
engines: {node: '>=6'}
+ pify@5.0.0:
+ resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==}
+ engines: {node: '>=10'}
+
pirates@4.0.6:
resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
engines: {node: '>= 6'}
@@ -6210,8 +6523,230 @@ packages:
resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
engines: {node: '>= 0.4'}
- postcss@8.5.1:
- resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==}
+ postcss-calc@8.2.4:
+ resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==}
+ peerDependencies:
+ postcss: ^8.2.2
+
+ postcss-colormin@5.3.1:
+ resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-convert-values@5.1.3:
+ resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-discard-comments@5.1.2:
+ resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-discard-duplicates@5.1.0:
+ resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-discard-empty@5.1.1:
+ resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-discard-overridden@5.1.0:
+ resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-load-config@3.1.4:
+ resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
+ engines: {node: '>= 10'}
+ peerDependencies:
+ postcss: '>=8.0.9'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
+
+ postcss-merge-longhand@5.1.7:
+ resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-merge-rules@5.1.4:
+ resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-minify-font-values@5.1.0:
+ resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-minify-gradients@5.1.1:
+ resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-minify-params@5.1.4:
+ resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-minify-selectors@5.2.1:
+ resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-modules-extract-imports@3.1.0:
+ resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+
+ postcss-modules-local-by-default@4.2.0:
+ resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+
+ postcss-modules-scope@3.2.1:
+ resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+
+ postcss-modules-values@4.0.0:
+ resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+
+ postcss-modules@4.3.1:
+ resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==}
+ peerDependencies:
+ postcss: ^8.0.0
+
+ postcss-normalize-charset@5.1.0:
+ resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-normalize-display-values@5.1.0:
+ resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-normalize-positions@5.1.1:
+ resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-normalize-repeat-style@5.1.1:
+ resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-normalize-string@5.1.0:
+ resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-normalize-timing-functions@5.1.0:
+ resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-normalize-unicode@5.1.1:
+ resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-normalize-url@5.1.0:
+ resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-normalize-whitespace@5.1.1:
+ resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-ordered-values@5.1.3:
+ resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-reduce-initial@5.1.2:
+ resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-reduce-transforms@5.1.0:
+ resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ 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'}
+
+ postcss-selector-parser@7.1.0:
+ resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==}
+ engines: {node: '>=4'}
+
+ postcss-svgo@5.1.0:
+ resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-unique-selectors@5.1.1:
+ resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-value-parser@4.2.0:
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+
+ postcss@8.5.6:
+ resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
prelude-ls@1.2.1:
@@ -6247,6 +6782,10 @@ packages:
process-nextick-args@1.0.7:
resolution: {integrity: sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==}
+ promise.series@0.2.0:
+ resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==}
+ engines: {node: '>=0.12'}
+
prompts@2.4.2:
resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
engines: {node: '>= 6'}
@@ -6505,6 +7044,10 @@ packages:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
+ require-from-string@2.0.2:
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
+
requires-port@1.0.0:
resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
@@ -6570,6 +7113,15 @@ packages:
peerDependencies:
rollup: ^4.0.0
+ rollup-plugin-postcss@4.0.2:
+ resolution: {integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ postcss: 8.x
+
+ rollup-pluginutils@2.8.2:
+ resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==}
+
rollup@2.79.2:
resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==}
engines: {node: '>=10.0.0'}
@@ -6594,6 +7146,9 @@ packages:
safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+ safe-identifier@0.4.2:
+ resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==}
+
safe-push-apply@1.0.0:
resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
engines: {node: '>= 0.4'}
@@ -6697,6 +7252,10 @@ packages:
slashes@3.0.12:
resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==}
+ slice-ansi@4.0.0:
+ resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
+ engines: {node: '>=10'}
+
sliced@1.0.1:
resolution: {integrity: sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==}
@@ -6754,6 +7313,10 @@ packages:
stable-hash@0.0.4:
resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==}
+ stable@0.1.8:
+ resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
+ deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
+
stack-utils@2.0.6:
resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
engines: {node: '>=10'}
@@ -6871,6 +7434,38 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
+ style-inject@0.3.0:
+ resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==}
+
+ stylehacks@5.1.1:
+ resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ stylelint-config-recommended@17.0.0:
+ resolution: {integrity: sha512-WaMSdEiPfZTSFVoYmJbxorJfA610O0tlYuU2aEwY33UQhSPgFbClrVJYWvy3jGJx+XW37O+LyNLiZOEXhKhJmA==}
+ engines: {node: '>=18.12.0'}
+ peerDependencies:
+ stylelint: ^16.23.0
+
+ stylelint-config-standard@39.0.0:
+ resolution: {integrity: sha512-JabShWORb8Bmc1A47ZyJstran60P3yUdI1zWMpGYPeFiC6xzHXJMkpKAd8EjIhq3HPUplIWWMDJ/xu0AiPd+kA==}
+ engines: {node: '>=18.12.0'}
+ peerDependencies:
+ stylelint: ^16.23.0
+
+ stylelint-value-no-unknown-custom-properties@6.0.1:
+ resolution: {integrity: sha512-N60PTdaTknB35j6D4FhW0GL2LlBRV++bRpXMMldWMQZ240yFQaoltzlLY4lXXs7Z0J5mNUYZQ/gjyVtU2DhCMA==}
+ engines: {node: '>=18.12.0'}
+ peerDependencies:
+ stylelint: '>=16'
+
+ stylelint@16.25.0:
+ resolution: {integrity: sha512-Li0avYWV4nfv1zPbdnxLYBGq4z8DVZxbRgx4Kn6V+Uftz1rMoF1qiEI3oL4kgWqyYgCgs7gT5maHNZ82Gk03vQ==}
+ engines: {node: '>=18.12.0'}
+ hasBin: true
+
supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
@@ -6883,10 +7478,22 @@ packages:
resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==}
engines: {node: '>=12'}
+ 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'}
+ 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'}
+ hasBin: true
+
swc_mut_cjs_exports@10.7.0:
resolution: {integrity: sha512-9WPjC8JM8ifxdss8zk2Tdyz6lYJQZsg1J9bqCJcNcd/NOaRK2Ly8UNK+yuTTA8D4CQbeHeTqugtXTcf+A00dqg==}
peerDependencies:
@@ -6900,6 +7507,10 @@ packages:
resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==}
engines: {node: ^14.18.0 || >=16.0.0}
+ table@6.9.0:
+ resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==}
+ engines: {node: '>=10.0.0'}
+
tapable@2.2.1:
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
engines: {node: '>=6'}
@@ -7471,6 +8082,10 @@ packages:
resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==}
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'}
@@ -7556,6 +8171,10 @@ packages:
yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+ yaml@1.10.2:
+ resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
+ engines: {node: '>= 6'}
+
yaml@2.7.0:
resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==}
engines: {node: '>= 14'}
@@ -7671,7 +8290,7 @@ snapshots:
'@babel/core': 7.26.7
'@babel/helper-compilation-targets': 7.27.2
'@babel/helper-plugin-utils': 7.27.1
- debug: 4.4.1
+ debug: 4.4.3
lodash.debounce: 4.0.8
resolve: 1.22.10
transitivePeerDependencies:
@@ -8439,6 +9058,20 @@ snapshots:
'@types/tough-cookie': 4.0.5
tough-cookie: 4.1.4
+ '@cacheable/memoize@2.0.3':
+ dependencies:
+ '@cacheable/utils': 2.0.3
+
+ '@cacheable/memory@2.0.3':
+ dependencies:
+ '@cacheable/memoize': 2.0.3
+ '@cacheable/utils': 2.0.3
+ '@keyv/bigmap': 1.0.2
+ hookified: 1.12.1
+ keyv: 5.5.3
+
+ '@cacheable/utils@2.0.3': {}
+
'@changesets/apply-release-plan@7.0.8':
dependencies:
'@changesets/config': 3.0.5
@@ -8584,6 +9217,23 @@ snapshots:
'@colors/colors@1.5.0':
optional: true
+ '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)':
+ dependencies:
+ '@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)':
+ 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
+
+ '@dual-bundle/import-meta-resolve@4.2.1': {}
+
'@emnapi/core@1.4.3':
dependencies:
'@emnapi/wasi-threads': 1.0.2
@@ -8958,6 +9608,12 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
+ '@keyv/bigmap@1.0.2':
+ dependencies:
+ hookified: 1.12.1
+
+ '@keyv/serialize@1.1.1': {}
+
'@khanacademy/eslint-config@5.2.0(@khanacademy/eslint-plugin@3.1.1(eslint@8.57.1)(typescript@5.7.3))(@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3))(@typescript-eslint/parser@8.17.0(eslint@8.57.1)(typescript@5.7.3))(eslint-config-prettier@10.0.1(eslint@8.57.1))(eslint-import-resolver-typescript@3.7.0)(eslint-plugin-import@2.31.0)(eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1))(eslint-plugin-prettier@5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@10.0.1(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2))(eslint-plugin-react@7.37.4(eslint@8.57.1))(eslint@8.57.1)':
dependencies:
'@khanacademy/eslint-plugin': 3.1.1(eslint@8.57.1)(typescript@5.7.3)
@@ -9451,6 +10107,8 @@ snapshots:
'@tootallnate/once@2.0.0': {}
+ '@trysound/sax@0.2.0': {}
+
'@tybys/wasm-util@0.9.0':
dependencies:
tslib: 2.8.1
@@ -9905,6 +10563,13 @@ snapshots:
json-schema-traverse: 0.4.1
uri-js: 4.4.1
+ ajv@8.17.1:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-uri: 3.1.0
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+
alex@11.0.1:
dependencies:
'@types/mdast': 3.0.15
@@ -10072,6 +10737,8 @@ snapshots:
dependencies:
tslib: 2.8.1
+ astral-regex@2.0.0: {}
+
async-function@1.0.0: {}
asynckit@0.4.0: {}
@@ -10174,6 +10841,8 @@ snapshots:
balanced-match@1.0.2: {}
+ balanced-match@2.0.0: {}
+
better-opn@3.0.2:
dependencies:
open: 8.4.2
@@ -10184,6 +10853,8 @@ snapshots:
binary-extensions@2.3.0: {}
+ boolbase@1.0.0: {}
+
bowser@1.9.4: {}
boxen@7.1.1:
@@ -10244,6 +10915,14 @@ snapshots:
normalize-url: 8.0.1
responselike: 3.0.0
+ cacheable@2.0.3:
+ dependencies:
+ '@cacheable/memoize': 2.0.3
+ '@cacheable/memory': 2.0.3
+ '@cacheable/utils': 2.0.3
+ hookified: 1.12.1
+ keyv: 5.5.3
+
call-bind-apply-helpers@1.0.1:
dependencies:
es-errors: 1.3.0
@@ -10282,6 +10961,13 @@ snapshots:
camelcase@7.0.1: {}
+ caniuse-api@3.0.0:
+ dependencies:
+ browserslist: 4.24.5
+ caniuse-lite: 1.0.30001718
+ lodash.memoize: 4.1.2
+ lodash.uniq: 4.5.0
+
caniuse-lite@1.0.30001718: {}
ccount@2.0.1: {}
@@ -10374,6 +11060,8 @@ snapshots:
color-name@1.1.4: {}
+ colord@2.9.3: {}
+
colorette@2.0.20: {}
combined-stream@1.0.8:
@@ -10387,6 +11075,8 @@ snapshots:
commander@5.1.0: {}
+ commander@7.2.0: {}
+
comment-parser@1.4.1: {}
commondir@1.0.1: {}
@@ -10400,6 +11090,10 @@ snapshots:
readable-stream: 3.6.2
typedarray: 0.0.6
+ concat-with-sourcemaps@1.1.0:
+ dependencies:
+ source-map: 0.6.1
+
config-chain@1.1.13:
dependencies:
ini: 1.3.8
@@ -10433,6 +11127,15 @@ snapshots:
optionalDependencies:
typescript: 5.7.3
+ cosmiconfig@9.0.0(typescript@5.7.3):
+ dependencies:
+ env-paths: 2.2.1
+ import-fresh: 3.3.0
+ js-yaml: 4.1.0
+ parse-json: 5.2.0
+ optionalDependencies:
+ typescript: 5.7.3
+
create-jest@29.7.0(@types/node@22.13.0):
dependencies:
'@jest/types': 29.6.3
@@ -10458,13 +11161,89 @@ snapshots:
dependencies:
type-fest: 1.4.0
+ css-declaration-sorter@6.4.1(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+
+ css-functions-list@3.2.3: {}
+
css-in-js-utils@2.0.1:
dependencies:
hyphenate-style-name: 1.1.0
isobject: 3.0.1
+ css-select@4.3.0:
+ dependencies:
+ boolbase: 1.0.0
+ css-what: 6.2.2
+ domhandler: 4.3.1
+ domutils: 2.8.0
+ nth-check: 2.1.1
+
+ css-tree@1.1.3:
+ dependencies:
+ mdn-data: 2.0.14
+ source-map: 0.6.1
+
+ css-tree@3.1.0:
+ dependencies:
+ mdn-data: 2.12.2
+ source-map-js: 1.2.1
+
+ css-what@6.2.2: {}
+
css.escape@1.5.1: {}
+ cssesc@3.0.0: {}
+
+ cssnano-preset-default@5.2.14(postcss@8.5.6):
+ dependencies:
+ css-declaration-sorter: 6.4.1(postcss@8.5.6)
+ cssnano-utils: 3.1.0(postcss@8.5.6)
+ postcss: 8.5.6
+ postcss-calc: 8.2.4(postcss@8.5.6)
+ postcss-colormin: 5.3.1(postcss@8.5.6)
+ postcss-convert-values: 5.1.3(postcss@8.5.6)
+ postcss-discard-comments: 5.1.2(postcss@8.5.6)
+ postcss-discard-duplicates: 5.1.0(postcss@8.5.6)
+ postcss-discard-empty: 5.1.1(postcss@8.5.6)
+ postcss-discard-overridden: 5.1.0(postcss@8.5.6)
+ postcss-merge-longhand: 5.1.7(postcss@8.5.6)
+ postcss-merge-rules: 5.1.4(postcss@8.5.6)
+ postcss-minify-font-values: 5.1.0(postcss@8.5.6)
+ postcss-minify-gradients: 5.1.1(postcss@8.5.6)
+ postcss-minify-params: 5.1.4(postcss@8.5.6)
+ postcss-minify-selectors: 5.2.1(postcss@8.5.6)
+ postcss-normalize-charset: 5.1.0(postcss@8.5.6)
+ postcss-normalize-display-values: 5.1.0(postcss@8.5.6)
+ postcss-normalize-positions: 5.1.1(postcss@8.5.6)
+ postcss-normalize-repeat-style: 5.1.1(postcss@8.5.6)
+ postcss-normalize-string: 5.1.0(postcss@8.5.6)
+ postcss-normalize-timing-functions: 5.1.0(postcss@8.5.6)
+ postcss-normalize-unicode: 5.1.1(postcss@8.5.6)
+ postcss-normalize-url: 5.1.0(postcss@8.5.6)
+ postcss-normalize-whitespace: 5.1.1(postcss@8.5.6)
+ postcss-ordered-values: 5.1.3(postcss@8.5.6)
+ postcss-reduce-initial: 5.1.2(postcss@8.5.6)
+ postcss-reduce-transforms: 5.1.0(postcss@8.5.6)
+ postcss-svgo: 5.1.0(postcss@8.5.6)
+ postcss-unique-selectors: 5.1.1(postcss@8.5.6)
+
+ cssnano-utils@3.1.0(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+
+ cssnano@5.1.15(postcss@8.5.6):
+ dependencies:
+ cssnano-preset-default: 5.2.14(postcss@8.5.6)
+ lilconfig: 2.1.0
+ postcss: 8.5.6
+ yaml: 1.10.2
+
+ csso@4.2.0:
+ dependencies:
+ css-tree: 1.1.3
+
cssom@0.3.8: {}
cssom@0.5.0: {}
@@ -10511,6 +11290,10 @@ snapshots:
dependencies:
ms: 2.1.3
+ debug@4.4.3:
+ dependencies:
+ ms: 2.1.3
+
decamelize-keys@1.1.1:
dependencies:
decamelize: 1.2.0
@@ -10592,10 +11375,28 @@ snapshots:
dom-accessibility-api@0.6.3: {}
+ dom-serializer@1.4.1:
+ dependencies:
+ domelementtype: 2.3.0
+ domhandler: 4.3.1
+ entities: 2.2.0
+
+ domelementtype@2.3.0: {}
+
domexception@4.0.0:
dependencies:
webidl-conversions: 7.0.0
+ domhandler@4.3.1:
+ dependencies:
+ domelementtype: 2.3.0
+
+ domutils@2.8.0:
+ dependencies:
+ dom-serializer: 1.4.1
+ domelementtype: 2.3.0
+ domhandler: 4.3.1
+
dot-prop@6.0.1:
dependencies:
is-obj: 2.0.0
@@ -10632,8 +11433,12 @@ snapshots:
ansi-colors: 4.1.3
strip-ansi: 6.0.1
+ entities@2.2.0: {}
+
entities@4.5.0: {}
+ env-paths@2.2.1: {}
+
error-ex@1.3.2:
dependencies:
is-arrayish: 0.2.1
@@ -11081,6 +11886,8 @@ snapshots:
'@types/estree-jsx': 1.0.5
'@types/unist': 2.0.11
+ estree-walker@0.6.1: {}
+
estree-walker@2.0.2: {}
estree-walker@3.0.3:
@@ -11099,6 +11906,8 @@ snapshots:
stream-combiner: 0.0.4
through: 2.3.8
+ eventemitter3@4.0.7: {}
+
execa@5.1.1:
dependencies:
cross-spawn: 7.0.6
@@ -11149,6 +11958,10 @@ snapshots:
fast-levenshtein@2.0.6: {}
+ fast-uri@3.1.0: {}
+
+ fastest-levenshtein@1.0.16: {}
+
fastq@1.19.0:
dependencies:
reusify: 1.0.4
@@ -11161,6 +11974,10 @@ snapshots:
dependencies:
bser: 2.1.1
+ file-entry-cache@10.1.4:
+ dependencies:
+ flat-cache: 6.1.17
+
file-entry-cache@6.0.1:
dependencies:
flat-cache: 3.2.0
@@ -11206,8 +12023,16 @@ snapshots:
keyv: 4.5.4
rimraf: 3.0.2
+ flat-cache@6.1.17:
+ dependencies:
+ cacheable: 2.0.3
+ flatted: 3.3.3
+ hookified: 1.12.1
+
flatted@3.3.2: {}
+ flatted@3.3.3: {}
+
flow-parser@0.259.1: {}
for-each@0.3.4:
@@ -11264,6 +12089,10 @@ snapshots:
functions-have-names@1.2.3: {}
+ generic-names@4.0.0:
+ dependencies:
+ loader-utils: 3.3.1
+
gensync@1.0.0-beta.2: {}
get-caller-file@2.0.5: {}
@@ -11359,6 +12188,16 @@ snapshots:
dependencies:
ini: 2.0.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@11.12.0: {}
globals@13.24.0:
@@ -11388,6 +12227,8 @@ snapshots:
pify: 3.0.0
slash: 1.0.0
+ globjoin@0.1.4: {}
+
gopd@1.2.0: {}
got@12.6.1:
@@ -11525,6 +12366,8 @@ snapshots:
dependencies:
react-is: 16.13.1
+ hookified@1.12.1: {}
+
hosted-git-info@2.8.9: {}
hosted-git-info@4.1.0:
@@ -11541,6 +12384,8 @@ snapshots:
html-escaper@2.0.2: {}
+ html-tags@3.3.1: {}
+
http-cache-semantics@4.1.1: {}
http-proxy-agent@5.0.0:
@@ -11577,15 +12422,31 @@ snapshots:
dependencies:
safer-buffer: 2.1.2
+ icss-replace-symbols@1.1.0: {}
+
+ icss-utils@5.1.0(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+
ignore@3.3.10: {}
ignore@5.3.2: {}
+ ignore@7.0.5: {}
+
+ import-cwd@3.0.0:
+ dependencies:
+ import-from: 3.0.0
+
import-fresh@3.3.0:
dependencies:
parent-module: 1.0.1
resolve-from: 4.0.0
+ import-from@3.0.0:
+ dependencies:
+ resolve-from: 5.0.0
+
import-lazy@4.0.0: {}
import-local@3.2.0:
@@ -11753,6 +12614,8 @@ snapshots:
dependencies:
isobject: 3.0.1
+ is-plain-object@5.0.0: {}
+
is-potential-custom-element-name@1.0.1: {}
is-regex@1.2.1:
@@ -12310,6 +13173,8 @@ snapshots:
json-schema-traverse@0.4.1: {}
+ json-schema-traverse@1.0.0: {}
+
json-stable-stringify-without-jsonify@1.0.1: {}
json5@1.0.2:
@@ -12337,12 +13202,18 @@ 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: {}
kleur@4.1.5: {}
+ known-css-properties@0.37.0: {}
+
language-subtag-registry@0.3.23: {}
language-tags@1.0.9:
@@ -12360,6 +13231,8 @@ snapshots:
prelude-ls: 1.2.1
type-check: 0.4.0
+ lilconfig@2.1.0: {}
+
limit-spawn@0.0.3: {}
lines-and-columns@1.2.4: {}
@@ -12378,6 +13251,8 @@ snapshots:
'@npmcli/config': 6.4.1
import-meta-resolve: 2.2.2
+ loader-utils@3.3.1: {}
+
locate-path@3.0.0:
dependencies:
p-locate: 3.0.0
@@ -12395,6 +13270,8 @@ snapshots:
dependencies:
p-locate: 6.0.0
+ lodash.camelcase@4.3.0: {}
+
lodash.debounce@4.0.8: {}
lodash.isempty@4.4.0: {}
@@ -12403,12 +13280,18 @@ snapshots:
lodash.kebabcase@4.1.1: {}
+ lodash.memoize@4.1.2: {}
+
lodash.merge@4.6.2: {}
lodash.startcase@4.4.0: {}
+ lodash.truncate@4.4.2: {}
+
lodash.unionwith@4.6.0: {}
+ lodash.uniq@4.5.0: {}
+
lodash@4.17.21: {}
log-symbols@4.1.0:
@@ -12469,6 +13352,8 @@ snapshots:
math-intrinsics@1.1.0: {}
+ mathml-tag-names@2.1.3: {}
+
mdast-comment-marker@2.1.2:
dependencies:
'@types/mdast': 3.0.15
@@ -12729,6 +13614,10 @@ snapshots:
dependencies:
'@types/mdast': 4.0.4
+ mdn-data@2.0.14: {}
+
+ mdn-data@2.12.2: {}
+
memoize-one@5.2.1: {}
meow@11.0.0:
@@ -12746,6 +13635,8 @@ snapshots:
type-fest: 3.13.1
yargs-parser: 21.1.1
+ meow@13.2.0: {}
+
meow@9.0.0:
dependencies:
'@types/minimist': 1.2.5
@@ -13305,7 +14196,7 @@ snapshots:
mute-stream@2.0.0: {}
- nanoid@3.3.8: {}
+ nanoid@3.3.11: {}
natural-compare@1.4.0: {}
@@ -13373,6 +14264,8 @@ snapshots:
normalize-path@3.0.0: {}
+ normalize-url@6.1.0: {}
+
normalize-url@8.0.1: {}
npm-normalize-package-bin@3.0.1: {}
@@ -13404,6 +14297,10 @@ snapshots:
dependencies:
path-key: 3.1.1
+ nth-check@2.1.1:
+ dependencies:
+ boolbase: 1.0.0
+
nwsapi@2.2.16: {}
object-assign@4.1.1: {}
@@ -13506,6 +14403,8 @@ snapshots:
dependencies:
p-map: 2.1.0
+ p-finally@1.0.0: {}
+
p-limit@2.3.0:
dependencies:
p-try: 2.2.0
@@ -13536,6 +14435,15 @@ snapshots:
p-map@2.1.0: {}
+ p-queue@6.6.2:
+ dependencies:
+ eventemitter3: 4.0.7
+ p-timeout: 3.2.0
+
+ p-timeout@3.2.0:
+ dependencies:
+ p-finally: 1.0.0
+
p-try@2.2.0: {}
package-json-from-dist@1.0.1: {}
@@ -13657,6 +14565,8 @@ snapshots:
pify@4.0.1: {}
+ pify@5.0.0: {}
+
pirates@4.0.6: {}
pkg-dir@3.0.0:
@@ -13683,9 +14593,215 @@ snapshots:
possible-typed-array-names@1.0.0: {}
- postcss@8.5.1:
+ postcss-calc@8.2.4(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+ postcss-selector-parser: 6.1.2
+ postcss-value-parser: 4.2.0
+
+ postcss-colormin@5.3.1(postcss@8.5.6):
+ dependencies:
+ browserslist: 4.24.5
+ caniuse-api: 3.0.0
+ colord: 2.9.3
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+
+ postcss-convert-values@5.1.3(postcss@8.5.6):
+ dependencies:
+ browserslist: 4.24.5
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+
+ postcss-discard-comments@5.1.2(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+
+ postcss-discard-duplicates@5.1.0(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+
+ postcss-discard-empty@5.1.1(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+
+ postcss-discard-overridden@5.1.0(postcss@8.5.6):
dependencies:
- nanoid: 3.3.8
+ postcss: 8.5.6
+
+ postcss-load-config@3.1.4(postcss@8.5.6):
+ dependencies:
+ lilconfig: 2.1.0
+ yaml: 1.10.2
+ optionalDependencies:
+ postcss: 8.5.6
+
+ postcss-merge-longhand@5.1.7(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+ stylehacks: 5.1.1(postcss@8.5.6)
+
+ postcss-merge-rules@5.1.4(postcss@8.5.6):
+ dependencies:
+ browserslist: 4.24.5
+ caniuse-api: 3.0.0
+ cssnano-utils: 3.1.0(postcss@8.5.6)
+ postcss: 8.5.6
+ postcss-selector-parser: 6.1.2
+
+ postcss-minify-font-values@5.1.0(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+
+ postcss-minify-gradients@5.1.1(postcss@8.5.6):
+ dependencies:
+ colord: 2.9.3
+ cssnano-utils: 3.1.0(postcss@8.5.6)
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+
+ postcss-minify-params@5.1.4(postcss@8.5.6):
+ dependencies:
+ browserslist: 4.24.5
+ cssnano-utils: 3.1.0(postcss@8.5.6)
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+
+ postcss-minify-selectors@5.2.1(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+ postcss-selector-parser: 6.1.2
+
+ postcss-modules-extract-imports@3.1.0(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+
+ postcss-modules-local-by-default@4.2.0(postcss@8.5.6):
+ dependencies:
+ icss-utils: 5.1.0(postcss@8.5.6)
+ postcss: 8.5.6
+ postcss-selector-parser: 7.1.0
+ postcss-value-parser: 4.2.0
+
+ postcss-modules-scope@3.2.1(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+ postcss-selector-parser: 7.1.0
+
+ postcss-modules-values@4.0.0(postcss@8.5.6):
+ dependencies:
+ icss-utils: 5.1.0(postcss@8.5.6)
+ postcss: 8.5.6
+
+ postcss-modules@4.3.1(postcss@8.5.6):
+ dependencies:
+ generic-names: 4.0.0
+ icss-replace-symbols: 1.1.0
+ lodash.camelcase: 4.3.0
+ postcss: 8.5.6
+ postcss-modules-extract-imports: 3.1.0(postcss@8.5.6)
+ postcss-modules-local-by-default: 4.2.0(postcss@8.5.6)
+ postcss-modules-scope: 3.2.1(postcss@8.5.6)
+ postcss-modules-values: 4.0.0(postcss@8.5.6)
+ string-hash: 1.1.3
+
+ postcss-normalize-charset@5.1.0(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+
+ postcss-normalize-display-values@5.1.0(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+
+ postcss-normalize-positions@5.1.1(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+
+ postcss-normalize-repeat-style@5.1.1(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+
+ postcss-normalize-string@5.1.0(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+
+ postcss-normalize-timing-functions@5.1.0(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+
+ postcss-normalize-unicode@5.1.1(postcss@8.5.6):
+ dependencies:
+ browserslist: 4.24.5
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+
+ postcss-normalize-url@5.1.0(postcss@8.5.6):
+ dependencies:
+ normalize-url: 6.1.0
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+
+ postcss-normalize-whitespace@5.1.1(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+
+ postcss-ordered-values@5.1.3(postcss@8.5.6):
+ dependencies:
+ cssnano-utils: 3.1.0(postcss@8.5.6)
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+
+ postcss-reduce-initial@5.1.2(postcss@8.5.6):
+ dependencies:
+ browserslist: 4.24.5
+ caniuse-api: 3.0.0
+ postcss: 8.5.6
+
+ postcss-reduce-transforms@5.1.0(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+
+ 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
+ util-deprecate: 1.0.2
+
+ postcss-selector-parser@7.1.0:
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+
+ postcss-svgo@5.1.0(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+ svgo: 2.8.0
+
+ postcss-unique-selectors@5.1.1(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+ postcss-selector-parser: 6.1.2
+
+ postcss-value-parser@4.2.0: {}
+
+ postcss@8.5.6:
+ dependencies:
+ nanoid: 3.3.11
picocolors: 1.1.1
source-map-js: 1.2.1
@@ -13715,6 +14831,8 @@ snapshots:
process-nextick-args@1.0.7: {}
+ promise.series@0.2.0: {}
+
prompts@2.4.2:
dependencies:
kleur: 3.0.3
@@ -14099,6 +15217,8 @@ snapshots:
require-directory@2.1.1: {}
+ require-from-string@2.0.2: {}
+
requires-port@1.0.0: {}
resolve-alpn@1.2.1: {}
@@ -14174,6 +15294,29 @@ snapshots:
dependencies:
rollup: 2.79.2
+ rollup-plugin-postcss@4.0.2(postcss@8.5.6):
+ dependencies:
+ chalk: 4.1.2
+ concat-with-sourcemaps: 1.1.0
+ cssnano: 5.1.15(postcss@8.5.6)
+ import-cwd: 3.0.0
+ p-queue: 6.6.2
+ pify: 5.0.0
+ postcss: 8.5.6
+ postcss-load-config: 3.1.4(postcss@8.5.6)
+ postcss-modules: 4.3.1(postcss@8.5.6)
+ promise.series: 0.2.0
+ resolve: 1.22.10
+ rollup-pluginutils: 2.8.2
+ safe-identifier: 0.4.2
+ style-inject: 0.3.0
+ transitivePeerDependencies:
+ - ts-node
+
+ rollup-pluginutils@2.8.2:
+ dependencies:
+ estree-walker: 0.6.1
+
rollup@2.79.2:
optionalDependencies:
fsevents: 2.3.3
@@ -14221,6 +15364,8 @@ snapshots:
safe-buffer@5.2.1: {}
+ safe-identifier@0.4.2: {}
+
safe-push-apply@1.0.0:
dependencies:
es-errors: 1.3.0
@@ -14332,6 +15477,12 @@ snapshots:
slashes@3.0.12: {}
+ slice-ansi@4.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+
sliced@1.0.1: {}
smob@1.5.0: {}
@@ -14395,6 +15546,8 @@ snapshots:
stable-hash@0.0.4: {}
+ stable@0.1.8: {}
+
stack-utils@2.0.6:
dependencies:
escape-string-regexp: 2.0.0
@@ -14545,6 +15698,73 @@ snapshots:
strip-json-comments@3.1.1: {}
+ style-inject@0.3.0: {}
+
+ stylehacks@5.1.1(postcss@8.5.6):
+ dependencies:
+ browserslist: 4.24.5
+ postcss: 8.5.6
+ postcss-selector-parser: 6.1.2
+
+ stylelint-config-recommended@17.0.0(stylelint@16.25.0(typescript@5.7.3)):
+ dependencies:
+ stylelint: 16.25.0(typescript@5.7.3)
+
+ stylelint-config-standard@39.0.0(stylelint@16.25.0(typescript@5.7.3)):
+ dependencies:
+ stylelint: 16.25.0(typescript@5.7.3)
+ stylelint-config-recommended: 17.0.0(stylelint@16.25.0(typescript@5.7.3))
+
+ stylelint-value-no-unknown-custom-properties@6.0.1(stylelint@16.25.0(typescript@5.7.3)):
+ dependencies:
+ postcss-value-parser: 4.2.0
+ resolve: 1.22.10
+ stylelint: 16.25.0(typescript@5.7.3)
+
+ stylelint@16.25.0(typescript@5.7.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.7.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
+
supports-color@7.2.0:
dependencies:
has-flag: 4.0.0
@@ -14555,8 +15775,25 @@ snapshots:
supports-color@9.4.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-tags@1.0.0: {}
+
+ svgo@2.8.0:
+ dependencies:
+ '@trysound/sax': 0.2.0
+ commander: 7.2.0
+ css-select: 4.3.0
+ css-tree: 1.1.3
+ csso: 4.2.0
+ picocolors: 1.1.1
+ stable: 0.1.8
+
swc_mut_cjs_exports@10.7.0(@swc/core@1.11.22(@swc/helpers@0.5.17))(@swc/jest@0.2.38(@swc/core@1.11.22(@swc/helpers@0.5.17))):
dependencies:
'@swc/core': 1.11.22(@swc/helpers@0.5.17)
@@ -14569,6 +15806,14 @@ snapshots:
'@pkgr/core': 0.1.1
tslib: 2.8.1
+ 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
+
tapable@2.2.1: {}
temporal-polyfill@0.3.0:
@@ -15124,7 +16369,7 @@ snapshots:
vite@6.0.11(@types/node@22.13.0)(terser@5.39.0)(yaml@2.7.0):
dependencies:
esbuild: 0.24.2
- postcss: 8.5.1
+ postcss: 8.5.6
rollup: 4.34.6
optionalDependencies:
'@types/node': 22.13.0
@@ -15251,6 +16496,10 @@ 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
@@ -15323,6 +16572,8 @@ snapshots:
yallist@4.0.0: {}
+ yaml@1.10.2: {}
+
yaml@2.7.0: {}
yargs-parser@20.2.9: {}
diff --git a/stylelint.config.mjs b/stylelint.config.mjs
new file mode 100644
index 0000000000..51ad76d635
--- /dev/null
+++ b/stylelint.config.mjs
@@ -0,0 +1,19 @@
+/** @type {import("stylelint").Config} */
+export default {
+ extends: ["stylelint-config-standard"],
+ plugins: ["stylelint-value-no-unknown-custom-properties"],
+ rules: {
+ // Standard config overrides
+ "custom-property-pattern": null,
+ "selector-class-pattern": "^[a-z]+([A-Z][a-z0-9]+)*$",
+ // Custom plugins
+ "csstools/value-no-unknown-custom-properties": [
+ true,
+ {
+ importFrom: [
+ "./packages/wonder-blocks-tokens/dist/css/index.css",
+ ],
+ },
+ ],
+ },
+};
diff --git a/tsconfig.json b/tsconfig.json
index 4bf2954221..f603b4a913 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -7,7 +7,10 @@
"noEmit": true,
"paths": {
- "@khanacademy/*": ["./packages/*/src"]
+ "@khanacademy/*": ["./packages/*/src"],
+ "aphrodite": [
+ "./node_modules/aphrodite/no-important"
+ ],
}
}
}
diff --git a/vite.config.ts b/vite.config.ts
index ef1e4f98dc..d9a075b0a4 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -24,6 +24,10 @@ export default defineConfig({
"./packages/wonder-blocks$1/src",
),
},
+ {
+ find: /^aphrodite$/,
+ replacement: "aphrodite/no-important",
+ },
],
},
});