From 7cd3f9388a08f82edcd5e81952f12f3a62d2dc1f Mon Sep 17 00:00:00 2001 From: Connor Prussin Date: Sat, 21 Dec 2024 13:05:09 -0800 Subject: [PATCH] fix(component-library): fix prefetching react-aria links --- apps/insights/package.json | 1 - .../PriceFeed/price-components-card.tsx | 7 +- .../PriceFeed/price-feed-select.tsx | 22 +- .../src/components/PriceFeed/tabs.tsx | 17 +- .../PriceFeeds/price-feeds-card.tsx | 7 +- .../components/Publishers/publishers-card.tsx | 7 +- .../Publishers/semicircle-meter.tsx | 4 +- .../insights/src/components/Root/nav-link.tsx | 2 +- apps/insights/src/components/Root/tabs.tsx | 10 +- apps/insights/src/components/Score/index.tsx | 2 +- .../src/use-query-param-filter-pagination.ts | 2 +- packages/component-library/package.json | 2 + .../src/Breadcrumbs/index.tsx | 10 +- .../component-library/src/Button/index.tsx | 8 +- packages/component-library/src/Card/index.tsx | 13 +- packages/component-library/src/Link/index.tsx | 2 +- .../src/MainNavTabs/index.stories.tsx | 6 +- .../src/MainNavTabs/index.tsx | 15 +- .../component-library/src/Paginator/index.tsx | 9 +- .../src/SearchInput/index.tsx | 6 +- .../component-library/src/Select/index.tsx | 8 +- .../src/{Tabs => TabList}/index.module.scss | 0 .../src/{Tabs => TabList}/index.stories.tsx | 10 +- .../src/{Tabs => TabList}/index.tsx | 10 +- .../component-library/src/Table/index.tsx | 47 ++-- .../src/UnstyledBreadcrumbs/index.tsx | 12 - .../src/UnstyledButton/index.tsx | 9 - .../src/UnstyledLink/index.tsx | 9 - .../src/UnstyledTable/index.tsx | 16 -- .../src/UnstyledTabs/index.tsx | 14 - .../src/UnstyledToolbar/index.tsx | 9 - .../src/Virtualizer/index.tsx | 6 + .../Checkbox/index.stories.tsx | 37 --- .../src/to-remove-tailwind/Checkbox/index.tsx | 40 --- .../CheckboxGroup/index.stories.tsx | 66 ----- .../CheckboxGroup/index.tsx | 46 ---- .../Radio/index.stories.tsx | 38 --- .../src/to-remove-tailwind/Radio/index.tsx | 23 -- .../RadioGroup/index.stories.tsx | 62 ----- .../to-remove-tailwind/RadioGroup/index.tsx | 38 --- .../src/unstyled/Breadcrumbs/index.tsx | 3 + .../src/unstyled/Button/index.tsx | 3 + .../src/unstyled/Dialog/index.tsx | 3 + .../src/unstyled/Label/index.tsx | 3 + .../src/unstyled/Link/index.tsx | 28 ++ .../src/unstyled/ListBox/index.tsx | 30 +++ .../src/unstyled/Meter/index.tsx | 3 + .../src/unstyled/Popover/index.tsx | 3 + .../src/unstyled/Select/index.tsx | 3 + .../src/unstyled/Table/index.tsx | 35 +++ .../src/unstyled/Tabs/index.tsx | 25 ++ .../src/unstyled/TextField/index.tsx | 3 + .../src/unstyled/Toolbar/index.tsx | 3 + .../component-library/src/use-prefetch.ts | 123 +++++++++ pnpm-lock.yaml | 252 +++++++++--------- pnpm-workspace.yaml | 2 +- 56 files changed, 516 insertions(+), 658 deletions(-) rename packages/component-library/src/{Tabs => TabList}/index.module.scss (100%) rename packages/component-library/src/{Tabs => TabList}/index.stories.tsx (63%) rename packages/component-library/src/{Tabs => TabList}/index.tsx (85%) delete mode 100644 packages/component-library/src/UnstyledBreadcrumbs/index.tsx delete mode 100644 packages/component-library/src/UnstyledButton/index.tsx delete mode 100644 packages/component-library/src/UnstyledLink/index.tsx delete mode 100644 packages/component-library/src/UnstyledTable/index.tsx delete mode 100644 packages/component-library/src/UnstyledTabs/index.tsx delete mode 100644 packages/component-library/src/UnstyledToolbar/index.tsx create mode 100644 packages/component-library/src/Virtualizer/index.tsx delete mode 100644 packages/component-library/src/to-remove-tailwind/Checkbox/index.stories.tsx delete mode 100644 packages/component-library/src/to-remove-tailwind/Checkbox/index.tsx delete mode 100644 packages/component-library/src/to-remove-tailwind/CheckboxGroup/index.stories.tsx delete mode 100644 packages/component-library/src/to-remove-tailwind/CheckboxGroup/index.tsx delete mode 100644 packages/component-library/src/to-remove-tailwind/Radio/index.stories.tsx delete mode 100644 packages/component-library/src/to-remove-tailwind/Radio/index.tsx delete mode 100644 packages/component-library/src/to-remove-tailwind/RadioGroup/index.stories.tsx delete mode 100644 packages/component-library/src/to-remove-tailwind/RadioGroup/index.tsx create mode 100644 packages/component-library/src/unstyled/Breadcrumbs/index.tsx create mode 100644 packages/component-library/src/unstyled/Button/index.tsx create mode 100644 packages/component-library/src/unstyled/Dialog/index.tsx create mode 100644 packages/component-library/src/unstyled/Label/index.tsx create mode 100644 packages/component-library/src/unstyled/Link/index.tsx create mode 100644 packages/component-library/src/unstyled/ListBox/index.tsx create mode 100644 packages/component-library/src/unstyled/Meter/index.tsx create mode 100644 packages/component-library/src/unstyled/Popover/index.tsx create mode 100644 packages/component-library/src/unstyled/Select/index.tsx create mode 100644 packages/component-library/src/unstyled/Table/index.tsx create mode 100644 packages/component-library/src/unstyled/Tabs/index.tsx create mode 100644 packages/component-library/src/unstyled/TextField/index.tsx create mode 100644 packages/component-library/src/unstyled/Toolbar/index.tsx create mode 100644 packages/component-library/src/use-prefetch.ts diff --git a/apps/insights/package.json b/apps/insights/package.json index 48643cda90..a53e6f9f8a 100644 --- a/apps/insights/package.json +++ b/apps/insights/package.json @@ -41,7 +41,6 @@ "nuqs": "catalog:", "react": "catalog:", "react-aria": "catalog:", - "react-aria-components": "catalog:", "react-dom": "catalog:", "recharts": "catalog:", "superjson": "catalog:", diff --git a/apps/insights/src/components/PriceFeed/price-components-card.tsx b/apps/insights/src/components/PriceFeed/price-components-card.tsx index 81e0e9ee16..30d53f7f7e 100644 --- a/apps/insights/src/components/PriceFeed/price-components-card.tsx +++ b/apps/insights/src/components/PriceFeed/price-components-card.tsx @@ -2,10 +2,13 @@ import { Card } from "@pythnetwork/component-library/Card"; import { Paginator } from "@pythnetwork/component-library/Paginator"; -import { type RowConfig, Table } from "@pythnetwork/component-library/Table"; +import { + type RowConfig, + type SortDescriptor, + Table, +} from "@pythnetwork/component-library/Table"; import { type ReactNode, Suspense, useMemo } from "react"; import { useFilter, useCollator } from "react-aria"; -import type { SortDescriptor } from "react-aria-components"; import { useQueryParamFilterPagination } from "../../use-query-param-filter-pagination"; import { FormattedNumber } from "../FormattedNumber"; diff --git a/apps/insights/src/components/PriceFeed/price-feed-select.tsx b/apps/insights/src/components/PriceFeed/price-feed-select.tsx index 99f007cd3a..74f0db2de5 100644 --- a/apps/insights/src/components/PriceFeed/price-feed-select.tsx +++ b/apps/insights/src/components/PriceFeed/price-feed-select.tsx @@ -1,20 +1,24 @@ "use client"; import { DropdownCaretDown } from "@pythnetwork/component-library/DropdownCaretDown"; -import { type ReactNode, useMemo, useState } from "react"; -import { useCollator, useFilter } from "react-aria"; import { - Select, - Button, - Popover, - Dialog, + Virtualizer, + ListLayout, +} from "@pythnetwork/component-library/Virtualizer"; +import { Button } from "@pythnetwork/component-library/unstyled/Button"; +import { Dialog } from "@pythnetwork/component-library/unstyled/Dialog"; +import { ListBox, ListBoxItem, - UNSTABLE_Virtualizer as Virtualizer, - UNSTABLE_ListLayout as ListLayout, +} from "@pythnetwork/component-library/unstyled/ListBox"; +import { Popover } from "@pythnetwork/component-library/unstyled/Popover"; +import { Select } from "@pythnetwork/component-library/unstyled/Select"; +import { TextField, Input, -} from "react-aria-components"; +} from "@pythnetwork/component-library/unstyled/TextField"; +import { type ReactNode, useMemo, useState } from "react"; +import { useCollator, useFilter } from "react-aria"; import styles from "./price-feed-select.module.scss"; diff --git a/apps/insights/src/components/PriceFeed/tabs.tsx b/apps/insights/src/components/PriceFeed/tabs.tsx index 83680f62bc..0f509cf7da 100644 --- a/apps/insights/src/components/PriceFeed/tabs.tsx +++ b/apps/insights/src/components/PriceFeed/tabs.tsx @@ -1,10 +1,10 @@ "use client"; -import { Tabs as TabsComponent } from "@pythnetwork/component-library/Tabs"; +import { TabList } from "@pythnetwork/component-library/TabList"; import { - UnstyledTabPanel, - UnstyledTabs, -} from "@pythnetwork/component-library/UnstyledTabs"; + TabPanel as UnstyledTabPanel, + Tabs as UnstyledTabs, +} from "@pythnetwork/component-library/unstyled/Tabs"; import { useSelectedLayoutSegment, usePathname } from "next/navigation"; import { useMemo, type ComponentProps } from "react"; @@ -18,13 +18,10 @@ export const TabRoot = ( return ; }; -type TabsProps = Omit< - ComponentProps, - "pathname" | "items" -> & { +type TabsProps = Omit, "pathname" | "items"> & { slug: string; items: (Omit< - ComponentProps["items"], + ComponentProps["items"], "href" | "id" >[number] & { segment: string | undefined; @@ -42,7 +39,7 @@ export const Tabs = ({ slug, items, ...props }: TabsProps) => { })); }, [items, slug]); - return ; + return ; }; export const TabPanel = ({ diff --git a/apps/insights/src/components/PriceFeeds/price-feeds-card.tsx b/apps/insights/src/components/PriceFeeds/price-feeds-card.tsx index 7ad0898a1c..95cfc28204 100644 --- a/apps/insights/src/components/PriceFeeds/price-feeds-card.tsx +++ b/apps/insights/src/components/PriceFeeds/price-feeds-card.tsx @@ -7,11 +7,14 @@ import { Card } from "@pythnetwork/component-library/Card"; import { Paginator } from "@pythnetwork/component-library/Paginator"; import { SearchInput } from "@pythnetwork/component-library/SearchInput"; import { Select } from "@pythnetwork/component-library/Select"; -import { type RowConfig, Table } from "@pythnetwork/component-library/Table"; +import { + type RowConfig, + type SortDescriptor, + Table, +} from "@pythnetwork/component-library/Table"; import { useQueryState, parseAsString } from "nuqs"; import { type ReactNode, Suspense, useCallback, useMemo } from "react"; import { useFilter, useCollator } from "react-aria"; -import type { SortDescriptor } from "react-aria-components"; import { useQueryParamFilterPagination } from "../../use-query-param-filter-pagination"; import { SKELETON_WIDTH } from "../LivePrices"; diff --git a/apps/insights/src/components/Publishers/publishers-card.tsx b/apps/insights/src/components/Publishers/publishers-card.tsx index 278ccc5a3c..12eb0b8a69 100644 --- a/apps/insights/src/components/Publishers/publishers-card.tsx +++ b/apps/insights/src/components/Publishers/publishers-card.tsx @@ -5,10 +5,13 @@ import { Badge } from "@pythnetwork/component-library/Badge"; import { Card } from "@pythnetwork/component-library/Card"; import { Paginator } from "@pythnetwork/component-library/Paginator"; import { SearchInput } from "@pythnetwork/component-library/SearchInput"; -import { type RowConfig, Table } from "@pythnetwork/component-library/Table"; +import { + type RowConfig, + type SortDescriptor, + Table, +} from "@pythnetwork/component-library/Table"; import { type ReactNode, Suspense, useMemo } from "react"; import { useFilter, useCollator } from "react-aria"; -import type { SortDescriptor } from "react-aria-components"; import { useQueryParamFilterPagination } from "../../use-query-param-filter-pagination"; import { NoResults } from "../NoResults"; diff --git a/apps/insights/src/components/Publishers/semicircle-meter.tsx b/apps/insights/src/components/Publishers/semicircle-meter.tsx index ead07f0808..081c11de0b 100644 --- a/apps/insights/src/components/Publishers/semicircle-meter.tsx +++ b/apps/insights/src/components/Publishers/semicircle-meter.tsx @@ -1,11 +1,11 @@ "use client"; +import { Meter } from "@pythnetwork/component-library/unstyled/Meter"; import dynamic from "next/dynamic"; import { type ComponentProps, Suspense } from "react"; -import { Meter } from "react-aria-components"; import { PolarAngleAxis, RadialBar } from "recharts"; -export { Label } from "react-aria-components"; +export { Label } from "@pythnetwork/component-library/unstyled/Label"; const RadialBarChart = dynamic( () => import("recharts").then((recharts) => recharts.RadialBarChart), diff --git a/apps/insights/src/components/Root/nav-link.tsx b/apps/insights/src/components/Root/nav-link.tsx index 1756e83b3a..9da03df30e 100644 --- a/apps/insights/src/components/Root/nav-link.tsx +++ b/apps/insights/src/components/Root/nav-link.tsx @@ -1,8 +1,8 @@ "use client"; +import { Link } from "@pythnetwork/component-library/unstyled/Link"; import { useSelectedLayoutSegment } from "next/navigation"; import type { ReactNode } from "react"; -import { Link } from "react-aria-components"; type Props = { href: string; diff --git a/apps/insights/src/components/Root/tabs.tsx b/apps/insights/src/components/Root/tabs.tsx index 7c1e379953..2c534e8eb2 100644 --- a/apps/insights/src/components/Root/tabs.tsx +++ b/apps/insights/src/components/Root/tabs.tsx @@ -2,20 +2,20 @@ import { MainNavTabs as MainNavTabsComponent } from "@pythnetwork/component-library/MainNavTabs"; import { - UnstyledTabPanel, - UnstyledTabs, -} from "@pythnetwork/component-library/UnstyledTabs"; + TabPanel as UnstyledTabPanel, + Tabs, +} from "@pythnetwork/component-library/unstyled/Tabs"; import { useSelectedLayoutSegment, usePathname } from "next/navigation"; import { type ComponentProps } from "react"; import { type VariantArg, LayoutTransition } from "../LayoutTransition"; export const TabRoot = ( - props: Omit, "selectedKey">, + props: Omit, "selectedKey">, ) => { const tabId = useSelectedLayoutSegment() ?? ""; - return ; + return ; }; export const MainNavTabs = ( diff --git a/apps/insights/src/components/Score/index.tsx b/apps/insights/src/components/Score/index.tsx index 6284b160b1..7e3a44ccb6 100644 --- a/apps/insights/src/components/Score/index.tsx +++ b/apps/insights/src/components/Score/index.tsx @@ -1,8 +1,8 @@ "use client"; import { Skeleton } from "@pythnetwork/component-library/Skeleton"; +import { Meter } from "@pythnetwork/component-library/unstyled/Meter"; import type { CSSProperties } from "react"; -import { Meter } from "react-aria-components"; import styles from "./index.module.scss"; diff --git a/apps/insights/src/use-query-param-filter-pagination.ts b/apps/insights/src/use-query-param-filter-pagination.ts index ee9497d8a8..fc1f7fd601 100644 --- a/apps/insights/src/use-query-param-filter-pagination.ts +++ b/apps/insights/src/use-query-param-filter-pagination.ts @@ -1,6 +1,7 @@ "use client"; import { useLogger } from "@pythnetwork/app-logger"; +import type { SortDescriptor } from "@pythnetwork/component-library/unstyled/Table"; import { usePathname } from "next/navigation"; import { parseAsString, @@ -10,7 +11,6 @@ import { createSerializer, } from "nuqs"; import { useCallback, useMemo } from "react"; -import type { SortDescriptor } from "react-aria-components"; export const useQueryParamFilterPagination = ( items: T[], diff --git a/packages/component-library/package.json b/packages/component-library/package.json index 188faf3365..91e5d61e14 100644 --- a/packages/component-library/package.json +++ b/packages/component-library/package.json @@ -22,6 +22,7 @@ "test:types": "tsc" }, "peerDependencies": { + "next": "catalog:", "react": "catalog:" }, "dependencies": { @@ -51,6 +52,7 @@ "css-loader": "catalog:", "eslint": "catalog:", "jest": "catalog:", + "next": "catalog:", "postcss": "catalog:", "postcss-loader": "catalog:", "prettier": "catalog:", diff --git a/packages/component-library/src/Breadcrumbs/index.tsx b/packages/component-library/src/Breadcrumbs/index.tsx index e22e3e6e02..b8963ced99 100644 --- a/packages/component-library/src/Breadcrumbs/index.tsx +++ b/packages/component-library/src/Breadcrumbs/index.tsx @@ -9,9 +9,9 @@ import styles from "./index.module.scss"; import { Button } from "../Button/index.js"; import { Link } from "../Link/index.js"; import { - UnstyledBreadcrumbs, - UnstyledBreadcrumb, -} from "../UnstyledBreadcrumbs/index.js"; + Breadcrumbs as UnstyledBreadcrumbs, + Breadcrumb, +} from "../unstyled/Breadcrumbs/index.js"; type OwnProps = { label: string; @@ -37,7 +37,7 @@ export const Breadcrumbs = ({ label, className, items, ...props }: Props) => ( {...props} > {(item) => ( - + {"href" in item ? ( <> {item.href === "/" ? ( @@ -65,7 +65,7 @@ export const Breadcrumbs = ({ label, className, items, ...props }: Props) => ( ) : (
{item.label}
)} -
+ )} diff --git a/packages/component-library/src/Button/index.tsx b/packages/component-library/src/Button/index.tsx index 843083fea7..4275738142 100644 --- a/packages/component-library/src/Button/index.tsx +++ b/packages/component-library/src/Button/index.tsx @@ -7,8 +7,8 @@ import type { } from "react"; import styles from "./index.module.scss"; -import { UnstyledButton } from "../UnstyledButton/index.js"; -import { UnstyledLink } from "../UnstyledLink/index.js"; +import { Button as UnstyledButton } from "../unstyled/Button/index.js"; +import { Link } from "../unstyled/Link/index.js"; export const VARIANTS = [ "primary", @@ -38,10 +38,10 @@ export type Props = Omit< OwnProps; export const Button = ( - props: Props | Props, + props: Props | Props, ) => "href" in props ? ( - + ) : ( ); diff --git a/packages/component-library/src/Card/index.tsx b/packages/component-library/src/Card/index.tsx index 4932a67082..e46500b9c2 100644 --- a/packages/component-library/src/Card/index.tsx +++ b/packages/component-library/src/Card/index.tsx @@ -10,8 +10,8 @@ import { import { OverlayTriggerStateContext } from "react-aria-components"; import styles from "./index.module.scss"; -import { UnstyledButton } from "../UnstyledButton/index.js"; -import { UnstyledLink } from "../UnstyledLink/index.js"; +import { Button } from "../unstyled/Button/index.js"; +import { Link } from "../unstyled/Link/index.js"; export const VARIANTS = ["primary", "secondary", "tertiary"] as const; @@ -30,17 +30,14 @@ export type Props = Omit< OwnProps; export const Card = ( - props: - | Props<"div"> - | Props - | Props, + props: Props<"div"> | Props | Props, ) => { const overlayState = use(OverlayTriggerStateContext); if (overlayState !== null || "onPress" in props) { - return ; + return ); diff --git a/packages/component-library/src/Select/index.tsx b/packages/component-library/src/Select/index.tsx index a91f50f1b2..40cf1836bc 100644 --- a/packages/component-library/src/Select/index.tsx +++ b/packages/component-library/src/Select/index.tsx @@ -7,9 +7,6 @@ import { Label, Select as BaseSelect, Popover, - ListBox, - ListBoxItem, - ListBoxSection, Header, Collection, SelectValue, @@ -18,6 +15,11 @@ import { import styles from "./index.module.scss"; import { type Props as ButtonProps, Button } from "../Button/index.js"; import { DropdownCaretDown } from "../DropdownCaretDown/index.js"; +import { + ListBox, + ListBoxItem, + ListBoxSection, +} from "../unstyled/ListBox/index.js"; type Props = Omit< ComponentProps, diff --git a/packages/component-library/src/Tabs/index.module.scss b/packages/component-library/src/TabList/index.module.scss similarity index 100% rename from packages/component-library/src/Tabs/index.module.scss rename to packages/component-library/src/TabList/index.module.scss diff --git a/packages/component-library/src/Tabs/index.stories.tsx b/packages/component-library/src/TabList/index.stories.tsx similarity index 63% rename from packages/component-library/src/Tabs/index.stories.tsx rename to packages/component-library/src/TabList/index.stories.tsx index 4396828005..8276cb61c5 100644 --- a/packages/component-library/src/Tabs/index.stories.tsx +++ b/packages/component-library/src/TabList/index.stories.tsx @@ -1,10 +1,10 @@ import type { Meta, StoryObj } from "@storybook/react"; -import { Tabs as TabsComponent } from "./index.js"; -import { UnstyledTabs } from "../UnstyledTabs/index.js"; +import { TabList as TabListComponent } from "./index.js"; +import { Tabs as UnstyledTabs } from "../unstyled/Tabs/index.js"; const meta = { - component: TabsComponent, + component: TabListComponent, argTypes: { items: { table: { @@ -12,7 +12,7 @@ const meta = { }, }, }, -} satisfies Meta; +} satisfies Meta; export default meta; export const Tabs = { @@ -29,4 +29,4 @@ export const Tabs = { { id: "bar", children: "Bar" }, ], }, -} satisfies StoryObj; +} satisfies StoryObj; diff --git a/packages/component-library/src/Tabs/index.tsx b/packages/component-library/src/TabList/index.tsx similarity index 85% rename from packages/component-library/src/Tabs/index.tsx rename to packages/component-library/src/TabList/index.tsx index b51ef7345d..8410ba7c77 100644 --- a/packages/component-library/src/Tabs/index.tsx +++ b/packages/component-library/src/TabList/index.tsx @@ -6,17 +6,17 @@ import type { ComponentProps } from "react"; import styles from "./index.module.scss"; import buttonStyles from "../Button/index.module.scss"; -import { UnstyledTab, UnstyledTabList } from "../UnstyledTabs/index.js"; +import { Tab, TabList as UnstyledTabList } from "../unstyled/Tabs/index.js"; type OwnProps = { label: string; pathname?: string | undefined; - items: ComponentProps[]; + items: ComponentProps[]; }; type Props = Omit, keyof OwnProps> & OwnProps; -export const Tabs = ({ label, className, pathname, ...props }: Props) => ( +export const TabList = ({ label, className, pathname, ...props }: Props) => (
( {...props} > {({ className: tabClassName, children, ...tab }) => ( - ( )} )} - + )}
diff --git a/packages/component-library/src/Table/index.tsx b/packages/component-library/src/Table/index.tsx index 060693d146..1916c3328e 100644 --- a/packages/component-library/src/Table/index.tsx +++ b/packages/component-library/src/Table/index.tsx @@ -12,13 +12,15 @@ import styles from "./index.module.scss"; import { Button } from "../Button/index.js"; import { Skeleton } from "../Skeleton/index.js"; import { - UnstyledCell, - UnstyledColumn, - UnstyledRow, - UnstyledTable, - UnstyledTableBody, - UnstyledTableHeader, -} from "../UnstyledTable/index.js"; + Cell, + Column, + Row, + Table as UnstyledTable, + TableBody, + TableHeader, +} from "../unstyled/Table/index.js"; + +export type { SortDescriptor } from "../unstyled/Table/index.js"; type TableProps = ComponentProps & { className?: string | undefined; @@ -81,12 +83,9 @@ export const Table = ({ )} - + {(column: ColumnConfig) => ( - + {({ allowsSorting, sort, sortDirection }) => ( <> {column.name} @@ -127,24 +126,24 @@ export const Table = ({
)} - + )} - - + {isLoading ? ( - {(column: ColumnConfig) => ( - + {"loadingSkeleton" in column ? ( column.loadingSkeleton ) : ( @@ -156,25 +155,23 @@ export const Table = ({ } /> )} - + )} - + ) : ( ({ className: rowClassName, data, ...row }: RowConfig) => ( - {(column: ColumnConfig) => ( - - {data[column.id]} - + {data[column.id]} )} - + ) )} - +
); diff --git a/packages/component-library/src/UnstyledBreadcrumbs/index.tsx b/packages/component-library/src/UnstyledBreadcrumbs/index.tsx deleted file mode 100644 index 3b1ed50307..0000000000 --- a/packages/component-library/src/UnstyledBreadcrumbs/index.tsx +++ /dev/null @@ -1,12 +0,0 @@ -/** - * The react-aria components aren't marked as "use client" so it's a bit - * obnoxious to use them; this file just adds a client boundary and re-exports - * the react-aria components to avoid that problem. - */ - -"use client"; - -export { - Breadcrumbs as UnstyledBreadcrumbs, - Breadcrumb as UnstyledBreadcrumb, -} from "react-aria-components"; diff --git a/packages/component-library/src/UnstyledButton/index.tsx b/packages/component-library/src/UnstyledButton/index.tsx deleted file mode 100644 index 88d21e6db2..0000000000 --- a/packages/component-library/src/UnstyledButton/index.tsx +++ /dev/null @@ -1,9 +0,0 @@ -/** - * The react-aria components aren't marked as "use client" so it's a bit - * obnoxious to use them; this file just adds a client boundary and re-exports - * the react-aria components to avoid that problem. - */ - -"use client"; - -export { Button as UnstyledButton } from "react-aria-components"; diff --git a/packages/component-library/src/UnstyledLink/index.tsx b/packages/component-library/src/UnstyledLink/index.tsx deleted file mode 100644 index 870b9ce3de..0000000000 --- a/packages/component-library/src/UnstyledLink/index.tsx +++ /dev/null @@ -1,9 +0,0 @@ -/** - * The react-aria components aren't marked as "use client" so it's a bit - * obnoxious to use them; this file just adds a client boundary and re-exports - * the react-aria components to avoid that problem. - */ - -"use client"; - -export { Link as UnstyledLink } from "react-aria-components"; diff --git a/packages/component-library/src/UnstyledTable/index.tsx b/packages/component-library/src/UnstyledTable/index.tsx deleted file mode 100644 index 49e3371411..0000000000 --- a/packages/component-library/src/UnstyledTable/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -/** - * The react-aria components aren't marked as "use client" so it's a bit - * obnoxious to use them; this file just adds a client boundary and re-exports - * the react-aria components to avoid that problem. - */ - -"use client"; - -export { - Cell as UnstyledCell, - Column as UnstyledColumn, - Row as UnstyledRow, - Table as UnstyledTable, - TableBody as UnstyledTableBody, - TableHeader as UnstyledTableHeader, -} from "react-aria-components"; diff --git a/packages/component-library/src/UnstyledTabs/index.tsx b/packages/component-library/src/UnstyledTabs/index.tsx deleted file mode 100644 index d7b13a3371..0000000000 --- a/packages/component-library/src/UnstyledTabs/index.tsx +++ /dev/null @@ -1,14 +0,0 @@ -/** - * The react-aria components aren't marked as "use client" so it's a bit - * obnoxious to use them; this file just adds a client boundary and re-exports - * the react-aria components to avoid that problem. - */ - -"use client"; - -export { - Tab as UnstyledTab, - TabList as UnstyledTabList, - TabPanel as UnstyledTabPanel, - Tabs as UnstyledTabs, -} from "react-aria-components"; diff --git a/packages/component-library/src/UnstyledToolbar/index.tsx b/packages/component-library/src/UnstyledToolbar/index.tsx deleted file mode 100644 index 07dd48764c..0000000000 --- a/packages/component-library/src/UnstyledToolbar/index.tsx +++ /dev/null @@ -1,9 +0,0 @@ -/** - * The react-aria components aren't marked as "use client" so it's a bit - * obnoxious to use them; this file just adds a client boundary and re-exports - * the react-aria components to avoid that problem. - */ - -"use client"; - -export { Toolbar as UnstyledToolbar } from "react-aria-components"; diff --git a/packages/component-library/src/Virtualizer/index.tsx b/packages/component-library/src/Virtualizer/index.tsx new file mode 100644 index 0000000000..febe7b429a --- /dev/null +++ b/packages/component-library/src/Virtualizer/index.tsx @@ -0,0 +1,6 @@ +"use client"; + +export { + UNSTABLE_Virtualizer as Virtualizer, + UNSTABLE_ListLayout as ListLayout, +} from "react-aria-components"; diff --git a/packages/component-library/src/to-remove-tailwind/Checkbox/index.stories.tsx b/packages/component-library/src/to-remove-tailwind/Checkbox/index.stories.tsx deleted file mode 100644 index 09abe61c0a..0000000000 --- a/packages/component-library/src/to-remove-tailwind/Checkbox/index.stories.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import type { Meta, StoryObj } from "@storybook/react"; - -import { Checkbox as CheckboxComponent } from "./index.js"; - -const meta = { - component: CheckboxComponent, - argTypes: { - children: { - control: "text", - table: { - category: "Contents", - }, - }, - isDisabled: { - control: "boolean", - table: { - category: "State", - }, - }, - }, - decorators: [ - (Story) => ( -
- -
- ), - ], -} satisfies Meta; -export default meta; - -export const Checkbox = { - args: { - children: - "By clicking here you agree that this is a checkbox and it's super duper checkboxy", - isDisabled: false, - }, -} satisfies StoryObj; diff --git a/packages/component-library/src/to-remove-tailwind/Checkbox/index.tsx b/packages/component-library/src/to-remove-tailwind/Checkbox/index.tsx deleted file mode 100644 index a49cb91867..0000000000 --- a/packages/component-library/src/to-remove-tailwind/Checkbox/index.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import clsx from "clsx"; -import { - Checkbox as BaseCheckbox, - type CheckboxProps, -} from "react-aria-components"; - -export const Checkbox = ({ children, className, ...props }: CheckboxProps) => ( - - {(args) => ( - <> -
-
-
- - - -
-
-
- {typeof children === "function" ? children(args) : children} - - )} - -); diff --git a/packages/component-library/src/to-remove-tailwind/CheckboxGroup/index.stories.tsx b/packages/component-library/src/to-remove-tailwind/CheckboxGroup/index.stories.tsx deleted file mode 100644 index 75992d401a..0000000000 --- a/packages/component-library/src/to-remove-tailwind/CheckboxGroup/index.stories.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import type { Meta, StoryObj } from "@storybook/react"; - -import { - ORIENTATIONS, - CheckboxGroup as CheckboxGroupComponent, -} from "./index.js"; -import { Checkbox } from "../Checkbox/index.js"; - -const meta = { - component: CheckboxGroupComponent, - argTypes: { - label: { - control: "text", - table: { - category: "Contents", - }, - }, - description: { - control: "text", - table: { - category: "Contents", - }, - }, - isDisabled: { - control: "boolean", - table: { - category: "State", - }, - }, - orientation: { - control: "inline-radio", - options: ORIENTATIONS, - table: { - category: "Layout", - }, - }, - }, - decorators: [ - (Story) => ( -
- -
- ), - ], - render: (args) => ( - - - { - "By clicking here you agree that this is a checkbox and it's super duper checkboxy" - } - - Second - Third - - ), -} satisfies Meta; -export default meta; - -export const CheckboxGroup = { - args: { - label: "This is a checkbox group!", - description: "", - isDisabled: false, - orientation: "vertical", - }, -} satisfies StoryObj; diff --git a/packages/component-library/src/to-remove-tailwind/CheckboxGroup/index.tsx b/packages/component-library/src/to-remove-tailwind/CheckboxGroup/index.tsx deleted file mode 100644 index 28f5332774..0000000000 --- a/packages/component-library/src/to-remove-tailwind/CheckboxGroup/index.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import clsx from "clsx"; -import { - type LabelProps, - type TextProps, - type CheckboxGroupProps as BaseCheckboxGroupProps, - CheckboxGroup as BaseCheckboxGroup, - Label, - Text, -} from "react-aria-components"; - -export const ORIENTATIONS = ["vertical", "horizontal"] as const; - -type CheckboxGroupProps = BaseCheckboxGroupProps & { - label: LabelProps["children"]; - description?: TextProps["children"] | undefined; - orientation?: (typeof ORIENTATIONS)[number] | undefined; -}; - -export const CheckboxGroup = ({ - children, - className, - label, - description, - orientation = "vertical", - ...props -}: CheckboxGroupProps) => ( - - {(args) => ( - <> - -
- {typeof children === "function" ? children(args) : children} -
- {description && description !== "" && ( - - {description} - - )} - - )} -
-); diff --git a/packages/component-library/src/to-remove-tailwind/Radio/index.stories.tsx b/packages/component-library/src/to-remove-tailwind/Radio/index.stories.tsx deleted file mode 100644 index 800eea208b..0000000000 --- a/packages/component-library/src/to-remove-tailwind/Radio/index.stories.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import type { Meta, StoryObj } from "@storybook/react"; -import { RadioGroup } from "react-aria-components"; - -import { Radio as RadioComponent } from "./index.js"; - -const meta = { - component: RadioComponent, - argTypes: { - children: { - control: "text", - table: { - category: "Contents", - }, - }, - isDisabled: { - control: "boolean", - table: { - category: "State", - }, - }, - }, - decorators: [ - (Story) => ( - - - - ), - ], -} satisfies Meta; -export default meta; - -export const Radio = { - args: { - children: - "This is a radio button, check out how radioish it is and how it handles multiline labels", - isDisabled: false, - }, -} satisfies StoryObj; diff --git a/packages/component-library/src/to-remove-tailwind/Radio/index.tsx b/packages/component-library/src/to-remove-tailwind/Radio/index.tsx deleted file mode 100644 index c100f0b407..0000000000 --- a/packages/component-library/src/to-remove-tailwind/Radio/index.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import clsx from "clsx"; -import { Radio as BaseRadio, type RadioProps } from "react-aria-components"; - -export const Radio = ({ children, className, ...props }: RadioProps) => ( - - {(args) => ( - <> -
-
-
-
-
- {typeof children === "function" ? children(args) : children} - - )} - -); diff --git a/packages/component-library/src/to-remove-tailwind/RadioGroup/index.stories.tsx b/packages/component-library/src/to-remove-tailwind/RadioGroup/index.stories.tsx deleted file mode 100644 index 596ab40f1d..0000000000 --- a/packages/component-library/src/to-remove-tailwind/RadioGroup/index.stories.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import type { Meta, StoryObj } from "@storybook/react"; - -import { RadioGroup as RadioGroupComponent } from "./index.js"; -import { Radio } from "../Radio/index.js"; - -const meta = { - component: RadioGroupComponent, - argTypes: { - label: { - control: "text", - table: { - category: "Contents", - }, - }, - description: { - control: "text", - table: { - category: "Contents", - }, - }, - isDisabled: { - control: "boolean", - table: { - category: "State", - }, - }, - orientation: { - control: "inline-radio", - options: ["vertical", "horizontal"], - table: { - category: "Layout", - }, - }, - }, - decorators: [ - (Story) => ( -
- -
- ), - ], - render: (args) => ( - - - This is a radio button, check out how radioish it is and how it handles - multiline labels - - Second - Third - - ), -} satisfies Meta; -export default meta; - -export const RadioGroup = { - args: { - label: "This is a radio group!", - description: "", - isDisabled: false, - orientation: "vertical", - }, -} satisfies StoryObj; diff --git a/packages/component-library/src/to-remove-tailwind/RadioGroup/index.tsx b/packages/component-library/src/to-remove-tailwind/RadioGroup/index.tsx deleted file mode 100644 index f2f7097555..0000000000 --- a/packages/component-library/src/to-remove-tailwind/RadioGroup/index.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import clsx from "clsx"; -import { - type LabelProps, - type TextProps, - type RadioGroupProps as BaseRadioGroupProps, - RadioGroup as BaseRadioGroup, - Label, - Text, -} from "react-aria-components"; - -type CheckboxGroupProps = BaseRadioGroupProps & { - label: LabelProps["children"]; - description?: TextProps["children"] | undefined; -}; - -export const RadioGroup = ({ - children, - className, - label, - description, - ...props -}: CheckboxGroupProps) => ( - - {(args) => ( - <> - -
- {typeof children === "function" ? children(args) : children} -
- {description && description !== "" && ( - - {description} - - )} - - )} -
-); diff --git a/packages/component-library/src/unstyled/Breadcrumbs/index.tsx b/packages/component-library/src/unstyled/Breadcrumbs/index.tsx new file mode 100644 index 0000000000..995daf1cff --- /dev/null +++ b/packages/component-library/src/unstyled/Breadcrumbs/index.tsx @@ -0,0 +1,3 @@ +"use client"; + +export { Breadcrumbs, Breadcrumb } from "react-aria-components"; diff --git a/packages/component-library/src/unstyled/Button/index.tsx b/packages/component-library/src/unstyled/Button/index.tsx new file mode 100644 index 0000000000..51c91c37c9 --- /dev/null +++ b/packages/component-library/src/unstyled/Button/index.tsx @@ -0,0 +1,3 @@ +"use client"; + +export { Button } from "react-aria-components"; diff --git a/packages/component-library/src/unstyled/Dialog/index.tsx b/packages/component-library/src/unstyled/Dialog/index.tsx new file mode 100644 index 0000000000..f2fc2bcb77 --- /dev/null +++ b/packages/component-library/src/unstyled/Dialog/index.tsx @@ -0,0 +1,3 @@ +"use client"; + +export { Dialog } from "react-aria-components"; diff --git a/packages/component-library/src/unstyled/Label/index.tsx b/packages/component-library/src/unstyled/Label/index.tsx new file mode 100644 index 0000000000..673450a34c --- /dev/null +++ b/packages/component-library/src/unstyled/Label/index.tsx @@ -0,0 +1,3 @@ +"use client"; + +export { Label } from "react-aria-components"; diff --git a/packages/component-library/src/unstyled/Link/index.tsx b/packages/component-library/src/unstyled/Link/index.tsx new file mode 100644 index 0000000000..34122cdc77 --- /dev/null +++ b/packages/component-library/src/unstyled/Link/index.tsx @@ -0,0 +1,28 @@ +"use client"; + +import type { ComponentProps } from "react"; +import { Link as BaseLink } from "react-aria-components"; + +import { usePrefetch } from "../../use-prefetch.js"; + +type Props = ComponentProps & { + prefetch?: Parameters[0]["prefetch"]; +}; + +export const Link = ({ + prefetch, + ref, + onHoverStart, + onPressStart, + ...props +}: Props) => { + const prefetchProps = usePrefetch({ + href: props.href, + prefetch, + onHoverStart, + onPressStart, + ref, + }); + + return ; +}; diff --git a/packages/component-library/src/unstyled/ListBox/index.tsx b/packages/component-library/src/unstyled/ListBox/index.tsx new file mode 100644 index 0000000000..34b754eab2 --- /dev/null +++ b/packages/component-library/src/unstyled/ListBox/index.tsx @@ -0,0 +1,30 @@ +"use client"; + +import type { ComponentProps } from "react"; +import { ListBoxItem as BaseListBoxItem } from "react-aria-components"; + +import { usePrefetch } from "../../use-prefetch.js"; + +export { ListBox, ListBoxSection } from "react-aria-components"; + +type ListBoxItemProps = ComponentProps< + typeof BaseListBoxItem +> & { + prefetch?: Parameters[0]["prefetch"]; +}; + +export const ListBoxItem = ({ + ref, + prefetch, + onHoverStart, + ...props +}: ListBoxItemProps) => { + const prefetchProps = usePrefetch({ + href: props.href, + prefetch, + onHoverStart, + ref, + }); + + return ; +}; diff --git a/packages/component-library/src/unstyled/Meter/index.tsx b/packages/component-library/src/unstyled/Meter/index.tsx new file mode 100644 index 0000000000..2f53722885 --- /dev/null +++ b/packages/component-library/src/unstyled/Meter/index.tsx @@ -0,0 +1,3 @@ +"use client"; + +export { Meter } from "react-aria-components"; diff --git a/packages/component-library/src/unstyled/Popover/index.tsx b/packages/component-library/src/unstyled/Popover/index.tsx new file mode 100644 index 0000000000..d0b77500ae --- /dev/null +++ b/packages/component-library/src/unstyled/Popover/index.tsx @@ -0,0 +1,3 @@ +"use client"; + +export { Popover } from "react-aria-components"; diff --git a/packages/component-library/src/unstyled/Select/index.tsx b/packages/component-library/src/unstyled/Select/index.tsx new file mode 100644 index 0000000000..02db05a82b --- /dev/null +++ b/packages/component-library/src/unstyled/Select/index.tsx @@ -0,0 +1,3 @@ +"use client"; + +export { Select } from "react-aria-components"; diff --git a/packages/component-library/src/unstyled/Table/index.tsx b/packages/component-library/src/unstyled/Table/index.tsx new file mode 100644 index 0000000000..2b339ca5bd --- /dev/null +++ b/packages/component-library/src/unstyled/Table/index.tsx @@ -0,0 +1,35 @@ +"use client"; + +import type { ComponentProps } from "react"; +import { Row as BaseRow } from "react-aria-components"; + +import { usePrefetch } from "../../use-prefetch.js"; + +export { + type SortDescriptor, + Cell, + Column, + Table, + TableBody, + TableHeader, +} from "react-aria-components"; + +type RowProps = ComponentProps> & { + prefetch?: Parameters[0]["prefetch"]; +}; + +export const Row = ({ + ref, + prefetch, + onHoverStart, + ...props +}: RowProps) => { + const prefetchProps = usePrefetch({ + href: props.href, + prefetch, + onHoverStart, + ref: ref, + }); + + return ; +}; diff --git a/packages/component-library/src/unstyled/Tabs/index.tsx b/packages/component-library/src/unstyled/Tabs/index.tsx new file mode 100644 index 0000000000..edc20143f2 --- /dev/null +++ b/packages/component-library/src/unstyled/Tabs/index.tsx @@ -0,0 +1,25 @@ +"use client"; + +import type { ComponentProps } from "react"; +import { Tab as BaseTab } from "react-aria-components"; + +import { usePrefetch } from "../../use-prefetch.js"; + +export { TabList, TabPanel, Tabs } from "react-aria-components"; + +type TabProps = ComponentProps & { + prefetch?: Parameters[0]["prefetch"]; +}; + +export const Tab = ({ ref, prefetch, onHoverStart, ...props }: TabProps) => { + const prefetchProps = usePrefetch({ + href: props.href, + prefetch, + onHoverStart, + // TODO Figure this out... + // @ts-expect-error It doesn't look like refs are getting passed through correctly... + ref, + }); + + return ; +}; diff --git a/packages/component-library/src/unstyled/TextField/index.tsx b/packages/component-library/src/unstyled/TextField/index.tsx new file mode 100644 index 0000000000..761dc95210 --- /dev/null +++ b/packages/component-library/src/unstyled/TextField/index.tsx @@ -0,0 +1,3 @@ +"use client"; + +export { TextField, Input } from "react-aria-components"; diff --git a/packages/component-library/src/unstyled/Toolbar/index.tsx b/packages/component-library/src/unstyled/Toolbar/index.tsx new file mode 100644 index 0000000000..080571ac1e --- /dev/null +++ b/packages/component-library/src/unstyled/Toolbar/index.tsx @@ -0,0 +1,3 @@ +"use client"; + +export { Toolbar } from "react-aria-components"; diff --git a/packages/component-library/src/use-prefetch.ts b/packages/component-library/src/use-prefetch.ts new file mode 100644 index 0000000000..c234d95cac --- /dev/null +++ b/packages/component-library/src/use-prefetch.ts @@ -0,0 +1,123 @@ +/** + * Currently, react-aria does not use the nextjs `Link` component, and instead + * just uses [the + * RouterProvider](https://react-spectrum.adobe.com/react-aria/routing.html#routerprovider) + * to handle client-side routing. + * + * In most cases, this is fine. However, one major downside is that this breaks + * link preloading. There is currently no way to re-enable link preloading + * that's built into react-aria, see [this + * ticket](https://github.com/adobe/react-spectrum/issues/5476). + * + * This hook simply extracts the preload behavior from [the nextjs Link + * component](https://github.com/vercel/next.js/blob/canary/packages/next/src/client/link.tsx) + * so that we can re-enable link preload on various react-aria linkable + * elements. + */ + +"use client"; + +import type { UrlObject } from "node:url"; + +import { useRerender } from "@react-hookz/web"; +import { PrefetchKind } from "next/dist/client/components/router-reducer/router-reducer-types.js"; +import { useIntersection } from "next/dist/client/use-intersection.js"; +import { useMergedRef } from "next/dist/client/use-merged-ref.js"; +import { AppRouterContext } from "next/dist/shared/lib/app-router-context.shared-runtime.js"; +import { formatUrl } from "next/dist/shared/lib/router/utils/format-url.js"; +import { isLocalURL } from "next/dist/shared/lib/router/utils/is-local-url.js"; +import { type Ref, useCallback, useMemo, useRef, useEffect, use } from "react"; +import type { HoverEvent, PressEvent } from "react-aria"; + +type Options = { + href?: UrlObject | string | undefined; + prefetch?: boolean | undefined; + onHoverStart?: ((event: HoverEvent) => void) | undefined; + onPressStart?: ((event: PressEvent) => void) | undefined; + ref?: Ref | undefined; +}; + +export const usePrefetch = ({ + href, + prefetch, + onHoverStart, + onPressStart, + ref, +}: Options) => { + const router = use(AppRouterContext); + const rerender = useRerender(); + + const resolvedHref = useMemo( + () => + href === undefined || typeof href === "string" ? href : formatUrl(href), + [href], + ); + + const previousHref = useRef(resolvedHref); + + const [setIntersectionRef, isVisible, resetVisible] = useIntersection({ + rootMargin: "200px", + }); + + const setIntersectionWithResetRef = useCallback( + (el: T) => { + // Before the link getting observed, check if visible state need to be reset + if (previousHref.current !== resolvedHref) { + resetVisible(); + previousHref.current = resolvedHref; + } + + setIntersectionRef(el); + rerender(); + }, + [resolvedHref, resetVisible, setIntersectionRef, rerender], + ); + + // eslint-disable-next-line unicorn/no-null + const setRef = useMergedRef(setIntersectionWithResetRef, ref ?? null); + + const doPrefetch = useCallback( + (allowInDev?: boolean) => { + if ( + resolvedHref === undefined || + prefetch === false || + // eslint-disable-next-line n/no-process-env + (!allowInDev && process.env.NODE_ENV !== "production") || + !isLocalURL(resolvedHref) + ) { + return; + } + + router?.prefetch(resolvedHref, { + kind: prefetch === undefined ? PrefetchKind.AUTO : PrefetchKind.FULL, + }); + }, + [prefetch, router, resolvedHref], + ); + + useEffect(() => { + if (isVisible) { + doPrefetch(); + } + }, [isVisible, doPrefetch]); + + return { + ref: ref === undefined ? setIntersectionWithResetRef : setRef, + + onHoverStart: useCallback( + (e: HoverEvent) => { + onHoverStart?.(e); + doPrefetch(); + }, + [doPrefetch, onHoverStart], + ), + + onPressStart: useCallback( + (e: PressEvent) => { + onPressStart?.(e); + doPrefetch(true); + }, + [doPrefetch, onPressStart], + ), + }; +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3af3ed90d6..f7e96ae083 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -115,8 +115,8 @@ catalogs: specifier: 11.14.4 version: 11.14.4 next: - specifier: 15.1.0 - version: 15.1.0 + specifier: 15.1.2 + version: 15.1.2 next-themes: specifier: 0.3.0 version: 0.3.0 @@ -228,7 +228,7 @@ importers: version: 2.1.4(react@19.0.0) '@next/third-parties': specifier: ^14.2.4 - version: 14.2.4(next@15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0) + version: 14.2.4(next@15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0) '@pythnetwork/client': specifier: ^2.22.0 version: 2.22.0(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -258,7 +258,7 @@ importers: version: 11.3.8(@emotion/is-prop-valid@1.2.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 'catalog:' - version: 15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) + version: 15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -449,22 +449,19 @@ importers: version: 11.14.4(@emotion/is-prop-valid@1.2.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 'catalog:' - version: 15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) + version: 15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) next-themes: specifier: 'catalog:' version: 0.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) nuqs: specifier: 'catalog:' - version: 2.1.2(next@15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0) + version: 2.1.2(next@15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0) react: specifier: 'catalog:' version: 19.0.0 react-aria: specifier: 'catalog:' version: 3.36.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-aria-components: - specifier: 'catalog:' - version: 1.5.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-dom: specifier: 'catalog:' version: 19.0.0(react@19.0.0) @@ -673,7 +670,7 @@ importers: version: 2.1.4(react@19.0.0) '@next/third-parties': specifier: ^14.2.5 - version: 14.2.6(next@15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0) + version: 14.2.6(next@15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0) '@pythnetwork/hermes-client': specifier: workspace:* version: link:../hermes/client/js @@ -724,7 +721,7 @@ importers: version: 0.2.0 next: specifier: 'catalog:' - version: 15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) + version: 15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) pino: specifier: ^9.3.2 version: 9.3.2 @@ -1405,13 +1402,13 @@ importers: version: link:../../../../pythnet/message_buffer next: specifier: 'catalog:' - version: 15.1.0(@babel/core@7.24.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) + version: 15.1.2(@babel/core@7.24.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) next-seo: specifier: ^5.15.0 - version: 5.15.0(next@15.1.0(@babel/core@7.24.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 5.15.0(next@15.1.2(@babel/core@7.24.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) nuqs: specifier: 'catalog:' - version: 2.1.2(next@15.1.0(@babel/core@7.24.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0) + version: 2.1.2(next@15.1.2(@babel/core@7.24.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0) react: specifier: 'catalog:' version: 19.0.0 @@ -1665,7 +1662,7 @@ importers: version: 8.3.5(react-dom@18.3.1(react@18.3.1))(react@19.0.0)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@6.0.4)) '@storybook/nextjs': specifier: 'catalog:' - version: 8.3.5(esbuild@0.22.0)(next@15.1.0(@babel/core@7.25.8)(react-dom@18.3.1(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react-dom@18.3.1(react@18.3.1))(react@19.0.0)(sass@1.80.7)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@6.0.4))(type-fest@4.26.1)(typescript@5.6.3)(webpack-hot-middleware@2.26.1)(webpack@5.91.0(esbuild@0.22.0)) + version: 8.3.5(esbuild@0.22.0)(next@15.1.2(@babel/core@7.25.8)(react-dom@18.3.1(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react-dom@18.3.1(react@18.3.1))(react@19.0.0)(sass@1.80.7)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@6.0.4))(type-fest@4.26.1)(typescript@5.6.3)(webpack-hot-middleware@2.26.1)(webpack@5.91.0(esbuild@0.22.0)) '@storybook/react': specifier: 'catalog:' version: 8.3.5(@storybook/test@8.3.5(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@19.0.0)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.3) @@ -1687,6 +1684,9 @@ importers: jest: specifier: 'catalog:' version: 29.7.0(@types/node@22.8.2)(ts-node@10.9.2(@types/node@22.8.2)(typescript@5.6.3)) + next: + specifier: 'catalog:' + version: 15.1.2(@babel/core@7.25.8)(react-dom@18.3.1(react@19.0.0))(react@19.0.0)(sass@1.80.7) postcss: specifier: 'catalog:' version: 8.4.47 @@ -1746,7 +1746,7 @@ importers: version: 29.7.0(@types/node@22.8.2)(ts-node@10.9.2(@types/node@22.8.2)(typescript@5.6.3)) next: specifier: 'catalog:' - version: 15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) + version: 15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) prettier: specifier: 'catalog:' version: 3.3.3 @@ -1803,7 +1803,7 @@ importers: version: 4.9.1 '@next/third-parties': specifier: 'catalog:' - version: 15.0.2(next@15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0) + version: 15.0.2(next@15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0) '@pythnetwork/app-logger': specifier: workspace:* version: link:../app-logger @@ -1846,7 +1846,7 @@ importers: version: 29.7.0(@types/node@22.8.2)(ts-node@10.9.2(@types/node@22.8.2)(typescript@5.6.3)) next: specifier: 'catalog:' - version: 15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) + version: 15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) prettier: specifier: 'catalog:' version: 3.3.3 @@ -6599,8 +6599,8 @@ packages: '@next/env@14.2.15': resolution: {integrity: sha512-S1qaj25Wru2dUpcIZMjxeMVSwkt8BK4dmWHHiBuRstcIyOsMapqT4A4jSB6onvqeygkSSmOkyny9VVx8JIGamQ==} - '@next/env@15.1.0': - resolution: {integrity: sha512-UcCO481cROsqJuszPPXJnb7GGuLq617ve4xuAyyNG4VSSocJNtMU5Fsx+Lp6mlN8c7W58aZLc5y6D/2xNmaK+w==} + '@next/env@15.1.2': + resolution: {integrity: sha512-Hm3jIGsoUl6RLB1vzY+dZeqb+/kWPZ+h34yiWxW0dV87l8Im/eMOwpOA+a0L78U0HM04syEjXuRlCozqpwuojQ==} '@next/eslint-plugin-next@14.2.3': resolution: {integrity: sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw==} @@ -6611,8 +6611,8 @@ packages: cpu: [arm64] os: [darwin] - '@next/swc-darwin-arm64@15.1.0': - resolution: {integrity: sha512-ZU8d7xxpX14uIaFC3nsr4L++5ZS/AkWDm1PzPO6gD9xWhFkOj2hzSbSIxoncsnlJXB1CbLOfGVN4Zk9tg83PUw==} + '@next/swc-darwin-arm64@15.1.2': + resolution: {integrity: sha512-b9TN7q+j5/7+rGLhFAVZiKJGIASuo8tWvInGfAd8wsULjB1uNGRCj1z1WZwwPWzVQbIKWFYqc+9L7W09qwt52w==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -6623,8 +6623,8 @@ packages: cpu: [x64] os: [darwin] - '@next/swc-darwin-x64@15.1.0': - resolution: {integrity: sha512-DQ3RiUoW2XC9FcSM4ffpfndq1EsLV0fj0/UY33i7eklW5akPUCo6OX2qkcLXZ3jyPdo4sf2flwAED3AAq3Om2Q==} + '@next/swc-darwin-x64@15.1.2': + resolution: {integrity: sha512-caR62jNDUCU+qobStO6YJ05p9E+LR0EoXh1EEmyU69cYydsAy7drMcOlUlRtQihM6K6QfvNwJuLhsHcCzNpqtA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -6635,8 +6635,8 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-gnu@15.1.0': - resolution: {integrity: sha512-M+vhTovRS2F//LMx9KtxbkWk627l5Q7AqXWWWrfIzNIaUFiz2/NkOFkxCFyNyGACi5YbA8aekzCLtbDyfF/v5Q==} + '@next/swc-linux-arm64-gnu@15.1.2': + resolution: {integrity: sha512-fHHXBusURjBmN6VBUtu6/5s7cCeEkuGAb/ZZiGHBLVBXMBy4D5QpM8P33Or8JD1nlOjm/ZT9sEE5HouQ0F+hUA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -6647,8 +6647,8 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.1.0': - resolution: {integrity: sha512-Qn6vOuwaTCx3pNwygpSGtdIu0TfS1KiaYLYXLH5zq1scoTXdwYfdZtwvJTpB1WrLgiQE2Ne2kt8MZok3HlFqmg==} + '@next/swc-linux-arm64-musl@15.1.2': + resolution: {integrity: sha512-9CF1Pnivij7+M3G74lxr+e9h6o2YNIe7QtExWq1KUK4hsOLTBv6FJikEwCaC3NeYTflzrm69E5UfwEAbV2U9/g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -6659,8 +6659,8 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-gnu@15.1.0': - resolution: {integrity: sha512-yeNh9ofMqzOZ5yTOk+2rwncBzucc6a1lyqtg8xZv0rH5znyjxHOWsoUtSq4cUTeeBIiXXX51QOOe+VoCjdXJRw==} + '@next/swc-linux-x64-gnu@15.1.2': + resolution: {integrity: sha512-tINV7WmcTUf4oM/eN3Yuu/f8jQ5C6AkueZPKeALs/qfdfX57eNv4Ij7rt0SA6iZ8+fMobVfcFVv664Op0caCCg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -6671,8 +6671,8 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.1.0': - resolution: {integrity: sha512-t9IfNkHQs/uKgPoyEtU912MG6a1j7Had37cSUyLTKx9MnUpjj+ZDKw9OyqTI9OwIIv0wmkr1pkZy+3T5pxhJPg==} + '@next/swc-linux-x64-musl@15.1.2': + resolution: {integrity: sha512-jf2IseC4WRsGkzeUw/cK3wci9pxR53GlLAt30+y+B+2qAQxMw6WAC3QrANIKxkcoPU3JFh/10uFfmoMDF9JXKg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -6683,8 +6683,8 @@ packages: cpu: [arm64] os: [win32] - '@next/swc-win32-arm64-msvc@15.1.0': - resolution: {integrity: sha512-WEAoHyG14t5sTavZa1c6BnOIEukll9iqFRTavqRVPfYmfegOAd5MaZfXgOGG6kGo1RduyGdTHD4+YZQSdsNZXg==} + '@next/swc-win32-arm64-msvc@15.1.2': + resolution: {integrity: sha512-wvg7MlfnaociP7k8lxLX4s2iBJm4BrNiNFhVUY+Yur5yhAJHfkS8qPPeDEUH8rQiY0PX3u/P7Q/wcg6Mv6GSAA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -6701,8 +6701,8 @@ packages: cpu: [x64] os: [win32] - '@next/swc-win32-x64-msvc@15.1.0': - resolution: {integrity: sha512-J1YdKuJv9xcixzXR24Dv+4SaDKc2jj31IVUEMdO5xJivMTXuE6MAdIi4qPjSymHuFG8O5wbfWKnhJUcHHpj5CA==} + '@next/swc-win32-x64-msvc@15.1.2': + resolution: {integrity: sha512-D3cNA8NoT3aWISWmo7HF5Eyko/0OdOO+VagkoJuiTk7pyX3P/b+n8XA/MYvyR+xSVcbKn68B1rY9fgqjNISqzQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -18142,8 +18142,8 @@ packages: sass: optional: true - next@15.1.0: - resolution: {integrity: sha512-QKhzt6Y8rgLNlj30izdMbxAwjHMFANnLwDwZ+WQh5sMhyt4lEBqDK9QpvWHtIM4rINKPoJ8aiRZKg5ULSybVHw==} + next@15.1.2: + resolution: {integrity: sha512-nLJDV7peNy+0oHlmY2JZjzMfJ8Aj0/dd3jCwSZS8ZiO5nkQfcZRqDrRN3U5rJtqVTQneIOGZzb6LCNrk7trMCQ==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -31010,7 +31010,7 @@ snapshots: '@internationalized/date@3.5.6': dependencies: - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 '@internationalized/date@3.6.0': dependencies: @@ -31018,25 +31018,25 @@ snapshots: '@internationalized/message@3.1.5': dependencies: - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 intl-messageformat: 10.5.14 '@internationalized/message@3.1.6': dependencies: - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 intl-messageformat: 10.5.14 '@internationalized/number@3.5.4': dependencies: - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 '@internationalized/number@3.6.0': dependencies: - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 '@internationalized/string@3.2.4': dependencies: - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 '@internationalized/string@3.2.5': dependencies: @@ -32859,7 +32859,7 @@ snapshots: '@next/env@14.2.15': {} - '@next/env@15.1.0': {} + '@next/env@15.1.2': {} '@next/eslint-plugin-next@14.2.3': dependencies: @@ -32868,43 +32868,43 @@ snapshots: '@next/swc-darwin-arm64@14.2.15': optional: true - '@next/swc-darwin-arm64@15.1.0': + '@next/swc-darwin-arm64@15.1.2': optional: true '@next/swc-darwin-x64@14.2.15': optional: true - '@next/swc-darwin-x64@15.1.0': + '@next/swc-darwin-x64@15.1.2': optional: true '@next/swc-linux-arm64-gnu@14.2.15': optional: true - '@next/swc-linux-arm64-gnu@15.1.0': + '@next/swc-linux-arm64-gnu@15.1.2': optional: true '@next/swc-linux-arm64-musl@14.2.15': optional: true - '@next/swc-linux-arm64-musl@15.1.0': + '@next/swc-linux-arm64-musl@15.1.2': optional: true '@next/swc-linux-x64-gnu@14.2.15': optional: true - '@next/swc-linux-x64-gnu@15.1.0': + '@next/swc-linux-x64-gnu@15.1.2': optional: true '@next/swc-linux-x64-musl@14.2.15': optional: true - '@next/swc-linux-x64-musl@15.1.0': + '@next/swc-linux-x64-musl@15.1.2': optional: true '@next/swc-win32-arm64-msvc@14.2.15': optional: true - '@next/swc-win32-arm64-msvc@15.1.0': + '@next/swc-win32-arm64-msvc@15.1.2': optional: true '@next/swc-win32-ia32-msvc@14.2.15': @@ -32913,24 +32913,24 @@ snapshots: '@next/swc-win32-x64-msvc@14.2.15': optional: true - '@next/swc-win32-x64-msvc@15.1.0': + '@next/swc-win32-x64-msvc@15.1.2': optional: true - '@next/third-parties@14.2.4(next@15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0)': + '@next/third-parties@14.2.4(next@15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0)': dependencies: - next: 15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) + next: 15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) react: 19.0.0 third-party-capital: 1.0.20 - '@next/third-parties@14.2.6(next@15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0)': + '@next/third-parties@14.2.6(next@15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0)': dependencies: - next: 15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) + next: 15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) react: 19.0.0 third-party-capital: 1.0.20 - '@next/third-parties@15.0.2(next@15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0)': + '@next/third-parties@15.0.2(next@15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0)': dependencies: - next: 15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) + next: 15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) react: 19.0.0 third-party-capital: 1.0.20 @@ -34355,7 +34355,7 @@ snapshots: '@react-aria/utils': 3.26.0(react@19.0.0) '@react-stately/form': 3.1.0(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-aria/grid@3.11.0(react-dom@18.3.1(react@18.3.1))(react@19.0.0)': @@ -34372,7 +34372,7 @@ snapshots: '@react-types/checkbox': 3.9.0(react@19.0.0) '@react-types/grid': 3.2.10(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 react-dom: 18.3.1(react@18.3.1) @@ -34390,7 +34390,7 @@ snapshots: '@react-types/checkbox': 3.9.0(react@19.0.0) '@react-types/grid': 3.2.10(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -34766,7 +34766,7 @@ snapshots: '@react-aria/utils': 3.26.0(react@19.0.0) '@react-types/button': 3.10.1(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 react-dom: 18.3.1(react@18.3.1) @@ -34777,13 +34777,13 @@ snapshots: '@react-aria/utils': 3.26.0(react@19.0.0) '@react-types/button': 3.10.1(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) '@react-aria/ssr@3.9.6(react@19.0.0)': dependencies: - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-aria/ssr@3.9.7(react@19.0.0)': @@ -34929,7 +34929,7 @@ snapshots: '@react-stately/toggle': 3.8.0(react@19.0.0) '@react-types/checkbox': 3.9.0(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-aria/toolbar@3.0.0-beta.11(react@19.0.0)': @@ -35471,7 +35471,7 @@ snapshots: '@react-stately/utils': 3.10.5(react@19.0.0) '@react-types/calendar': 3.5.0(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/checkbox@3.6.10(react@19.0.0)': @@ -35480,13 +35480,13 @@ snapshots: '@react-stately/utils': 3.10.5(react@19.0.0) '@react-types/checkbox': 3.9.0(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/collections@3.12.0(react@19.0.0)': dependencies: '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/color@3.8.1(react@19.0.0)': @@ -35513,13 +35513,13 @@ snapshots: '@react-stately/utils': 3.10.5(react@19.0.0) '@react-types/combobox': 3.13.1(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/data@3.12.0(react@19.0.0)': dependencies: '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/datepicker@3.11.0(react@19.0.0)': @@ -35531,7 +35531,7 @@ snapshots: '@react-stately/utils': 3.10.5(react@19.0.0) '@react-types/datepicker': 3.9.0(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/disclosure@3.0.0(react@19.0.0)': @@ -35545,17 +35545,17 @@ snapshots: dependencies: '@react-stately/selection': 3.18.0(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/flags@3.0.5': dependencies: - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 '@react-stately/form@3.1.0(react@19.0.0)': dependencies: '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/grid@3.10.0(react@19.0.0)': @@ -35564,7 +35564,7 @@ snapshots: '@react-stately/selection': 3.18.0(react@19.0.0) '@react-types/grid': 3.2.10(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/layout@4.1.0(react@19.0.0)': @@ -35584,7 +35584,7 @@ snapshots: '@react-stately/selection': 3.18.0(react@19.0.0) '@react-stately/utils': 3.10.5(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/menu@3.9.0(react@19.0.0)': @@ -35601,14 +35601,14 @@ snapshots: '@react-stately/form': 3.1.0(react@19.0.0) '@react-stately/utils': 3.10.5(react@19.0.0) '@react-types/numberfield': 3.8.7(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/overlays@3.6.12(react@19.0.0)': dependencies: '@react-stately/utils': 3.10.5(react@19.0.0) '@react-types/overlays': 3.8.11(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/radio@3.10.9(react@19.0.0)': @@ -35617,14 +35617,14 @@ snapshots: '@react-stately/utils': 3.10.5(react@19.0.0) '@react-types/radio': 3.8.5(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/searchfield@3.5.8(react@19.0.0)': dependencies: '@react-stately/utils': 3.10.5(react@19.0.0) '@react-types/searchfield': 3.5.10(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/select@3.6.9(react@19.0.0)': @@ -35634,7 +35634,7 @@ snapshots: '@react-stately/overlays': 3.6.12(react@19.0.0) '@react-types/select': 3.9.8(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/selection@3.18.0(react@19.0.0)': @@ -35650,7 +35650,7 @@ snapshots: '@react-stately/utils': 3.10.5(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) '@react-types/slider': 3.7.7(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/table@3.13.0(react@19.0.0)': @@ -35671,7 +35671,7 @@ snapshots: '@react-stately/list': 3.11.1(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) '@react-types/tabs': 3.3.11(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/toast@3.0.0-beta.6(react@19.0.0)': @@ -35685,14 +35685,14 @@ snapshots: '@react-stately/utils': 3.10.5(react@19.0.0) '@react-types/checkbox': 3.9.0(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/tooltip@3.5.0(react@19.0.0)': dependencies: '@react-stately/overlays': 3.6.12(react@19.0.0) '@react-types/tooltip': 3.4.13(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/tree@3.8.6(react@19.0.0)': @@ -35701,12 +35701,12 @@ snapshots: '@react-stately/selection': 3.18.0(react@19.0.0) '@react-stately/utils': 3.10.5(react@19.0.0) '@react-types/shared': 3.26.0(react@19.0.0) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/utils@3.10.4(react@19.0.0)': dependencies: - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 react: 19.0.0 '@react-stately/utils@3.10.5(react@19.0.0)': @@ -37699,7 +37699,7 @@ snapshots: dependencies: storybook: 8.3.5(bufferutil@4.0.8)(utf-8-validate@6.0.4) - '@storybook/nextjs@8.3.5(esbuild@0.22.0)(next@15.1.0(@babel/core@7.25.8)(react-dom@18.3.1(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react-dom@18.3.1(react@18.3.1))(react@19.0.0)(sass@1.80.7)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@6.0.4))(type-fest@4.26.1)(typescript@5.6.3)(webpack-hot-middleware@2.26.1)(webpack@5.91.0(esbuild@0.22.0))': + '@storybook/nextjs@8.3.5(esbuild@0.22.0)(next@15.1.2(@babel/core@7.25.8)(react-dom@18.3.1(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react-dom@18.3.1(react@18.3.1))(react@19.0.0)(sass@1.80.7)(storybook@8.3.5(bufferutil@4.0.8)(utf-8-validate@6.0.4))(type-fest@4.26.1)(typescript@5.6.3)(webpack-hot-middleware@2.26.1)(webpack@5.91.0(esbuild@0.22.0))': dependencies: '@babel/core': 7.25.8 '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.8) @@ -37727,7 +37727,7 @@ snapshots: fs-extra: 11.2.0 image-size: 1.1.1 loader-utils: 3.2.1 - next: 15.1.0(@babel/core@7.25.8)(react-dom@18.3.1(react@19.0.0))(react@19.0.0)(sass@1.80.7) + next: 15.1.2(@babel/core@7.25.8)(react-dom@18.3.1(react@19.0.0))(react@19.0.0)(sass@1.80.7) node-polyfill-webpack-plugin: 2.0.1(webpack@5.91.0(esbuild@0.22.0)) pnp-webpack-plugin: 1.7.0(typescript@5.6.3) postcss: 8.4.47 @@ -53494,9 +53494,9 @@ snapshots: dependencies: ansi-regex: 2.1.1 - next-seo@5.15.0(next@15.1.0(@babel/core@7.24.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + next-seo@5.15.0(next@15.1.2(@babel/core@7.24.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - next: 15.1.0(@babel/core@7.24.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) + next: 15.1.2(@babel/core@7.24.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -53533,9 +53533,9 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@15.1.0(@babel/core@7.24.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7): + next@15.1.2(@babel/core@7.24.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7): dependencies: - '@next/env': 15.1.0 + '@next/env': 15.1.2 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 @@ -53545,23 +53545,23 @@ snapshots: react-dom: 19.0.0(react@19.0.0) styled-jsx: 5.1.6(@babel/core@7.24.0)(react@19.0.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.1.0 - '@next/swc-darwin-x64': 15.1.0 - '@next/swc-linux-arm64-gnu': 15.1.0 - '@next/swc-linux-arm64-musl': 15.1.0 - '@next/swc-linux-x64-gnu': 15.1.0 - '@next/swc-linux-x64-musl': 15.1.0 - '@next/swc-win32-arm64-msvc': 15.1.0 - '@next/swc-win32-x64-msvc': 15.1.0 + '@next/swc-darwin-arm64': 15.1.2 + '@next/swc-darwin-x64': 15.1.2 + '@next/swc-linux-arm64-gnu': 15.1.2 + '@next/swc-linux-arm64-musl': 15.1.2 + '@next/swc-linux-x64-gnu': 15.1.2 + '@next/swc-linux-x64-musl': 15.1.2 + '@next/swc-win32-arm64-msvc': 15.1.2 + '@next/swc-win32-x64-msvc': 15.1.2 sass: 1.80.7 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.1.0(@babel/core@7.25.8)(react-dom@18.3.1(react@19.0.0))(react@19.0.0)(sass@1.80.7): + next@15.1.2(@babel/core@7.25.8)(react-dom@18.3.1(react@19.0.0))(react@19.0.0)(sass@1.80.7): dependencies: - '@next/env': 15.1.0 + '@next/env': 15.1.2 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 @@ -53571,23 +53571,23 @@ snapshots: react-dom: 18.3.1(react@18.3.1) styled-jsx: 5.1.6(@babel/core@7.25.8)(react@19.0.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.1.0 - '@next/swc-darwin-x64': 15.1.0 - '@next/swc-linux-arm64-gnu': 15.1.0 - '@next/swc-linux-arm64-musl': 15.1.0 - '@next/swc-linux-x64-gnu': 15.1.0 - '@next/swc-linux-x64-musl': 15.1.0 - '@next/swc-win32-arm64-msvc': 15.1.0 - '@next/swc-win32-x64-msvc': 15.1.0 + '@next/swc-darwin-arm64': 15.1.2 + '@next/swc-darwin-x64': 15.1.2 + '@next/swc-linux-arm64-gnu': 15.1.2 + '@next/swc-linux-arm64-musl': 15.1.2 + '@next/swc-linux-x64-gnu': 15.1.2 + '@next/swc-linux-x64-musl': 15.1.2 + '@next/swc-win32-arm64-msvc': 15.1.2 + '@next/swc-win32-x64-msvc': 15.1.2 sass: 1.80.7 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7): + next@15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7): dependencies: - '@next/env': 15.1.0 + '@next/env': 15.1.2 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 @@ -53597,14 +53597,14 @@ snapshots: react-dom: 19.0.0(react@19.0.0) styled-jsx: 5.1.6(@babel/core@7.25.8)(react@19.0.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.1.0 - '@next/swc-darwin-x64': 15.1.0 - '@next/swc-linux-arm64-gnu': 15.1.0 - '@next/swc-linux-arm64-musl': 15.1.0 - '@next/swc-linux-x64-gnu': 15.1.0 - '@next/swc-linux-x64-musl': 15.1.0 - '@next/swc-win32-arm64-msvc': 15.1.0 - '@next/swc-win32-x64-msvc': 15.1.0 + '@next/swc-darwin-arm64': 15.1.2 + '@next/swc-darwin-x64': 15.1.2 + '@next/swc-linux-arm64-gnu': 15.1.2 + '@next/swc-linux-arm64-musl': 15.1.2 + '@next/swc-linux-x64-gnu': 15.1.2 + '@next/swc-linux-x64-musl': 15.1.2 + '@next/swc-win32-arm64-msvc': 15.1.2 + '@next/swc-win32-x64-msvc': 15.1.2 sass: 1.80.7 sharp: 0.33.5 transitivePeerDependencies: @@ -53874,19 +53874,19 @@ snapshots: bn.js: 4.11.6 strip-hex-prefix: 1.0.0 - nuqs@2.1.2(next@15.1.0(@babel/core@7.24.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0): + nuqs@2.1.2(next@15.1.2(@babel/core@7.24.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0): dependencies: mitt: 3.0.1 react: 19.0.0 optionalDependencies: - next: 15.1.0(@babel/core@7.24.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) + next: 15.1.2(@babel/core@7.24.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) - nuqs@2.1.2(next@15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0): + nuqs@2.1.2(next@15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7))(react@19.0.0): dependencies: mitt: 3.0.1 react: 19.0.0 optionalDependencies: - next: 15.1.0(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) + next: 15.1.2(@babel/core@7.25.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.80.7) nwsapi@2.2.10: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2a5964356b..93980a6dfc 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -71,7 +71,7 @@ catalog: modern-normalize: 3.0.1 motion: 11.14.4 next-themes: 0.3.0 - next: 15.1.0 + next: 15.1.2 nuqs: 2.1.2 pino: 9.5.0 postcss-loader: 8.1.1