diff --git a/.storybook/test-runner.ts b/.storybook/test-runner.ts index dbc872ef..f63b91ec 100644 --- a/.storybook/test-runner.ts +++ b/.storybook/test-runner.ts @@ -1,6 +1,6 @@ import type { TestRunnerConfig } from "@storybook/test-runner"; -const flakyStories = ["components-status", "components-meganav--signed-in"]; +const flakyStories = ["components-status", "components-meganav"]; const config: TestRunnerConfig = { async postVisit(page, context) { diff --git a/package.json b/package.json index 601bbc68..095f4143 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ably/ui", - "version": "14.6.1", + "version": "14.6.2", "description": "Home of the Ably design system library ([design.ably.com](https://design.ably.com)). It provides a showcase, development/test environment and a publishing pipeline for different distributables.", "repository": { "type": "git", @@ -31,6 +31,7 @@ "@types/dompurify": "^3.0.5", "@types/js-cookie": "^3.0.6", "@types/lodash.throttle": "^4.1.9", + "@types/react-dom": "^18.3.0", "@typescript-eslint/eslint-plugin": "^7.0.0", "@typescript-eslint/parser": "^6.21.0", "@vitejs/plugin-react": "^4.2.1", @@ -78,7 +79,7 @@ "js-cookie": "^3.0.5", "lodash.throttle": "^4.1.1", "react": "^18.2.0", - "react-dom": "^18.2.0", + "react-dom": "^18.3.1", "redux": "^4.0.5", "scroll-lock": "^2.1.4" }, diff --git a/src/core/Accordion.tsx b/src/core/Accordion.tsx index 0d98e746..cfd4c4ab 100644 --- a/src/core/Accordion.tsx +++ b/src/core/Accordion.tsx @@ -1,6 +1,5 @@ import React, { useState, ReactNode, useRef, useEffect } from "react"; import Icon from "./Icon"; -import throttle from "lodash.throttle"; import type { IconName } from "./Icon/types"; import type { ColorClass } from "./styles/colors/types"; import type { @@ -49,15 +48,23 @@ const themeClasses: Record = { selectableText: "text-white", }, transparent: { - bg: "bg-white", - hoverBg: "hover:bg-white", + bg: "bg-transparent", + hoverBg: "hover:bg-transparent", text: "text-neutral-1000", toggleIconColor: "text-dark-grey", + border: "border-neutral-500 border-b last:border-none", + }, + darkTransparent: { + bg: "bg-transparent", + hoverBg: "hover:bg-transparent", + text: "text-neutral-000", + toggleIconColor: "text-orange-600", + border: "border-neutral-900 border-b last:border-none", }, }; const isNonTransparentTheme = (theme: AccordionTheme) => - theme !== "transparent"; + !["transparent", "darkTransparent"].includes(theme); const AccordionRow = ({ name, @@ -74,22 +81,34 @@ const AccordionRow = ({ const [contentHeight, setContentHeight] = useState(0); useEffect(() => { - const handleHeight = throttle(() => { + const resizeObserver = new ResizeObserver(() => { if (rowRef.current) { setContentHeight(rowRef.current.scrollHeight + 16); } - }, 250); + }); - handleHeight(); + if (rowRef.current) { + resizeObserver.observe(rowRef.current); + } - window.addEventListener("resize", handleHeight); - return () => window.removeEventListener("resize", handleHeight); + return () => { + if (rowRef.current) { + resizeObserver.unobserve(rowRef.current); + } + }; }, []); const { selectable, sticky } = options || {}; - const { text, bg, hoverBg, toggleIconColor, selectableBg, selectableText } = - themeClasses[theme]; + const { + text, + bg, + hoverBg, + toggleIconColor, + selectableBg, + selectableText, + border, + } = themeClasses[theme]; const bgClasses: string = (selectable && open && selectableBg) || `${bg} ${hoverBg}`; @@ -97,9 +116,7 @@ const AccordionRow = ({ const textClass: ColorClass = (selectable && open && selectableText) || text; return ( -
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+ + +
+

+ light +

+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+
+
+

+ transparent +

+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+
+
+

+ darkTransparent +

+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+
+ +`; + +exports[`JS Components/Accordion WithRowIcons smoke-test 1`] = ` +
+
+

+ dark +

+
+
+ +
+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin scelerisque congue risus id lobortis. Vivamus blandit dolor at ultricies cursus. Phasellus pharetra nunc erat, quis porttitor mauris faucibus in. Donec feugiat dapibus orci et blandit. Duis eleifend accumsan est nec euismod. Proin imperdiet malesuada lacus, a aliquam eros aliquet nec. Sed eu dolor finibus, sodales nisl a, egestas mi. In semper interdum lacinia. Duis malesuada diam quis purus blandit, sit amet imperdiet neque accumsan. Morbi viverra vitae risus ut pellentesque. Praesent ac blandit augue. Aliquam purus lectus, lacinia in semper vitae, dictum eu felis. Donec vel pulvinar eros, id facilisis neque. Aenean odio arcu, accumsan vel est in, lobortis rhoncus ligula. Pellentesque sit amet odio velit. +

+
+
+
+
+ -
@@ -2352,7 +3598,7 @@ exports[`JS Components/Accordion WithRowIcons smoke-test 1`] = `
-
+
-
@@ -2384,7 +3630,7 @@ exports[`JS Components/Accordion WithRowIcons smoke-test 1`] = `
-
+
-
@@ -2416,7 +3662,7 @@ exports[`JS Components/Accordion WithRowIcons smoke-test 1`] = `
-
+
-
@@ -2450,14 +3696,14 @@ exports[`JS Components/Accordion WithRowIcons smoke-test 1`] = `
-
+

light

-
+
-
@@ -2489,7 +3735,7 @@ exports[`JS Components/Accordion WithRowIcons smoke-test 1`] = `
-
+
-
@@ -2521,7 +3767,7 @@ exports[`JS Components/Accordion WithRowIcons smoke-test 1`] = `
-
+
-
@@ -2553,7 +3799,7 @@ exports[`JS Components/Accordion WithRowIcons smoke-test 1`] = `
-
+
-
@@ -2585,7 +3831,7 @@ exports[`JS Components/Accordion WithRowIcons smoke-test 1`] = `
-
+
-
@@ -2619,16 +3865,16 @@ exports[`JS Components/Accordion WithRowIcons smoke-test 1`] = `
-
+

transparent

-
+
-
@@ -2658,9 +3904,9 @@ exports[`JS Components/Accordion WithRowIcons smoke-test 1`] = `
-
+
-
@@ -2690,9 +3936,9 @@ exports[`JS Components/Accordion WithRowIcons smoke-test 1`] = `
-
+
-
@@ -2722,9 +3968,9 @@ exports[`JS Components/Accordion WithRowIcons smoke-test 1`] = `
-
+
-
@@ -2754,9 +4000,9 @@ exports[`JS Components/Accordion WithRowIcons smoke-test 1`] = `
-
+
-
+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin scelerisque congue risus id lobortis. Vivamus blandit dolor at ultricies cursus. Phasellus pharetra nunc erat, quis porttitor mauris faucibus in. Donec feugiat dapibus orci et blandit. Duis eleifend accumsan est nec euismod. Proin imperdiet malesuada lacus, a aliquam eros aliquet nec. Sed eu dolor finibus, sodales nisl a, egestas mi. In semper interdum lacinia. Duis malesuada diam quis purus blandit, sit amet imperdiet neque accumsan. Morbi viverra vitae risus ut pellentesque. Praesent ac blandit augue. Aliquam purus lectus, lacinia in semper vitae, dictum eu felis. Donec vel pulvinar eros, id facilisis neque. Aenean odio arcu, accumsan vel est in, lobortis rhoncus ligula. Pellentesque sit amet odio velit. +

+
+
+
+
+
+
+

+ darkTransparent +

+
+
+ +
+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin scelerisque congue risus id lobortis. Vivamus blandit dolor at ultricies cursus. Phasellus pharetra nunc erat, quis porttitor mauris faucibus in. Donec feugiat dapibus orci et blandit. Duis eleifend accumsan est nec euismod. Proin imperdiet malesuada lacus, a aliquam eros aliquet nec. Sed eu dolor finibus, sodales nisl a, egestas mi. In semper interdum lacinia. Duis malesuada diam quis purus blandit, sit amet imperdiet neque accumsan. Morbi viverra vitae risus ut pellentesque. Praesent ac blandit augue. Aliquam purus lectus, lacinia in semper vitae, dictum eu felis. Donec vel pulvinar eros, id facilisis neque. Aenean odio arcu, accumsan vel est in, lobortis rhoncus ligula. Pellentesque sit amet odio velit. +

+
+
+
+
+ +
+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin scelerisque congue risus id lobortis. Vivamus blandit dolor at ultricies cursus. Phasellus pharetra nunc erat, quis porttitor mauris faucibus in. Donec feugiat dapibus orci et blandit. Duis eleifend accumsan est nec euismod. Proin imperdiet malesuada lacus, a aliquam eros aliquet nec. Sed eu dolor finibus, sodales nisl a, egestas mi. In semper interdum lacinia. Duis malesuada diam quis purus blandit, sit amet imperdiet neque accumsan. Morbi viverra vitae risus ut pellentesque. Praesent ac blandit augue. Aliquam purus lectus, lacinia in semper vitae, dictum eu felis. Donec vel pulvinar eros, id facilisis neque. Aenean odio arcu, accumsan vel est in, lobortis rhoncus ligula. Pellentesque sit amet odio velit. +

+
+
+
+
+ +
+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin scelerisque congue risus id lobortis. Vivamus blandit dolor at ultricies cursus. Phasellus pharetra nunc erat, quis porttitor mauris faucibus in. Donec feugiat dapibus orci et blandit. Duis eleifend accumsan est nec euismod. Proin imperdiet malesuada lacus, a aliquam eros aliquet nec. Sed eu dolor finibus, sodales nisl a, egestas mi. In semper interdum lacinia. Duis malesuada diam quis purus blandit, sit amet imperdiet neque accumsan. Morbi viverra vitae risus ut pellentesque. Praesent ac blandit augue. Aliquam purus lectus, lacinia in semper vitae, dictum eu felis. Donec vel pulvinar eros, id facilisis neque. Aenean odio arcu, accumsan vel est in, lobortis rhoncus ligula. Pellentesque sit amet odio velit. +

+
+
+
+
+ +
+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin scelerisque congue risus id lobortis. Vivamus blandit dolor at ultricies cursus. Phasellus pharetra nunc erat, quis porttitor mauris faucibus in. Donec feugiat dapibus orci et blandit. Duis eleifend accumsan est nec euismod. Proin imperdiet malesuada lacus, a aliquam eros aliquet nec. Sed eu dolor finibus, sodales nisl a, egestas mi. In semper interdum lacinia. Duis malesuada diam quis purus blandit, sit amet imperdiet neque accumsan. Morbi viverra vitae risus ut pellentesque. Praesent ac blandit augue. Aliquam purus lectus, lacinia in semper vitae, dictum eu felis. Donec vel pulvinar eros, id facilisis neque. Aenean odio arcu, accumsan vel est in, lobortis rhoncus ligula. Pellentesque sit amet odio velit. +

+
+
+
+
+ +
diff --git a/src/core/Accordion/types.ts b/src/core/Accordion/types.ts index 1a2732ef..f4701b0f 100644 --- a/src/core/Accordion/types.ts +++ b/src/core/Accordion/types.ts @@ -19,7 +19,12 @@ export type AccordionIcons = { }; }; -export const accordionThemes = ["dark", "light", "transparent"] as const; +export const accordionThemes = [ + "dark", + "light", + "transparent", + "darkTransparent", +] as const; export type AccordionTheme = (typeof accordionThemes)[number]; @@ -30,6 +35,7 @@ export type AccordionThemeColors = { toggleIconColor: ColorClass; selectableBg?: ColorClass; selectableText?: ColorClass; + border?: string; }; export type AccordionOptions = { diff --git a/src/core/Expander.tsx b/src/core/Expander.tsx index e1d2980f..dd139d14 100644 --- a/src/core/Expander.tsx +++ b/src/core/Expander.tsx @@ -1,4 +1,10 @@ -import React, { PropsWithChildren, useEffect, useRef, useState } from "react"; +import React, { + PropsWithChildren, + ReactNode, + useEffect, + useRef, + useState, +} from "react"; import throttle from "lodash.throttle"; type ExpanderProps = { @@ -6,8 +12,8 @@ type ExpanderProps = { className?: string; fadeClassName?: string; controlsClassName?: string; - controlsOpenedLabel?: string; - controlsClosedLabel?: string; + controlsOpenedLabel?: string | ReactNode; + controlsClosedLabel?: string | ReactNode; }; const Expander = ({ diff --git a/src/core/Expander/Expander.stories.tsx b/src/core/Expander/Expander.stories.tsx index 080908bd..ae44e9c2 100644 --- a/src/core/Expander/Expander.stories.tsx +++ b/src/core/Expander/Expander.stories.tsx @@ -1,6 +1,7 @@ import React from "react"; import { userEvent, within, expect, waitFor } from "@storybook/test"; import Expander from "../Expander"; +import Icon from "../Icon"; export default { title: "JS Components/Expander", @@ -136,7 +137,12 @@ export const OverriddenControls = { render: () => ( + Away with you, knave.{" "} + + + } controlsClosedLabel="Give me more!" > {longContentInner} diff --git a/src/core/Expander/__snapshots__/Expander.stories.tsx.snap b/src/core/Expander/__snapshots__/Expander.stories.tsx.snap index bb8e67e6..3ff759c5 100644 --- a/src/core/Expander/__snapshots__/Expander.stories.tsx.snap +++ b/src/core/Expander/__snapshots__/Expander.stories.tsx.snap @@ -309,7 +309,15 @@ exports[`JS Components/Expander OverriddenControls play-test 1`] = ` data-testid="expander-controls" class="mt-16 cursor-pointer font-bold text-gui-blue-default-light hover:text-gui-blue-hover-light ui-btn text-white w-full ui-text-p1 border rounded-xl hover:text-white" > - Away with you, knave. + + Away with you, knave. + + + + +
`; diff --git a/src/core/Meganav/__snapshots__/Meganav.stories.tsx.snap b/src/core/Meganav/__snapshots__/Meganav.stories.tsx.snap deleted file mode 100644 index e513d1c9..00000000 --- a/src/core/Meganav/__snapshots__/Meganav.stories.tsx.snap +++ /dev/null @@ -1,2424 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`JS Components/Meganav Default smoke-test 1`] = ` - -`; diff --git a/src/core/Pricing/PricingCards.stories.tsx b/src/core/Pricing/PricingCards.stories.tsx index 51a5b320..8fd625f8 100644 --- a/src/core/Pricing/PricingCards.stories.tsx +++ b/src/core/Pricing/PricingCards.stories.tsx @@ -17,7 +17,9 @@ export default { }; const Template = ({ data, theme = "dark", delimiter }: PricingCardsProps) => ( -
+
); diff --git a/src/core/Pricing/PricingCards.tsx b/src/core/Pricing/PricingCards.tsx index 3d701cce..6522bcc4 100644 --- a/src/core/Pricing/PricingCards.tsx +++ b/src/core/Pricing/PricingCards.tsx @@ -45,110 +45,109 @@ const PricingCards = ({ {delimiterColumn(index)}
+
+
+

+ {title.content} +

+

+ {description.content} +

+
-
-

- {title.content} -

-

+ {Number.isNaN(Number(price.amount)) ? "" : "$"} + {price.amount} +

+
{price.content}
+
+ {cta ? ( +
+ - {description.content} -

+ {cta.text} +
-
+ ) : null} +
+
+ {sections.map(({ title, items, listItemColors, cta }) => ( +

- {Number.isNaN(Number(price.amount)) ? "" : "$"} - {price.amount} + {title}

-
{price.content}
-
- {cta ? ( -
- - {cta.text} - -
- ) : null} -
-
- {sections.map(({ title, items, listItemColors, cta }) => ( -
-

- {title} -

-
- {items.map((item, index) => - Array.isArray(item) ? ( +
+ {items.map((item, index) => + Array.isArray(item) ? ( +
0 && index % 2 === 0 ? `${t("bg-blue-900")} rounded-md` : ""}`} + > + {item.map((subItem, subIndex) => ( + + {subItem} + + ))} +
+ ) : ( +
+ {listItemColors ? ( + + ) : null}
0 && index % 2 === 0 ? `${t("bg-blue-900")} rounded-md` : ""}`} + className={`flex-1 ${listItemColors ? "ui-text-p3" : "ui-text-p2"} font-medium ${t("text-neutral-300")}`} > - {item.map((subItem, subIndex) => ( - - {subItem} - - ))} + {item}
- ) : ( -
- {listItemColors ? ( - - ) : null} -
- {item} -
-
- ), - )} -
- {cta ? ( -
-
- •••
- - {cta.text} - -
- ) : null} + ), + )}
- ))} -
+ {cta ? ( +
+
+ ••• +
+ + {cta.text} + +
+ ) : null} +
+ ))}
{delimiterColumn(index)} diff --git a/src/core/Pricing/__snapshots__/PricingCards.stories.tsx.snap b/src/core/Pricing/__snapshots__/PricingCards.stories.tsx.snap index 1e420eae..661cc334 100644 --- a/src/core/Pricing/__snapshots__/PricingCards.stories.tsx.snap +++ b/src/core/Pricing/__snapshots__/PricingCards.stories.tsx.snap @@ -1,91 +1,91 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Features/Pricing Cards ConsumptionDarkMode smoke-test 1`] = ` -
+
-
-
-
-
-

- Messages -

-

- Messages contain the data that a client is communicating, such as the contents of a chat message. -

-
-
-

- $2.5 -

-
- per million -
+
+
+
+
+
+

+ Messages +

+

+ Messages contain the data that a client is communicating, such as the contents of a chat message. +

+
+
+

+ $2.5 +

+
+ per million
-
-
-

- Volume discounts -

-
-
- - Consumption - - - $/million msgs - -
-
- - First 50 million msgs - - - $2.50 - -
-
- - Next 450 million msgs - - - $2.25 - -
-
- - Next 4.5 billion msgs - - - $1.95 - -
-
- - Next 15 billion msgs - - - $1.65 - -
-
- - Next 30 billion msgs - - - $1.40 - -
-
- - Over 50 billion msgs - - - $1.25 - -
+
+
+
+

+ Volume discounts +

+
+
+ + Consumption + + + $/million msgs + +
+
+ + First 50 million msgs + + + $2.50 + +
+
+ + Next 450 million msgs + + + $2.25 + +
+
+ + Next 4.5 billion msgs + + + $1.95 + +
+
+ + Next 15 billion msgs + + + $1.65 + +
+
+ + Next 30 billion msgs + + + $1.40 + +
+
+ + Over 50 billion msgs + + + $1.25 +
@@ -99,88 +99,88 @@ exports[`Features/Pricing Cards ConsumptionDarkMode smoke-test 1`] = `
-
-
-
-
-

- Channels -

-

- Clients publish and receive messages on channels (also know as topics). We only charge for active channels. -

-
-
-

- $1 -

-
- per million mins -
+
+
+
+
+
+

+ Channels +

+

+ Clients publish and receive messages on channels (also know as topics). We only charge for active channels. +

+
+
+

+ $1 +

+
+ per million mins
-
-
-

- Volume discounts -

-
-
- - Consumption - - - $/million msgs - -
-
- - First 10 million msgs - - - $1.00 - -
-
- - Next 90 million msgs - - - $0.95 - -
-
- - Next 900 million msgs - - - $0.85 - -
-
- - Next 4 billion msgs - - - $0.75 - -
-
- - Next 10 billion msgs - - - $0.65 - -
-
- - Over 15 billion msgs - - - $0.60 - -
+
+
+
+

+ Volume discounts +

+
+
+ + Consumption + + + $/million msgs + +
+
+ + First 10 million msgs + + + $1.00 + +
+
+ + Next 90 million msgs + + + $0.95 + +
+
+ + Next 900 million msgs + + + $0.85 + +
+
+ + Next 4 billion msgs + + + $0.75 + +
+
+ + Next 10 billion msgs + + + $0.65 + +
+
+ + Over 15 billion msgs + + + $0.60 +
@@ -194,88 +194,88 @@ exports[`Features/Pricing Cards ConsumptionDarkMode smoke-test 1`] = `
-
-
-
-
-

- Connections -

-

- Clients establish and maintain a connection to the Ably service, typically over WebSockets. We only charge for active connections. -

-
-
-

- $1 -

-
- per million mins -
+
+
+
+
+
+

+ Connections +

+

+ Clients establish and maintain a connection to the Ably service, typically over WebSockets. We only charge for active connections. +

+
+
+

+ $1 +

+
+ per million mins
-
-
-

- Volume discounts -

-
-
- - Consumption - - - $/million msgs - -
-
- - First 10 million msgs - - - $1.00 - -
-
- - Next 90 million msgs - - - $0.95 - -
-
- - Next 900 million msgs - - - $0.85 - -
-
- - Next 4 billion msgs - - - $0.75 - -
-
- - Next 10 billion msgs - - - $0.65 - -
-
- - Over 15 billion msgs - - - $0.60 - -
+
+
+
+

+ Volume discounts +

+
+
+ + Consumption + + + $/million msgs + +
+
+ + First 10 million msgs + + + $1.00 + +
+
+ + Next 90 million msgs + + + $0.95 + +
+
+ + Next 900 million msgs + + + $0.85 + +
+
+ + Next 4 billion msgs + + + $0.75 + +
+
+ + Next 10 billion msgs + + + $0.65 + +
+
+ + Over 15 billion msgs + + + $0.60 +
@@ -290,88 +290,88 @@ exports[`Features/Pricing Cards ConsumptionLightMode smoke-test 1`] = `
-
-
-
-
-

- Messages -

-

- Messages contain the data that a client is communicating, such as the contents of a chat message. -

-
-
-

- $2.5 -

-
- per million -
+
+
+
+
+
+

+ Messages +

+

+ Messages contain the data that a client is communicating, such as the contents of a chat message. +

+
+
+

+ $2.5 +

+
+ per million
-
-
-

- Volume discounts -

-
-
- - Consumption - - - $/million msgs - -
-
- - First 50 million msgs - - - $2.50 - -
-
- - Next 450 million msgs - - - $2.25 - -
-
- - Next 4.5 billion msgs - - - $1.95 - -
-
- - Next 15 billion msgs - - - $1.65 - -
-
- - Next 30 billion msgs - - - $1.40 - -
-
- - Over 50 billion msgs - - - $1.25 - -
+
+
+
+

+ Volume discounts +

+
+
+ + Consumption + + + $/million msgs + +
+
+ + First 50 million msgs + + + $2.50 + +
+
+ + Next 450 million msgs + + + $2.25 + +
+
+ + Next 4.5 billion msgs + + + $1.95 + +
+
+ + Next 15 billion msgs + + + $1.65 + +
+
+ + Next 30 billion msgs + + + $1.40 + +
+
+ + Over 50 billion msgs + + + $1.25 +
@@ -385,88 +385,88 @@ exports[`Features/Pricing Cards ConsumptionLightMode smoke-test 1`] = `
-
-
-
-
-

- Channels -

-

- Clients publish and receive messages on channels (also know as topics). We only charge for active channels. -

-
-
-

- $1 -

-
- per million mins -
+
+
+
+
+
+

+ Channels +

+

+ Clients publish and receive messages on channels (also know as topics). We only charge for active channels. +

+
+
+

+ $1 +

+
+ per million mins
-
-
-

- Volume discounts -

-
-
- - Consumption - - - $/million msgs - -
-
- - First 10 million msgs - - - $1.00 - -
-
- - Next 90 million msgs - - - $0.95 - -
-
- - Next 900 million msgs - - - $0.85 - -
-
- - Next 4 billion msgs - - - $0.75 - -
-
- - Next 10 billion msgs - - - $0.65 - -
-
- - Over 15 billion msgs - - - $0.60 - -
+
+
+
+

+ Volume discounts +

+
+
+ + Consumption + + + $/million msgs + +
+
+ + First 10 million msgs + + + $1.00 + +
+
+ + Next 90 million msgs + + + $0.95 + +
+
+ + Next 900 million msgs + + + $0.85 + +
+
+ + Next 4 billion msgs + + + $0.75 + +
+
+ + Next 10 billion msgs + + + $0.65 + +
+
+ + Over 15 billion msgs + + + $0.60 +
@@ -480,88 +480,88 @@ exports[`Features/Pricing Cards ConsumptionLightMode smoke-test 1`] = `
-
-
-
-
-

- Connections -

-

- Clients establish and maintain a connection to the Ably service, typically over WebSockets. We only charge for active connections. -

-
-
-

- $1 -

-
- per million mins -
+
+
+
+
+
+

+ Connections +

+

+ Clients establish and maintain a connection to the Ably service, typically over WebSockets. We only charge for active connections. +

+
+
+

+ $1 +

+
+ per million mins
-
-
-

- Volume discounts -

-
-
- - Consumption - - - $/million msgs - -
-
- - First 10 million msgs - - - $1.00 - -
-
- - Next 90 million msgs - - - $0.95 - -
-
- - Next 900 million msgs - - - $0.85 - -
-
- - Next 4 billion msgs - - - $0.75 - -
-
- - Next 10 billion msgs - - - $0.65 - -
-
- - Over 15 billion msgs - - - $0.60 - -
+
+
+
+

+ Volume discounts +

+
+
+ + Consumption + + + $/million msgs + +
+
+ + First 10 million msgs + + + $1.00 + +
+
+ + Next 90 million msgs + + + $0.95 + +
+
+ + Next 900 million msgs + + + $0.85 + +
+
+ + Next 4 billion msgs + + + $0.75 + +
+
+ + Next 10 billion msgs + + + $0.65 + +
+
+ + Over 15 billion msgs + + + $0.60 +
@@ -573,33 +573,98 @@ exports[`Features/Pricing Cards ConsumptionLightMode smoke-test 1`] = ` `; exports[`Features/Pricing Cards PlansDarkMode smoke-test 1`] = ` -
+
-
-
-
-
-

- Free -

-

- Build a proof of concept. -

+
+
+
+
+
+

+ Free +

+

+ Build a proof of concept. +

+
+
+

+ $0 +

+
-
-

- $0 -

-
+
+ +
+
+
+

+ Capacity +

+
+
+
+ 200 concurrent channels +
+
+
+
+ 200 concurrent connections +
-
+
+
+

+ Includes +

+
+
+ + + + +
+ Community & email support (best effort) +
+
+
+ + + + +
+ No commitment +
+
+
+
-
-
-

- Capacity +

+
+
+
+
+
+
+

+ Standard +

+

+ Roll-out into production. +

+
+
+

+ $29 +

+
+

+ /month

-
-
-
- 200 concurrent channels -
-
-
-
- 200 concurrent connections -
-
-
-
-
-

- Includes +

+ + consumption

-
-
- - - - -
- Community & email support (best effort) -
+
+
+ +
+
+
+

+ Capacity +

+
+
+
+ 10k concurrent channels
-
- - - - -
- No commitment -
+
+
+
+ 10k concurrent connections
-
-
-
-
-
-
-
-
-

- Standard -

-

- Roll-out into production. -

-
-
-

- $29 -

-
-

+

+ Includes +

+
+
+ - /month -

-

- + consumption -

+ + + +
+ 1 day email support SLA +
+
+
+ + + + +
+ Uptime SLO +
- -
-
-

- Capacity +

+
+
+
+
+
+
+

+ Pro +

+

+ Scale with confidence. +

+
+
+

+ $399 +

+
+

+ /month

-
-
-
- 10k concurrent channels -
+

+ + consumption +

+
+
+ +
+
+
+

+ Capacity +

+
+
+
+ 50k concurrent channels
-
-
- 10k concurrent connections -
+
+
+
+ 50k concurrent connections
-
-
- 2.5k messages/second -
+
+
+
+ 10k messages/second
-
-

- Includes -

-
-
- - - - -
- 1 day email support SLA -
-
-
- - - - -
- Uptime SLO -
+
+
+

+ Includes +

+
+
+ + + + +
+ 4 hour email support SLA
-
- - + - See all features - - - - - + + + +
+ Datadog (lite) +
-
-
-
-
-
-
-
-
-

- Pro -

-

- Scale with confidence. -

-
-
-

- $399 -

-
-

+ - /month -

-

- + consumption -

+ + + +
+ Uptime SLO +
- -
-
-

- Capacity -

-
-
-
- 50k concurrent channels -
+
+
+
+
+
+
+
+

+ Enterprise +

+

+ Deliver without limits. +

+
+
+

+ Custom +

+
+
+
+ +
+
+
+

+ Capacity +

+
+
+
+ Unlimited concurrent channels
-
-
- 50k concurrent connections -
+
+
+
+ Unlimited concurrent connections
-
-
- 10k messages/second -
+
+
+
+ Unlimited messages/second
-
-

- Includes -

-
-
- - - - -
- 4 hour email support SLA -
+
+
+

+ Includes +

+
+
+ + + + +
+ 24/7 mission critical support
-
- - - - -
- Datadog (lite) -
+
+
+ + + + +
+ 99.999% uptime SLAs
-
- - - - -
- Uptime SLO -
+
+
+ + + + +
+ Committed use discounts
-
- -
-
-
-
-
-
-

- Enterprise -

-

- Deliver without limits. -

-
-
-

- Custom -

- -
-
-

- Capacity -

-
-
-
- Unlimited concurrent channels -
-
-
-
- Unlimited concurrent connections -
-
-
-
- Unlimited messages/second -
-
-
-
-
-

- Includes -

-
-
- - - - -
- 24/7 mission critical support -
-
-
- - - - -
- 99.999% uptime SLAs -
-
-
- - - - -
- Committed use discounts -
-
-
- - - - -
- Datadog -
-
-
- - - - -
- CNAME, SSO, & more -
-
-
-
- - - See all features - - - - - -
-
-
@@ -1060,30 +1060,95 @@ exports[`Features/Pricing Cards PlansLightMode smoke-test 1`] = `
-
-
-
-
-

- Free -

-

- Build a proof of concept. -

+
+
+
+
+
+

+ Free +

+

+ Build a proof of concept. +

+
+
+

+ $0 +

+
-
-

- $0 -

-
+
+ +
+
+
+

+ Capacity +

+
+
+
+ 200 concurrent channels +
+
+
+
+ 200 concurrent connections +
+
+
+
+
+

+ Includes +

+
+
+ + + + +
+ Community & email support (best effort) +
+
+
+ + + + +
+ No commitment +
- -
-
-

- Capacity +

+
+
+
+
+
+
+

+ Standard +

+

+ Roll-out into production. +

+
+
+

+ $29 +

+
+

+ /month

-
-
-
- 200 concurrent channels -
-
-
-
- 200 concurrent connections -
-
-
-
-
-

- Includes +

+ + consumption

-
-
- - - - -
- Community & email support (best effort) -
+
+
+ +
+
+
+

+ Capacity +

+
+
+
+ 10k concurrent channels
-
- - - - -
- No commitment -
+
+
+
+ 10k concurrent connections
-
-
-
-
-
-
-
-
-

- Standard -

-

- Roll-out into production. -

-
-
-

- $29 -

-
-

+

+ Includes +

+
+
+ + + + +
+ 1 day email support SLA +
+
+
+ - /month -

-

- + consumption -

+ + + +
+ Uptime SLO +
- -
-
-

- Capacity +

+
+
+
+
+
+
+

+ Pro +

+

+ Scale with confidence. +

+
+
+

+ $399 +

+
+

+ /month +

+

+ + consumption

-
-
-
- 10k concurrent channels -
+
+
+ +
+
+
+

+ Capacity +

+
+
+
+ 50k concurrent channels
-
-
- 10k concurrent connections -
+
+
+
+ 50k concurrent connections
-
-
- 2.5k messages/second -
+
+
+
+ 10k messages/second
-
-

- Includes -

-
-
- - - - -
- 1 day email support SLA -
-
-
- - - - -
- Uptime SLO -
+
+
+

+ Includes +

+
+
+ + + + +
+ 4 hour email support SLA
-
- - + - See all features - - - - - + + + +
+ Datadog (lite) +
-
-
-
-
-
-
-
-
-

- Pro -

-

- Scale with confidence. -

-
-
-

- $399 -

-
-

+ - /month -

-

- + consumption -

+ + + +
+ Uptime SLO +
- -
-
-

- Capacity -

-
-
-
- 50k concurrent channels -
+
+
+
+
+
+
+
+

+ Enterprise +

+

+ Deliver without limits. +

+
+
+

+ Custom +

+
+
+
+ +
+
+
+

+ Capacity +

+
+
+
+ Unlimited concurrent channels
-
-
- 50k concurrent connections -
+
+
+
+ Unlimited concurrent connections
-
-
- 10k messages/second -
+
+
+
+ Unlimited messages/second
-
-

- Includes -

-
-
- - - - -
- 4 hour email support SLA -
+
+
+

+ Includes +

+
+
+ + + + +
+ 24/7 mission critical support
-
- - - - -
- Datadog (lite) -
+
+
+ + + + +
+ 99.999% uptime SLAs
-
- - - - -
- Uptime SLO -
+
+
+ + + + +
+ Committed use discounts
-
- -
-
-
-
-
-
-

- Enterprise -

-

- Deliver without limits. -

-
-
-

- Custom -

- -
-
-

- Capacity -

-
-
-
- Unlimited concurrent channels -
-
-
-
- Unlimited concurrent connections -
-
-
-
- Unlimited messages/second -
-
-
-
-
-

- Includes -

-
-
- - - - -
- 24/7 mission critical support -
-
-
- - - - -
- 99.999% uptime SLAs -
-
-
- - - - -
- Committed use discounts -
-
-
- - - - -
- Datadog -
-
-
- - - - -
- CNAME, SSO, & more -
-
-
-
- - - See all features - - - - - -
-
-
diff --git a/src/core/Table/__snapshots__/Table.stories.tsx.snap b/src/core/Table/__snapshots__/Table.stories.tsx.snap index 4579579e..0cdb2b5a 100644 --- a/src/core/Table/__snapshots__/Table.stories.tsx.snap +++ b/src/core/Table/__snapshots__/Table.stories.tsx.snap @@ -68,7 +68,7 @@ exports[`JS Components/Table PricingPage smoke-test 1`] = ` aria-describedby="tooltip" class="ml-8 p-0 relative top-1 focus:outline-none " > - @@ -148,7 +148,7 @@ exports[`JS Components/Table PricingPage smoke-test 1`] = ` aria-describedby="tooltip" class="ml-8 p-0 relative top-1 focus:outline-none " > - @@ -228,7 +228,7 @@ exports[`JS Components/Table PricingPage smoke-test 1`] = ` aria-describedby="tooltip" class="ml-8 p-0 relative top-1 focus:outline-none " > - @@ -308,7 +308,7 @@ exports[`JS Components/Table PricingPage smoke-test 1`] = ` aria-describedby="tooltip" class="ml-8 p-0 relative top-1 focus:outline-none " > - @@ -388,7 +388,7 @@ exports[`JS Components/Table PricingPage smoke-test 1`] = ` aria-describedby="tooltip" class="ml-8 p-0 relative top-1 focus:outline-none " > - @@ -479,7 +479,7 @@ exports[`JS Components/Table PricingPage smoke-test 1`] = ` aria-describedby="tooltip" class="ml-8 p-0 relative top-1 focus:outline-none " > - @@ -559,7 +559,7 @@ exports[`JS Components/Table PricingPage smoke-test 1`] = ` aria-describedby="tooltip" class="ml-8 p-0 relative top-1 focus:outline-none " > - @@ -639,7 +639,7 @@ exports[`JS Components/Table PricingPage smoke-test 1`] = ` aria-describedby="tooltip" class="ml-8 p-0 relative top-1 focus:outline-none " > - @@ -719,7 +719,7 @@ exports[`JS Components/Table PricingPage smoke-test 1`] = ` aria-describedby="tooltip" class="ml-8 p-0 relative top-1 focus:outline-none " > - @@ -799,7 +799,7 @@ exports[`JS Components/Table PricingPage smoke-test 1`] = ` aria-describedby="tooltip" class="ml-8 p-0 relative top-1 focus:outline-none " > - @@ -890,7 +890,7 @@ exports[`JS Components/Table PricingPage smoke-test 1`] = ` aria-describedby="tooltip" class="ml-8 p-0 relative top-1 focus:outline-none " > - @@ -970,7 +970,7 @@ exports[`JS Components/Table PricingPage smoke-test 1`] = ` aria-describedby="tooltip" class="ml-8 p-0 relative top-1 focus:outline-none " > - @@ -1050,7 +1050,7 @@ exports[`JS Components/Table PricingPage smoke-test 1`] = ` aria-describedby="tooltip" class="ml-8 p-0 relative top-1 focus:outline-none " > - @@ -1130,7 +1130,7 @@ exports[`JS Components/Table PricingPage smoke-test 1`] = ` aria-describedby="tooltip" class="ml-8 p-0 relative top-1 focus:outline-none " > - @@ -1210,7 +1210,7 @@ exports[`JS Components/Table PricingPage smoke-test 1`] = ` aria-describedby="tooltip" class="ml-8 p-0 relative top-1 focus:outline-none " > - diff --git a/src/core/Tooltip.tsx b/src/core/Tooltip.tsx index 736f2ea4..95afcaf0 100644 --- a/src/core/Tooltip.tsx +++ b/src/core/Tooltip.tsx @@ -2,41 +2,77 @@ import React, { ButtonHTMLAttributes, HTMLAttributes, PropsWithChildren, - useEffect, + ReactNode, + useLayoutEffect, useRef, useState, } from "react"; +import { createPortal } from "react-dom"; import Icon from "./Icon"; +import { ColorClass, Theme } from "./styles/colors/types"; +import { determineThemeColor } from "./styles/colors/utils"; type TooltipProps = { + triggerElement?: ReactNode; triggerProps?: ButtonHTMLAttributes; tooltipProps?: HTMLAttributes; + theme?: Theme; } & HTMLAttributes; const Tooltip = ({ children, + triggerElement, triggerProps, tooltipProps, + theme = "dark", ...rest }: PropsWithChildren) => { const [open, setOpen] = useState(false); + const [fadeOut, setFadeOut] = useState(false); const [position, setPosition] = useState({ x: 0, y: 0 }); const offset = 8; const reference = useRef(null); const floating = useRef(null); - useEffect(() => { + const t = (color: ColorClass) => determineThemeColor("light", theme, color); + + useLayoutEffect(() => { if (open) { const floatingRect = floating.current?.getBoundingClientRect(); const referenceRect = reference.current?.getBoundingClientRect(); + const viewportWidth = window.innerWidth; + const viewportHeight = window.innerHeight; if (floatingRect && referenceRect) { - setPosition({ - x: - Math.min(floatingRect.width / 2, floatingRect.left) - - referenceRect.width / 2, - y: Math.min(floatingRect.height, floatingRect.top) + offset, - }); + let x = + referenceRect.left + + referenceRect.width / 2 - + floatingRect.width / 2 + + window.scrollX; + let y = + referenceRect.top - floatingRect.height - offset + window.scrollY; + + // Adjust if tooltip goes off the right edge + if (x + floatingRect.width > viewportWidth + window.scrollX) { + x = viewportWidth + window.scrollX - floatingRect.width - offset; + } + + // Adjust if tooltip goes off the left edge + if (x < window.scrollX) { + x = window.scrollX + offset; + } + + // Adjust if tooltip goes off the top edge + if (y < window.scrollY) { + y = referenceRect.bottom + offset + window.scrollY; + } + + // Adjust if tooltip goes off the bottom edge + if (y + floatingRect.height > viewportHeight + window.scrollY) { + y = referenceRect.top - floatingRect.height - offset + window.scrollY; + } + + setPosition({ x, y }); } } else { setPosition({ x: 0, y: 0 }); @@ -52,7 +88,13 @@ const Tooltip = ({ > - {open ? ( -
-
{children}
-
- ) : null} + {open + ? createPortal( +
+
{children}
+
, + document.body, + ) + : null}
); }; diff --git a/src/core/Tooltip/Tooltip.stories.tsx b/src/core/Tooltip/Tooltip.stories.tsx index ded05c1c..9320c29b 100644 --- a/src/core/Tooltip/Tooltip.stories.tsx +++ b/src/core/Tooltip/Tooltip.stories.tsx @@ -6,22 +6,37 @@ export default { component: Tooltip, tags: ["autodocs"], args: { - children: "Example content", + children: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", }, }; export const Central = { render: (args) => ( -
- {args.children} +
+
dark
+
light
+
+ {args.children} +
+
+ {args.children} +
), }; export const LeftBound = { render: (args) => ( -
- {args.children} +
+
dark
+
light
+
+ {args.children} +
+
+ {args.children} +
), }; diff --git a/src/core/Tooltip/__snapshots__/Tooltip.stories.tsx.snap b/src/core/Tooltip/__snapshots__/Tooltip.stories.tsx.snap index 9a262fdf..b891ec39 100644 --- a/src/core/Tooltip/__snapshots__/Tooltip.stories.tsx.snap +++ b/src/core/Tooltip/__snapshots__/Tooltip.stories.tsx.snap @@ -1,37 +1,83 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`JS Components/Tooltip Central smoke-test 1`] = ` -
-
- +
+
+
+
+ + + + + + +
`; exports[`JS Components/Tooltip LeftBound smoke-test 1`] = ` -
-
- +
+
+
+
+ + + + + + +
`; diff --git a/src/core/styles/colors/types.ts b/src/core/styles/colors/types.ts index fa36be44..aa5a812a 100644 --- a/src/core/styles/colors/types.ts +++ b/src/core/styles/colors/types.ts @@ -12,7 +12,7 @@ type ColorClassVariants = | "group-hover:" | "group-focus:"; -type ColorClassPrefixes = "bg" | "text" | "from" | "to"; +type ColorClassPrefixes = "bg" | "text" | "from" | "to" | "border"; export type Theme = "light" | "dark"; diff --git a/src/core/styles/colors/utils.ts b/src/core/styles/colors/utils.ts index 3206d5fb..2c6ea04f 100644 --- a/src/core/styles/colors/utils.ts +++ b/src/core/styles/colors/utils.ts @@ -26,8 +26,10 @@ export const determineThemeColor = ( } else { const splitColor = color.split("-"); - if (splitColor.length === 3) { - const [property, palette, variant] = splitColor; + if (splitColor.length >= 3) { + const property = splitColor.slice(0, splitColor.length - 2).join("-"); + const palette = splitColor[splitColor.length - 2]; + const variant = splitColor[splitColor.length - 1]; const paletteColors = Object.keys(colorNames).includes(palette) ? colorNames[palette as keyof typeof colorNames] diff --git a/tailwind.config.js b/tailwind.config.js index 957698c1..010519da 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -11,7 +11,7 @@ module.exports = { { pattern: /^(text|bg|from|to)-(neutral|orange|yellow|green|blue|violet|pink)-[\d]{1,2}00.*/, - variants: ["hover", "focus"], + variants: ["hover", "focus", "group-hover"], }, ], theme: { @@ -319,6 +319,16 @@ module.exports = { gridRowStart: { 8: "8", }, + keyframes: { + tooltipEntry: { + "0%": { transform: "translateY(8px)", opacity: 0 }, + "100%": { transform: "translateY(0)", opacity: 1 }, + }, + tooltipExit: { + "0%": { opacity: 1 }, + "100%": { opacity: 0 }, + }, + }, }, listStyleType: { none: "none", diff --git a/yarn.lock b/yarn.lock index 1c0ef626..e66ae173 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,7 +4,7 @@ "@adobe/css-tools@^4.4.0": version "4.4.0" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.4.0.tgz#728c484f4e10df03d5a3acd0d8adcbbebff8ad63" + resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz" integrity sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ== "@alloc/quick-lru@^5.2.0": @@ -151,11 +151,6 @@ dependencies: "@babel/types" "^7.24.7" -"@babel/helper-string-parser@^7.24.6": - version "7.24.6" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz" - integrity sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q== - "@babel/helper-string-parser@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz" @@ -166,11 +161,6 @@ resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz" integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== -"@babel/helper-validator-identifier@^7.24.6": - version "7.24.6" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz" - integrity sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw== - "@babel/helper-validator-identifier@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz" @@ -391,16 +381,7 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.24.0": - version "7.24.6" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.6.tgz" - integrity sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ== - dependencies: - "@babel/helper-string-parser" "^7.24.6" - "@babel/helper-validator-identifier" "^7.24.6" - to-fast-properties "^2.0.0" - -"@babel/types@^7.24.7", "@babel/types@^7.3.3": +"@babel/types@^7.0.0", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.24.0", "@babel/types@^7.24.7", "@babel/types@^7.3.3": version "7.24.7" resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz" integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== @@ -536,7 +517,7 @@ "@esbuild/darwin-arm64@0.23.1": version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz#05b17f91a87e557b468a9c75e9d85ab10c121b16" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz" integrity sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q== "@esbuild/darwin-x64@0.20.2": @@ -843,7 +824,7 @@ "@eslint/js@8.57.1": version "8.57.1" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz" integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== "@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": @@ -860,7 +841,7 @@ "@humanwhocodes/config-array@^0.13.0": version "0.13.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz" integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== dependencies: "@humanwhocodes/object-schema" "^2.0.3" @@ -874,7 +855,7 @@ "@humanwhocodes/object-schema@^2.0.3": version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== "@inquirer/confirm@^3.0.0": @@ -1184,12 +1165,7 @@ resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== @@ -1489,7 +1465,7 @@ "@storybook/addon-a11y@^8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/addon-a11y/-/addon-a11y-8.3.1.tgz#bdfc07f6ad4a51b5301e8b549584bb89e1c046dc" + resolved "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.3.1.tgz" integrity sha512-/Xu0v6kk2xugXdB4EJCbrVZDEt/rtJwHDb+MHhxsxp2FYF/ZRDKHinJzyUMMM4BIoJVZQ8BgFjp7P1hprS7yug== dependencies: "@storybook/addon-highlight" "8.3.1" @@ -1497,7 +1473,7 @@ "@storybook/addon-actions@8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-8.3.1.tgz#17998b880d6db75140752a4762b7e355f1cd9cd0" + resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.3.1.tgz" integrity sha512-f00NxBNBcsMHqtwsOpRbZKrNMLdUjnSg1G6zYdVxAG7NwxzgpqPZm37I36ebFmgz/WO2XQ3ihxzfV2IKFuiZ6g== dependencies: "@storybook/global" "^5.0.0" @@ -1508,7 +1484,7 @@ "@storybook/addon-backgrounds@8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-8.3.1.tgz#687c6543f49a8826fdcec7e368fadc75080e40f9" + resolved "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.3.1.tgz" integrity sha512-HPQElHIi5SMWJTOimYt27QaiPrrwTprVShVfq3gQKpUcDJhT4qMpI3Bn3JCtthPlXlUA+miZcNdNRTIc2XzhSA== dependencies: "@storybook/global" "^5.0.0" @@ -1517,7 +1493,7 @@ "@storybook/addon-controls@8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-8.3.1.tgz#82fb4a5f174a805db364c98ea27abdaafaa78570" + resolved "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.3.1.tgz" integrity sha512-zqVNRGQ2GS1ReDZ6YTAl+pLmnrOWwE3OUsByRfzHCYlmO55TxYi92HBTSbAXyWRKyqVUKH69PmbKGukc83aX2Q== dependencies: "@storybook/global" "^5.0.0" @@ -1527,7 +1503,7 @@ "@storybook/addon-docs@8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-8.3.1.tgz#b33fc3d9a18159c0ac95ad1597132216442ddb22" + resolved "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.3.1.tgz" integrity sha512-8ES7ThajpKDoMheAthnDDg/lXUsIxzV+EdHuE4WnRoiw+25XfYr9WIEuEpytRz/drouJhunOgOJV0kCPxZ3XgQ== dependencies: "@mdx-js/react" "^3.0.0" @@ -1545,7 +1521,7 @@ "@storybook/addon-essentials@^8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-8.3.1.tgz#1a1c9478e2e71b2235f269134d23c30ddd6f9fe8" + resolved "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.3.1.tgz" integrity sha512-5dNlKKJveBYqe1OT4dSE7V7ZjhULWnL238oeHz6wabjfL/l7W9MgLke5mxir4xSaAKf5sOg+QFK+RSmYYih4pg== dependencies: "@storybook/addon-actions" "8.3.1" @@ -1561,14 +1537,14 @@ "@storybook/addon-highlight@8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-8.3.1.tgz#27520e5374d3952a436985e6966f3e6c67a643b9" + resolved "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.3.1.tgz" integrity sha512-hEB4O1a76SGEJypjPwjvBT8e9+pWptAD6VY995gtsOrMLaV0213DJV8aEGJRXhELEk2sr8WUaoYhzxxtgD97KA== dependencies: "@storybook/global" "^5.0.0" "@storybook/addon-interactions@^8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/addon-interactions/-/addon-interactions-8.3.1.tgz#0f636b691c28e027c14b2aaedd8fc42199f7c35e" + resolved "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.3.1.tgz" integrity sha512-EQiemx7ZvI9r4WrWmKB7hvoh9XO+YJh61LNEBLrdnSnRITJKGFrJtqnfuSrvQXWxFVi6U1PtSqDzCV8z0IwK2g== dependencies: "@storybook/global" "^5.0.0" @@ -1579,7 +1555,7 @@ "@storybook/addon-links@^8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-8.3.1.tgz#48823e23334e934cd6b3ddd1564ae683e6885016" + resolved "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.3.1.tgz" integrity sha512-xhd1cXpHKn9mr87ImcEOV+YexDZcITzxFQoW2m5ocGkMyVFotK6NjOk/f9xsZAGIp4T7axsdEmwFNSovHgw91A== dependencies: "@storybook/csf" "^0.1.11" @@ -1588,7 +1564,7 @@ "@storybook/addon-measure@8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-8.3.1.tgz#a17bcb4608526bfa2e4eaccac1b35cf32545199a" + resolved "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.3.1.tgz" integrity sha512-XL7Rph0K0vggVcY7mxGws9SNzLJlCvzrPJdz1xZBKBLLd0fdpbR5Y+1oP1w/7qhZ9Xrg44VRVs4yUzCYUeK2OQ== dependencies: "@storybook/global" "^5.0.0" @@ -1596,7 +1572,7 @@ "@storybook/addon-outline@8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-8.3.1.tgz#18aba35ea9f610884dcd6225f72d0409be886d4a" + resolved "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.3.1.tgz" integrity sha512-bpxiffkMjWbrVAmbonzkGaTQp3zCECOP5B4Uw0oRfH7YVZgUsj1brRjVsMvBB1bwDP/ijj46X12OcZjqVEJP5Q== dependencies: "@storybook/global" "^5.0.0" @@ -1604,19 +1580,19 @@ "@storybook/addon-toolbars@8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-8.3.1.tgz#bdc58c9ef012300effc1a85eb51582ffe44be347" + resolved "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.3.1.tgz" integrity sha512-bjlQP9a56O4OCI4g9tDNm51frBcHaFpHma3MJ1vg302oj/XOQrec/am2sA0E6L1l4Hih2PkRYTamo3+GmQRJug== "@storybook/addon-viewport@8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-8.3.1.tgz#98b26bd6efd8833473171fecf62f6b404e63dd78" + resolved "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.3.1.tgz" integrity sha512-Z0Ls3ThjOx56KE4I5ampOtfK7G4/AAa0bOoaFq7+bLOomXMtZsC3yyXyrm5YQ6ZHmeP2XaXmOe52HDsvq+ko2Q== dependencies: memoizerific "^1.11.3" "@storybook/blocks@8.3.1", "@storybook/blocks@^8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-8.3.1.tgz#08c1480a11b09807bbdf4933479ca70deb371a6e" + resolved "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.3.1.tgz" integrity sha512-/wNLRVWR/edzHQAFvSW68VxHYmBcfXpL/XdO46I5Z1X/tXUd0rtgGZmliQ2jZ242FqxcT8guqqFGehbeYUns5w== dependencies: "@storybook/csf" "^0.1.11" @@ -1636,7 +1612,7 @@ "@storybook/builder-vite@8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/builder-vite/-/builder-vite-8.3.1.tgz#48c35386b0412296e7b2633959e1bb6fe05a75d6" + resolved "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.3.1.tgz" integrity sha512-IxfgIuQo9R+zcwoBE85PkCSKWGbPVStJgm1VHO/mixIdZExanbAhDS+L21nAZCelTvcsObTN76BN953v2LjVGg== dependencies: "@storybook/csf-plugin" "8.3.1" @@ -1669,12 +1645,12 @@ "@storybook/components@^8.0.0": version "8.3.0" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-8.3.0.tgz#45c39e5b6768efafe8e7dfd946c01617da59ae1a" + resolved "https://registry.npmjs.org/@storybook/components/-/components-8.3.0.tgz" integrity sha512-SO/iTkmWp3aYCIy8DEhRMoOn6K7lcKTPNC/YjTvOFFzwq/CLq86WNqz6aX+wV5n6MvWTs7evSwMoz7lp4Lc4sw== "@storybook/components@^8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-8.3.1.tgz#b40a16691462a032945ecb37194e6f713da6f680" + resolved "https://registry.npmjs.org/@storybook/components/-/components-8.3.1.tgz" integrity sha512-/CMqX40CpNOKow58oLyO/OvMhHiHCIvOGf/65lXHk/D9qECMvchFfA2/MH8H7HiJUIqoSPit194miBENK5kqdw== "@storybook/core-common@^8.0.0": @@ -1722,12 +1698,12 @@ "@storybook/core-events@^8.0.0": version "8.3.0" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-8.3.0.tgz#ef0cde01417478837e17e84ed53eda35237fe810" + resolved "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.3.0.tgz" integrity sha512-otjtIFMp0pZitxZIadA9ELRKHc2g4bPwakD0bEBXImyolTHyh/jI4YINSIO9KJHWP6FSEFBUM/cY8jbickqffQ== "@storybook/core@8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/core/-/core-8.3.1.tgz#8e991bdff670709de7b164c67cd9adcebe8b8d70" + resolved "https://registry.npmjs.org/@storybook/core/-/core-8.3.1.tgz" integrity sha512-L8YTtUipcBvl4F8jFNnXU3NM1hnLwZ3Ge2l+SRVKUGoAZzdf/I8O/0eOeZ+3LM3PvDn8bC9x+qjhNyDgtT+ieQ== dependencies: "@storybook/csf" "^0.1.11" @@ -1746,7 +1722,7 @@ "@storybook/csf-plugin@8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-8.3.1.tgz#3c6390c830e2d76074aec515564bd2c9f34d12e4" + resolved "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.3.1.tgz" integrity sha512-K3JWJf79+BkJAbOnAns5KGQ9h0NCqWht/1B05frj9LuAD/U+0sikpByiC2QvJ+qtX4fODhqjRYvrv2jgP8o3mA== dependencies: unplugin "^1.3.1" @@ -1785,19 +1761,14 @@ resolved "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz" integrity sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ== -"@storybook/icons@^1.2.10": +"@storybook/icons@^1.2.10", "@storybook/icons@^1.2.5": version "1.2.10" - resolved "https://registry.yarnpkg.com/@storybook/icons/-/icons-1.2.10.tgz#d3d44912a3a88f3f04f77ce2c23a7e47e796f766" + resolved "https://registry.npmjs.org/@storybook/icons/-/icons-1.2.10.tgz" integrity sha512-310apKdDcjbbX2VSLWPwhEwAgjxTzVagrwucVZIdGPErwiAppX8KvBuWZgPo+rQLVrtH8S+pw1dbUwjcE6d7og== -"@storybook/icons@^1.2.5": - version "1.2.9" - resolved "https://registry.npmjs.org/@storybook/icons/-/icons-1.2.9.tgz" - integrity sha512-cOmylsz25SYXaJL/gvTk/dl3pyk7yBFRfeXTsHvTA3dfhoU/LWSq0NKL9nM7WBasJyn6XPSGnLS4RtKXLw5EUg== - "@storybook/instrumenter@8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-8.3.1.tgz#47f6539a443467489f56f4feacf32b52f37e61ef" + resolved "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.3.1.tgz" integrity sha512-TtECvALgEPLafdy+YHXz2+xBPobiSMHj532nS7tkqxD9aRD1+Ocy6pWWNaP9+iiWWnHIWlTQ0M/7UEoCxV+Ksg== dependencies: "@storybook/global" "^5.0.0" @@ -1806,12 +1777,12 @@ "@storybook/manager-api@^8.0.0": version "8.3.0" - resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-8.3.0.tgz#0c3e33e3091be2122670b61ba601893c19d5dd47" + resolved "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.3.0.tgz" integrity sha512-5WBLEFHpe4H+9vZZLjNh7msIkyl9MPt4/C2nI+MXKZyU55xBBgiAy4fcD9aj02PcbhyR4JhLqbqmdeBe5Xafeg== "@storybook/manager-api@^8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-8.3.1.tgz#ad6097b71b708b2de76850f7a8f8e46e69a19ee8" + resolved "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.3.1.tgz" integrity sha512-GHJr1/nNAfkzNs4P8z31zBN8ZBucMfl+aSH6ciCy12jN3dOmEfb67mx3aes2PmBJjY3K8HG2lgsO9tNKIyDJXQ== "@storybook/node-logger@8.1.6": @@ -1841,17 +1812,17 @@ "@storybook/preview-api@^8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-8.3.1.tgz#ab48b7e2fae37786fc2b70e2e910205ffd838574" + resolved "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.3.1.tgz" integrity sha512-mpeeQi0DiK6lGiFEa/iAXNQykZB/wv9UiI5MYwxfgVTCCIh7skeBQsu/7Ye+C+KyXgrNmH5YAP3CjYfkFVimhQ== "@storybook/react-dom-shim@8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-8.3.1.tgz#13f351d149b1d87766c3757ddd49bc5bffc09e39" + resolved "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.3.1.tgz" integrity sha512-nHMhXkt3FAm8c08QTTU70vpYhsAu65RpCv/uhYZ89H5OWvmLFHn36iJQPzlpWFtJHJ5+bAV/bfgNODR3BV1gRg== "@storybook/react-vite@^8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/react-vite/-/react-vite-8.3.1.tgz#f2a63710ad5981462cf5b2f3b13256396e8c4bbc" + resolved "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-8.3.1.tgz" integrity sha512-WjLnYzaiLHCv09UnnMfjJL9RnjmReXbPpRs3VklH87UH8L6j4WLHw7JAEItnyS6ugTxFjcpEg1P1ud4D8c75nA== dependencies: "@joshwooding/vite-plugin-react-docgen-typescript" "0.3.1" @@ -1866,7 +1837,7 @@ "@storybook/react@8.3.1", "@storybook/react@^8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-8.3.1.tgz#8873dc4cab4ffa9caa2b444f36ea0fb660e8a446" + resolved "https://registry.npmjs.org/@storybook/react/-/react-8.3.1.tgz" integrity sha512-uxr5o5TzUHB1vFMgdayxatDTYUYWJxDse4hcpr+D2E5QMrMCKBk/KRYgJtnPhmEBASoT40lcZvYmEWnP973KWA== dependencies: "@storybook/components" "^8.3.1" @@ -1920,7 +1891,7 @@ "@storybook/test@8.3.1", "@storybook/test@^8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/test/-/test-8.3.1.tgz#53d391b47fd35a441a50e5e2088be87089a009aa" + resolved "https://registry.npmjs.org/@storybook/test/-/test-8.3.1.tgz" integrity sha512-/ZZFZHr+jsO7oBrLFrrCkgkJrh1/AgHBqO8QR0zdTiR0NK0vo2l9v9FXat/VFhSaYTIpVU/NQdNKiPGTKIfAVw== dependencies: "@storybook/csf" "^0.1.11" @@ -1935,12 +1906,12 @@ "@storybook/theming@^8.0.0": version "8.3.0" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-8.3.0.tgz#96edd021c1cffd030974747a5a645bc9ef0f8dbd" + resolved "https://registry.npmjs.org/@storybook/theming/-/theming-8.3.0.tgz" integrity sha512-lJCarAzswZvUgBt/o1LMJp+07Io5G2VI1+Fw+bgn+92kRD8otCFwuMZIy0u7cEjHiEGqGnpzThlIki6vFjEXeA== "@storybook/theming@^8.3.1": version "8.3.1" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-8.3.1.tgz#762cf6dd337ccf05adf751d3e7560f8cdae21fd6" + resolved "https://registry.npmjs.org/@storybook/theming/-/theming-8.3.1.tgz" integrity sha512-R6YZnIdN9P9gTauVkZfVmob0/i6/yaAQxnwfMgRLCaFD0TFQ+UQ2pCz40zPAUp3BcNPwMD168GVxmheBb8cGag== "@storybook/types@8.1.6": @@ -1969,7 +1940,7 @@ "@swc/core-darwin-arm64@1.7.23": version "1.7.23" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.23.tgz#4ba141f07ba9b90cfc153582cbd874ebb11542fb" + resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.23.tgz" integrity sha512-yyOHPfti6yKlQulfVWMt7BVKst+SyEZYCWuQSGMn1KgmNCH/bYufRWfQXIhkGSj44ZkEepJmsJ8tDyIb4k5WyA== "@swc/core-darwin-x64@1.7.23": @@ -2019,7 +1990,7 @@ "@swc/core@^1.4.11", "@swc/core@^1.5.22": version "1.7.23" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.7.23.tgz#1a98a0f73fac6ea1bf2ab452258caf5e29f3a9e4" + resolved "https://registry.npmjs.org/@swc/core/-/core-1.7.23.tgz" integrity sha512-VDNkpDvDlreGh2E3tlDj8B3piiuLhhQA/7rIVZpiLUvG1YpucAa6N7iDXA7Gc/+Hah8spaCg/qvEaBkCmcIYCQ== dependencies: "@swc/counter" "^0.1.3" @@ -2066,12 +2037,12 @@ "@tailwindcss/container-queries@^0.1.1": version "0.1.1" - resolved "https://registry.yarnpkg.com/@tailwindcss/container-queries/-/container-queries-0.1.1.tgz#9a759ce2cb8736a4c6a0cb93aeb740573a731974" + resolved "https://registry.npmjs.org/@tailwindcss/container-queries/-/container-queries-0.1.1.tgz" integrity sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA== "@testing-library/dom@10.4.0": version "10.4.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-10.4.0.tgz#82a9d9462f11d240ecadbf406607c6ceeeff43a8" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz" integrity sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ== dependencies: "@babel/code-frame" "^7.10.4" @@ -2085,7 +2056,7 @@ "@testing-library/jest-dom@6.5.0": version "6.5.0" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz#50484da3f80fb222a853479f618a9ce5c47bfe54" + resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz" integrity sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA== dependencies: "@adobe/css-tools" "^4.4.0" @@ -2327,7 +2298,7 @@ "@types/lodash@*", "@types/lodash@^4.14.167": version "4.17.7" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.7.tgz#2f776bcb53adc9e13b2c0dfd493dfcbd7de43612" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz" integrity sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA== "@types/mdx@^2.0.0": @@ -2373,7 +2344,7 @@ "@types/node@^22.0.0": version "22.5.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.5.5.tgz#52f939dd0f65fc552a4ad0b392f3c466cc5d7a44" + resolved "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz" integrity sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA== dependencies: undici-types "~6.19.2" @@ -2398,7 +2369,14 @@ resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== -"@types/react@^16.8.0 || ^17.0.0 || ^18.0.0": +"@types/react-dom@^18.3.0": + version "18.3.0" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz" + integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^16.8.0 || ^17.0.0 || ^18.0.0": version "18.3.3" resolved "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz" integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== @@ -2418,12 +2396,7 @@ dependencies: "@types/node" "*" -"@types/semver@^7.3.12": - version "7.5.6" - resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz" - integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== - -"@types/semver@^7.5.0": +"@types/semver@^7.3.12", "@types/semver@^7.5.0": version "7.5.8" resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz" integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== @@ -2691,7 +2664,7 @@ "@vitest/expect@2.0.5": version "2.0.5" - resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-2.0.5.tgz#f3745a6a2c18acbea4d39f5935e913f40d26fa86" + resolved "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz" integrity sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA== dependencies: "@vitest/spy" "2.0.5" @@ -2701,28 +2674,28 @@ "@vitest/pretty-format@2.0.5": version "2.0.5" - resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-2.0.5.tgz#91d2e6d3a7235c742e1a6cc50e7786e2f2979b1e" + resolved "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz" integrity sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ== dependencies: tinyrainbow "^1.2.0" "@vitest/pretty-format@2.1.1": version "2.1.1" - resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-2.1.1.tgz#fea25dd4e88c3c1329fbccd1d16b1d607eb40067" + resolved "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.1.tgz" integrity sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ== dependencies: tinyrainbow "^1.2.0" "@vitest/spy@2.0.5": version "2.0.5" - resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-2.0.5.tgz#590fc07df84a78b8e9dd976ec2090920084a2b9f" + resolved "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz" integrity sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA== dependencies: tinyspy "^3.0.0" "@vitest/utils@2.0.5": version "2.0.5" - resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-2.0.5.tgz#6f8307a4b6bc6ceb9270007f73c67c915944e926" + resolved "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz" integrity sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ== dependencies: "@vitest/pretty-format" "2.0.5" @@ -2732,7 +2705,7 @@ "@vitest/utils@^2.0.5": version "2.1.1" - resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-2.1.1.tgz#284d016449ecb4f8704d198d049fde8360cc136e" + resolved "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.1.tgz" integrity sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ== dependencies: "@vitest/pretty-format" "2.1.1" @@ -2800,7 +2773,7 @@ acorn@^8.9.0: addsearch-js-client@^0.8.11: version "0.8.14" - resolved "https://registry.yarnpkg.com/addsearch-js-client/-/addsearch-js-client-0.8.14.tgz#d43498898c3aad57e9d9ed43e2c847cd86aaaff1" + resolved "https://registry.npmjs.org/addsearch-js-client/-/addsearch-js-client-0.8.14.tgz" integrity sha512-mHGrDp0qCpM8JXndH28OMXqDjlfwvSQ1RwL7KuGxDK+CVaJEVfXbJy9DYlPJJqc4ytQ72JRFh0qpon440XYzyA== dependencies: axios "^1.7.2" @@ -3016,7 +2989,7 @@ arraybuffer.prototype.slice@^1.0.3: assertion-error@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz" integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== ast-types@^0.16.1: @@ -3028,7 +3001,7 @@ ast-types@^0.16.1: async@^2.6.4: version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz" integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== dependencies: lodash "^4.17.14" @@ -3148,14 +3121,14 @@ base64-js@^1.3.1: basic-auth@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + resolved "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz" integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== dependencies: safe-buffer "5.1.2" better-opn@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-3.0.2.tgz#f96f35deaaf8f34144a4102651babcf00d1d8817" + resolved "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz" integrity sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ== dependencies: open "^8.0.4" @@ -3192,7 +3165,7 @@ binary-extensions@^2.0.0: body-parser@1.20.3: version "1.20.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz" integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== dependencies: bytes "3.1.2" @@ -3264,7 +3237,7 @@ buffer-from@^1.0.0: buffer@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== dependencies: base64-js "^1.3.1" @@ -3341,7 +3314,7 @@ caniuse-lite@^1.0.30001646: chai@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/chai/-/chai-5.1.1.tgz#f035d9792a22b481ead1c65908d14bb62ec1c82c" + resolved "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz" integrity sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA== dependencies: assertion-error "^2.0.1" @@ -3392,7 +3365,7 @@ char-regex@^2.0.0: check-error@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" + resolved "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz" integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== chokidar@^3.5.3: @@ -3628,7 +3601,7 @@ core-util-is@~1.0.0: corser@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" + resolved "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz" integrity sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ== create-jest@^29.7.0: @@ -3769,7 +3742,7 @@ debug@2.6.9: debug@^3.2.7: version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" @@ -3800,7 +3773,7 @@ dedent@^1.0.0: deep-eql@^5.0.1: version "5.0.2" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz" integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== deep-is@^0.1.3: @@ -3825,16 +3798,7 @@ defer-to-connect@^2.0.0: resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== -define-data-property@^1.0.1: - version "1.1.1" - resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz" - integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== - dependencies: - get-intrinsic "^1.2.1" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - -define-data-property@^1.1.4: +define-data-property@^1.0.1, define-data-property@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== @@ -3845,7 +3809,7 @@ define-data-property@^1.1.4: define-lazy-prop@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: @@ -4050,7 +4014,7 @@ encodeurl@~1.0.2: encodeurl@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz" integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== end-of-stream@^1.1.0: @@ -4246,7 +4210,7 @@ esbuild-register@^3.5.0: "esbuild@^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0": version "0.23.1" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.1.tgz#40fdc3f9265ec0beae6f59824ade1bd3d3d2dab8" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz" integrity sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg== optionalDependencies: "@esbuild/aix-ppc64" "0.23.1" @@ -4356,7 +4320,7 @@ eslint-config-prettier@^9.1.0: eslint-plugin-react@^7.34.3: version "7.36.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz#f1dabbb11f3d4ebe8b0cf4e54aff4aee81144ee5" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz" integrity sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA== dependencies: array-includes "^3.1.8" @@ -4411,7 +4375,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 eslint@^8.57.0: version "8.57.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz" integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" @@ -4515,7 +4479,7 @@ etag@~1.8.1: eventemitter3@^4.0.0: version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== execa@^0.7.0: @@ -4583,7 +4547,7 @@ expect@^29.7.0: express@^4.19.2: version "4.20.0" - resolved "https://registry.yarnpkg.com/express/-/express-4.20.0.tgz#f1d08e591fcec770c07be4767af8eb9bcfd67c48" + resolved "https://registry.npmjs.org/express/-/express-4.20.0.tgz" integrity sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw== dependencies: accepts "~1.3.8" @@ -5032,19 +4996,7 @@ glob@^10.0.0: package-json-from-dist "^1.0.0" path-scurry "^1.11.1" -glob@^7.1.3: - version "7.1.7" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.4, glob@^7.1.6, glob@^7.2.0, glob@^7.2.3: +glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0, glob@^7.2.3: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -5236,7 +5188,7 @@ hast-util-to-string@^3.0.0: he@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== headers-polyfill@^4.0.2: @@ -5263,7 +5215,7 @@ homedir-polyfill@^1.0.0: html-encoding-sniffer@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz" integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== dependencies: whatwg-encoding "^2.0.0" @@ -5308,7 +5260,7 @@ http-errors@2.0.0: http-proxy@^1.18.1: version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: eventemitter3 "^4.0.0" @@ -5317,7 +5269,7 @@ http-proxy@^1.18.1: http-server@14.1.1: version "14.1.1" - resolved "https://registry.yarnpkg.com/http-server/-/http-server-14.1.1.tgz#d60fbb37d7c2fdff0f0fbff0d0ee6670bd285e2e" + resolved "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz" integrity sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A== dependencies: basic-auth "^2.0.1" @@ -5356,7 +5308,7 @@ iconv-lite@0.4.24: iconv-lite@0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" @@ -5519,7 +5471,7 @@ is-date-object@^1.0.5: is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-extglob@^2.1.1: @@ -5691,7 +5643,7 @@ is-windows@^1.0.2: is-wsl@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" @@ -6277,7 +6229,7 @@ js-yaml@^4.1.0: jsdoc-type-pratt-parser@^4.0.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz#ff6b4a3f339c34a6c188cbf50a16087858d22113" + resolved "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz" integrity sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg== jsesc@^2.5.1: @@ -6446,7 +6398,7 @@ loose-envify@^1.1.0, loose-envify@^1.4.0: loupe@^3.1.0, loupe@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.1.tgz#71d038d59007d890e3247c5db97c1ec5a92edc54" + resolved "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz" integrity sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw== dependencies: get-func-name "^2.0.1" @@ -6552,7 +6504,7 @@ memoizerific@^1.11.3: merge-descriptors@1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz" integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== merge-stream@^2.0.0: @@ -6572,7 +6524,7 @@ methods@~1.1.2: micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: braces "^3.0.3" @@ -6648,7 +6600,7 @@ minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: mkdirp@^0.5.6: version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" @@ -6682,7 +6634,7 @@ msw-storybook-addon@^2.0.2: msw@2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/msw/-/msw-2.4.2.tgz#df8040975b2bf92ebc0a16d1c9e9f138c3c8765c" + resolved "https://registry.npmjs.org/msw/-/msw-2.4.2.tgz" integrity sha512-GImSQGhn19czhVpxPdiUDK8CMZ6jbBcvOhzfJd8KFErjEER2wDKWs1UYaetJs2GSNlAqt6heZYm7g3eLatTcog== dependencies: "@bundled-es-modules/cookie" "^2.0.0" @@ -6940,7 +6892,7 @@ onetime@^5.1.2: open@^8.0.4: version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== dependencies: define-lazy-prop "^2.0.0" @@ -6949,7 +6901,7 @@ open@^8.0.4: opener@^1.5.1: version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + resolved "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== optionator@^0.9.3: @@ -7108,7 +7060,7 @@ path-scurry@^1.11.1: path-to-regexp@0.1.10: version "0.1.10" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz" integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== path-to-regexp@^6.2.0: @@ -7123,7 +7075,7 @@ path-type@^4.0.0: pathval@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" + resolved "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz" integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== peek-readable@^5.0.0: @@ -7195,7 +7147,7 @@ polished@^4.2.2: portfinder@^1.0.28: version "1.0.32" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" + resolved "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz" integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== dependencies: async "^2.6.4" @@ -7253,7 +7205,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: postcss@^8.4.23, postcss@^8.4.43: version "8.4.44" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.44.tgz#d56834ef6508610ba224bb22b2457b2169ed0480" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.44.tgz" integrity sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw== dependencies: nanoid "^3.3.7" @@ -7392,7 +7344,7 @@ qs@6.11.0: qs@6.13.0, qs@^6.10.0, qs@^6.4.0: version "6.13.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + resolved "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz" integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== dependencies: side-channel "^1.0.6" @@ -7458,7 +7410,7 @@ react-docgen@^7.0.0: resolve "^1.22.1" strip-indent "^4.0.0" -"react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", react-dom@^18.2.0: +"react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", react-dom@^18.3.1: version "18.3.1" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== @@ -7792,7 +7744,7 @@ safe-array-concat@^1.1.2: safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-buffer@5.2.1, safe-buffer@~5.2.0: @@ -7833,7 +7785,7 @@ scroll-lock@^2.1.4: secure-compare@3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3" + resolved "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz" integrity sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw== semver-regex@^4.0.5: @@ -7862,7 +7814,7 @@ semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: semver@^7.6.2: version "7.6.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== send@0.18.0: @@ -7886,7 +7838,7 @@ send@0.18.0: send@0.19.0: version "0.19.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + resolved "https://registry.npmjs.org/send/-/send-0.19.0.tgz" integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== dependencies: debug "2.6.9" @@ -7905,7 +7857,7 @@ send@0.19.0: serve-static@1.16.0: version "1.16.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.0.tgz#2bf4ed49f8af311b519c46f272bf6ac3baf38a92" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz" integrity sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA== dependencies: encodeurl "~1.0.2" @@ -8118,7 +8070,7 @@ statuses@2.0.1, statuses@^2.0.1: storybook-dark-mode@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/storybook-dark-mode/-/storybook-dark-mode-4.0.2.tgz#2536d1a229ac050172d37aa50bd9f6f7cdad0425" + resolved "https://registry.npmjs.org/storybook-dark-mode/-/storybook-dark-mode-4.0.2.tgz" integrity sha512-zjcwwQ01R5t1VsakA6alc2JDIRVtavryW8J3E3eKLDIlAMcvsgtpxlelWkZs2cuNspk6Z10XzhQVrUWtYc3F0w== dependencies: "@storybook/components" "^8.0.0" @@ -8132,7 +8084,7 @@ storybook-dark-mode@^4.0.2: storybook@^8.3.1: version "8.3.1" - resolved "https://registry.yarnpkg.com/storybook/-/storybook-8.3.1.tgz#4f52975bb0b7895eb4ad8125b37c0b3bba33b555" + resolved "https://registry.npmjs.org/storybook/-/storybook-8.3.1.tgz" integrity sha512-CYqt5KOpaTgb8OczNo2+EtMi8YNDPi4vNVebVlLDOroWxyulb8I7MIOH9gALczcIOb+TZUArPztjoa8rkXTaDQ== dependencies: "@storybook/core" "8.3.1" @@ -8411,9 +8363,9 @@ svgo@^2.8.0: stable "^0.1.8" tailwindcss@^3.3.6: - version "3.4.13" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.13.tgz#3d11e5510660f99df4f1bfb2d78434666cb8f831" - integrity sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw== + version "3.4.12" + resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.12.tgz" + integrity sha512-Htf/gHj2+soPb9UayUNci/Ja3d8pTmu9ONTfh4QY8r3MATTZOzmv6UYWF7ZwikEIC8okpfqmGqrmDehua8mF8w== dependencies: "@alloc/quick-lru" "^5.2.0" arg "^5.0.2" @@ -8505,12 +8457,12 @@ tiny-invariant@^1.3.3: tinyrainbow@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/tinyrainbow/-/tinyrainbow-1.2.0.tgz#5c57d2fc0fb3d1afd78465c33ca885d04f02abb5" + resolved "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz" integrity sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ== tinyspy@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-3.0.2.tgz#86dd3cf3d737b15adcf17d7887c84a75201df20a" + resolved "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz" integrity sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q== tmpl@1.0.5: @@ -8719,7 +8671,7 @@ typedarray-to-buffer@^3.1.5: typescript@5.6.2: version "5.6.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz" integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw== uglify-js@^3.1.4: @@ -8749,7 +8701,7 @@ undici-types@~6.19.2: union@~0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/union/-/union-0.5.0.tgz#b2c11be84f60538537b846edb9ba266ba0090075" + resolved "https://registry.npmjs.org/union/-/union-0.5.0.tgz" integrity sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA== dependencies: qs "^6.4.0" @@ -8827,7 +8779,7 @@ uri-js@^4.2.2: url-join@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" + resolved "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz" integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== url-parse@^1.5.3: @@ -8897,7 +8849,7 @@ vinyl@^2.2.1: vite@^5.2.12: version "5.4.3" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.3.tgz#771c470e808cb6732f204e1ee96c2ed65b97a0eb" + resolved "https://registry.npmjs.org/vite/-/vite-5.4.3.tgz" integrity sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q== dependencies: esbuild "^0.21.3" @@ -8950,7 +8902,7 @@ webpack-virtual-modules@^0.6.0: whatwg-encoding@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz" integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== dependencies: iconv-lite "0.6.3"