From 3ff4df801f680efb16b49ca2d656a3f89c937bef Mon Sep 17 00:00:00 2001
From: Olivia Wong
Date: Tue, 3 Dec 2024 10:05:54 -0500
Subject: [PATCH 01/18] Creates new Template files
---
src/components/Template/TemplateNew.mdx | 17 +
.../Template/TemplateNew.stories.tsx | 313 ++++++++++++++++++
src/components/Template/TemplateNew.tsx | 47 +++
src/index.ts | 8 +
src/theme/components/templatenew.ts | 83 +++++
src/theme/index.ts | 2 +
6 files changed, 470 insertions(+)
create mode 100644 src/components/Template/TemplateNew.mdx
create mode 100644 src/components/Template/TemplateNew.stories.tsx
create mode 100644 src/components/Template/TemplateNew.tsx
create mode 100644 src/theme/components/templatenew.ts
diff --git a/src/components/Template/TemplateNew.mdx b/src/components/Template/TemplateNew.mdx
new file mode 100644
index 000000000..cc3a6c7c7
--- /dev/null
+++ b/src/components/Template/TemplateNew.mdx
@@ -0,0 +1,17 @@
+import {
+ TemplateNew,
+ TemplateNewBreakout,
+ TemplateNewTop,
+ TemplateNewMain,
+ TemplateNewSidebar,
+ TemplateNewBottom,
+} from "./TemplateNew";
+import * as TemplateNewStories from "./TemplateNew.stories";
+
+
+
+## Full Example
+
+This is best viewed in the Storybook "Canvas" and not "Docs" section.
+
+
diff --git a/src/components/Template/TemplateNew.stories.tsx b/src/components/Template/TemplateNew.stories.tsx
new file mode 100644
index 000000000..fc6846390
--- /dev/null
+++ b/src/components/Template/TemplateNew.stories.tsx
@@ -0,0 +1,313 @@
+import type { Meta } from "@storybook/react";
+import { getPlaceholderImage } from "../../utils/utils";
+import Accordion, { AccordionDataProps } from "../Accordion/Accordion";
+import Banner from "../Banner/Banner";
+import Breadcrumbs from "../Breadcrumbs/Breadcrumbs";
+import Button from "../Button/Button";
+import Card, { CardHeading, CardContent } from "../Card/Card";
+import Form, { FormField, FormRow } from "../Form/Form";
+import Heading from "../Heading/Heading";
+import Hero from "../Hero/Hero";
+import { HorizontalRule } from "../HorizontalRule/HorizontalRule";
+import Placeholder from "../Placeholder/Placeholder";
+import Table from "../Table/Table";
+import TextInput from "../TextInput/TextInput";
+import {
+ TemplateNew,
+ TemplateNewBreakout,
+ TemplateNewTop,
+ TemplateNewMain,
+ TemplateNewSidebar,
+ TemplateNewBottom,
+} from "./TemplateNew";
+
+const accordionData: AccordionDataProps[] = [
+ {
+ accordionType: "default",
+ label: "Tom Nook",
+ panel: (
+
+
+ Tom Nook
+
+
+ Tom Nook, known in Japan as Tanukichi , is a fictional character
+ in the Animal Crossing series who operates the village store.
+
+
+ ),
+ },
+];
+const faqContentData: AccordionDataProps[] = [
+ ...accordionData,
+ {
+ accordionType: "warning",
+ label: "Isabelle",
+ panel: (
+
+
+ Isabelle
+
+
+ Isabelle, known as Shizue in Japan, is a fictional character from the
+ Animal Crossing series of video games. She is a kindly Shih Tzu that
+ debuted in the 2012 release Animal Crossing: New Leaf, where she
+ serves as the secretary to the player character.
+
+
+ ),
+ },
+ {
+ accordionType: "error",
+ label: "K.K. Slider",
+ panel: (
+
+
+ K.K. Slider
+
+
+
+ Totakeke, more commonly known as K.K. Slider or K.K. , is a
+ fictional character within the Animal Crossing franchise. One of the
+ franchise's most popular characters, he debuted in the title Animal
+ Crossing, and has appeared in every installment since.
+
+
+
+ ),
+ },
+];
+
+const columnHeadersAlt = [
+ "Name",
+ "Nick Name",
+ "Species",
+ "Description",
+ "Bio",
+ "Salary (USD)",
+];
+const tableDataAlt = [
+ [
+ "Tom Nook",
+ "Tanukichi",
+ "Raccoon",
+ "A businessman who manages the town shop and the player's home loan.",
+ "Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Maecenas faucibus mollis interdum. Donec id elit non mi porta gravida at eget metus. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Nulla vitae elit libero, a pharetra augue.",
+ "$225,000",
+ ],
+ [
+ "Isabelle",
+ "Shizue",
+ "Dog",
+ "A secretary and assistant to the player. Twin sister to Digby.",
+ "Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla. Sed posuere consectetur est at lobortis. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Integer posuere erat a ante luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Sed posuere consectetur est at lobortis. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.",
+ "$228,500",
+ ],
+ [
+ "K.K. Slider",
+ "Totakeke",
+ "Dog",
+ "A traveling musician and DJ. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.",
+ "Cras mattis consectetur purus sit amet fermentum. Nulla vitae elit libero, a pharetra augue. Etiam porta sem malesuada magna mollis euismod. Donec ullamcorper nulla non metus auctor fringilla. Donec sed odio dui. Donec id elit non mi porta gravida at eget metus.",
+ "$157,000",
+ ],
+ [
+ "Sonny Resetti",
+ "Risetto san",
+ "Mole",
+ "Lectures the player if they reset their game. Brother to Don Resetti.",
+ "Pellentesque ornare sem lacinia quam venenatis vestibulum. Etiam porta sem malesuada magna mollis euismod. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.",
+ "$89,000",
+ ],
+];
+const columnStylesComplex = [
+ { minWidth: "200px", width: "15%" },
+ { minWidth: "200px", width: "15%" },
+ { minWidth: "200px", width: "15%" },
+ { minWidth: "500px", width: "auto" },
+ { minWidth: "500px", width: "auto" },
+ { minWidth: "160px", width: "15%", textAlign: "right" },
+];
+
+const otherSubHeaderText =
+ "With 92 locations across the Bronx, Manhattan, and Staten Island, The New York Public Library is an essential part of neighborhoods across the city. Visit us today.";
+
+const meta: Meta = {
+ title: "Components/Page Layout/TemplateNew",
+ component: TemplateNew,
+};
+
+export default meta;
+
+export const TemplateNewExample = {
+ args: {
+ sidebar: "left",
+ },
+ render: (args) => (
+ <>
+
+
+ Hero
+
+
+ Content Top
+
+
+ Left Sidebar
+
+
+ Main Content
+
+
+ Content Bottom
+
+
+ >
+ ),
+};
+
+export const TemplateNewFullExample = {
+ args: {
+ sidebar: "left",
+ },
+ render: (args) => (
+ <>
+
+
+
+ }
+ imageProps={{
+ alt: "Image example",
+ src: getPlaceholderImage("smaller"),
+ }}
+ isDarkBackgroundImage
+ subHeaderText={otherSubHeaderText}
+ />
+
+
+
+
+
+ Sidebar information in a `Card` component.
+
+
+ Library Image
+
+
+ Vestibulum id ligula porta felis euismod semper. Nulla vitae elit
+ libero, a pharetra augue.
+
+
+
+
+ This is the main content!
+
+
+ Fill out the form!
+
+
+
+
+
+
+
+ >
+ ),
+};
diff --git a/src/components/Template/TemplateNew.tsx b/src/components/Template/TemplateNew.tsx
new file mode 100644
index 000000000..720cd3444
--- /dev/null
+++ b/src/components/Template/TemplateNew.tsx
@@ -0,0 +1,47 @@
+import { Box, useStyleConfig } from "@chakra-ui/react";
+
+const TemplateNew: React.FC = ({ children, sidebar = "none" }) => {
+ console.log("side -->", sidebar);
+ const styles = useStyleConfig("TemplateNew", { variant: sidebar });
+
+ return {children} ;
+};
+
+const TemplateNewBreakout: React.FC = ({ children }) => {
+ const styles = useStyleConfig("TemplateNewBreakout", {});
+
+ return {children} ;
+};
+
+const TemplateNewTop: React.FC = ({ children }) => {
+ const styles = useStyleConfig("TemplateNewTop", {});
+
+ return {children} ;
+};
+
+const TemplateNewMain: React.FC = ({ children }) => {
+ const styles = useStyleConfig("TemplateNewMain", {});
+
+ return {children} ;
+};
+
+const TemplateNewSidebar: React.FC = ({ children }) => {
+ const styles = useStyleConfig("TemplateNewSidebar", {});
+
+ return {children} ;
+};
+
+const TemplateNewBottom: React.FC = ({ children }) => {
+ const styles = useStyleConfig("TemplateNewBottom", {});
+
+ return {children} ;
+};
+
+export {
+ TemplateNew,
+ TemplateNewBreakout,
+ TemplateNewTop,
+ TemplateNewMain,
+ TemplateNewSidebar,
+ TemplateNewBottom,
+};
diff --git a/src/index.ts b/src/index.ts
index e5693d54d..6d6068934 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -291,6 +291,14 @@ export type {
TemplateHeaderProps,
TemplateSidebarProps,
} from "./components/Template/Template";
+export {
+ TemplateNew,
+ TemplateNewBreakout,
+ TemplateNewTop,
+ TemplateNewMain,
+ TemplateNewSidebar,
+ TemplateNewBottom,
+} from "./components/Template/TemplateNew";
export { default as Text } from "./components/Text/Text";
export type { TextProps, TextSizes } from "./components/Text/Text";
export { default as TextInput } from "./components/TextInput/TextInput";
diff --git a/src/theme/components/templatenew.ts b/src/theme/components/templatenew.ts
new file mode 100644
index 000000000..ccf5b8e5d
--- /dev/null
+++ b/src/theme/components/templatenew.ts
@@ -0,0 +1,83 @@
+import { defineStyleConfig } from "@chakra-ui/react";
+import { defineStyle } from "@chakra-ui/system";
+
+export const responsiveGap = { base: "1rem", md: "1.5rem", xl: "1rem" };
+export const responsivePadding = { base: "1rem", md: "1.5rem", xl: "2rem" };
+
+const TemplateNew = defineStyleConfig({
+ baseStyle: defineStyle({
+ boxSizing: "border-box",
+ color: "ui.typography.body",
+ maxWidth: "1280px",
+ m: "0 auto",
+ display: "grid",
+ gap: responsiveGap,
+ gridTemplateColumns: "repeat(1, minmax(100px, 1fr))",
+ gridTemplateRows: "auto",
+ gridTemplateAreas: `"breakout" "top" "main" "bottom"`,
+ }),
+ variants: {
+ left: {
+ gridTemplateColumns: {
+ md: "repeat(2, minmax(100px, 1fr))",
+ lg: "minmax(100px, 1fr) minmax(200px, 2fr)",
+ xl: "minmax(100px, 1fr) minmax(300px, 3fr)",
+ },
+ gridTemplateAreas: {
+ base: `"breakout" "top" "sidebar" "main" "bottom"`,
+ md: `"breakout breakout" "top top" "sidebar main" "bottom bottom"`,
+ },
+ },
+ right: {
+ gridTemplateColumns: {
+ md: "repeat(2, minmax(100px, 1fr))",
+ lg: "2fr 1fr",
+ xl: "3fr 1fr",
+ },
+ gridTemplateAreas: {
+ base: `"breakout" "top" "main" "sidebar" "bottom"`,
+ md: `"breakout breakout" "top top" "main sidebar" "bottom bottom"`,
+ },
+ },
+ },
+});
+
+const TemplateNewBreakout = defineStyleConfig({
+ baseStyle: defineStyle({
+ gridArea: "breakout",
+ mx: { xl: "calc(-100vw / 2 + 1200px / 2)" },
+ }),
+});
+
+const TemplateNewTop = defineStyleConfig({
+ baseStyle: defineStyle({
+ gridArea: "top",
+ }),
+});
+
+const TemplateNewMain = defineStyleConfig({
+ baseStyle: defineStyle({
+ gridArea: "main",
+ }),
+});
+
+const TemplateNewSidebar = defineStyleConfig({
+ baseStyle: defineStyle({
+ gridArea: "sidebar",
+ }),
+});
+
+const TemplateNewBottom = defineStyleConfig({
+ baseStyle: defineStyle({
+ gridArea: "bottom",
+ }),
+});
+
+export default {
+ TemplateNew,
+ TemplateNewBreakout,
+ TemplateNewTop,
+ TemplateNewMain,
+ TemplateNewSidebar,
+ TemplateNewBottom,
+};
diff --git a/src/theme/index.ts b/src/theme/index.ts
index 2044aead1..2255dea01 100644
--- a/src/theme/index.ts
+++ b/src/theme/index.ts
@@ -71,6 +71,7 @@ import { SubNav, SubNavChildren } from "./components/subnav";
import Tabs from "./components/tabs";
import TagSetStyles from "./components/tagSet";
import TemplateStyles from "./components/template";
+import TemplateNewStyles from "./components/templatenew";
import Text from "./components/text";
import TextInput from "./components/textInput";
import Toggle from "./components/toggle";
@@ -175,6 +176,7 @@ const theme: any = {
CustomTable,
...TagSetStyles,
...TemplateStyles,
+ ...TemplateNewStyles,
Text,
TextInput,
...Toggle,
From f911d19dc600f2504ee3d56b9117fcbee4cd93e9 Mon Sep 17 00:00:00 2001
From: Olivia Wong
Date: Tue, 3 Dec 2024 11:22:12 -0500
Subject: [PATCH 02/18] Style updates
---
src/theme/components/templatenew.ts | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/src/theme/components/templatenew.ts b/src/theme/components/templatenew.ts
index ccf5b8e5d..e42e04a0b 100644
--- a/src/theme/components/templatenew.ts
+++ b/src/theme/components/templatenew.ts
@@ -8,9 +8,10 @@ const TemplateNew = defineStyleConfig({
baseStyle: defineStyle({
boxSizing: "border-box",
color: "ui.typography.body",
- maxWidth: "1280px",
+ maxWidth: "min(100vw, 1280px)",
m: "0 auto",
display: "grid",
+ p: "s",
gap: responsiveGap,
gridTemplateColumns: "repeat(1, minmax(100px, 1fr))",
gridTemplateRows: "auto",
@@ -19,6 +20,7 @@ const TemplateNew = defineStyleConfig({
variants: {
left: {
gridTemplateColumns: {
+ base: "repeat(1, minmax(100px, 1fr))",
md: "repeat(2, minmax(100px, 1fr))",
lg: "minmax(100px, 1fr) minmax(200px, 2fr)",
xl: "minmax(100px, 1fr) minmax(300px, 3fr)",
@@ -30,9 +32,10 @@ const TemplateNew = defineStyleConfig({
},
right: {
gridTemplateColumns: {
+ base: "repeat(1, minmax(100px, 1fr))",
md: "repeat(2, minmax(100px, 1fr))",
- lg: "2fr 1fr",
- xl: "3fr 1fr",
+ lg: "minmax(200px, 2fr) minmax(100px, 1fr)",
+ xl: "minmax(300px, 3fr) minmax(100px, 1fr)",
},
gridTemplateAreas: {
base: `"breakout" "top" "main" "sidebar" "bottom"`,
@@ -45,7 +48,9 @@ const TemplateNew = defineStyleConfig({
const TemplateNewBreakout = defineStyleConfig({
baseStyle: defineStyle({
gridArea: "breakout",
- mx: { xl: "calc(-100vw / 2 + 1200px / 2)" },
+ width: "100vw",
+ ml: "calc(-50vw + 50%)",
+ px: "s",
}),
});
From e29688c8cc9cd47df7a28746eb298244d0d9aa15 Mon Sep 17 00:00:00 2001
From: Olivia Wong
Date: Tue, 3 Dec 2024 13:36:36 -0500
Subject: [PATCH 03/18] Cleans up styles
---
src/components/Template/TemplateNew.tsx | 3 +--
src/theme/components/templatenew.ts | 32 ++++++++++++++++---------
2 files changed, 22 insertions(+), 13 deletions(-)
diff --git a/src/components/Template/TemplateNew.tsx b/src/components/Template/TemplateNew.tsx
index 720cd3444..5f8fe87fd 100644
--- a/src/components/Template/TemplateNew.tsx
+++ b/src/components/Template/TemplateNew.tsx
@@ -1,7 +1,6 @@
import { Box, useStyleConfig } from "@chakra-ui/react";
const TemplateNew: React.FC = ({ children, sidebar = "none" }) => {
- console.log("side -->", sidebar);
const styles = useStyleConfig("TemplateNew", { variant: sidebar });
return {children} ;
@@ -20,7 +19,7 @@ const TemplateNewTop: React.FC = ({ children }) => {
};
const TemplateNewMain: React.FC = ({ children }) => {
- const styles = useStyleConfig("TemplateNewMain", {});
+ const styles = useStyleConfig("TemplateNewMain");
return {children} ;
};
diff --git a/src/theme/components/templatenew.ts b/src/theme/components/templatenew.ts
index e42e04a0b..652154d02 100644
--- a/src/theme/components/templatenew.ts
+++ b/src/theme/components/templatenew.ts
@@ -8,39 +8,39 @@ const TemplateNew = defineStyleConfig({
baseStyle: defineStyle({
boxSizing: "border-box",
color: "ui.typography.body",
- maxWidth: "min(100vw, 1280px)",
- m: "0 auto",
display: "grid",
+ maxWidth: "1280px",
+ m: "0 auto",
p: "s",
gap: responsiveGap,
+ gridTemplateAreas: `"breakout" "top" "main" "bottom"`,
gridTemplateColumns: "repeat(1, minmax(100px, 1fr))",
gridTemplateRows: "auto",
- gridTemplateAreas: `"breakout" "top" "main" "bottom"`,
}),
variants: {
left: {
+ gridTemplateAreas: {
+ base: `"breakout" "top" "sidebar" "main" "bottom"`,
+ md: `"breakout breakout" "top top" "sidebar main" "bottom bottom"`,
+ },
gridTemplateColumns: {
base: "repeat(1, minmax(100px, 1fr))",
md: "repeat(2, minmax(100px, 1fr))",
lg: "minmax(100px, 1fr) minmax(200px, 2fr)",
xl: "minmax(100px, 1fr) minmax(300px, 3fr)",
},
- gridTemplateAreas: {
- base: `"breakout" "top" "sidebar" "main" "bottom"`,
- md: `"breakout breakout" "top top" "sidebar main" "bottom bottom"`,
- },
},
right: {
+ gridTemplateAreas: {
+ base: `"breakout" "top" "main" "sidebar" "bottom"`,
+ md: `"breakout breakout" "top top" "main sidebar" "bottom bottom"`,
+ },
gridTemplateColumns: {
base: "repeat(1, minmax(100px, 1fr))",
md: "repeat(2, minmax(100px, 1fr))",
lg: "minmax(200px, 2fr) minmax(100px, 1fr)",
xl: "minmax(300px, 3fr) minmax(100px, 1fr)",
},
- gridTemplateAreas: {
- base: `"breakout" "top" "main" "sidebar" "bottom"`,
- md: `"breakout breakout" "top top" "main sidebar" "bottom bottom"`,
- },
},
},
});
@@ -64,6 +64,16 @@ const TemplateNewMain = defineStyleConfig({
baseStyle: defineStyle({
gridArea: "main",
}),
+ variants: {
+ featuredContent: {
+ width: "100vw",
+ ml: "calc(-50vw + 50%)",
+ px: "s",
+ },
+ text: {
+ maxWidth: "600px",
+ },
+ },
});
const TemplateNewSidebar = defineStyleConfig({
From 2ad0f66a0c3af8deca85df092f7e47df54baaf60 Mon Sep 17 00:00:00 2001
From: Olivia Wong
Date: Thu, 5 Dec 2024 15:31:10 -0500
Subject: [PATCH 04/18] Cleans up docs and tests
---
src/components/Template/Template.mdx | 505 ++------------
src/components/Template/Template.stories.tsx | 625 ++++++++++--------
src/components/Template/Template.test.tsx | 308 +--------
src/components/Template/Template.tsx | 397 +----------
src/components/Template/TemplateNew.mdx | 17 -
.../Template/TemplateNew.stories.tsx | 313 ---------
src/components/Template/TemplateNew.tsx | 46 --
.../Template/templateChangelogData.ts | 9 +
src/index.ts | 29 +-
src/theme/components/templatenew.ts | 42 +-
10 files changed, 484 insertions(+), 1807 deletions(-)
delete mode 100644 src/components/Template/TemplateNew.mdx
delete mode 100644 src/components/Template/TemplateNew.stories.tsx
delete mode 100644 src/components/Template/TemplateNew.tsx
diff --git a/src/components/Template/Template.mdx b/src/components/Template/Template.mdx
index 9f4a33c8d..21ee2cc3d 100644
--- a/src/components/Template/Template.mdx
+++ b/src/components/Template/Template.mdx
@@ -2,499 +2,110 @@ import { ArgTypes, Canvas, Description, Meta, Source } from "@storybook/blocks";
import ComponentChangelogTable from "../../utils/ComponentChangelogTable";
import { changelogData } from "./templateChangelogData";
-import * as TemplateStories from "./Template.stories";
+import * as TemplateNewStories from "./Template.stories";
import {
Template,
- TemplateAboveHeader,
- TemplateAppContainer,
TemplateBreakout,
- TemplateContent,
- TemplateContentBottom,
- TemplateContentPrimary,
- TemplateContentSidebar,
- TemplateContentTop,
- TemplateFooter,
- TemplateHeader,
+ TemplateTop,
+ TemplateSidebar,
+ TemplateMain,
+ TemplateMainNarrow,
+ TemplateBottom,
} from "./Template";
import Link from "../Link/Link";
-
+
# Template
-| Component Version | DS Version |
-| ----------------- | ---------- |
-| Added | `0.3.6` |
-| Latest | `3.4.0` |
+| Component Version | DS Version |
+| ----------------- | ------------ |
+| Added | `0.3.6` |
+| Latest | `Prerelease` |
## Table of Contents
-- { TemplateAppContainer Overview}
-- { TemplateAppContainer Component Props}
-- { TemplateAppContainer Accessibility}
-- { Template Children Overview}
-- { Template Children Component Props}
-- { Full Example with Template Children Components}
+- { Template Overview}
+- { Template Props}
+- { Template Components}
+- { Template Accessibility}
+- { Template Sidebar Configuration}
- { Changelog}
-## TemplateAppContainer Overview
+## Template Overview
-
-
-If you have a custom `Header` component that _already_ renders an HTML ``
-element, set `renderHeaderElement` to false so only one `` element is
-rendered.
-
-If you need to render the `SkipNavigation` component, set `renderSkipNavigation`
-to true.
-
-Likewise, if you have a custom `Footer` component that _already_ renders an HTML
-`` element, set `renderFooterElement` to false so only one ``
-element is rendered.
-
-**This is the recommended way to render an app page template.**
-
-Above Header}
- header={Header }
- breakout={
- <>
- Breadcrumbs
- Hero
- >
- }
- sidebar="left"
- contentTop={Content Top }
- contentSidebar={Left Sidebar }
- contentPrimary={
- <>
- Main Content
- More Content
- >
- }
- contentBottom={Content Bottom }
- footer={Footer }
- renderSkipNavigation={true}
-/>
-`}
- language="jsx"
-/>
-
-## TemplateAppContainer Component Props
-
-
-
-
-
-## TemplateAppContainer Accessibility
-
-**The `TemplateAppContainer` component is the recommended way to render the entire
-application.** Therefore, this accessibility section is specifically for the
-`TemplateAppContainer` but the same rules apply to the individual "Template"
-components.
-
-The `TemplateAppContainer` component renders the header as a `` element,
-the content as a `` element, and the footer as a `` element.
-
-If you need to render an alert or notification at the top of the page with an
-`aside` HTML element or HTML element with the `role="complementary"` attribute,
-then pass that alert or notification component to the `aboveHeader` prop. These
-elements should _not_ be rendered in the `header` HTML section since that's an
-accessibility violation.
-
-The `TemplateAppContainer` component renders a full DOM and one of the children
-is the `main` HTML element with a default "id" of `"mainContent"`. This should
-be used as the anchor element that the skip navigation link points to. If your
-application is using the current Header, it already contains the skip
-navigation feature but make sure it is pointing to the correct anchor element.
-
-If you are using a custom header component or you need to use the Reservoir
-Design System (DS) `SkipNavigation` component, then set the `renderSkipNavigation`
-prop to true. This will render the `SkipNavigation` component at the top of the
-page before any other elements. The main link will point to the `#mainContent`
-`main` element.
-
-Resources
-
-- [W3C Aria Landmarks Example](https://www.w3.org/TR/wai-aria-practices/examples/landmarks/complementary.html)
-- [Digital A11y Role=Complementary](https://www.digitala11y.com/complementary-role/)
-- [WebAim Skip Navigation Link](https://webaim.org/techniques/skipnav/)
-- [A11ymatters Skip Navigation Link](https://www.a11ymatters.com/pattern/skip-link/)
-
-## Template Children Overview
-
-The Reservoir Design System (DS) also provides a set of "template" components
-that work together to render a consistent mobile and desktop layout. More
-information on individual components and how they should be composed can be
-found below. Even though these component are available for use, we recommend
-using the `TemplateAppContainer` component and passing down children component
-as props as needed.
-
-Note: If you need to render the `SkipNavigation` component, you need to explicitly
-render it immediately before the `Template` component. This is done
-automatically in the `TemplateAppContainer` component.
-
-Note: All components that go above the main content `TemplateContent` component
-should be wrapped in a `` element or a `
` component.
-
-Basic "template" components structure:
+TBD
-
-
-
-
- // ...
-
-
- // ...
-
-
-
-
- // ...
-
-
- // ...
-
-
- // ...
-
-
-
- // ...
-
-
->
-`}
- language="jsx"
-/>
-## Template Children Component Props
+
+ // ...
+ // ...
+ // ...
+ // ...
+ // ...
+
+`} language="jsx" />
+
+## Template Props
-
+
-
+
-### Template Components
+## Template Components
The components consist of, listed in DOM structure order:
- `Template`
-- `TemplateAboveHeader`
-- `TemplateHeader`
- `TemplateBreakout`
-- `TemplateContent`
-- `TemplateContentTop`
-- `TemplateContentPrimary`
-- `TemplateContentSidebar`
-- `TemplateContentBottom`
-- `TemplateFooter`
-
-#### Template
-
-
- // ...
-
-`}
- language="jsx"
-/>
-
-
-
-#### TemplateBreakout
-
-
-
- // ...
-
-
-`}
- language="jsx"
-/>
+- `TemplateTop`
+- `TemplateMain` or `TemplateMainNarrow`
+- `TemplateSidebar`
+- `TemplateBottom`
-
+## Template Accessibility
-#### TemplateAboveHeader
+Wide lines of text are difficult to read and are proven to make it harder for
+people to focus, while short lines of text force the eye to travel back too often,
+breaking a reader's rhythm. The `TemplateMain` component has a max width of 1280px,
+which is too wide for text. If your content includes long chunks of text, you
+should use the `TemplateMainNarrow` component instead.
-
-
-
- // ...
-
-
-
-`}
- language="jsx"
-/>
+The `TemplateMain` and `TemplateMainNarrow` components render the content as a
+`` element with a default "id" of `"mainContent"`. This should be used as
+the anchor element that the skip navigation link points to. If your application
+is using the current Header, it already contains the skip navigation feature but
+make sure it is pointing to the correct anchor element.
-
-
-#### TemplateHeader
-
-
-
-
- // ...
-
-
- // ...
-
-
-
-`}
- language="jsx"
-/>
-
-
-
-#### TemplateContent
-
-
-
-
- // ...
-
-
-
- // ...
-
-
-`}
- language="jsx"
-/>
-
-
-
-#### TemplateContentTop
-
-
-
-
- // ...
-
-
- // ...
-
-
-
-
- // ...
-
-
-
-`}
- language="jsx"
-/>
-
-
-
-#### TemplateContentPrimary
-
-
-
-
- // ...
-
-
- // ...
-
-
-
-
- // ...
-
-
-
-`}
- language="jsx"
-/>
-
-
-
-#### TemplateContentSidebar
-
-
-
-
- // ...
-
-
- // ...
-
-
-
-
- // ...
-
-
- // RIGHT SIDEBAR
-
-
-
-
-
-
-
- // ...
-
-
- // ...
-
-
-
-
- // LEFT SIDEBAR
-
-
- // ...
-
-
-
-`} language="jsx" />
-
-
-
-#### TemplateContentBottom
+Resources
-
-
-
- // ...
-
-
- // ...
-
-
-
-
- // ...
-
-
- // ...
-
-
- // ...
-
-
-
-`}
- language="jsx"
-/>
+- [WebAim Skip Navigation Link](https://webaim.org/techniques/skipnav/)
+- [A11ymatters Skip Navigation Link](https://www.a11ymatters.com/pattern/skip-link/)
-
+## Template Sidebar Configuration
-#### TemplateFooter
+In order to render a sidebar, the `Template` component needs to be aware of it.
+Pass the location of the sidebar to the `sidebar` prop as either "left" or "right".
-
-
- // ...
-
-
- // ...
-
-
-
- //...
-
-
- // ...
-
+
+ // ...
`}
language="jsx"
/>
-
-
-### Template Children Components Sidebar Configuration
-
-In order to render a sidebar, two steps must be taken.
-
-1. The `TemplateContent` component needs to be aware of it. Pass the location
- of the sidebar to the `sidebar` prop as either "left" or "right".
-
-
-`}
- language="jsx"
-/>
-
-2. Render `TemplateContentSidebar` and `TemplateContentPrimary` next to each
- other in the appropriate order. If the sidebar must show left, then
- `TemplateContentSidebar` comes before `TemplateContentPrimary`. Otherwise,
- `TemplateContentPrimary` must come before `TemplateContentSidebar`.
-
-
-
- // ...
-
-
- // ...
-
-
-// Render right sidebar
-
- // ...
- // ...
-
-`}
- language="jsx"
-/>
-
-## Full Example with Template Children Components
-
-export const otherSubHeaderText =
- "With 92 locations across the Bronx, Manhattan, and Staten Island, The New York Public Library is an essential part of neighborhoods across the city. Visit us today.";
-
-This is best viewed in the Storybook "Canvas" and not "Docs" section.
-
-
-
## Changelog
diff --git a/src/components/Template/Template.stories.tsx b/src/components/Template/Template.stories.tsx
index c802d200f..e48c65f83 100644
--- a/src/components/Template/Template.stories.tsx
+++ b/src/components/Template/Template.stories.tsx
@@ -1,47 +1,35 @@
-import type { Meta, StoryObj } from "@storybook/react";
-
+import type { Meta } from "@storybook/react";
+import { getPlaceholderImage } from "../../utils/utils";
import Accordion, { AccordionDataProps } from "../Accordion/Accordion";
import Banner from "../Banner/Banner";
import Breadcrumbs from "../Breadcrumbs/Breadcrumbs";
import Button from "../Button/Button";
-import Card, { CardHeading, CardContent, CardActions } from "../Card/Card";
+import Card, { CardHeading, CardContent } from "../Card/Card";
import FeaturedContent from "../FeaturedContent/FeaturedContent";
-import Form, { FormRow, FormField } from "../Form/Form";
+import Form, { FormField, FormRow } from "../Form/Form";
import Heading from "../Heading/Heading";
import Hero from "../Hero/Hero";
-import HorizontalRule from "../HorizontalRule/HorizontalRule";
-import Link from "../Link/Link";
-import Notification from "../Notification/Notification";
+import { HorizontalRule } from "../HorizontalRule/HorizontalRule";
import Placeholder from "../Placeholder/Placeholder";
-import SkipNavigation from "../SkipNavigation/SkipNavigation";
import Table from "../Table/Table";
+import TextInput from "../TextInput/TextInput";
import {
Template,
- TemplateAboveHeader,
- TemplateAppContainer,
TemplateBreakout,
- TemplateContent,
- TemplateContentBottom,
- TemplateContentPrimary,
- TemplateContentSidebar,
- TemplateContentTop,
- TemplateFooter,
- TemplateHeader,
+ TemplateTop,
+ TemplateMain,
+ TemplateMainNarrow,
+ TemplateSidebar,
+ TemplateBottom,
} from "./Template";
-import TextInput from "../TextInput/TextInput";
-import { argsBooleanType } from "../../helpers/storybookUtils";
-import { getPlaceholderImage } from "../../utils/utils";
-const meta: Meta = {
+const meta: Meta = {
title: "Components/Page Layout/Template",
- component: TemplateAppContainer,
+ component: Template,
};
export default meta;
-type Story = StoryObj;
-const otherSubHeaderText =
- "With 92 locations across the Bronx, Manhattan, and Staten Island, The New York Public Library is an essential part of neighborhoods across the city. Visit us today.";
const accordionData: AccordionDataProps[] = [
{
accordionType: "default",
@@ -174,54 +162,40 @@ const columnStylesComplex = [
{ minWidth: "160px", width: "15%", textAlign: "right" },
];
+const otherSubHeaderText =
+ "With 92 locations across the Bronx, Manhattan, and Staten Island, The New York Public Library is an essential part of neighborhoods across the city. Visit us today.";
+
/**
* Main Story for the Template component. This must contains the `args`
* and `parameters` properties in this object.
*/
-export const WithControls: Story = {
+export const WithControls = {
args: {
- aboveHeader: Above Header ,
- breakout: (
- <>
- Breadcrumbs
- Hero
- >
- ),
- contentBottom: Content Bottom ,
- contentId: "mainContent",
- contentPrimary: (
- <>
- Main Content
- More Content
- >
- ),
- contentTop: Content Top ,
- footer: Footer ,
- header: Header ,
- renderFooterElement: true,
- renderHeaderElement: true,
- renderSkipNavigation: false,
sidebar: "left",
},
argTypes: {
- aboveHeader: { control: false },
- breakout: { control: false },
- contentBottom: { control: false },
- contentPrimary: { control: false },
- contentSidebar: { control: false },
- contentTop: { control: false },
- footer: { control: false },
- header: { control: false },
- renderSkipNavigation: argsBooleanType("true"),
sidebar: {
table: { defaultValue: { summary: "none" } },
},
},
render: (args) => (
- Sidebar ({args.sidebar})}
- />
+
+
+ Breakout
+
+
+ Content Top
+
+
+ Left Sidebar
+
+
+ Main Content
+
+
+ Content Bottom
+
+
),
parameters: {
design: {
@@ -230,257 +204,344 @@ export const WithControls: Story = {
},
},
};
-// The following are additional Template example Stories.
-export const ChildrenComponentProps: Story = {
+
+export const TemplateFullExample = {
args: {
sidebar: "left",
},
- argTypes: {
- aboveHeader: { table: { disable: true } },
- breakout: { table: { disable: true } },
- contentBottom: { table: { disable: true } },
- contentId: { table: { disable: true } },
- contentPrimary: { table: { disable: true } },
- contentSidebar: { table: { disable: true } },
- contentTop: { table: { disable: true } },
- footer: { table: { disable: true } },
- header: { table: { disable: true } },
- sidebar: { description: "Only used in Storybook." },
- },
render: (args) => (
<>
-
-
+
-
- Above Header
-
-
- Header
- Breadcrumbs
- Hero
-
+
+ }
+ imageProps={{
+ alt: "Image example",
+ src: getPlaceholderImage("smaller"),
+ }}
+ isDarkBackgroundImage
+ subHeaderText={otherSubHeaderText}
+ />
-
-
- Content Top
-
- {args.sidebar === "left" && (
-
- Left Sidebar
-
- )}
-
- Main Content
- More Content
-
- {args.sidebar === "right" && (
-
- Right Sidebar
-
- )}
-
- Content Bottom
-
-
-
- Footer
-
+
+
+
+
+ Sidebar information in a `Card` component.
+
+
+ Library Image
+
+
+ Vestibulum id ligula porta felis euismod semper. Nulla vitae elit
+ libero, a pharetra augue.
+
+
+
+
+ This is the main content!
+
+
+ Fill out the form!
+
+
+
+
+
+
>
),
};
-export const FullExampleWithTemplateChildrenComponents: Story = {
+export const TemplateFullExampleNarrow = {
render: () => (
<>
-
-
-
- This is an "announcement" Notification with a heading. Cras
- mattis consectetur purus sit amet fermentum. Maecenas faucibus
- mollis interdum. Morbi leo risus, porta ac consectetur ac,
- vestibulum at eros. Cum sociis natoque penatibus et magnis dis
- parturient montes, nascetur ridiculus mus. Vivamus sagittis
- lacus vel augue laoreet rutrum faucibus dolor auctor.
- >
- }
- showIcon={false}
- />
-
-
-
- }
- imageProps={{
- alt: "Image example",
- src: getPlaceholderImage("smaller"),
- }}
- isDarkBackgroundImage
- subHeaderText={otherSubHeaderText}
- />
-
+
+ }
+ imageProps={{
+ alt: "Image example",
+ src: getPlaceholderImage("smaller"),
+ }}
+ isDarkBackgroundImage
+ subHeaderText={otherSubHeaderText}
+ />
-
-
-
-
-
- This is the main content!
-
-
- Fill out the form!
-
+ >
+ ),
+};
+
+export const TemplateFullExampleWithFeaturedContent = {
+ render: () => (
+ <>
+
+
+
+ }
+ imageProps={{
+ alt: "Image example",
+ src: getPlaceholderImage("smaller"),
+ }}
+ isDarkBackgroundImage
+ subHeaderText={otherSubHeaderText}
+ />
+
+
+
+
+
+ This is the main content!
+
+
+ Fill out the form!
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
- Submit
+
-
-
- Sit Dapibus Elit
- Donec id elit non mi porta gravida at eget metus. Nulla vitae
- elit libero, a pharetra augue. Cum sociis natoque penatibus et
- magnis dis parturient montes, nascetur ridiculus mus. Cras
- mattis consectetur purus sit amet fermentum.
- >
- }
- />
-
-
-
- Sidebar information in a `Card` component.
-
-
- Library Image
-
-
- Vestibulum id ligula porta felis euismod semper. Nulla vitae
- elit libero, a pharetra augue.
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Submit
+
+
+
-
-
- This is an example footer using the `Card` component.
-
- © The New York Public Library, 2021 The New York Public Library
- is a 501(c)(3) | EIN 13-1887440
-
-
-
-
- Facebook
-
- ,
-
- Instagram
-
- ,
-
- Twitter
-
-
-
-
+ isFullWidth
+ my="l"
+ textContent={
+ <>
+ Sit Dapibus Elit
+ Donec id elit non mi porta gravida at eget metus. Nulla vitae
+ elit libero, a pharetra augue. Cum sociis natoque penatibus et
+ magnis dis parturient montes, nascetur ridiculus mus. Cras
+ mattis consectetur purus sit amet fermentum.
+ >
+ }
+ />
+
+
+
+
>
),
diff --git a/src/components/Template/Template.test.tsx b/src/components/Template/Template.test.tsx
index 3ff83838b..e6fd85a41 100644
--- a/src/components/Template/Template.test.tsx
+++ b/src/components/Template/Template.test.tsx
@@ -1,239 +1,60 @@
import { render, screen } from "@testing-library/react";
import { axe } from "jest-axe";
-import * as React from "react";
import renderer from "react-test-renderer";
import {
Template,
- TemplateAboveHeader,
- TemplateHeader,
TemplateBreakout,
- TemplateContent,
- TemplateContentTop,
- TemplateContentPrimary,
- TemplateContentSidebar,
- TemplateFooter,
- TemplateAppContainer,
+ TemplateTop,
+ TemplateMain,
+ TemplateSidebar,
+ TemplateBottom,
} from "./Template";
import Placeholder from "../Placeholder/Placeholder";
-const aboveHeader = Above Header ;
-const header = NYPL Header ;
-const breakout = (
- <>
- Breadcrumbs
- Hero
- >
-);
+const breakout = Breakout ;
const sidebar = "left";
const contentTop = Content Top ;
const contentSidebar = Left Sidebar ;
-const contentPrimary = (
+const contentMain = (
<>
Main Content
More Content
>
);
-const footer = Footer ;
-
-describe("TemplateAppContainer accessibility", () => {
- it("passes axe accessibility test", async () => {
- const { container } = render(
-
- );
- expect(await axe(container)).toHaveNoViolations();
- });
-});
+const contentBottom = Content Bottom ;
+
+const templateChildren = (
+
+ {breakout}
+ {contentTop}
+ {contentSidebar}
+ {contentMain}
+ {contentBottom}
+
+);
describe("Template components accessibility", () => {
it("passes axe accessibility test", async () => {
- const { container } = render(
-
- {aboveHeader}
-
- {header}
- {breakout}
-
-
- {contentTop}
- {contentSidebar}
- {contentPrimary}
-
- {footer}
-
- );
+ const { container } = render(<>{templateChildren}>);
expect(await axe(container)).toHaveNoViolations();
});
});
-describe("TemplateAppContainer component", () => {
- it("renders each section", () => {
- render(
-
- );
- expect(screen.getByText("Above Header")).toBeInTheDocument();
- expect(screen.getByText("NYPL Header")).toBeInTheDocument();
- expect(screen.getByText("Breadcrumbs")).toBeInTheDocument();
- expect(screen.getByText("Hero")).toBeInTheDocument();
- expect(screen.getByText("Content Top")).toBeInTheDocument();
- expect(screen.getByText("Left Sidebar")).toBeInTheDocument();
- expect(screen.getByText("Main Content")).toBeInTheDocument();
- expect(screen.getByText("More Content")).toBeInTheDocument();
- expect(screen.getByText("Footer")).toBeInTheDocument();
- });
-
- it("renders a #mainContent id in the `main` DOM element", () => {
- const { container } = render(
-
- );
- expect(container.querySelector("#mainContent")).toBeInTheDocument();
- expect(container.querySelector("#template-id")).toBeInTheDocument();
- expect(screen.getByRole("main")).toHaveAttribute("id", "mainContent");
- });
-
- it("renders only one header in a custom header component", () => {
- const customHeader = ;
- render(
-
- );
-
- // The `` HTML element has the same meaning as `role="banner"`.
- expect(screen.getAllByRole("banner")).toHaveLength(1);
- });
-
- it("consoles a warning when a header element was passed without setting `renderHeaderElement` to false", () => {
- const warn = jest.spyOn(console, "warn");
- const customHeader = ;
- render(
-
- );
- expect(warn).toHaveBeenCalledWith(
- "NYPL Reservoir TemplateHeader: An HTML `header` element was passed " +
- "in. Set `renderHeaderElement` to `false` to avoid nested HTML " +
- "`header` elements."
- );
- });
-
- it("renders only one footer in a custom footer component", () => {
- const customFooter = ;
- render(
-
- );
-
- expect(screen.getAllByRole("contentinfo")).toHaveLength(1);
- });
-
- it("consoles a warning when a footer element was passed without setting `renderFooterElement` to false", () => {
- const warn = jest.spyOn(console, "warn");
- const customFooter = ;
- render(
-
- );
- expect(warn).toHaveBeenCalledWith(
- "NYPL Reservoir TemplateFooter: An HTML `footer` element was passed " +
- "in. Set `renderFooterElement` to `false` to avoid nested HTML " +
- "`footer` elements."
- );
- });
-});
-
describe("Template components", () => {
it("renders each section", () => {
- render(
-
- {aboveHeader}
-
- {header}
- {breakout}
-
-
- {contentTop}
- {contentSidebar}
- {contentPrimary}
-
- {footer}
-
- );
+ render(<>{templateChildren}>);
- expect(screen.getByText("Above Header")).toBeInTheDocument();
- expect(screen.getByText("NYPL Header")).toBeInTheDocument();
- expect(screen.getByText("Breadcrumbs")).toBeInTheDocument();
- expect(screen.getByText("Hero")).toBeInTheDocument();
+ expect(screen.getByText("Breakout")).toBeInTheDocument();
expect(screen.getByText("Content Top")).toBeInTheDocument();
expect(screen.getByText("Left Sidebar")).toBeInTheDocument();
expect(screen.getByText("Main Content")).toBeInTheDocument();
expect(screen.getByText("More Content")).toBeInTheDocument();
- expect(screen.getByText("Footer")).toBeInTheDocument();
+ expect(screen.getByText("Content Bottom")).toBeInTheDocument();
});
it("renders a #mainContent id in the TemplateContent component", () => {
- const { container } = render(
-
- {contentPrimary}
-
- );
+ const { container } = render(<>{templateChildren}>);
expect(container.querySelector("#mainContent")).toBeInTheDocument();
expect(screen.getByRole("main")).toHaveAttribute("id", "mainContent");
@@ -242,89 +63,16 @@ describe("Template components", () => {
it("renders the UI snapshot correctly", () => {
const templateComponents = renderer
.create(
-
- {aboveHeader}
-
- {header}
- {breakout}
-
-
- {contentTop}
- {contentSidebar}
- {contentPrimary}
-
- {footer}
+
+ {breakout}
+ {contentTop}
+ {contentSidebar}
+ {contentMain}
+ {contentBottom}
)
.toJSON();
- const singleComponent = renderer
- .create(
-
- )
- .toJSON();
- const withChakraProps = renderer
- .create(
-
- )
- .toJSON();
- const withOtherProps = renderer
- .create(
-
- )
- .toJSON();
expect(templateComponents).toMatchSnapshot();
- expect(singleComponent).toMatchSnapshot();
- expect(withChakraProps).toMatchSnapshot();
- expect(withOtherProps).toMatchSnapshot();
- });
-
- it("passes a ref to the div wrapper element", () => {
- const ref = React.createRef();
- const { container } = render(
-
- );
-
- expect(container.querySelectorAll("div")[0]).toBe(ref.current);
});
});
diff --git a/src/components/Template/Template.tsx b/src/components/Template/Template.tsx
index 7ea71c1d6..bb2742700 100644
--- a/src/components/Template/Template.tsx
+++ b/src/components/Template/Template.tsx
@@ -1,385 +1,58 @@
-import { Box, chakra, useStyleConfig, ChakraComponent } from "@chakra-ui/react";
-import React, { forwardRef } from "react";
+import { Box, useStyleConfig } from "@chakra-ui/react";
-import SkipNavigation from "../SkipNavigation/SkipNavigation";
+const Template: React.FC = ({ children, sidebar = "none" }) => {
+ const styles = useStyleConfig("TemplateNew", { variant: sidebar });
-export interface TemplateProps {
- /** ID that other components can cross reference for accessibility purposes. */
- id?: string;
-}
-export interface TemplateHeaderProps {
- /** Flag to render an HTML header element. True by default. */
- renderHeaderElement?: boolean;
-}
-export interface TemplateFooterProps {
- /** Flag to render an HTML footer element. True by default. */
- renderFooterElement?: boolean;
-}
-export interface TemplateSidebarProps {
- /** Renders the `TemplateContentSidebar` component either on the left or
- * right side of the `TemplateContentPrimary` component. */
- sidebar?: "none" | "left" | "right";
-}
-export interface TemplateContentProps extends TemplateSidebarProps {
- /** ID used for the `main` HTML element. Defaults to "mainContent". Useful
- * anchor for the application skip navigation. */
- id?: string;
-}
-
-export interface TemplateAppContainerProps
- extends TemplateFooterProps,
- TemplateHeaderProps,
- TemplateSidebarProps {
- /** DOM that will be rendered before the rest of the components in
- * `TemplateAppContainer` and immediately before the `TemplateHeader` component. */
- aboveHeader?: React.ReactElement;
- /** DOM that will be rendered in the `TemplateBreakout` component section. */
- breakout?: React.ReactElement;
- /** DOM that will be rendered in the `TemplateContentBottom` component section. */
- contentBottom?: React.ReactElement;
- /** ID used for the `main` HTML element. Defaults to "mainContent". Useful
- * anchor for the application skip navigation. */
- contentId?: string;
- /** DOM that will be rendered in the `TemplateContentPrimary` component section. */
- contentPrimary?: React.ReactElement;
- /** DOM that will be rendered in the `TemplateContentSidebar` component section. */
- contentSidebar?: React.ReactElement;
- /** DOM that will be rendered in the `TemplateContentTop` component section. */
- contentTop?: React.ReactElement;
- /** DOM that will be rendered in the `TemplateFooter` component section. */
- footer?: React.ReactElement;
- /** DOM that will be rendered in the `TemplateHeader` component section. */
- header?: React.ReactElement;
- /** ID that other components can cross reference for accessibility purposes. */
- id?: string;
- /** Render the `SkipNavigation` component or not. False by default. */
- renderSkipNavigation?: boolean;
-}
-
-/**
- * The main top-level parent component that wraps all template-related
- * components.
- */
-const Template: ChakraComponent<
- React.ForwardRefExoticComponent<
- React.PropsWithChildren & React.RefAttributes
- >,
- React.PropsWithChildren
-> = chakra(
- forwardRef>(
- (props, ref?) => {
- const styles = useStyleConfig("Template", {});
- return (
-
- {props.children}
-
- );
- }
- )
-);
-
-/**
- * This optional component renders its children from edge-to-edge and should
- * be used for alerts or notifications that are typically site-wide. This must
- * be rendered immediately before the `TemplateHeader` component. This is meant
- * for components that render an `aside` HTML element or HTML element with the
- * `role="complementary"` attribute. These elements should *not* be rendered
- * in the `header` HTML section since that's an accessibility violation.
- */
-const TemplateAboveHeader: React.FC = (
- props: React.PropsWithChildren
-) => {
- const styles = useStyleConfig("TemplateBreakout", {});
- return {props.children} ;
-};
-
-/**
- * This optional component should be the first child of the `Template`
- * component. This is rendered as an HTML `` element. If an HTML
- * `` element is already passed in a custom component as the children,
- * set `renderFooterElement` to `false`. Otherwise, the parent wrapper will
- * render an HTML `` element.
- */
-const TemplateHeader: React.FC = ({
- children,
- renderHeaderElement = true,
-}: React.PropsWithChildren) => {
- const styles = useStyleConfig("TemplateBreakout", {});
- let headerElement = {children} ;
-
- // The user wants to render the `header` HTML element.
- if (renderHeaderElement) {
- // But if they passed in a component that renders an HTML ``,
- // then log a warning.
- React.Children.map(children as JSX.Element, (child: React.ReactElement) => {
- if (child?.type === "header" || child?.props?.mdxType === "header") {
- console.warn(
- "NYPL Reservoir TemplateHeader: An HTML `header` element was passed " +
- "in. Set `renderHeaderElement` to `false` to avoid nested HTML " +
- "`header` elements."
- );
- }
- });
- headerElement = (
-
- {children}
-
- );
- }
- return headerElement;
-};
-
-/**
- * This component should be used inside the `Template` component to contain both
- * the `TemplateAboveHeader` and `TemplateHeader` components. This is meant to
- * render its children from edge to edge and is most useful for the headers,
- * `Breadcrumbs`, and `Hero` components or other banner-like components.
- */
-const TemplateBreakout: React.FC = (
- props: React.PropsWithChildren
-) => {
- const styles = useStyleConfig("TemplateBreakout", {});
- return {props.children} ;
+ return {children} ;
};
-/**
- * This component is most useful to render content on the page. This renders an
- * HTML `` element with an id of "mainContent". The "mainContent" id should
- * be used as the consuming application's skip navigation link. The `TemplateContent`
- * component also takes a `sidebar` prop with optional "left" or "right" values.
- * This will set the correct *styling* needed for the `TemplateContentPrimary`
- * and `TemplateContentSidebar` components. Note that `TemplateContentPrimary`
- * and `TemplateContentSidebar` must be ordered correctly as children elements
- * for the appropriate styles to take effect.
- */
-const TemplateContent: React.FC = (
- props: React.PropsWithChildren
-) => {
- const { children, id = "mainContent", sidebar = "none" } = props;
- const styles = useStyleConfig("TemplateContent", {
- variant: sidebar,
- });
- // Manually pass in the `sidebar` prop to the `TemplateContentPrimary` and
- // `TemplateContentSidebar` components.
- const newChildren = React.Children.map(
- children as JSX.Element,
- (child: React.ReactElement) => {
- let newChild = child;
- if (
- (child && child?.type === TemplateContentPrimary) ||
- (child?.props && child.props?.mdxType === "TemplateContentPrimary") ||
- child?.type === TemplateContentSidebar ||
- (child?.props && child.props?.mdxType === "TemplateContentSidebar")
- ) {
- newChild = React.cloneElement(child, { sidebar });
- }
-
- return newChild;
- }
- );
+const TemplateBreakout: React.FC = ({ children }) => {
+ const styles = useStyleConfig("TemplateNewBreakout", {});
return (
-
- {newChildren}
+
+ {children}
);
};
-/**
- * This optional component must be used inside the `TemplateContent` component.
- * This renders content in the main width of the container and will always render
- * above the primary component and the sidebar component (if any).
- */
-const TemplateContentTop: React.FC = (
- props: React.PropsWithChildren
-) => {
- const styles = useStyleConfig("TemplateContentTopBottom", {});
- return {props.children} ;
-};
-
-/**
- * This optional component must be used inside the `TemplateContent` component
- * and after the `TemplateContentPrimary` or `TemplateContentSidebar` component.
- * This renders content in the main width of the container and should always
- * render below the primary component and the sidebar component (if any).
- */
-const TemplateContentBottom: React.FC = (
- props: React.PropsWithChildren
-) => {
- const styles = useStyleConfig("TemplateContentTopBottom", {});
- return {props.children} ;
-};
-
-/**
- * This component is used to render content in a column when there must be a
- * sidebar component on either its left or right side. It must go inside the
- * `TemplateContent` component. An optional `sidebar` prop value of "left" or
- * "right" can be passed to render the correct CSS styles. If the `sidebar`
- * prop is used in the `TemplateContent` component, there is no need to pass
- * the `sidebar` prop to this component -- `TemplateContent` will handle it.
- */
-const TemplateContentPrimary: React.FC = (
- props: React.PropsWithChildren
-) => {
- const { sidebar } = props;
- const styles = useStyleConfig("TemplateContentPrimary", {
- variant: sidebar,
- });
- return {props.children} ;
-};
+const TemplateTop: React.FC = ({ children }) => (
+ {children}
+);
-/**
- * This component is used to render content in a sidebar column. It must go
- * inside the `TemplateContent` component and must be paired with the
- * `TemplateContentPrimary` component. If this is a left sidebar, it needs to be
- * rendered before the `TemplateContentPrimary` component. If this is a right
- * sidebar, it needs to be rendered after the `TemplateContentPrimary` component.
- * An optional `sidebar` prop value of "left" or "right" can be passed to render
- * the correct CSS styles. If the `sidebar` prop is used in the `TemplateContent`
- * component, there is no need to pass the `sidebar` prop to this component --
- * `TemplateContent` will handle it.
- */
-const TemplateContentSidebar: React.FC = (
- props: React.PropsWithChildren
-) => {
- const { sidebar } = props;
- const styles = useStyleConfig("TemplateContentSidebar", {
- variant: sidebar,
- });
- return {props.children} ;
-};
+const TemplateMain: React.FC = ({ children, id = "mainContent" }) => (
+
+ {children}
+
+);
-/**
- * This optional component should be the last child of the `Template`
- * component. This is rendered as an HTML `` element and spans the full
- * width of the page. If an HTML `` element is already passed in a
- * custom component, set `renderFooterElement` to `false`.
- */
-const TemplateFooter: React.FC = ({
+const TemplateMainNarrow: React.FC = ({
children,
- renderFooterElement = true,
-}: React.PropsWithChildren) => {
- const styles = useStyleConfig("TemplateBreakout", {});
- let footerElement = {children} ;
+ id = "mainContent",
+}) => {
+ const styles = useStyleConfig("TemplateNewMainNarrow");
- // The user wants to render the `footer` HTML element.
- if (renderFooterElement) {
- // But give a warning if one was passed.
- React.Children.map(children as JSX.Element, (child: React.ReactElement) => {
- if (child?.type === "footer" || child?.props?.mdxType === "footer") {
- console.warn(
- "NYPL Reservoir TemplateFooter: An HTML `footer` element was passed " +
- "in. Set `renderFooterElement` to `false` to avoid nested HTML " +
- "`footer` elements."
- );
- }
- });
- footerElement = (
-
- {children}
-
- );
- }
- return footerElement;
+ return (
+
+ {children}
+
+ );
};
-/**
- * This single component can be used instead of all the individual template
- * components. Instead of importing and rendering the needed "template"
- * components, each section is passed as a prop to the section where it should
- * be rendered. For example, if you want to render content in the
- * `TemplateContentPrimary` section, then pass it as a prop to `contentPrimary`.
- */
-export const TemplateAppContainer: ChakraComponent<
- React.ForwardRefExoticComponent<
- React.PropsWithChildren &
- React.RefAttributes
- >,
- React.PropsWithChildren
-> = chakra(
- forwardRef<
- HTMLDivElement,
- React.PropsWithChildren
- >((props, ref?) => {
- const {
- aboveHeader,
- breakout,
- contentId = "mainContent",
- contentBottom,
- contentPrimary,
- contentSidebar,
- contentTop,
- footer,
- header,
- id,
- sidebar = "none",
- renderFooterElement = true,
- renderHeaderElement = true,
- renderSkipNavigation = false,
- ...rest
- } = props;
- const aboveHeaderElem = aboveHeader && (
- {aboveHeader}
- );
- const contentTopElem = contentTop && (
- {contentTop}
- );
- const contentPrimaryElem = contentPrimary && (
- {contentPrimary}
- );
- const contentBottomElem = contentBottom && (
- {contentBottom}
- );
- const contentSidebarElem = contentSidebar && (
- {contentSidebar}
- );
- return (
- <>
- {renderSkipNavigation ? : null}
-
-
- {aboveHeaderElem}
- {(header || breakout) && (
-
- {header}
- {breakout}
-
- )}
-
- {/* Note that setting `sidebar` as a prop here affects the
- TemplateContentSidebar and TemplateContentPrimary components. */}
-
- {contentTopElem}
-
- {sidebar === "left" && contentSidebarElem}
-
- {contentPrimaryElem}
-
- {sidebar === "right" && contentSidebarElem}
+const TemplateSidebar: React.FC = ({ children }) => (
+ {children}
+);
- {contentBottomElem}
-
- {footer && (
-
- {footer}
-
- )}
-
- >
- );
- })
+const TemplateBottom: React.FC = ({ children }) => (
+ {children}
);
export {
Template,
- TemplateAboveHeader,
TemplateBreakout,
- TemplateContent,
- TemplateContentBottom,
- TemplateContentPrimary,
- TemplateContentSidebar,
- TemplateContentTop,
- TemplateFooter,
- TemplateHeader,
+ TemplateTop,
+ TemplateMain,
+ TemplateMainNarrow,
+ TemplateSidebar,
+ TemplateBottom,
};
-export default TemplateAppContainer;
diff --git a/src/components/Template/TemplateNew.mdx b/src/components/Template/TemplateNew.mdx
deleted file mode 100644
index cc3a6c7c7..000000000
--- a/src/components/Template/TemplateNew.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
-import {
- TemplateNew,
- TemplateNewBreakout,
- TemplateNewTop,
- TemplateNewMain,
- TemplateNewSidebar,
- TemplateNewBottom,
-} from "./TemplateNew";
-import * as TemplateNewStories from "./TemplateNew.stories";
-
-
-
-## Full Example
-
-This is best viewed in the Storybook "Canvas" and not "Docs" section.
-
-
diff --git a/src/components/Template/TemplateNew.stories.tsx b/src/components/Template/TemplateNew.stories.tsx
deleted file mode 100644
index fc6846390..000000000
--- a/src/components/Template/TemplateNew.stories.tsx
+++ /dev/null
@@ -1,313 +0,0 @@
-import type { Meta } from "@storybook/react";
-import { getPlaceholderImage } from "../../utils/utils";
-import Accordion, { AccordionDataProps } from "../Accordion/Accordion";
-import Banner from "../Banner/Banner";
-import Breadcrumbs from "../Breadcrumbs/Breadcrumbs";
-import Button from "../Button/Button";
-import Card, { CardHeading, CardContent } from "../Card/Card";
-import Form, { FormField, FormRow } from "../Form/Form";
-import Heading from "../Heading/Heading";
-import Hero from "../Hero/Hero";
-import { HorizontalRule } from "../HorizontalRule/HorizontalRule";
-import Placeholder from "../Placeholder/Placeholder";
-import Table from "../Table/Table";
-import TextInput from "../TextInput/TextInput";
-import {
- TemplateNew,
- TemplateNewBreakout,
- TemplateNewTop,
- TemplateNewMain,
- TemplateNewSidebar,
- TemplateNewBottom,
-} from "./TemplateNew";
-
-const accordionData: AccordionDataProps[] = [
- {
- accordionType: "default",
- label: "Tom Nook",
- panel: (
-
-
- Tom Nook
-
-
- Tom Nook, known in Japan as Tanukichi , is a fictional character
- in the Animal Crossing series who operates the village store.
-
-
- ),
- },
-];
-const faqContentData: AccordionDataProps[] = [
- ...accordionData,
- {
- accordionType: "warning",
- label: "Isabelle",
- panel: (
-
-
- Isabelle
-
-
- Isabelle, known as Shizue in Japan, is a fictional character from the
- Animal Crossing series of video games. She is a kindly Shih Tzu that
- debuted in the 2012 release Animal Crossing: New Leaf, where she
- serves as the secretary to the player character.
-
-
- ),
- },
- {
- accordionType: "error",
- label: "K.K. Slider",
- panel: (
-
-
- K.K. Slider
-
-
-
- Totakeke, more commonly known as K.K. Slider or K.K. , is a
- fictional character within the Animal Crossing franchise. One of the
- franchise's most popular characters, he debuted in the title Animal
- Crossing, and has appeared in every installment since.
-
-
-
- ),
- },
-];
-
-const columnHeadersAlt = [
- "Name",
- "Nick Name",
- "Species",
- "Description",
- "Bio",
- "Salary (USD)",
-];
-const tableDataAlt = [
- [
- "Tom Nook",
- "Tanukichi",
- "Raccoon",
- "A businessman who manages the town shop and the player's home loan.",
- "Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Maecenas faucibus mollis interdum. Donec id elit non mi porta gravida at eget metus. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Nulla vitae elit libero, a pharetra augue.",
- "$225,000",
- ],
- [
- "Isabelle",
- "Shizue",
- "Dog",
- "A secretary and assistant to the player. Twin sister to Digby.",
- "Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla. Sed posuere consectetur est at lobortis. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Integer posuere erat a ante luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Sed posuere consectetur est at lobortis. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.",
- "$228,500",
- ],
- [
- "K.K. Slider",
- "Totakeke",
- "Dog",
- "A traveling musician and DJ. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.",
- "Cras mattis consectetur purus sit amet fermentum. Nulla vitae elit libero, a pharetra augue. Etiam porta sem malesuada magna mollis euismod. Donec ullamcorper nulla non metus auctor fringilla. Donec sed odio dui. Donec id elit non mi porta gravida at eget metus.",
- "$157,000",
- ],
- [
- "Sonny Resetti",
- "Risetto san",
- "Mole",
- "Lectures the player if they reset their game. Brother to Don Resetti.",
- "Pellentesque ornare sem lacinia quam venenatis vestibulum. Etiam porta sem malesuada magna mollis euismod. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.",
- "$89,000",
- ],
-];
-const columnStylesComplex = [
- { minWidth: "200px", width: "15%" },
- { minWidth: "200px", width: "15%" },
- { minWidth: "200px", width: "15%" },
- { minWidth: "500px", width: "auto" },
- { minWidth: "500px", width: "auto" },
- { minWidth: "160px", width: "15%", textAlign: "right" },
-];
-
-const otherSubHeaderText =
- "With 92 locations across the Bronx, Manhattan, and Staten Island, The New York Public Library is an essential part of neighborhoods across the city. Visit us today.";
-
-const meta: Meta = {
- title: "Components/Page Layout/TemplateNew",
- component: TemplateNew,
-};
-
-export default meta;
-
-export const TemplateNewExample = {
- args: {
- sidebar: "left",
- },
- render: (args) => (
- <>
-
-
- Hero
-
-
- Content Top
-
-
- Left Sidebar
-
-
- Main Content
-
-
- Content Bottom
-
-
- >
- ),
-};
-
-export const TemplateNewFullExample = {
- args: {
- sidebar: "left",
- },
- render: (args) => (
- <>
-
-
-
- }
- imageProps={{
- alt: "Image example",
- src: getPlaceholderImage("smaller"),
- }}
- isDarkBackgroundImage
- subHeaderText={otherSubHeaderText}
- />
-
-
-
-
-
- Sidebar information in a `Card` component.
-
-
- Library Image
-
-
- Vestibulum id ligula porta felis euismod semper. Nulla vitae elit
- libero, a pharetra augue.
-
-
-
-
- This is the main content!
-
-
- Fill out the form!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Submit
-
-
-
-
-
-
-
-
- >
- ),
-};
diff --git a/src/components/Template/TemplateNew.tsx b/src/components/Template/TemplateNew.tsx
deleted file mode 100644
index 5f8fe87fd..000000000
--- a/src/components/Template/TemplateNew.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import { Box, useStyleConfig } from "@chakra-ui/react";
-
-const TemplateNew: React.FC = ({ children, sidebar = "none" }) => {
- const styles = useStyleConfig("TemplateNew", { variant: sidebar });
-
- return {children} ;
-};
-
-const TemplateNewBreakout: React.FC = ({ children }) => {
- const styles = useStyleConfig("TemplateNewBreakout", {});
-
- return {children} ;
-};
-
-const TemplateNewTop: React.FC = ({ children }) => {
- const styles = useStyleConfig("TemplateNewTop", {});
-
- return {children} ;
-};
-
-const TemplateNewMain: React.FC = ({ children }) => {
- const styles = useStyleConfig("TemplateNewMain");
-
- return {children} ;
-};
-
-const TemplateNewSidebar: React.FC = ({ children }) => {
- const styles = useStyleConfig("TemplateNewSidebar", {});
-
- return {children} ;
-};
-
-const TemplateNewBottom: React.FC = ({ children }) => {
- const styles = useStyleConfig("TemplateNewBottom", {});
-
- return {children} ;
-};
-
-export {
- TemplateNew,
- TemplateNewBreakout,
- TemplateNewTop,
- TemplateNewMain,
- TemplateNewSidebar,
- TemplateNewBottom,
-};
diff --git a/src/components/Template/templateChangelogData.ts b/src/components/Template/templateChangelogData.ts
index 3baaeff26..708c461c5 100644
--- a/src/components/Template/templateChangelogData.ts
+++ b/src/components/Template/templateChangelogData.ts
@@ -9,6 +9,15 @@
import { ChangelogData } from "../../utils/ComponentChangelogTable";
export const changelogData: ChangelogData[] = [
+ {
+ date: "Prerelease",
+ version: "Prerelease",
+ type: "Update",
+ affects: ["Functionality", "Styles"],
+ notes: [
+ "Major update to component and styles based on the [Template TAD](https://docs.google.com/document/d/1vZJX7Y-DnEM44-iWw5qoXGdxqavHEN6prhr-YDTNr0o/edit?pli=1&tab=t.0).",
+ ],
+ },
{
date: "2024-10-02",
version: "3.4.0",
diff --git a/src/index.ts b/src/index.ts
index 6d6068934..57624fa9c 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -272,33 +272,14 @@ export type {
TagSetFilterProps,
} from "./components/TagSet/TagSetFilter";
export {
- TemplateAppContainer,
Template,
- TemplateAboveHeader,
- TemplateHeader,
TemplateBreakout,
- TemplateContent,
- TemplateContentTop,
- TemplateContentPrimary,
- TemplateContentSidebar,
- TemplateFooter,
+ TemplateTop,
+ TemplateMain,
+ TemplateMainNarrow,
+ TemplateSidebar,
+ TemplateBottom,
} from "./components/Template/Template";
-export type {
- TemplateAppContainerProps,
- TemplateProps,
- TemplateContentProps,
- TemplateFooterProps,
- TemplateHeaderProps,
- TemplateSidebarProps,
-} from "./components/Template/Template";
-export {
- TemplateNew,
- TemplateNewBreakout,
- TemplateNewTop,
- TemplateNewMain,
- TemplateNewSidebar,
- TemplateNewBottom,
-} from "./components/Template/TemplateNew";
export { default as Text } from "./components/Text/Text";
export type { TextProps, TextSizes } from "./components/Text/Text";
export { default as TextInput } from "./components/TextInput/TextInput";
diff --git a/src/theme/components/templatenew.ts b/src/theme/components/templatenew.ts
index 652154d02..f9195fd77 100644
--- a/src/theme/components/templatenew.ts
+++ b/src/theme/components/templatenew.ts
@@ -12,10 +12,11 @@ const TemplateNew = defineStyleConfig({
maxWidth: "1280px",
m: "0 auto",
p: "s",
- gap: responsiveGap,
gridTemplateAreas: `"breakout" "top" "main" "bottom"`,
gridTemplateColumns: "repeat(1, minmax(100px, 1fr))",
gridTemplateRows: "auto",
+ columnGap: responsiveGap,
+ "& > *:not(:last-child)": { mb: responsiveGap },
}),
variants: {
left: {
@@ -47,52 +48,21 @@ const TemplateNew = defineStyleConfig({
const TemplateNewBreakout = defineStyleConfig({
baseStyle: defineStyle({
- gridArea: "breakout",
width: "100vw",
ml: "calc(-50vw + 50%)",
px: "s",
}),
});
-const TemplateNewTop = defineStyleConfig({
+const TemplateNewMainNarrow = defineStyleConfig({
baseStyle: defineStyle({
- gridArea: "top",
- }),
-});
-
-const TemplateNewMain = defineStyleConfig({
- baseStyle: defineStyle({
- gridArea: "main",
- }),
- variants: {
- featuredContent: {
- width: "100vw",
- ml: "calc(-50vw + 50%)",
- px: "s",
- },
- text: {
- maxWidth: "600px",
- },
- },
-});
-
-const TemplateNewSidebar = defineStyleConfig({
- baseStyle: defineStyle({
- gridArea: "sidebar",
- }),
-});
-
-const TemplateNewBottom = defineStyleConfig({
- baseStyle: defineStyle({
- gridArea: "bottom",
+ maxWidth: { lg: "720px" },
+ m: { lg: "0 auto" },
}),
});
export default {
TemplateNew,
TemplateNewBreakout,
- TemplateNewTop,
- TemplateNewMain,
- TemplateNewSidebar,
- TemplateNewBottom,
+ TemplateNewMainNarrow,
};
From d38e8b245910a6fc5dd7b7ea4bb46331ed0679bf Mon Sep 17 00:00:00 2001
From: Olivia Wong
Date: Thu, 5 Dec 2024 15:45:59 -0500
Subject: [PATCH 05/18] Updates snapshot
---
.../__snapshots__/Template.test.tsx.snap | 317 +-----------------
1 file changed, 17 insertions(+), 300 deletions(-)
diff --git a/src/components/Template/__snapshots__/Template.test.tsx.snap b/src/components/Template/__snapshots__/Template.test.tsx.snap
index 665d86130..44fe72b37 100644
--- a/src/components/Template/__snapshots__/Template.test.tsx.snap
+++ b/src/components/Template/__snapshots__/Template.test.tsx.snap
@@ -2,341 +2,58 @@
exports[`Template components renders the UI snapshot correctly 1`] = `
- Above Header
+ Breakout
-
-
- NYPL Header
-
-
-
- Breadcrumbs
-
-
- Hero
-
-
-
-
-
-
-
-
- Main Content
-
-
- More Content
-
-
-
-
-
-`;
-
-exports[`Template components renders the UI snapshot correctly 2`] = `
-
-
- Above Header
-
+ Content Top
-
-
- NYPL Header
-
-
- Breadcrumbs
-
-
- Hero
-
-
-
-
-
-
-
- Main Content
-
-
- More Content
-
-
-
-
-
-`;
-
-exports[`Template components renders the UI snapshot correctly 3`] = `
-
-
- Above Header
-
+ Left Sidebar
-
-
- NYPL Header
-
-
- Breadcrumbs
-
-
- Hero
-
-
-
- Content Top
-
+ Main Content
-
-
-
- Main Content
-
-
- More Content
-
-
-
-
-
-`;
-
-exports[`Template components renders the UI snapshot correctly 4`] = `
-
-
-
-
-
- NYPL Header
-
-
- Breadcrumbs
-
-
- Hero
-
-
-
-
-
-
-
-
- Main Content
-
-
- More Content
-
+ More Content
-
+
`;
From 6db681395802eaed7c788ebddda9a52a874bfab6 Mon Sep 17 00:00:00 2001
From: Olivia Wong
Date: Thu, 5 Dec 2024 16:19:53 -0500
Subject: [PATCH 06/18] Adds comments and types
---
src/components/Template/Template.stories.tsx | 2 +
src/components/Template/Template.tsx | 106 +++++++++++++++----
2 files changed, 86 insertions(+), 22 deletions(-)
diff --git a/src/components/Template/Template.stories.tsx b/src/components/Template/Template.stories.tsx
index e48c65f83..8ee2bc709 100644
--- a/src/components/Template/Template.stories.tsx
+++ b/src/components/Template/Template.stories.tsx
@@ -171,9 +171,11 @@ const otherSubHeaderText =
*/
export const WithControls = {
args: {
+ id: "template",
sidebar: "left",
},
argTypes: {
+ id: { control: false },
sidebar: {
table: { defaultValue: { summary: "none" } },
},
diff --git a/src/components/Template/Template.tsx b/src/components/Template/Template.tsx
index bb2742700..250abbee4 100644
--- a/src/components/Template/Template.tsx
+++ b/src/components/Template/Template.tsx
@@ -1,35 +1,87 @@
-import { Box, useStyleConfig } from "@chakra-ui/react";
+import { Box, ChakraComponent, useStyleConfig } from "@chakra-ui/react";
-const Template: React.FC = ({ children, sidebar = "none" }) => {
+export interface TemplateProps {
+ /** ID that other components can cross reference for accessibility purposes. */
+ id?: string;
+ /** Renders the `TemplateSidebar` component either on the left or
+ * right side of the `TemplateMain` component. */
+ sidebar?: "none" | "left" | "right";
+}
+
+export interface TemplateMainProps {
+ /** ID used for the `main` HTML element. Defaults to "mainContent". Useful
+ * anchor for the application skip navigation. */
+ id?: string;
+}
+
+/**
+ * The main top-level parent component that wraps all template-related
+ * components.
+ */
+const Template: ChakraComponent<
+ React.ForwardRefExoticComponent<
+ React.PropsWithChildren & React.RefAttributes
+ >,
+ React.PropsWithChildren
+> = ({ children, sidebar = "none" }) => {
const styles = useStyleConfig("TemplateNew", { variant: sidebar });
return {children} ;
};
-const TemplateBreakout: React.FC = ({ children }) => {
+/**
+ * This optional component renders its children from edge-to-edge.
+ * It is most useful for `Breadcrumbs`, `Hero`, or other banner-like
+ * components.
+ */
+const TemplateBreakout: React.FC = (
+ props: React.PropsWithChildren
+) => {
const styles = useStyleConfig("TemplateNewBreakout", {});
return (
- {children}
+ {props.children}
);
};
-const TemplateTop: React.FC = ({ children }) => (
- {children}
-);
+/**
+ * This optional component renders content at a max width of 1280px and
+ * will always render above the main content and sidebar (if one exists).
+ */
+const TemplateTop: React.FC = (
+ props: React.PropsWithChildren
+) => {props.children} ;
-const TemplateMain: React.FC = ({ children, id = "mainContent" }) => (
-
- {children}
-
-);
+/**
+ * This component renders an HTML `` element with an id of "mainContent".
+ * The "mainContent" id should be used as the consuming application's skip
+ * navigation link.
+ */
+const TemplateMain: React.FC = (
+ props: React.PropsWithChildren
+) => {
+ const { children, id = "mainContent" } = props;
+
+ return (
+
+ {children}
+
+ );
+};
-const TemplateMainNarrow: React.FC = ({
- children,
- id = "mainContent",
-}) => {
+/**
+ * This component renders an HTML `` element with an id of "mainContent".
+ * The "mainContent" id should be used as the consuming application's skip
+ * navigation link. It provides a narrower container for better readability if
+ * the main content includes long text. This component is meant to be used in
+ * lieu of `TemplateMain`, and should not be used in conjunction with `TemplateSidebar`.
+ */
+const TemplateMainNarrow: React.FC = (
+ props: React.PropsWithChildren
+) => {
+ const { children, id = "mainContent" } = props;
const styles = useStyleConfig("TemplateNewMainNarrow");
return (
@@ -39,13 +91,23 @@ const TemplateMainNarrow: React.FC = ({
);
};
-const TemplateSidebar: React.FC = ({ children }) => (
- {children}
-);
+/**
+ * This optional component is used to render content in a sidebar column.
+ * It must be paired with the `TemplateMain` component. An optional `sidebar`
+ * prop value of "left" or "right" must be passed to the `Template` wrapper
+ * to render the correct CSS styles.
+ */
+const TemplateSidebar: React.FC = (
+ props: React.PropsWithChildren
+) => {props.children} ;
-const TemplateBottom: React.FC = ({ children }) => (
- {children}
-);
+/**
+ * This optional component renders content at a max width of 1280px and
+ * will always render below the main content and sidebar (if one exists).
+ */
+const TemplateBottom: React.FC = (
+ props: React.PropsWithChildren
+) => {props.children} ;
export {
Template,
From bee3094311238cb4ee31e6d0a6f3b0d225aed0a8 Mon Sep 17 00:00:00 2001
From: Olivia Wong
Date: Thu, 5 Dec 2024 16:25:31 -0500
Subject: [PATCH 07/18] Cleans up comments
---
src/components/Template/Template.tsx | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/src/components/Template/Template.tsx b/src/components/Template/Template.tsx
index 250abbee4..9ec95b073 100644
--- a/src/components/Template/Template.tsx
+++ b/src/components/Template/Template.tsx
@@ -30,9 +30,9 @@ const Template: ChakraComponent<
};
/**
- * This optional component renders its children from edge-to-edge.
- * It is most useful for `Breadcrumbs`, `Hero`, or other banner-like
- * components.
+ * This optional component renders its children above the main content
+ * and spans edge-to-edge. It is most useful for `Breadcrumbs`, `Hero`,
+ * or other banner-like components.
*/
const TemplateBreakout: React.FC = (
props: React.PropsWithChildren
@@ -48,7 +48,8 @@ const TemplateBreakout: React.FC = (
/**
* This optional component renders content at a max width of 1280px and
- * will always render above the main content and sidebar (if one exists).
+ * will render below `TemplateBreakout` (if being used) and above the
+ * main content and sidebar (if one exists).
*/
const TemplateTop: React.FC = (
props: React.PropsWithChildren
@@ -57,7 +58,8 @@ const TemplateTop: React.FC = (
/**
* This component renders an HTML `` element with an id of "mainContent".
* The "mainContent" id should be used as the consuming application's skip
- * navigation link.
+ * navigation link. The component should not be used in conjunction with
+ * `TemplateMainNarrow`.
*/
const TemplateMain: React.FC = (
props: React.PropsWithChildren
@@ -76,7 +78,8 @@ const TemplateMain: React.FC = (
* The "mainContent" id should be used as the consuming application's skip
* navigation link. It provides a narrower container for better readability if
* the main content includes long text. This component is meant to be used in
- * lieu of `TemplateMain`, and should not be used in conjunction with `TemplateSidebar`.
+ * lieu of `TemplateMain`, and should not be used in conjunction with
+ * `TemplateSidebar`.
*/
const TemplateMainNarrow: React.FC = (
props: React.PropsWithChildren
From 7a4da94ec5d82041b91706248721b2b6016dbfad Mon Sep 17 00:00:00 2001
From: Olivia Wong
Date: Thu, 5 Dec 2024 16:31:41 -0500
Subject: [PATCH 08/18] Cleans up stories
---
src/components/Template/Template.stories.tsx | 98 ++------------------
1 file changed, 6 insertions(+), 92 deletions(-)
diff --git a/src/components/Template/Template.stories.tsx b/src/components/Template/Template.stories.tsx
index 8ee2bc709..c5941352d 100644
--- a/src/components/Template/Template.stories.tsx
+++ b/src/components/Template/Template.stories.tsx
@@ -239,7 +239,7 @@ export const TemplateFullExample = {
@@ -319,7 +319,7 @@ export const TemplateFullExample = {
@@ -358,7 +358,7 @@ export const TemplateFullExampleNarrow = {
@@ -380,59 +380,10 @@ export const TemplateFullExampleNarrow = {
Collection.
-
- Fill out the form!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Submit
-
-
-
@@ -471,7 +422,7 @@ export const TemplateFullExampleWithFeaturedContent = {
@@ -480,43 +431,6 @@ export const TemplateFullExampleWithFeaturedContent = {
This is the main content!
- Fill out the form!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Submit
-
-
From dc3c8cf0930b40d67c54350bc42f08cceb7c902a Mon Sep 17 00:00:00 2001
From: Olivia Wong
Date: Fri, 6 Dec 2024 16:53:35 -0500
Subject: [PATCH 09/18] Updates per PR feedback
---
CHANGELOG.md | 2 +-
src/components/Template/Template.mdx | 27 ++-
src/components/Template/Template.stories.tsx | 106 ++++------
src/components/Template/Template.test.tsx | 105 +++++++--
src/components/Template/Template.tsx | 89 ++++----
.../__snapshots__/Template.test.tsx.snap | 200 ++++++++++++++++++
.../Template/templateChangelogData.ts | 4 +-
src/theme/components/template.ts | 123 ++++-------
src/theme/components/templatenew.ts | 68 ------
src/theme/index.ts | 2 -
10 files changed, 434 insertions(+), 292 deletions(-)
delete mode 100644 src/theme/components/templatenew.ts
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 32bb902ef..fce14582d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,7 +10,7 @@ Currently, this repo is in Prerelease. When it is released, this project will ad
### Updates
-- Updates `Template` component(s) and styles per [TAD](https://docs.google.com/document/d/1vZJX7Y-DnEM44-iWw5qoXGdxqavHEN6prhr-YDTNr0o/edit?pli=1&tab=t.0).
+- [Updates `Template` component(s)](<(https://newyorkpubliclibrary.atlassian.net/browse/DSD-1884)>) and styles per TAD.
## 3.5.0 (December 5, 2024)
diff --git a/src/components/Template/Template.mdx b/src/components/Template/Template.mdx
index 21ee2cc3d..852a6ee54 100644
--- a/src/components/Template/Template.mdx
+++ b/src/components/Template/Template.mdx
@@ -34,7 +34,7 @@ import Link from "../Link/Link";
## Template Overview
-TBD
+### Using the `Template` with the `Header` and `Footer`
- // ...
- // ...
- // ...
- // ...
- // ...
-
+//...
+
+<>
+
+
+ ...
+ ...
+ ...
+ ...
+ ...
+
+>
`} language="jsx" />
## Template Props
@@ -81,6 +85,9 @@ breaking a reader's rhythm. The `TemplateMain` component has a max width of 1280
which is too wide for text. If your content includes long chunks of text, you
should use the `TemplateMainNarrow` component instead.
+This means you may use `TemplateMain` or `TemplateMainNarrow` depending on your needs,
+but the two should not be used in conjunction.
+
The `TemplateMain` and `TemplateMainNarrow` components render the content as a
`` element with a default "id" of `"mainContent"`. This should be used as
the anchor element that the skip navigation link points to. If your application
@@ -100,7 +107,7 @@ Pass the location of the sidebar to the `sidebar` prop as either "left" or "righ
- // ...
+ //...
`}
language="jsx"
diff --git a/src/components/Template/Template.stories.tsx b/src/components/Template/Template.stories.tsx
index c5941352d..54a8dff29 100644
--- a/src/components/Template/Template.stories.tsx
+++ b/src/components/Template/Template.stories.tsx
@@ -1,4 +1,4 @@
-import type { Meta } from "@storybook/react";
+import type { Meta, StoryObj } from "@storybook/react";
import { getPlaceholderImage } from "../../utils/utils";
import Accordion, { AccordionDataProps } from "../Accordion/Accordion";
import Banner from "../Banner/Banner";
@@ -9,7 +9,7 @@ import FeaturedContent from "../FeaturedContent/FeaturedContent";
import Form, { FormField, FormRow } from "../Form/Form";
import Heading from "../Heading/Heading";
import Hero from "../Hero/Hero";
-import { HorizontalRule } from "../HorizontalRule/HorizontalRule";
+import HorizontalRule from "../HorizontalRule/HorizontalRule";
import Placeholder from "../Placeholder/Placeholder";
import Table from "../Table/Table";
import TextInput from "../TextInput/TextInput";
@@ -21,14 +21,25 @@ import {
TemplateMainNarrow,
TemplateSidebar,
TemplateBottom,
+ sidebarPlacementArray,
+ SidebarPlacement,
} from "./Template";
-const meta: Meta = {
+const meta: Meta = {
title: "Components/Page Layout/Template",
component: Template,
+ argTypes: {
+ id: { control: false },
+ sidebar: {
+ control: { type: "radio" },
+ options: sidebarPlacementArray,
+ table: { defaultValue: { summary: "none" } },
+ },
+ },
};
export default meta;
+type Story = StoryObj;
const accordionData: AccordionDataProps[] = [
{
@@ -169,7 +180,11 @@ const otherSubHeaderText =
* Main Story for the Template component. This must contains the `args`
* and `parameters` properties in this object.
*/
-export const WithControls = {
+
+export const sidebarLabel = (sidebar: SidebarPlacement) => {
+ return `${sidebar[0].toUpperCase()}${sidebar.slice(1)} Sidebar`;
+};
+export const WithControls: Story = {
args: {
id: "template",
sidebar: "left",
@@ -180,25 +195,31 @@ export const WithControls = {
table: { defaultValue: { summary: "none" } },
},
},
- render: (args) => (
-
-
- Breakout
-
-
- Content Top
-
-
- Left Sidebar
-
-
- Main Content
-
-
- Content Bottom
-
-
- ),
+ render: (args) => {
+ const { sidebar } = args;
+
+ return (
+
+
+ Breakout
+
+
+ Content Top
+
+ {sidebar !== "none" && (
+
+ {sidebarLabel(sidebar)}
+
+ )}
+
+ Main Content
+
+
+ Content Bottom
+
+
+ );
+ },
parameters: {
design: {
type: "figma",
@@ -207,7 +228,7 @@ export const WithControls = {
},
};
-export const TemplateFullExample = {
+export const TemplateFullExample: Story = {
args: {
sidebar: "left",
},
@@ -333,36 +354,6 @@ export const TemplateFullExampleNarrow = {
render: () => (
<>
-
-
- }
- imageProps={{
- alt: "Image example",
- src: getPlaceholderImage("smaller"),
- }}
- isDarkBackgroundImage
- subHeaderText={otherSubHeaderText}
- />
-
-
-
-
This is the main content!
@@ -381,13 +372,6 @@ export const TemplateFullExampleNarrow = {
-
-
-
>
),
diff --git a/src/components/Template/Template.test.tsx b/src/components/Template/Template.test.tsx
index e6fd85a41..de4d34e5d 100644
--- a/src/components/Template/Template.test.tsx
+++ b/src/components/Template/Template.test.tsx
@@ -1,3 +1,4 @@
+import React from "react";
import { render, screen } from "@testing-library/react";
import { axe } from "jest-axe";
import renderer from "react-test-renderer";
@@ -9,13 +10,14 @@ import {
TemplateMain,
TemplateSidebar,
TemplateBottom,
+ SidebarPlacement,
+ TemplateMainNarrow,
} from "./Template";
import Placeholder from "../Placeholder/Placeholder";
+import { sidebarLabel } from "./Template.stories";
const breakout = Breakout ;
-const sidebar = "left";
const contentTop = Content Top ;
-const contentSidebar = Left Sidebar ;
const contentMain = (
<>
Main Content
@@ -24,26 +26,37 @@ const contentMain = (
);
const contentBottom = Content Bottom ;
-const templateChildren = (
+const templateComponents = (
+ sidebar: SidebarPlacement = "none",
+ useMainNarrow: boolean = false
+) => (
{breakout}
{contentTop}
- {contentSidebar}
- {contentMain}
+ {sidebar !== "none" && !useMainNarrow && (
+
+ {sidebarLabel(sidebar)}
+
+ )}
+ {useMainNarrow ? (
+ {contentMain}
+ ) : (
+ {contentMain}
+ )}
{contentBottom}
);
describe("Template components accessibility", () => {
it("passes axe accessibility test", async () => {
- const { container } = render(<>{templateChildren}>);
+ const { container } = render(templateComponents("left"));
expect(await axe(container)).toHaveNoViolations();
});
});
describe("Template components", () => {
- it("renders each section", () => {
- render(<>{templateChildren}>);
+ it("renders each section with left sidebar", () => {
+ render(templateComponents("left"));
expect(screen.getByText("Breakout")).toBeInTheDocument();
expect(screen.getByText("Content Top")).toBeInTheDocument();
@@ -53,26 +66,76 @@ describe("Template components", () => {
expect(screen.getByText("Content Bottom")).toBeInTheDocument();
});
- it("renders a #mainContent id in the TemplateContent component", () => {
- const { container } = render(<>{templateChildren}>);
+ it("renders each section with left sidebar", () => {
+ render(templateComponents("right"));
+
+ expect(screen.getByText("Breakout")).toBeInTheDocument();
+ expect(screen.getByText("Content Top")).toBeInTheDocument();
+ expect(screen.getByText("Right Sidebar")).toBeInTheDocument();
+ expect(screen.getByText("Main Content")).toBeInTheDocument();
+ expect(screen.getByText("More Content")).toBeInTheDocument();
+ expect(screen.getByText("Content Bottom")).toBeInTheDocument();
+ });
+
+ it("renders a #mainContent id when using TemplateMain", () => {
+ const { container } = render(templateComponents("left"));
+
+ expect(container.querySelector("#mainContent")).toBeInTheDocument();
+ expect(screen.getByRole("main")).toHaveAttribute("id", "mainContent");
+ });
+
+ it("renders a #mainContent id when using TemplateMainNarrow", () => {
+ const { container } = render(templateComponents("none", true));
expect(container.querySelector("#mainContent")).toBeInTheDocument();
expect(screen.getByRole("main")).toHaveAttribute("id", "mainContent");
});
+ it("passes a ref to the div wrapper element", () => {
+ const ref = React.createRef();
+ const { container } = render(
+
+ {contentMain}
+
+ );
+
+ expect(container.querySelectorAll("div")[0]).toBe(ref.current);
+ });
+
it("renders the UI snapshot correctly", () => {
- const templateComponents = renderer
- .create(
-
- {breakout}
- {contentTop}
- {contentSidebar}
- {contentMain}
- {contentBottom}
-
- )
+ const templateComponentsLeftSidebar = renderer
+ .create(templateComponents("left"))
+ .toJSON();
+
+ const templateComponentsRightSidebar = renderer
+ .create(templateComponents("right"))
.toJSON();
- expect(templateComponents).toMatchSnapshot();
+ const templateComponentsNoSidebar = renderer
+ .create(templateComponents("none"))
+ .toJSON();
+
+ const templateComponentsMainNarrow = renderer
+ .create(templateComponents("none", true))
+ .toJSON();
+
+ const templateWithChakraProps = renderer.create(
+
+ {contentMain}
+
+ );
+
+ const templateWithOtherProps = renderer.create(
+
+ {contentMain}
+
+ );
+
+ expect(templateComponentsLeftSidebar).toMatchSnapshot();
+ expect(templateComponentsRightSidebar).toMatchSnapshot();
+ expect(templateComponentsNoSidebar).toMatchSnapshot();
+ expect(templateComponentsMainNarrow).toMatchSnapshot();
+ expect(templateWithChakraProps).toMatchSnapshot();
+ expect(templateWithOtherProps).toMatchSnapshot();
});
});
diff --git a/src/components/Template/Template.tsx b/src/components/Template/Template.tsx
index 9ec95b073..a6b14adee 100644
--- a/src/components/Template/Template.tsx
+++ b/src/components/Template/Template.tsx
@@ -1,11 +1,15 @@
-import { Box, ChakraComponent, useStyleConfig } from "@chakra-ui/react";
+import { Box, chakra, ChakraComponent, useStyleConfig } from "@chakra-ui/react";
+import { forwardRef } from "react";
+
+export const sidebarPlacementArray = ["none", "left", "right"] as const;
+export type SidebarPlacement = typeof sidebarPlacementArray[number];
export interface TemplateProps {
/** ID that other components can cross reference for accessibility purposes. */
id?: string;
/** Renders the `TemplateSidebar` component either on the left or
* right side of the `TemplateMain` component. */
- sidebar?: "none" | "left" | "right";
+ sidebar?: SidebarPlacement;
}
export interface TemplateMainProps {
@@ -23,25 +27,31 @@ const Template: ChakraComponent<
React.PropsWithChildren & React.RefAttributes
>,
React.PropsWithChildren
-> = ({ children, sidebar = "none" }) => {
- const styles = useStyleConfig("TemplateNew", { variant: sidebar });
+> = chakra(
+ forwardRef>(
+ ({ children, sidebar = "none" }, ref?) => {
+ const styles = useStyleConfig("Template", { variant: sidebar });
- return {children} ;
-};
+ return (
+
+ {children}
+
+ );
+ }
+ )
+);
/**
* This optional component renders its children above the main content
* and spans edge-to-edge. It is most useful for `Breadcrumbs`, `Hero`,
* or other banner-like components.
*/
-const TemplateBreakout: React.FC = (
- props: React.PropsWithChildren
-) => {
- const styles = useStyleConfig("TemplateNewBreakout", {});
+const TemplateBreakout: React.FC = ({ children }) => {
+ const styles = useStyleConfig("TemplateBreakout", {});
return (
- {props.children}
+ {children}
);
};
@@ -51,9 +61,9 @@ const TemplateBreakout: React.FC = (
* will render below `TemplateBreakout` (if being used) and above the
* main content and sidebar (if one exists).
*/
-const TemplateTop: React.FC = (
- props: React.PropsWithChildren
-) => {props.children} ;
+const TemplateTop: React.FC = ({ children }) => (
+ {children}
+);
/**
* This component renders an HTML `` element with an id of "mainContent".
@@ -61,17 +71,14 @@ const TemplateTop: React.FC = (
* navigation link. The component should not be used in conjunction with
* `TemplateMainNarrow`.
*/
-const TemplateMain: React.FC = (
- props: React.PropsWithChildren
-) => {
- const { children, id = "mainContent" } = props;
-
- return (
-
- {children}
-
- );
-};
+const TemplateMain: React.FC> = ({
+ children,
+ id = "mainContent",
+}) => (
+
+ {children}
+
+);
/**
* This component renders an HTML `` element with an id of "mainContent".
@@ -81,18 +88,16 @@ const TemplateMain: React.FC = (
* lieu of `TemplateMain`, and should not be used in conjunction with
* `TemplateSidebar`.
*/
-const TemplateMainNarrow: React.FC = (
- props: React.PropsWithChildren
-) => {
- const { children, id = "mainContent" } = props;
- const styles = useStyleConfig("TemplateNewMainNarrow");
+const TemplateMainNarrow: React.FC> =
+ ({ children, id = "mainContent" }) => {
+ const styles = useStyleConfig("TemplateMainNarrow");
- return (
-
- {children}
-
- );
-};
+ return (
+
+ {children}
+
+ );
+ };
/**
* This optional component is used to render content in a sidebar column.
@@ -100,17 +105,17 @@ const TemplateMainNarrow: React.FC = (
* prop value of "left" or "right" must be passed to the `Template` wrapper
* to render the correct CSS styles.
*/
-const TemplateSidebar: React.FC = (
- props: React.PropsWithChildren
-) => {props.children} ;
+const TemplateSidebar: React.FC = ({ children }) => (
+ {children}
+);
/**
* This optional component renders content at a max width of 1280px and
* will always render below the main content and sidebar (if one exists).
*/
-const TemplateBottom: React.FC = (
- props: React.PropsWithChildren
-) => {props.children} ;
+const TemplateBottom: React.FC = ({ children }) => (
+ {children}
+);
export {
Template,
diff --git a/src/components/Template/__snapshots__/Template.test.tsx.snap b/src/components/Template/__snapshots__/Template.test.tsx.snap
index 44fe72b37..3ed58d778 100644
--- a/src/components/Template/__snapshots__/Template.test.tsx.snap
+++ b/src/components/Template/__snapshots__/Template.test.tsx.snap
@@ -57,3 +57,203 @@ exports[`Template components renders the UI snapshot correctly 1`] = `
`;
+
+exports[`Template components renders the UI snapshot correctly 2`] = `
+
+
+
+
+
+
+ Main Content
+
+
+ More Content
+
+
+
+
+`;
+
+exports[`Template components renders the UI snapshot correctly 3`] = `
+
+
+
+
+
+ Main Content
+
+
+ More Content
+
+
+
+
+`;
+
+exports[`Template components renders the UI snapshot correctly 4`] = `
+
+
+
+
+
+ Main Content
+
+
+ More Content
+
+
+
+
+`;
+
+exports[`Template components renders the UI snapshot correctly 5`] = `
+
+
+
+ Main Content
+
+
+ More Content
+
+
+
+`;
+
+exports[`Template components renders the UI snapshot correctly 6`] = `
+
+
+
+ Main Content
+
+
+ More Content
+
+
+
+`;
diff --git a/src/components/Template/templateChangelogData.ts b/src/components/Template/templateChangelogData.ts
index 5804f35f7..57bd50cdb 100644
--- a/src/components/Template/templateChangelogData.ts
+++ b/src/components/Template/templateChangelogData.ts
@@ -14,9 +14,7 @@ export const changelogData: ChangelogData[] = [
version: "Prerelease",
type: "Update",
affects: ["Functionality", "Styles"],
- notes: [
- "Major update to component and styles based on the [Template TAD](https://docs.google.com/document/d/1vZJX7Y-DnEM44-iWw5qoXGdxqavHEN6prhr-YDTNr0o/edit?pli=1&tab=t.0).",
- ],
+ notes: ["Major update to component and styles based on the Template TAD."],
},
{
date: "2024-12-05",
diff --git a/src/theme/components/template.ts b/src/theme/components/template.ts
index 433ca8417..ec90435d8 100644
--- a/src/theme/components/template.ts
+++ b/src/theme/components/template.ts
@@ -1,113 +1,68 @@
import { defineStyleConfig } from "@chakra-ui/react";
import { defineStyle } from "@chakra-ui/system";
-/**
- * Grid layout based on https://www.joshwcomeau.com/css/full-bleed/
- */
+
+export const responsiveGap = { base: "1rem", md: "1.5rem", xl: "1rem" };
+export const responsivePadding = { base: "1rem", md: "1.5rem", xl: "2rem" };
const Template = defineStyleConfig({
baseStyle: defineStyle({
boxSizing: "border-box",
color: "ui.typography.body",
display: "grid",
- gridTemplateColumns: `
- 1fr
- min(1280px, 100%)
- 1fr`,
- rowGap: "grid.l",
- _dark: {
- color: "dark.ui.typography.body",
- },
- }),
- sizes: {},
- defaultProps: {},
-});
-// Elements that need to breakout will span outside
-// the center 1280px grid column.
-const TemplateBreakout = defineStyleConfig({
- baseStyle: defineStyle({
- width: "100%",
- // This could be "1 / 4" and it would mean the same. This is
- // "future-proof" the grid column assignment to the last column.
- gridColumn: "1 / -1",
+ maxWidth: "1280px",
+ m: "0 auto",
+ p: "s",
+ gridTemplateAreas: `"breakout" "top" "main" "bottom"`,
+ gridTemplateColumns: "repeat(1, minmax(100px, 1fr))",
+ gridTemplateRows: "auto",
+ columnGap: responsiveGap,
+ "& > *:not(:last-child)": { mb: responsiveGap },
}),
-});
-const TemplateContent = defineStyleConfig({
- baseStyle: defineStyle({
- // Set this element to start on the second 1280px grid column.
- gridColumn: "2",
- // This element also contains its own grid system within, but we use "flex"
- // for mobile to deal with overflow issues related to the Table component.
- display: { base: "flex", md: "grid" },
- flexDirection: { base: "column", md: null },
- gridTemplateColumns: "1fr",
- paddingY: 0,
- rowGap: "grid.l",
- }),
- // With left or right sidebars, we need to set two grid columns and
- // the column for the sidebar is max 271px width (255px for the sidebar
- // + 16px for padding).
variants: {
left: {
- gridTemplateColumns: { md: "271px 1fr" },
+ gridTemplateAreas: {
+ base: `"breakout" "top" "sidebar" "main" "bottom"`,
+ md: `"breakout breakout" "top top" "sidebar main" "bottom bottom"`,
+ },
+ gridTemplateColumns: {
+ base: "repeat(1, minmax(100px, 1fr))",
+ md: "repeat(2, minmax(100px, 1fr))",
+ lg: "minmax(100px, 1fr) minmax(200px, 2fr)",
+ xl: "minmax(100px, 1fr) minmax(300px, 3fr)",
+ },
},
right: {
- gridTemplateColumns: { md: "1fr 271px" },
+ gridTemplateAreas: {
+ base: `"breakout" "top" "main" "sidebar" "bottom"`,
+ md: `"breakout breakout" "top top" "main sidebar" "bottom bottom"`,
+ },
+ gridTemplateColumns: {
+ base: "repeat(1, minmax(100px, 1fr))",
+ md: "repeat(2, minmax(100px, 1fr))",
+ lg: "minmax(200px, 2fr) minmax(100px, 1fr)",
+ xl: "minmax(300px, 3fr) minmax(100px, 1fr)",
+ },
},
},
});
-const TemplateContentTopBottom = defineStyleConfig({
+const TemplateBreakout = defineStyleConfig({
baseStyle: defineStyle({
- gridColumn: { base: "1", md: "1 / span 2" },
- height: "100%",
- paddingX: "s",
+ width: "100vw",
+ ml: "calc(-50vw + 50%)",
+ px: "s",
}),
});
-/** The overflow styles were added to deal with overflow issues related to the
- * Table component. */
-const TemplateContentPrimary = defineStyleConfig({
+const TemplateMainNarrow = defineStyleConfig({
baseStyle: defineStyle({
- gridColumn: { base: "1", md: "1 / span 2" },
- paddingX: "s",
+ maxWidth: { lg: "720px" },
+ m: { lg: "0 auto" },
}),
- variants: {
- left: {
- gridColumn: { base: "1", md: "2" },
- marginEnd: { md: 0 },
- minWidth: { md: 0 },
- paddingRight: "s",
- paddingLeft: { base: "s", md: "l" },
- overflow: { base: "unset", md: "hidden" },
- },
- right: {
- gridColumn: "1",
- paddingRight: { base: "s", md: "l" },
- paddingLeft: "s",
- overflow: { base: "unset", md: "hidden" },
- },
- },
-});
-const TemplateContentSidebar = defineStyleConfig({
- variants: {
- left: {
- gridColumn: "1",
- paddingLeft: "s",
- paddingRight: { base: "s", md: 0 },
- },
- right: {
- gridColumn: { base: "1", md: "2" },
- paddingLeft: { base: "s", md: 0 },
- paddingRight: "s",
- },
- },
});
export default {
Template,
TemplateBreakout,
- TemplateContent,
- TemplateContentTopBottom,
- TemplateContentPrimary,
- TemplateContentSidebar,
+ TemplateMainNarrow,
};
diff --git a/src/theme/components/templatenew.ts b/src/theme/components/templatenew.ts
deleted file mode 100644
index f9195fd77..000000000
--- a/src/theme/components/templatenew.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-import { defineStyleConfig } from "@chakra-ui/react";
-import { defineStyle } from "@chakra-ui/system";
-
-export const responsiveGap = { base: "1rem", md: "1.5rem", xl: "1rem" };
-export const responsivePadding = { base: "1rem", md: "1.5rem", xl: "2rem" };
-
-const TemplateNew = defineStyleConfig({
- baseStyle: defineStyle({
- boxSizing: "border-box",
- color: "ui.typography.body",
- display: "grid",
- maxWidth: "1280px",
- m: "0 auto",
- p: "s",
- gridTemplateAreas: `"breakout" "top" "main" "bottom"`,
- gridTemplateColumns: "repeat(1, minmax(100px, 1fr))",
- gridTemplateRows: "auto",
- columnGap: responsiveGap,
- "& > *:not(:last-child)": { mb: responsiveGap },
- }),
- variants: {
- left: {
- gridTemplateAreas: {
- base: `"breakout" "top" "sidebar" "main" "bottom"`,
- md: `"breakout breakout" "top top" "sidebar main" "bottom bottom"`,
- },
- gridTemplateColumns: {
- base: "repeat(1, minmax(100px, 1fr))",
- md: "repeat(2, minmax(100px, 1fr))",
- lg: "minmax(100px, 1fr) minmax(200px, 2fr)",
- xl: "minmax(100px, 1fr) minmax(300px, 3fr)",
- },
- },
- right: {
- gridTemplateAreas: {
- base: `"breakout" "top" "main" "sidebar" "bottom"`,
- md: `"breakout breakout" "top top" "main sidebar" "bottom bottom"`,
- },
- gridTemplateColumns: {
- base: "repeat(1, minmax(100px, 1fr))",
- md: "repeat(2, minmax(100px, 1fr))",
- lg: "minmax(200px, 2fr) minmax(100px, 1fr)",
- xl: "minmax(300px, 3fr) minmax(100px, 1fr)",
- },
- },
- },
-});
-
-const TemplateNewBreakout = defineStyleConfig({
- baseStyle: defineStyle({
- width: "100vw",
- ml: "calc(-50vw + 50%)",
- px: "s",
- }),
-});
-
-const TemplateNewMainNarrow = defineStyleConfig({
- baseStyle: defineStyle({
- maxWidth: { lg: "720px" },
- m: { lg: "0 auto" },
- }),
-});
-
-export default {
- TemplateNew,
- TemplateNewBreakout,
- TemplateNewMainNarrow,
-};
diff --git a/src/theme/index.ts b/src/theme/index.ts
index 2255dea01..2044aead1 100644
--- a/src/theme/index.ts
+++ b/src/theme/index.ts
@@ -71,7 +71,6 @@ import { SubNav, SubNavChildren } from "./components/subnav";
import Tabs from "./components/tabs";
import TagSetStyles from "./components/tagSet";
import TemplateStyles from "./components/template";
-import TemplateNewStyles from "./components/templatenew";
import Text from "./components/text";
import TextInput from "./components/textInput";
import Toggle from "./components/toggle";
@@ -176,7 +175,6 @@ const theme: any = {
CustomTable,
...TagSetStyles,
...TemplateStyles,
- ...TemplateNewStyles,
Text,
TextInput,
...Toggle,
From 0129f2c0fd4cb9e15e7d67be52ef3cc7f81b7146 Mon Sep 17 00:00:00 2001
From: Olivia Wong
Date: Mon, 9 Dec 2024 12:26:34 -0500
Subject: [PATCH 10/18] More updates per feedback
---
CHANGELOG.md | 2 +-
src/components/Template/Template.mdx | 4 +
src/components/Template/Template.stories.tsx | 83 ++++++++++++-------
src/components/Template/Template.test.tsx | 19 ++++-
.../Template/templateChangelogData.ts | 4 +-
src/utils/utils.ts | 6 ++
6 files changed, 82 insertions(+), 36 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fce14582d..282d21f32 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,7 +10,7 @@ Currently, this repo is in Prerelease. When it is released, this project will ad
### Updates
-- [Updates `Template` component(s)](<(https://newyorkpubliclibrary.atlassian.net/browse/DSD-1884)>) and styles per TAD.
+- [Updates `Template` component(s)](https://newyorkpubliclibrary.atlassian.net/browse/DSD-1884) and styles per TAD.
## 3.5.0 (December 5, 2024)
diff --git a/src/components/Template/Template.mdx b/src/components/Template/Template.mdx
index 852a6ee54..d3ce60fef 100644
--- a/src/components/Template/Template.mdx
+++ b/src/components/Template/Template.mdx
@@ -104,6 +104,10 @@ Resources
In order to render a sidebar, the `Template` component needs to be aware of it.
Pass the location of the sidebar to the `sidebar` prop as either "left" or "right".
+For accessibility purposes, you should also structure the DOM logically. This means
+if you are using `sidebar="left"`, place the `TemplateSidebar` before `TemplateMain`.
+If you are using `sidebar="right"`, place the `TemplateSidebar` after.
+
diff --git a/src/components/Template/Template.stories.tsx b/src/components/Template/Template.stories.tsx
index 54a8dff29..32f653d66 100644
--- a/src/components/Template/Template.stories.tsx
+++ b/src/components/Template/Template.stories.tsx
@@ -1,5 +1,5 @@
import type { Meta, StoryObj } from "@storybook/react";
-import { getPlaceholderImage } from "../../utils/utils";
+import { getPlaceholderImage, sidebarLabel } from "../../utils/utils";
import Accordion, { AccordionDataProps } from "../Accordion/Accordion";
import Banner from "../Banner/Banner";
import Breadcrumbs from "../Breadcrumbs/Breadcrumbs";
@@ -22,7 +22,6 @@ import {
TemplateSidebar,
TemplateBottom,
sidebarPlacementArray,
- SidebarPlacement,
} from "./Template";
const meta: Meta = {
@@ -180,10 +179,6 @@ const otherSubHeaderText =
* Main Story for the Template component. This must contains the `args`
* and `parameters` properties in this object.
*/
-
-export const sidebarLabel = (sidebar: SidebarPlacement) => {
- return `${sidebar[0].toUpperCase()}${sidebar.slice(1)} Sidebar`;
-};
export const WithControls: Story = {
args: {
id: "template",
@@ -197,7 +192,6 @@ export const WithControls: Story = {
},
render: (args) => {
const { sidebar } = args;
-
return (
@@ -232,9 +226,10 @@ export const TemplateFullExample: Story = {
args: {
sidebar: "left",
},
- render: (args) => (
- <>
-
+ render: (args) => {
+ const { sidebar } = args;
+ return (
+
-
- Sidebar information in a `Card` component.
-
-
- Library Image
-
-
- Vestibulum id ligula porta felis euismod semper. Nulla vitae elit
- libero, a pharetra augue.
-
-
-
+ {sidebar === "left" && (
+
+ Sidebar information in a `Card` component.
+
+
+ Library Image
+
+
+ Vestibulum id ligula porta felis euismod semper. Nulla vitae
+ elit libero, a pharetra augue.
+
+
+
+ )}
This is the main content!
@@ -338,6 +335,28 @@ export const TemplateFullExample: Story = {
useRowHeaders
/>
+ {sidebar === "right" && (
+
+ Sidebar information in a `Card` component.
+
+
+ Library Image
+
+
+ Vestibulum id ligula porta felis euismod semper. Nulla vitae
+ elit libero, a pharetra augue.
+
+
+
+ )}
- >
- ),
+ );
+ },
};
export const TemplateFullExampleNarrow = {
diff --git a/src/components/Template/Template.test.tsx b/src/components/Template/Template.test.tsx
index de4d34e5d..db94116ca 100644
--- a/src/components/Template/Template.test.tsx
+++ b/src/components/Template/Template.test.tsx
@@ -14,7 +14,7 @@ import {
TemplateMainNarrow,
} from "./Template";
import Placeholder from "../Placeholder/Placeholder";
-import { sidebarLabel } from "./Template.stories";
+import { sidebarLabel } from "../../utils/utils";
const breakout = Breakout ;
const contentTop = Content Top ;
@@ -48,10 +48,25 @@ const templateComponents = (
);
describe("Template components accessibility", () => {
+ it("passes axe accessibility test", async () => {
+ const { container } = render(templateComponents());
+ expect(await axe(container)).toHaveNoViolations();
+ });
+
it("passes axe accessibility test", async () => {
const { container } = render(templateComponents("left"));
expect(await axe(container)).toHaveNoViolations();
});
+
+ it("passes axe accessibility test", async () => {
+ const { container } = render(templateComponents("right"));
+ expect(await axe(container)).toHaveNoViolations();
+ });
+
+ it("passes axe accessibility test", async () => {
+ const { container } = render(templateComponents("none", true));
+ expect(await axe(container)).toHaveNoViolations();
+ });
});
describe("Template components", () => {
@@ -66,7 +81,7 @@ describe("Template components", () => {
expect(screen.getByText("Content Bottom")).toBeInTheDocument();
});
- it("renders each section with left sidebar", () => {
+ it("renders each section with right sidebar", () => {
render(templateComponents("right"));
expect(screen.getByText("Breakout")).toBeInTheDocument();
diff --git a/src/components/Template/templateChangelogData.ts b/src/components/Template/templateChangelogData.ts
index 57bd50cdb..857890d6d 100644
--- a/src/components/Template/templateChangelogData.ts
+++ b/src/components/Template/templateChangelogData.ts
@@ -14,7 +14,9 @@ export const changelogData: ChangelogData[] = [
version: "Prerelease",
type: "Update",
affects: ["Functionality", "Styles"],
- notes: ["Major update to component and styles based on the Template TAD."],
+ notes: [
+ "Major update to component and styles based on the Template TAD. Updates include simplified code and exported components, responsive sidebar and spacing, and accomodations for content needing a narrower container.",
+ ],
},
{
date: "2024-12-05",
diff --git a/src/utils/utils.ts b/src/utils/utils.ts
index 7ba7fe010..3b9a85296 100644
--- a/src/utils/utils.ts
+++ b/src/utils/utils.ts
@@ -1,4 +1,5 @@
import { HelperErrorTextType } from "../components/HelperErrorText/HelperErrorText";
+import { SidebarPlacement } from "../components/Template/Template";
import { AriaAttributes } from "./interfaces";
// Utility functions to use throughout the codebase
@@ -178,3 +179,8 @@ export const getPlaceholderImage = (
const finalImage = `${selectedImage}&t=${t}`;
return finalImage;
};
+
+/** Creates the correct sidebar label in Template stories or tests */
+export const sidebarLabel = (sidebar: SidebarPlacement) => {
+ return `${sidebar[0].toUpperCase()}${sidebar.slice(1)} Sidebar`;
+};
From 22f56418bd6b784f0dc3e22ffbd3c01ee4905fd2 Mon Sep 17 00:00:00 2001
From: Olivia Wong
Date: Tue, 10 Dec 2024 12:17:39 -0500
Subject: [PATCH 11/18] Updates per PR feedback
---
src/components/Template/Template.mdx | 8 ++++----
src/components/Template/Template.test.tsx | 15 ++++++++++-----
2 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/src/components/Template/Template.mdx b/src/components/Template/Template.mdx
index d3ce60fef..0ff3d272e 100644
--- a/src/components/Template/Template.mdx
+++ b/src/components/Template/Template.mdx
@@ -2,7 +2,7 @@ import { ArgTypes, Canvas, Description, Meta, Source } from "@storybook/blocks";
import ComponentChangelogTable from "../../utils/ComponentChangelogTable";
import { changelogData } from "./templateChangelogData";
-import * as TemplateNewStories from "./Template.stories";
+import * as TemplateStories from "./Template.stories";
import {
Template,
TemplateBreakout,
@@ -14,7 +14,7 @@ import {
} from "./Template";
import Link from "../Link/Link";
-
+
# Template
@@ -62,9 +62,9 @@ import {
## Template Props
-
+
-
+
## Template Components
diff --git a/src/components/Template/Template.test.tsx b/src/components/Template/Template.test.tsx
index db94116ca..39658fc3d 100644
--- a/src/components/Template/Template.test.tsx
+++ b/src/components/Template/Template.test.tsx
@@ -33,7 +33,7 @@ const templateComponents = (
{breakout}
{contentTop}
- {sidebar !== "none" && !useMainNarrow && (
+ {sidebar === "left" && !useMainNarrow && (
{sidebarLabel(sidebar)}
@@ -43,27 +43,32 @@ const templateComponents = (
) : (
{contentMain}
)}
+ {sidebar === "right" && !useMainNarrow && (
+
+ {sidebarLabel(sidebar)}
+
+ )}
{contentBottom}
);
describe("Template components accessibility", () => {
- it("passes axe accessibility test", async () => {
+ it("passes axe accessibility test with no sidebar", async () => {
const { container } = render(templateComponents());
expect(await axe(container)).toHaveNoViolations();
});
- it("passes axe accessibility test", async () => {
+ it("passes axe accessibility test with a sidebar on the left", async () => {
const { container } = render(templateComponents("left"));
expect(await axe(container)).toHaveNoViolations();
});
- it("passes axe accessibility test", async () => {
+ it("passes axe accessibility test with a sidebar on the right", async () => {
const { container } = render(templateComponents("right"));
expect(await axe(container)).toHaveNoViolations();
});
- it("passes axe accessibility test", async () => {
+ it("passes axe accessibility test with the narrow container", async () => {
const { container } = render(templateComponents("none", true));
expect(await axe(container)).toHaveNoViolations();
});
From 83080576338c5ff1a8893ec716ac2e83a833ac47 Mon Sep 17 00:00:00 2001
From: Olivia Wong
Date: Tue, 10 Dec 2024 12:47:05 -0500
Subject: [PATCH 12/18] Fixes test, tweaks per PR feedback
---
src/components/Template/Template.mdx | 6 ++++--
.../__snapshots__/Template.test.tsx.snap | 18 +++++++++---------
2 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/src/components/Template/Template.mdx b/src/components/Template/Template.mdx
index 0ff3d272e..4c6346b25 100644
--- a/src/components/Template/Template.mdx
+++ b/src/components/Template/Template.mdx
@@ -34,8 +34,6 @@ import Link from "../Link/Link";
## Template Overview
-### Using the `Template` with the `Header` and `Footer`
-
-
+
From 014f3c18f552091a62edf2f44e099a42e1e8ccd0 Mon Sep 17 00:00:00 2001
From: Olivia Wong
Date: Tue, 10 Dec 2024 12:55:32 -0500
Subject: [PATCH 13/18] Updates docs
---
src/components/Template/Template.mdx | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/components/Template/Template.mdx b/src/components/Template/Template.mdx
index 4c6346b25..b33581bda 100644
--- a/src/components/Template/Template.mdx
+++ b/src/components/Template/Template.mdx
@@ -34,6 +34,8 @@ import Link from "../Link/Link";
## Template Overview
+Documentation for this component is a work in progress.
+
Date: Wed, 11 Dec 2024 12:30:22 -0500
Subject: [PATCH 14/18] Updates per PR feedback
---
src/components/Template/Template.mdx | 5 +++--
src/theme/components/global.ts | 6 ++++++
src/theme/components/template.ts | 15 +++++++--------
3 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/src/components/Template/Template.mdx b/src/components/Template/Template.mdx
index b33581bda..9b7423c45 100644
--- a/src/components/Template/Template.mdx
+++ b/src/components/Template/Template.mdx
@@ -32,7 +32,7 @@ import Link from "../Link/Link";
- { Template Sidebar Configuration}
- { Changelog}
-## Template Overview
+## Overview
Documentation for this component is a work in progress.
@@ -88,7 +88,8 @@ Wide lines of text are difficult to read and are proven to make it harder for
people to focus, while short lines of text force the eye to travel back too often,
breaking a reader's rhythm. The `TemplateMain` component has a max width of 1280px,
which is too wide for text. If your content includes long chunks of text, you
-should use the `TemplateMainNarrow` component instead.
+should use the `TemplateMainNarrow` component instead. Note that `TemplateMainNarrow`
+is not meant to be used in conjunction with a sidebar.
This means you may use `TemplateMain` or `TemplateMainNarrow` depending on your needs,
but the two should not be used in conjunction.
diff --git a/src/theme/components/global.ts b/src/theme/components/global.ts
index 178b8db67..8e095041b 100644
--- a/src/theme/components/global.ts
+++ b/src/theme/components/global.ts
@@ -129,6 +129,10 @@ const labelLegendText = {
const labelLegendTextSpecialSpacing = {
marginBottom: "xxxs",
};
+
+const responsiveGap = { base: "1rem", md: "1.5rem", xl: "2rem" };
+const responsivePadding = { base: "1rem", md: "1.5rem", xl: "1rem" };
+
// Used for the disabled state of Select and TextInput
const selectTextInputDisabledStyles = {
bg: "ui.disabled.secondary",
@@ -167,6 +171,8 @@ export {
defaultElementSizes,
labelLegendText,
labelLegendTextSpecialSpacing,
+ responsiveGap,
+ responsivePadding,
selectTextInputDisabledStyles,
selectTextInputFocusStyles,
textMargin,
diff --git a/src/theme/components/template.ts b/src/theme/components/template.ts
index ec90435d8..ffb9c25e6 100644
--- a/src/theme/components/template.ts
+++ b/src/theme/components/template.ts
@@ -1,8 +1,6 @@
import { defineStyleConfig } from "@chakra-ui/react";
import { defineStyle } from "@chakra-ui/system";
-
-export const responsiveGap = { base: "1rem", md: "1.5rem", xl: "1rem" };
-export const responsivePadding = { base: "1rem", md: "1.5rem", xl: "2rem" };
+import { responsiveGap } from "./global";
const Template = defineStyleConfig({
baseStyle: defineStyle({
@@ -10,10 +8,12 @@ const Template = defineStyleConfig({
color: "ui.typography.body",
display: "grid",
maxWidth: "1280px",
+ // 320px screen width - 32px padding = 288px
+ minWidth: "288px",
m: "0 auto",
p: "s",
gridTemplateAreas: `"breakout" "top" "main" "bottom"`,
- gridTemplateColumns: "repeat(1, minmax(100px, 1fr))",
+ gridTemplateColumns: "100%",
gridTemplateRows: "auto",
columnGap: responsiveGap,
"& > *:not(:last-child)": { mb: responsiveGap },
@@ -25,7 +25,7 @@ const Template = defineStyleConfig({
md: `"breakout breakout" "top top" "sidebar main" "bottom bottom"`,
},
gridTemplateColumns: {
- base: "repeat(1, minmax(100px, 1fr))",
+ base: "100%",
md: "repeat(2, minmax(100px, 1fr))",
lg: "minmax(100px, 1fr) minmax(200px, 2fr)",
xl: "minmax(100px, 1fr) minmax(300px, 3fr)",
@@ -37,7 +37,7 @@ const Template = defineStyleConfig({
md: `"breakout breakout" "top top" "main sidebar" "bottom bottom"`,
},
gridTemplateColumns: {
- base: "repeat(1, minmax(100px, 1fr))",
+ base: "100%",
md: "repeat(2, minmax(100px, 1fr))",
lg: "minmax(200px, 2fr) minmax(100px, 1fr)",
xl: "minmax(300px, 3fr) minmax(100px, 1fr)",
@@ -56,8 +56,7 @@ const TemplateBreakout = defineStyleConfig({
const TemplateMainNarrow = defineStyleConfig({
baseStyle: defineStyle({
- maxWidth: { lg: "720px" },
- m: { lg: "0 auto" },
+ maxWidth: "720px",
}),
});
From d579b027e300153d5b5fea4ff6e3498526c81e58 Mon Sep 17 00:00:00 2001
From: Olivia Wong
Date: Wed, 11 Dec 2024 12:51:40 -0500
Subject: [PATCH 15/18] Styling tweaks
---
src/theme/components/template.ts | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/theme/components/template.ts b/src/theme/components/template.ts
index ffb9c25e6..340461add 100644
--- a/src/theme/components/template.ts
+++ b/src/theme/components/template.ts
@@ -1,6 +1,6 @@
import { defineStyleConfig } from "@chakra-ui/react";
import { defineStyle } from "@chakra-ui/system";
-import { responsiveGap } from "./global";
+import { responsiveGap, responsivePadding } from "./global";
const Template = defineStyleConfig({
baseStyle: defineStyle({
@@ -11,7 +11,7 @@ const Template = defineStyleConfig({
// 320px screen width - 32px padding = 288px
minWidth: "288px",
m: "0 auto",
- p: "s",
+ p: responsivePadding,
gridTemplateAreas: `"breakout" "top" "main" "bottom"`,
gridTemplateColumns: "100%",
gridTemplateRows: "auto",
@@ -50,13 +50,14 @@ const TemplateBreakout = defineStyleConfig({
baseStyle: defineStyle({
width: "100vw",
ml: "calc(-50vw + 50%)",
- px: "s",
+ px: responsivePadding,
}),
});
const TemplateMainNarrow = defineStyleConfig({
baseStyle: defineStyle({
maxWidth: "720px",
+ m: "0 auto",
}),
});
From 694da56166bbd9613d45a046e04670d7861bd0a4 Mon Sep 17 00:00:00 2001
From: bigfishdesign13
Date: Thu, 19 Dec 2024 09:42:18 -0500
Subject: [PATCH 16/18] type fix
---
package-lock.json | 1147 ++++++++++++---------
src/components/Template/Template.mdx | 2 +-
src/hooks/__tests__/useNYPLTheme.test.tsx | 2 +-
3 files changed, 649 insertions(+), 502 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 644812866..da255a42f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -122,9 +122,9 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.26.2",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz",
- "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==",
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz",
+ "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==",
"dev": true,
"engines": {
"node": ">=6.9.0"
@@ -161,12 +161,12 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.26.2",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz",
- "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==",
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz",
+ "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==",
"dependencies": {
- "@babel/parser": "^7.26.2",
- "@babel/types": "^7.26.0",
+ "@babel/parser": "^7.26.3",
+ "@babel/types": "^7.26.3",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^3.0.2"
@@ -354,11 +354,11 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.26.2",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz",
- "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz",
+ "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==",
"dependencies": {
- "@babel/types": "^7.26.0"
+ "@babel/types": "^7.26.3"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -657,15 +657,15 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz",
- "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==",
+ "version": "7.26.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz",
+ "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==",
"dependencies": {
- "@babel/code-frame": "^7.25.9",
- "@babel/generator": "^7.25.9",
- "@babel/parser": "^7.25.9",
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.3",
+ "@babel/parser": "^7.26.3",
"@babel/template": "^7.25.9",
- "@babel/types": "^7.25.9",
+ "@babel/types": "^7.26.3",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -674,9 +674,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
- "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz",
+ "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==",
"dependencies": {
"@babel/helper-string-parser": "^7.25.9",
"@babel/helper-validator-identifier": "^7.25.9"
@@ -1886,9 +1886,9 @@
}
},
"node_modules/@emotion/cache": {
- "version": "11.13.5",
- "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.5.tgz",
- "integrity": "sha512-Z3xbtJ+UcK76eWkagZ1onvn/wAVb1GOMuR15s30Fm2wrMgC7jzpnO2JZXr4eujTTqoQFUrZIw/rT0c6Zzjca1g==",
+ "version": "11.14.0",
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz",
+ "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==",
"dependencies": {
"@emotion/memoize": "^0.9.0",
"@emotion/sheet": "^1.4.0",
@@ -1988,9 +1988,9 @@
"integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg=="
},
"node_modules/@emotion/use-insertion-effect-with-fallbacks": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz",
- "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz",
+ "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==",
"peerDependencies": {
"react": ">=16.8.0"
}
@@ -2899,9 +2899,9 @@
}
},
"node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
- "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
+ "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
"dependencies": {
"@jridgewell/set-array": "^1.2.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
@@ -2980,18 +2980,18 @@
}
},
"node_modules/@microsoft/api-extractor": {
- "version": "7.48.0",
- "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.48.0.tgz",
- "integrity": "sha512-FMFgPjoilMUWeZXqYRlJ3gCVRhB7WU/HN88n8OLqEsmsG4zBdX/KQdtJfhq95LQTQ++zfu0Em1LLb73NqRCLYQ==",
+ "version": "7.48.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.48.1.tgz",
+ "integrity": "sha512-HN9Osa1WxqLM66RaqB5nPAadx+nTIQmY/XtkFdaJvusjG8Tus++QqZtD7KPZDSkhEMGHsYeSyeU8qUzCDUXPjg==",
"dev": true,
"dependencies": {
- "@microsoft/api-extractor-model": "7.30.0",
+ "@microsoft/api-extractor-model": "7.30.1",
"@microsoft/tsdoc": "~0.15.1",
"@microsoft/tsdoc-config": "~0.17.1",
- "@rushstack/node-core-library": "5.10.0",
+ "@rushstack/node-core-library": "5.10.1",
"@rushstack/rig-package": "0.5.3",
- "@rushstack/terminal": "0.14.3",
- "@rushstack/ts-command-line": "4.23.1",
+ "@rushstack/terminal": "0.14.4",
+ "@rushstack/ts-command-line": "4.23.2",
"lodash": "~4.17.15",
"minimatch": "~3.0.3",
"resolve": "~1.22.1",
@@ -3004,20 +3004,20 @@
}
},
"node_modules/@microsoft/api-extractor-model": {
- "version": "7.30.0",
- "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.30.0.tgz",
- "integrity": "sha512-26/LJZBrsWDKAkOWRiQbdVgcfd1F3nyJnAiJzsAgpouPk7LtOIj7PK9aJtBaw/pUXrkotEg27RrT+Jm/q0bbug==",
+ "version": "7.30.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.30.1.tgz",
+ "integrity": "sha512-CTS2PlASJHxVY8hqHORVb1HdECWOEMcMnM6/kDkPr0RZapAFSIHhg9D4jxuE8g+OWYHtPc10LCpmde5pylTRlA==",
"dev": true,
"dependencies": {
"@microsoft/tsdoc": "~0.15.1",
"@microsoft/tsdoc-config": "~0.17.1",
- "@rushstack/node-core-library": "5.10.0"
+ "@rushstack/node-core-library": "5.10.1"
}
},
"node_modules/@microsoft/api-extractor-model/node_modules/@rushstack/node-core-library": {
- "version": "5.10.0",
- "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.10.0.tgz",
- "integrity": "sha512-2pPLCuS/3x7DCd7liZkqOewGM0OzLyCacdvOe8j6Yrx9LkETGnxul1t7603bIaB8nUAooORcct9fFDOQMbWAgw==",
+ "version": "5.10.1",
+ "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.10.1.tgz",
+ "integrity": "sha512-BSb/KcyBHmUQwINrgtzo6jiH0HlGFmrUy33vO6unmceuVKTEyL2q+P0fQq2oB5hvXVWOEUhxB2QvlkZluvUEmg==",
"dev": true,
"dependencies": {
"ajv": "~8.13.0",
@@ -3140,9 +3140,9 @@
"dev": true
},
"node_modules/@microsoft/api-extractor/node_modules/@rushstack/node-core-library": {
- "version": "5.10.0",
- "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.10.0.tgz",
- "integrity": "sha512-2pPLCuS/3x7DCd7liZkqOewGM0OzLyCacdvOe8j6Yrx9LkETGnxul1t7603bIaB8nUAooORcct9fFDOQMbWAgw==",
+ "version": "5.10.1",
+ "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.10.1.tgz",
+ "integrity": "sha512-BSb/KcyBHmUQwINrgtzo6jiH0HlGFmrUy33vO6unmceuVKTEyL2q+P0fQq2oB5hvXVWOEUhxB2QvlkZluvUEmg==",
"dev": true,
"dependencies": {
"ajv": "~8.13.0",
@@ -3475,9 +3475,9 @@
}
},
"node_modules/@rollup/pluginutils": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.3.tgz",
- "integrity": "sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==",
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz",
+ "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==",
"dev": true,
"dependencies": {
"@types/estree": "^1.0.0",
@@ -3497,9 +3497,9 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.4.tgz",
- "integrity": "sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.1.tgz",
+ "integrity": "sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==",
"cpu": [
"arm"
],
@@ -3510,9 +3510,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.27.4.tgz",
- "integrity": "sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.1.tgz",
+ "integrity": "sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==",
"cpu": [
"arm64"
],
@@ -3523,9 +3523,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.27.4.tgz",
- "integrity": "sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.1.tgz",
+ "integrity": "sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==",
"cpu": [
"arm64"
],
@@ -3536,9 +3536,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.27.4.tgz",
- "integrity": "sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.1.tgz",
+ "integrity": "sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==",
"cpu": [
"x64"
],
@@ -3549,9 +3549,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.27.4.tgz",
- "integrity": "sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.1.tgz",
+ "integrity": "sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==",
"cpu": [
"arm64"
],
@@ -3562,9 +3562,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.27.4.tgz",
- "integrity": "sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.1.tgz",
+ "integrity": "sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==",
"cpu": [
"x64"
],
@@ -3575,9 +3575,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.27.4.tgz",
- "integrity": "sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.1.tgz",
+ "integrity": "sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==",
"cpu": [
"arm"
],
@@ -3588,9 +3588,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.27.4.tgz",
- "integrity": "sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.1.tgz",
+ "integrity": "sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==",
"cpu": [
"arm"
],
@@ -3601,9 +3601,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.27.4.tgz",
- "integrity": "sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.1.tgz",
+ "integrity": "sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==",
"cpu": [
"arm64"
],
@@ -3614,9 +3614,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.27.4.tgz",
- "integrity": "sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.1.tgz",
+ "integrity": "sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==",
"cpu": [
"arm64"
],
@@ -3626,10 +3626,23 @@
"linux"
]
},
+ "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.28.1.tgz",
+ "integrity": "sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.27.4.tgz",
- "integrity": "sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.1.tgz",
+ "integrity": "sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==",
"cpu": [
"ppc64"
],
@@ -3640,9 +3653,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.27.4.tgz",
- "integrity": "sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.1.tgz",
+ "integrity": "sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==",
"cpu": [
"riscv64"
],
@@ -3653,9 +3666,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.27.4.tgz",
- "integrity": "sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.1.tgz",
+ "integrity": "sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==",
"cpu": [
"s390x"
],
@@ -3666,9 +3679,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.27.4.tgz",
- "integrity": "sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.1.tgz",
+ "integrity": "sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==",
"cpu": [
"x64"
],
@@ -3679,9 +3692,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.27.4.tgz",
- "integrity": "sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.1.tgz",
+ "integrity": "sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==",
"cpu": [
"x64"
],
@@ -3692,9 +3705,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.27.4.tgz",
- "integrity": "sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.1.tgz",
+ "integrity": "sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==",
"cpu": [
"arm64"
],
@@ -3705,9 +3718,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.27.4.tgz",
- "integrity": "sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.1.tgz",
+ "integrity": "sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==",
"cpu": [
"ia32"
],
@@ -3718,9 +3731,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.27.4.tgz",
- "integrity": "sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.1.tgz",
+ "integrity": "sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==",
"cpu": [
"x64"
],
@@ -3829,12 +3842,12 @@
}
},
"node_modules/@rushstack/terminal": {
- "version": "0.14.3",
- "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.14.3.tgz",
- "integrity": "sha512-csXbZsAdab/v8DbU1sz7WC2aNaKArcdS/FPmXMOXEj/JBBZMvDK0+1b4Qao0kkG0ciB1Qe86/Mb68GjH6/TnMw==",
+ "version": "0.14.4",
+ "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.14.4.tgz",
+ "integrity": "sha512-NxACqERW0PHq8Rpq1V6v5iTHEwkRGxenjEW+VWqRYQ8T9puUzgmGHmEZUaUEDHAe9Qyvp0/Ew04sAiQw9XjhJg==",
"dev": true,
"dependencies": {
- "@rushstack/node-core-library": "5.10.0",
+ "@rushstack/node-core-library": "5.10.1",
"supports-color": "~8.1.1"
},
"peerDependencies": {
@@ -3847,9 +3860,9 @@
}
},
"node_modules/@rushstack/terminal/node_modules/@rushstack/node-core-library": {
- "version": "5.10.0",
- "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.10.0.tgz",
- "integrity": "sha512-2pPLCuS/3x7DCd7liZkqOewGM0OzLyCacdvOe8j6Yrx9LkETGnxul1t7603bIaB8nUAooORcct9fFDOQMbWAgw==",
+ "version": "5.10.1",
+ "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.10.1.tgz",
+ "integrity": "sha512-BSb/KcyBHmUQwINrgtzo6jiH0HlGFmrUy33vO6unmceuVKTEyL2q+P0fQq2oB5hvXVWOEUhxB2QvlkZluvUEmg==",
"dev": true,
"dependencies": {
"ajv": "~8.13.0",
@@ -3987,12 +4000,12 @@
"dev": true
},
"node_modules/@rushstack/ts-command-line": {
- "version": "4.23.1",
- "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.23.1.tgz",
- "integrity": "sha512-40jTmYoiu/xlIpkkRsVfENtBq4CW3R4azbL0Vmda+fMwHWqss6wwf/Cy/UJmMqIzpfYc2OTnjYP1ZLD3CmyeCA==",
+ "version": "4.23.2",
+ "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.23.2.tgz",
+ "integrity": "sha512-JJ7XZX5K3ThBBva38aomgsPv1L7FV6XmSOcR6HtM7HDFZJkepqT65imw26h9ggGqMjsY0R9jcl30tzKcVj9aOQ==",
"dev": true,
"dependencies": {
- "@rushstack/terminal": "0.14.3",
+ "@rushstack/terminal": "0.14.4",
"@types/argparse": "1.0.38",
"argparse": "~1.0.9",
"string-argv": "~0.3.1"
@@ -4398,18 +4411,18 @@
}
},
"node_modules/@storybook/builder-vite/node_modules/magic-string": {
- "version": "0.30.14",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz",
- "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==",
+ "version": "0.30.17",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
+ "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
"dev": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.0"
}
},
"node_modules/@storybook/components": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.5.tgz",
- "integrity": "sha512-2PdnKfqNNv3sO7qILgWXiNvmLOi503oN9OMemNCQjTIvdvySc5JpS9/eClwcl/JfmE4qHdSHZr8dLLkBM9S7+Q==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.7.tgz",
+ "integrity": "sha512-uyJIcoyeMWKAvjrG9tJBUCKxr2WZk+PomgrgrUwejkIfXMO76i6jw9BwLa0NZjYdlthDv30r9FfbYZyeNPmF0g==",
"dev": true,
"funding": {
"type": "opencollective",
@@ -4457,9 +4470,9 @@
}
},
"node_modules/@storybook/csf": {
- "version": "0.1.11",
- "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.11.tgz",
- "integrity": "sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==",
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.12.tgz",
+ "integrity": "sha512-9/exVhabisyIVL0VxTCxo01Tdm8wefIXKXfltAPTSr8cbLn5JAxGQ6QV3mjdecLGEOucfoVhAKtJfVHxEK1iqw==",
"dev": true,
"dependencies": {
"type-fest": "^2.19.0"
@@ -4488,16 +4501,16 @@
"dev": true
},
"node_modules/@storybook/icons": {
- "version": "1.2.12",
- "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.2.12.tgz",
- "integrity": "sha512-UxgyK5W3/UV4VrI3dl6ajGfHM4aOqMAkFLWe2KibeQudLf6NJpDrDMSHwZj+3iKC4jFU7dkKbbtH2h/al4sW3Q==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.3.0.tgz",
+ "integrity": "sha512-Nz/UzeYQdUZUhacrPyfkiiysSjydyjgg/p0P9HxB4p/WaJUUjMAcaoaLgy3EXx61zZJ3iD36WPuDkZs5QYrA0A==",
"dev": true,
"engines": {
"node": ">=14.0.0"
},
"peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
}
},
"node_modules/@storybook/instrumenter": {
@@ -4519,9 +4532,9 @@
}
},
"node_modules/@storybook/manager-api": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.4.5.tgz",
- "integrity": "sha512-t39JaMy3UX4StbUH/tIDcaflBDxTcyIq853wQtBMhVL3e1+Dw3MIiiG/5bw79HU4R7kSmPVLXIIbV3FmXkq7KQ==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.4.7.tgz",
+ "integrity": "sha512-ELqemTviCxAsZ5tqUz39sDmQkvhVAvAgiplYy9Uf15kO0SP2+HKsCMzlrm2ue2FfkUNyqbDayCPPCB0Cdn/mpQ==",
"dev": true,
"funding": {
"type": "opencollective",
@@ -4532,9 +4545,9 @@
}
},
"node_modules/@storybook/preview-api": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.5.tgz",
- "integrity": "sha512-MKIZ2jQO/3cUdsT57eq8jRgB6inALo9BxrQ88f7mqzltOkMvADvTAY6y8JZqTUoDzWTH/ny/8SGGdtpqlxRuiQ==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.7.tgz",
+ "integrity": "sha512-0QVQwHw+OyZGHAJEXo6Knx+6/4er7n2rTDE5RYJ9F2E2Lg42E19pfdLlq2Jhoods2Xrclo3wj6GWR//Ahi39Eg==",
"dev": true,
"funding": {
"type": "opencollective",
@@ -4640,9 +4653,9 @@
}
},
"node_modules/@storybook/react-vite/node_modules/magic-string": {
- "version": "0.30.14",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz",
- "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==",
+ "version": "0.30.17",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
+ "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
"dev": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.0"
@@ -4655,9 +4668,9 @@
"dev": true
},
"node_modules/@storybook/react/node_modules/@types/node": {
- "version": "22.10.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.0.tgz",
- "integrity": "sha512-XC70cRZVElFHfIUB40FgZOBbgJYFKKMa5nb9lxcwYstFG/Mi+/Y0bGS+rs6Dmhmkpq4pnNiLiuZAbc02YCOnmA==",
+ "version": "22.10.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz",
+ "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==",
"dev": true,
"dependencies": {
"undici-types": "~6.20.0"
@@ -4812,9 +4825,9 @@
"dev": true
},
"node_modules/@storybook/theming": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.5.tgz",
- "integrity": "sha512-45e/jeG4iuqdZcHg3PbB6dwXQTwlnnEB7r/QcVExyC7ibrkTnjUfvxzyUw4mmU3CXETFGD5EcUobFkgK+/aPxQ==",
+ "version": "8.4.7",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.7.tgz",
+ "integrity": "sha512-99rgLEjf7iwfSEmdqlHkSG3AyLcK0sfExcr0jnc6rLiAkBhzuIsvcHjjUwkR210SOCgXqBPW0ZA6uhnuyppHLw==",
"dev": true,
"funding": {
"type": "opencollective",
@@ -5310,6 +5323,24 @@
}
}
},
+ "node_modules/@testing-library/react-hooks/node_modules/@types/react": {
+ "version": "19.0.1",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.1.tgz",
+ "integrity": "sha512-YW6614BDhqbpR5KtUYzTA+zlA7nayzJRA9ljz9CQoxthR0sDisYZLuvSMsil36t4EH/uAt8T52Xb4sVw17G+SQ==",
+ "dev": true,
+ "dependencies": {
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@testing-library/react-hooks/node_modules/@types/react-dom": {
+ "version": "19.0.2",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.2.tgz",
+ "integrity": "sha512-c1s+7TKFaDRRxr1TxccIX2u7sfCnc3RxkVyBIUA2lCpyqCF+QoAwQ/CBg7bsMdVwP120HEH143VQezKtef5nCg==",
+ "dev": true,
+ "peerDependencies": {
+ "@types/react": "^19.0.0"
+ }
+ },
"node_modules/@testing-library/react/node_modules/@testing-library/dom": {
"version": "8.20.1",
"resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz",
@@ -5731,9 +5762,9 @@
"integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="
},
"node_modules/@types/prop-types": {
- "version": "15.7.13",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
- "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==",
+ "version": "15.7.14",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz",
+ "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==",
"devOptional": true
},
"node_modules/@types/qs": {
@@ -5759,19 +5790,10 @@
"csstype": "^3.0.2"
}
},
- "node_modules/@types/react-dom": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz",
- "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==",
- "dev": true,
- "dependencies": {
- "@types/react": "*"
- }
- },
"node_modules/@types/react-test-renderer": {
- "version": "18.3.0",
- "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.3.0.tgz",
- "integrity": "sha512-HW4MuEYxfDbOHQsVlY/XtOvNHftCVEPhJF2pQXXwcUiUF+Oyb0usgp48HSgpK5rt8m9KZb22yqOeZm+rrVG8gw==",
+ "version": "19.0.0",
+ "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-19.0.0.tgz",
+ "integrity": "sha512-qDVnNybqFm2eZKJ4jD34EvRd6VHD67KjgnWaEMM0Id9L22EpWe3nOSVKHWL1XWRCxUWe3lhXwlEeCKD1BlJCQA==",
"dev": true,
"dependencies": {
"@types/react": "*"
@@ -6095,9 +6117,9 @@
}
},
"node_modules/@ungap/structured-clone": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz",
+ "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==",
"dev": true
},
"node_modules/@vitejs/plugin-react": {
@@ -6207,9 +6229,9 @@
}
},
"node_modules/@vitest/pretty-format": {
- "version": "2.1.6",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.6.tgz",
- "integrity": "sha512-exZyLcEnHgDMKc54TtHca4McV4sKT+NKAe9ix/yhd/qkYb/TP8HTyXRFDijV19qKqTZM0hPL4753zU/U8L/gAA==",
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.8.tgz",
+ "integrity": "sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==",
"dev": true,
"dependencies": {
"tinyrainbow": "^1.2.0"
@@ -6231,12 +6253,12 @@
}
},
"node_modules/@vitest/utils": {
- "version": "2.1.6",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.6.tgz",
- "integrity": "sha512-ixNkFy3k4vokOUTU2blIUvOgKq/N2PW8vKIjZZYsGJCMX69MRa9J2sKqX5hY/k5O5Gty3YJChepkqZ3KM9LyIQ==",
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.8.tgz",
+ "integrity": "sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==",
"dev": true,
"dependencies": {
- "@vitest/pretty-format": "2.1.6",
+ "@vitest/pretty-format": "2.1.8",
"loupe": "^3.1.2",
"tinyrainbow": "^1.2.0"
},
@@ -6592,15 +6614,15 @@
}
},
"node_modules/array.prototype.flat": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
- "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz",
+ "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0"
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-shim-unscopables": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -6610,15 +6632,15 @@
}
},
"node_modules/array.prototype.flatmap": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
- "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz",
+ "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0"
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-shim-unscopables": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -6644,19 +6666,18 @@
}
},
"node_modules/arraybuffer.prototype.slice": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
- "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz",
+ "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==",
"dev": true,
"dependencies": {
"array-buffer-byte-length": "^1.0.1",
- "call-bind": "^1.0.5",
+ "call-bind": "^1.0.8",
"define-properties": "^1.2.1",
- "es-abstract": "^1.22.3",
- "es-errors": "^1.2.1",
- "get-intrinsic": "^1.2.3",
- "is-array-buffer": "^3.0.4",
- "is-shared-array-buffer": "^1.0.2"
+ "es-abstract": "^1.23.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "is-array-buffer": "^3.0.4"
},
"engines": {
"node": ">= 0.4"
@@ -6982,9 +7003,9 @@
"dev": true
},
"node_modules/browserslist": {
- "version": "4.24.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz",
- "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==",
+ "version": "4.24.3",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz",
+ "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==",
"dev": true,
"funding": [
{
@@ -7001,9 +7022,9 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001669",
- "electron-to-chromium": "^1.5.41",
- "node-releases": "^2.0.18",
+ "caniuse-lite": "^1.0.30001688",
+ "electron-to-chromium": "^1.5.73",
+ "node-releases": "^2.0.19",
"update-browserslist-db": "^1.1.1"
},
"bin": {
@@ -7050,16 +7071,44 @@
}
},
"node_modules/call-bind": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
- "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
+ "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
"dev": true,
"dependencies": {
+ "call-bind-apply-helpers": "^1.0.0",
"es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
"get-intrinsic": "^1.2.4",
- "set-function-length": "^1.2.1"
+ "set-function-length": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz",
+ "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz",
+ "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "get-intrinsic": "^1.2.6"
},
"engines": {
"node": ">= 0.4"
@@ -7086,9 +7135,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001684",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz",
- "integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==",
+ "version": "1.0.30001689",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001689.tgz",
+ "integrity": "sha512-CmeR2VBycfa+5/jOfnp/NpWPGd06nf1XYiefUvhXFfZE4GkRc9jv+eGPS4nT558WS/8lYCzV8SlANCIPvbWP1g==",
"dev": true,
"funding": [
{
@@ -7659,9 +7708,9 @@
}
},
"node_modules/debug": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
- "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
"dependencies": {
"ms": "^2.1.3"
},
@@ -7941,6 +7990,20 @@
"tslib": "^2.0.3"
}
},
+ "node_modules/dunder-proto": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz",
+ "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==",
+ "dev": true,
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -7948,9 +8011,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
- "version": "1.5.65",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.65.tgz",
- "integrity": "sha512-PWVzBjghx7/wop6n22vS2MLU8tKGd4Q91aCEGhG/TYmW6PP5OcSXcdnxTe1NNt0T66N8D6jxh4kC8UsdzOGaIw==",
+ "version": "1.5.74",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.74.tgz",
+ "integrity": "sha512-ck3//9RC+6oss/1Bh9tiAVFy5vfSKbRHAFh7Z3/eTRkEqJeWgymloShB17Vg3Z4nmDNp35vAd1BZ6CMW4Wt6Iw==",
"dev": true
},
"node_modules/emittery": {
@@ -8023,57 +8086,59 @@
}
},
"node_modules/es-abstract": {
- "version": "1.23.5",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz",
- "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==",
+ "version": "1.23.6",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.6.tgz",
+ "integrity": "sha512-Ifco6n3yj2tMZDWNLyloZrytt9lqqlwvS83P3HtaETR0NUOYnIULGGHpktqYGObGy+8wc1okO25p8TjemhImvA==",
"dev": true,
"dependencies": {
"array-buffer-byte-length": "^1.0.1",
- "arraybuffer.prototype.slice": "^1.0.3",
+ "arraybuffer.prototype.slice": "^1.0.4",
"available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
"data-view-buffer": "^1.0.1",
"data-view-byte-length": "^1.0.1",
"data-view-byte-offset": "^1.0.0",
- "es-define-property": "^1.0.0",
+ "es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.0.0",
"es-set-tostringtag": "^2.0.3",
- "es-to-primitive": "^1.2.1",
- "function.prototype.name": "^1.1.6",
- "get-intrinsic": "^1.2.4",
+ "es-to-primitive": "^1.3.0",
+ "function.prototype.name": "^1.1.7",
+ "get-intrinsic": "^1.2.6",
"get-symbol-description": "^1.0.2",
"globalthis": "^1.0.4",
- "gopd": "^1.0.1",
+ "gopd": "^1.2.0",
"has-property-descriptors": "^1.0.2",
- "has-proto": "^1.0.3",
- "has-symbols": "^1.0.3",
+ "has-proto": "^1.2.0",
+ "has-symbols": "^1.1.0",
"hasown": "^2.0.2",
- "internal-slot": "^1.0.7",
+ "internal-slot": "^1.1.0",
"is-array-buffer": "^3.0.4",
"is-callable": "^1.2.7",
- "is-data-view": "^1.0.1",
+ "is-data-view": "^1.0.2",
"is-negative-zero": "^2.0.3",
- "is-regex": "^1.1.4",
+ "is-regex": "^1.2.1",
"is-shared-array-buffer": "^1.0.3",
- "is-string": "^1.0.7",
+ "is-string": "^1.1.1",
"is-typed-array": "^1.1.13",
- "is-weakref": "^1.0.2",
+ "is-weakref": "^1.1.0",
+ "math-intrinsics": "^1.0.0",
"object-inspect": "^1.13.3",
"object-keys": "^1.1.1",
"object.assign": "^4.1.5",
"regexp.prototype.flags": "^1.5.3",
- "safe-array-concat": "^1.1.2",
- "safe-regex-test": "^1.0.3",
- "string.prototype.trim": "^1.2.9",
- "string.prototype.trimend": "^1.0.8",
+ "safe-array-concat": "^1.1.3",
+ "safe-regex-test": "^1.1.0",
+ "string.prototype.trim": "^1.2.10",
+ "string.prototype.trimend": "^1.0.9",
"string.prototype.trimstart": "^1.0.8",
"typed-array-buffer": "^1.0.2",
"typed-array-byte-length": "^1.0.1",
- "typed-array-byte-offset": "^1.0.2",
- "typed-array-length": "^1.0.6",
+ "typed-array-byte-offset": "^1.0.3",
+ "typed-array-length": "^1.0.7",
"unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.15"
+ "which-typed-array": "^1.1.16"
},
"engines": {
"node": ">= 0.4"
@@ -8083,13 +8148,10 @@
}
},
"node_modules/es-define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
- "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
"dev": true,
- "dependencies": {
- "get-intrinsic": "^1.2.4"
- },
"engines": {
"node": ">= 0.4"
}
@@ -8752,9 +8814,9 @@
}
},
"node_modules/express": {
- "version": "4.21.1",
- "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz",
- "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==",
+ "version": "4.21.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
+ "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
"dev": true,
"dependencies": {
"accepts": "~1.3.8",
@@ -8776,7 +8838,7 @@
"methods": "~1.1.2",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.10",
+ "path-to-regexp": "0.1.12",
"proxy-addr": "~2.0.7",
"qs": "6.13.0",
"range-parser": "~1.2.1",
@@ -8791,6 +8853,10 @@
},
"engines": {
"node": ">= 0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/express/node_modules/debug": {
@@ -9143,15 +9209,16 @@
}
},
"node_modules/function.prototype.name": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
- "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.7.tgz",
+ "integrity": "sha512-2g4x+HqTJKM9zcJqBSpjoRmdcPFtJM60J3xJisTQSXBWka5XqyBN/2tNUgma1mztTXyDuUsEtYe5qcs7xYzYQA==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "functions-have-names": "^1.2.3"
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "functions-have-names": "^1.2.3",
+ "hasown": "^2.0.2",
+ "is-callable": "^1.2.7"
},
"engines": {
"node": ">= 0.4"
@@ -9194,16 +9261,21 @@
}
},
"node_modules/get-intrinsic": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
- "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz",
+ "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==",
"dev": true,
"dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "dunder-proto": "^1.0.0",
+ "es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
"function-bind": "^1.1.2",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -9366,12 +9438,12 @@
}
},
"node_modules/gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
"dev": true,
- "dependencies": {
- "get-intrinsic": "^1.1.3"
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -9428,10 +9500,13 @@
}
},
"node_modules/has-proto": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
- "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz",
+ "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
"dev": true,
+ "dependencies": {
+ "dunder-proto": "^1.0.0"
+ },
"engines": {
"node": ">= 0.4"
},
@@ -9440,9 +9515,9 @@
}
},
"node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
"dev": true,
"engines": {
"node": ">= 0.4"
@@ -9733,27 +9808,19 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/internal-slot": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
- "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
+ "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==",
"dev": true,
"dependencies": {
"es-errors": "^1.3.0",
- "hasown": "^2.0.0",
- "side-channel": "^1.0.4"
+ "hasown": "^2.0.2",
+ "side-channel": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
}
},
- "node_modules/invariant": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
- "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
- "dependencies": {
- "loose-envify": "^1.0.0"
- }
- },
"node_modules/ipaddr.js": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
@@ -9776,13 +9843,13 @@
}
},
"node_modules/is-arguments": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
- "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz",
+ "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.2",
+ "has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -9792,13 +9859,14 @@
}
},
"node_modules/is-array-buffer": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
- "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
+ "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.1"
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "get-intrinsic": "^1.2.6"
},
"engines": {
"node": ">= 0.4"
@@ -9828,12 +9896,15 @@
}
},
"node_modules/is-bigint": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz",
+ "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==",
"dev": true,
"dependencies": {
- "has-bigints": "^1.0.1"
+ "has-bigints": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -9852,13 +9923,13 @@
}
},
"node_modules/is-boolean-object": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz",
+ "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.2",
+ "has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -9880,9 +9951,9 @@
}
},
"node_modules/is-core-module": {
- "version": "2.15.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
- "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
+ "version": "2.16.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.0.tgz",
+ "integrity": "sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g==",
"dependencies": {
"hasown": "^2.0.2"
},
@@ -9894,11 +9965,13 @@
}
},
"node_modules/is-data-view": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
- "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz",
+ "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==",
"dev": true,
"dependencies": {
+ "call-bound": "^1.0.2",
+ "get-intrinsic": "^1.2.6",
"is-typed-array": "^1.1.13"
},
"engines": {
@@ -9909,12 +9982,13 @@
}
},
"node_modules/is-date-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz",
+ "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==",
"dev": true,
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.2",
+ "has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -10041,12 +10115,13 @@
}
},
"node_modules/is-number-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz",
+ "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==",
"dev": true,
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -10101,13 +10176,15 @@
}
},
"node_modules/is-regex": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
+ "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.2",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -10165,12 +10242,13 @@
}
},
"node_modules/is-string": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz",
+ "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==",
"dev": true,
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -10180,12 +10258,14 @@
}
},
"node_modules/is-symbol": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz",
+ "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==",
"dev": true,
"dependencies": {
- "has-symbols": "^1.0.2"
+ "call-bound": "^1.0.2",
+ "has-symbols": "^1.1.0",
+ "safe-regex-test": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
@@ -10234,12 +10314,15 @@
}
},
"node_modules/is-weakref": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
- "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz",
+ "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2"
+ "call-bound": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -11199,9 +11282,9 @@
}
},
"node_modules/jsesc": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
- "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
"bin": {
"jsesc": "bin/jsesc"
},
@@ -11711,9 +11794,9 @@
}
},
"node_modules/markdown-to-jsx": {
- "version": "7.7.0",
- "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.7.0.tgz",
- "integrity": "sha512-130nIMbJY+woOQJ11xTqEtYko60t6EpNkZuqjKMferL3udtob3nRfzXOdsiA26NPemiR7w/hR8M3/B9yiYPGZg==",
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.7.1.tgz",
+ "integrity": "sha512-BjLkHb+fWCAH9gp7ndbgPrY+zeZlGFtCiQNTWk+PD+GKfLg9YsUPNonSsYXGw6nQ7eZqeR+i71X59PpWXlxc/w==",
"dev": true,
"engines": {
"node": ">= 10"
@@ -11722,6 +11805,15 @@
"react": ">= 0.14.0"
}
},
+ "node_modules/math-intrinsics": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.0.0.tgz",
+ "integrity": "sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/mdast-util-find-and-replace": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz",
@@ -12704,9 +12796,9 @@
"dev": true
},
"node_modules/node-releases": {
- "version": "2.0.18",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
- "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
+ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
"dev": true
},
"node_modules/normalize-path": {
@@ -12737,9 +12829,9 @@
}
},
"node_modules/nwsapi": {
- "version": "2.2.13",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz",
- "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==",
+ "version": "2.2.16",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz",
+ "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==",
"dev": true
},
"node_modules/object-assign": {
@@ -13081,9 +13173,9 @@
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
"node_modules/path-to-regexp": {
- "version": "0.1.10",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
- "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==",
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
+ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
"dev": true
},
"node_modules/path-type": {
@@ -13371,12 +13463,15 @@
}
},
"node_modules/psl": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.13.0.tgz",
- "integrity": "sha512-BFwmFXiJoFqlUpZ5Qssolv15DMyc84gTBds1BjsV1BfXEo1UyyD7GsmN67n7J77uRhoSNW1AXtXKPLcBFQn9Aw==",
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz",
+ "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==",
"dev": true,
"dependencies": {
"punycode": "^2.3.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/lupomontero"
}
},
"node_modules/pump": {
@@ -13522,14 +13617,14 @@
}
},
"node_modules/react-clientside-effect": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz",
- "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==",
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.7.tgz",
+ "integrity": "sha512-gce9m0Pk/xYYMEojRI9bgvqQAkl6hm7ozQvqWPyQx+kULiatdHgkNM1QG4DQRx5N9BAzWSCJmt9mMV8/KsdgVg==",
"dependencies": {
"@babel/runtime": "^7.12.13"
},
"peerDependencies": {
- "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
}
},
"node_modules/react-colorful": {
@@ -13680,9 +13775,9 @@
"integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="
},
"node_modules/react-focus-lock": {
- "version": "2.13.2",
- "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.13.2.tgz",
- "integrity": "sha512-T/7bsofxYqnod2xadvuwjGKHOoL5GH7/EIPI5UyEvaU/c2CcphvGI371opFtuY/SYdbMsNiuF4HsHQ50nA/TKQ==",
+ "version": "2.13.5",
+ "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.13.5.tgz",
+ "integrity": "sha512-HjHuZFFk2+j6ZT3LDQpyqffue541HrxUG/OFchCEwis9nstgNg0rREVRAxHBcB1lHJ5Fsxtx1qya/5xFwxDb4g==",
"dependencies": {
"@babel/runtime": "^7.0.0",
"focus-lock": "^1.3.5",
@@ -13692,8 +13787,8 @@
"use-sidecar": "^1.1.2"
},
"peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ "@types/react": "*",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
"@types/react": {
@@ -13751,11 +13846,11 @@
}
},
"node_modules/react-remove-scroll": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz",
- "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==",
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.1.tgz",
+ "integrity": "sha512-jWEvWQidZ/C/FnFlUIB1mDLpY3r7uEb22WZ3uVeKj520caKDiaBsNDEB9J1gHJgpiLo+eTdPl2MVi0JitFTiFg==",
"dependencies": {
- "react-remove-scroll-bar": "^2.3.6",
+ "react-remove-scroll-bar": "^2.3.7",
"react-style-singleton": "^2.2.1",
"tslib": "^2.1.0",
"use-callback-ref": "^1.3.0",
@@ -13765,8 +13860,8 @@
"node": ">=10"
},
"peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ "@types/react": "*",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
"@types/react": {
@@ -13775,19 +13870,19 @@
}
},
"node_modules/react-remove-scroll-bar": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz",
- "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==",
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz",
+ "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==",
"dependencies": {
- "react-style-singleton": "^2.2.1",
+ "react-style-singleton": "^2.2.2",
"tslib": "^2.0.0"
},
"engines": {
"node": ">=10"
},
"peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ "@types/react": "*",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@types/react": {
@@ -13809,20 +13904,19 @@
}
},
"node_modules/react-style-singleton": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
- "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz",
+ "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==",
"dependencies": {
"get-nonce": "^1.0.0",
- "invariant": "^2.2.4",
"tslib": "^2.0.0"
},
"engines": {
"node": ">=10"
},
"peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ "@types/react": "*",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
"@types/react": {
@@ -13943,18 +14037,19 @@
}
},
"node_modules/reflect.getprototypeof": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.7.tgz",
- "integrity": "sha512-bMvFGIUKlc/eSfXNX+aZ+EL95/EgZzuwA0OBPTbZZDEJw/0AkentjMuM1oiRfwHrshqk4RzdgiTg5CcDalXN5g==",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.8.tgz",
+ "integrity": "sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
"define-properties": "^1.2.1",
+ "dunder-proto": "^1.0.0",
"es-abstract": "^1.23.5",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.4",
- "gopd": "^1.0.1",
- "which-builtin-type": "^1.1.4"
+ "gopd": "^1.2.0",
+ "which-builtin-type": "^1.2.0"
},
"engines": {
"node": ">= 0.4"
@@ -14107,11 +14202,11 @@
"dev": true
},
"node_modules/resolve": {
- "version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "version": "1.22.9",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.9.tgz",
+ "integrity": "sha512-QxrmX1DzraFIi9PxdG5VkRfRwIgjwyud+z/iBwfRRrVmHc+P9Q7u2lSSpQ6bjr2gy5lrqIiU9vb6iAeGf2400A==",
"dependencies": {
- "is-core-module": "^2.13.0",
+ "is-core-module": "^2.16.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
@@ -14144,9 +14239,9 @@
}
},
"node_modules/resolve.exports": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
- "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz",
+ "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==",
"dev": true,
"engines": {
"node": ">=10"
@@ -14198,20 +14293,40 @@
}
},
"node_modules/rollup": {
- "version": "3.29.5",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz",
- "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.1.tgz",
+ "integrity": "sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==",
"dev": true,
- "optional": true,
- "peer": true,
+ "dependencies": {
+ "@types/estree": "1.0.6"
+ },
"bin": {
"rollup": "dist/bin/rollup"
},
"engines": {
- "node": ">=14.18.0",
+ "node": ">=18.0.0",
"npm": ">=8.0.0"
},
"optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.28.1",
+ "@rollup/rollup-android-arm64": "4.28.1",
+ "@rollup/rollup-darwin-arm64": "4.28.1",
+ "@rollup/rollup-darwin-x64": "4.28.1",
+ "@rollup/rollup-freebsd-arm64": "4.28.1",
+ "@rollup/rollup-freebsd-x64": "4.28.1",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.28.1",
+ "@rollup/rollup-linux-arm-musleabihf": "4.28.1",
+ "@rollup/rollup-linux-arm64-gnu": "4.28.1",
+ "@rollup/rollup-linux-arm64-musl": "4.28.1",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.28.1",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.28.1",
+ "@rollup/rollup-linux-riscv64-gnu": "4.28.1",
+ "@rollup/rollup-linux-s390x-gnu": "4.28.1",
+ "@rollup/rollup-linux-x64-gnu": "4.28.1",
+ "@rollup/rollup-linux-x64-musl": "4.28.1",
+ "@rollup/rollup-win32-arm64-msvc": "4.28.1",
+ "@rollup/rollup-win32-ia32-msvc": "4.28.1",
+ "@rollup/rollup-win32-x64-msvc": "4.28.1",
"fsevents": "~2.3.2"
}
},
@@ -14248,14 +14363,15 @@
}
},
"node_modules/safe-array-concat": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
- "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz",
+ "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7",
- "get-intrinsic": "^1.2.4",
- "has-symbols": "^1.0.3",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "get-intrinsic": "^1.2.6",
+ "has-symbols": "^1.1.0",
"isarray": "^2.0.5"
},
"engines": {
@@ -14286,14 +14402,14 @@
]
},
"node_modules/safe-regex-test": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
- "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
+ "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.6",
+ "call-bound": "^1.0.2",
"es-errors": "^1.3.0",
- "is-regex": "^1.1.4"
+ "is-regex": "^1.2.1"
},
"engines": {
"node": ">= 0.4"
@@ -14495,15 +14611,69 @@
}
},
"node_modules/side-channel": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
- "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7",
"es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.4",
- "object-inspect": "^1.13.1"
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-list": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
@@ -14651,12 +14821,13 @@
}
},
"node_modules/stop-iteration-iterator": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
- "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz",
+ "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==",
"dev": true,
"dependencies": {
- "internal-slot": "^1.0.4"
+ "es-errors": "^1.3.0",
+ "internal-slot": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
@@ -14749,15 +14920,18 @@
}
},
"node_modules/string.prototype.trim": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
- "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
+ "version": "1.2.10",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz",
+ "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "define-data-property": "^1.1.4",
"define-properties": "^1.2.1",
- "es-abstract": "^1.23.0",
- "es-object-atoms": "^1.0.0"
+ "es-abstract": "^1.23.5",
+ "es-object-atoms": "^1.0.0",
+ "has-property-descriptors": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -14767,15 +14941,19 @@
}
},
"node_modules/string.prototype.trimend": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
- "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz",
+ "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
"define-properties": "^1.2.1",
"es-object-atoms": "^1.0.0"
},
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -14921,9 +15099,9 @@
}
},
"node_modules/table": {
- "version": "6.8.2",
- "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz",
- "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==",
+ "version": "6.9.0",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz",
+ "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==",
"dev": true,
"dependencies": {
"ajv": "^8.0.1",
@@ -15372,15 +15550,18 @@
}
},
"node_modules/unbox-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
- "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
+ "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
+ "call-bound": "^1.0.3",
"has-bigints": "^1.0.2",
- "has-symbols": "^1.0.3",
- "which-boxed-primitive": "^1.0.2"
+ "has-symbols": "^1.1.0",
+ "which-boxed-primitive": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -15589,9 +15770,9 @@
}
},
"node_modules/use-sidecar": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
- "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz",
+ "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==",
"dependencies": {
"detect-node-es": "^1.1.0",
"tslib": "^2.0.0"
@@ -15600,8 +15781,8 @@
"node": ">=10"
},
"peerDependencies": {
- "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ "@types/react": "*",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
"@types/react": {
@@ -16247,43 +16428,6 @@
"@esbuild/win32-x64": "0.20.2"
}
},
- "node_modules/vite/node_modules/rollup": {
- "version": "4.27.4",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.27.4.tgz",
- "integrity": "sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==",
- "dev": true,
- "dependencies": {
- "@types/estree": "1.0.6"
- },
- "bin": {
- "rollup": "dist/bin/rollup"
- },
- "engines": {
- "node": ">=18.0.0",
- "npm": ">=8.0.0"
- },
- "optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.27.4",
- "@rollup/rollup-android-arm64": "4.27.4",
- "@rollup/rollup-darwin-arm64": "4.27.4",
- "@rollup/rollup-darwin-x64": "4.27.4",
- "@rollup/rollup-freebsd-arm64": "4.27.4",
- "@rollup/rollup-freebsd-x64": "4.27.4",
- "@rollup/rollup-linux-arm-gnueabihf": "4.27.4",
- "@rollup/rollup-linux-arm-musleabihf": "4.27.4",
- "@rollup/rollup-linux-arm64-gnu": "4.27.4",
- "@rollup/rollup-linux-arm64-musl": "4.27.4",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.27.4",
- "@rollup/rollup-linux-riscv64-gnu": "4.27.4",
- "@rollup/rollup-linux-s390x-gnu": "4.27.4",
- "@rollup/rollup-linux-x64-gnu": "4.27.4",
- "@rollup/rollup-linux-x64-musl": "4.27.4",
- "@rollup/rollup-win32-arm64-msvc": "4.27.4",
- "@rollup/rollup-win32-ia32-msvc": "4.27.4",
- "@rollup/rollup-win32-x64-msvc": "4.27.4",
- "fsevents": "~2.3.2"
- }
- },
"node_modules/w3c-xmlserializer": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
@@ -16390,40 +16534,43 @@
}
},
"node_modules/which-boxed-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz",
+ "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==",
"dev": true,
"dependencies": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
+ "is-bigint": "^1.1.0",
+ "is-boolean-object": "^1.2.1",
+ "is-number-object": "^1.1.1",
+ "is-string": "^1.1.1",
+ "is-symbol": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/which-builtin-type": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.0.tgz",
- "integrity": "sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz",
+ "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bound": "^1.0.2",
"function.prototype.name": "^1.1.6",
"has-tostringtag": "^1.0.2",
"is-async-function": "^2.0.0",
- "is-date-object": "^1.0.5",
+ "is-date-object": "^1.1.0",
"is-finalizationregistry": "^1.1.0",
"is-generator-function": "^1.0.10",
- "is-regex": "^1.1.4",
+ "is-regex": "^1.2.1",
"is-weakref": "^1.0.2",
"isarray": "^2.0.5",
- "which-boxed-primitive": "^1.0.2",
+ "which-boxed-primitive": "^1.1.0",
"which-collection": "^1.0.2",
- "which-typed-array": "^1.1.15"
+ "which-typed-array": "^1.1.16"
},
"engines": {
"node": ">= 0.4"
@@ -16451,9 +16598,9 @@
}
},
"node_modules/which-typed-array": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
- "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.16.tgz",
+ "integrity": "sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==",
"dev": true,
"dependencies": {
"available-typed-arrays": "^1.0.7",
diff --git a/src/components/Template/Template.mdx b/src/components/Template/Template.mdx
index 9b7423c45..fb239ca20 100644
--- a/src/components/Template/Template.mdx
+++ b/src/components/Template/Template.mdx
@@ -117,7 +117,7 @@ If you are using `sidebar="right"`, place the `TemplateSidebar` after.
- //...
+ ...
`}
language="jsx"
diff --git a/src/hooks/__tests__/useNYPLTheme.test.tsx b/src/hooks/__tests__/useNYPLTheme.test.tsx
index 2b3eba077..9f5a87c80 100644
--- a/src/hooks/__tests__/useNYPLTheme.test.tsx
+++ b/src/hooks/__tests__/useNYPLTheme.test.tsx
@@ -17,7 +17,7 @@ describe("useNYPLTheme", () => {
it("returns an object with NYPL styles", () => {
const { result } = renderHook(() => useNYPLTheme(), {
- wrapper: ({ children }) => {children} ,
+ wrapper: ({ children }): any => {children} ,
});
const allKeys = Object.keys(result.current);
const colorsKeys = Object.keys((result.current as any).colors);
From 8289bb3950bb71c66266e08e64cd35a44dd60db0 Mon Sep 17 00:00:00 2001
From: bigfishdesign13
Date: Fri, 20 Dec 2024 10:30:43 -0500
Subject: [PATCH 17/18] final cleanup
---
src/components/Template/Template.mdx | 2 +-
src/components/Template/Template.stories.tsx | 26 +++++++++++++++++++-
2 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/src/components/Template/Template.mdx b/src/components/Template/Template.mdx
index fb239ca20..6b25f3038 100644
--- a/src/components/Template/Template.mdx
+++ b/src/components/Template/Template.mdx
@@ -95,7 +95,7 @@ This means you may use `TemplateMain` or `TemplateMainNarrow` depending on your
but the two should not be used in conjunction.
The `TemplateMain` and `TemplateMainNarrow` components render the content as a
-`` element with a default "id" of `"mainContent"`. This should be used as
+`` element with a default `id` of `"mainContent"`. This should be used as
the anchor element that the skip navigation link points to. If your application
is using the current Header, it already contains the skip navigation feature but
make sure it is pointing to the correct anchor element.
diff --git a/src/components/Template/Template.stories.tsx b/src/components/Template/Template.stories.tsx
index 32f653d66..39f6b441e 100644
--- a/src/components/Template/Template.stories.tsx
+++ b/src/components/Template/Template.stories.tsx
@@ -373,8 +373,32 @@ export const TemplateFullExampleNarrow = {
render: () => (
<>
+
+
+ }
+ />
+
- This is the main content!
+
Discover millions of items from The New York Public Library's
Stephen A. Schwarzman Building, Schomburg Center for Research in
From ab29dceac1dd2afea5f31f5c52c88540c54dd71a Mon Sep 17 00:00:00 2001
From: bigfishdesign13
Date: Fri, 20 Dec 2024 10:46:08 -0500
Subject: [PATCH 18/18] package-lock
---
package-lock.json | 344 +++++++++++++++++++++++++---------------------
1 file changed, 187 insertions(+), 157 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index da255a42f..f444966b5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5324,9 +5324,9 @@
}
},
"node_modules/@testing-library/react-hooks/node_modules/@types/react": {
- "version": "19.0.1",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.1.tgz",
- "integrity": "sha512-YW6614BDhqbpR5KtUYzTA+zlA7nayzJRA9ljz9CQoxthR0sDisYZLuvSMsil36t4EH/uAt8T52Xb4sVw17G+SQ==",
+ "version": "19.0.2",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.2.tgz",
+ "integrity": "sha512-USU8ZI/xyKJwFTpjSVIrSeHBVAGagkHQKPNbxeWwql/vDmnTIBgx+TJnhFnj1NXgz8XfprU0egV2dROLGpsBEg==",
"dev": true,
"dependencies": {
"csstype": "^3.0.2"
@@ -6563,13 +6563,13 @@
}
},
"node_modules/array-buffer-byte-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
- "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz",
+ "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.5",
- "is-array-buffer": "^3.0.4"
+ "call-bound": "^1.0.3",
+ "is-array-buffer": "^3.0.5"
},
"engines": {
"node": ">= 0.4"
@@ -7135,9 +7135,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001689",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001689.tgz",
- "integrity": "sha512-CmeR2VBycfa+5/jOfnp/NpWPGd06nf1XYiefUvhXFfZE4GkRc9jv+eGPS4nT558WS/8lYCzV8SlANCIPvbWP1g==",
+ "version": "1.0.30001690",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz",
+ "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==",
"dev": true,
"funding": [
{
@@ -7642,14 +7642,14 @@
}
},
"node_modules/data-view-buffer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
- "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz",
+ "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.6",
+ "call-bound": "^1.0.3",
"es-errors": "^1.3.0",
- "is-data-view": "^1.0.1"
+ "is-data-view": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -7659,29 +7659,29 @@
}
},
"node_modules/data-view-byte-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
- "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz",
+ "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bound": "^1.0.3",
"es-errors": "^1.3.0",
- "is-data-view": "^1.0.1"
+ "is-data-view": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/inspect-js"
}
},
"node_modules/data-view-byte-offset": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
- "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz",
+ "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.6",
+ "call-bound": "^1.0.2",
"es-errors": "^1.3.0",
"is-data-view": "^1.0.1"
},
@@ -7991,12 +7991,12 @@
}
},
"node_modules/dunder-proto": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz",
- "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
"dev": true,
"dependencies": {
- "call-bind-apply-helpers": "^1.0.0",
+ "call-bind-apply-helpers": "^1.0.1",
"es-errors": "^1.3.0",
"gopd": "^1.2.0"
},
@@ -8011,9 +8011,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
- "version": "1.5.74",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.74.tgz",
- "integrity": "sha512-ck3//9RC+6oss/1Bh9tiAVFy5vfSKbRHAFh7Z3/eTRkEqJeWgymloShB17Vg3Z4nmDNp35vAd1BZ6CMW4Wt6Iw==",
+ "version": "1.5.75",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.75.tgz",
+ "integrity": "sha512-Lf3++DumRE/QmweGjU+ZcKqQ+3bKkU/qjaKYhIJKEOhgIO9Xs6IiAQFkfFoj+RhgDk4LUeNsLo6plExHqSyu6Q==",
"dev": true
},
"node_modules/emittery": {
@@ -9209,12 +9209,13 @@
}
},
"node_modules/function.prototype.name": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.7.tgz",
- "integrity": "sha512-2g4x+HqTJKM9zcJqBSpjoRmdcPFtJM60J3xJisTQSXBWka5XqyBN/2tNUgma1mztTXyDuUsEtYe5qcs7xYzYQA==",
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz",
+ "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
"define-properties": "^1.2.1",
"functions-have-names": "^1.2.3",
"hasown": "^2.0.2",
@@ -9320,14 +9321,14 @@
}
},
"node_modules/get-symbol-description": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
- "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz",
+ "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.5",
+ "call-bound": "^1.0.3",
"es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.4"
+ "get-intrinsic": "^1.2.6"
},
"engines": {
"node": ">= 0.4"
@@ -9470,10 +9471,13 @@
}
},
"node_modules/has-bigints": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
+ "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==",
"dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -10022,12 +10026,12 @@
}
},
"node_modules/is-finalizationregistry": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.0.tgz",
- "integrity": "sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz",
+ "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7"
+ "call-bound": "^1.0.3"
},
"engines": {
"node": ">= 0.4"
@@ -10215,12 +10219,12 @@
}
},
"node_modules/is-shared-array-buffer": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
- "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz",
+ "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7"
+ "call-bound": "^1.0.3"
},
"engines": {
"node": ">= 0.4"
@@ -10275,12 +10279,12 @@
}
},
"node_modules/is-typed-array": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
- "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
+ "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
"dev": true,
"dependencies": {
- "which-typed-array": "^1.1.14"
+ "which-typed-array": "^1.1.16"
},
"engines": {
"node": ">= 0.4"
@@ -10329,13 +10333,13 @@
}
},
"node_modules/is-weakset": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
- "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz",
+ "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7",
- "get-intrinsic": "^1.2.4"
+ "call-bound": "^1.0.3",
+ "get-intrinsic": "^1.2.6"
},
"engines": {
"node": ">= 0.4"
@@ -11794,9 +11798,9 @@
}
},
"node_modules/markdown-to-jsx": {
- "version": "7.7.1",
- "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.7.1.tgz",
- "integrity": "sha512-BjLkHb+fWCAH9gp7ndbgPrY+zeZlGFtCiQNTWk+PD+GKfLg9YsUPNonSsYXGw6nQ7eZqeR+i71X59PpWXlxc/w==",
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.7.2.tgz",
+ "integrity": "sha512-N3AKfYRvxNscvcIH6HDnDKILp4S8UWbebp+s92Y8SwIq0CuSbLW4Jgmrbjku3CWKjTQO0OyIMS6AhzqrwjEa3g==",
"dev": true,
"engines": {
"node": ">= 10"
@@ -11806,9 +11810,9 @@
}
},
"node_modules/math-intrinsics": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.0.0.tgz",
- "integrity": "sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
"dev": true,
"engines": {
"node": ">= 0.4"
@@ -12880,14 +12884,16 @@
}
},
"node_modules/object.assign": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
- "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz",
+ "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.5",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
"define-properties": "^1.2.1",
- "has-symbols": "^1.0.3",
+ "es-object-atoms": "^1.0.0",
+ "has-symbols": "^1.1.0",
"object-keys": "^1.1.1"
},
"engines": {
@@ -12947,12 +12953,13 @@
}
},
"node_modules/object.values": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
- "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz",
+ "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
"define-properties": "^1.2.1",
"es-object-atoms": "^1.0.0"
},
@@ -13846,14 +13853,14 @@
}
},
"node_modules/react-remove-scroll": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.1.tgz",
- "integrity": "sha512-jWEvWQidZ/C/FnFlUIB1mDLpY3r7uEb22WZ3uVeKj520caKDiaBsNDEB9J1gHJgpiLo+eTdPl2MVi0JitFTiFg==",
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.2.tgz",
+ "integrity": "sha512-KmONPx5fnlXYJQqC62Q+lwIeAk64ws/cUw6omIumRzMRPqgnYqhSSti99nbj0Ry13bv7dF+BKn7NB+OqkdZGTw==",
"dependencies": {
"react-remove-scroll-bar": "^2.3.7",
"react-style-singleton": "^2.2.1",
"tslib": "^2.1.0",
- "use-callback-ref": "^1.3.0",
+ "use-callback-ref": "^1.3.3",
"use-sidecar": "^1.1.2"
},
"engines": {
@@ -14037,19 +14044,19 @@
}
},
"node_modules/reflect.getprototypeof": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.8.tgz",
- "integrity": "sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==",
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.9.tgz",
+ "integrity": "sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.8",
"define-properties": "^1.2.1",
- "dunder-proto": "^1.0.0",
- "es-abstract": "^1.23.5",
+ "dunder-proto": "^1.0.1",
+ "es-abstract": "^1.23.6",
"es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.4",
+ "get-intrinsic": "^1.2.6",
"gopd": "^1.2.0",
- "which-builtin-type": "^1.2.0"
+ "which-builtin-type": "^1.2.1"
},
"engines": {
"node": ">= 0.4"
@@ -14202,9 +14209,9 @@
"dev": true
},
"node_modules/resolve": {
- "version": "1.22.9",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.9.tgz",
- "integrity": "sha512-QxrmX1DzraFIi9PxdG5VkRfRwIgjwyud+z/iBwfRRrVmHc+P9Q7u2lSSpQ6bjr2gy5lrqIiU9vb6iAeGf2400A==",
+ "version": "1.22.10",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
"dependencies": {
"is-core-module": "^2.16.0",
"path-parse": "^1.0.7",
@@ -14213,6 +14220,9 @@
"bin": {
"resolve": "bin/resolve"
},
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -14293,40 +14303,20 @@
}
},
"node_modules/rollup": {
- "version": "4.28.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.1.tgz",
- "integrity": "sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==",
+ "version": "3.29.5",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz",
+ "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==",
"dev": true,
- "dependencies": {
- "@types/estree": "1.0.6"
- },
+ "optional": true,
+ "peer": true,
"bin": {
"rollup": "dist/bin/rollup"
},
"engines": {
- "node": ">=18.0.0",
+ "node": ">=14.18.0",
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.28.1",
- "@rollup/rollup-android-arm64": "4.28.1",
- "@rollup/rollup-darwin-arm64": "4.28.1",
- "@rollup/rollup-darwin-x64": "4.28.1",
- "@rollup/rollup-freebsd-arm64": "4.28.1",
- "@rollup/rollup-freebsd-x64": "4.28.1",
- "@rollup/rollup-linux-arm-gnueabihf": "4.28.1",
- "@rollup/rollup-linux-arm-musleabihf": "4.28.1",
- "@rollup/rollup-linux-arm64-gnu": "4.28.1",
- "@rollup/rollup-linux-arm64-musl": "4.28.1",
- "@rollup/rollup-linux-loongarch64-gnu": "4.28.1",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.28.1",
- "@rollup/rollup-linux-riscv64-gnu": "4.28.1",
- "@rollup/rollup-linux-s390x-gnu": "4.28.1",
- "@rollup/rollup-linux-x64-gnu": "4.28.1",
- "@rollup/rollup-linux-x64-musl": "4.28.1",
- "@rollup/rollup-win32-arm64-msvc": "4.28.1",
- "@rollup/rollup-win32-ia32-msvc": "4.28.1",
- "@rollup/rollup-win32-x64-msvc": "4.28.1",
"fsevents": "~2.3.2"
}
},
@@ -14894,23 +14884,24 @@
"dev": true
},
"node_modules/string.prototype.matchall": {
- "version": "4.0.11",
- "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz",
- "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==",
+ "version": "4.0.12",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz",
+ "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
"define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
+ "es-abstract": "^1.23.6",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.0.0",
- "get-intrinsic": "^1.2.4",
- "gopd": "^1.0.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.7",
- "regexp.prototype.flags": "^1.5.2",
+ "get-intrinsic": "^1.2.6",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "internal-slot": "^1.1.0",
+ "regexp.prototype.flags": "^1.5.3",
"set-function-name": "^2.0.2",
- "side-channel": "^1.0.6"
+ "side-channel": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
@@ -15463,30 +15454,30 @@
}
},
"node_modules/typed-array-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
- "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bound": "^1.0.3",
"es-errors": "^1.3.0",
- "is-typed-array": "^1.1.13"
+ "is-typed-array": "^1.1.14"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/typed-array-byte-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
- "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz",
+ "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
"for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-proto": "^1.0.3",
- "is-typed-array": "^1.1.13"
+ "gopd": "^1.2.0",
+ "has-proto": "^1.2.0",
+ "is-typed-array": "^1.1.14"
},
"engines": {
"node": ">= 0.4"
@@ -15496,18 +15487,18 @@
}
},
"node_modules/typed-array-byte-offset": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz",
- "integrity": "sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz",
+ "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==",
"dev": true,
"dependencies": {
"available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
"for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-proto": "^1.0.3",
- "is-typed-array": "^1.1.13",
- "reflect.getprototypeof": "^1.0.6"
+ "gopd": "^1.2.0",
+ "has-proto": "^1.2.0",
+ "is-typed-array": "^1.1.15",
+ "reflect.getprototypeof": "^1.0.9"
},
"engines": {
"node": ">= 0.4"
@@ -15750,9 +15741,9 @@
}
},
"node_modules/use-callback-ref": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz",
- "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz",
+ "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==",
"dependencies": {
"tslib": "^2.0.0"
},
@@ -15760,8 +15751,8 @@
"node": ">=10"
},
"peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ "@types/react": "*",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
"@types/react": {
@@ -16428,6 +16419,44 @@
"@esbuild/win32-x64": "0.20.2"
}
},
+ "node_modules/vite/node_modules/rollup": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.1.tgz",
+ "integrity": "sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==",
+ "dev": true,
+ "dependencies": {
+ "@types/estree": "1.0.6"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.28.1",
+ "@rollup/rollup-android-arm64": "4.28.1",
+ "@rollup/rollup-darwin-arm64": "4.28.1",
+ "@rollup/rollup-darwin-x64": "4.28.1",
+ "@rollup/rollup-freebsd-arm64": "4.28.1",
+ "@rollup/rollup-freebsd-x64": "4.28.1",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.28.1",
+ "@rollup/rollup-linux-arm-musleabihf": "4.28.1",
+ "@rollup/rollup-linux-arm64-gnu": "4.28.1",
+ "@rollup/rollup-linux-arm64-musl": "4.28.1",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.28.1",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.28.1",
+ "@rollup/rollup-linux-riscv64-gnu": "4.28.1",
+ "@rollup/rollup-linux-s390x-gnu": "4.28.1",
+ "@rollup/rollup-linux-x64-gnu": "4.28.1",
+ "@rollup/rollup-linux-x64-musl": "4.28.1",
+ "@rollup/rollup-win32-arm64-msvc": "4.28.1",
+ "@rollup/rollup-win32-ia32-msvc": "4.28.1",
+ "@rollup/rollup-win32-x64-msvc": "4.28.1",
+ "fsevents": "~2.3.2"
+ }
+ },
"node_modules/w3c-xmlserializer": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
@@ -16598,15 +16627,16 @@
}
},
"node_modules/which-typed-array": {
- "version": "1.1.16",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.16.tgz",
- "integrity": "sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==",
+ "version": "1.1.18",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz",
+ "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==",
"dev": true,
"dependencies": {
"available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
"for-each": "^0.3.3",
- "gopd": "^1.0.1",
+ "gopd": "^1.2.0",
"has-tostringtag": "^1.0.2"
},
"engines": {