diff --git a/.changeset/silent-parrots-carry.md b/.changeset/silent-parrots-carry.md
new file mode 100644
index 0000000000..a61bf76c0a
--- /dev/null
+++ b/.changeset/silent-parrots-carry.md
@@ -0,0 +1,5 @@
+---
+'@penumbra-zone/ui': major
+---
+
+Refactor UI package from css-in-js to Tailwind
diff --git a/apps/minifront/package.json b/apps/minifront/package.json
index d3ab103531..27042606a6 100644
--- a/apps/minifront/package.json
+++ b/apps/minifront/package.json
@@ -31,7 +31,7 @@
"@penumbra-zone/protobuf": "workspace:*",
"@penumbra-zone/transport-dom": "workspace:*",
"@penumbra-zone/types": "workspace:*",
- "@penumbra-zone/ui": "workspace:*",
+ "@penumbra-zone/ui-deprecated": "workspace:*",
"@penumbra-zone/zquery": "workspace:*",
"@radix-ui/react-dialog": "1.0.5",
"@radix-ui/react-icons": "^1.3.0",
@@ -66,6 +66,7 @@
"@types/react": "^18.3.2",
"@types/react-dom": "^18.3.0",
"@types/react-helmet": "^6.1.11",
+ "vite": "^5.2.11",
"vitest": "^1.6.0"
}
}
diff --git a/apps/minifront/postcss.config.js b/apps/minifront/postcss.config.js
index 8e18cdcb77..2bdefa943e 100644
--- a/apps/minifront/postcss.config.js
+++ b/apps/minifront/postcss.config.js
@@ -1 +1 @@
-export { default } from '@penumbra-zone/ui/postcss.config.js';
+export { default } from '@penumbra-zone/ui-deprecated/postcss.config.js';
diff --git a/apps/minifront/src/components/dashboard/assets-table/equivalent-values.tsx b/apps/minifront/src/components/dashboard/assets-table/equivalent-values.tsx
index 994efe2cd2..d47c939c9a 100644
--- a/apps/minifront/src/components/dashboard/assets-table/equivalent-values.tsx
+++ b/apps/minifront/src/components/dashboard/assets-table/equivalent-values.tsx
@@ -1,7 +1,7 @@
import { ValueView } from '@penumbra-zone/protobuf/penumbra/core/asset/v1/asset_pb';
import { asValueView } from '@penumbra-zone/getters/equivalent-value';
import { getDisplayDenomFromView, getEquivalentValues } from '@penumbra-zone/getters/value-view';
-import { ValueViewComponent } from '@penumbra-zone/ui/components/ui/value';
+import { ValueViewComponent } from '@penumbra-zone/ui-deprecated/components/ui/value';
export const EquivalentValues = ({ valueView }: { valueView?: ValueView }) => {
const equivalentValuesAsValueViews = (getEquivalentValues.optional(valueView) ?? []).map(
diff --git a/apps/minifront/src/components/dashboard/assets-table/index.tsx b/apps/minifront/src/components/dashboard/assets-table/index.tsx
index a803a7ff42..76066f82da 100644
--- a/apps/minifront/src/components/dashboard/assets-table/index.tsx
+++ b/apps/minifront/src/components/dashboard/assets-table/index.tsx
@@ -1,6 +1,6 @@
import { BalancesResponse } from '@penumbra-zone/protobuf/penumbra/view/v1/view_pb';
-import { AddressComponent, AddressIcon } from '@penumbra-zone/ui/components/ui/address';
-import { Button } from '@penumbra-zone/ui/components/ui/button';
+import { AddressComponent, AddressIcon } from '@penumbra-zone/ui-deprecated/components/ui/address';
+import { Button } from '@penumbra-zone/ui-deprecated/components/ui/button';
import {
Table,
TableBody,
@@ -8,8 +8,8 @@ import {
TableHead,
TableHeader,
TableRow,
-} from '@penumbra-zone/ui/components/ui/table';
-import { ValueViewComponent } from '@penumbra-zone/ui/components/ui/value';
+} from '@penumbra-zone/ui-deprecated/components/ui/table';
+import { ValueViewComponent } from '@penumbra-zone/ui-deprecated/components/ui/value';
import { EquivalentValues } from './equivalent-values';
import { Fragment } from 'react';
import { PagePath } from '../../metadata/paths';
@@ -21,7 +21,7 @@ import { AbridgedZQueryState } from '@penumbra-zone/zquery/src/types';
import { shouldDisplay } from '../../../fetchers/balances/should-display';
import { sortByPriorityScore } from '../../../fetchers/balances/by-priority-score';
import { LineWave } from 'react-loader-spinner';
-import { cn } from '@penumbra-zone/ui/lib/utils';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
const getTradeLink = (balance: BalancesResponse): string => {
const metadata = getMetadataFromBalancesResponse.optional(balance);
diff --git a/apps/minifront/src/components/dashboard/layout.tsx b/apps/minifront/src/components/dashboard/layout.tsx
index 75be0a7667..5a9fef8e32 100644
--- a/apps/minifront/src/components/dashboard/layout.tsx
+++ b/apps/minifront/src/components/dashboard/layout.tsx
@@ -1,4 +1,4 @@
-import { Card } from '@penumbra-zone/ui/components/ui/card';
+import { Card } from '@penumbra-zone/ui-deprecated/components/ui/card';
import { dashboardTabs, dashboardTabsHelper } from './constants';
import { Outlet } from 'react-router-dom';
import { EduInfoCard } from '../shared/edu-panels/edu-info-card';
diff --git a/apps/minifront/src/components/dashboard/transaction-table.tsx b/apps/minifront/src/components/dashboard/transaction-table.tsx
index 2853129fc2..e537dbf661 100644
--- a/apps/minifront/src/components/dashboard/transaction-table.tsx
+++ b/apps/minifront/src/components/dashboard/transaction-table.tsx
@@ -5,7 +5,7 @@ import {
TableHead,
TableHeader,
TableRow,
-} from '@penumbra-zone/ui/components/ui/table';
+} from '@penumbra-zone/ui-deprecated/components/ui/table';
import { Link } from 'react-router-dom';
import { shorten } from '@penumbra-zone/types/string';
import { memo } from 'react';
diff --git a/apps/minifront/src/components/extension-not-connected.tsx b/apps/minifront/src/components/extension-not-connected.tsx
index 5882d69790..02b59cb260 100644
--- a/apps/minifront/src/components/extension-not-connected.tsx
+++ b/apps/minifront/src/components/extension-not-connected.tsx
@@ -1,11 +1,11 @@
import { useState } from 'react';
import { useQuery } from '@tanstack/react-query';
import { useNavigate } from 'react-router-dom';
-import { Dialog } from '@penumbra-zone/ui/Dialog';
-import { Button } from '@penumbra-zone/ui/components/ui/button';
-import { Toaster } from '@penumbra-zone/ui/components/ui/toaster';
-import { SplashPage } from '@penumbra-zone/ui/components/ui/splash-page';
-import { errorToast, warningToast } from '@penumbra-zone/ui/lib/toast/presets';
+import { Dialog } from '@penumbra-zone/ui-deprecated/Dialog';
+import { Button } from '@penumbra-zone/ui-deprecated/components/ui/button';
+import { Toaster } from '@penumbra-zone/ui-deprecated/components/ui/toaster';
+import { SplashPage } from '@penumbra-zone/ui-deprecated/components/ui/splash-page';
+import { errorToast, warningToast } from '@penumbra-zone/ui-deprecated/lib/toast/presets';
import {
PenumbraClient,
PenumbraManifest,
diff --git a/apps/minifront/src/components/extension-not-installed.tsx b/apps/minifront/src/components/extension-not-installed.tsx
index efb91e725d..21ba60d40f 100644
--- a/apps/minifront/src/components/extension-not-installed.tsx
+++ b/apps/minifront/src/components/extension-not-installed.tsx
@@ -1,5 +1,5 @@
-import { Button } from '@penumbra-zone/ui/components/ui/button';
-import { SplashPage } from '@penumbra-zone/ui/components/ui/splash-page';
+import { Button } from '@penumbra-zone/ui-deprecated/components/ui/button';
+import { SplashPage } from '@penumbra-zone/ui-deprecated/components/ui/splash-page';
import { HeadTag } from './metadata/head-tag';
const CHROME_EXTENSION_ID = 'lkpmkhpnhknhmibgnmmhdhgdilepfghe';
diff --git a/apps/minifront/src/components/extension-transport-disconnected.tsx b/apps/minifront/src/components/extension-transport-disconnected.tsx
index 62abfab944..99043cbaaf 100644
--- a/apps/minifront/src/components/extension-transport-disconnected.tsx
+++ b/apps/minifront/src/components/extension-transport-disconnected.tsx
@@ -1,6 +1,6 @@
-import { SplashPage } from '@penumbra-zone/ui/components/ui/splash-page';
+import { SplashPage } from '@penumbra-zone/ui-deprecated/components/ui/splash-page';
import { HeadTag } from './metadata/head-tag';
-import { Button } from '@penumbra-zone/ui/components/ui/button';
+import { Button } from '@penumbra-zone/ui-deprecated/components/ui/button';
export const ExtensionTransportDisconnected = () => {
return (
diff --git a/apps/minifront/src/components/header/header.tsx b/apps/minifront/src/components/header/header.tsx
index efe4411744..6a392d904d 100644
--- a/apps/minifront/src/components/header/header.tsx
+++ b/apps/minifront/src/components/header/header.tsx
@@ -1,6 +1,6 @@
-import { CondensedBlockSyncStatus } from '@penumbra-zone/ui/components/ui/block-sync-status';
-import { IncompatibleBrowserBanner } from '@penumbra-zone/ui/components/ui/incompatible-browser-banner';
-import { TestnetBanner } from '@penumbra-zone/ui/components/ui/testnet-banner';
+import { CondensedBlockSyncStatus } from '@penumbra-zone/ui-deprecated/components/ui/block-sync-status';
+import { IncompatibleBrowserBanner } from '@penumbra-zone/ui-deprecated/components/ui/incompatible-browser-banner';
+import { TestnetBanner } from '@penumbra-zone/ui-deprecated/components/ui/testnet-banner';
import { useEffect, useState } from 'react';
import { Link } from 'react-router-dom';
import { getChainId } from '../../fetchers/chain-id';
diff --git a/apps/minifront/src/components/header/menu/desktop-nav.tsx b/apps/minifront/src/components/header/menu/desktop-nav.tsx
index 546bdc607d..90f989195f 100644
--- a/apps/minifront/src/components/header/menu/desktop-nav.tsx
+++ b/apps/minifront/src/components/header/menu/desktop-nav.tsx
@@ -1,4 +1,4 @@
-import { cn } from '@penumbra-zone/ui/lib/utils';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
import * as NavigationMenu from '@radix-ui/react-navigation-menu';
import { usePagePath } from '../../../fetchers/page-path';
import { dashboardLink, headerLinks } from '../constants';
diff --git a/apps/minifront/src/components/header/menu/menu.tsx b/apps/minifront/src/components/header/menu/menu.tsx
index 64d2d62dc1..b0142f1a91 100644
--- a/apps/minifront/src/components/header/menu/menu.tsx
+++ b/apps/minifront/src/components/header/menu/menu.tsx
@@ -1,4 +1,4 @@
-import { cn } from '@penumbra-zone/ui/lib/utils';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
import { DesktopNav } from './desktop-nav';
import { MobileNav } from './mobile-nav';
import { ProviderMenu } from './provider';
diff --git a/apps/minifront/src/components/header/menu/mobile-nav.tsx b/apps/minifront/src/components/header/menu/mobile-nav.tsx
index 4f41ce40f2..74c8e8f18b 100644
--- a/apps/minifront/src/components/header/menu/mobile-nav.tsx
+++ b/apps/minifront/src/components/header/menu/mobile-nav.tsx
@@ -3,7 +3,7 @@ import {
SheetContent,
SheetHeader,
SheetTrigger,
-} from '@penumbra-zone/ui/components/ui/sheet';
+} from '@penumbra-zone/ui-deprecated/components/ui/sheet';
import { HamburgerMenuIcon } from '@radix-ui/react-icons';
import { headerLinks } from '../constants';
import { Link } from 'react-router-dom';
diff --git a/apps/minifront/src/components/header/menu/provider.tsx b/apps/minifront/src/components/header/menu/provider.tsx
index 5244950e35..ef82caa262 100644
--- a/apps/minifront/src/components/header/menu/provider.tsx
+++ b/apps/minifront/src/components/header/menu/provider.tsx
@@ -1,4 +1,4 @@
-import { cn } from '@penumbra-zone/ui/lib/utils';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
import * as NavigationMenu from '@radix-ui/react-navigation-menu';
import { getChainId } from '../../../fetchers/chain-id';
import { useEffect, useState } from 'react';
diff --git a/apps/minifront/src/components/header/menu/tablet-nav.tsx b/apps/minifront/src/components/header/menu/tablet-nav.tsx
index a812c9fadf..42695c749a 100644
--- a/apps/minifront/src/components/header/menu/tablet-nav.tsx
+++ b/apps/minifront/src/components/header/menu/tablet-nav.tsx
@@ -1,4 +1,4 @@
-import { cn } from '@penumbra-zone/ui/lib/utils';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
import * as NavigationMenu from '@radix-ui/react-navigation-menu';
import { usePagePath } from '../../../fetchers/page-path';
import { dashboardLink, headerLinks } from '../constants';
diff --git a/apps/minifront/src/components/ibc/ibc-in/assets-table.tsx b/apps/minifront/src/components/ibc/ibc-in/assets-table.tsx
index ac6392df9d..c5b59b8190 100644
--- a/apps/minifront/src/components/ibc/ibc-in/assets-table.tsx
+++ b/apps/minifront/src/components/ibc/ibc-in/assets-table.tsx
@@ -8,9 +8,9 @@ import {
TableHead,
TableHeader,
TableRow,
-} from '@penumbra-zone/ui/components/ui/table';
-import { Avatar, AvatarImage } from '@penumbra-zone/ui/components/ui/avatar';
-import { Identicon } from '@penumbra-zone/ui/components/ui/identicon';
+} from '@penumbra-zone/ui-deprecated/components/ui/table';
+import { Avatar, AvatarImage } from '@penumbra-zone/ui-deprecated/components/ui/avatar';
+import { Identicon } from '@penumbra-zone/ui-deprecated/components/ui/identicon';
import { LineWave } from 'react-loader-spinner';
import { getIconWithUmFallback } from './asset-utils.tsx';
diff --git a/apps/minifront/src/components/ibc/ibc-in/chain-dropdown.tsx b/apps/minifront/src/components/ibc/ibc-in/chain-dropdown.tsx
index 889dc31587..0edfb05114 100644
--- a/apps/minifront/src/components/ibc/ibc-in/chain-dropdown.tsx
+++ b/apps/minifront/src/components/ibc/ibc-in/chain-dropdown.tsx
@@ -1,7 +1,11 @@
import * as React from 'react';
import { useMemo } from 'react';
import { useManager } from '@cosmos-kit/react';
-import { Popover, PopoverContent, PopoverTrigger } from '@penumbra-zone/ui/components/ui/popover';
+import {
+ Popover,
+ PopoverContent,
+ PopoverTrigger,
+} from '@penumbra-zone/ui-deprecated/components/ui/popover';
import { ChevronsUpDown } from 'lucide-react';
import {
Command,
@@ -9,12 +13,12 @@ import {
CommandGroup,
CommandInput,
CommandItem,
-} from '@penumbra-zone/ui/components/ui/command';
-import { Button } from '@penumbra-zone/ui/components/ui/button';
+} from '@penumbra-zone/ui-deprecated/components/ui/command';
+import { Button } from '@penumbra-zone/ui-deprecated/components/ui/button';
import { ibcInSelector } from '../../../state/ibc-in';
import { useStore } from '../../../state';
-import { Avatar, AvatarImage } from '@penumbra-zone/ui/components/ui/avatar';
-import { Identicon } from '@penumbra-zone/ui/components/ui/identicon';
+import { Avatar, AvatarImage } from '@penumbra-zone/ui-deprecated/components/ui/avatar';
+import { Identicon } from '@penumbra-zone/ui-deprecated/components/ui/identicon';
export interface ChainInfo {
chainName: string;
diff --git a/apps/minifront/src/components/ibc/ibc-in/destination-addr.tsx b/apps/minifront/src/components/ibc/ibc-in/destination-addr.tsx
index e365c8eda4..148020e2e5 100644
--- a/apps/minifront/src/components/ibc/ibc-in/destination-addr.tsx
+++ b/apps/minifront/src/components/ibc/ibc-in/destination-addr.tsx
@@ -1,7 +1,7 @@
import { AllSlices } from '../../../state';
import { useStoreShallow } from '../../../utils/use-store-shallow';
-import { AccountSwitcher } from '@penumbra-zone/ui/components/ui/account-switcher';
-import { CopyToClipboard } from '@penumbra-zone/ui/components/ui/copy-to-clipboard';
+import { AccountSwitcher } from '@penumbra-zone/ui-deprecated/components/ui/account-switcher';
+import { CopyToClipboard } from '@penumbra-zone/ui-deprecated/components/ui/copy-to-clipboard';
import { useEffect } from 'react';
const addrsSelector = ({ ibcIn }: AllSlices) => ({
diff --git a/apps/minifront/src/components/ibc/ibc-in/ibc-in-request.tsx b/apps/minifront/src/components/ibc/ibc-in/ibc-in-request.tsx
index aef1ba0d0b..624c9b7ebd 100644
--- a/apps/minifront/src/components/ibc/ibc-in/ibc-in-request.tsx
+++ b/apps/minifront/src/components/ibc/ibc-in/ibc-in-request.tsx
@@ -7,11 +7,11 @@ import {
SelectItem,
SelectTrigger,
SelectValue,
-} from '@penumbra-zone/ui/components/ui/select';
-import { Avatar, AvatarImage } from '@penumbra-zone/ui/components/ui/avatar';
-import { Identicon } from '@penumbra-zone/ui/components/ui/identicon';
+} from '@penumbra-zone/ui-deprecated/components/ui/select';
+import { Avatar, AvatarImage } from '@penumbra-zone/ui-deprecated/components/ui/avatar';
+import { Identicon } from '@penumbra-zone/ui-deprecated/components/ui/identicon';
import { DestinationAddr } from './destination-addr';
-import { Button } from '@penumbra-zone/ui/components/ui/button';
+import { Button } from '@penumbra-zone/ui-deprecated/components/ui/button';
import { LockClosedIcon } from '@radix-ui/react-icons';
import { NumberInput } from '../../shared/number-input';
import { getIconWithUmFallback } from './asset-utils.tsx';
diff --git a/apps/minifront/src/components/ibc/ibc-in/wallet-addr-card.tsx b/apps/minifront/src/components/ibc/ibc-in/wallet-addr-card.tsx
index 3c34414c6e..72f05e7114 100644
--- a/apps/minifront/src/components/ibc/ibc-in/wallet-addr-card.tsx
+++ b/apps/minifront/src/components/ibc/ibc-in/wallet-addr-card.tsx
@@ -1,4 +1,4 @@
-import { Identicon } from '@penumbra-zone/ui/components/ui/identicon';
+import { Identicon } from '@penumbra-zone/ui-deprecated/components/ui/identicon';
interface UserInfoProps {
address: string;
diff --git a/apps/minifront/src/components/ibc/ibc-in/wallet-connect-button.tsx b/apps/minifront/src/components/ibc/ibc-in/wallet-connect-button.tsx
index 89b0b1fb26..6af0511d2a 100644
--- a/apps/minifront/src/components/ibc/ibc-in/wallet-connect-button.tsx
+++ b/apps/minifront/src/components/ibc/ibc-in/wallet-connect-button.tsx
@@ -1,11 +1,11 @@
import { WalletStatus } from 'cosmos-kit';
-import { WalletIcon } from '@penumbra-zone/ui/components/ui/icons/wallet';
+import { WalletIcon } from '@penumbra-zone/ui-deprecated/components/ui/icons/wallet';
import { MouseEventHandler } from 'react';
import { useStore } from '../../../state';
import { ibcInSelector } from '../../../state/ibc-in';
import { useChainConnector } from './hooks';
-import { cn } from '@penumbra-zone/ui/lib/utils';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
export const ConnectWalletButton = () => {
const { connect, openView, status } = useChainConnector();
diff --git a/apps/minifront/src/components/ibc/ibc-out/chain-selector.tsx b/apps/minifront/src/components/ibc/ibc-out/chain-selector.tsx
index 5b75ff3937..a031a4c646 100644
--- a/apps/minifront/src/components/ibc/ibc-out/chain-selector.tsx
+++ b/apps/minifront/src/components/ibc/ibc-out/chain-selector.tsx
@@ -4,8 +4,8 @@ import {
SelectItem,
SelectTrigger,
SelectValue,
-} from '@penumbra-zone/ui/components/ui/select';
-import { cn } from '@penumbra-zone/ui/lib/utils';
+} from '@penumbra-zone/ui-deprecated/components/ui/select';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
import { AllSlices } from '../../../state';
import { Chain } from '@penumbra-labs/registry';
import { useStoreShallow } from '../../../utils/use-store-shallow';
diff --git a/apps/minifront/src/components/ibc/ibc-out/ibc-out-form.tsx b/apps/minifront/src/components/ibc/ibc-out/ibc-out-form.tsx
index a66e359faa..e9cef8aa39 100644
--- a/apps/minifront/src/components/ibc/ibc-out/ibc-out-form.tsx
+++ b/apps/minifront/src/components/ibc/ibc-out/ibc-out-form.tsx
@@ -1,5 +1,5 @@
-import { Button } from '@penumbra-zone/ui/components/ui/button';
-import { Input } from '@penumbra-zone/ui/components/ui/input';
+import { Button } from '@penumbra-zone/ui-deprecated/components/ui/button';
+import { Input } from '@penumbra-zone/ui-deprecated/components/ui/input';
import { ChainSelector } from './chain-selector';
import { useStore } from '../../../state';
import {
diff --git a/apps/minifront/src/components/ibc/layout.tsx b/apps/minifront/src/components/ibc/layout.tsx
index 06c0bfb385..fee64a9a56 100644
--- a/apps/minifront/src/components/ibc/layout.tsx
+++ b/apps/minifront/src/components/ibc/layout.tsx
@@ -1,4 +1,4 @@
-import { Card } from '@penumbra-zone/ui/components/ui/card';
+import { Card } from '@penumbra-zone/ui-deprecated/components/ui/card';
import { IbcOutForm } from './ibc-out/ibc-out-form';
import { InterchainUi } from './ibc-in/interchain-ui';
import { LongArrowIcon } from './long-arrow';
diff --git a/apps/minifront/src/components/layout.tsx b/apps/minifront/src/components/layout.tsx
index 9f3fcc79c9..063cb1be10 100644
--- a/apps/minifront/src/components/layout.tsx
+++ b/apps/minifront/src/components/layout.tsx
@@ -1,10 +1,10 @@
import { Outlet } from 'react-router-dom';
import { HeadTag } from './metadata/head-tag';
import { Header } from './header/header';
-import { Toaster } from '@penumbra-zone/ui/components/ui/toaster';
+import { Toaster } from '@penumbra-zone/ui-deprecated/components/ui/toaster';
import { Footer } from './footer/footer';
import { SyncingDialog } from './syncing-dialog';
-import '@penumbra-zone/ui/styles/globals.css';
+import '@penumbra-zone/ui-deprecated/styles/globals.css';
export const Layout = () => {
return (
diff --git a/apps/minifront/src/components/not-found.tsx b/apps/minifront/src/components/not-found.tsx
index e15f3e3e57..383bc1dd12 100644
--- a/apps/minifront/src/components/not-found.tsx
+++ b/apps/minifront/src/components/not-found.tsx
@@ -1,4 +1,4 @@
-import { SplashPage } from '@penumbra-zone/ui/components/ui/splash-page';
+import { SplashPage } from '@penumbra-zone/ui-deprecated/components/ui/splash-page';
export const NotFound = () => {
return That page could not be found. ;
diff --git a/apps/minifront/src/components/send/layout.tsx b/apps/minifront/src/components/send/layout.tsx
index 56f99ef69a..4137dd96d9 100644
--- a/apps/minifront/src/components/send/layout.tsx
+++ b/apps/minifront/src/components/send/layout.tsx
@@ -1,4 +1,4 @@
-import { Card } from '@penumbra-zone/ui/components/ui/card';
+import { Card } from '@penumbra-zone/ui-deprecated/components/ui/card';
import { sendTabs, sendTabsHelper } from './constants';
import { SendTab } from './types';
import { usePagePath } from '../../fetchers/page-path';
diff --git a/apps/minifront/src/components/send/receive.tsx b/apps/minifront/src/components/send/receive.tsx
index f4723d8dce..a83377d310 100644
--- a/apps/minifront/src/components/send/receive.tsx
+++ b/apps/minifront/src/components/send/receive.tsx
@@ -1,4 +1,4 @@
-import { SelectAccount } from '@penumbra-zone/ui/components/ui/select';
+import { SelectAccount } from '@penumbra-zone/ui-deprecated/components/ui/select';
import { getAddrByIndex } from '../../fetchers/address';
export const Receive = () => {
diff --git a/apps/minifront/src/components/send/send-form/index.tsx b/apps/minifront/src/components/send/send-form/index.tsx
index ec3ce2fa26..1a6e40d06d 100644
--- a/apps/minifront/src/components/send/send-form/index.tsx
+++ b/apps/minifront/src/components/send/send-form/index.tsx
@@ -1,5 +1,5 @@
-import { Button } from '@penumbra-zone/ui/components/ui/button';
-import { Input } from '@penumbra-zone/ui/components/ui/input';
+import { Button } from '@penumbra-zone/ui-deprecated/components/ui/button';
+import { Input } from '@penumbra-zone/ui-deprecated/components/ui/input';
import { useStore } from '../../../state';
import { sendSelector, sendValidationErrors } from '../../../state/send';
import { InputBlock } from '../../shared/input-block';
diff --git a/apps/minifront/src/components/shared/edu-panels/edu-info-card.tsx b/apps/minifront/src/components/shared/edu-panels/edu-info-card.tsx
index 74204548fc..8d2c6dd159 100644
--- a/apps/minifront/src/components/shared/edu-panels/edu-info-card.tsx
+++ b/apps/minifront/src/components/shared/edu-panels/edu-info-card.tsx
@@ -1,6 +1,6 @@
-import { Card } from '@penumbra-zone/ui/components/ui/card';
-import { cn } from '@penumbra-zone/ui/lib/utils';
-import { GradientHeader } from '@penumbra-zone/ui/components/ui/gradient-header';
+import { Card } from '@penumbra-zone/ui-deprecated/components/ui/card';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
+import { GradientHeader } from '@penumbra-zone/ui-deprecated/components/ui/gradient-header';
import { EduPanel, eduPanelContent } from './content';
import { motion } from 'framer-motion';
diff --git a/apps/minifront/src/components/shared/error-boundary.tsx b/apps/minifront/src/components/shared/error-boundary.tsx
index dac1007ba9..fc2a3bae98 100644
--- a/apps/minifront/src/components/shared/error-boundary.tsx
+++ b/apps/minifront/src/components/shared/error-boundary.tsx
@@ -4,7 +4,7 @@ import {
PenumbraNotInstalledError,
PenumbraProviderNotConnectedError,
} from '@penumbra-zone/client';
-import { SplashPage } from '@penumbra-zone/ui/components/ui/splash-page';
+import { SplashPage } from '@penumbra-zone/ui-deprecated/components/ui/splash-page';
import { NotFound } from '../not-found';
import { ExtensionTransportDisconnected } from '../extension-transport-disconnected';
import { ExtensionNotInstalled } from '../extension-not-installed';
diff --git a/apps/minifront/src/components/shared/gas-fee.tsx b/apps/minifront/src/components/shared/gas-fee.tsx
index a34dfebd9b..6191671355 100644
--- a/apps/minifront/src/components/shared/gas-fee.tsx
+++ b/apps/minifront/src/components/shared/gas-fee.tsx
@@ -2,9 +2,9 @@ import { Fee, FeeTier_Tier } from '@penumbra-zone/protobuf/penumbra/core/compone
import {
SegmentedPicker,
SegmentedPickerOption,
-} from '@penumbra-zone/ui/components/ui/segmented-picker';
+} from '@penumbra-zone/ui-deprecated/components/ui/segmented-picker';
import { InputBlock } from './input-block';
-import { ValueViewComponent } from '@penumbra-zone/ui/components/ui/value';
+import { ValueViewComponent } from '@penumbra-zone/ui-deprecated/components/ui/value';
import { Metadata, ValueView } from '@penumbra-zone/protobuf/penumbra/core/asset/v1/asset_pb';
const FEE_TIER_OPTIONS: SegmentedPickerOption[] = [
diff --git a/apps/minifront/src/components/shared/input-block.tsx b/apps/minifront/src/components/shared/input-block.tsx
index 2061f7add5..4538d37628 100644
--- a/apps/minifront/src/components/shared/input-block.tsx
+++ b/apps/minifront/src/components/shared/input-block.tsx
@@ -1,7 +1,7 @@
-import { cn } from '@penumbra-zone/ui/lib/utils';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
import { Validation, validationResult } from './validation-result';
import { ReactNode } from 'react';
-import { Box } from '@penumbra-zone/ui/components/ui/box';
+import { Box } from '@penumbra-zone/ui-deprecated/components/ui/box';
interface InputBlockProps {
label: string;
diff --git a/apps/minifront/src/components/shared/input-token.tsx b/apps/minifront/src/components/shared/input-token.tsx
index a20659b195..f42484ed71 100644
--- a/apps/minifront/src/components/shared/input-token.tsx
+++ b/apps/minifront/src/components/shared/input-token.tsx
@@ -1,6 +1,6 @@
import { BalancesResponse } from '@penumbra-zone/protobuf/penumbra/view/v1/view_pb';
-import { BalanceValueView } from '@penumbra-zone/ui/components/ui/balance-value-view';
-import { cn } from '@penumbra-zone/ui/lib/utils';
+import { BalanceValueView } from '@penumbra-zone/ui-deprecated/components/ui/balance-value-view';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
import BalanceSelector from './selectors/balance-selector';
import { Validation } from './validation-result';
import { InputBlock } from './input-block';
diff --git a/apps/minifront/src/components/shared/number-input/index.tsx b/apps/minifront/src/components/shared/number-input/index.tsx
index ac1c591374..b40ed18660 100644
--- a/apps/minifront/src/components/shared/number-input/index.tsx
+++ b/apps/minifront/src/components/shared/number-input/index.tsx
@@ -1,5 +1,5 @@
import type { FC } from 'react';
-import { Input, InputProps } from '@penumbra-zone/ui/components/ui/input';
+import { Input, InputProps } from '@penumbra-zone/ui-deprecated/components/ui/input';
import { useWheelPrevent } from './use-wheel-prevent';
export const NumberInput: FC = props => {
diff --git a/apps/minifront/src/components/shared/selectors/asset-selector.tsx b/apps/minifront/src/components/shared/selectors/asset-selector.tsx
index a3a3549d40..fb28335064 100644
--- a/apps/minifront/src/components/shared/selectors/asset-selector.tsx
+++ b/apps/minifront/src/components/shared/selectors/asset-selector.tsx
@@ -3,19 +3,24 @@ import {
DialogClose,
DialogContent,
DialogHeader,
-} from '@penumbra-zone/ui/components/ui/dialog';
-import { AssetIcon } from '@penumbra-zone/ui/components/ui/asset-icon';
+} from '@penumbra-zone/ui-deprecated/components/ui/dialog';
+import { AssetIcon } from '@penumbra-zone/ui-deprecated/components/ui/asset-icon';
import { Metadata, ValueView } from '@penumbra-zone/protobuf/penumbra/core/asset/v1/asset_pb';
-import { ValueViewComponent } from '@penumbra-zone/ui/components/ui/value';
+import { ValueViewComponent } from '@penumbra-zone/ui-deprecated/components/ui/value';
import { useCallback, useEffect, useId, useMemo, useState } from 'react';
-import { IconInput } from '@penumbra-zone/ui/components/ui/icon-input';
+import { IconInput } from '@penumbra-zone/ui-deprecated/components/ui/icon-input';
import { MagnifyingGlassIcon } from '@radix-ui/react-icons';
-import { Box } from '@penumbra-zone/ui/components/ui/box';
+import { Box } from '@penumbra-zone/ui-deprecated/components/ui/box';
import { motion } from 'framer-motion';
import { metadataBySearch } from './search-filters';
-import { cn } from '@penumbra-zone/ui/lib/utils';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
import { LoadingIndicator } from './loading-indicator';
-import { Table, TableBody, TableCell, TableRow } from '@penumbra-zone/ui/components/ui/table';
+import {
+ Table,
+ TableBody,
+ TableCell,
+ TableRow,
+} from '@penumbra-zone/ui-deprecated/components/ui/table';
interface AssetSelectorProps {
assets: Metadata[];
diff --git a/apps/minifront/src/components/shared/selectors/balance-item.tsx b/apps/minifront/src/components/shared/selectors/balance-item.tsx
index d68f3ef6b1..f8a4e5f95a 100644
--- a/apps/minifront/src/components/shared/selectors/balance-item.tsx
+++ b/apps/minifront/src/components/shared/selectors/balance-item.tsx
@@ -2,11 +2,11 @@ import { BalanceOrMetadata, isBalance, isMetadata } from './helpers';
import { getAddressIndex } from '@penumbra-zone/getters/address-view';
import { getMetadataFromBalancesResponse } from '@penumbra-zone/getters/balances-response';
import { useMemo } from 'react';
-import { DialogClose } from '@penumbra-zone/ui/components/ui/dialog';
-import { cn } from '@penumbra-zone/ui/lib/utils';
-import { AssetIcon } from '@penumbra-zone/ui/components/ui/asset-icon';
-import { ValueViewComponent } from '@penumbra-zone/ui/components/ui/value';
-import { TableCell, TableRow } from '@penumbra-zone/ui/components/ui/table';
+import { DialogClose } from '@penumbra-zone/ui-deprecated/components/ui/dialog';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
+import { AssetIcon } from '@penumbra-zone/ui-deprecated/components/ui/asset-icon';
+import { ValueViewComponent } from '@penumbra-zone/ui-deprecated/components/ui/value';
+import { TableCell, TableRow } from '@penumbra-zone/ui-deprecated/components/ui/table';
import { BalancesResponse } from '@penumbra-zone/protobuf/penumbra/view/v1/view_pb';
interface BalanceItemProps {
diff --git a/apps/minifront/src/components/shared/selectors/balance-selector.tsx b/apps/minifront/src/components/shared/selectors/balance-selector.tsx
index ac03176f43..845d1618f6 100644
--- a/apps/minifront/src/components/shared/selectors/balance-selector.tsx
+++ b/apps/minifront/src/components/shared/selectors/balance-selector.tsx
@@ -1,10 +1,14 @@
import { MagnifyingGlassIcon } from '@radix-ui/react-icons';
import { useId, useState } from 'react';
-import { IconInput } from '@penumbra-zone/ui/components/ui/icon-input';
-import { Dialog, DialogContent, DialogHeader } from '@penumbra-zone/ui/components/ui/dialog';
-import { ValueViewComponent } from '@penumbra-zone/ui/components/ui/value';
+import { IconInput } from '@penumbra-zone/ui-deprecated/components/ui/icon-input';
+import {
+ Dialog,
+ DialogContent,
+ DialogHeader,
+} from '@penumbra-zone/ui-deprecated/components/ui/dialog';
+import { ValueViewComponent } from '@penumbra-zone/ui-deprecated/components/ui/value';
import { BalancesResponse } from '@penumbra-zone/protobuf/penumbra/view/v1/view_pb';
-import { Box } from '@penumbra-zone/ui/components/ui/box';
+import { Box } from '@penumbra-zone/ui-deprecated/components/ui/box';
import { motion } from 'framer-motion';
import { Metadata } from '@penumbra-zone/protobuf/penumbra/core/asset/v1/asset_pb';
import { emptyBalanceResponse } from '../../../utils/empty-balance-response';
@@ -16,7 +20,7 @@ import {
useSyncSelectedBalance,
} from './helpers';
import { BalanceItem } from './balance-item';
-import { cn } from '@penumbra-zone/ui/lib/utils';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
import { LoadingIndicator } from './loading-indicator';
import {
Table,
@@ -24,7 +28,7 @@ import {
TableHead,
TableHeader,
TableRow,
-} from '@penumbra-zone/ui/components/ui/table';
+} from '@penumbra-zone/ui-deprecated/components/ui/table';
interface BalanceSelectorProps {
value: BalancesResponse | undefined;
diff --git a/apps/minifront/src/components/shared/tabs.tsx b/apps/minifront/src/components/shared/tabs.tsx
index 2a0488bf2f..3804684d3a 100644
--- a/apps/minifront/src/components/shared/tabs.tsx
+++ b/apps/minifront/src/components/shared/tabs.tsx
@@ -1,6 +1,6 @@
import { PagePath } from '../metadata/paths';
import { useNavigate } from 'react-router-dom';
-import { SegmentedPicker } from '@penumbra-zone/ui/components/ui/segmented-picker';
+import { SegmentedPicker } from '@penumbra-zone/ui-deprecated/components/ui/segmented-picker';
import { ComponentProps } from 'react';
export interface Tab {
diff --git a/apps/minifront/src/components/staking/account/delegation-value-view/index.tsx b/apps/minifront/src/components/staking/account/delegation-value-view/index.tsx
index 4d3b61027a..b14e23b032 100644
--- a/apps/minifront/src/components/staking/account/delegation-value-view/index.tsx
+++ b/apps/minifront/src/components/staking/account/delegation-value-view/index.tsx
@@ -1,6 +1,6 @@
import { ValueView } from '@penumbra-zone/protobuf/penumbra/core/asset/v1/asset_pb';
import { ValidatorInfoComponent } from './validator-info-component';
-import { ValueViewComponent } from '@penumbra-zone/ui/components/ui/value';
+import { ValueViewComponent } from '@penumbra-zone/ui-deprecated/components/ui/value';
import { StakingActions } from './staking-actions';
import { memo, useMemo } from 'react';
import {
diff --git a/apps/minifront/src/components/staking/account/delegation-value-view/staking-actions/form-dialog.tsx b/apps/minifront/src/components/staking/account/delegation-value-view/staking-actions/form-dialog.tsx
index 0c5f9f6537..b7e5fd5f6b 100644
--- a/apps/minifront/src/components/staking/account/delegation-value-view/staking-actions/form-dialog.tsx
+++ b/apps/minifront/src/components/staking/account/delegation-value-view/staking-actions/form-dialog.tsx
@@ -1,18 +1,18 @@
-import { Button } from '@penumbra-zone/ui/components/ui/button';
+import { Button } from '@penumbra-zone/ui-deprecated/components/ui/button';
import {
Dialog,
DialogClose,
DialogContent,
DialogHeader,
-} from '@penumbra-zone/ui/components/ui/dialog';
-import { IdentityKeyComponent } from '@penumbra-zone/ui/components/ui/identity-key-component';
+} from '@penumbra-zone/ui-deprecated/components/ui/dialog';
+import { IdentityKeyComponent } from '@penumbra-zone/ui-deprecated/components/ui/identity-key-component';
import { InputBlock } from '../../../../shared/input-block';
import { Validator } from '@penumbra-zone/protobuf/penumbra/core/component/stake/v1/stake_pb';
import { ValueView } from '@penumbra-zone/protobuf/penumbra/core/asset/v1/asset_pb';
import { FormEvent } from 'react';
import { getIdentityKey } from '@penumbra-zone/getters/validator';
import { getFormattedAmtFromValueView } from '@penumbra-zone/types/value-view';
-import { BalanceValueView } from '@penumbra-zone/ui/components/ui/balance-value-view';
+import { BalanceValueView } from '@penumbra-zone/ui-deprecated/components/ui/balance-value-view';
import { NumberInput } from '../../../../shared/number-input';
import { CircleAlert } from 'lucide-react';
import { useStoreShallow } from '../../../../../utils/use-store-shallow.ts';
diff --git a/apps/minifront/src/components/staking/account/delegation-value-view/staking-actions/index.tsx b/apps/minifront/src/components/staking/account/delegation-value-view/staking-actions/index.tsx
index 3009e061c8..84a6651a9f 100644
--- a/apps/minifront/src/components/staking/account/delegation-value-view/staking-actions/index.tsx
+++ b/apps/minifront/src/components/staking/account/delegation-value-view/staking-actions/index.tsx
@@ -1,4 +1,4 @@
-import { Button } from '@penumbra-zone/ui/components/ui/button';
+import { Button } from '@penumbra-zone/ui-deprecated/components/ui/button';
import { ValidatorInfo } from '@penumbra-zone/protobuf/penumbra/core/component/stake/v1/stake_pb';
import { ValueView } from '@penumbra-zone/protobuf/penumbra/core/asset/v1/asset_pb';
import { FormDialog } from './form-dialog';
diff --git a/apps/minifront/src/components/staking/account/delegation-value-view/validator-info-component.tsx b/apps/minifront/src/components/staking/account/delegation-value-view/validator-info-component.tsx
index c217018f4f..cb1554b22a 100644
--- a/apps/minifront/src/components/staking/account/delegation-value-view/validator-info-component.tsx
+++ b/apps/minifront/src/components/staking/account/delegation-value-view/validator-info-component.tsx
@@ -1,11 +1,11 @@
import { ValidatorInfo } from '@penumbra-zone/protobuf/penumbra/core/component/stake/v1/stake_pb';
-import { IdentityKeyComponent } from '@penumbra-zone/ui/components/ui/identity-key-component';
+import { IdentityKeyComponent } from '@penumbra-zone/ui-deprecated/components/ui/identity-key-component';
import {
Tooltip,
TooltipContent,
TooltipProvider,
TooltipTrigger,
-} from '@penumbra-zone/ui/components/ui/tooltip';
+} from '@penumbra-zone/ui-deprecated/components/ui/tooltip';
import { useStore } from '../../../../state';
import {
getIdentityKeyFromValidatorInfo,
@@ -14,7 +14,7 @@ import {
} from '@penumbra-zone/getters/validator-info';
import { calculateCommissionAsPercentage } from '@penumbra-zone/types/staking';
import { Metadata } from '@penumbra-zone/protobuf/penumbra/core/asset/v1/asset_pb';
-import { AssetIcon } from '@penumbra-zone/ui/components/ui/asset-icon';
+import { AssetIcon } from '@penumbra-zone/ui-deprecated/components/ui/asset-icon';
import { ValidatorStateLabel } from './validator-state-label.tsx';
/**
diff --git a/apps/minifront/src/components/staking/account/delegation-value-view/validator-state-label.tsx b/apps/minifront/src/components/staking/account/delegation-value-view/validator-state-label.tsx
index ed41aa0722..3b4da9900e 100644
--- a/apps/minifront/src/components/staking/account/delegation-value-view/validator-state-label.tsx
+++ b/apps/minifront/src/components/staking/account/delegation-value-view/validator-state-label.tsx
@@ -1,5 +1,5 @@
import { ValidatorState_ValidatorStateEnum } from '@penumbra-zone/protobuf/penumbra/core/component/stake/v1/stake_pb';
-import { cn } from '@penumbra-zone/ui/lib/utils';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
interface LabelInfo {
label: string;
diff --git a/apps/minifront/src/components/staking/account/header/index.tsx b/apps/minifront/src/components/staking/account/header/index.tsx
index 16ba56d540..0d730c0de5 100644
--- a/apps/minifront/src/components/staking/account/header/index.tsx
+++ b/apps/minifront/src/components/staking/account/header/index.tsx
@@ -1,7 +1,7 @@
-import { Button } from '@penumbra-zone/ui/components/ui/button';
-import { Card, CardContent } from '@penumbra-zone/ui/components/ui/card';
-import { AccountSwitcher } from '@penumbra-zone/ui/components/ui/account-switcher';
-import { ValueViewComponent } from '@penumbra-zone/ui/components/ui/value';
+import { Button } from '@penumbra-zone/ui-deprecated/components/ui/button';
+import { Card, CardContent } from '@penumbra-zone/ui-deprecated/components/ui/card';
+import { AccountSwitcher } from '@penumbra-zone/ui-deprecated/components/ui/account-switcher';
+import { ValueViewComponent } from '@penumbra-zone/ui-deprecated/components/ui/value';
import { Stat } from './stat';
import { AllSlices } from '../../../../state';
import { UnbondingTokens } from './unbonding-tokens';
diff --git a/apps/minifront/src/components/staking/account/header/unbonding-tokens.tsx b/apps/minifront/src/components/staking/account/header/unbonding-tokens.tsx
index 712e15d8ed..a33a7f052e 100644
--- a/apps/minifront/src/components/staking/account/header/unbonding-tokens.tsx
+++ b/apps/minifront/src/components/staking/account/header/unbonding-tokens.tsx
@@ -5,8 +5,8 @@ import {
Tooltip,
TooltipTrigger,
TooltipContent,
-} from '@penumbra-zone/ui/components/ui/tooltip';
-import { ValueViewComponent } from '@penumbra-zone/ui/components/ui/value';
+} from '@penumbra-zone/ui-deprecated/components/ui/tooltip';
+import { ValueViewComponent } from '@penumbra-zone/ui-deprecated/components/ui/value';
import { ReactNode } from 'react';
import { zeroValueView } from '../../../../utils/zero-value-view';
diff --git a/apps/minifront/src/components/staking/layout.tsx b/apps/minifront/src/components/staking/layout.tsx
index 90ca2c5c85..c127c401a1 100644
--- a/apps/minifront/src/components/staking/layout.tsx
+++ b/apps/minifront/src/components/staking/layout.tsx
@@ -1,6 +1,11 @@
import { useEffect } from 'react';
import { AllSlices } from '../../state';
-import { Card, CardContent, CardHeader, CardTitle } from '@penumbra-zone/ui/components/ui/card';
+import {
+ Card,
+ CardContent,
+ CardHeader,
+ CardTitle,
+} from '@penumbra-zone/ui-deprecated/components/ui/card';
import { Header } from './account/header';
import { Delegations } from './account/delegations';
import { useStoreShallow } from '../../utils/use-store-shallow';
diff --git a/apps/minifront/src/components/staking/validator-info-row.tsx b/apps/minifront/src/components/staking/validator-info-row.tsx
index 3c15f2a670..06b1070eab 100644
--- a/apps/minifront/src/components/staking/validator-info-row.tsx
+++ b/apps/minifront/src/components/staking/validator-info-row.tsx
@@ -1,5 +1,5 @@
import { ValidatorInfo } from '@penumbra-zone/protobuf/penumbra/core/component/stake/v1/stake_pb';
-import { TableCell, TableRow } from '@penumbra-zone/ui/components/ui/table';
+import { TableCell, TableRow } from '@penumbra-zone/ui-deprecated/components/ui/table';
import { ReactNode } from 'react';
import { Oval } from 'react-loader-spinner';
import { getValidator } from '@penumbra-zone/getters/validator-info';
diff --git a/apps/minifront/src/components/staking/validators-table.tsx b/apps/minifront/src/components/staking/validators-table.tsx
index e38cce5014..ab88cd16b7 100644
--- a/apps/minifront/src/components/staking/validators-table.tsx
+++ b/apps/minifront/src/components/staking/validators-table.tsx
@@ -5,7 +5,7 @@ import {
TableHead,
TableHeader,
TableRow,
-} from '@penumbra-zone/ui/components/ui/table';
+} from '@penumbra-zone/ui-deprecated/components/ui/table';
import { Oval } from 'react-loader-spinner';
import { ValidatorInfoRow } from './validator-info-row';
import { ValidatorInfo } from '@penumbra-zone/protobuf/penumbra/core/component/stake/v1/stake_pb';
diff --git a/apps/minifront/src/components/swap/auction-list/end-or-withdraw-all-button.tsx b/apps/minifront/src/components/swap/auction-list/end-or-withdraw-all-button.tsx
index a6152e2b40..f2e0ec5a33 100644
--- a/apps/minifront/src/components/swap/auction-list/end-or-withdraw-all-button.tsx
+++ b/apps/minifront/src/components/swap/auction-list/end-or-withdraw-all-button.tsx
@@ -1,6 +1,6 @@
import { useAuctionInfos } from '../../../state/swap/dutch-auction';
import { AddressIndex } from '@penumbra-zone/protobuf/penumbra/core/keys/v1/keys_pb';
-import { Button } from '@penumbra-zone/ui/components/ui/button';
+import { Button } from '@penumbra-zone/ui-deprecated/components/ui/button';
import { AllSlices } from '../../../state';
import { useStoreShallow } from '../../../utils/use-store-shallow.ts';
import { filterWithLimit } from './helpers.ts';
@@ -9,7 +9,7 @@ import {
TooltipContent,
TooltipProvider,
TooltipTrigger,
-} from '@penumbra-zone/ui/components/ui/tooltip';
+} from '@penumbra-zone/ui-deprecated/components/ui/tooltip';
import { AuctionInfo } from '../../../fetchers/auction-infos.ts';
const endOrWithdrawAllButtonSelector = (state: AllSlices) => ({
diff --git a/apps/minifront/src/components/swap/auction-list/filters.tsx b/apps/minifront/src/components/swap/auction-list/filters.tsx
index a9f58f70b2..7b85ec6a5d 100644
--- a/apps/minifront/src/components/swap/auction-list/filters.tsx
+++ b/apps/minifront/src/components/swap/auction-list/filters.tsx
@@ -1,7 +1,7 @@
import { ListFilter } from 'lucide-react';
import { AllSlices } from '../../../state';
import { useStoreShallow } from '../../../utils/use-store-shallow';
-import { PopoverMenu, PopoverMenuItem } from '@penumbra-zone/ui/components/ui/popover';
+import { PopoverMenu, PopoverMenuItem } from '@penumbra-zone/ui-deprecated/components/ui/popover';
import type { Filter as TFilter } from '../../../state/swap/dutch-auction';
const filtersSelector = (state: AllSlices) => ({
diff --git a/apps/minifront/src/components/swap/auction-list/index.tsx b/apps/minifront/src/components/swap/auction-list/index.tsx
index 4a480b80d0..2707f96a69 100644
--- a/apps/minifront/src/components/swap/auction-list/index.tsx
+++ b/apps/minifront/src/components/swap/auction-list/index.tsx
@@ -1,10 +1,10 @@
import { AllSlices } from '../../../state';
-import { DutchAuctionComponent } from '@penumbra-zone/ui/components/ui/dutch-auction-component';
+import { DutchAuctionComponent } from '@penumbra-zone/ui-deprecated/components/ui/dutch-auction-component';
import { useStoreShallow } from '../../../utils/use-store-shallow';
import { AuctionId } from '@penumbra-zone/protobuf/penumbra/core/component/auction/v1/auction_pb';
-import { GradientHeader } from '@penumbra-zone/ui/components/ui/gradient-header';
+import { GradientHeader } from '@penumbra-zone/ui-deprecated/components/ui/gradient-header';
import { QueryLatestStateButton } from './query-latest-state-button';
-import { Card } from '@penumbra-zone/ui/components/ui/card';
+import { Card } from '@penumbra-zone/ui-deprecated/components/ui/card';
import { bech32mAuctionId } from '@penumbra-zone/bech32m/pauctid';
import { useMemo } from 'react';
import { getFilteredAuctionInfos } from './get-filtered-auction-infos';
diff --git a/apps/minifront/src/components/swap/auction-list/query-latest-state-button.tsx b/apps/minifront/src/components/swap/auction-list/query-latest-state-button.tsx
index 868e764293..42668b1cac 100644
--- a/apps/minifront/src/components/swap/auction-list/query-latest-state-button.tsx
+++ b/apps/minifront/src/components/swap/auction-list/query-latest-state-button.tsx
@@ -3,10 +3,10 @@ import {
TooltipContent,
TooltipProvider,
TooltipTrigger,
-} from '@penumbra-zone/ui/components/ui/tooltip';
+} from '@penumbra-zone/ui-deprecated/components/ui/tooltip';
import { ReloadIcon } from '@radix-ui/react-icons';
import { useAuctionInfos, useRevalidateAuctionInfos } from '../../../state/swap/dutch-auction';
-import { cn } from '@penumbra-zone/ui/lib/utils';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
export const QueryLatestStateButton = () => {
const { loading } = useAuctionInfos();
diff --git a/apps/minifront/src/components/swap/duration-slider.tsx b/apps/minifront/src/components/swap/duration-slider.tsx
index 9fcd59bc2c..1b239de3d7 100644
--- a/apps/minifront/src/components/swap/duration-slider.tsx
+++ b/apps/minifront/src/components/swap/duration-slider.tsx
@@ -1,4 +1,4 @@
-import { Slider } from '@penumbra-zone/ui/components/ui/slider';
+import { Slider } from '@penumbra-zone/ui-deprecated/components/ui/slider';
import { DURATION_OPTIONS, GDA_RECIPES } from '../../state/swap/constants';
import { useStoreShallow } from '../../utils/use-store-shallow';
import { AllSlices } from '../../state';
diff --git a/apps/minifront/src/components/swap/lp-positions.tsx b/apps/minifront/src/components/swap/lp-positions.tsx
index 161e4e4219..93ec9629f1 100644
--- a/apps/minifront/src/components/swap/lp-positions.tsx
+++ b/apps/minifront/src/components/swap/lp-positions.tsx
@@ -1,5 +1,5 @@
-import { Card } from '@penumbra-zone/ui/components/ui/card';
-import { GradientHeader } from '@penumbra-zone/ui/components/ui/gradient-header';
+import { Card } from '@penumbra-zone/ui-deprecated/components/ui/card';
+import { GradientHeader } from '@penumbra-zone/ui-deprecated/components/ui/gradient-header';
import { useOwnedPositions } from '../../state/swap/lp-positions.ts';
import { bech32mPositionId } from '@penumbra-zone/bech32m/plpid';
diff --git a/apps/minifront/src/components/swap/swap-form/estimate-button.tsx b/apps/minifront/src/components/swap/swap-form/estimate-button.tsx
index 602852bc9b..fc06eeee5f 100644
--- a/apps/minifront/src/components/swap/swap-form/estimate-button.tsx
+++ b/apps/minifront/src/components/swap/swap-form/estimate-button.tsx
@@ -1,11 +1,11 @@
-import { buttonVariants } from '@penumbra-zone/ui/components/ui/button';
+import { buttonVariants } from '@penumbra-zone/ui-deprecated/components/ui/button';
import {
Tooltip,
TooltipProvider,
TooltipTrigger,
TooltipContent,
-} from '@penumbra-zone/ui/components/ui/tooltip';
-import { cn } from '@penumbra-zone/ui/lib/utils';
+} from '@penumbra-zone/ui-deprecated/components/ui/tooltip';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
export const EstimateButton = ({
disabled,
diff --git a/apps/minifront/src/components/swap/swap-form/index.tsx b/apps/minifront/src/components/swap/swap-form/index.tsx
index c61b45d4ff..3c914c2154 100644
--- a/apps/minifront/src/components/swap/swap-form/index.tsx
+++ b/apps/minifront/src/components/swap/swap-form/index.tsx
@@ -1,11 +1,11 @@
-import { Button } from '@penumbra-zone/ui/components/ui/button';
+import { Button } from '@penumbra-zone/ui-deprecated/components/ui/button';
import { AllSlices } from '../../../state';
import { TokenSwapInput } from './token-swap-input';
import { useStoreShallow } from '../../../utils/use-store-shallow';
import { DurationSlider } from '../duration-slider';
import { InputBlock } from '../../shared/input-block';
import { Output } from './output';
-import { Card } from '@penumbra-zone/ui/components/ui/card';
+import { Card } from '@penumbra-zone/ui-deprecated/components/ui/card';
import { SimulateSwap } from './simulate-swap';
import { LayoutGroup } from 'framer-motion';
import { useId } from 'react';
diff --git a/apps/minifront/src/components/swap/swap-form/output/index.tsx b/apps/minifront/src/components/swap/swap-form/output/index.tsx
index 0569f48ae1..b044c2b9a3 100644
--- a/apps/minifront/src/components/swap/swap-form/output/index.tsx
+++ b/apps/minifront/src/components/swap/swap-form/output/index.tsx
@@ -1,4 +1,4 @@
-import { Box } from '@penumbra-zone/ui/components/ui/box';
+import { Box } from '@penumbra-zone/ui-deprecated/components/ui/box';
import { AllSlices } from '../../../../state';
import { useStoreShallow } from '../../../../utils/use-store-shallow';
import { EstimateButton } from '../estimate-button';
diff --git a/apps/minifront/src/components/swap/swap-form/price-history.tsx b/apps/minifront/src/components/swap/swap-form/price-history.tsx
index d143245b90..f590c481fa 100644
--- a/apps/minifront/src/components/swap/swap-form/price-history.tsx
+++ b/apps/minifront/src/components/swap/swap-form/price-history.tsx
@@ -1,7 +1,7 @@
import { getMetadataFromBalancesResponse } from '@penumbra-zone/getters/balances-response';
import { AbridgedZQueryState } from '@penumbra-zone/zquery/src/types';
-import { Box } from '@penumbra-zone/ui/components/ui/box';
-import { CandlestickPlot } from '@penumbra-zone/ui/components/ui/candlestick-plot';
+import { Box } from '@penumbra-zone/ui-deprecated/components/ui/box';
+import { CandlestickPlot } from '@penumbra-zone/ui-deprecated/components/ui/candlestick-plot';
import { useEffect, useMemo, useState } from 'react';
import { getBlockDate } from '../../../fetchers/block-date';
import { AllSlices } from '../../../state';
@@ -9,7 +9,7 @@ import { useStatus } from '../../../state/status';
import { combinedCandlestickDataSelector } from '../../../state/swap/helpers';
import { useCandles, useRevalidateCandles } from '../../../state/swap/price-history';
import { useStoreShallow } from '../../../utils/use-store-shallow';
-import { Button } from '@penumbra-zone/ui/components/ui/button';
+import { Button } from '@penumbra-zone/ui-deprecated/components/ui/button';
const priceHistorySelector = (state: AllSlices) => ({
startMetadata: getMetadataFromBalancesResponse.optional(state.swap.assetIn),
diff --git a/apps/minifront/src/components/swap/swap-form/simulate-swap-result/index.tsx b/apps/minifront/src/components/swap/swap-form/simulate-swap-result/index.tsx
index b019e4636c..488ace2644 100644
--- a/apps/minifront/src/components/swap/swap-form/simulate-swap-result/index.tsx
+++ b/apps/minifront/src/components/swap/swap-form/simulate-swap-result/index.tsx
@@ -1,4 +1,4 @@
-import { ValueViewComponent } from '@penumbra-zone/ui/components/ui/value';
+import { ValueViewComponent } from '@penumbra-zone/ui-deprecated/components/ui/value';
import { PriceImpact } from './price-impact';
import { motion } from 'framer-motion';
import { SimulateSwapResult as TSimulateSwapResult } from '../../../../state/swap';
diff --git a/apps/minifront/src/components/swap/swap-form/simulate-swap-result/price-impact.tsx b/apps/minifront/src/components/swap/swap-form/simulate-swap-result/price-impact.tsx
index 5d7790c250..76a951f054 100644
--- a/apps/minifront/src/components/swap/swap-form/simulate-swap-result/price-impact.tsx
+++ b/apps/minifront/src/components/swap/swap-form/simulate-swap-result/price-impact.tsx
@@ -1,6 +1,6 @@
import { formatNumber } from '@penumbra-zone/types/amount';
-import { Pill } from '@penumbra-zone/ui/components/ui/pill';
-import { cn } from '@penumbra-zone/ui/lib/utils';
+import { Pill } from '@penumbra-zone/ui-deprecated/components/ui/pill';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
// The price hit the user takes as a consequence of moving the market with the size of their trade
export const PriceImpact = ({ amount = 0 }: { amount?: number }) => {
diff --git a/apps/minifront/src/components/swap/swap-form/simulate-swap-result/traces/index.tsx b/apps/minifront/src/components/swap/swap-form/simulate-swap-result/traces/index.tsx
index 4fa15e8c39..bae3cac392 100644
--- a/apps/minifront/src/components/swap/swap-form/simulate-swap-result/traces/index.tsx
+++ b/apps/minifront/src/components/swap/swap-form/simulate-swap-result/traces/index.tsx
@@ -1,7 +1,7 @@
import { SwapExecution_Trace } from '@penumbra-zone/protobuf/penumbra/core/component/dex/v1/dex_pb';
import { Trace } from './trace';
import { Metadata, ValueView } from '@penumbra-zone/protobuf/penumbra/core/asset/v1/asset_pb';
-import { ValueViewComponent } from '@penumbra-zone/ui/components/ui/value';
+import { ValueViewComponent } from '@penumbra-zone/ui-deprecated/components/ui/value';
import { ArrowDown, ArrowUp } from 'lucide-react';
export const Traces = ({
diff --git a/apps/minifront/src/components/swap/swap-form/simulate-swap-result/traces/trace/index.tsx b/apps/minifront/src/components/swap/swap-form/simulate-swap-result/traces/trace/index.tsx
index 7fa47652ed..0b554e3dc3 100644
--- a/apps/minifront/src/components/swap/swap-form/simulate-swap-result/traces/trace/index.tsx
+++ b/apps/minifront/src/components/swap/swap-form/simulate-swap-result/traces/trace/index.tsx
@@ -5,7 +5,7 @@ import {
} from '@penumbra-zone/protobuf/penumbra/core/asset/v1/asset_pb';
import { SwapExecution_Trace } from '@penumbra-zone/protobuf/penumbra/core/component/dex/v1/dex_pb';
import { bech32mAssetId } from '@penumbra-zone/bech32m/passet';
-import { ValueViewComponent } from '@penumbra-zone/ui/components/ui/value';
+import { ValueViewComponent } from '@penumbra-zone/ui-deprecated/components/ui/value';
import { Price } from './price';
const getValueView = (metadataByAssetId: Record, { amount, assetId }: Value) =>
diff --git a/apps/minifront/src/components/swap/swap-form/simulate-swap.tsx b/apps/minifront/src/components/swap/swap-form/simulate-swap.tsx
index af71b85950..ef44742e22 100644
--- a/apps/minifront/src/components/swap/swap-form/simulate-swap.tsx
+++ b/apps/minifront/src/components/swap/swap-form/simulate-swap.tsx
@@ -1,4 +1,4 @@
-import { Box } from '@penumbra-zone/ui/components/ui/box';
+import { Box } from '@penumbra-zone/ui-deprecated/components/ui/box';
import { SimulateSwapResult } from './simulate-swap-result';
import { AllSlices } from '../../../state';
import { useStoreShallow } from '../../../utils/use-store-shallow';
diff --git a/apps/minifront/src/components/swap/swap-form/token-swap-input.tsx b/apps/minifront/src/components/swap/swap-form/token-swap-input.tsx
index 24e0c7a161..4afbd4add5 100644
--- a/apps/minifront/src/components/swap/swap-form/token-swap-input.tsx
+++ b/apps/minifront/src/components/swap/swap-form/token-swap-input.tsx
@@ -1,7 +1,7 @@
-import { BalanceValueView } from '@penumbra-zone/ui/components/ui/balance-value-view';
+import { BalanceValueView } from '@penumbra-zone/ui-deprecated/components/ui/balance-value-view';
import { BalancesResponse } from '@penumbra-zone/protobuf/penumbra/view/v1/view_pb';
import { Metadata } from '@penumbra-zone/protobuf/penumbra/core/asset/v1/asset_pb';
-import { Box } from '@penumbra-zone/ui/components/ui/box';
+import { Box } from '@penumbra-zone/ui-deprecated/components/ui/box';
import { joinLoHiAmount } from '@penumbra-zone/types/amount';
import { getAmount, getBalanceView } from '@penumbra-zone/getters/balances-response';
import { ArrowRight } from 'lucide-react';
diff --git a/apps/minifront/src/components/swap/unclaimed-swaps.tsx b/apps/minifront/src/components/swap/unclaimed-swaps.tsx
index b2c5bb001f..d1805eaac5 100644
--- a/apps/minifront/src/components/swap/unclaimed-swaps.tsx
+++ b/apps/minifront/src/components/swap/unclaimed-swaps.tsx
@@ -1,11 +1,11 @@
-import { Button } from '@penumbra-zone/ui/components/ui/button';
-import { Card } from '@penumbra-zone/ui/components/ui/card';
-import { AssetIcon } from '@penumbra-zone/ui/components/ui/asset-icon';
+import { Button } from '@penumbra-zone/ui-deprecated/components/ui/button';
+import { Card } from '@penumbra-zone/ui-deprecated/components/ui/card';
+import { AssetIcon } from '@penumbra-zone/ui-deprecated/components/ui/asset-icon';
import { AllSlices } from '../../state';
import { useUnclaimedSwaps } from '../../state/unclaimed-swaps';
import { getSwapRecordCommitment } from '@penumbra-zone/getters/swap-record';
import { uint8ArrayToBase64 } from '@penumbra-zone/types/base64';
-import { GradientHeader } from '@penumbra-zone/ui/components/ui/gradient-header';
+import { GradientHeader } from '@penumbra-zone/ui-deprecated/components/ui/gradient-header';
import { useStoreShallow } from '../../utils/use-store-shallow';
import { useState } from 'react';
import { SwapRecord } from '@penumbra-zone/protobuf/penumbra/view/v1/view_pb';
diff --git a/apps/minifront/src/components/syncing-dialog/index.tsx b/apps/minifront/src/components/syncing-dialog/index.tsx
index 72e8383ecb..7bb4e55d8f 100644
--- a/apps/minifront/src/components/syncing-dialog/index.tsx
+++ b/apps/minifront/src/components/syncing-dialog/index.tsx
@@ -1,9 +1,9 @@
-import { Dialog } from '@penumbra-zone/ui/Dialog';
+import { Dialog } from '@penumbra-zone/ui-deprecated/Dialog';
import { statusSelector, useStatus } from '../../state/status';
import { SyncAnimation } from './sync-animation';
-import { Text } from '@penumbra-zone/ui/Text';
+import { Text } from '@penumbra-zone/ui-deprecated/Text';
import { useEffect, useState } from 'react';
-import { useSyncProgress } from '@penumbra-zone/ui/components/ui/block-sync-status';
+import { useSyncProgress } from '@penumbra-zone/ui-deprecated/components/ui/block-sync-status';
export const SyncingDialog = () => {
const status = useStatus({
diff --git a/apps/minifront/src/components/tx-details/index.tsx b/apps/minifront/src/components/tx-details/index.tsx
index 0d14e980f2..62ad74738d 100644
--- a/apps/minifront/src/components/tx-details/index.tsx
+++ b/apps/minifront/src/components/tx-details/index.tsx
@@ -1,5 +1,5 @@
-import { Card } from '@penumbra-zone/ui/components/ui/card';
-import { FadeTransition } from '@penumbra-zone/ui/components/ui/fade-transition';
+import { Card } from '@penumbra-zone/ui-deprecated/components/ui/card';
+import { FadeTransition } from '@penumbra-zone/ui-deprecated/components/ui/fade-transition';
import { TxViewer } from './tx-viewer';
import { EduInfoCard } from '../shared/edu-panels/edu-info-card';
import { EduPanel } from '../shared/edu-panels/content';
diff --git a/apps/minifront/src/components/tx-details/tx-viewer.tsx b/apps/minifront/src/components/tx-details/tx-viewer.tsx
index a62b738513..3285f04e51 100644
--- a/apps/minifront/src/components/tx-details/tx-viewer.tsx
+++ b/apps/minifront/src/components/tx-details/tx-viewer.tsx
@@ -1,9 +1,12 @@
-import { JsonViewer } from '@penumbra-zone/ui/components/ui/json-viewer';
-import { MetadataFetchFn, TransactionViewComponent } from '@penumbra-zone/ui/components/ui/tx';
+import { JsonViewer } from '@penumbra-zone/ui-deprecated/components/ui/json-viewer';
+import {
+ MetadataFetchFn,
+ TransactionViewComponent,
+} from '@penumbra-zone/ui-deprecated/components/ui/tx';
import { TransactionInfo } from '@penumbra-zone/protobuf/penumbra/view/v1/view_pb';
import type { Jsonified } from '@penumbra-zone/types/jsonified';
import { useState } from 'react';
-import { SegmentedPicker } from '@penumbra-zone/ui/components/ui/segmented-picker';
+import { SegmentedPicker } from '@penumbra-zone/ui-deprecated/components/ui/segmented-picker';
import { asPublicTransactionView } from '@penumbra-zone/perspective/translators/transaction-view';
import { typeRegistry, ViewService } from '@penumbra-zone/protobuf';
import { useQuery } from '@tanstack/react-query';
diff --git a/apps/minifront/src/components/v2/dashboard-layout/assets-card-title.tsx b/apps/minifront/src/components/v2/dashboard-layout/assets-card-title.tsx
index 4bfef44535..8a234d0434 100644
--- a/apps/minifront/src/components/v2/dashboard-layout/assets-card-title.tsx
+++ b/apps/minifront/src/components/v2/dashboard-layout/assets-card-title.tsx
@@ -1,7 +1,7 @@
-import { Button } from '@penumbra-zone/ui/Button';
-import { CharacterTransition } from '@penumbra-zone/ui/CharacterTransition';
-import { Dialog } from '@penumbra-zone/ui/Dialog';
-import { Text } from '@penumbra-zone/ui/Text';
+import { Button } from '@penumbra-zone/ui-deprecated/Button';
+import { CharacterTransition } from '@penumbra-zone/ui-deprecated/CharacterTransition';
+import { Dialog } from '@penumbra-zone/ui-deprecated/Dialog';
+import { Text } from '@penumbra-zone/ui-deprecated/Text';
import { Info } from 'lucide-react';
import { useId } from 'react';
diff --git a/apps/minifront/src/components/v2/dashboard-layout/assets-page/equivalent-values.tsx b/apps/minifront/src/components/v2/dashboard-layout/assets-page/equivalent-values.tsx
index db172933e7..9ff11d9c22 100644
--- a/apps/minifront/src/components/v2/dashboard-layout/assets-page/equivalent-values.tsx
+++ b/apps/minifront/src/components/v2/dashboard-layout/assets-page/equivalent-values.tsx
@@ -1,7 +1,7 @@
import { ValueView } from '@penumbra-zone/protobuf/penumbra/core/asset/v1/asset_pb';
import { asValueView } from '@penumbra-zone/getters/equivalent-value';
import { getDisplayDenomFromView, getEquivalentValues } from '@penumbra-zone/getters/value-view';
-import { ValueViewComponent } from '@penumbra-zone/ui/ValueViewComponent';
+import { ValueViewComponent } from '@penumbra-zone/ui-deprecated/ValueViewComponent';
export const EquivalentValues = ({ valueView }: { valueView?: ValueView }) => {
const equivalentValuesAsValueViews = (getEquivalentValues.optional(valueView) ?? []).map(
diff --git a/apps/minifront/src/components/v2/dashboard-layout/assets-page/index.tsx b/apps/minifront/src/components/v2/dashboard-layout/assets-page/index.tsx
index 8ad96547cb..6ad65bc09e 100644
--- a/apps/minifront/src/components/v2/dashboard-layout/assets-page/index.tsx
+++ b/apps/minifront/src/components/v2/dashboard-layout/assets-page/index.tsx
@@ -1,5 +1,5 @@
-import { Density } from '@penumbra-zone/ui/Density';
-import { Table } from '@penumbra-zone/ui/Table';
+import { Density } from '@penumbra-zone/ui-deprecated/Density';
+import { Table } from '@penumbra-zone/ui-deprecated/Table';
import { BalancesByAccount, groupByAccount, useBalancesResponses } from '../../../../state/shared';
import { shouldDisplay } from '../../../../fetchers/balances/should-display';
import { sortByPriorityScore } from '../../../../fetchers/balances/by-priority-score';
@@ -8,14 +8,14 @@ import { getMetadataFromBalancesResponse } from '@penumbra-zone/getters/balances
import { PagePath } from '../../../metadata/paths';
import { getAddressIndex } from '@penumbra-zone/getters/address-view';
import { AbridgedZQueryState } from '@penumbra-zone/zquery/src/types';
-import { ValueViewComponent } from '@penumbra-zone/ui/ValueViewComponent';
+import { ValueViewComponent } from '@penumbra-zone/ui-deprecated/ValueViewComponent';
import { EquivalentValues } from './equivalent-values';
import { TableTitle } from './table-title';
import { Link } from 'react-router-dom';
-import { Button } from '@penumbra-zone/ui/Button';
+import { Button } from '@penumbra-zone/ui-deprecated/Button';
import { ArrowRightLeft } from 'lucide-react';
-import { useAnimationDeferredValue } from '@penumbra-zone/ui/hooks/useAnimationDeferredValue';
-import { ConditionalWrap } from '@penumbra-zone/ui/ConditionalWrap';
+import { useAnimationDeferredValue } from '@penumbra-zone/ui-deprecated/hooks/useAnimationDeferredValue';
+import { ConditionalWrap } from '@penumbra-zone/ui-deprecated/ConditionalWrap';
import { LayoutGroup } from 'framer-motion';
const getTradeLink = (balance: BalancesResponse): string => {
diff --git a/apps/minifront/src/components/v2/dashboard-layout/assets-page/table-title.tsx b/apps/minifront/src/components/v2/dashboard-layout/assets-page/table-title.tsx
index 17c0737b28..bc71dd6f29 100644
--- a/apps/minifront/src/components/v2/dashboard-layout/assets-page/table-title.tsx
+++ b/apps/minifront/src/components/v2/dashboard-layout/assets-page/table-title.tsx
@@ -1,4 +1,4 @@
-import { AddressViewComponent } from '@penumbra-zone/ui/AddressViewComponent';
+import { AddressViewComponent } from '@penumbra-zone/ui-deprecated/AddressViewComponent';
import { BalancesByAccount } from '../../../../state/shared';
import { AddressView } from '@penumbra-zone/protobuf/penumbra/core/keys/v1/keys_pb';
import { useMemo } from 'react';
diff --git a/apps/minifront/src/components/v2/dashboard-layout/index.tsx b/apps/minifront/src/components/v2/dashboard-layout/index.tsx
index 5f94517895..4e5c5859a7 100644
--- a/apps/minifront/src/components/v2/dashboard-layout/index.tsx
+++ b/apps/minifront/src/components/v2/dashboard-layout/index.tsx
@@ -1,7 +1,7 @@
-import { Card } from '@penumbra-zone/ui/Card';
+import { Card } from '@penumbra-zone/ui-deprecated/Card';
import { Outlet, useNavigate } from 'react-router-dom';
-import { Grid } from '@penumbra-zone/ui/Grid';
-import { Tabs } from '@penumbra-zone/ui/Tabs';
+import { Grid } from '@penumbra-zone/ui-deprecated/Grid';
+import { Tabs } from '@penumbra-zone/ui-deprecated/Tabs';
import { usePagePath } from '../../../fetchers/page-path';
import { PagePath } from '../../metadata/paths';
import { AssetsCardTitle } from './assets-card-title';
diff --git a/apps/minifront/src/components/v2/dashboard-layout/transactions-card-title.tsx b/apps/minifront/src/components/v2/dashboard-layout/transactions-card-title.tsx
index b4f03d3a1c..72f76c53c1 100644
--- a/apps/minifront/src/components/v2/dashboard-layout/transactions-card-title.tsx
+++ b/apps/minifront/src/components/v2/dashboard-layout/transactions-card-title.tsx
@@ -1,7 +1,7 @@
-import { Button } from '@penumbra-zone/ui/Button';
-import { CharacterTransition } from '@penumbra-zone/ui/CharacterTransition';
-import { Dialog } from '@penumbra-zone/ui/Dialog';
-import { Text } from '@penumbra-zone/ui/Text';
+import { Button } from '@penumbra-zone/ui-deprecated/Button';
+import { CharacterTransition } from '@penumbra-zone/ui-deprecated/CharacterTransition';
+import { Dialog } from '@penumbra-zone/ui-deprecated/Dialog';
+import { Text } from '@penumbra-zone/ui-deprecated/Text';
import { Info } from 'lucide-react';
import { useId } from 'react';
diff --git a/apps/minifront/src/components/v2/dashboard-layout/transactions-page/index.tsx b/apps/minifront/src/components/v2/dashboard-layout/transactions-page/index.tsx
index 3e87a6e2a8..ecaca48c5a 100644
--- a/apps/minifront/src/components/v2/dashboard-layout/transactions-page/index.tsx
+++ b/apps/minifront/src/components/v2/dashboard-layout/transactions-page/index.tsx
@@ -1,10 +1,10 @@
-import { Table } from '@penumbra-zone/ui/Table';
+import { Table } from '@penumbra-zone/ui-deprecated/Table';
import { useSummaries } from '../../../../state/transactions';
-import { Text } from '@penumbra-zone/ui/Text';
+import { Text } from '@penumbra-zone/ui-deprecated/Text';
import { Link } from 'react-router-dom';
import { SquareArrowOutUpRight } from 'lucide-react';
-import { Button } from '@penumbra-zone/ui/Button';
-import { useAnimationDeferredValue } from '@penumbra-zone/ui/hooks/useAnimationDeferredValue';
+import { Button } from '@penumbra-zone/ui-deprecated/Button';
+import { useAnimationDeferredValue } from '@penumbra-zone/ui-deprecated/hooks/useAnimationDeferredValue';
import { LayoutGroup } from 'framer-motion';
export const TransactionsPage = () => {
diff --git a/apps/minifront/src/components/v2/header/desktop-nav.tsx b/apps/minifront/src/components/v2/header/desktop-nav.tsx
index 8c4d9cfb52..b04c91fb09 100644
--- a/apps/minifront/src/components/v2/header/desktop-nav.tsx
+++ b/apps/minifront/src/components/v2/header/desktop-nav.tsx
@@ -1,6 +1,6 @@
import { useNavigate } from 'react-router-dom';
-import { Tabs } from '@penumbra-zone/ui/Tabs';
-import { Density } from '@penumbra-zone/ui/Density';
+import { Tabs } from '@penumbra-zone/ui-deprecated/Tabs';
+import { Density } from '@penumbra-zone/ui-deprecated/Density';
import { getV2Link } from '../get-v2-link.ts';
import { usePagePath } from '../../../fetchers/page-path.ts';
import { HEADER_LINKS } from './links.ts';
diff --git a/apps/minifront/src/components/v2/header/index.tsx b/apps/minifront/src/components/v2/header/index.tsx
index 87013fdfc4..30fd93130e 100644
--- a/apps/minifront/src/components/v2/header/index.tsx
+++ b/apps/minifront/src/components/v2/header/index.tsx
@@ -1,4 +1,4 @@
-import { Density } from '@penumbra-zone/ui/Density';
+import { Density } from '@penumbra-zone/ui-deprecated/Density';
import { HeaderLogo } from './logo.tsx';
import { ProviderPopover } from './provider-popover.tsx';
import { StatusPopover } from './status-popover.tsx';
diff --git a/apps/minifront/src/components/v2/header/mobile-nav.tsx b/apps/minifront/src/components/v2/header/mobile-nav.tsx
index 53781128b3..fdfdacc067 100644
--- a/apps/minifront/src/components/v2/header/mobile-nav.tsx
+++ b/apps/minifront/src/components/v2/header/mobile-nav.tsx
@@ -1,8 +1,8 @@
import { Menu, X } from 'lucide-react';
-import { Button } from '@penumbra-zone/ui/Button';
-import { Dialog } from '@penumbra-zone/ui/Dialog';
-import { Display } from '@penumbra-zone/ui/Display';
-import { MenuItem } from '@penumbra-zone/ui/MenuItem';
+import { Button } from '@penumbra-zone/ui-deprecated/Button';
+import { Dialog } from '@penumbra-zone/ui-deprecated/Dialog';
+import { Display } from '@penumbra-zone/ui-deprecated/Display';
+import { MenuItem } from '@penumbra-zone/ui-deprecated/MenuItem';
import { StatusPopover } from './status-popover.tsx';
import { ProviderPopover } from './provider-popover.tsx';
import { HeaderLogo } from './logo.tsx';
diff --git a/apps/minifront/src/components/v2/header/provider-popover.tsx b/apps/minifront/src/components/v2/header/provider-popover.tsx
index 1f8fa4b046..d92540c46c 100644
--- a/apps/minifront/src/components/v2/header/provider-popover.tsx
+++ b/apps/minifront/src/components/v2/header/provider-popover.tsx
@@ -1,8 +1,8 @@
import { useEffect, useMemo, useState } from 'react';
import { Link2Off } from 'lucide-react';
-import { Popover } from '@penumbra-zone/ui/Popover';
-import { Button } from '@penumbra-zone/ui/Button';
-import { Text } from '@penumbra-zone/ui/Text';
+import { Popover } from '@penumbra-zone/ui-deprecated/Popover';
+import { Button } from '@penumbra-zone/ui-deprecated/Button';
+import { Text } from '@penumbra-zone/ui-deprecated/Text';
import { penumbra } from '../../../penumbra.ts';
import { PenumbraManifest } from '@penumbra-zone/client';
diff --git a/apps/minifront/src/components/v2/header/status-popover.tsx b/apps/minifront/src/components/v2/header/status-popover.tsx
index f9305643f1..2a628ec0d7 100644
--- a/apps/minifront/src/components/v2/header/status-popover.tsx
+++ b/apps/minifront/src/components/v2/header/status-popover.tsx
@@ -1,9 +1,9 @@
import { Blocks } from 'lucide-react';
-import { Popover, PopoverContext } from '@penumbra-zone/ui/Popover';
-import { Button } from '@penumbra-zone/ui/Button';
-import { Density } from '@penumbra-zone/ui/Density';
-import { Pill } from '@penumbra-zone/ui/Pill';
-import { Text } from '@penumbra-zone/ui/Text';
+import { Popover, PopoverContext } from '@penumbra-zone/ui-deprecated/Popover';
+import { Button } from '@penumbra-zone/ui-deprecated/Button';
+import { Density } from '@penumbra-zone/ui-deprecated/Density';
+import { Pill } from '@penumbra-zone/ui-deprecated/Pill';
+import { Text } from '@penumbra-zone/ui-deprecated/Text';
import { statusSelector, useStatus } from '../../../state/status.ts';
import { useMemo } from 'react';
diff --git a/apps/minifront/src/components/v2/header/sync-bar.tsx b/apps/minifront/src/components/v2/header/sync-bar.tsx
index 83e8df2fe4..5415a0d4d2 100644
--- a/apps/minifront/src/components/v2/header/sync-bar.tsx
+++ b/apps/minifront/src/components/v2/header/sync-bar.tsx
@@ -1,5 +1,5 @@
import { statusSelector, useStatus } from '../../../state/status.ts';
-import { Progress } from '@penumbra-zone/ui/Progress';
+import { Progress } from '@penumbra-zone/ui-deprecated/Progress';
export const SyncBar = () => {
const status = useStatus({
diff --git a/apps/minifront/src/components/v2/layout.tsx b/apps/minifront/src/components/v2/layout.tsx
index 45ab15ac59..1d5d7f3123 100644
--- a/apps/minifront/src/components/v2/layout.tsx
+++ b/apps/minifront/src/components/v2/layout.tsx
@@ -1,7 +1,6 @@
-import { Display } from '@penumbra-zone/ui/Display';
+import { Display } from '@penumbra-zone/ui-deprecated/Display';
import { HeadTag } from '../metadata/head-tag';
import { Outlet } from 'react-router-dom';
-import { Toaster } from '@penumbra-zone/ui/components/ui/toaster';
import { SyncingDialog } from '../syncing-dialog';
import { Header } from './header';
import { SyncBar } from './header/sync-bar.tsx';
@@ -14,7 +13,6 @@ export const Layout = () => (
-
);
diff --git a/apps/minifront/src/components/v2/transfer-layout/index.tsx b/apps/minifront/src/components/v2/transfer-layout/index.tsx
index b590c94994..76068561af 100644
--- a/apps/minifront/src/components/v2/transfer-layout/index.tsx
+++ b/apps/minifront/src/components/v2/transfer-layout/index.tsx
@@ -1,7 +1,7 @@
-import { Card } from '@penumbra-zone/ui/Card';
+import { Card } from '@penumbra-zone/ui-deprecated/Card';
import { Outlet, useNavigate } from 'react-router-dom';
-import { Grid } from '@penumbra-zone/ui/Grid';
-import { Tabs } from '@penumbra-zone/ui/Tabs';
+import { Grid } from '@penumbra-zone/ui-deprecated/Grid';
+import { Tabs } from '@penumbra-zone/ui-deprecated/Tabs';
import { usePagePath } from '../../../fetchers/page-path';
import { PagePath } from '../../metadata/paths';
import { motion } from 'framer-motion';
diff --git a/apps/minifront/src/components/v2/transfer-layout/receive-page/index.tsx b/apps/minifront/src/components/v2/transfer-layout/receive-page/index.tsx
index a3808b2147..9cccb5f88f 100644
--- a/apps/minifront/src/components/v2/transfer-layout/receive-page/index.tsx
+++ b/apps/minifront/src/components/v2/transfer-layout/receive-page/index.tsx
@@ -1,6 +1,6 @@
-import { AccountSelector } from '@penumbra-zone/ui/AccountSelector';
-import { Card } from '@penumbra-zone/ui/Card';
-import { FormField } from '@penumbra-zone/ui/FormField';
+import { AccountSelector } from '@penumbra-zone/ui-deprecated/AccountSelector';
+import { Card } from '@penumbra-zone/ui-deprecated/Card';
+import { FormField } from '@penumbra-zone/ui-deprecated/FormField';
import { getAddrByIndex } from '../../../../fetchers/address';
export const ReceivePage = () => {
diff --git a/apps/minifront/src/components/v2/transfer-layout/send-page/index.tsx b/apps/minifront/src/components/v2/transfer-layout/send-page/index.tsx
index 53b9837d7b..847dd638d3 100644
--- a/apps/minifront/src/components/v2/transfer-layout/send-page/index.tsx
+++ b/apps/minifront/src/components/v2/transfer-layout/send-page/index.tsx
@@ -1,11 +1,11 @@
-import { Card } from '@penumbra-zone/ui/Card';
-import { FormField } from '@penumbra-zone/ui/FormField';
-import { SegmentedControl } from '@penumbra-zone/ui/SegmentedControl';
-import { TextInput } from '@penumbra-zone/ui/TextInput';
+import { Card } from '@penumbra-zone/ui-deprecated/Card';
+import { FormField } from '@penumbra-zone/ui-deprecated/FormField';
+import { SegmentedControl } from '@penumbra-zone/ui-deprecated/SegmentedControl';
+import { TextInput } from '@penumbra-zone/ui-deprecated/TextInput';
import { AllSlices } from '../../../../state';
import { sendValidationErrors } from '../../../../state/send';
import { FeeTier_Tier } from '@penumbra-zone/protobuf/penumbra/core/component/fee/v1/fee_pb';
-import { Button } from '@penumbra-zone/ui/Button';
+import { Button } from '@penumbra-zone/ui-deprecated/Button';
import { ArrowUpFromDot } from 'lucide-react';
import { useMemo } from 'react';
import { useStoreShallow } from '../../../../utils/use-store-shallow';
diff --git a/apps/minifront/src/icons/box.tsx b/apps/minifront/src/icons/box.tsx
index e4422bc14f..e840e8f3f0 100644
--- a/apps/minifront/src/icons/box.tsx
+++ b/apps/minifront/src/icons/box.tsx
@@ -1,4 +1,4 @@
-import { cn } from '@penumbra-zone/ui/lib/utils';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
export const BoxIcon = ({
stroke = '#BDB8B8',
diff --git a/apps/minifront/src/icons/drag-handle-dots.tsx b/apps/minifront/src/icons/drag-handle-dots.tsx
index f5c45a3bf3..5dcd44729e 100644
--- a/apps/minifront/src/icons/drag-handle-dots.tsx
+++ b/apps/minifront/src/icons/drag-handle-dots.tsx
@@ -1,4 +1,4 @@
-import { cn } from '@penumbra-zone/ui/lib/utils';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
export const DragHandleDotsIcon = ({
stroke = '#BDB8B8',
diff --git a/apps/minifront/src/icons/swap.tsx b/apps/minifront/src/icons/swap.tsx
index f8564e0179..788a62df48 100644
--- a/apps/minifront/src/icons/swap.tsx
+++ b/apps/minifront/src/icons/swap.tsx
@@ -1,4 +1,4 @@
-import { cn } from '@penumbra-zone/ui/lib/utils';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
export const SwapIcon = ({
stroke = '#BDB8B8',
diff --git a/apps/minifront/src/main.tsx b/apps/minifront/src/main.tsx
index bfbb86a17c..beccd56fc7 100644
--- a/apps/minifront/src/main.tsx
+++ b/apps/minifront/src/main.tsx
@@ -9,7 +9,7 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { useState } from 'react';
import { RouterProvider } from 'react-router-dom';
import { rootRouter } from './components/root-router';
-import { PenumbraUIProvider } from '@penumbra-zone/ui/PenumbraUIProvider';
+import { PenumbraUIProvider } from '@penumbra-zone/ui-deprecated/PenumbraUIProvider';
const Main = () => {
const [queryClient] = useState(() => new QueryClient());
diff --git a/apps/minifront/src/state/helpers.ts b/apps/minifront/src/state/helpers.ts
index 79e33e0200..385acf6895 100644
--- a/apps/minifront/src/state/helpers.ts
+++ b/apps/minifront/src/state/helpers.ts
@@ -16,7 +16,7 @@ import {
} from '@penumbra-zone/protobuf/penumbra/core/transaction/v1/transaction_pb';
import { TransactionId } from '@penumbra-zone/protobuf/penumbra/core/txhash/v1/txhash_pb';
import { PartialMessage } from '@bufbuild/protobuf';
-import { TransactionToast } from '@penumbra-zone/ui/lib/toast/transaction-toast';
+import { TransactionToast } from '@penumbra-zone/ui-deprecated/lib/toast/transaction-toast';
import { TransactionClassification } from '@penumbra-zone/perspective/transaction/classification';
import { uint8ArrayToHex } from '@penumbra-zone/types/hex';
import { fromValueView } from '@penumbra-zone/types/amount';
diff --git a/apps/minifront/src/state/ibc-in/index.tsx b/apps/minifront/src/state/ibc-in/index.tsx
index 783b1490c6..e7530c2efc 100644
--- a/apps/minifront/src/state/ibc-in/index.tsx
+++ b/apps/minifront/src/state/ibc-in/index.tsx
@@ -4,7 +4,7 @@ import { ChainWalletContext } from '@cosmos-kit/core';
import { AllSlices, SliceCreator } from '..';
import { getAddrByIndex } from '../../fetchers/address';
import { bech32mAddress } from '@penumbra-zone/bech32m/penumbra';
-import { Toast } from '@penumbra-zone/ui/lib/toast/toast';
+import { Toast } from '@penumbra-zone/ui-deprecated/lib/toast/toast';
import { shorten } from '@penumbra-zone/types/string';
import { Address } from '@penumbra-zone/protobuf/penumbra/core/keys/v1/keys_pb';
import { bech32CompatAddress } from '@penumbra-zone/bech32m/penumbracompat1';
diff --git a/apps/minifront/src/state/ibc-out.ts b/apps/minifront/src/state/ibc-out.ts
index 24b7d068fc..5a37e29c26 100644
--- a/apps/minifront/src/state/ibc-out.ts
+++ b/apps/minifront/src/state/ibc-out.ts
@@ -17,7 +17,7 @@ import { amountMoreThanBalance, isIncorrectDecimal, planBuildBroadcast } from '.
import { getAssetId } from '@penumbra-zone/getters/metadata';
import { assetPatterns } from '@penumbra-zone/types/assets';
import { bech32, bech32m } from 'bech32';
-import { errorToast } from '@penumbra-zone/ui/lib/toast/presets';
+import { errorToast } from '@penumbra-zone/ui-deprecated/lib/toast/presets';
import { Chain } from '@penumbra-labs/registry';
import { Metadata } from '@penumbra-zone/protobuf/penumbra/core/asset/v1/asset_pb';
import { Channel } from '@penumbra-zone/protobuf/ibc/core/channel/v1/channel_pb';
diff --git a/apps/minifront/src/state/swap/dutch-auction/index.ts b/apps/minifront/src/state/swap/dutch-auction/index.ts
index b3bdff1e21..40d436f871 100644
--- a/apps/minifront/src/state/swap/dutch-auction/index.ts
+++ b/apps/minifront/src/state/swap/dutch-auction/index.ts
@@ -11,7 +11,7 @@ import { sendSimulateTradeRequest } from '../helpers';
import { fromBaseUnitAmount, isZero, multiplyAmountByNumber } from '@penumbra-zone/types/amount';
import { getDisplayDenomExponent } from '@penumbra-zone/getters/metadata';
import { Amount } from '@penumbra-zone/protobuf/penumbra/core/num/v1/num_pb';
-import { errorToast } from '@penumbra-zone/ui/lib/toast/presets';
+import { errorToast } from '@penumbra-zone/ui-deprecated/lib/toast/presets';
import { ZQueryState, createZQuery } from '@penumbra-zone/zquery';
import { AuctionInfo, getAuctionInfos } from '../../../fetchers/auction-infos';
import { Metadata } from '@penumbra-zone/protobuf/penumbra/core/asset/v1/asset_pb';
diff --git a/apps/minifront/src/state/swap/instant-swap.ts b/apps/minifront/src/state/swap/instant-swap.ts
index 10092acf63..b55dd6fe02 100644
--- a/apps/minifront/src/state/swap/instant-swap.ts
+++ b/apps/minifront/src/state/swap/instant-swap.ts
@@ -10,7 +10,7 @@ import {
import { BigNumber } from 'bignumber.js';
import { getAddressByIndex } from '../../fetchers/address';
import { StateCommitment } from '@penumbra-zone/protobuf/penumbra/crypto/tct/v1/tct_pb';
-import { errorToast } from '@penumbra-zone/ui/lib/toast/presets';
+import { errorToast } from '@penumbra-zone/ui-deprecated/lib/toast/presets';
import {
SwapExecution,
SwapExecution_Trace,
diff --git a/apps/node-status/package.json b/apps/node-status/package.json
index fa169f2712..94360020d8 100644
--- a/apps/node-status/package.json
+++ b/apps/node-status/package.json
@@ -19,7 +19,7 @@
"@penumbra-zone/crypto-web": "workspace:*",
"@penumbra-zone/protobuf": "workspace:*",
"@penumbra-zone/types": "workspace:*",
- "@penumbra-zone/ui": "workspace:*",
+ "@penumbra-zone/ui-deprecated": "workspace:*",
"date-fns": "^3.6.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
diff --git a/apps/node-status/postcss.config.js b/apps/node-status/postcss.config.js
index 8e18cdcb77..2bdefa943e 100644
--- a/apps/node-status/postcss.config.js
+++ b/apps/node-status/postcss.config.js
@@ -1 +1 @@
-export { default } from '@penumbra-zone/ui/postcss.config.js';
+export { default } from '@penumbra-zone/ui-deprecated/postcss.config.js';
diff --git a/apps/node-status/src/components/error-boundary.tsx b/apps/node-status/src/components/error-boundary.tsx
index 3110463191..fdec27f87e 100644
--- a/apps/node-status/src/components/error-boundary.tsx
+++ b/apps/node-status/src/components/error-boundary.tsx
@@ -1,4 +1,4 @@
-import { SplashPage } from '@penumbra-zone/ui/components/ui/splash-page';
+import { SplashPage } from '@penumbra-zone/ui-deprecated/components/ui/splash-page';
import { useRouteError } from 'react-router-dom';
export const ErrorBoundary = () => {
diff --git a/apps/node-status/src/components/frontend-referral.tsx b/apps/node-status/src/components/frontend-referral.tsx
index cffca9789a..675339ca68 100644
--- a/apps/node-status/src/components/frontend-referral.tsx
+++ b/apps/node-status/src/components/frontend-referral.tsx
@@ -1,4 +1,4 @@
-import { Button } from '@penumbra-zone/ui/components/ui/button';
+import { Button } from '@penumbra-zone/ui-deprecated/components/ui/button';
import { devFrontend, prodFrontend } from '../constants';
export const FrontendReferral = () => {
diff --git a/apps/node-status/src/components/header.tsx b/apps/node-status/src/components/header.tsx
index 7581827bac..d63b5f0510 100644
--- a/apps/node-status/src/components/header.tsx
+++ b/apps/node-status/src/components/header.tsx
@@ -1,6 +1,6 @@
import { Link } from 'react-router-dom';
import { LineWave } from 'react-loader-spinner';
-import { cn } from '@penumbra-zone/ui/lib/utils';
+import { cn } from '@penumbra-zone/ui-deprecated/lib/utils';
import { useDelayedIsLoading } from '../fetching/refetch-hook';
export const Header = () => {
diff --git a/apps/node-status/src/components/node-info.tsx b/apps/node-status/src/components/node-info.tsx
index 2060b8a881..4dc1897856 100644
--- a/apps/node-status/src/components/node-info.tsx
+++ b/apps/node-status/src/components/node-info.tsx
@@ -1,6 +1,6 @@
import { useLoaderData } from 'react-router-dom';
-import { Card } from '@penumbra-zone/ui/components/ui/card';
-import { Identicon } from '@penumbra-zone/ui/components/ui/identicon';
+import { Card } from '@penumbra-zone/ui-deprecated/components/ui/card';
+import { Identicon } from '@penumbra-zone/ui-deprecated/components/ui/identicon';
import { IndexLoaderResponse } from '../fetching/loader';
import { uint8ArrayToString } from '@penumbra-zone/types/string';
diff --git a/apps/node-status/src/components/sync-info.tsx b/apps/node-status/src/components/sync-info.tsx
index c3c3db2a77..a3745391bd 100644
--- a/apps/node-status/src/components/sync-info.tsx
+++ b/apps/node-status/src/components/sync-info.tsx
@@ -1,6 +1,6 @@
import { useLoaderData } from 'react-router-dom';
import { IndexLoaderResponse } from '../fetching/loader';
-import { Card } from '@penumbra-zone/ui/components/ui/card';
+import { Card } from '@penumbra-zone/ui-deprecated/components/ui/card';
import { format } from 'date-fns';
import { SyncInfo as SyncInfoProto } from '@penumbra-zone/protobuf/penumbra/util/tendermint_proxy/v1/tendermint_proxy_pb';
diff --git a/apps/node-status/src/components/validator-info.tsx b/apps/node-status/src/components/validator-info.tsx
index d8f6a3d248..6b7018201d 100644
--- a/apps/node-status/src/components/validator-info.tsx
+++ b/apps/node-status/src/components/validator-info.tsx
@@ -1,5 +1,5 @@
import { useLoaderData } from 'react-router-dom';
-import { Card } from '@penumbra-zone/ui/components/ui/card';
+import { Card } from '@penumbra-zone/ui-deprecated/components/ui/card';
import { IndexLoaderResponse } from '../fetching/loader';
import { PublicKey } from '@penumbra-zone/protobuf/tendermint/crypto/keys_pb';
import { uint8ArrayToHex } from '@penumbra-zone/types/hex';
diff --git a/apps/node-status/src/main.tsx b/apps/node-status/src/main.tsx
index df941faf75..05300b73df 100644
--- a/apps/node-status/src/main.tsx
+++ b/apps/node-status/src/main.tsx
@@ -3,7 +3,7 @@ import { createRoot } from 'react-dom/client';
import { RouterProvider } from 'react-router-dom';
import { router } from './components/router';
-import '@penumbra-zone/ui/styles/globals.css';
+import '@penumbra-zone/ui-deprecated/styles/globals.css';
const Main = () => (
diff --git a/packages/tailwind-config/index.js b/packages/tailwind-config/index.js
index e78a25dddb..b374bf2d8e 100644
--- a/packages/tailwind-config/index.js
+++ b/packages/tailwind-config/index.js
@@ -2,7 +2,7 @@ import plugin from 'tailwindcss/plugin';
import tailwindCssAnimatePlugin from 'tailwindcss-animate';
// TODO: Replace the theme to v2 instead of partially using it
-import { tailwindConfig as v2TailwindConfig } from '@penumbra-zone/ui/tailwind';
+import { tailwindConfig as v2TailwindConfig } from '@penumbra-zone/ui-deprecated/tailwind';
/** @type {import('tailwindcss').Config} */
export default {
@@ -11,7 +11,8 @@ export default {
'./components/**/*.{ts,tsx}',
'./app/**/*.{ts,tsx}',
'./src/**/*.{ts,tsx}',
- '../../packages/ui/components/**/*.{ts,tsx}',
+ '../../packages/ui-deprecated/components/**/*.{ts,tsx}',
+ './node_modules/@penumbra-zone/ui-deprecated/components/**/*.{ts,tsx}',
'./shared/**/*.{ts,tsx}',
],
theme: {
diff --git a/packages/tailwind-config/package.json b/packages/tailwind-config/package.json
index 52b9ea25a6..5573bac1ff 100644
--- a/packages/tailwind-config/package.json
+++ b/packages/tailwind-config/package.json
@@ -5,7 +5,7 @@
"license": "(MIT OR Apache-2.0)",
"main": "index.js",
"dependencies": {
- "@penumbra-zone/ui": "workspace:*",
+ "@penumbra-zone/ui-deprecated": "workspace:*",
"tailwindcss": "^3.4.3",
"tailwindcss-animate": "^1.0.7"
}
diff --git a/packages/ui/.storybook/main.js b/packages/ui-deprecated/.storybook/main.js
similarity index 100%
rename from packages/ui/.storybook/main.js
rename to packages/ui-deprecated/.storybook/main.js
diff --git a/packages/ui/.storybook/manager.js b/packages/ui-deprecated/.storybook/manager.js
similarity index 100%
rename from packages/ui/.storybook/manager.js
rename to packages/ui-deprecated/.storybook/manager.js
diff --git a/packages/ui/.storybook/penumbraTheme.js b/packages/ui-deprecated/.storybook/penumbraTheme.js
similarity index 100%
rename from packages/ui/.storybook/penumbraTheme.js
rename to packages/ui-deprecated/.storybook/penumbraTheme.js
diff --git a/packages/ui/.storybook/preview.jsx b/packages/ui-deprecated/.storybook/preview.jsx
similarity index 100%
rename from packages/ui/.storybook/preview.jsx
rename to packages/ui-deprecated/.storybook/preview.jsx
diff --git a/packages/ui-tailwind/.storybook/public/logo.svg b/packages/ui-deprecated/.storybook/public/logo.svg
similarity index 100%
rename from packages/ui-tailwind/.storybook/public/logo.svg
rename to packages/ui-deprecated/.storybook/public/logo.svg
diff --git a/packages/ui/CHANGELOG.md b/packages/ui-deprecated/CHANGELOG.md
similarity index 100%
rename from packages/ui/CHANGELOG.md
rename to packages/ui-deprecated/CHANGELOG.md
diff --git a/packages/ui-deprecated/README.md b/packages/ui-deprecated/README.md
new file mode 100644
index 0000000000..8cacdb531d
--- /dev/null
+++ b/packages/ui-deprecated/README.md
@@ -0,0 +1,364 @@
+# Penumbra UI
+
+The Penumbra UI library is a set of UI components purpose-built for the Penumbra ecosystem. Use these components to get rendering of various Penumbra data types out of the box, and to create a UI that is consistent with other Penumbra UIs' look and feel.
+
+## Storybook
+
+All Penumbra UI components (except some deprecated ones) in the latest tagged release can be found at the Penumbra UI Storybook site: https://ui.penumbra.zone/
+
+To view the latest components merged to `main` (even if they are not yet in a tagged release), check out the Storybook Preview site: https://preview.ui.penumbra.zone/
+
+## Set up
+
+First, install the library:
+
+```bash
+npm install @penumbra-zone/ui
+```
+
+Then, use components by importing them from their specific files:
+
+```tsx
+import { ValueViewComponent } from '@penumbra-zone/ui/ValueViewComponent';
+```
+
+## Usage
+
+### Density
+
+Many Penumbra UI components come in two densities: `sparse` and `compact`. This feature allows Penumbra UI consumers to choose how to present data based on the context. For example, a table with dozens or hundreds of rows would be well suited to a `compact` density, while an interactive form could use the `sparse` density.
+
+To control density, use the `` component with either the `sparse` or `compact` prop:
+
+```tsx
+
+
{/* ... */}
+
+```
+
+In the example above, the `
` (and all Penumbra UI components inside of it that have density variants) will use the `compact` variant, ensuring consistency throughout the layout.
+
+To enable density variants in your own components and layouts, import and use the `useDensity()` hook:
+
+```tsx
+const MyComponent = () => {
+ const density = useDensity();
+
+ return
{/* ... */}
;
+};
+```
+
+That way, `` will have looser padding when wrapped with ``, and tighter when wrapped with ``.
+
+## Development
+
+These guidelines are for maintainers of the components in the Penumbra UI library.
+
+### Guiding principles
+
+To ensure consistency in the code design of the Penumbra UI components, and to maintain an optimal developer experience, developers should adhere to these guidelines.
+
+#### Keep design decisions to a minimum for Penumbra UI consumers.
+
+Penumbra UI aims to take as much as possible of the design-related decision-making out of developers' hands. Developers using Penumbra UI should be freed up to focus on _functionality_, rather than needing to think about what colors would "look nice" or what spacing would "feel right." Specifically:
+
+##### Props and their values should be named to indicate their _use_, rather than their _effect on appearance_.
+
+For example, buttons have a `priority` prop to determine whether a given button is `primary` or `secondary`. This allows consumers to set the prop based on how the button is _used_: if it's the "Confirm" button for a popup dialog, it would obviously have a `primary` priority. If it's a "Cancel" button underneath the "Confirm" button, it would have a `secondary` priority.
+
+It just so happens that the primary button has a filled-in, solid-color background, while the secondary button has a transparent background and a subtle border. Notice, though, that Penumbra UI buttons don't accept `backgroundColor` or `borderColor` props. Nor do they accept `className` props that would allow consumers to customize their appearance in any number of other ways (that would be even worse!). For that matter, they don't even have a `variant` prop with values like `filled` vs. `outlined`. Why not? Because if they did, two developers working on the same app might end up using those visual styles in inconsistent ways, resulting in a disjointed UI.
+
+Instead, the `priority` prop is so named to indicate that it should be set based on how the button is used. Then, Penumbra UI itself makes the right decision about how to style it based on that use case.
+
+##### Components must not accept `className` or `style` props.
+
+This ensures that each component is internally responsible for its own styling.
+
+Any variations of the component's appearance must be controlled via props like `state`, `priority` etc. — not by kitchen-sink props like `className` and `style`, which allow arbitrary changes to be made that could interfere with the internal structure of the component and cause visual inconsistencies between instances of Penumbra UI components.
+
+##### Components should not define external margins or absolute/fixed positioning.
+
+Components may only define their internal spacing and layout — never external spacing and layout. This ensures that components can be reused in any context.
+
+External spacing and positioning is the responsibility of parent components, and can be achieved in the parent via, e.g., wrapper ``s that position components appropriately.
+
+(Note that absolute positioning _is_ acceptable for elements who have a higher-level relative-positioned element in the same component, since that means that the absolute-positioned element is still contained within the component's layout. There also a few exceptions to this rule, such as for tooltips and dropdown menus, as well as for page-level components that absolutely position a child component via a wrapper.)
+
+###### Correct
+
+```tsx
+// BackgroundAnimation/index.tsx
+export function BackgroundAnimation() {
+ return ;
+}
+
+// SplashPage/index.tsx
+export function SplashPage() {
+ return (
+ // ✅ CORRECT: position the background animation in the center of the screen
+ // using a wrapper div in the parent
+
+
+
+ );
+}
+```
+
+###### Incorrect
+
+```tsx
+// BackgroundAnimation/index.tsx
+export function BackgroundAnimation() {
+ return (
+ // ❌ INCORRECT: do not absolute-position elements in a non-page-level
+ // component
+
+
+ );
+}
+```
+
+###### Incorrect
+
+```tsx
+// AssetIcon/index.tsx
+export interface AssetIconProps {
+ display: string;
+ src: string;
+}
+
+export function AssetIcon({ display, src }: AssetIconProps) {
+ return (
+
+ );
+}
+
+// ValueComponent/index.tsx
+export interface ValueComponentProps {
+ value: Value;
+ metadata: Metadata;
+}
+
+export function ValueComponent({ value, metadata }: ValueComponentProps) {
+ return (
+
+
+ {metadata.display}
+
+ );
+}
+```
+
+#### Document and test Penumbra UI components thoroughly.
+
+Penumbra UI is a public package available for anyone in the Penumbra ecosystem to use. As such, its documentation and tests should be given first-class treatment. Specifically:
+
+##### Components should include Storybook stories.
+
+[Storybook stories](https://storybook.js.org/docs/react/writing-stories/introduction) are pages in Storybook that showcase a particular component, usually with controls that allow the user to edit its props.
+
+Storybook stories should be located next to the component they apply to, and have a file suffix of `.stories.ts(x)`. For example, a component located at `src/Button/index.tsx` should have stories at `src/Button/index.stories.tsx`.
+
+When writing stories, make sure to tag your stories with [`autodocs`](https://storybook.js.org/docs/react/writing-docs/autodocs). This is a Storybook feature that analyzes your component code to auto-generate documentation for your component, including a code sample, controls for each of the props, etc.
+
+##### Documentation of component props should be written with JSDoc syntax.
+
+[JSDoc-style comments](https://jsdoc.app/about-getting-started.html#adding-documentation-comments-to-your-code) (`/** ... */`) should be written before any props that need to be documented so that A) IDEs can pull them in for tooltips, and B) Storybook can use them in the Storybook UI.
+
+##### Components' rendering logic should be covered via unit tests.
+
+```tsx
+// FooBarAndMaybeBaz/index.tsx
+export interface FooBarAndMaybeBazProps {
+ baz?: boolean;
+}
+
+export function FooBarAndMaybeBaz({ baz }: FooBarAndMaybeBazProps) {
+ return (
+
+
Foo
+
Bar
+ {baz &&
Baz
}
+
+ );
+}
+
+// FooBarAndMaybeBaz/index.test.tsx
+import { render } from '@testing-library/react';
+
+describe('', () => {
+ it('renders `baz` when the `baz` prop is `true`', () => {
+ const { queryByText } = render();
+
+ expect(queryByText('Baz')).not.toBeNull();
+ });
+
+ it('does not render `baz` when the `baz` prop is falsy', () => {
+ const { queryByText } = render();
+
+ expect(queryByText('Baz')).toBeNull();
+ });
+});
+```
+
+Note that we do not use unit tests to test the visual appearance of components; that's a job better suited to screenshot testing, which we may implement in the future.
+
+### Code style and file organization guidelines
+
+#### Components must be located at `./components/v2//index.tsx`.
+
+This ensures that the Penumbra UI `package.json` `exports` field works as intended, so that components can be imported via `@penumbra-zone/ui/`.
+
+Note that `` should be replaced with the `UpperCamelCase` component name — e.g., `./components/v2/LoadingIndicator/index.tsx`.
+
+#### Internal-use components that are only used within a parent component must sit in the parent component's directory, rather than be a sibling of the parent directory.
+
+This guideline only applies to components that are _not_ intended to be used externally, but are only to be used as dependencies of other Penumbra UI library components.
+
+```
+- src/components/
+ - HeaderWithDropdown/
+ - index.tsx
+ - Dropdown.tsx ✅ Correct, if Dropdown is only ever used inside HeaderWithDropdown
+```
+
+```
+- src/components/
+ - Dropdown.tsx ❌ Wrong, if Dropdown is only ever used inside HeaderWithDropdown
+ - HeaderWithDropdown/
+ - index.tsx
+```
+
+(One exception to this rule: if you're developing a component that will eventually be used by multiple other components, and just happens to be a child of only a single component at the moment, you can leave it as a sibling of its parent.)
+
+#### Internal-use components should be located at the most specific possible directory level.
+
+This guideline only applies to components that are _not_ intended to be used externally, but are only to be used as dependencies of other Penumbra UI library components.
+
+For example, if the `Dropdown` component is used by both `HeaderWithDropdown` and `Menu` components, `Dropdown` should be placed in the lowest-level directory that contains both `HeaderWithDropdown` and `Menu`:
+
+```
+- src/components/
+ - SomeCommonParentOfBothHeaderWithDropdownAndMenu/
+ - index.tsx
+ - HeaderWithDropdown/
+ - index.tsx
+ - index.test.tsx
+ - Menu/
+ - index.tsx
+ - index.test.tsx
+ - Dropdown.tsx ✅ Correct - Dropdown is used by both Menu and HeaderWithDropdown, so it's a sibling to both
+```
+
+This, as opposed to e.g., placing it inside the `HeaderWithDropdown` directory (and then importing it from there in `Menu`), or inside a root-level directory. This way, components are nested as closely to the components using them as possible.
+
+```
+- src/components/
+ - SomeCommonParentOfBothHeaderWithDropdownAndMenu/
+ - index.tsx
+ - HeaderWithDropdown/
+ - index.tsx
+ - index.test.tsx
+ - Dropdown.tsx ❌ Wrong - Menu shouldn't be importing a child of HeaderWithDropdown
+ - Menu/
+ - index.tsx
+ - index.test.tsx
+```
+
+#### Component props must be exported from the component file as `Props`.
+
+For example:
+
+```tsx
+export interface MyComponentProps {
+ color: Color;
+}
+
+export function MyComponent({ color }: MyComponentProps) {
+ // ...
+}
+```
+
+#### Components built for Protobuf types must be suffixed with `Component` to avoid naming collisions.
+
+For example, a component designed to render a `ValueView` must be named `ValueViewComponent`, rather than `ValueView`, to avoid awkward naming collisions for consumers:
+
+```tsx
+// ValueViewComponent/index.tsx
+import { ValueView } from '@penumbra-zone/protobuf/penumbra/core/asset/v1/asset_pb';
+
+export interface ValueViewComponentProps {
+ valueView: ValueView;
+}
+
+export function ValueViewComponent({ valueView }: ValueViewComponentProps) {
+ // ...
+}
+
+// SomeConsumer.tsx
+// ✅ Now, there is no naming conflict between these two imports.
+import { ValueView } from 'penumbra-zone/protobuf/penumbra/core/asset/v1/asset_pb';
+import { ValueViewComponent } from '@penumbra-zone/ui/ValueViewComponent';
+```
+
+#### Use the `useDensity()` hook to control component density.
+
+Components should never accept a `density` prop to control their density. This ensures that all components in a given density context will be rendered with the same density.
+
+##### Using density with Storybook
+
+If you're creating a component that has density variants, use the `density` tag for your Storybook stories:
+
+```ts
+const meta: Meta = {
+ component: MyComponent,
+ tags: ['density'],
+ // ...
+};
+```
+
+Storybook will then add a control for density, so that density can be controlled via context.
diff --git a/packages/ui/components.json b/packages/ui-deprecated/components.json
similarity index 100%
rename from packages/ui/components.json
rename to packages/ui-deprecated/components.json
diff --git a/packages/ui/components/README.md b/packages/ui-deprecated/components/README.md
similarity index 100%
rename from packages/ui/components/README.md
rename to packages/ui-deprecated/components/README.md
diff --git a/packages/ui/components/readme.mdx b/packages/ui-deprecated/components/readme.mdx
similarity index 100%
rename from packages/ui/components/readme.mdx
rename to packages/ui-deprecated/components/readme.mdx
diff --git a/packages/ui/components/ui/account-switcher/account-switcher.test.tsx b/packages/ui-deprecated/components/ui/account-switcher/account-switcher.test.tsx
similarity index 100%
rename from packages/ui/components/ui/account-switcher/account-switcher.test.tsx
rename to packages/ui-deprecated/components/ui/account-switcher/account-switcher.test.tsx
diff --git a/packages/ui/components/ui/account-switcher/index.tsx b/packages/ui-deprecated/components/ui/account-switcher/index.tsx
similarity index 100%
rename from packages/ui/components/ui/account-switcher/index.tsx
rename to packages/ui-deprecated/components/ui/account-switcher/index.tsx
diff --git a/packages/ui/components/ui/address-view/address-view.stories.tsx b/packages/ui-deprecated/components/ui/address-view/address-view.stories.tsx
similarity index 100%
rename from packages/ui/components/ui/address-view/address-view.stories.tsx
rename to packages/ui-deprecated/components/ui/address-view/address-view.stories.tsx
diff --git a/packages/ui/components/ui/address-view/address-view.test.tsx b/packages/ui-deprecated/components/ui/address-view/address-view.test.tsx
similarity index 100%
rename from packages/ui/components/ui/address-view/address-view.test.tsx
rename to packages/ui-deprecated/components/ui/address-view/address-view.test.tsx
diff --git a/packages/ui/components/ui/address-view/index.tsx b/packages/ui-deprecated/components/ui/address-view/index.tsx
similarity index 100%
rename from packages/ui/components/ui/address-view/index.tsx
rename to packages/ui-deprecated/components/ui/address-view/index.tsx
diff --git a/packages/ui/components/ui/address/address-component.test.tsx b/packages/ui-deprecated/components/ui/address/address-component.test.tsx
similarity index 100%
rename from packages/ui/components/ui/address/address-component.test.tsx
rename to packages/ui-deprecated/components/ui/address/address-component.test.tsx
diff --git a/packages/ui/components/ui/address/address-component.tsx b/packages/ui-deprecated/components/ui/address/address-component.tsx
similarity index 100%
rename from packages/ui/components/ui/address/address-component.tsx
rename to packages/ui-deprecated/components/ui/address/address-component.tsx
diff --git a/packages/ui/components/ui/address/address-icon.tsx b/packages/ui-deprecated/components/ui/address/address-icon.tsx
similarity index 100%
rename from packages/ui/components/ui/address/address-icon.tsx
rename to packages/ui-deprecated/components/ui/address/address-icon.tsx
diff --git a/packages/ui/components/ui/address/index.tsx b/packages/ui-deprecated/components/ui/address/index.tsx
similarity index 100%
rename from packages/ui/components/ui/address/index.tsx
rename to packages/ui-deprecated/components/ui/address/index.tsx
diff --git a/packages/ui/components/ui/asset-icon/asset-icon.stories.tsx b/packages/ui-deprecated/components/ui/asset-icon/asset-icon.stories.tsx
similarity index 100%
rename from packages/ui/components/ui/asset-icon/asset-icon.stories.tsx
rename to packages/ui-deprecated/components/ui/asset-icon/asset-icon.stories.tsx
diff --git a/packages/ui/components/ui/asset-icon/delegation-token-icon.tsx b/packages/ui-deprecated/components/ui/asset-icon/delegation-token-icon.tsx
similarity index 100%
rename from packages/ui/components/ui/asset-icon/delegation-token-icon.tsx
rename to packages/ui-deprecated/components/ui/asset-icon/delegation-token-icon.tsx
diff --git a/packages/ui/components/ui/asset-icon/index.tsx b/packages/ui-deprecated/components/ui/asset-icon/index.tsx
similarity index 100%
rename from packages/ui/components/ui/asset-icon/index.tsx
rename to packages/ui-deprecated/components/ui/asset-icon/index.tsx
diff --git a/packages/ui/components/ui/asset-icon/unbonding-token-icon.tsx b/packages/ui-deprecated/components/ui/asset-icon/unbonding-token-icon.tsx
similarity index 100%
rename from packages/ui/components/ui/asset-icon/unbonding-token-icon.tsx
rename to packages/ui-deprecated/components/ui/asset-icon/unbonding-token-icon.tsx
diff --git a/packages/ui/components/ui/auction-id-component/index.tsx b/packages/ui-deprecated/components/ui/auction-id-component/index.tsx
similarity index 100%
rename from packages/ui/components/ui/auction-id-component/index.tsx
rename to packages/ui-deprecated/components/ui/auction-id-component/index.tsx
diff --git a/packages/ui/components/ui/avatar/avatar.stories.tsx b/packages/ui-deprecated/components/ui/avatar/avatar.stories.tsx
similarity index 100%
rename from packages/ui/components/ui/avatar/avatar.stories.tsx
rename to packages/ui-deprecated/components/ui/avatar/avatar.stories.tsx
diff --git a/packages/ui/components/ui/avatar/index.tsx b/packages/ui-deprecated/components/ui/avatar/index.tsx
similarity index 100%
rename from packages/ui/components/ui/avatar/index.tsx
rename to packages/ui-deprecated/components/ui/avatar/index.tsx
diff --git a/packages/ui/components/ui/balance-value-view/balance-value-view.test.tsx b/packages/ui-deprecated/components/ui/balance-value-view/balance-value-view.test.tsx
similarity index 100%
rename from packages/ui/components/ui/balance-value-view/balance-value-view.test.tsx
rename to packages/ui-deprecated/components/ui/balance-value-view/balance-value-view.test.tsx
diff --git a/packages/ui/components/ui/balance-value-view/index.tsx b/packages/ui-deprecated/components/ui/balance-value-view/index.tsx
similarity index 100%
rename from packages/ui/components/ui/balance-value-view/index.tsx
rename to packages/ui-deprecated/components/ui/balance-value-view/index.tsx
diff --git a/packages/ui/components/ui/banner/banner.test.tsx b/packages/ui-deprecated/components/ui/banner/banner.test.tsx
similarity index 100%
rename from packages/ui/components/ui/banner/banner.test.tsx
rename to packages/ui-deprecated/components/ui/banner/banner.test.tsx
diff --git a/packages/ui/components/ui/banner/index.tsx b/packages/ui-deprecated/components/ui/banner/index.tsx
similarity index 100%
rename from packages/ui/components/ui/banner/index.tsx
rename to packages/ui-deprecated/components/ui/banner/index.tsx
diff --git a/packages/ui/components/ui/block-sync-status/block-sync-status.tsx b/packages/ui-deprecated/components/ui/block-sync-status/block-sync-status.tsx
similarity index 100%
rename from packages/ui/components/ui/block-sync-status/block-sync-status.tsx
rename to packages/ui-deprecated/components/ui/block-sync-status/block-sync-status.tsx
diff --git a/packages/ui/components/ui/block-sync-status/ewma.test.ts b/packages/ui-deprecated/components/ui/block-sync-status/ewma.test.ts
similarity index 100%
rename from packages/ui/components/ui/block-sync-status/ewma.test.ts
rename to packages/ui-deprecated/components/ui/block-sync-status/ewma.test.ts
diff --git a/packages/ui/components/ui/block-sync-status/ewma.ts b/packages/ui-deprecated/components/ui/block-sync-status/ewma.ts
similarity index 100%
rename from packages/ui/components/ui/block-sync-status/ewma.ts
rename to packages/ui-deprecated/components/ui/block-sync-status/ewma.ts
diff --git a/packages/ui/components/ui/block-sync-status/hooks.ts b/packages/ui-deprecated/components/ui/block-sync-status/hooks.ts
similarity index 100%
rename from packages/ui/components/ui/block-sync-status/hooks.ts
rename to packages/ui-deprecated/components/ui/block-sync-status/hooks.ts
diff --git a/packages/ui/components/ui/block-sync-status/index.tsx b/packages/ui-deprecated/components/ui/block-sync-status/index.tsx
similarity index 100%
rename from packages/ui/components/ui/block-sync-status/index.tsx
rename to packages/ui-deprecated/components/ui/block-sync-status/index.tsx
diff --git a/packages/ui/components/ui/box/box.stories.tsx b/packages/ui-deprecated/components/ui/box/box.stories.tsx
similarity index 100%
rename from packages/ui/components/ui/box/box.stories.tsx
rename to packages/ui-deprecated/components/ui/box/box.stories.tsx
diff --git a/packages/ui/components/ui/box/index.tsx b/packages/ui-deprecated/components/ui/box/index.tsx
similarity index 100%
rename from packages/ui/components/ui/box/index.tsx
rename to packages/ui-deprecated/components/ui/box/index.tsx
diff --git a/packages/ui/components/ui/button/button.stories.tsx b/packages/ui-deprecated/components/ui/button/button.stories.tsx
similarity index 100%
rename from packages/ui/components/ui/button/button.stories.tsx
rename to packages/ui-deprecated/components/ui/button/button.stories.tsx
diff --git a/packages/ui/components/ui/button/index.tsx b/packages/ui-deprecated/components/ui/button/index.tsx
similarity index 100%
rename from packages/ui/components/ui/button/index.tsx
rename to packages/ui-deprecated/components/ui/button/index.tsx
diff --git a/packages/ui/components/ui/candlestick-plot/index.tsx b/packages/ui-deprecated/components/ui/candlestick-plot/index.tsx
similarity index 100%
rename from packages/ui/components/ui/candlestick-plot/index.tsx
rename to packages/ui-deprecated/components/ui/candlestick-plot/index.tsx
diff --git a/packages/ui/components/ui/card/card.stories.tsx b/packages/ui-deprecated/components/ui/card/card.stories.tsx
similarity index 100%
rename from packages/ui/components/ui/card/card.stories.tsx
rename to packages/ui-deprecated/components/ui/card/card.stories.tsx
diff --git a/packages/ui/components/ui/card/index.tsx b/packages/ui-deprecated/components/ui/card/index.tsx
similarity index 100%
rename from packages/ui/components/ui/card/index.tsx
rename to packages/ui-deprecated/components/ui/card/index.tsx
diff --git a/packages/ui/components/ui/command/index.tsx b/packages/ui-deprecated/components/ui/command/index.tsx
similarity index 100%
rename from packages/ui/components/ui/command/index.tsx
rename to packages/ui-deprecated/components/ui/command/index.tsx
diff --git a/packages/ui/components/ui/copy-to-clipboard/copy-to-clipboard-icon-button.tsx b/packages/ui-deprecated/components/ui/copy-to-clipboard/copy-to-clipboard-icon-button.tsx
similarity index 100%
rename from packages/ui/components/ui/copy-to-clipboard/copy-to-clipboard-icon-button.tsx
rename to packages/ui-deprecated/components/ui/copy-to-clipboard/copy-to-clipboard-icon-button.tsx
diff --git a/packages/ui/components/ui/copy-to-clipboard/copy-to-clipboard.tsx b/packages/ui-deprecated/components/ui/copy-to-clipboard/copy-to-clipboard.tsx
similarity index 100%
rename from packages/ui/components/ui/copy-to-clipboard/copy-to-clipboard.tsx
rename to packages/ui-deprecated/components/ui/copy-to-clipboard/copy-to-clipboard.tsx
diff --git a/packages/ui/components/ui/copy-to-clipboard/index.tsx b/packages/ui-deprecated/components/ui/copy-to-clipboard/index.tsx
similarity index 100%
rename from packages/ui/components/ui/copy-to-clipboard/index.tsx
rename to packages/ui-deprecated/components/ui/copy-to-clipboard/index.tsx
diff --git a/packages/ui/components/ui/dialog/dialog.stories.tsx b/packages/ui-deprecated/components/ui/dialog/dialog.stories.tsx
similarity index 100%
rename from packages/ui/components/ui/dialog/dialog.stories.tsx
rename to packages/ui-deprecated/components/ui/dialog/dialog.stories.tsx
diff --git a/packages/ui/components/ui/dialog/index.tsx b/packages/ui-deprecated/components/ui/dialog/index.tsx
similarity index 100%
rename from packages/ui/components/ui/dialog/index.tsx
rename to packages/ui-deprecated/components/ui/dialog/index.tsx
diff --git a/packages/ui/components/ui/dutch-auction-component/expanded-details/get-price.test.ts b/packages/ui-deprecated/components/ui/dutch-auction-component/expanded-details/get-price.test.ts
similarity index 100%
rename from packages/ui/components/ui/dutch-auction-component/expanded-details/get-price.test.ts
rename to packages/ui-deprecated/components/ui/dutch-auction-component/expanded-details/get-price.test.ts
diff --git a/packages/ui/components/ui/dutch-auction-component/expanded-details/get-price.ts b/packages/ui-deprecated/components/ui/dutch-auction-component/expanded-details/get-price.ts
similarity index 100%
rename from packages/ui/components/ui/dutch-auction-component/expanded-details/get-price.ts
rename to packages/ui-deprecated/components/ui/dutch-auction-component/expanded-details/get-price.ts
diff --git a/packages/ui/components/ui/dutch-auction-component/expanded-details/get-step-index.test.ts b/packages/ui-deprecated/components/ui/dutch-auction-component/expanded-details/get-step-index.test.ts
similarity index 100%
rename from packages/ui/components/ui/dutch-auction-component/expanded-details/get-step-index.test.ts
rename to packages/ui-deprecated/components/ui/dutch-auction-component/expanded-details/get-step-index.test.ts
diff --git a/packages/ui/components/ui/dutch-auction-component/expanded-details/get-step-index.ts b/packages/ui-deprecated/components/ui/dutch-auction-component/expanded-details/get-step-index.ts
similarity index 100%
rename from packages/ui/components/ui/dutch-auction-component/expanded-details/get-step-index.ts
rename to packages/ui-deprecated/components/ui/dutch-auction-component/expanded-details/get-step-index.ts
diff --git a/packages/ui/components/ui/dutch-auction-component/expanded-details/index.tsx b/packages/ui-deprecated/components/ui/dutch-auction-component/expanded-details/index.tsx
similarity index 100%
rename from packages/ui/components/ui/dutch-auction-component/expanded-details/index.tsx
rename to packages/ui-deprecated/components/ui/dutch-auction-component/expanded-details/index.tsx
diff --git a/packages/ui/components/ui/dutch-auction-component/index.tsx b/packages/ui-deprecated/components/ui/dutch-auction-component/index.tsx
similarity index 100%
rename from packages/ui/components/ui/dutch-auction-component/index.tsx
rename to packages/ui-deprecated/components/ui/dutch-auction-component/index.tsx
diff --git a/packages/ui/components/ui/dutch-auction-component/progress-bar/get-human-readable-interval.test.ts b/packages/ui-deprecated/components/ui/dutch-auction-component/progress-bar/get-human-readable-interval.test.ts
similarity index 100%
rename from packages/ui/components/ui/dutch-auction-component/progress-bar/get-human-readable-interval.test.ts
rename to packages/ui-deprecated/components/ui/dutch-auction-component/progress-bar/get-human-readable-interval.test.ts
diff --git a/packages/ui/components/ui/dutch-auction-component/progress-bar/get-human-readable-interval.ts b/packages/ui-deprecated/components/ui/dutch-auction-component/progress-bar/get-human-readable-interval.ts
similarity index 100%
rename from packages/ui/components/ui/dutch-auction-component/progress-bar/get-human-readable-interval.ts
rename to packages/ui-deprecated/components/ui/dutch-auction-component/progress-bar/get-human-readable-interval.ts
diff --git a/packages/ui/components/ui/dutch-auction-component/progress-bar/helpers.ts b/packages/ui-deprecated/components/ui/dutch-auction-component/progress-bar/helpers.ts
similarity index 100%
rename from packages/ui/components/ui/dutch-auction-component/progress-bar/helpers.ts
rename to packages/ui-deprecated/components/ui/dutch-auction-component/progress-bar/helpers.ts
diff --git a/packages/ui/components/ui/dutch-auction-component/progress-bar/index.tsx b/packages/ui-deprecated/components/ui/dutch-auction-component/progress-bar/index.tsx
similarity index 100%
rename from packages/ui/components/ui/dutch-auction-component/progress-bar/index.tsx
rename to packages/ui-deprecated/components/ui/dutch-auction-component/progress-bar/index.tsx
diff --git a/packages/ui/components/ui/dutch-auction-component/progress-bar/indicator/get-progress.test.ts b/packages/ui-deprecated/components/ui/dutch-auction-component/progress-bar/indicator/get-progress.test.ts
similarity index 100%
rename from packages/ui/components/ui/dutch-auction-component/progress-bar/indicator/get-progress.test.ts
rename to packages/ui-deprecated/components/ui/dutch-auction-component/progress-bar/indicator/get-progress.test.ts
diff --git a/packages/ui/components/ui/dutch-auction-component/progress-bar/indicator/get-progress.ts b/packages/ui-deprecated/components/ui/dutch-auction-component/progress-bar/indicator/get-progress.ts
similarity index 100%
rename from packages/ui/components/ui/dutch-auction-component/progress-bar/indicator/get-progress.ts
rename to packages/ui-deprecated/components/ui/dutch-auction-component/progress-bar/indicator/get-progress.ts
diff --git a/packages/ui/components/ui/dutch-auction-component/progress-bar/indicator/index.tsx b/packages/ui-deprecated/components/ui/dutch-auction-component/progress-bar/indicator/index.tsx
similarity index 100%
rename from packages/ui/components/ui/dutch-auction-component/progress-bar/indicator/index.tsx
rename to packages/ui-deprecated/components/ui/dutch-auction-component/progress-bar/indicator/index.tsx
diff --git a/packages/ui/components/ui/fade-in/index.tsx b/packages/ui-deprecated/components/ui/fade-in/index.tsx
similarity index 100%
rename from packages/ui/components/ui/fade-in/index.tsx
rename to packages/ui-deprecated/components/ui/fade-in/index.tsx
diff --git a/packages/ui/components/ui/fade-transition/index.tsx b/packages/ui-deprecated/components/ui/fade-transition/index.tsx
similarity index 100%
rename from packages/ui/components/ui/fade-transition/index.tsx
rename to packages/ui-deprecated/components/ui/fade-transition/index.tsx
diff --git a/packages/ui/components/ui/gradient-header/index.tsx b/packages/ui-deprecated/components/ui/gradient-header/index.tsx
similarity index 100%
rename from packages/ui/components/ui/gradient-header/index.tsx
rename to packages/ui-deprecated/components/ui/gradient-header/index.tsx
diff --git a/packages/ui/components/ui/icon-input/index.tsx b/packages/ui-deprecated/components/ui/icon-input/index.tsx
similarity index 100%
rename from packages/ui/components/ui/icon-input/index.tsx
rename to packages/ui-deprecated/components/ui/icon-input/index.tsx
diff --git a/packages/ui/components/ui/icons/back-icon.tsx b/packages/ui-deprecated/components/ui/icons/back-icon.tsx
similarity index 100%
rename from packages/ui/components/ui/icons/back-icon.tsx
rename to packages/ui-deprecated/components/ui/icons/back-icon.tsx
diff --git a/packages/ui/components/ui/icons/incognito.tsx b/packages/ui-deprecated/components/ui/icons/incognito.tsx
similarity index 100%
rename from packages/ui/components/ui/icons/incognito.tsx
rename to packages/ui-deprecated/components/ui/icons/incognito.tsx
diff --git a/packages/ui/components/ui/icons/wallet.tsx b/packages/ui-deprecated/components/ui/icons/wallet.tsx
similarity index 100%
rename from packages/ui/components/ui/icons/wallet.tsx
rename to packages/ui-deprecated/components/ui/icons/wallet.tsx
diff --git a/packages/ui-tailwind/src/Identicon/generate.ts b/packages/ui-deprecated/components/ui/identicon/generate.ts
similarity index 100%
rename from packages/ui-tailwind/src/Identicon/generate.ts
rename to packages/ui-deprecated/components/ui/identicon/generate.ts
diff --git a/packages/ui/components/ui/identicon/index.tsx b/packages/ui-deprecated/components/ui/identicon/index.tsx
similarity index 100%
rename from packages/ui/components/ui/identicon/index.tsx
rename to packages/ui-deprecated/components/ui/identicon/index.tsx
diff --git a/packages/ui/components/ui/identicon/types.ts b/packages/ui-deprecated/components/ui/identicon/types.ts
similarity index 100%
rename from packages/ui/components/ui/identicon/types.ts
rename to packages/ui-deprecated/components/ui/identicon/types.ts
diff --git a/packages/ui/components/ui/identity-key-component/index.tsx b/packages/ui-deprecated/components/ui/identity-key-component/index.tsx
similarity index 100%
rename from packages/ui/components/ui/identity-key-component/index.tsx
rename to packages/ui-deprecated/components/ui/identity-key-component/index.tsx
diff --git a/packages/ui/components/ui/incompatible-browser-banner/get-compatibility.ts b/packages/ui-deprecated/components/ui/incompatible-browser-banner/get-compatibility.ts
similarity index 100%
rename from packages/ui/components/ui/incompatible-browser-banner/get-compatibility.ts
rename to packages/ui-deprecated/components/ui/incompatible-browser-banner/get-compatibility.ts
diff --git a/packages/ui/components/ui/incompatible-browser-banner/incompatible-browser-banner.test.tsx b/packages/ui-deprecated/components/ui/incompatible-browser-banner/incompatible-browser-banner.test.tsx
similarity index 100%
rename from packages/ui/components/ui/incompatible-browser-banner/incompatible-browser-banner.test.tsx
rename to packages/ui-deprecated/components/ui/incompatible-browser-banner/incompatible-browser-banner.test.tsx
diff --git a/packages/ui/components/ui/incompatible-browser-banner/index.tsx b/packages/ui-deprecated/components/ui/incompatible-browser-banner/index.tsx
similarity index 100%
rename from packages/ui/components/ui/incompatible-browser-banner/index.tsx
rename to packages/ui-deprecated/components/ui/incompatible-browser-banner/index.tsx
diff --git a/packages/ui/components/ui/input/index.tsx b/packages/ui-deprecated/components/ui/input/index.tsx
similarity index 100%
rename from packages/ui/components/ui/input/index.tsx
rename to packages/ui-deprecated/components/ui/input/index.tsx
diff --git a/packages/ui/components/ui/json-viewer/index.tsx b/packages/ui-deprecated/components/ui/json-viewer/index.tsx
similarity index 100%
rename from packages/ui/components/ui/json-viewer/index.tsx
rename to packages/ui-deprecated/components/ui/json-viewer/index.tsx
diff --git a/packages/ui/components/ui/logo/animated-penumbra.tsx b/packages/ui-deprecated/components/ui/logo/animated-penumbra.tsx
similarity index 100%
rename from packages/ui/components/ui/logo/animated-penumbra.tsx
rename to packages/ui-deprecated/components/ui/logo/animated-penumbra.tsx
diff --git a/packages/ui/components/ui/logo/animation-logic.ts b/packages/ui-deprecated/components/ui/logo/animation-logic.ts
similarity index 100%
rename from packages/ui/components/ui/logo/animation-logic.ts
rename to packages/ui-deprecated/components/ui/logo/animation-logic.ts
diff --git a/packages/ui/components/ui/logo/original-animated-penumbra.svg b/packages/ui-deprecated/components/ui/logo/original-animated-penumbra.svg
similarity index 100%
rename from packages/ui/components/ui/logo/original-animated-penumbra.svg
rename to packages/ui-deprecated/components/ui/logo/original-animated-penumbra.svg
diff --git a/packages/ui/components/ui/logo/perlin-noise.ts b/packages/ui-deprecated/components/ui/logo/perlin-noise.ts
similarity index 100%
rename from packages/ui/components/ui/logo/perlin-noise.ts
rename to packages/ui-deprecated/components/ui/logo/perlin-noise.ts
diff --git a/packages/ui/components/ui/logo/static.tsx b/packages/ui-deprecated/components/ui/logo/static.tsx
similarity index 100%
rename from packages/ui/components/ui/logo/static.tsx
rename to packages/ui-deprecated/components/ui/logo/static.tsx
diff --git a/packages/ui/components/ui/pill/index.tsx b/packages/ui-deprecated/components/ui/pill/index.tsx
similarity index 100%
rename from packages/ui/components/ui/pill/index.tsx
rename to packages/ui-deprecated/components/ui/pill/index.tsx
diff --git a/packages/ui/components/ui/pill/pill.stories.tsx b/packages/ui-deprecated/components/ui/pill/pill.stories.tsx
similarity index 100%
rename from packages/ui/components/ui/pill/pill.stories.tsx
rename to packages/ui-deprecated/components/ui/pill/pill.stories.tsx
diff --git a/packages/ui/components/ui/popover/index.tsx b/packages/ui-deprecated/components/ui/popover/index.tsx
similarity index 100%
rename from packages/ui/components/ui/popover/index.tsx
rename to packages/ui-deprecated/components/ui/popover/index.tsx
diff --git a/packages/ui/components/ui/popover/popover-menu.stories.tsx b/packages/ui-deprecated/components/ui/popover/popover-menu.stories.tsx
similarity index 100%
rename from packages/ui/components/ui/popover/popover-menu.stories.tsx
rename to packages/ui-deprecated/components/ui/popover/popover-menu.stories.tsx
diff --git a/packages/ui/components/ui/popover/popover-menu.tsx b/packages/ui-deprecated/components/ui/popover/popover-menu.tsx
similarity index 100%
rename from packages/ui/components/ui/popover/popover-menu.tsx
rename to packages/ui-deprecated/components/ui/popover/popover-menu.tsx
diff --git a/packages/ui/components/ui/popover/popover.tsx b/packages/ui-deprecated/components/ui/popover/popover.tsx
similarity index 100%
rename from packages/ui/components/ui/popover/popover.tsx
rename to packages/ui-deprecated/components/ui/popover/popover.tsx
diff --git a/packages/ui/components/ui/progress/index.tsx b/packages/ui-deprecated/components/ui/progress/index.tsx
similarity index 100%
rename from packages/ui/components/ui/progress/index.tsx
rename to packages/ui-deprecated/components/ui/progress/index.tsx
diff --git a/packages/ui/components/ui/segmented-picker/index.tsx b/packages/ui-deprecated/components/ui/segmented-picker/index.tsx
similarity index 100%
rename from packages/ui/components/ui/segmented-picker/index.tsx
rename to packages/ui-deprecated/components/ui/segmented-picker/index.tsx
diff --git a/packages/ui/components/ui/segmented-picker/segmented-picker.stories.tsx b/packages/ui-deprecated/components/ui/segmented-picker/segmented-picker.stories.tsx
similarity index 100%
rename from packages/ui/components/ui/segmented-picker/segmented-picker.stories.tsx
rename to packages/ui-deprecated/components/ui/segmented-picker/segmented-picker.stories.tsx
diff --git a/packages/ui/components/ui/segmented-picker/segmented-picker.test.tsx b/packages/ui-deprecated/components/ui/segmented-picker/segmented-picker.test.tsx
similarity index 100%
rename from packages/ui/components/ui/segmented-picker/segmented-picker.test.tsx
rename to packages/ui-deprecated/components/ui/segmented-picker/segmented-picker.test.tsx
diff --git a/packages/ui/components/ui/select/index.tsx b/packages/ui-deprecated/components/ui/select/index.tsx
similarity index 100%
rename from packages/ui/components/ui/select/index.tsx
rename to packages/ui-deprecated/components/ui/select/index.tsx
diff --git a/packages/ui/components/ui/select/select-account.tsx b/packages/ui-deprecated/components/ui/select/select-account.tsx
similarity index 100%
rename from packages/ui/components/ui/select/select-account.tsx
rename to packages/ui-deprecated/components/ui/select/select-account.tsx
diff --git a/packages/ui/components/ui/select/select-list.stories.tsx b/packages/ui-deprecated/components/ui/select/select-list.stories.tsx
similarity index 100%
rename from packages/ui/components/ui/select/select-list.stories.tsx
rename to packages/ui-deprecated/components/ui/select/select-list.stories.tsx
diff --git a/packages/ui/components/ui/select/select-list.tsx b/packages/ui-deprecated/components/ui/select/select-list.tsx
similarity index 100%
rename from packages/ui/components/ui/select/select-list.tsx
rename to packages/ui-deprecated/components/ui/select/select-list.tsx
diff --git a/packages/ui/components/ui/select/select.tsx b/packages/ui-deprecated/components/ui/select/select.tsx
similarity index 100%
rename from packages/ui/components/ui/select/select.tsx
rename to packages/ui-deprecated/components/ui/select/select.tsx
diff --git a/packages/ui/components/ui/separator/index.tsx b/packages/ui-deprecated/components/ui/separator/index.tsx
similarity index 100%
rename from packages/ui/components/ui/separator/index.tsx
rename to packages/ui-deprecated/components/ui/separator/index.tsx
diff --git a/packages/ui/components/ui/sheet/index.tsx b/packages/ui-deprecated/components/ui/sheet/index.tsx
similarity index 100%
rename from packages/ui/components/ui/sheet/index.tsx
rename to packages/ui-deprecated/components/ui/sheet/index.tsx
diff --git a/packages/ui/components/ui/slider/index.stories.tsx b/packages/ui-deprecated/components/ui/slider/index.stories.tsx
similarity index 100%
rename from packages/ui/components/ui/slider/index.stories.tsx
rename to packages/ui-deprecated/components/ui/slider/index.stories.tsx
diff --git a/packages/ui/components/ui/slider/index.tsx b/packages/ui-deprecated/components/ui/slider/index.tsx
similarity index 100%
rename from packages/ui/components/ui/slider/index.tsx
rename to packages/ui-deprecated/components/ui/slider/index.tsx
diff --git a/packages/ui/components/ui/slider/thumbs.tsx b/packages/ui-deprecated/components/ui/slider/thumbs.tsx
similarity index 100%
rename from packages/ui/components/ui/slider/thumbs.tsx
rename to packages/ui-deprecated/components/ui/slider/thumbs.tsx
diff --git a/packages/ui/components/ui/splash-page/index.tsx b/packages/ui-deprecated/components/ui/splash-page/index.tsx
similarity index 100%
rename from packages/ui/components/ui/splash-page/index.tsx
rename to packages/ui-deprecated/components/ui/splash-page/index.tsx
diff --git a/packages/ui/components/ui/switch/index.tsx b/packages/ui-deprecated/components/ui/switch/index.tsx
similarity index 100%
rename from packages/ui/components/ui/switch/index.tsx
rename to packages/ui-deprecated/components/ui/switch/index.tsx
diff --git a/packages/ui/components/ui/table/index.tsx b/packages/ui-deprecated/components/ui/table/index.tsx
similarity index 100%
rename from packages/ui/components/ui/table/index.tsx
rename to packages/ui-deprecated/components/ui/table/index.tsx
diff --git a/packages/ui/components/ui/table/table.stories.tsx b/packages/ui-deprecated/components/ui/table/table.stories.tsx
similarity index 100%
rename from packages/ui/components/ui/table/table.stories.tsx
rename to packages/ui-deprecated/components/ui/table/table.stories.tsx
diff --git a/packages/ui/components/ui/tabs/index.tsx b/packages/ui-deprecated/components/ui/tabs/index.tsx
similarity index 100%
rename from packages/ui/components/ui/tabs/index.tsx
rename to packages/ui-deprecated/components/ui/tabs/index.tsx
diff --git a/packages/ui/components/ui/tabs/tabs.stories.tsx b/packages/ui-deprecated/components/ui/tabs/tabs.stories.tsx
similarity index 100%
rename from packages/ui/components/ui/tabs/tabs.stories.tsx
rename to packages/ui-deprecated/components/ui/tabs/tabs.stories.tsx
diff --git a/packages/ui/components/ui/testnet-banner/index.tsx b/packages/ui-deprecated/components/ui/testnet-banner/index.tsx
similarity index 100%
rename from packages/ui/components/ui/testnet-banner/index.tsx
rename to packages/ui-deprecated/components/ui/testnet-banner/index.tsx
diff --git a/packages/ui/components/ui/testnet-banner/testnet-banner.test.tsx b/packages/ui-deprecated/components/ui/testnet-banner/testnet-banner.test.tsx
similarity index 100%
rename from packages/ui/components/ui/testnet-banner/testnet-banner.test.tsx
rename to packages/ui-deprecated/components/ui/testnet-banner/testnet-banner.test.tsx
diff --git a/packages/ui/components/ui/toaster/index.tsx b/packages/ui-deprecated/components/ui/toaster/index.tsx
similarity index 100%
rename from packages/ui/components/ui/toaster/index.tsx
rename to packages/ui-deprecated/components/ui/toaster/index.tsx
diff --git a/packages/ui/components/ui/toaster/toaster.css b/packages/ui-deprecated/components/ui/toaster/toaster.css
similarity index 100%
rename from packages/ui/components/ui/toaster/toaster.css
rename to packages/ui-deprecated/components/ui/toaster/toaster.css
diff --git a/packages/ui/components/ui/toaster/toaster.stories.tsx b/packages/ui-deprecated/components/ui/toaster/toaster.stories.tsx
similarity index 100%
rename from packages/ui/components/ui/toaster/toaster.stories.tsx
rename to packages/ui-deprecated/components/ui/toaster/toaster.stories.tsx
diff --git a/packages/ui/components/ui/toggle/index.tsx b/packages/ui-deprecated/components/ui/toggle/index.tsx
similarity index 100%
rename from packages/ui/components/ui/toggle/index.tsx
rename to packages/ui-deprecated/components/ui/toggle/index.tsx
diff --git a/packages/ui/components/ui/tooltip/index.tsx b/packages/ui-deprecated/components/ui/tooltip/index.tsx
similarity index 100%
rename from packages/ui/components/ui/tooltip/index.tsx
rename to packages/ui-deprecated/components/ui/tooltip/index.tsx
diff --git a/packages/ui/components/ui/tx/action-view.tsx b/packages/ui-deprecated/components/ui/tx/action-view.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/action-view.tsx
rename to packages/ui-deprecated/components/ui/tx/action-view.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/action-details.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/action-details.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/action-details.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/action-details.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/action-dutch-auction-end.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/action-dutch-auction-end.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/action-dutch-auction-end.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/action-dutch-auction-end.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/action-dutch-auction-schedule-view.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/action-dutch-auction-schedule-view.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/action-dutch-auction-schedule-view.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/action-dutch-auction-schedule-view.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/action-dutch-auction-withdraw-view.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/action-dutch-auction-withdraw-view.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/action-dutch-auction-withdraw-view.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/action-dutch-auction-withdraw-view.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/delegate.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/delegate.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/delegate.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/delegate.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/delegator-vote.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/delegator-vote.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/delegator-vote.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/delegator-vote.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/ibc-relay.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/ibc-relay.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/ibc-relay.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/ibc-relay.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/isc20-withdrawal.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/isc20-withdrawal.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/isc20-withdrawal.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/isc20-withdrawal.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/output.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/output.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/output.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/output.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/position-close.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/position-close.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/position-close.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/position-close.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/position-open.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/position-open.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/position-open.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/position-open.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/position-withdraw.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/position-withdraw.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/position-withdraw.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/position-withdraw.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/spend.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/spend.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/spend.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/spend.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/swap/index.test.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/swap/index.test.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/swap/index.test.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/swap/index.test.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/swap/index.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/swap/index.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/swap/index.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/swap/index.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/swap/one-way-swap.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/swap/one-way-swap.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/swap/one-way-swap.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/swap/one-way-swap.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/swap/swap-claim.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/swap/swap-claim.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/swap/swap-claim.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/swap/swap-claim.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/swap/transaction-id.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/swap/transaction-id.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/swap/transaction-id.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/swap/transaction-id.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/undelegate-claim.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/undelegate-claim.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/undelegate-claim.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/undelegate-claim.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/undelegate.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/undelegate.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/undelegate.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/undelegate.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/unimplemented-view.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/unimplemented-view.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/unimplemented-view.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/unimplemented-view.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/validator-vote.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/validator-vote.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/validator-vote.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/validator-vote.tsx
diff --git a/packages/ui/components/ui/tx/actions-views/value-with-address.tsx b/packages/ui-deprecated/components/ui/tx/actions-views/value-with-address.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/actions-views/value-with-address.tsx
rename to packages/ui-deprecated/components/ui/tx/actions-views/value-with-address.tsx
diff --git a/packages/ui/components/ui/tx/index.tsx b/packages/ui-deprecated/components/ui/tx/index.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/index.tsx
rename to packages/ui-deprecated/components/ui/tx/index.tsx
diff --git a/packages/ui/components/ui/tx/memo-view.tsx b/packages/ui-deprecated/components/ui/tx/memo-view.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/memo-view.tsx
rename to packages/ui-deprecated/components/ui/tx/memo-view.tsx
diff --git a/packages/ui/components/ui/tx/transaction.stories.tsx b/packages/ui-deprecated/components/ui/tx/transaction.stories.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/transaction.stories.tsx
rename to packages/ui-deprecated/components/ui/tx/transaction.stories.tsx
diff --git a/packages/ui/components/ui/tx/viewbox.tsx b/packages/ui-deprecated/components/ui/tx/viewbox.tsx
similarity index 100%
rename from packages/ui/components/ui/tx/viewbox.tsx
rename to packages/ui-deprecated/components/ui/tx/viewbox.tsx
diff --git a/packages/ui/components/ui/value/index.test.tsx b/packages/ui-deprecated/components/ui/value/index.test.tsx
similarity index 100%
rename from packages/ui/components/ui/value/index.test.tsx
rename to packages/ui-deprecated/components/ui/value/index.test.tsx
diff --git a/packages/ui/components/ui/value/index.tsx b/packages/ui-deprecated/components/ui/value/index.tsx
similarity index 100%
rename from packages/ui/components/ui/value/index.tsx
rename to packages/ui-deprecated/components/ui/value/index.tsx
diff --git a/packages/ui/components/ui/value/value.stories.tsx b/packages/ui-deprecated/components/ui/value/value.stories.tsx
similarity index 100%
rename from packages/ui/components/ui/value/value.stories.tsx
rename to packages/ui-deprecated/components/ui/value/value.stories.tsx
diff --git a/packages/ui/components/ui/value/value.tsx b/packages/ui-deprecated/components/ui/value/value.tsx
similarity index 100%
rename from packages/ui/components/ui/value/value.tsx
rename to packages/ui-deprecated/components/ui/value/value.tsx
diff --git a/packages/ui/fonts/Devanagari-Sangam-Bold.woff2 b/packages/ui-deprecated/fonts/Devanagari-Sangam-Bold.woff2
similarity index 100%
rename from packages/ui/fonts/Devanagari-Sangam-Bold.woff2
rename to packages/ui-deprecated/fonts/Devanagari-Sangam-Bold.woff2
diff --git a/packages/ui/fonts/Devanagari-Sangam-Regular.woff2 b/packages/ui-deprecated/fonts/Devanagari-Sangam-Regular.woff2
similarity index 100%
rename from packages/ui/fonts/Devanagari-Sangam-Regular.woff2
rename to packages/ui-deprecated/fonts/Devanagari-Sangam-Regular.woff2
diff --git a/packages/ui/fonts/Faktum-Bold.woff2 b/packages/ui-deprecated/fonts/Faktum-Bold.woff2
similarity index 100%
rename from packages/ui/fonts/Faktum-Bold.woff2
rename to packages/ui-deprecated/fonts/Faktum-Bold.woff2
diff --git a/packages/ui/fonts/Faktum-Medium.woff2 b/packages/ui-deprecated/fonts/Faktum-Medium.woff2
similarity index 100%
rename from packages/ui/fonts/Faktum-Medium.woff2
rename to packages/ui-deprecated/fonts/Faktum-Medium.woff2
diff --git a/packages/ui/fonts/Faktum-SemiBold.woff2 b/packages/ui-deprecated/fonts/Faktum-SemiBold.woff2
similarity index 100%
rename from packages/ui/fonts/Faktum-SemiBold.woff2
rename to packages/ui-deprecated/fonts/Faktum-SemiBold.woff2
diff --git a/packages/ui/fonts/iosevka-term-ss03-italic.woff2 b/packages/ui-deprecated/fonts/iosevka-term-ss03-italic.woff2
similarity index 100%
rename from packages/ui/fonts/iosevka-term-ss03-italic.woff2
rename to packages/ui-deprecated/fonts/iosevka-term-ss03-italic.woff2
diff --git a/packages/ui/fonts/iosevka-term-ss03-regular.woff2 b/packages/ui-deprecated/fonts/iosevka-term-ss03-regular.woff2
similarity index 100%
rename from packages/ui/fonts/iosevka-term-ss03-regular.woff2
rename to packages/ui-deprecated/fonts/iosevka-term-ss03-regular.woff2
diff --git a/packages/ui/lib/toast/presets.ts b/packages/ui-deprecated/lib/toast/presets.ts
similarity index 100%
rename from packages/ui/lib/toast/presets.ts
rename to packages/ui-deprecated/lib/toast/presets.ts
diff --git a/packages/ui/lib/toast/toast.test.ts b/packages/ui-deprecated/lib/toast/toast.test.ts
similarity index 100%
rename from packages/ui/lib/toast/toast.test.ts
rename to packages/ui-deprecated/lib/toast/toast.test.ts
diff --git a/packages/ui/lib/toast/toast.ts b/packages/ui-deprecated/lib/toast/toast.ts
similarity index 100%
rename from packages/ui/lib/toast/toast.ts
rename to packages/ui-deprecated/lib/toast/toast.ts
diff --git a/packages/ui/lib/toast/transaction-toast.test.tsx b/packages/ui-deprecated/lib/toast/transaction-toast.test.tsx
similarity index 100%
rename from packages/ui/lib/toast/transaction-toast.test.tsx
rename to packages/ui-deprecated/lib/toast/transaction-toast.test.tsx
diff --git a/packages/ui/lib/toast/transaction-toast.tsx b/packages/ui-deprecated/lib/toast/transaction-toast.tsx
similarity index 100%
rename from packages/ui/lib/toast/transaction-toast.tsx
rename to packages/ui-deprecated/lib/toast/transaction-toast.tsx
diff --git a/packages/ui/lib/utils.ts b/packages/ui-deprecated/lib/utils.ts
similarity index 100%
rename from packages/ui/lib/utils.ts
rename to packages/ui-deprecated/lib/utils.ts
diff --git a/packages/ui-deprecated/package.json b/packages/ui-deprecated/package.json
new file mode 100644
index 0000000000..3ad2996fa1
--- /dev/null
+++ b/packages/ui-deprecated/package.json
@@ -0,0 +1,150 @@
+{
+ "name": "@penumbra-zone/ui-deprecated",
+ "version": "12.4.0",
+ "private": true,
+ "license": "(MIT OR Apache-2.0)",
+ "description": "UI components for Penumbra",
+ "type": "module",
+ "engine": {
+ "node": ">=22"
+ },
+ "scripts": {
+ "build": "vite build",
+ "build-storybook": "storybook build",
+ "dev:pack": "VITE_WATCH=true vite build --watch",
+ "lint": "eslint components lib src",
+ "lint:fix": "eslint components lib src --fix",
+ "lint:strict": "tsc --noEmit && eslint components lib src --max-warnings 0",
+ "storybook": "storybook dev -p 6006",
+ "test": "vitest run"
+ },
+ "files": [
+ "dist",
+ "components",
+ "lib",
+ "styles",
+ "postcss.config.js"
+ ],
+ "exports": {
+ "./components/ui/icons/*": "./components/ui/icons/*.tsx",
+ "./components/ui/*": "./components/ui/*/index.tsx",
+ "./lib/toast/*": "./lib/toast/*.ts",
+ "./lib/toast/transaction-toast": "./lib/toast/transaction-toast.tsx",
+ "./lib/utils": "./lib/utils.ts",
+ "./tailwind": "./src/tailwindConfig.ts",
+ "./postcss.config.js": "./postcss.config.js",
+ "./styles/*": "./styles/*",
+ "./theme": "./src/PenumbraUIProvider/theme.ts",
+ "./utils/*": "./src/utils/*.ts",
+ "./hooks/*": "./src/hooks/*/index.ts",
+ "./*": "./src/*/index.tsx"
+ },
+ "publishConfig": {
+ "exports": {
+ "./tailwind": {
+ "types": "./dist/src/tailwindConfig.d.ts",
+ "default": "./dist/src/tailwindConfig.js"
+ },
+ "./components/*": {
+ "types": "./dist/components/ui/*.d.ts",
+ "default": "./dist/components/ui/*.js"
+ },
+ "./utils/typography": {
+ "types": "./dist/src/utils/typography.d.ts",
+ "default": "./dist/src/utils/typography.js"
+ },
+ "./*": {
+ "types": "./dist/src/*/index.d.ts",
+ "default": "./dist/src/*/index.js"
+ }
+ }
+ },
+ "dependencies": {
+ "@emotion/react": "^11.11.4",
+ "@emotion/styled": "^11.11.5",
+ "@penumbra-zone/bech32m": "workspace:*",
+ "@penumbra-zone/perspective": "workspace:*",
+ "@penumbra-zone/types": "workspace:*",
+ "@radix-ui/react-avatar": "^1.0.4",
+ "@radix-ui/react-checkbox": "^1.0.4",
+ "@radix-ui/react-dialog": "1.0.5",
+ "@radix-ui/react-dropdown-menu": "^2.1.1",
+ "@radix-ui/react-icons": "^1.3.0",
+ "@radix-ui/react-navigation-menu": "^1.1.4",
+ "@radix-ui/react-popover": "^1.0.7",
+ "@radix-ui/react-progress": "^1.0.3",
+ "@radix-ui/react-radio-group": "^1.2.0",
+ "@radix-ui/react-select": "^2.1.1",
+ "@radix-ui/react-slider": "^1.1.2",
+ "@radix-ui/react-slot": "^1.0.2",
+ "@radix-ui/react-switch": "^1.0.3",
+ "@radix-ui/react-tabs": "^1.0.4",
+ "@radix-ui/react-toast": "^1.1.5",
+ "@radix-ui/react-toggle": "^1.0.3",
+ "@radix-ui/react-tooltip": "^1.0.7",
+ "@textea/json-viewer": "^3.4.1",
+ "@visx/axis": "^3.10.1",
+ "@visx/curve": "^3.3.0",
+ "@visx/grid": "^3.5.0",
+ "@visx/group": "^3.3.0",
+ "@visx/responsive": "^3.10.2",
+ "@visx/scale": "^3.5.0",
+ "@visx/shape": "^3.5.0",
+ "@visx/stats": "^3.5.0",
+ "@visx/threshold": "^3.5.0",
+ "@visx/tooltip": "^3.3.0",
+ "bignumber.js": "^9.1.2",
+ "class-variance-authority": "^0.7.0",
+ "clsx": "^2.1.1",
+ "cmdk": "0.2.0",
+ "framer-motion": "^11.2.4",
+ "humanize-duration": "^3.32.0",
+ "lucide-react": "^0.378.0",
+ "murmurhash3js": "^3.0.1",
+ "react-dom": "^18.3.1",
+ "react-loader-spinner": "^6.1.6",
+ "react-router-dom": "^6.23.1",
+ "sonner": "1.4.3",
+ "styled-components": "^6.1.11",
+ "tailwind-merge": "^2.3.0",
+ "tinycolor2": "^1.6.0",
+ "ua-parser-js": "^1.0.38"
+ },
+ "devDependencies": {
+ "@penumbra-zone/getters": "workspace:*",
+ "@penumbra-zone/protobuf": "workspace:*",
+ "@storybook/addon-essentials": "^8.4.2",
+ "@storybook/addon-interactions": "^8.4.2",
+ "@storybook/addon-links": "^8.1.1",
+ "@storybook/addon-postcss": "^2.0.0",
+ "@storybook/blocks": "^8.4.2",
+ "@storybook/manager-api": "^8.1.11",
+ "@storybook/preview-api": "^8.1.1",
+ "@storybook/react": "^8.4.2",
+ "@storybook/react-vite": "^8.4.2",
+ "@storybook/theming": "^8.1.11",
+ "@testing-library/user-event": "^14.5.2",
+ "@types/humanize-duration": "^3.27.4",
+ "@types/murmurhash3js": "^3.0.7",
+ "@types/react": "^18.3.2",
+ "@types/react-dom": "^18.3.0",
+ "@types/styled-components": "^5.1.34",
+ "@types/tinycolor2": "^1.4.6",
+ "@types/ua-parser-js": "^0.7.39",
+ "execa": "^9.5.1",
+ "prop-types": "^15.8.1",
+ "storybook": "^8.4.2",
+ "vite": "^5.2.11",
+ "vite-plugin-dts": "^4.0.3"
+ },
+ "peerDependencies": {
+ "@bufbuild/protobuf": "^1.10.0",
+ "@penumbra-zone/protobuf": "workspace:*",
+ "framer-motion": "^11.2.4",
+ "lucide-react": "^0.378.0",
+ "postcss": "^8.4.38",
+ "react": "^18.3.1",
+ "styled-components": "^6.1.11",
+ "tailwindcss": "^3.4.3"
+ }
+}
diff --git a/packages/ui-tailwind/postcss.config.js b/packages/ui-deprecated/postcss.config.js
similarity index 100%
rename from packages/ui-tailwind/postcss.config.js
rename to packages/ui-deprecated/postcss.config.js
diff --git a/packages/ui/src/AccountSelector/AccountSelectorAddress.tsx b/packages/ui-deprecated/src/AccountSelector/AccountSelectorAddress.tsx
similarity index 100%
rename from packages/ui/src/AccountSelector/AccountSelectorAddress.tsx
rename to packages/ui-deprecated/src/AccountSelector/AccountSelectorAddress.tsx
diff --git a/packages/ui/src/AccountSelector/IbcDepositToggle.tsx b/packages/ui-deprecated/src/AccountSelector/IbcDepositToggle.tsx
similarity index 100%
rename from packages/ui/src/AccountSelector/IbcDepositToggle.tsx
rename to packages/ui-deprecated/src/AccountSelector/IbcDepositToggle.tsx
diff --git a/packages/ui/src/AccountSelector/index.stories.tsx b/packages/ui-deprecated/src/AccountSelector/index.stories.tsx
similarity index 100%
rename from packages/ui/src/AccountSelector/index.stories.tsx
rename to packages/ui-deprecated/src/AccountSelector/index.stories.tsx
diff --git a/packages/ui/src/AccountSelector/index.tsx b/packages/ui-deprecated/src/AccountSelector/index.tsx
similarity index 100%
rename from packages/ui/src/AccountSelector/index.tsx
rename to packages/ui-deprecated/src/AccountSelector/index.tsx
diff --git a/packages/ui/src/AccountSelector/useAccountSelector.ts b/packages/ui-deprecated/src/AccountSelector/useAccountSelector.ts
similarity index 100%
rename from packages/ui/src/AccountSelector/useAccountSelector.ts
rename to packages/ui-deprecated/src/AccountSelector/useAccountSelector.ts
diff --git a/packages/ui-tailwind/src/AddressView/AddressIcon.tsx b/packages/ui-deprecated/src/AddressViewComponent/AddressIcon.tsx
similarity index 100%
rename from packages/ui-tailwind/src/AddressView/AddressIcon.tsx
rename to packages/ui-deprecated/src/AddressViewComponent/AddressIcon.tsx
diff --git a/packages/ui/src/AddressViewComponent/index.stories.tsx b/packages/ui-deprecated/src/AddressViewComponent/index.stories.tsx
similarity index 100%
rename from packages/ui/src/AddressViewComponent/index.stories.tsx
rename to packages/ui-deprecated/src/AddressViewComponent/index.stories.tsx
diff --git a/packages/ui/src/AddressViewComponent/index.test.tsx b/packages/ui-deprecated/src/AddressViewComponent/index.test.tsx
similarity index 100%
rename from packages/ui/src/AddressViewComponent/index.test.tsx
rename to packages/ui-deprecated/src/AddressViewComponent/index.test.tsx
diff --git a/packages/ui/src/AddressViewComponent/index.tsx b/packages/ui-deprecated/src/AddressViewComponent/index.tsx
similarity index 100%
rename from packages/ui/src/AddressViewComponent/index.tsx
rename to packages/ui-deprecated/src/AddressViewComponent/index.tsx
diff --git a/packages/ui-tailwind/src/AssetIcon/DelegationTokenIcon.tsx b/packages/ui-deprecated/src/AssetIcon/DelegationTokenIcon.tsx
similarity index 91%
rename from packages/ui-tailwind/src/AssetIcon/DelegationTokenIcon.tsx
rename to packages/ui-deprecated/src/AssetIcon/DelegationTokenIcon.tsx
index f81f006418..58dd68ce9d 100644
--- a/packages/ui-tailwind/src/AssetIcon/DelegationTokenIcon.tsx
+++ b/packages/ui-deprecated/src/AssetIcon/DelegationTokenIcon.tsx
@@ -1,4 +1,15 @@
import { assetPatterns } from '@penumbra-zone/types/assets';
+import { styled } from 'styled-components';
+
+const Svg = styled.svg.attrs({
+ id: 'delegation',
+ xmlns: 'http://www.w3.org/2000/svg',
+ xmlnsXlink: 'http://www.w3.org/1999/xlink',
+ viewBox: '0 0 32 32',
+})`
+ display: block;
+ border-radius: ${props => props.theme.borderRadius.full};
+`;
const getFirstEightCharactersOfValidatorId = (displayDenom = ''): [string, string] => {
const id = (assetPatterns.delegationToken.capture(displayDenom)?.id ?? '').substring(0, 8);
@@ -17,13 +28,7 @@ export const DelegationTokenIcon = ({ displayDenom }: DelegationTokenIconProps)
const [firstFour, lastFour] = getFirstEightCharactersOfValidatorId(displayDenom);
return (
-
);
};
diff --git a/packages/ui-tailwind/src/AssetIcon/UnbondingTokenIcon.tsx b/packages/ui-deprecated/src/AssetIcon/UnbondingTokenIcon.tsx
similarity index 91%
rename from packages/ui-tailwind/src/AssetIcon/UnbondingTokenIcon.tsx
rename to packages/ui-deprecated/src/AssetIcon/UnbondingTokenIcon.tsx
index 5ebd251ef1..58b302bf09 100644
--- a/packages/ui-tailwind/src/AssetIcon/UnbondingTokenIcon.tsx
+++ b/packages/ui-deprecated/src/AssetIcon/UnbondingTokenIcon.tsx
@@ -1,4 +1,15 @@
import { assetPatterns } from '@penumbra-zone/types/assets';
+import { styled } from 'styled-components';
+
+const Svg = styled.svg.attrs({
+ id: 'unbonding',
+ xmlns: 'http://www.w3.org/2000/svg',
+ xmlnsXlink: 'http://www.w3.org/1999/xlink',
+ viewBox: '0 0 32 32',
+})`
+ display: block;
+ border-radius: ${props => props.theme.borderRadius.full};
+`;
const getFirstEightCharactersOfValidatorId = (displayDenom = ''): [string, string] => {
const id = (assetPatterns.unbondingToken.capture(displayDenom)?.id ?? '').substring(0, 8);
@@ -17,13 +28,7 @@ export const UnbondingTokenIcon = ({ displayDenom }: UnbondingTokenIconProps) =>
const [firstFour, lastFour] = getFirstEightCharactersOfValidatorId(displayDenom);
return (
-
+
strokeWidth='.75'
/>
-
+
);
};
diff --git a/packages/ui-tailwind/src/AssetIcon/index.stories.tsx b/packages/ui-deprecated/src/AssetIcon/index.stories.tsx
similarity index 100%
rename from packages/ui-tailwind/src/AssetIcon/index.stories.tsx
rename to packages/ui-deprecated/src/AssetIcon/index.stories.tsx
diff --git a/packages/ui-tailwind/src/AssetIcon/index.tsx b/packages/ui-deprecated/src/AssetIcon/index.tsx
similarity index 72%
rename from packages/ui-tailwind/src/AssetIcon/index.tsx
rename to packages/ui-deprecated/src/AssetIcon/index.tsx
index cf7a1cf222..b54e3abbab 100644
--- a/packages/ui-tailwind/src/AssetIcon/index.tsx
+++ b/packages/ui-deprecated/src/AssetIcon/index.tsx
@@ -1,20 +1,36 @@
import { ReactNode } from 'react';
+import { styled } from 'styled-components';
import { Metadata } from '@penumbra-zone/protobuf/penumbra/core/asset/v1/asset_pb';
import { getDisplay } from '@penumbra-zone/getters/metadata';
import { assetPatterns } from '@penumbra-zone/types/assets';
import { Identicon } from '../Identicon';
import { DelegationTokenIcon } from './DelegationTokenIcon';
import { UnbondingTokenIcon } from './UnbondingTokenIcon';
-import cn from 'clsx';
type Size = 'lg' | 'md' | 'sm';
-const sizeMap: Record = {
- lg: cn('w-8 h-8'),
- md: cn('w-6 h-6'),
- sm: cn('w-4 h-4'),
+const sizeMap: Record = {
+ lg: 32,
+ md: 24,
+ sm: 16,
};
+const BorderWrapper = styled.div<{ $size: Size }>`
+ width: ${props => sizeMap[props.$size]}px;
+ height: ${props => sizeMap[props.$size]}px;
+ border-radius: ${props => props.theme.borderRadius.full};
+ overflow: hidden;
+
+ & > * {
+ width: 100%;
+ height: 100%;
+ }
+`;
+
+const IconImg = styled.img`
+ display: block;
+`;
+
export interface AssetIconProps {
size?: Size;
metadata?: Metadata;
@@ -29,7 +45,7 @@ export const AssetIcon = ({ metadata, size = 'md' }: AssetIconProps) => {
let assetIcon: ReactNode;
if (icon) {
- assetIcon = ;
+ assetIcon = ;
} else if (isDelegationToken) {
assetIcon = ;
} else if (isUnbondingToken) {
@@ -42,9 +58,5 @@ export const AssetIcon = ({ metadata, size = 'md' }: AssetIconProps) => {
assetIcon = ;
}
- return (
-
*]:w-full [&>*]:h-full')}>
- {assetIcon}
-
- );
+ return {assetIcon};
};
diff --git a/packages/ui/src/AssetIcon/shared.ts b/packages/ui-deprecated/src/AssetIcon/shared.ts
similarity index 100%
rename from packages/ui/src/AssetIcon/shared.ts
rename to packages/ui-deprecated/src/AssetIcon/shared.ts
diff --git a/packages/ui-tailwind/src/AssetSelector/Custom.tsx b/packages/ui-deprecated/src/AssetSelector/Custom.tsx
similarity index 68%
rename from packages/ui-tailwind/src/AssetSelector/Custom.tsx
rename to packages/ui-deprecated/src/AssetSelector/Custom.tsx
index f9df9516b8..77da9b165b 100644
--- a/packages/ui-tailwind/src/AssetSelector/Custom.tsx
+++ b/packages/ui-deprecated/src/AssetSelector/Custom.tsx
@@ -1,10 +1,18 @@
import { ReactNode, useId, useState } from 'react';
+import { styled } from 'styled-components';
import { Dialog } from '../Dialog';
-import { getHash } from './shared/helpers';
-import { AssetSelectorContext } from './shared/Context';
-import { AssetSelectorSearchFilter } from './SearchFilter';
-import { AssetSelectorTrigger } from './Trigger';
-import { AssetSelectorBaseProps } from './shared/types';
+import { IsAnimatingProvider } from '../IsAnimatingProvider';
+import { getHash } from './shared/helpers.ts';
+import { AssetSelectorContext } from './shared/Context.tsx';
+import { AssetSelectorSearchFilter } from './SearchFilter.tsx';
+import { AssetSelectorTrigger } from './Trigger.tsx';
+import { AssetSelectorBaseProps } from './shared/types.ts';
+
+const OptionsWrapper = styled.div`
+ display: flex;
+ flex-direction: column;
+ gap: ${props => props.theme.spacing(1)};
+`;
interface ChildrenArguments {
onClose: VoidFunction;
@@ -104,22 +112,28 @@ export const AssetSelectorCustom = ({
onClick={() => setIsOpen(true)}
/>
-
- )
- }
- >
-
-