diff --git a/.changeset/great-games-prove.md b/.changeset/great-games-prove.md new file mode 100644 index 000000000..a69b7b7eb --- /dev/null +++ b/.changeset/great-games-prove.md @@ -0,0 +1,5 @@ +--- +'hostd': minor +--- + +The revenue graph is now a bar stack, much more clearly showing earned vs potential revenue. diff --git a/.changeset/healthy-laws-lick.md b/.changeset/healthy-laws-lick.md new file mode 100644 index 000000000..9c0ba762e --- /dev/null +++ b/.changeset/healthy-laws-lick.md @@ -0,0 +1,5 @@ +--- +'hostd': minor +--- + +The metrics graphs now show a y-axis. diff --git a/.changeset/ninety-pots-deny.md b/.changeset/ninety-pots-deny.md new file mode 100644 index 000000000..55598cdb6 --- /dev/null +++ b/.changeset/ninety-pots-deny.md @@ -0,0 +1,5 @@ +--- +'@siafoundation/design-system': minor +--- + +The ChartXY API has been refactored. diff --git a/apps/hostd/contexts/metrics/index.tsx b/apps/hostd/contexts/metrics/index.tsx index e3776d2ed..5cbc16829 100644 --- a/apps/hostd/contexts/metrics/index.tsx +++ b/apps/hostd/contexts/metrics/index.tsx @@ -9,7 +9,7 @@ import { minutesInMilliseconds, ValueScFiat, } from '@siafoundation/design-system' -import { humanBytes, humanNumber } from '@siafoundation/sia-js' +import { humanBytes, humanNumber, humanSiacoin } from '@siafoundation/sia-js' import { useCallback, useMemo } from 'react' import { chartConfigs } from '../../config/charts' import { useMetricsPeriod } from '@siafoundation/react-hostd' @@ -253,10 +253,16 @@ function useMetricsMain() { formatComponent: function ({ value }) { return }, + formatTickY: (v) => + humanSiacoin(v, { + fixed: 0, + dynamicUnits: true, + }), formatTimestamp, disableAnimations, + chartType: 'barstack', + stackOffset: 'diverging', }, - chartType: 'line', isLoading: metricsPeriod.isValidating, } }, [metricsPeriod, formatTimestamp]) @@ -289,9 +295,16 @@ function useMetricsMain() { return }, formatTimestamp, + formatTickY: (v) => + humanSiacoin(v, { + fixed: 0, + dynamicUnits: true, + }), disableAnimations, + chartType: 'area', + curveType: 'linear', + stackOffset: 'none', }, - chartType: 'area', isLoading: metricsPeriod.isValidating, } }, [metricsPeriod, formatTimestamp]) @@ -354,9 +367,16 @@ function useMetricsMain() { return }, formatTimestamp, + formatTickY: (v) => + humanSiacoin(v, { + fixed: 0, + dynamicUnits: true, + }), disableAnimations, + chartType: 'line', + curveType: 'linear', + stackOffset: 'none', }, - chartType: 'line', isLoading: metricsPeriod.isValidating, } }, [metricsPeriod, formatTimestamp]) @@ -391,9 +411,12 @@ function useMetricsMain() { }, format: (v) => `${v} contracts`, formatTimestamp, + formatTickY: (v) => humanNumber(v), disableAnimations, + chartType: 'areastack', + curveType: 'linear', + stackOffset: 'none', }, - chartType: 'areastack', isLoading: metricsPeriod.isValidating, } }, [metricsPeriod, formatTimestamp]) @@ -473,9 +496,12 @@ function useMetricsMain() { }, format: (v) => humanBytes(v), formatTimestamp, + formatTickY: (v) => humanBytes(v, { fixed: 0 }), disableAnimations, + chartType: 'line', + curveType: 'linear', + stackOffset: 'none', }, - chartType: 'line', isLoading: metricsPeriod.isValidating, } }, [metricsPeriod, formatTimestamp]) @@ -515,10 +541,13 @@ function useMetricsMain() { storageWrites: chartConfigs.storageWrites, }, format: (v) => humanNumber(v), + formatTickY: (v) => humanNumber(v), formatTimestamp, disableAnimations, + chartType: 'line', + curveType: 'linear', + stackOffset: 'none', }, - chartType: 'line', isLoading: metricsPeriod.isValidating, } }, [metricsPeriod, formatTimestamp]) @@ -545,9 +574,15 @@ function useMetricsMain() { }, format: (v) => humanBytes(v), formatTimestamp, + formatTickY: (v) => + humanBytes(v, { + fixed: 0, + }), disableAnimations, + chartType: 'line', + curveType: 'linear', + stackOffset: 'none', }, - chartType: 'line', isLoading: metricsPeriod.isValidating, } }, [metricsPeriod, formatTimestamp]) diff --git a/apps/hostd/contexts/metrics/types.tsx b/apps/hostd/contexts/metrics/types.tsx index f44e4cf32..2f9705d64 100644 --- a/apps/hostd/contexts/metrics/types.tsx +++ b/apps/hostd/contexts/metrics/types.tsx @@ -116,17 +116,17 @@ export const dataTimeSpanOptions: { }[] = [ { label: '1D', - interval: '5m', + interval: '15m', value: '1', }, { label: '7D', - interval: '15m', + interval: 'hourly', value: '7', }, { label: '1M', - interval: 'hourly', + interval: 'daily', value: '30', }, { diff --git a/apps/hostd/pages/_document.tsx b/apps/hostd/pages/_document.tsx index 4476fd33a..5ee0a2622 100644 --- a/apps/hostd/pages/_document.tsx +++ b/apps/hostd/pages/_document.tsx @@ -1,3 +1,23 @@ -import { NextDocument } from '@siafoundation/design-system' +'use client' -export default NextDocument +import { rootFontClasses } from '@siafoundation/fonts' +import DefaultNextDocument, { + Head, + Html, + Main, + NextScript, +} from 'next/document' + +export class NextDocument extends DefaultNextDocument { + override render() { + return ( + + + +
+ + + + ) + } +} diff --git a/apps/renterd/pages/_document.tsx b/apps/renterd/pages/_document.tsx index 4476fd33a..5ee0a2622 100644 --- a/apps/renterd/pages/_document.tsx +++ b/apps/renterd/pages/_document.tsx @@ -1,3 +1,23 @@ -import { NextDocument } from '@siafoundation/design-system' +'use client' -export default NextDocument +import { rootFontClasses } from '@siafoundation/fonts' +import DefaultNextDocument, { + Head, + Html, + Main, + NextScript, +} from 'next/document' + +export class NextDocument extends DefaultNextDocument { + override render() { + return ( + + + +
+ + + + ) + } +} diff --git a/apps/walletd/pages/_document.tsx b/apps/walletd/pages/_document.tsx index 4476fd33a..5ee0a2622 100644 --- a/apps/walletd/pages/_document.tsx +++ b/apps/walletd/pages/_document.tsx @@ -1,3 +1,23 @@ -import { NextDocument } from '@siafoundation/design-system' +'use client' -export default NextDocument +import { rootFontClasses } from '@siafoundation/fonts' +import DefaultNextDocument, { + Head, + Html, + Main, + NextScript, +} from 'next/document' + +export class NextDocument extends DefaultNextDocument { + override render() { + return ( + + + +
+ + + + ) + } +} diff --git a/apps/website/components/NextAppSsr.tsx b/apps/website/components/NextAppSsr.tsx index aefc56cae..8c4d25ebd 100644 --- a/apps/website/components/NextAppSsr.tsx +++ b/apps/website/components/NextAppSsr.tsx @@ -1,5 +1,4 @@ import { TooltipProvider, Toaster } from '@siafoundation/design-system' -import { rootFontClasses } from '@siafoundation/fonts' import { AppProps } from 'next/app' import { AppSettingsProvider, CoreProvider } from '@siafoundation/react-core' import { ThemeProvider } from 'next-themes' @@ -17,7 +16,7 @@ export function NextAppSsr({ -
+
@@ -34,7 +33,7 @@ export function NextAppSsr({ -
+
diff --git a/apps/website/pages/_document.tsx b/apps/website/pages/_document.tsx index 4476fd33a..5ee0a2622 100644 --- a/apps/website/pages/_document.tsx +++ b/apps/website/pages/_document.tsx @@ -1,3 +1,23 @@ -import { NextDocument } from '@siafoundation/design-system' +'use client' -export default NextDocument +import { rootFontClasses } from '@siafoundation/fonts' +import DefaultNextDocument, { + Head, + Html, + Main, + NextScript, +} from 'next/document' + +export class NextDocument extends DefaultNextDocument { + override render() { + return ( + + + +
+ + + + ) + } +} diff --git a/libs/design-system/package.json b/libs/design-system/package.json index 10294e5dc..72ac77309 100644 --- a/libs/design-system/package.json +++ b/libs/design-system/package.json @@ -43,7 +43,6 @@ "react-dropzone": "^14.2.3", "@radix-ui/react-radio-group": "^1.0.0", "tailwindcss": "3.2.7", - "@next/font": "13.1.1", "tailwind-scrollbar": "^2.0.1", "tailwindcss-text-fill": "^0.2.0", "tailwindcss-shadow-fill": "^1.0.1", diff --git a/libs/design-system/src/app/WalletBalanceEvolution.tsx b/libs/design-system/src/app/WalletBalanceEvolution.tsx index 30339eb76..acacef9cd 100644 --- a/libs/design-system/src/app/WalletBalanceEvolution.tsx +++ b/libs/design-system/src/app/WalletBalanceEvolution.tsx @@ -62,9 +62,14 @@ export function BalanceEvolution({ }, format: (v) => humanSiacoin(v), formatTimestamp: getDataIntervalLabelFormatter('default'), + formatTickY: (v) => + humanSiacoin(v, { + fixed: 0, + dynamicUnits: true, + }), disableAnimations: true, + chartType, }, - chartType, isLoading, } }, [balances, isLoading, chartConfigs, chartType]) @@ -77,7 +82,6 @@ export function BalanceEvolution({ allowConfiguration={false} data={chart.data} config={chart.config} - chartType={chart.chartType} />
) diff --git a/libs/design-system/src/components/ChartXY/ChartXYConfig.tsx b/libs/design-system/src/components/ChartXY/ChartXYConfig.tsx index 5549b45b2..62f6291e2 100644 --- a/libs/design-system/src/components/ChartXY/ChartXYConfig.tsx +++ b/libs/design-system/src/components/ChartXY/ChartXYConfig.tsx @@ -19,6 +19,8 @@ export function ChartXYConfig({ setStackOffset, xAxisOrientation, setXAxisOrientation, + yAxisOrientation, + setYAxisOrientation, }: ChartXYProps) { const shouldDisableAll = initialChartType === 'line' const shouldDisableStack = initialChartType === 'area' @@ -71,9 +73,13 @@ export function ChartXYConfig({ className="flex flex-col gap-1" > - Auto + None zero-baseline + + Diverging + non zero-baseline + Expand values sum to 1 @@ -113,14 +119,14 @@ export function ChartXYConfig({ Bottom Top - {/* setYAxisOrientation(v as 'left' | 'right')} - className="flex flex-col gap-2" - > - Left - Right - */} + setYAxisOrientation(v as 'left' | 'right')} + className="flex flex-col gap-2" + > + Left + Right +
diff --git a/libs/design-system/src/components/ChartXY/ChartXYGraph.tsx b/libs/design-system/src/components/ChartXY/ChartXYGraph.tsx index 5df3e3a8f..a2fce567e 100644 --- a/libs/design-system/src/components/ChartXY/ChartXYGraph.tsx +++ b/libs/design-system/src/components/ChartXY/ChartXYGraph.tsx @@ -10,7 +10,6 @@ import { cx } from 'class-variance-authority' import { groupBy } from 'lodash' import { ChartConfig, ChartPoint } from './types' import { humanDate } from '@siafoundation/sia-js' -import { rootFontClasses } from '@siafoundation/fonts' export function ChartXYGraph({ id, @@ -113,7 +112,7 @@ export function ChartXYGraph({ numTicks={numTicks} /> {renderBarStack && ( - + {enabledGraph.map((key) => ( ({ {renderAreaStack && ( {enabledGraph.map((key) => ( @@ -217,12 +216,21 @@ export function ChartXYGraph({ } orientation={yAxisOrientation} numTicks={numTicks} - tickLength={0} - rangePadding={0} + tickLength={12} + // rangePadding={0} animationTrajectory={animationTrajectory} // values don't make sense in stream graph // tickFormat={stackOffset === 'wiggle' ? () => '' : undefined} - tickFormat={() => ''} + tickFormat={config.formatTickY} + tickTransform={`translate(-300px, 0)`} + tickLabelProps={(p) => ({ + ...p, + fill: theme.labels.color, + fontFamily: theme.labels.fontFamily, + // x: '-34px', + fontWeight: '500', + fontSize: '8', + })} /> {showTooltip && ( > @@ -266,7 +274,7 @@ export function ChartXYGraph({ ) as [Cat, KeyOption[]][] return ( -
+
({ actionsLeft, isLoading, actionsRight, - chartType = 'areastack', - curveType = 'linear', - stackOffset = 'none', variant = 'panel', allowConfiguration = true, }: Props) { - const props = useChartXY( - id, - data, - config, - chartType, - curveType, - stackOffset - ) + const props = useChartXY(id, data, config) const body = ( <> diff --git a/libs/design-system/src/components/ChartXY/types.ts b/libs/design-system/src/components/ChartXY/types.ts index 2e73a9358..3dc9ad93e 100644 --- a/libs/design-system/src/components/ChartXY/types.ts +++ b/libs/design-system/src/components/ChartXY/types.ts @@ -1,3 +1,12 @@ +export type ChartType = 'barstack' | 'bargroup' | 'line' | 'area' | 'areastack' +export type CurveType = 'linear' | 'cardinal' | 'step' +export type StackOffset = + | 'none' + | 'wiggle' + | 'expand' + | 'diverging' + | 'silhouette' + export type ChartConfig = { enabledGraph?: Key[] enabledTip?: Key[] @@ -14,24 +23,20 @@ export type ChartConfig = { } > format?: (v: number) => string + formatTickY?: (v: number) => string + formatTickX?: (v: number) => string formatComponent?: React.FC<{ value: number }> formatTimestamp?: (v: number) => string disableAnimations?: boolean + chartType: ChartType + curveType?: CurveType + stackOffset?: StackOffset } export type ChartPoint = Record export type ChartData = ChartPoint[] -export type ChartType = 'barstack' | 'bargroup' | 'line' | 'area' | 'areastack' -export type CurveType = 'linear' | 'cardinal' | 'step' -export type StackOffset = - | 'none' - | 'wiggle' - | 'expand' - | 'diverging' - | 'silhouette' - type KeyStats = { average: number change: number | undefined @@ -48,6 +53,5 @@ export type Chart = { data: ChartData stats: ChartStats config: ChartConfig - chartType: ChartType isLoading: boolean } diff --git a/libs/design-system/src/components/ChartXY/useChartXY.tsx b/libs/design-system/src/components/ChartXY/useChartXY.tsx index 01ffa9956..accab01d5 100644 --- a/libs/design-system/src/components/ChartXY/useChartXY.tsx +++ b/libs/design-system/src/components/ChartXY/useChartXY.tsx @@ -21,16 +21,16 @@ import { daysInMilliseconds } from '../../lib/time' import { usePrefersReducedMotion } from '@siafoundation/react-core' const numTicks = 4 +const defaultChartType = 'areastack' +const defaultCurveType = 'linear' +const defaultStackOffset = 'none' type SimpleScaleConfig = { type: 'band' | 'linear'; paddingInner?: number } export function useChartXY( id: string, chartData: ChartData, - config: ChartConfig, - initialChartType: ChartType, - initialCurveType: CurveType, - initialStackOffset: StackOffset + config: ChartConfig ) { const data = useMemo(() => { chartData.sort((a, b) => (a.timestamp > b.timestamp ? 1 : -1)) @@ -85,6 +85,10 @@ export function useChartXY( const [snapTooltipToDatum, setSnapTooltipToDatum] = useState(true) const [sharedTooltip, setSharedTooltip] = useState(true) + const initialChartType = config.chartType || defaultChartType + const initialCurveType = config.curveType || defaultCurveType + const initialStackOffset = config.stackOffset || defaultStackOffset + const [chartType, setChartType] = useState(initialChartType) const [curveType, setCurveType] = useState(initialCurveType) const [stackOffset, setStackOffset] = @@ -211,10 +215,10 @@ export function useChartXY( () => ({ top: 30, bottom: xAxisOrientation === 'top' ? 0 : 20, - left: 0, - right: 0, + right: yAxisOrientation === 'right' ? 60 : 0, + left: yAxisOrientation === 'left' ? 60 : 0, }), - [xAxisOrientation] + [xAxisOrientation, yAxisOrientation] ) return { @@ -231,6 +235,8 @@ export function useChartXY( isStack, todayOffset, initialChartType, + initialCurveType, + initialStackOffset, chartType, curveType, keys, diff --git a/libs/design-system/src/core/Dialog.tsx b/libs/design-system/src/core/Dialog.tsx index 9c23b0b04..ac9ceee3d 100644 --- a/libs/design-system/src/core/Dialog.tsx +++ b/libs/design-system/src/core/Dialog.tsx @@ -11,9 +11,8 @@ import { Button } from './Button' import { ScrollArea } from './ScrollArea' import { textStyles } from './Text' import { VariantProps } from '../types' -import { rootFontClasses } from '@siafoundation/fonts' -const containerStyles = cva([rootFontClasses, 'z-20', 'overflow-hidden'], { +const containerStyles = cva(['z-20', 'overflow-hidden'], { variants: { variant: { default: 'flex items-center justify-center w-full h-full', diff --git a/libs/design-system/src/core/DropdownMenu.tsx b/libs/design-system/src/core/DropdownMenu.tsx index 51b3b89a0..3cdaccf39 100644 --- a/libs/design-system/src/core/DropdownMenu.tsx +++ b/libs/design-system/src/core/DropdownMenu.tsx @@ -8,10 +8,8 @@ import { separatorStyles, itemStyles, labelStyles } from './Menu' import { panelStyles } from './Panel' import { useOpen } from '../hooks/useOpen' import { ArrowRight16 } from '@siafoundation/react-icons' -import { rootFontClasses } from '@siafoundation/fonts' const contentContainerStyles = cva([ - rootFontClasses, 'relative', 'max-w-sm', 'z-30', diff --git a/libs/design-system/src/core/HoverCard.tsx b/libs/design-system/src/core/HoverCard.tsx index c0899f2b0..37b15324c 100644 --- a/libs/design-system/src/core/HoverCard.tsx +++ b/libs/design-system/src/core/HoverCard.tsx @@ -6,10 +6,8 @@ import * as HoverCardPrimitive from '@radix-ui/react-hover-card' import { panelStyles } from './Panel' import { cva, cx } from 'class-variance-authority' import { useOpen } from '../hooks/useOpen' -import { rootFontClasses } from '@siafoundation/fonts' const contentContainerStyles = cva([ - rootFontClasses, 'relative', 'z-10', 'data-[side=top]:bottom-1', diff --git a/libs/design-system/src/core/Popover.tsx b/libs/design-system/src/core/Popover.tsx index 1d44949ab..42ececdca 100644 --- a/libs/design-system/src/core/Popover.tsx +++ b/libs/design-system/src/core/Popover.tsx @@ -7,10 +7,8 @@ import { panelStyles } from './Panel' import { cva, cx } from 'class-variance-authority' import { useOpen } from '../hooks/useOpen' import { ScrollArea } from './ScrollArea' -import { rootFontClasses } from '@siafoundation/fonts' const contentContainerStyles = cva([ - rootFontClasses, 'relative', 'z-10', 'outline-none', diff --git a/libs/design-system/src/core/Tooltip.tsx b/libs/design-system/src/core/Tooltip.tsx index 49d956491..e6d7e102f 100644 --- a/libs/design-system/src/core/Tooltip.tsx +++ b/libs/design-system/src/core/Tooltip.tsx @@ -7,7 +7,6 @@ import { cx } from 'class-variance-authority' import { panelStyles } from './Panel' import { motion, AnimatePresence } from 'framer-motion' import { useOpen } from '../hooks/useOpen' -import { rootFontClasses } from '@siafoundation/fonts' type TooltipProps = Omit< React.ComponentProps & @@ -71,7 +70,6 @@ export function Tooltip({ animate="show" exit="exit" className={cx( - rootFontClasses, 'relative', 'z-50', 'data-[side=top]:bottom-1', diff --git a/libs/design-system/src/index.ts b/libs/design-system/src/index.ts index b0b80996a..3300c894f 100644 --- a/libs/design-system/src/index.ts +++ b/libs/design-system/src/index.ts @@ -136,7 +136,6 @@ export * from './site/Callout' export * from './site/Links' export * from './site/NextAppSsrAppRouter' export * from './site/NextAppCsr' -export * from './site/NextDocument' export * from './site/BackgroundImagePattern' export * from './site/WebDomain' diff --git a/libs/design-system/src/lib/toast.tsx b/libs/design-system/src/lib/toast.tsx index 468e8ae44..2846d550e 100644 --- a/libs/design-system/src/lib/toast.tsx +++ b/libs/design-system/src/lib/toast.tsx @@ -10,7 +10,6 @@ import { cx } from 'class-variance-authority' import { panelStyles } from '../core/Panel' import React from 'react' import { Text } from '../core/Text' -import { rootFontClasses } from '@siafoundation/fonts' export type { ToastOptions } @@ -71,7 +70,6 @@ export function buildToastOptions({ position: 'top-center', duration: 6_000, className: cx( - rootFontClasses, panelStyles(), 'font-sans font-normal', 'text-gray-1100 dark:text-white', diff --git a/libs/design-system/src/site/NextAppCsr.tsx b/libs/design-system/src/site/NextAppCsr.tsx index 038cd773b..a135bc319 100644 --- a/libs/design-system/src/site/NextAppCsr.tsx +++ b/libs/design-system/src/site/NextAppCsr.tsx @@ -5,7 +5,6 @@ import { ThemeProvider } from 'next-themes' import { TooltipProvider } from '../hooks/tooltip' import { AppSettingsProvider, CoreProvider } from '@siafoundation/react-core' import { Toaster } from '../lib/toast' -import { rootFontClasses } from '@siafoundation/fonts' export function ClientSide({ children }: { children: React.ReactNode }) { const [csrReady, setCsrReady] = useState(false) @@ -39,7 +38,7 @@ export function NextAppCsr({ lockRoutes={lockRoutes} passwordProtectRequestHooks={passwordProtectRequestHooks} > -
+
{children}
diff --git a/libs/design-system/src/site/NextDocument.tsx b/libs/design-system/src/site/NextDocument.tsx deleted file mode 100644 index fb8ddaa71..000000000 --- a/libs/design-system/src/site/NextDocument.tsx +++ /dev/null @@ -1,22 +0,0 @@ -'use client' - -import DefaultNextDocument, { - Head, - Html, - Main, - NextScript, -} from 'next/document' - -export class NextDocument extends DefaultNextDocument { - override render() { - return ( - - - -
- - - - ) - } -} diff --git a/libs/fonts/package.json b/libs/fonts/package.json index 387ac3bc5..155a415f5 100644 --- a/libs/fonts/package.json +++ b/libs/fonts/package.json @@ -1,7 +1,7 @@ { "name": "@siafoundation/fonts", "description": "Next font configuration for use across apps.", - "version": "0.0.0", + "version": "0.0.1", "license": "MIT", "dependencies": { "class-variance-authority": "^0.7.0", diff --git a/libs/react-renterd/src/bus.ts b/libs/react-renterd/src/bus.ts index afe431d42..f88972d22 100644 --- a/libs/react-renterd/src/bus.ts +++ b/libs/react-renterd/src/bus.ts @@ -1,4 +1,4 @@ -import useSWR, { mutate } from 'swr' +import useSWR from 'swr' import { useDeleteFunc, useGetSwr, diff --git a/package-lock.json b/package-lock.json index 3427d3a77..6cc8d1f72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -264,7 +264,6 @@ "version": "0.59.0", "license": "MIT", "dependencies": { - "@next/font": "13.1.1", "@nx/react": "16.8.1", "@radix-ui/react-accordion": "^1.0.0", "@radix-ui/react-avatar": "^1.0.0", @@ -336,6 +335,14 @@ "extraneous": true, "license": "MIT" }, + "libs/fonts": { + "version": "0.0.0", + "license": "MIT", + "dependencies": { + "@next/font": "13.1.1", + "class-variance-authority": "^0.7.0" + } + }, "libs/foobar": { "name": "@siafoundation/foobar", "version": "0.0.1", @@ -7289,6 +7296,10 @@ "resolved": "libs/design-system", "link": true }, + "node_modules/@siafoundation/fonts": { + "resolved": "libs/fonts", + "link": true + }, "node_modules/@siafoundation/react-core": { "resolved": "libs/react-core", "link": true @@ -32676,7 +32687,6 @@ "@siafoundation/design-system": { "version": "file:libs/design-system", "requires": { - "@next/font": "13.1.1", "@nx/react": "16.8.1", "@radix-ui/react-accordion": "^1.0.0", "@radix-ui/react-avatar": "^1.0.0", @@ -32742,6 +32752,13 @@ "yup": "^0.32.11" } }, + "@siafoundation/fonts": { + "version": "file:libs/fonts", + "requires": { + "@next/font": "13.1.1", + "class-variance-authority": "^0.7.0" + } + }, "@siafoundation/react-core": { "version": "file:libs/react-core", "requires": {