diff --git a/src/components/Activity.tsx b/src/components/Activity.tsx deleted file mode 100644 index 4822311..0000000 --- a/src/components/Activity.tsx +++ /dev/null @@ -1,183 +0,0 @@ -import { NiceP } from "./layout"; -import { - For, - Match, - Show, - Switch, - createEffect, - createResource, - createSignal -} from "solid-js"; -import { useMegaStore } from "~/state/megaStore"; -import { useI18n } from "~/i18n/context"; -import { Contact } from "@mutinywallet/mutiny-wasm"; -import { ActivityItem, HackActivityType } from "./ActivityItem"; -import { DetailsIdModal } from "./DetailsModal"; -import { A } from "solid-start"; -import { LoadingShimmer } from "./BalanceBox"; -import { createDeepSignal } from "~/utils/deepSignal"; - -export const THREE_COLUMNS = - "grid grid-cols-[auto,1fr,auto] gap-4 py-2 px-2 border-b border-neutral-800 last:border-b-0"; -export const CENTER_COLUMN = "min-w-0 overflow-hidden max-w-full"; -export const MISSING_LABEL = - "py-1 px-2 bg-white/10 rounded inline-block text-sm"; -export const REDSHIFT_LABEL = - "py-1 px-2 bg-white text-m-red rounded inline-block text-sm"; -export const RIGHT_COLUMN = "flex flex-col items-right text-right max-w-[8rem]"; - -export type OnChainTx = { - txid: string; - received: number; - sent: number; - fee?: number; - confirmation_time?: { - Confirmed?: { - height: number; - time: number; - }; - }; - labels: string[]; -}; - -export type UtxoItem = { - outpoint: string; - txout: { - value: number; - script_pubkey: string; - }; - keychain: string; - is_spent: boolean; - redshifted?: boolean; -}; - -export type ActivityItem = { - kind: HackActivityType; - id: string; - amount_sats: number; - inbound: boolean; - labels: string[]; - contacts: Contact[]; - last_updated: number; -}; - -function UnifiedActivityItem(props: { - item: ActivityItem; - onClick: (id: string, kind: HackActivityType) => void; -}) { - const click = () => { - props.onClick( - props.item.id, - props.item.kind as unknown as HackActivityType - ); - }; - - return ( - - ); -} - -export function CombinedActivity(props: { limit?: number }) { - const [state, _actions] = useMegaStore(); - const i18n = useI18n(); - - const [detailsOpen, setDetailsOpen] = createSignal(false); - const [detailsKind, setDetailsKind] = createSignal(); - const [detailsId, setDetailsId] = createSignal(""); - - function openDetailsModal(id: string, kind: HackActivityType) { - console.log("Opening details modal: ", id, kind); - - // Some old channels don't have a channel id in the activity list - if (!id) { - console.warn("No id provided to openDetailsModal"); - return; - } - - setDetailsId(id); - setDetailsKind(kind); - setDetailsOpen(true); - } - - async function fetchActivity() { - return await state.mutiny_wallet?.get_activity(); - } - - const [activity, { refetch }] = createResource(fetchActivity, { - storage: createDeepSignal - }); - - createEffect(() => { - // Should re-run after every sync - if (!state.is_syncing) { - refetch(); - } - }); - - return ( - } - > - - - - - -
- - {i18n.t( - "activity.receive_some_sats_to_get_started" - )} - -
-
- props.limit} - > - - {(activityItem) => ( - - )} - - - = 0}> - - {(activityItem) => ( - - )} - - -
- 0}> - - {i18n.t("activity.view_all")} - - -
- ); -} diff --git a/src/components/ActivityItem.tsx b/src/components/ActivityItem.tsx index 45cca4b..29a1219 100644 --- a/src/components/ActivityItem.tsx +++ b/src/components/ActivityItem.tsx @@ -10,7 +10,7 @@ import { generateGradient } from "~/utils/gradientHash"; import { useMegaStore } from "~/state/megaStore"; import { Contact } from "@mutinywallet/mutiny-wasm"; import { useI18n } from "~/i18n/context"; -import { AmountFiat, AmountSats } from "~/components/Amount"; +import { AmountFiat, AmountSats } from "~/components"; export const ActivityAmount: ParentComponent<{ amount: string; diff --git a/src/components/AmountCard.tsx b/src/components/AmountCard.tsx index 85a5797..563b58a 100644 --- a/src/components/AmountCard.tsx +++ b/src/components/AmountCard.tsx @@ -1,8 +1,7 @@ import { Match, ParentComponent, Show, Switch, createMemo } from "solid-js"; -import { Card, VStack } from "~/components/layout"; +import { Card, VStack, AmountEditable } from "~/components"; import { useMegaStore } from "~/state/megaStore"; import { satsToUsd } from "~/utils/conversions"; -import { AmountEditable } from "./AmountEditable"; import { useI18n } from "~/i18n/context"; const noop = () => { diff --git a/src/components/AmountEditable.tsx b/src/components/AmountEditable.tsx index d48489b..6f71383 100644 --- a/src/components/AmountEditable.tsx +++ b/src/components/AmountEditable.tsx @@ -9,18 +9,15 @@ import { Switch, Match } from "solid-js"; -import { Button } from "~/components/layout"; +import { Button, InlineAmount, InfoBox, FeesModal } from "~/components"; import { useMegaStore } from "~/state/megaStore"; import { satsToUsd, usdToSats } from "~/utils/conversions"; import { Dialog } from "@kobalte/core"; import close from "~/assets/icons/close.svg"; import pencil from "~/assets/icons/pencil.svg"; import currencySwap from "~/assets/icons/currency-swap.svg"; -import { InlineAmount } from "./AmountCard"; import { DIALOG_CONTENT, DIALOG_POSITIONER } from "~/styles/dialogs"; -import { InfoBox } from "./InfoBox"; import { Network } from "~/logic/mutinyWalletSetup"; -import { FeesModal } from "./MoreInfoModal"; import { useI18n } from "~/i18n/context"; import { useNavigate } from "solid-start"; diff --git a/src/components/App.tsx b/src/components/App.tsx index 0716963..ce62401 100644 --- a/src/components/App.tsx +++ b/src/components/App.tsx @@ -1,23 +1,29 @@ -import { DefaultMain, SafeArea, VStack, Card } from "~/components/layout"; -import BalanceBox, { LoadingShimmer } from "~/components/BalanceBox"; -import NavBar from "~/components/NavBar"; -import ReloadPrompt from "~/components/Reload"; +import { + DefaultMain, + SafeArea, + VStack, + Card, + LoadingShimmer, + BalanceBox, + ReloadPrompt, + NavBar, + OnboardWarning, + CombinedActivity, + BetaWarningModal, + PendingNwc, + DecryptDialog, + LoadingIndicator +} from "~/components"; import { A } from "solid-start"; -import { OnboardWarning } from "~/components/OnboardWarning"; -import { CombinedActivity } from "./Activity"; import { useMegaStore } from "~/state/megaStore"; import { Match, Show, Suspense, Switch } from "solid-js"; -import { BetaWarningModal } from "~/components/BetaWarningModal"; import settings from "~/assets/icons/settings.svg"; import pixelLogo from "~/assets/mutiny-pixel-logo.png"; import plusLogo from "~/assets/mutiny-plus-logo.png"; -import { PendingNwc } from "./PendingNwc"; -import { DecryptDialog } from "./DecryptDialog"; -import { LoadingIndicator } from "./LoadingIndicator"; import { FeedbackLink } from "~/routes/Feedback"; import { useI18n } from "~/i18n/context"; -export default function App() { +export function App() { const i18n = useI18n(); const [state, _actions] = useMegaStore(); diff --git a/src/components/BalanceBox.tsx b/src/components/BalanceBox.tsx index dc3a2b2..e1850ce 100644 --- a/src/components/BalanceBox.tsx +++ b/src/components/BalanceBox.tsx @@ -1,11 +1,16 @@ import { Match, Show, Switch } from "solid-js"; -import { Button, FancyCard, Indicator } from "~/components/layout"; +import { + Button, + FancyCard, + Indicator, + AmountSats, + AmountFiat, + InfoBox +} from "~/components"; import { useMegaStore } from "~/state/megaStore"; -import { AmountSats, AmountFiat } from "./Amount"; import { A, useNavigate } from "solid-start"; import shuffle from "~/assets/icons/shuffle.svg"; import { useI18n } from "~/i18n/context"; -import { InfoBox } from "./InfoBox"; export function LoadingShimmer() { return ( @@ -23,7 +28,7 @@ export function LoadingShimmer() { const STYLE = "px-2 py-1 rounded-xl text-sm flex gap-2 items-center font-semibold"; -export default function BalanceBox(props: { loading?: boolean }) { +export function BalanceBox(props: { loading?: boolean }) { const [state, _actions] = useMegaStore(); const i18n = useI18n(); diff --git a/src/components/BetaWarningModal.tsx b/src/components/BetaWarningModal.tsx index 71a6ecf..9a42cd6 100644 --- a/src/components/BetaWarningModal.tsx +++ b/src/components/BetaWarningModal.tsx @@ -1,7 +1,12 @@ import { Dialog } from "@kobalte/core"; import { ParentComponent, createSignal } from "solid-js"; -import { DIALOG_CONTENT, DIALOG_POSITIONER, OVERLAY } from "./DetailsModal"; -import { ModalCloseButton, SmallHeader } from "./layout"; +import { + DIALOG_CONTENT, + DIALOG_POSITIONER, + OVERLAY, + ModalCloseButton, + SmallHeader +} from "~/components"; import { useI18n } from "~/i18n/context"; import { useMegaStore } from "~/state/megaStore"; import { ExternalLink } from "@mutinywallet/ui"; diff --git a/src/components/ContactEditor.tsx b/src/components/ContactEditor.tsx index a003c24..7f2c649 100644 --- a/src/components/ContactEditor.tsx +++ b/src/components/ContactEditor.tsx @@ -1,10 +1,13 @@ import { Match, Switch, createSignal } from "solid-js"; -import { SmallHeader, TinyButton } from "~/components/layout"; import { Dialog } from "@kobalte/core"; import close from "~/assets/icons/close.svg"; import { SubmitHandler } from "@modular-forms/solid"; -import { ContactForm } from "./ContactForm"; -import { ContactFormValues } from "./ContactViewer"; +import { + ContactFormValues, + ContactForm, + SmallHeader, + TinyButton +} from "~/components"; import { DIALOG_CONTENT, DIALOG_POSITIONER } from "~/styles/dialogs"; import { useI18n } from "~/i18n/context"; diff --git a/src/components/ContactForm.tsx b/src/components/ContactForm.tsx index 52aa5f9..e9364e2 100644 --- a/src/components/ContactForm.tsx +++ b/src/components/ContactForm.tsx @@ -1,7 +1,11 @@ import { SubmitHandler, createForm, required } from "@modular-forms/solid"; -import { Button, LargeHeader, VStack } from "~/components/layout"; -import { TextField } from "~/components/layout/TextField"; -import { ContactFormValues } from "./ContactViewer"; +import { + Button, + LargeHeader, + VStack, + TextField, + ContactFormValues +} from "~/components"; import { useI18n } from "~/i18n/context"; export function ContactForm(props: { diff --git a/src/components/ContactViewer.tsx b/src/components/ContactViewer.tsx index 74f417a..e9caa1e 100644 --- a/src/components/ContactViewer.tsx +++ b/src/components/ContactViewer.tsx @@ -1,10 +1,15 @@ import { Match, Switch, createSignal } from "solid-js"; -import { Button, Card, NiceP, SmallHeader } from "~/components/layout"; +import { + Button, + Card, + NiceP, + SmallHeader, + ContactForm, + showToast +} from "~/components"; import { Dialog } from "@kobalte/core"; import close from "~/assets/icons/close.svg"; import { SubmitHandler } from "@modular-forms/solid"; -import { ContactForm } from "./ContactForm"; -import { showToast } from "./Toaster"; import { Contact } from "@mutinywallet/mutiny-wasm"; import { DIALOG_CONTENT, DIALOG_POSITIONER } from "~/styles/dialogs"; import { useI18n } from "~/i18n/context"; diff --git a/src/components/DecryptDialog.tsx b/src/components/DecryptDialog.tsx index 1196d81..4764c3c 100644 --- a/src/components/DecryptDialog.tsx +++ b/src/components/DecryptDialog.tsx @@ -1,7 +1,5 @@ import { Show, createSignal } from "solid-js"; -import { Button, SimpleDialog } from "~/components/layout"; -import { TextField } from "~/components/layout/TextField"; -import { InfoBox } from "~/components/InfoBox"; +import { Button, SimpleDialog, TextField, InfoBox } from "~/components"; import { useMegaStore } from "~/state/megaStore"; import eify from "~/utils/eify"; import { A } from "solid-start"; diff --git a/src/components/DeleteEverything.tsx b/src/components/DeleteEverything.tsx index fbdfb97..b550e2a 100644 --- a/src/components/DeleteEverything.tsx +++ b/src/components/DeleteEverything.tsx @@ -1,8 +1,6 @@ import initMutinyWallet, { MutinyWallet } from "@mutinywallet/mutiny-wasm"; import { createSignal } from "solid-js"; -import { ConfirmDialog } from "~/components/Dialog"; -import { Button } from "~/components/layout"; -import { showToast } from "~/components/Toaster"; +import { ConfirmDialog, Button, showToast } from "~/components"; import { useI18n } from "~/i18n/context"; import { useMegaStore } from "~/state/megaStore"; import eify from "~/utils/eify"; diff --git a/src/components/DetailsModal.tsx b/src/components/DetailsModal.tsx deleted file mode 100644 index 0980afc..0000000 --- a/src/components/DetailsModal.tsx +++ /dev/null @@ -1,510 +0,0 @@ -import { Dialog } from "@kobalte/core"; -import { - For, - Match, - ParentComponent, - Show, - Suspense, - Switch, - createEffect, - createMemo, - createResource -} from "solid-js"; -import { Hr, ModalCloseButton, TinyButton, VStack } from "~/components/layout"; -import { MutinyChannel, MutinyInvoice } from "@mutinywallet/mutiny-wasm"; -import { OnChainTx } from "./Activity"; - -import bolt from "~/assets/icons/bolt-black.svg"; -import chain from "~/assets/icons/chain-black.svg"; -import copyIcon from "~/assets/icons/copy.svg"; -import shuffle from "~/assets/icons/shuffle-black.svg"; - -import { ActivityAmount, HackActivityType } from "./ActivityItem"; -import { CopyButton, TruncateMiddle } from "./ShareCard"; -import { prettyPrintTime } from "~/utils/prettyPrintTime"; -import { useMegaStore } from "~/state/megaStore"; -import { MutinyTagItem, tagToMutinyTag } from "~/utils/tags"; -import { useCopy } from "~/utils/useCopy"; -import mempoolTxUrl from "~/utils/mempoolTxUrl"; -import { Network } from "~/logic/mutinyWalletSetup"; -import { AmountSmall } from "./Amount"; -import { ExternalLink } from "@mutinywallet/ui"; -import { InfoBox } from "./InfoBox"; -import { useI18n } from "~/i18n/context"; - -type ChannelClosure = { - channel_id: string; - node_id: string; - reason: string; - timestamp: number; -}; - -export const OVERLAY = "fixed inset-0 z-50 bg-black/50 backdrop-blur-sm"; -export const DIALOG_POSITIONER = - "fixed inset-0 z-50 flex items-center justify-center"; -export const DIALOG_CONTENT = - "max-w-[500px] w-[90vw] max-h-[100dvh] overflow-y-scroll disable-scrollbars mx-4 p-4 bg-neutral-800/80 backdrop-blur-md shadow-xl rounded-xl border border-white/10"; - -function LightningHeader(props: { - info: MutinyInvoice; - tags: MutinyTagItem[]; -}) { - const i18n = useI18n(); - const [state, _actions] = useMegaStore(); - - return ( -
-
- lightning bolt -
-

- {props.info.inbound - ? i18n.t("modals.transaction_details.lightning_receive") - : i18n.t("modals.transaction_details.lightning_send")} -

- - - {(tag) => ( - { - // noop - }} - > - {tag.name} - - )} - -
- ); -} - -function OnchainHeader(props: { - info: OnChainTx; - tags: MutinyTagItem[]; - kind?: HackActivityType; -}) { - const i18n = useI18n(); - const [state, _actions] = useMegaStore(); - - const isSend = () => { - return props.info.sent > props.info.received; - }; - - const amount = () => { - if (isSend()) { - return (props.info.sent - props.info.received).toString(); - } else { - return (props.info.received - props.info.sent).toString(); - } - }; - - return ( -
-
- - - swap - - - blockchain - - -
-

- {props.kind === "ChannelOpen" - ? i18n.t("modals.transaction_details.channel_open") - : props.kind === "ChannelClose" - ? i18n.t("modals.transaction_details.channel_close") - : isSend() - ? i18n.t("modals.transaction_details.onchain_send") - : i18n.t("modals.transaction_details.onchain_receive")} -

- - - - - {(tag) => ( - { - // noop - }} - > - {tag.name} - - )} - -
- ); -} - -export const KeyValue: ParentComponent<{ key: string }> = (props) => { - return ( -
  • - - {props.key} - - {props.children} -
  • - ); -}; - -export function MiniStringShower(props: { text: string }) { - const [copy, copied] = useCopy({ copiedTimeout: 1000 }); - - return ( -
    - - {/*
    {props.text}
    */} - -
    - ); -} - -function LightningDetails(props: { info: MutinyInvoice }) { - const i18n = useI18n(); - return ( - -
      - - - {props.info.paid - ? i18n.t("modals.transaction_details.paid") - : i18n.t("modals.transaction_details.unpaid")} - - - - - {prettyPrintTime(Number(props.info.last_updated))} - - - - - - {props.info.description} - - - - - - - - - - - - - - - - - -
    -
    - ); -} - -function OnchainDetails(props: { info: OnChainTx; kind?: HackActivityType }) { - const i18n = useI18n(); - const [state, _actions] = useMegaStore(); - - const confirmationTime = () => { - return props.info.confirmation_time?.Confirmed?.time; - }; - - const network = state.mutiny_wallet?.get_network() as Network; - - // Can return nothing if the channel is already closed - const [channelInfo] = createResource(async () => { - if (props.kind === "ChannelOpen") { - try { - const channels = - await (state.mutiny_wallet?.list_channels() as Promise< - MutinyChannel[] - >); - const channel = channels.find((channel) => - channel.outpoint?.startsWith(props.info.txid) - ); - return channel; - } catch (e) { - console.error(e); - } - } else { - return undefined; - } - }); - - return ( - - {/*
    {JSON.stringify(channelInfo() || "", null, 2)}
    */} -
      - - - {confirmationTime() - ? i18n.t("modals.transaction_details.confirmed") - : i18n.t("modals.transaction_details.unconfirmed")} - - - - - - {confirmationTime() - ? prettyPrintTime(Number(confirmationTime())) - : "Pending"} - - - - 0}> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {i18n.t("modals.transaction_details.no_details")} - - - -
    -
    - - {i18n.t("common.view_transaction")} - -
    -
    - ); -} - -function ChannelCloseDetails(props: { info: ChannelClosure }) { - const i18n = useI18n(); - return ( - - {/*
    {JSON.stringify(props.info.value, null, 2)}
    */} -
      - - - - - - - {props.info.timestamp - ? prettyPrintTime(Number(props.info.timestamp)) - : i18n.t("common.pending")} - - - - -

      - {props.info.reason ?? ""} -

      -
      -
    -
    - ); -} - -export function DetailsIdModal(props: { - open: boolean; - kind?: HackActivityType; - id: string; - setOpen: (open: boolean) => void; -}) { - const i18n = useI18n(); - const [state, _actions] = useMegaStore(); - - const id = () => props.id; - const kind = () => props.kind; - - // TODO: is there a cleaner way to do refetch when id changes? - const [data, { refetch }] = createResource(async () => { - try { - if (kind() === "Lightning") { - console.debug("reading invoice: ", id()); - const invoice = await state.mutiny_wallet?.get_invoice_by_hash( - id() - ); - return invoice; - } else if (kind() === "ChannelClose") { - console.debug("reading channel close: ", id()); - const closeItem = - await state.mutiny_wallet?.get_channel_closure(id()); - - return closeItem; - } else { - console.debug("reading tx: ", id()); - const tx = await state.mutiny_wallet?.get_transaction(id()); - - return tx; - } - } catch (e) { - console.error(e); - return undefined; - } - }); - - const tags = createMemo(() => { - if (data() && data().labels && data().labels.length > 0) { - try { - const contact = state.mutiny_wallet?.get_contact( - data().labels[0] - ); - if (contact) { - return [tagToMutinyTag(contact)]; - } else { - return []; - } - } catch (e) { - console.error(e); - return []; - } - } else { - return []; - } - }); - - createEffect(() => { - if (props.id && props.kind && props.open) { - refetch(); - } - }); - - const json = createMemo(() => JSON.stringify(data() || "", null, 2)); - - return ( - - - -
    - - -
    -
    - - - -
    - - - - - - - - - - -
    - - - - - - - - - - - - - -
    - -
    -
    -
    - - -
    - - - ); -} diff --git a/src/components/Dialog.tsx b/src/components/Dialog.tsx index a515a6f..04e43f3 100644 --- a/src/components/Dialog.tsx +++ b/src/components/Dialog.tsx @@ -1,6 +1,6 @@ import { Dialog } from "@kobalte/core"; import { ParentComponent } from "solid-js"; -import { Button, SmallHeader } from "./layout"; +import { Button, SmallHeader } from "~/components"; import { useI18n } from "~/i18n/context"; const OVERLAY = "fixed inset-0 z-50 bg-black/50 backdrop-blur-sm"; diff --git a/src/components/ErrorDisplay.tsx b/src/components/ErrorDisplay.tsx index d222137..9cf6e7f 100644 --- a/src/components/ErrorDisplay.tsx +++ b/src/components/ErrorDisplay.tsx @@ -10,7 +10,7 @@ import { import { ExternalLink } from "@mutinywallet/ui"; import { useI18n } from "~/i18n/context"; -export default function ErrorDisplay(props: { error: Error }) { +export function ErrorDisplay(props: { error: Error }) { const i18n = useI18n(); return ( diff --git a/src/components/Fee.tsx b/src/components/Fee.tsx index 9ca041e..98ee62a 100644 --- a/src/components/Fee.tsx +++ b/src/components/Fee.tsx @@ -1,6 +1,5 @@ import { useI18n } from "~/i18n/context"; -import { AmountFiat, AmountSats } from "~/components/Amount"; -import { FeesModal } from "~/components/MoreInfoModal"; +import { AmountFiat, AmountSats, FeesModal } from "~/components"; export function Fee(props: { amountSats?: bigint | number }) { const i18n = useI18n(); diff --git a/src/components/I18nProvider.tsx b/src/components/I18nProvider.tsx index caa4a00..3dcb752 100644 --- a/src/components/I18nProvider.tsx +++ b/src/components/I18nProvider.tsx @@ -1,5 +1,5 @@ import { ParentComponent, Show, createResource } from "solid-js"; -import { I18nContext } from "../i18n/context"; +import { I18nContext } from "~/i18n/context"; import i18next from "i18next"; import i18nConfig from "~/i18n/config"; diff --git a/src/components/ImportExport.tsx b/src/components/ImportExport.tsx index ff25b86..a7e11d7 100644 --- a/src/components/ImportExport.tsx +++ b/src/components/ImportExport.tsx @@ -4,17 +4,17 @@ import { InnerCard, NiceP, SimpleDialog, - VStack -} from "~/components/layout"; + VStack, + ConfirmDialog, + showToast, + InfoBox, + TextField +} from "~/components"; import { Show, createSignal } from "solid-js"; import eify from "~/utils/eify"; -import { showToast } from "./Toaster"; import { downloadTextFile } from "~/utils/download"; import { createFileUploader } from "@solid-primitives/upload"; -import { ConfirmDialog } from "./Dialog"; import initMutinyWallet, { MutinyWallet } from "@mutinywallet/mutiny-wasm"; -import { InfoBox } from "./InfoBox"; -import { TextField } from "./layout/TextField"; import { useI18n } from "~/i18n/context"; export function ImportExport(props: { emergency?: boolean }) { diff --git a/src/components/IntegratedQR.tsx b/src/components/IntegratedQR.tsx index c640c7b..95cdac6 100644 --- a/src/components/IntegratedQR.tsx +++ b/src/components/IntegratedQR.tsx @@ -2,8 +2,7 @@ import { Match, Show, Switch } from "solid-js"; import { QRCodeSVG } from "solid-qr-code"; import { ReceiveFlavor } from "~/routes/Receive"; import { useCopy } from "~/utils/useCopy"; -import { AmountSats, AmountFiat } from "./Amount"; -import { TruncateMiddle } from "./ShareCard"; +import { AmountSats, AmountFiat, TruncateMiddle } from "~/components"; import copyBlack from "~/assets/icons/copy-black.svg"; import shareBlack from "~/assets/icons/share-black.svg"; import chainBlack from "~/assets/icons/chain-black.svg"; diff --git a/src/components/JsonModal.tsx b/src/components/JsonModal.tsx index 26de30b..6143aab 100644 --- a/src/components/JsonModal.tsx +++ b/src/components/JsonModal.tsx @@ -1,12 +1,13 @@ import { Dialog } from "@kobalte/core"; import { JSX, createMemo } from "solid-js"; -import { ModalCloseButton, SmallHeader } from "~/components/layout"; import { + ModalCloseButton, + SmallHeader, DIALOG_CONTENT, DIALOG_POSITIONER, - OVERLAY -} from "~/components/DetailsModal"; -import { CopyButton } from "./ShareCard"; + OVERLAY, + CopyButton +} from "~/components"; import { useI18n } from "~/i18n/context"; export function JsonModal(props: { diff --git a/src/components/KitchenSink.tsx b/src/components/KitchenSink.tsx index b0b2653..bcd3f92 100644 --- a/src/components/KitchenSink.tsx +++ b/src/components/KitchenSink.tsx @@ -1,5 +1,4 @@ import { useMegaStore } from "~/state/megaStore"; -import { Hr, Button, InnerCard, VStack } from "~/components/layout"; import { For, Match, @@ -13,14 +12,20 @@ import { MutinyChannel, MutinyPeer } from "@mutinywallet/mutiny-wasm"; import { Collapsible, TextField } from "@kobalte/core"; import mempoolTxUrl from "~/utils/mempoolTxUrl"; import eify from "~/utils/eify"; -import { ConfirmDialog } from "~/components/Dialog"; -import { showToast } from "~/components/Toaster"; +import { + ConfirmDialog, + Hr, + Button, + InnerCard, + VStack, + showToast, + Restart, + ResyncOnchain, + ResetRouter, + MiniStringShower +} from "~/components"; import { Network } from "~/logic/mutinyWalletSetup"; import { ExternalLink } from "@mutinywallet/ui"; -import { Restart } from "./Restart"; -import { ResyncOnchain } from "./ResyncOnchain"; -import { ResetRouter } from "./ResetRouter"; -import { MiniStringShower } from "./DetailsModal"; import { useI18n } from "~/i18n/context"; // TODO: hopefully I don't have to maintain this type forever but I don't know how to pass it around otherwise @@ -451,7 +456,7 @@ function ListNodes() { ); } -export default function KitchenSink() { +export function KitchenSink() { return ( <> diff --git a/src/components/Logs.tsx b/src/components/Logs.tsx index 1376a52..db8d678 100644 --- a/src/components/Logs.tsx +++ b/src/components/Logs.tsx @@ -1,5 +1,5 @@ import { MutinyWallet } from "@mutinywallet/mutiny-wasm"; -import { InnerCard, NiceP, VStack, Button } from "~/components/layout"; +import { Button, InnerCard, NiceP, VStack } from "~/components"; import { useI18n } from "~/i18n/context"; import { downloadTextFile } from "~/utils/download"; diff --git a/src/components/MoreInfoModal.tsx b/src/components/MoreInfoModal.tsx index ad84d4d..b450e63 100644 --- a/src/components/MoreInfoModal.tsx +++ b/src/components/MoreInfoModal.tsx @@ -1,7 +1,12 @@ import { Dialog } from "@kobalte/core"; import { ParentComponent, createSignal, JSXElement } from "solid-js"; -import { DIALOG_CONTENT, DIALOG_POSITIONER, OVERLAY } from "./DetailsModal"; -import { ModalCloseButton, SmallHeader } from "./layout"; +import { + DIALOG_CONTENT, + DIALOG_POSITIONER, + OVERLAY, + ModalCloseButton, + SmallHeader +} from "~/components"; import { ExternalLink } from "@mutinywallet/ui"; import help from "~/assets/icons/help.svg"; import { useI18n } from "~/i18n/context"; diff --git a/src/components/NavBar.tsx b/src/components/NavBar.tsx index b956cea..3828dc1 100644 --- a/src/components/NavBar.tsx +++ b/src/components/NavBar.tsx @@ -39,7 +39,7 @@ function NavBarItem(props: { ); } -export default function NavBar(props: { activeTab: ActiveTab }) { +export function NavBar(props: { activeTab: ActiveTab }) { return (