diff options
| author | Adam Soltys <[email protected]> | 2026-02-11 17:09:39 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-02-11 17:09:39 -0800 |
| commit | 3aa9ce1b5985397d7f568887ec6f881df13c1034 (patch) | |
| tree | 2c459692dc5315e92924de6be9f0999a835e0f54 /src/components | |
| parent | 8a4b0087cbfe8b43d9b43d19af6d991a646ef3d7 (diff) | |
| download | coinos-ui-3aa9ce1b5985397d7f568887ec6f881df13c1034.tar.gz coinos-ui-3aa9ce1b5985397d7f568887ec6f881df13c1034.zip | |
fix ts errors
Diffstat (limited to 'src/components')
| -rw-r--r-- | src/components/Account.svelte | 22 | ||||
| -rw-r--r-- | src/components/Amount.svelte | 8 | ||||
| -rw-r--r-- | src/components/AmountField.svelte | 11 | ||||
| -rw-r--r-- | src/components/AppForm.svelte | 4 | ||||
| -rw-r--r-- | src/components/AppHeader.svelte | 10 | ||||
| -rw-r--r-- | src/components/Avatar.svelte | 5 | ||||
| -rw-r--r-- | src/components/Balance.svelte | 2 | ||||
| -rw-r--r-- | src/components/Event.svelte | 4 | ||||
| -rw-r--r-- | src/components/InvoiceData.svelte | 3 | ||||
| -rw-r--r-- | src/components/ItemForm.svelte | 20 | ||||
| -rw-r--r-- | src/components/LandingHeader.svelte | 2 | ||||
| -rw-r--r-- | src/components/Lnurlw.svelte | 7 | ||||
| -rw-r--r-- | src/components/LocaleSelector.svelte | 2 | ||||
| -rw-r--r-- | src/components/LocationsMap.svelte | 58 | ||||
| -rw-r--r-- | src/components/Nostr.svelte | 20 | ||||
| -rw-r--r-- | src/components/Numpad.svelte | 40 | ||||
| -rw-r--r-- | src/components/Password.svelte | 2 | ||||
| -rw-r--r-- | src/components/Payments.svelte | 2 | ||||
| -rw-r--r-- | src/components/Qr.svelte | 2 | ||||
| -rw-r--r-- | src/components/SetAmount.svelte | 3 | ||||
| -rw-r--r-- | src/components/SetType.svelte | 3 | ||||
| -rw-r--r-- | src/components/Success.svelte | 12 | ||||
| -rw-r--r-- | src/components/WalletPass.svelte | 4 |
23 files changed, 128 insertions, 118 deletions
diff --git a/src/components/Account.svelte b/src/components/Account.svelte index 0eaf6dfb..d05addbe 100644 --- a/src/components/Account.svelte +++ b/src/components/Account.svelte @@ -13,7 +13,7 @@ forgetWalletPassword, } from "$lib/passwordCache"; - let { user, rate, account } = $props(); + let { user, rate, account }: any = $props(); let { name, seed, @@ -27,8 +27,8 @@ let arkBalance = $state(0); let arkLoading = $state(false); let passwordPrompt = $state(false); - let password = $state(); - let pendingUrl = $state(); + let password: string | undefined = $state(); + let pendingUrl: string | undefined = $state(); let cancel = $state(() => { passwordPrompt = false; pendingUrl = undefined; @@ -41,7 +41,7 @@ const { decrypt } = await import("nostr-tools/nip49"); if (seed) { // Legacy: per-account seed is raw hex key - $arkkey = hex.encode(decrypt(seed, cached)); + $arkkey = hex.encode(decrypt(seed, cached) as Uint8Array); } else if (user.seed) { // Master seed: derive m/86'/0'/0'/0/0 const [ @@ -58,7 +58,7 @@ let s = await mnemonicToSeed(mnemonic, cached); let master = HDKey.fromMasterSeed(s, versions); let arkChild = master.derive("m/86'/0'/0'/0/0"); - $arkkey = bytesToHex(arkChild.privateKey); + $arkkey = bytesToHex(arkChild.privateKey!); } else { return false; } @@ -76,9 +76,9 @@ if (isArk) { pendingUrl = url; if ($arkkey) { - goto(pendingUrl); + goto(pendingUrl!); } else if (await tryUnlockArk()) { - goto(pendingUrl); + goto(pendingUrl!); } else { passwordPrompt = true; } @@ -91,7 +91,7 @@ let submitPassword = async () => { const { decrypt } = await import("nostr-tools/nip49"); if (seed) { - $arkkey = hex.encode(decrypt(seed, password)); + $arkkey = hex.encode(decrypt(seed, password!) as Uint8Array); } else if (user.seed) { const [ { HDKey }, @@ -102,12 +102,12 @@ import("@scure/bip39"), import("@scure/bip39/wordlists/english.js"), ]); - let entropy = await decrypt(user.seed, password); + let entropy = await decrypt(user.seed, password!); let mnemonic = entropyToMnemonic(entropy, wordlist); - let s = await mnemonicToSeed(mnemonic, password); + let s = await mnemonicToSeed(mnemonic, password!); let master = HDKey.fromMasterSeed(s, versions); let arkChild = master.derive("m/86'/0'/0'/0/0"); - $arkkey = bytesToHex(arkChild.privateKey); + $arkkey = bytesToHex(arkChild.privateKey!); } passwordPrompt = false; if (pendingUrl) { diff --git a/src/components/Amount.svelte b/src/components/Amount.svelte index 4c7c487a..2587520a 100644 --- a/src/components/Amount.svelte +++ b/src/components/Amount.svelte @@ -2,14 +2,14 @@ import { copy, s, f, toFiat } from "$lib/utils"; import { fiat } from "$lib/store"; const { - align, + align = "", amount, - locale, - tip, + locale = undefined, + tip = undefined, rate, currency, locked = false, - } = $props(); + }: any = $props(); const icon = $derived(locked ? "ph:lock-fill" : "ph:lightning-fill"); const canShowFiat = $derived($fiat && rate && currency); diff --git a/src/components/AmountField.svelte b/src/components/AmountField.svelte index 36e7d4a6..21c36631 100644 --- a/src/components/AmountField.svelte +++ b/src/components/AmountField.svelte @@ -6,12 +6,15 @@ let { amount = $bindable(), none = $t("accounts.none"), - desc, + desc = "", currency, rate, - label, - name, - } = $props(); + label = "", + name = "", + locale = undefined, + submit = undefined, + element = undefined, + }: any = $props(); let setting = $state(); let set = () => { diff --git a/src/components/AppForm.svelte b/src/components/AppForm.svelte index ec33390a..026e4aba 100644 --- a/src/components/AppForm.svelte +++ b/src/components/AppForm.svelte @@ -42,7 +42,7 @@ let lud16 = $derived(`${user.username}@${$page.url.host}`); - let el = $state(); + let el: HTMLFormElement | undefined = $state(); let submit = async (e) => { e.preventDefault(); let body = new FormData(el); @@ -65,7 +65,7 @@ try { await post(`/post/apps/delete`, { pubkey }); goto("/settings/nostr"); - } catch (e) { + } catch (e: any) { fail(e.message); } }; diff --git a/src/components/AppHeader.svelte b/src/components/AppHeader.svelte index 0ab48706..f45f4d0c 100644 --- a/src/components/AppHeader.svelte +++ b/src/components/AppHeader.svelte @@ -8,12 +8,12 @@ let { user, subject = $bindable() } = $props(); - let w = $state(); + let w: number | undefined = $state(); $effect(() => (subject = subject || user)); let bg = $derived( - $banner?.id && $banner.id === subject?.id - ? `url(${$banner.src})` + ($banner as any)?.id && ($banner as any).id === subject?.id + ? `url(${($banner as any).src})` : subject?.banner ? subject.banner.includes(":") ? `url(${subject.banner})` @@ -71,10 +71,10 @@ > <nav class="flex justify-end items-center space-x-4 p-5"> {#if user} - {#each links as { href, icon, flip, label }} + {#each links as { href, icon, label }} <a {href} data-sveltekit-preload-code="eager" aria-label={label}> <button class="btn-menu {opacity(href)}" aria-label={label}> - <iconify-icon noobserver {icon} width={w > 640 ? 32 : 24} {flip} + <iconify-icon noobserver {icon} width={(w ?? 0) > 640 ? 32 : 24} ></iconify-icon> </button> </a> diff --git a/src/components/Avatar.svelte b/src/components/Avatar.svelte index 438008b8..ca35fb35 100644 --- a/src/components/Avatar.svelte +++ b/src/components/Avatar.svelte @@ -6,9 +6,10 @@ user: any; size?: number; disabled?: boolean; + class?: string; } - let { user, size = 32, disabled = false }: Props = $props(); + let { user, size = 32, disabled = false, class: className = "" }: Props = $props(); let s = $derived(size.toString()); let link = $derived( @@ -22,7 +23,7 @@ let fallback = $derived( `${base}/punks/` + punk(user?.pubkey || user?.id || "aa"), ); - let tmp = $derived($avatar?.id && $avatar.id === user?.id && $avatar.src); + let tmp = $derived(($avatar as any)?.id && ($avatar as any).id === user?.id && ($avatar as any).src); let src = $derived(tmp || profile || fallback); </script> diff --git a/src/components/Balance.svelte b/src/components/Balance.svelte index 5d1bfd7b..b05d9ac5 100644 --- a/src/components/Balance.svelte +++ b/src/components/Balance.svelte @@ -17,7 +17,7 @@ </script> {#if show && user.haspin && $pin?.length !== 6} - <Pin cancel={() => (show = false)} /> + <Pin cancel={() => { show = false; return ""; }} /> {/if} <div> diff --git a/src/components/Event.svelte b/src/components/Event.svelte index 8faba04d..3ecf00fc 100644 --- a/src/components/Event.svelte +++ b/src/components/Event.svelte @@ -9,7 +9,7 @@ import { page } from "$app/stores"; let amount = 21; - let { event, minimal, last = true, user } = $props(); + let { event, minimal = false, last = true, user = undefined }: any = $props(); let { author, parts, zaps, names, created_at, pubkey } = $derived(event); let { id } = event; @@ -25,7 +25,7 @@ event: await sign(request), }); await post("/post/payments", { amount, payreq }); - } catch (e) { + } catch (e: any) { console.log(e); fail(e.message); } diff --git a/src/components/InvoiceData.svelte b/src/components/InvoiceData.svelte index 3be12215..51f7b396 100644 --- a/src/components/InvoiceData.svelte +++ b/src/components/InvoiceData.svelte @@ -14,8 +14,9 @@ locale, tip, rate, + align = "", t, - } = $props(); + }: any = $props(); let loaded = $state(false); let { memo } = $derived(invoice); diff --git a/src/components/ItemForm.svelte b/src/components/ItemForm.svelte index 77437c1f..d087e2bf 100644 --- a/src/components/ItemForm.svelte +++ b/src/components/ItemForm.svelte @@ -8,21 +8,21 @@ import Spinner from "$comp/Spinner.svelte"; let { item = $bindable(), user } = $props(); - let fileInput = $state(), formElement = $state(), file, submitting = $state(), progress; - let select = () => fileInput.click(); - let src = $state(); + let fileInput: HTMLInputElement | undefined = $state(), formElement: HTMLFormElement | undefined = $state(), file: File, submitting = $state(), progress: any; + let select = () => fileInput!.click(); + let src: string | undefined = $state(); - let tooLarge = {}; - let handleFile = async ({ target }, type) => { + let tooLarge: Record<string, boolean> = {}; + let handleFile = async ({ target }: { target: EventTarget | null }, type: string) => { tooLarge[type] = false; - file = target.files[0]; + file = (target as HTMLInputElement).files![0]; if (!file) return; if (file.size > 10000000) return (tooLarge[type] = true); var reader = new FileReader(); reader.onload = async (e) => { - src = e.target.result; + src = (e.target as FileReader).result as string; }; reader.readAsDataURL(file); @@ -31,11 +31,11 @@ async function handleSubmit() { try { submitting = true; - let data = new FormData(formElement); + let data = new FormData(formElement!); if (src) { try { - let { hash } = JSON.parse(await upload(file, "item", progress)); + let { hash } = JSON.parse(await upload(file, "item", progress) as string); data.set("image", hash); @@ -48,7 +48,7 @@ } } - const response = await fetch(formElement.action, { + const response = await fetch(formElement!.action, { method: "POST", body: data, }); diff --git a/src/components/LandingHeader.svelte b/src/components/LandingHeader.svelte index 603795ab..1a2af208 100644 --- a/src/components/LandingHeader.svelte +++ b/src/components/LandingHeader.svelte @@ -7,7 +7,7 @@ import DarkToggle from "$comp/DarkToggle.svelte"; import LocaleSelector from "$comp/LocaleSelector.svelte"; - let { howItWorks, faq, about, user } = $props(); + let { howItWorks = undefined, faq = undefined, about = undefined, user = undefined }: any = $props(); let showMobileMenu = $state(false); let header = $state(); diff --git a/src/components/Lnurlw.svelte b/src/components/Lnurlw.svelte index 784e8468..ac79b101 100644 --- a/src/components/Lnurlw.svelte +++ b/src/components/Lnurlw.svelte @@ -1,7 +1,7 @@ <script lang="ts"> import { tick } from "svelte"; import handler from "$lib/handler"; - import { sats, f, s } from "$lib/utils"; + import { sats, f, s, focus } from "$lib/utils"; import { t } from "$lib/translations"; import { enhance } from "$app/forms"; import Numpad from "$comp/Numpad.svelte"; @@ -23,8 +23,8 @@ let amount = $state(Math.round(minWithdrawable / 1000)); let amountFiat = $derived(parseFloat(((amount * rate) / sats).toFixed(2))); - let submit = $state(); - let submitting = $state(); + let submit: HTMLButtonElement | undefined = $state(); + let submitting: boolean = $state(false); let toggle = () => (submitting = !submitting); let setMax = async (e) => { @@ -70,7 +70,6 @@ use:enhance={handler(toggle)} action="?/withdraw" method="POST" - onsubmit={submit} class="space-y-5" > <input name="amount" value={amount} type="hidden" /> diff --git a/src/components/LocaleSelector.svelte b/src/components/LocaleSelector.svelte index e6fbdec8..6511eccd 100644 --- a/src/components/LocaleSelector.svelte +++ b/src/components/LocaleSelector.svelte @@ -2,7 +2,7 @@ import { run } from "svelte/legacy"; import { t, locale, locales } from "$lib/translations"; - let { style } = $props(); + let { style = "" }: any = $props(); let l = $state($locale); const handleChange = ({ currentTarget }) => { diff --git a/src/components/LocationsMap.svelte b/src/components/LocationsMap.svelte index 3abdfcc4..26f32ee8 100644 --- a/src/components/LocationsMap.svelte +++ b/src/components/LocationsMap.svelte @@ -5,15 +5,15 @@ import { back } from "$lib/utils"; let { locations } = $props(); - let map; - let mapContainer = $state(), - mapWrapper = $state(); - let markers = []; - let search = $state(); - let clearSearch = (e) => (search = ""); + let map: any; + let mapContainer: any = $state(), + mapWrapper: any = $state(); + let markers: any[] = []; + let search: string = $state(""); + let clearSearch = (e: any) => (search = ""); let currentIndex = -1; - let timeout = $state(); + let timeout: any = $state(); let full = () => { if (!document.fullscreenElement) { @@ -32,17 +32,18 @@ map.resize(); } else { - if (document.exitFullscreen) { - document.exitFullscreen(); - } else if (document.mozCancelFullScreen) { + let doc = document as any; + if (doc.exitFullscreen) { + doc.exitFullscreen(); + } else if (doc.mozCancelFullScreen) { /* Firefox */ - document.mozCancelFullScreen(); - } else if (document.webkitExitFullscreen) { + doc.mozCancelFullScreen(); + } else if (doc.webkitExitFullscreen) { /* Chrome, Safari and Opera */ - document.webkitExitFullscreen(); - } else if (document.msExitFullscreen) { + doc.webkitExitFullscreen(); + } else if (doc.msExitFullscreen) { /* IE/Edge */ - document.msExitFullscreen(); + doc.msExitFullscreen(); } } }; @@ -58,7 +59,7 @@ }; let selected = $state(); - function select(m) { + function select(m: any) { selected = m; stopFlying(); currentIndex = inview.indexOf(m); @@ -114,11 +115,11 @@ timeout = setTimeout(startFlying, 4000); } - function debounce(func, delay) { - let timeout; + function debounce(func: any, delay: any) { + let timeout: any; let immediate = true; - return function (...args) { + return function (this: any, ...args: any[]) { const context = this; if (immediate) { @@ -137,7 +138,8 @@ function stopFlying() { updateLabelVisibility(); if (!timeout) return; - timeout = clearTimeout(timeout); + clearTimeout(timeout); + timeout = undefined; if (currentPopup) { currentPopup.remove(); @@ -147,7 +149,7 @@ map.off("moveend"); } - let inview = $state([]); + let inview: any[] = $state([]); let updateLabelVisibility = debounce(() => { inview = []; @@ -167,20 +169,20 @@ inview = inview.sort((a, b) => a.tags.name.localeCompare(b.tags.name)); }, 200); - let locationMarkers = {}; - let popups = {}; + let locationMarkers: any = {}; + let popups: any = {}; let counter = 0; - let maplibrePromise; + let maplibrePromise: any; const loadMaplibre = async () => { - if (window.maplibregl) return window.maplibregl; + if ((window as any).maplibregl) return (window as any).maplibregl; if (maplibrePromise) return maplibrePromise; maplibrePromise = new Promise((resolve, reject) => { const existing = document.querySelector("script[data-maplibre]"); if (existing) { - if (window.maplibregl) return resolve(window.maplibregl); - existing.addEventListener("load", () => resolve(window.maplibregl)); + if ((window as any).maplibregl) return resolve((window as any).maplibregl); + existing.addEventListener("load", () => resolve((window as any).maplibregl)); existing.addEventListener("error", reject); return; } @@ -197,7 +199,7 @@ script.async = true; script.defer = true; script.dataset.maplibre = "true"; - script.onload = () => resolve(window.maplibregl); + script.onload = () => resolve((window as any).maplibregl); script.onerror = reject; document.head.appendChild(script); }); diff --git a/src/components/Nostr.svelte b/src/components/Nostr.svelte index 8718d4eb..e7fd0e58 100644 --- a/src/components/Nostr.svelte +++ b/src/components/Nostr.svelte @@ -10,11 +10,11 @@ import { nostrConnectRelay } from "$lib/nostr"; import Success from "$comp/Success.svelte"; - let { id } = $props(); + let { id = undefined }: any = $props(); let extensionAvailable = $derived(browser && window.nostr); let cancel = () => { - eventToSign.set(); + eventToSign.set(undefined); showNsec = false; connectUrl = undefined; $signer = "cancel"; @@ -29,7 +29,7 @@ let hadSigner = $state(!!$signer); - let connectUrl = $state(); + let connectUrl: string | undefined = $state(); let nostrConnect = async () => { const { Relay } = await import("nostr-tools/relay"); const { nip04, generateSecretKey, getPublicKey } = await import( @@ -76,7 +76,7 @@ }); }; - let nsec = $state(); + let nsec: string = $state(""); let showNsec = $state(); let toggleNsec = () => { $signer = { @@ -86,7 +86,7 @@ let nsecSign = async () => { const { nip19, getPublicKey } = await import("nostr-tools"); - let sk; + let sk: Uint8Array; if (nsec.startsWith("nsec")) sk = nip19.decode(nsec).data as Uint8Array; else sk = hexToBytes(nsec); @@ -108,13 +108,13 @@ const signerSigned = async () => { await new Promise((r) => setTimeout(r, 100)); let sig = await navigator.clipboard.readText(); - $signer.params.sig = sig; - $signer.ready = true; + ($signer as any).params.sig = sig; + ($signer as any).ready = true; $signer = $signer; }; let signUrl = $derived( - `nostrsigner:${encodeURIComponent(JSON.stringify($eventToSign))}?compressionType=none&returnType=signature&type=sign_event&appName=Coinos`, + `nostrsigner:${encodeURIComponent(JSON.stringify($eventToSign))}?compressionType=none&returnType=signature&type=sign_event&appName=Coinos` as string, ); </script> @@ -127,7 +127,7 @@ > <h1 class="text-center text-2xl font-semibold">Nostr sign</h1> - {#if $eventToSign.sig && !hadSigner} + {#if ($eventToSign as any).sig && !hadSigner} <Success /> {:else} {#if connectUrl} @@ -150,7 +150,7 @@ ></iconify-icon> {$t("payments.openLink")}</a > - <button class="btn" onclick={() => copy(connectUrl)}> + <button class="btn" onclick={() => copy(connectUrl!)}> <iconify-icon noobserver icon="ph:copy-bold" width="32" ></iconify-icon> {$t("payments.copy")}</button diff --git a/src/components/Numpad.svelte b/src/components/Numpad.svelte index 664010e1..6a9f3c6e 100644 --- a/src/components/Numpad.svelte +++ b/src/components/Numpad.svelte @@ -10,11 +10,11 @@ amount = $bindable(), currency = "USD", fiat = $bindable(), - element, + element = $bindable(), rate = $bindable(), - locale, - submit = undefined, - amountFiat = 0, + locale = undefined, + submit = $bindable(undefined), + amountFiat = $bindable(0), } = $props(); // ---- Local state ---- @@ -26,7 +26,7 @@ let symbol = $state(""); let position = $state("before"); - function getCurrencyInfo(locale = "en-US", currency) { + function getCurrencyInfo(locale: any = "en-US", currency: string) { const l = typeof locale === "function" ? locale() : locale || "en-US"; const region = l.length >= 2 ? l.slice(-2) : ""; const currencyDisplay = @@ -39,7 +39,7 @@ maximumFractionDigits: 2, }); const parts = formatter.formatToParts(123456.78); - const { value: decimal } = parts.find((p) => p.type === "decimal"); + const { value: decimal } = parts.find((p) => p.type === "decimal")!; const currencyPart = parts.find((p) => p.type === "currency"); const sym = currencyPart ? currencyPart.value : ""; const firstNumberIndex = parts.findIndex((p) => p.type === "integer"); @@ -77,14 +77,14 @@ if (fiat) { const numericFiat = parseFloat((fiatDigits || "0").replace(/\D/g, "")) / 100; - amountFiat = isFinite(numericFiat) ? numericFiat.toFixed(2) : "0.00"; + amountFiat = isFinite(numericFiat) ? numericFiat.toFixed(2) : "0.00" as any; amount = numericFiat ? Math.round((numericFiat * sats) / rate) : 0; } else { // integer-only sats, already normalized const a = parseInt((html || "0").replace(/[^\d]/g, "")) || 0; amount = a || 0; const fval = amount ? (amount * rate) / sats : 0; - amountFiat = fval ? fval.toFixed(2) : "0.00"; + amountFiat = fval ? fval.toFixed(2) : "0.00" as any; } }; @@ -149,17 +149,17 @@ if (!node) return; const range = document.createRange(); const sel = getSelection(); - const L = node.length ?? node.textContent?.length ?? 0; + const L = (node as any).length ?? node.textContent?.length ?? 0; range.setStart(node, L); range.setEnd(node, L); - sel.removeAllRanges(); - sel.addRange(range); + sel?.removeAllRanges(); + sel?.addRange(range); }); } prevHtml = html.toString(); }; - const handleInput = (value) => { + const handleInput = (value: string) => { if (fiat) { if (value === arrow) { fiatDigits = fiatDigits.length > 1 ? fiatDigits.slice(0, -1) : "0"; @@ -187,12 +187,12 @@ input(null, true); }; - const select = (e) => { + const select = (e: any) => { const range = document.createRange(); range.selectNodeContents(e.target); const sel = getSelection(); - sel.removeAllRanges(); - sel.addRange(range); + sel?.removeAllRanges(); + sel?.addRange(range); }; const blur = () => { @@ -211,7 +211,7 @@ element && (element.innerHTML = html); } else { // going -> fiat - const cents = Math.round((parseFloat(amountFiat || "0") || 0) * 100); + const cents = Math.round((parseFloat(String(amountFiat) || "0") || 0) * 100); fiatDigits = Math.max(0, cents).toString(); fiat = true; html = formatFiatFromDigits(fiatDigits, decimalChar); @@ -226,11 +226,11 @@ if (!node) return; const range = document.createRange(); const sel = getSelection(); - const L = node.length ?? node.textContent?.length ?? 0; + const L = (node as any).length ?? node.textContent?.length ?? 0; range.setStart(node, L); range.setEnd(node, L); - sel.removeAllRanges(); - sel.addRange(range); + sel?.removeAllRanges(); + sel?.addRange(range); }); $fiatStore = fiat; @@ -255,7 +255,7 @@ onMount(() => { fiat = $fiatStore; if (fiat) { - const cents = Math.round((parseFloat(amountFiat || "0") || 0) * 100); + const cents = Math.round((parseFloat(String(amountFiat) || "0") || 0) * 100); fiatDigits = Math.max(0, cents).toString(); html = formatFiatFromDigits(fiatDigits, decimalChar); // keep html in sync on mount } else { diff --git a/src/components/Password.svelte b/src/components/Password.svelte index cc91d554..02d65948 100644 --- a/src/components/Password.svelte +++ b/src/components/Password.svelte @@ -6,7 +6,7 @@ import { password as pw, passwordPrompt } from "$lib/store"; let { user } = $props(); - let password = $state(); + let password: string | undefined = $state(); let cancel = () => ($passwordPrompt = false); diff --git a/src/components/Payments.svelte b/src/components/Payments.svelte index 4d6f1da1..ff3f0d19 100644 --- a/src/components/Payments.svelte +++ b/src/components/Payments.svelte @@ -6,7 +6,7 @@ import { t } from "$lib/translations"; import locales from "$lib/locales"; import { fiat } from "$lib/store"; - const { fund, locale, user, payments } = $props(); + const { fund = undefined, locale, user, payments }: any = $props(); const language = $derived(user?.language || "en"); </script> diff --git a/src/components/Qr.svelte b/src/components/Qr.svelte index 6a34ee7c..37b1708c 100644 --- a/src/components/Qr.svelte +++ b/src/components/Qr.svelte @@ -1,7 +1,7 @@ <script lang="ts"> import { onMount } from "svelte"; import { browser } from "$app/environment"; - let { icon, text } = $props(); + let { icon = "", text }: any = $props(); let qr = $state(); let screenfull; diff --git a/src/components/SetAmount.svelte b/src/components/SetAmount.svelte index a28f207a..8a1573bd 100644 --- a/src/components/SetAmount.svelte +++ b/src/components/SetAmount.svelte @@ -14,8 +14,9 @@ setAmount, newAmount = $bindable(0), toggleAmount, + element = undefined, t, - } = $props(); + }: any = $props(); </script> {#if settingAmount} diff --git a/src/components/SetType.svelte b/src/components/SetType.svelte index ffc4cca8..4734cb07 100644 --- a/src/components/SetType.svelte +++ b/src/components/SetType.svelte @@ -11,8 +11,9 @@ setAmount, setType, toggleType, + activeOnly = false, t, - } = $props(); + }: any = $props(); </script> diff --git a/src/components/Success.svelte b/src/components/Success.svelte index 20557f9f..6a0e8eae 100644 --- a/src/components/Success.svelte +++ b/src/components/Success.svelte @@ -2,9 +2,9 @@ import { browser } from "$app/environment"; import { scale } from "svelte/transition"; import Amount from "$comp/Amount.svelte"; - const { amount, tip, rate, currency, locale, title } = $props(); + const { amount, tip = undefined, rate, currency, locale, title = "" }: any = $props(); - let ConfettiComp = $state(null); + let ConfettiComp: any = $state(null); let loaded = $state(false); $effect(() => { if (browser) @@ -13,10 +13,12 @@ }); }); - $effect(async () => { + $effect(() => { if (!browser || !loaded || ConfettiComp) return; - const mod = await import("svelte-confetti"); - ConfettiComp = mod.Confetti; + (async () => { + const mod = await import("svelte-confetti"); + ConfettiComp = mod.Confetti; + })(); }); </script> diff --git a/src/components/WalletPass.svelte b/src/components/WalletPass.svelte index e7a3c7f9..f6d611d0 100644 --- a/src/components/WalletPass.svelte +++ b/src/components/WalletPass.svelte @@ -9,7 +9,7 @@ rememberWalletPassword, forgetWalletPassword, } from "$lib/passwordCache"; - let { cancel, password = $bindable(), submit } = $props(); + let { cancel = $bindable(), password = $bindable(), submit } = $props(); let revealPassword = $state(); let rememberForMs = $state(defaultRememberForMs); @@ -75,7 +75,7 @@ id="rememberFor" class="w-full" value={rememberForMs} - onchange={(e) => (rememberForMs = Number(e.target.value))} + onchange={(e) => (rememberForMs = Number((e.target as HTMLSelectElement).value))} > {#each rememberForOptions as option} <option value={option.ms}>{option.label}</option> |
