@openreceive/browser 0.1.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -0
- package/dist/chunk-WLLNZH26.js +3051 -0
- package/dist/headless.d.ts +804 -0
- package/dist/headless.js +891 -0
- package/dist/index.d.ts +32 -4
- package/dist/index.js +32 -2
- package/dist/status-B1vDOhvh.d.ts +1001 -0
- package/dist/styles.css +3 -759
- package/package.json +57 -15
- package/dist/assets/icons/bank.svg +0 -12
- package/dist/assets/icons/bnb.svg +0 -1
- package/dist/assets/icons/card.svg +0 -14
- package/dist/assets/icons/doge.svg +0 -1
- package/dist/assets/pay_tutorials/boltz-1.webp +0 -0
- package/dist/assets/pay_tutorials/boltz-2.webp +0 -0
- package/dist/assets/pay_tutorials/cashapp-1.webp +0 -0
- package/dist/assets/pay_tutorials/cashapp-2.webp +0 -0
- package/dist/assets/pay_tutorials/cashapp-3.webp +0 -0
- package/dist/assets/pay_tutorials/cashapp-4.webp +0 -0
- package/dist/assets/pay_tutorials/cashapp-5.webp +0 -0
- package/dist/assets/pay_tutorials/cashapp-6.webp +0 -0
- package/dist/assets/pay_tutorials/coinbase-1.webp +0 -0
- package/dist/assets/pay_tutorials/coinbase-2.webp +0 -0
- package/dist/assets/pay_tutorials/fixedfloat-1.webp +0 -0
- package/dist/assets/pay_tutorials/fixedfloat-2.webp +0 -0
- package/dist/assets/pay_tutorials/kraken-1.webp +0 -0
- package/dist/assets/pay_tutorials/kraken-2.webp +0 -0
- package/dist/assets/pay_tutorials/kraken-3.webp +0 -0
- package/dist/assets/pay_tutorials/kraken-4.webp +0 -0
- package/dist/assets/pay_tutorials/strike-1.webp +0 -0
- package/dist/assets/pay_tutorials/strike-2.webp +0 -0
- package/dist/assets/pay_tutorials/strike-3.webp +0 -0
- package/dist/assets/pay_tutorials/strike-4.webp +0 -0
- package/dist/assets/provider-icons/aqua.png +0 -0
- package/dist/assets/provider-icons/belo.png +0 -0
- package/dist/assets/provider-icons/binance.png +0 -0
- package/dist/assets/provider-icons/bipa.png +0 -0
- package/dist/assets/provider-icons/bitfinex.png +0 -0
- package/dist/assets/provider-icons/bitget.png +0 -0
- package/dist/assets/provider-icons/bitnob.png +0 -0
- package/dist/assets/provider-icons/bitso.png +0 -0
- package/dist/assets/provider-icons/bity.png +0 -0
- package/dist/assets/provider-icons/blink.png +0 -0
- package/dist/assets/provider-icons/bluewallet.png +0 -0
- package/dist/assets/provider-icons/boltz.png +0 -0
- package/dist/assets/provider-icons/bringin.png +0 -0
- package/dist/assets/provider-icons/bullbitcoin.png +0 -0
- package/dist/assets/provider-icons/cakewallet.png +0 -0
- package/dist/assets/provider-icons/cashapp.png +0 -0
- package/dist/assets/provider-icons/changenow.png +0 -0
- package/dist/assets/provider-icons/chivo.png +0 -0
- package/dist/assets/provider-icons/coinbase.png +0 -0
- package/dist/assets/provider-icons/coincorner.png +0 -0
- package/dist/assets/provider-icons/fixedfloat.png +0 -0
- package/dist/assets/provider-icons/getalby.png +0 -0
- package/dist/assets/provider-icons/kraken.png +0 -0
- package/dist/assets/provider-icons/kryptex.png +0 -0
- package/dist/assets/provider-icons/kucoin.png +0 -0
- package/dist/assets/provider-icons/manifest.json +0 -207
- package/dist/assets/provider-icons/mtpelerin.png +0 -0
- package/dist/assets/provider-icons/muun.png +0 -0
- package/dist/assets/provider-icons/okcoin.png +0 -0
- package/dist/assets/provider-icons/okx.png +0 -0
- package/dist/assets/provider-icons/phoenix.png +0 -0
- package/dist/assets/provider-icons/pouch.png +0 -0
- package/dist/assets/provider-icons/ripio.png +0 -0
- package/dist/assets/provider-icons/river.png +0 -0
- package/dist/assets/provider-icons/rizful.png +0 -0
- package/dist/assets/provider-icons/shakepay.png +0 -0
- package/dist/assets/provider-icons/sideshift.png +0 -0
- package/dist/assets/provider-icons/simpleswap.png +0 -0
- package/dist/assets/provider-icons/speed.png +0 -0
- package/dist/assets/provider-icons/strike.png +0 -0
- package/dist/assets/provider-icons/trocador.png +0 -0
- package/dist/assets/provider-icons/walletofsatoshi.png +0 -0
- package/dist/assets/provider-icons/zeus.png +0 -0
- package/dist/country-map.d.ts +0 -5
- package/dist/country-map.js +0 -17
- package/dist/internal.d.ts +0 -834
- package/dist/internal.js +0 -2615
- package/dist/pay-tutorials.d.ts +0 -1
- package/dist/pay-tutorials.js +0 -1
- package/dist/provider-icons.d.ts +0 -1
- package/dist/provider-icons.js +0 -1
- package/dist/qrcode.d.ts +0 -11
- package/dist/status.d.ts +0 -9
- package/dist/status.js +0 -25
|
@@ -0,0 +1,804 @@
|
|
|
1
|
+
import { P as ParseOpenReceiveOptionalIntegerOptions, a as PaymentMethod, R as ResolvedTheme, T as ThemePreference, b as PaymentMethodOption, c as TickingValueOptions, d as TickingValueController, e as TransientFeedbackOptions, f as TransientFeedbackController, C as CheckoutInvoiceSnapshot, U as UnixSeconds, S as SwapDisplayModel, g as CheckoutInvoiceSwapSnapshot, h as CheckoutState, i as TransactionDetailsInput, j as TransactionDetailRow, k as CheckoutSnapshot, l as CreateCheckoutStateOptions, m as CheckoutStatusModelInput, n as CheckoutStatusModel, o as CheckoutPaymentMethod, B as BrowserLoggerOption, p as ThemeAttributeTarget, q as CheckoutElementAttributes, r as CheckoutElementAttributeOptions, s as CheckoutElementEventHandlers, t as CheckoutElementListeners, u as CreateCheckoutShellOptions, v as CheckoutShellElements, w as CheckoutShellOptions, x as CheckoutShellModel, y as CreateOpenReceiveThemeToggleElementOptions, z as ThemeToggleElementAttributeOptions, A as ThemeToggleElementAttributes, D as StoredThemeModelOptions, E as ThemeModel, F as ThemeModelOptions, G as ReadThemePreferenceOptions, H as ThemeControlTargets, I as ThemeStorageOptions, J as PaymentWizardControllerOptions, K as PaymentWizardController, L as PaymentWizardSelection, M as PaymentWizardModel, W as WizardRouteAssetDisplay, N as WizardRouteDisplay, O as PaymentWizardSelectionAction } from './status-B1vDOhvh.js';
|
|
2
|
+
export { Q as BrowserLogContext, V as BrowserLogger, X as BrowserRequestError, Y as CheckoutController, Z as CheckoutControllerOptions, _ as CheckoutPhase, $ as CheckoutStatusRefresh, a0 as OPENRECEIVE_CHECKOUT_DATA_ATTRIBUTES, a1 as OPENRECEIVE_CHECKOUT_DATA_SELECTORS, a2 as OPENRECEIVE_CHECKOUT_ELEMENT_ATTRIBUTES, a3 as OPENRECEIVE_CHECKOUT_ELEMENT_EVENTS, a4 as OPENRECEIVE_CHECKOUT_ELEMENT_PARTS, a5 as OPENRECEIVE_CHECKOUT_ELEMENT_PART_SELECTORS, a6 as OPENRECEIVE_CHECKOUT_ELEMENT_TAG_NAME, a7 as OPENRECEIVE_COPY_FEEDBACK_MS, a8 as OPENRECEIVE_DEFAULT_POLL_INTERVAL_MS, a9 as OPENRECEIVE_DEFAULT_PREFIX, aa as OPENRECEIVE_PAYMENT_WIZARD_ATTRIBUTES, ab as OPENRECEIVE_PAYMENT_WIZARD_SELECTORS, ac as OPENRECEIVE_THEME_STORAGE_KEY, ad as OPENRECEIVE_THEME_TOGGLE_ELEMENT_ATTRIBUTES, ae as OPENRECEIVE_THEME_TOGGLE_ELEMENT_EVENTS, af as OPENRECEIVE_THEME_TOGGLE_ELEMENT_PARTS, ag as OPENRECEIVE_THEME_TOGGLE_ELEMENT_PART_SELECTORS, ah as OPENRECEIVE_THEME_TOGGLE_ELEMENT_TAG_NAME, ai as QrEncoder, aj as Status, ak as WizardProviderDisplay, al as assertDisplayInvoice, am as copyInvoice, an as createCheckoutActionEvent, ao as createCheckoutController, ap as createCheckoutErrorEvent, aq as createCheckoutProviderCopyEvent, ar as createCheckoutStateEvent, as as createQrPayloadSvg, at as createQrSvg, au as createStatusFetcher, av as createThemeChangeEvent, aw as deriveCheckoutStateLabels, ax as deriveStatus, ay as enterCheckoutResumePath, az as escapeHtml, aA as formatAmountCaption, aB as formatDepositAmount, aC as formatFiatAmount, aD as formatMsats, aE as formatSwapLimit, aF as formatUnixTime, aG as openWallet, aH as prepareCheckout, aI as requestCheckout } from './status-B1vDOhvh.js';
|
|
3
|
+
import { AssetIndexEntry, PaymentWizardRoute } from '@openreceive/provider-data';
|
|
4
|
+
import '@openreceive/core';
|
|
5
|
+
|
|
6
|
+
declare const OPENRECEIVE_PAYMENT_ICON_IDS: readonly ["btc", "crypto", "eth", "lightning", "ltc", "sol", "trx", "usdc", "usdt", "xmr", "xrp"];
|
|
7
|
+
type PaymentIconId = (typeof OPENRECEIVE_PAYMENT_ICON_IDS)[number];
|
|
8
|
+
declare const paymentIconUrls: Readonly<Record<PaymentIconId, string>>;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Shared daisyUI / Tailwind class strings for OpenReceive checkout UI.
|
|
12
|
+
* Kept as string constants so Tailwind can scan them for the prebuilt stylesheet.
|
|
13
|
+
*/
|
|
14
|
+
declare const orClasses: {
|
|
15
|
+
readonly root: "grid gap-3 min-w-0";
|
|
16
|
+
readonly paymentLayout: "grid gap-3 grid-cols-[auto_minmax(0,1fr)] gap-x-3 md:gap-x-5 items-start min-w-0";
|
|
17
|
+
readonly paymentLayoutExpired: "grid gap-3 grid-cols-1 items-start min-w-0";
|
|
18
|
+
readonly lightningPane: "grid gap-2 items-start justify-items-start min-w-0";
|
|
19
|
+
readonly qr: "justify-self-start w-[min(148px,38vw)] md:w-[min(200px,36vw)] [&_svg]:block [&_svg]:w-full [&_svg]:h-auto";
|
|
20
|
+
readonly satsDetail: "text-base-content/60 text-sm leading-snug justify-self-start max-w-[min(148px,38vw)] md:max-w-[min(200px,36vw)]";
|
|
21
|
+
readonly invoiceTitle: "m-0 text-sm font-semibold leading-tight";
|
|
22
|
+
readonly paymentInfo: "grid gap-1.5 min-w-0 content-start";
|
|
23
|
+
readonly meta: "flex flex-wrap gap-1.5 items-center";
|
|
24
|
+
readonly metaItem: "badge badge-ghost badge-sm min-h-6";
|
|
25
|
+
readonly stateSettled: "badge badge-success badge-sm";
|
|
26
|
+
readonly statePending: "badge badge-ghost badge-sm";
|
|
27
|
+
readonly actions: "flex flex-wrap gap-2 justify-start";
|
|
28
|
+
readonly btn: "btn btn-outline";
|
|
29
|
+
readonly btnGhost: "btn btn-ghost";
|
|
30
|
+
readonly copyIcon: "shrink-0 size-4";
|
|
31
|
+
readonly themeToggle: "btn btn-outline btn-sm gap-2 justify-self-end";
|
|
32
|
+
readonly paymentStatus: "flex items-center gap-2.5 min-w-0";
|
|
33
|
+
readonly paymentStatusBody: "grid gap-0.5 min-w-0 flex-1";
|
|
34
|
+
readonly paymentStatusTitle: "text-base font-semibold leading-tight min-w-0";
|
|
35
|
+
readonly paymentStatusDetail: "text-base-content/60 text-sm leading-snug";
|
|
36
|
+
readonly spinner: "loading loading-spinner loading-md text-warning";
|
|
37
|
+
/** Spinner on a primary button — inherit the button foreground, not the warning color. */
|
|
38
|
+
readonly continueSpinner: "loading loading-spinner loading-md shrink-0";
|
|
39
|
+
readonly settledIcon: "size-8 shrink-0 text-success";
|
|
40
|
+
readonly paymentData: "collapse collapse-arrow border border-base-300 bg-base-100";
|
|
41
|
+
readonly paymentDataTitle: "collapse-title font-semibold";
|
|
42
|
+
readonly paymentDataBody: "collapse-content grid gap-2";
|
|
43
|
+
readonly paymentDataRow: "grid gap-0.5";
|
|
44
|
+
readonly paymentDataKey: "text-xs uppercase tracking-wide text-base-content/60";
|
|
45
|
+
readonly paymentDataValue: "font-mono text-sm break-all m-0";
|
|
46
|
+
readonly countdown: "text-base-content/60 text-sm";
|
|
47
|
+
readonly countdownStrong: "text-base-content font-semibold";
|
|
48
|
+
readonly creating: "grid gap-2 place-items-center p-4";
|
|
49
|
+
readonly wizard: "overflow-hidden rounded-box border border-base-content/20 bg-base-200 grid gap-0";
|
|
50
|
+
readonly wizardHeader: "grid gap-0.5 px-4 py-4 sm:px-5";
|
|
51
|
+
readonly wizardHeaderTitle: "text-lg font-bold m-0 sm:text-xl";
|
|
52
|
+
readonly wizardHeaderSubtitle: "text-base-content/65 text-sm m-0 mt-0.5";
|
|
53
|
+
readonly wizardBody: "border-t border-base-content/15 grid gap-3 p-4 sm:p-5";
|
|
54
|
+
readonly methodGrid: "grid grid-cols-1 items-start gap-2 sm:grid-cols-2 sm:gap-3 lg:grid-cols-5";
|
|
55
|
+
readonly methodCardUnavailable: "flex min-h-14 w-full items-center justify-start gap-3 rounded-field border border-base-content/20 bg-base-100 px-3 py-2 text-left text-base-content opacity-50 cursor-not-allowed shadow-sm sm:px-4";
|
|
56
|
+
readonly methodCurrenciesLoading: "flex min-h-14 w-full items-center justify-start gap-3 rounded-field border border-dashed border-base-content/25 bg-base-100 px-3 py-2 text-left text-base-content/70 shadow-sm sm:px-4 sm:col-span-2 lg:col-span-4";
|
|
57
|
+
readonly methodCardReady: "flex min-h-14 w-full items-center justify-start gap-3 rounded-field border border-base-content/25 bg-base-100 px-3 py-2 text-left text-base-content shadow-sm transition-colors hover:border-base-content/45 hover:bg-base-100 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary sm:px-4 cursor-pointer";
|
|
58
|
+
readonly methodCardActiveBitcoin: "border-warning bg-warning/10 ring-1 ring-warning/50";
|
|
59
|
+
readonly methodCardActiveUsdt: "border-success bg-success/10 ring-1 ring-success/50";
|
|
60
|
+
readonly methodCardActiveUsdc: "border-info bg-info/10 ring-1 ring-info/50";
|
|
61
|
+
readonly methodCardActiveSol: "border-primary bg-primary/10 ring-1 ring-primary/50";
|
|
62
|
+
readonly methodCardActiveEth: "border-secondary bg-secondary/10 ring-1 ring-secondary/50";
|
|
63
|
+
readonly methodCardActiveDefault: "border-primary bg-primary/10 ring-1 ring-primary/50";
|
|
64
|
+
readonly methodIconWrap: "grid size-8 shrink-0 place-items-center overflow-hidden rounded-full sm:size-9";
|
|
65
|
+
readonly methodIcon: "size-8 aspect-square sm:size-9";
|
|
66
|
+
readonly methodTitle: "block truncate font-semibold text-sm sm:text-base";
|
|
67
|
+
readonly methodTitleWrap: "min-w-0 flex-1 text-left";
|
|
68
|
+
readonly methodDetail: "text-base-content/60 text-xs leading-snug";
|
|
69
|
+
readonly methodDetailMobile: "block truncate text-xs text-base-content/55 sm:hidden";
|
|
70
|
+
/** Limit / unavailable hint under a payment tile — visible at all breakpoints. */
|
|
71
|
+
readonly methodLimitHint: "block px-1 text-xs leading-snug text-base-content/55";
|
|
72
|
+
readonly methodNetworkReveal: "rounded-box border border-base-content/20 bg-base-100 p-3";
|
|
73
|
+
readonly methodNetworkRevealDesktop: "mt-3 hidden sm:block";
|
|
74
|
+
readonly methodNetworkRevealMobile: "ml-4 border-l border-base-content/30 pl-3 sm:hidden";
|
|
75
|
+
readonly methodNetworkRevealMobileUsdt: "ml-4 border-l border-success/40 pl-3 sm:hidden";
|
|
76
|
+
readonly methodNetworkRevealMobileUsdc: "ml-4 border-l border-info/40 pl-3 sm:hidden";
|
|
77
|
+
readonly methodNetworkRevealAnim: "grid overflow-hidden transition-[grid-template-rows,opacity,margin] duration-200 ease-out motion-reduce:transition-none sm:hidden";
|
|
78
|
+
readonly methodNetworkRevealAnimOpen: "mt-2 grid-rows-[1fr] opacity-100";
|
|
79
|
+
readonly methodNetworkRevealAnimClosed: "grid-rows-[0fr] opacity-0";
|
|
80
|
+
readonly methodNetworkRevealInner: "min-h-0 overflow-hidden";
|
|
81
|
+
readonly methodNetworkLayout: "grid gap-3 lg:grid-cols-[9rem_minmax(0,1fr)_minmax(8rem,auto)] lg:items-start";
|
|
82
|
+
readonly methodNetworkHeading: "text-sm font-semibold text-base-content m-0";
|
|
83
|
+
readonly methodNetworkHint: "mt-0.5 text-xs text-base-content/55 m-0";
|
|
84
|
+
readonly methodNetworkGrid: "grid grid-cols-1 gap-2 min-[390px]:grid-cols-3 items-start";
|
|
85
|
+
readonly methodNetworkButton: "btn h-11 min-h-11 w-full justify-start gap-2 rounded-field border border-base-content/25 bg-base-100 px-3 text-sm text-base-content shadow-sm hover:border-base-content/45 hover:bg-base-100 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary";
|
|
86
|
+
readonly methodNetworkButtonUnavailable: "btn h-11 min-h-11 w-full justify-start gap-2 rounded-field border border-base-content/20 bg-base-100 px-3 text-sm text-base-content opacity-50 cursor-not-allowed shadow-sm pointer-events-none";
|
|
87
|
+
readonly methodNetworkButtonActiveUsdt: "border-success bg-success/10 ring-1 ring-success/50";
|
|
88
|
+
readonly methodNetworkButtonActiveUsdc: "border-info bg-info/10 ring-1 ring-info/50";
|
|
89
|
+
readonly methodNetworkButtonActiveDefault: "border-primary bg-primary/10 ring-1 ring-primary/50";
|
|
90
|
+
readonly methodNetworkIcon: "size-6 shrink-0 aspect-square";
|
|
91
|
+
readonly methodNetworkCheck: "ml-auto grid size-5 place-items-center rounded-full bg-success text-[0.65rem] text-success-content";
|
|
92
|
+
readonly methodNetworkCheckUsdc: "ml-auto grid size-5 place-items-center rounded-full bg-info text-[0.65rem] text-info-content";
|
|
93
|
+
readonly methodNetworkSummary: "mt-2 flex items-center gap-1.5 text-xs text-base-content/65 m-0";
|
|
94
|
+
readonly methodNetworkSummaryIcon: "grid size-4 place-items-center rounded-full bg-success text-[0.65rem] text-success-content";
|
|
95
|
+
readonly methodNetworkSummaryIconUsdc: "grid size-4 place-items-center rounded-full bg-info text-[0.65rem] text-info-content";
|
|
96
|
+
readonly methodConfirmDesktop: "btn btn-primary w-full gap-2";
|
|
97
|
+
readonly methodTile: "grid min-w-0 content-start gap-0.5";
|
|
98
|
+
readonly breadcrumbs: "breadcrumbs text-sm";
|
|
99
|
+
readonly breadcrumbCurrent: "font-bold";
|
|
100
|
+
readonly routePicker: "grid grid-cols-2 md:grid-cols-4 gap-2";
|
|
101
|
+
readonly routeButton: "card card-border bg-base-100 grid gap-1.5 content-start min-h-[120px] p-2.5 text-left cursor-pointer hover:border-primary";
|
|
102
|
+
readonly routeButtonSelected: "card card-border bg-base-100 grid gap-1.5 content-start min-h-[120px] p-2.5 text-left border-primary ring-2 ring-primary/30";
|
|
103
|
+
readonly wizardResults: "grid gap-2.5";
|
|
104
|
+
readonly wizardEmpty: "alert";
|
|
105
|
+
readonly wizardRoute: "grid gap-3";
|
|
106
|
+
readonly wizardRouteHeading: "flex flex-wrap items-center gap-2";
|
|
107
|
+
readonly providerGrid: "grid grid-cols-1 md:grid-cols-2 gap-2";
|
|
108
|
+
readonly providerCard: "card card-border bg-base-100 p-3 grid gap-2 items-center grid-cols-[minmax(0,1fr)_auto] md:grid-cols-[minmax(0,1fr)_auto_auto] md:gap-x-2 md:gap-y-1";
|
|
109
|
+
readonly providerHeading: "flex gap-2 items-center min-w-0";
|
|
110
|
+
readonly providerIcon: "rounded size-7 shrink-0";
|
|
111
|
+
readonly providerName: "font-semibold truncate m-0 min-w-0";
|
|
112
|
+
readonly providerKind: "text-base-content/60 text-sm m-0 justify-self-end text-right";
|
|
113
|
+
readonly providerActions: "col-span-2 flex w-full md:col-span-1 md:w-auto md:justify-self-end";
|
|
114
|
+
readonly providerOpen: "btn btn-outline btn-sm w-full md:w-auto";
|
|
115
|
+
readonly swapActions: "grid gap-2.5 grid-cols-1 md:grid-cols-3";
|
|
116
|
+
readonly swapAction: "grid gap-2";
|
|
117
|
+
readonly swapEstimate: "text-base-content/60 m-0 text-sm";
|
|
118
|
+
readonly swapWarning: "alert alert-warning text-sm";
|
|
119
|
+
readonly swapNetworkWarning: "alert alert-error alert-soft text-sm items-start gap-3";
|
|
120
|
+
readonly swapNetworkWarningIcon: "size-6 shrink-0 stroke-current";
|
|
121
|
+
readonly swapNetworkWarningContent: "grid gap-1 min-w-0";
|
|
122
|
+
readonly swapNetworkWarningTitle: "font-bold m-0";
|
|
123
|
+
readonly swapNetworkWarningBody: "m-0";
|
|
124
|
+
readonly swapNetworkWarningEmphasis: "font-bold underline";
|
|
125
|
+
readonly swapProgress: "text-base-content/60 m-0";
|
|
126
|
+
readonly swapInstruction: "m-0 text-base-content text-base font-bold text-center md:text-left";
|
|
127
|
+
readonly swapStart: "btn btn-outline";
|
|
128
|
+
readonly swapPanel: "grid gap-3";
|
|
129
|
+
readonly swapDepositLayout: "grid gap-3 md:grid-cols-[auto_minmax(0,1fr)] md:gap-x-5 md:items-start min-w-0";
|
|
130
|
+
readonly swapDepositSide: "grid gap-3 min-w-0 content-start";
|
|
131
|
+
readonly swapHeading: "flex flex-wrap gap-2 items-center justify-between";
|
|
132
|
+
readonly swapHeadingTitle: "text-lg font-semibold";
|
|
133
|
+
readonly swapHeadingDetail: "text-base-content/60";
|
|
134
|
+
readonly swapQr: "justify-self-center w-[min(200px,100%)] block h-auto md:justify-self-start md:w-[min(180px,100%)]";
|
|
135
|
+
readonly swapDetails: "grid gap-2 m-0";
|
|
136
|
+
readonly swapDetailsDt: "text-base-content/60 text-xs font-bold uppercase";
|
|
137
|
+
readonly swapDetailsDd: "grid gap-2 grid-cols-[minmax(0,1fr)_auto] items-center m-0";
|
|
138
|
+
readonly swapDetailsCode: "min-w-0 break-all font-mono text-sm";
|
|
139
|
+
readonly swapDetailsInput: "input input-sm w-full min-w-0 font-mono text-sm outline-none! focus:outline-none! focus:outline-offset-0!";
|
|
140
|
+
readonly swapDetailsActions: "flex flex-wrap gap-2 justify-end";
|
|
141
|
+
readonly detailCopy: "btn btn-sm btn-square btn-ghost";
|
|
142
|
+
readonly swapDetailsLink: "btn btn-sm btn-outline";
|
|
143
|
+
readonly swapBreakdown: "grid gap-2 py-2 border-t border-base-content/15";
|
|
144
|
+
readonly swapBreakdownTitle: "m-0 text-base-content/60 text-xs font-bold uppercase";
|
|
145
|
+
readonly swapBreakdownRows: "grid grid-cols-[1fr_auto] gap-x-3 gap-y-1.5 items-baseline m-0";
|
|
146
|
+
readonly swapWaitingTitle: "flex items-baseline justify-between gap-3 min-w-0";
|
|
147
|
+
readonly swapCountdown: "shrink-0 text-base-content font-semibold tabular-nums";
|
|
148
|
+
readonly swapBack: "btn btn-sm btn-outline justify-self-start";
|
|
149
|
+
readonly swapSupport: "collapse collapse-arrow bg-base-200";
|
|
150
|
+
readonly swapSupportTitle: "collapse-title font-bold min-h-0 py-2";
|
|
151
|
+
readonly swapSupportContent: "collapse-content";
|
|
152
|
+
readonly transactionDetails: "collapse collapse-arrow bg-base-200";
|
|
153
|
+
readonly transactionDetailsTitle: "collapse-title font-bold min-h-0 py-2";
|
|
154
|
+
readonly transactionDetailsContent: "collapse-content";
|
|
155
|
+
readonly swapRefund: "grid gap-2";
|
|
156
|
+
readonly swapRefundInput: "input input-bordered w-full";
|
|
157
|
+
readonly swapRefundInputInvalid: "input input-bordered input-error w-full";
|
|
158
|
+
readonly swapRefundError: "m-0 text-error text-sm";
|
|
159
|
+
readonly swapRefundHint: "m-0 text-warning text-sm";
|
|
160
|
+
readonly tutorialModal: "modal modal-open";
|
|
161
|
+
readonly tutorialBox: "modal-box grid gap-3 max-w-[min(440px,100%)]";
|
|
162
|
+
readonly tutorialHeader: "flex gap-2 items-center justify-between";
|
|
163
|
+
readonly tutorialTitle: "flex items-center gap-2.5 min-w-0";
|
|
164
|
+
readonly tutorialHeaderLogo: "size-9 rounded shrink-0";
|
|
165
|
+
readonly tutorialClose: "btn btn-sm btn-square btn-ghost";
|
|
166
|
+
readonly tutorialFrame: "flex items-center justify-center min-h-0 overflow-hidden rounded-box border border-base-content/20 bg-base-200";
|
|
167
|
+
readonly tutorialImage: "block w-auto max-w-full h-auto max-h-[min(66vh,720px)] object-contain";
|
|
168
|
+
readonly tutorialCaption: "m-0 text-base font-bold text-center";
|
|
169
|
+
readonly tutorialIntro: "grid gap-3 p-4 text-center";
|
|
170
|
+
readonly tutorialProviderLogo: "justify-self-center size-[52px] rounded";
|
|
171
|
+
readonly tutorialCopy: "btn btn-outline justify-self-center min-w-[min(240px,100%)]";
|
|
172
|
+
readonly tutorialCopyMessage: "text-success font-bold";
|
|
173
|
+
readonly tutorialProgress: "m-0 text-base-content/60 text-xs text-center";
|
|
174
|
+
readonly tutorialSteps: "flex gap-1.5 justify-center";
|
|
175
|
+
readonly tutorialStep: "badge badge-xs badge-ghost size-2 p-0";
|
|
176
|
+
readonly tutorialStepActive: "badge badge-xs badge-neutral size-2 p-0";
|
|
177
|
+
readonly tutorialControls: "grid grid-cols-2 gap-2";
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
declare const checkoutLabels: {
|
|
181
|
+
readonly copyInvoice: "Copy invoice";
|
|
182
|
+
readonly copied: "Copied!";
|
|
183
|
+
readonly openWallet: "Open Wallet";
|
|
184
|
+
readonly bitcoinLightningInvoice: "Bitcoin Lightning invoice";
|
|
185
|
+
readonly paymentStatus: {
|
|
186
|
+
readonly waitingTitle: "Waiting for payment";
|
|
187
|
+
readonly waitingDetail: "Keep this page open while we verify settlement.";
|
|
188
|
+
readonly settledTitle: "Payment received";
|
|
189
|
+
readonly settledDetail: "Backend settlement verified.";
|
|
190
|
+
readonly expiredTitle: "Invoice expired";
|
|
191
|
+
readonly expiredDetail: "Create a fresh invoice to keep going.";
|
|
192
|
+
};
|
|
193
|
+
readonly countdownPrefix: "Invoice expires in";
|
|
194
|
+
readonly startOver: "Start over";
|
|
195
|
+
readonly wizardTitle: "Pay this invoice";
|
|
196
|
+
readonly wizardSubtitle: "Choose how you want to pay.";
|
|
197
|
+
readonly paymentMethod: "Payment method";
|
|
198
|
+
/** Breadcrumb back-link once a method (or swap) is already selected. */
|
|
199
|
+
readonly switchPaymentMethod: "Switch payment method";
|
|
200
|
+
readonly loadingCurrencies: "Loading currencies...";
|
|
201
|
+
readonly emptyBitcoin: "Choose Bitcoin Lightning.";
|
|
202
|
+
readonly viewPaymentData: "View payment data";
|
|
203
|
+
readonly openProvider: "How To Pay";
|
|
204
|
+
readonly tutorialTitlePrefix: "Pay a Lightning invoice with";
|
|
205
|
+
readonly tutorialIntroPrefix: "It's easy to make this payment using";
|
|
206
|
+
readonly tutorialIntroCopy: "The first step is to copy the invoice to your clipboard.";
|
|
207
|
+
readonly tutorialCopiedContinue: "Copied! Click next below to continue with tutorial.";
|
|
208
|
+
readonly tutorialExit: "Exit";
|
|
209
|
+
readonly lightningNetwork: "Lightning Network";
|
|
210
|
+
readonly chooseNetwork: "Choose network";
|
|
211
|
+
readonly selectNetwork: "Select network";
|
|
212
|
+
readonly continue: "Continue";
|
|
213
|
+
readonly preparingPayment: "Preparing payment";
|
|
214
|
+
readonly networkSummary: "{asset} will be sent on {network}.";
|
|
215
|
+
readonly chooseAssetNetwork: "Choose {asset} network";
|
|
216
|
+
readonly selectNetworkToContinue: "Select a network to continue";
|
|
217
|
+
readonly transactionDetails: "Transaction details";
|
|
218
|
+
readonly viewOnExplorer: "Explorer";
|
|
219
|
+
readonly decodeInvoice: "Decode";
|
|
220
|
+
readonly wrongCurrencyOrNetworkTitle: "Wrong currency or network = lost funds";
|
|
221
|
+
readonly swapStartFailedTitle: "Could not prepare the payment address";
|
|
222
|
+
readonly tryAgain: "Try again";
|
|
223
|
+
readonly payWithLightningInstead: "Pay with Lightning instead";
|
|
224
|
+
readonly supportReviewNeeded: "This payment needs support review.";
|
|
225
|
+
readonly preparingPaymentAddress: "Preparing payment address";
|
|
226
|
+
readonly preparingPaymentAddressDetail: "Getting your {asset} payment address…";
|
|
227
|
+
readonly createPaymentAddress: "Create {asset} ({network}) payment address";
|
|
228
|
+
readonly paymentBreakdown: "Payment breakdown";
|
|
229
|
+
readonly cartTotal: "Cart total";
|
|
230
|
+
readonly youSend: "You send";
|
|
231
|
+
readonly swapAndNetworkFees: "Swap + network fees";
|
|
232
|
+
readonly refundAddressPlaceholder: "{network} refund address";
|
|
233
|
+
readonly reviewRefundAddress: "Review refund address";
|
|
234
|
+
readonly confirmRefund: "Confirm refund";
|
|
235
|
+
readonly confirmRefundTo: "Confirm refund to {address}.";
|
|
236
|
+
readonly submitting: "Submitting...";
|
|
237
|
+
readonly tutorialBack: "Back";
|
|
238
|
+
readonly tutorialNext: "Next";
|
|
239
|
+
readonly tutorialClose: "Close";
|
|
240
|
+
/** Out-of-range swap asset: both renderers build this panel from one model. */
|
|
241
|
+
readonly swapUnavailableTitle: "{asset} unavailable";
|
|
242
|
+
readonly swapUnavailableFallback: "{asset} is not available for this amount.";
|
|
243
|
+
readonly swapUnavailableMinimumOnly: "Minimum {minimum} {asset}.";
|
|
244
|
+
readonly swapUnavailableRange: "Accepted range: {minimum}–{maximum} {asset}.";
|
|
245
|
+
readonly swapUnavailableHint: "Choose another asset above, or pay the Lightning invoice at the top of this page.";
|
|
246
|
+
/** Shown on the refund screen so the payer can return after closing the tab. */
|
|
247
|
+
readonly refundReturnWarning: "Bookmark this page, or copy its URL. You need it to return to this refund screen.";
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
declare const checkoutElementStyles = ":host{display:block}/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;--color-black:#000;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--leading-tight:1.25;--leading-snug:1.375;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:where(:root),:root:has(input.theme-controller[value=light]:checked),[data-theme=light],:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(95% 0 0);--color-base-content:oklch(21% .006 285.885);--color-primary:oklch(45% .24 277.023);--color-primary-content:oklch(93% .034 272.788);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}:root:has(input.theme-controller[value=dark]:checked),[data-theme=dark]{color-scheme:dark;--color-base-100:oklch(25.33% .016 252.42);--color-base-200:oklch(23.26% .014 253.1);--color-base-300:oklch(21.15% .012 254.09);--color-base-content:oklch(97.807% .029 256.847);--color-primary:oklch(58% .233 277.117);--color-primary-content:oklch(96% .018 272.314);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}@property --radialprogress{syntax:\"<percentage>\";inherits:true;initial-value:0%}@property --aura-angle{syntax:\"<angle>\";inherits:false;initial-value:0deg}:root{scrollbar-color:currentColor #0000}@supports (color:color-mix(in lab, red, red)){:root{scrollbar-color:color-mix(in oklch, currentColor 35%, #0000) #0000}}:root{--fx-noise:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E\");--page-scroll-lock:initial;--page-overflow:var(--page-scroll-lock) hidden}:root:not(span){overflow:var(--page-overflow)}:root{--page-has-backdrop:var(--page-scroll-lock) 1;--page-scroll-bg:var(--page-scroll-lock) var(--root-bg,#0000)}@supports (color:color-mix(in lab, red, red)){:root{--page-scroll-bg:var(--page-scroll-lock) color-mix(in srgb, var(--root-bg,#0000), oklch(0% 0 0) calc(var(--page-has-backdrop,0) * 40%))}}:root{background-image:var(--page-scroll-lock) linear-gradient(var(--root-bg,#0000), var(--root-bg,#0000));transition:var(--page-scroll-lock) background-color .3s ease-out;animation:var(--page-scroll-lock) set-page-has-scroll forwards;animation-timeline:var(--page-scroll-lock) scroll();--page-has-scroll:initial;scrollbar-gutter:var(--page-has-scroll) var(--page-scroll-lock) stable}@keyframes set-page-has-scroll{0%,to{--page-has-scroll: }}:root,[data-theme]{background-color:var(--root-bg);color:var(--color-base-content)}:root{background-color:var(--page-scroll-bg,var(--root-bg))}:where(:root,[data-theme]){--root-bg:var(--color-base-100)}}@layer components;@layer utilities{@layer daisyui.l1.l2.l3{.modal{pointer-events:none;visibility:hidden;width:100%;max-width:none;height:100%;max-height:none;color:inherit;transition:overlay .3s allow-discrete, visibility .3s allow-discrete, background-color .3s ease-out, opacity .1s ease-out;overscroll-behavior:contain;z-index:999;scrollbar-gutter:auto;background-color:#0000;place-items:center;margin:0;padding:0;display:grid;position:fixed;inset:0;overflow:clip}.modal::backdrop{display:none}.modal[popover]{color:inherit;background:0 0;border:0;max-width:none;max-height:none;margin:0;padding:0;inset:0}.modal[popover]::backdrop{background-color:oklch(0% 0 0/.4);transition:background-color .3s ease-out}.tab:is(.tabs>.tab){cursor:pointer;appearance:none;text-align:center;webkit-user-select:none;-webkit-user-select:none;user-select:none;flex-wrap:wrap;justify-content:center;align-items:center;display:inline-flex;position:relative}@media (hover:hover){.tab:is(.tabs>.tab):hover{color:var(--color-base-content)}}.tab:is(.tabs>.tab){--tab-p:.75rem;--tab-bg:var(--color-base-100);--tab-border-color:var(--color-base-300);--tab-radius-ss:0;--tab-radius-se:0;--tab-radius-es:0;--tab-radius-ee:0;--tab-order:0;--tab-radius-min:calc(.75rem - var(--border));--tab-radius-limit:min(var(--radius-field), var(--tab-radius-min));--tab-radius-grad:#0000 calc(69% - var(--border)), var(--tab-border-color) calc(69% - var(--border) + .25px), var(--tab-border-color) 69%, var(--tab-bg) calc(69% + .25px);order:var(--tab-order);height:var(--tab-height);padding-inline:var(--tab-p);border-color:#0000;font-size:.875rem}.tab:is(.tabs>.tab):is(input[type=radio]){min-width:fit-content}.tab:is(.tabs>.tab):is(input[type=radio]):after{--tw-content:attr(aria-label);content:var(--tw-content)}.tab:is(.tabs>.tab):is(label){position:relative}.tab:is(.tabs>.tab):is(label) input{cursor:pointer;appearance:none;opacity:0;position:absolute;inset:0}:is(.tab:is(.tabs>.tab):checked,.tab:is(.tabs>.tab):is(label:has(:checked)),.tab:is(.tabs>.tab):is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content{display:block}.tab:is(.tabs>.tab):not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.tab:is(.tabs>.tab):not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:color-mix(in oklab, var(--color-base-content) 50%, transparent)}}.tab:is(.tabs>.tab):not(input):empty{cursor:default;flex-grow:1}.tab:is(.tabs>.tab):focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.tab:is(.tabs>.tab):focus{outline-offset:2px;outline:2px solid #0000}}.tab:is(.tabs>.tab):focus-visible,.tab:is(.tabs>.tab):is(label:has(:checked:focus-visible)){outline-offset:-5px;outline:2px solid}.tab:is(.tabs>.tab)[disabled]{pointer-events:none;opacity:.4}.menu{--menu-active-fg:var(--color-neutral-content);--menu-active-bg:var(--color-neutral);flex-flow:column wrap;width:fit-content;padding:.5rem;font-size:.875rem;display:flex}.menu :where(li ul,li menu){white-space:nowrap;margin-inline-start:1rem;padding-inline-start:.5rem;position:relative}.menu :where(li ul,li menu):before{background-color:var(--color-base-content);opacity:.1;width:var(--border);content:\"\";inset-inline-start:0;position:absolute;top:.75rem;bottom:.75rem}.menu :where(li>.menu-dropdown:not(.menu-dropdown-show)){display:none}.menu :where(li:not(.menu-title)>:not(ul,menu,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);text-align:start;-webkit-user-select:none;user-select:none;grid-auto-columns:minmax(auto,max-content) auto max-content;grid-auto-flow:column;align-content:flex-start;align-items:center;gap:.5rem;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:grid}.menu :where(li>details>summary){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li>details>summary){outline-offset:2px;outline:2px solid #0000}}.menu :where(li>details>summary)::-webkit-details-marker{display:none}:is(.menu :where(li>details>summary),.menu :where(li>.menu-dropdown-toggle)):after{content:\"\";transform-origin:50%;pointer-events:none;justify-self:flex-end;width:.375rem;height:.375rem;transition-property:rotate,translate;transition-duration:.2s;display:block;translate:0 -1px;rotate:-135deg;box-shadow:inset 2px 2px}.menu details{interpolate-size:allow-keywords;overflow:hidden}.menu details::details-content{block-size:0}@media (prefers-reduced-motion:no-preference){.menu details::details-content{transition-behavior:allow-discrete;transition-property:block-size,content-visibility;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}}.menu details[open]::details-content{block-size:auto}.menu :where(li>details[open]>summary):after,.menu :where(li>.menu-dropdown-toggle.menu-dropdown-show):after{translate:0 1px;rotate:45deg}.menu :where(li:not(.menu-title,.disabled)>:not(ul,menu,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,menu,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li:not(.menu-title,.disabled)>:not(ul,menu,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,menu,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,menu,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,menu,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{color:var(--color-base-content);--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,menu,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,menu,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,menu,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li:not(.menu-title,.disabled)>:not(ul,menu,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,menu,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,menu,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,menu,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){box-shadow:inset 0 1px oklch(0% 0 0/.01),inset 0 -1px oklch(100% 0 0/.01)}.menu :where(li:empty){background-color:var(--color-base-content);opacity:.1;height:1px;margin:.5rem 1rem}.menu :where(li){flex-flow:column wrap;flex-shrink:0;align-items:stretch;display:flex;position:relative}.menu :where(li) .badge{justify-self:flex-end}.menu :where(li)>:not(ul,menu,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,menu,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li)>:not(ul,menu,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,menu,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{outline-offset:2px;outline:2px solid #0000}}.menu :where(li)>:not(ul,menu,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,menu,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{color:var(--menu-active-fg);background-color:var(--menu-active-bg);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise)}:is(.menu :where(li)>:not(ul,menu,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,menu,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):not(:is(.menu :where(li)>:not(ul,menu,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,menu,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):active){box-shadow:0 2px calc(var(--depth) * 3px) -2px var(--menu-active-bg)}.menu :where(li).menu-disabled,.menu :where(li) [disabled]{pointer-events:none;color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li).menu-disabled,.menu :where(li) [disabled]{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.menu .dropdown:focus-within .menu-dropdown-toggle:after{translate:0 1px;rotate:45deg}.menu .dropdown-content{margin-top:.5rem;padding:.5rem}.menu .dropdown-content:before{display:none}.dropdown{position-area:var(--anchor-v,bottom) var(--anchor-h,span-right);display:inline-block;position:relative}.dropdown>:not(:has(~[class*=dropdown-content])):focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.dropdown>:not(:has(~[class*=dropdown-content])):focus{outline-offset:2px;outline:2px solid #0000}}.dropdown .dropdown-content{position:absolute}.dropdown.dropdown-close .dropdown-content,.dropdown:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content,.dropdown.dropdown-hover:not(:hover) [tabindex]:first-child:focus:not(:focus-visible)~.dropdown-content{transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover],.dropdown .dropdown-content{z-index:999}@media (prefers-reduced-motion:no-preference){.dropdown[popover],.dropdown .dropdown-content{transition-behavior:allow-discrete;transition-property:opacity,scale,display,overlay;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}}@starting-style{.dropdown[popover],.dropdown .dropdown-content{opacity:0;scale:.95}}:is(.dropdown:not(.dropdown-close).dropdown-open,.dropdown:not(.dropdown-close):not(.dropdown-hover):focus,.dropdown:not(.dropdown-close):focus-within)>[tabindex]:first-child{pointer-events:none}:is(.dropdown:not(.dropdown-close).dropdown-open,.dropdown:not(.dropdown-close):not(.dropdown-hover):focus,.dropdown:not(.dropdown-close):focus-within) .dropdown-content,.dropdown:not(.dropdown-close).dropdown-hover:hover .dropdown-content{opacity:1;scale:1}.dropdown:is(details){overflow:revert-layer}.dropdown:is(details) summary::-webkit-details-marker{display:none}.dropdown:where([popover]){background:0 0}.dropdown[popover]{color:inherit;position:fixed}@supports not (position-area:bottom){.dropdown[popover]{margin:auto}.dropdown[popover].dropdown-close{transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover].dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover]::backdrop{background-color:oklab(0% none none/.3)}}:is(.dropdown[popover].dropdown-close,.dropdown[popover]:not(.dropdown-open,:popover-open)){transform-origin:top;opacity:0;display:none;scale:.95}:where(.btn){width:unset}.btn{--size:calc(var(--size-field,.25rem) * 10);--btn-p:1rem;--btn-fg:var(--color-base-content);cursor:pointer;text-align:center;vertical-align:middle;outline-offset:2px;webkit-user-select:none;-webkit-user-select:none;user-select:none;border-width:var(--border);touch-action:manipulation;--btn-bg:var(--btn-color,var(--color-base-200));--btn-border:var(--btn-color,var(--color-base-200));border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-wrap:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:.375rem;font-weight:600;transition-property:color,background-color,border-color,box-shadow,transform;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:inline-flex}@supports (color:color-mix(in lab, red, red)){.btn{--btn-border:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 calc(var(--depth) * 5%))}}.btn{--btn-soft-bg:initial;--btn-shadow:0 3px 2px -2px var(--btn-bg), 0 4px 3px -2px var(--btn-bg)}@supports (color:color-mix(in lab, red, red)){.btn{--btn-shadow:0 3px 2px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000), 0 4px 3px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000)}}.btn{--btn-inset:0 .5px 0 .5px oklch(100% 0 0 / calc(var(--depth) * 6%));height:var(--size);padding-inline:var(--btn-p);font-size:var(--fontsize,.875rem);background-color:var(--btn-bg);color:var(--btn-fg);border-color:var(--btn-border);border-style:var(--btn-border-style,solid);outline-color:var(--btn-color,var(--color-base-content));--tw-prose-links:var(--btn-fg);background-image:none, var(--fx-noise);background-size:auto, calc(var(--noise,0) * 100%);text-shadow:0 .5px oklch(100% 0 0 / calc(var(--depth) * .15));box-shadow:var(--btn-inset) inset, var(--btn-shadow)}.btn:is([type=checkbox],[type=radio]){appearance:none}.btn:is([type=checkbox],[type=radio])[aria-label]:after{--tw-content:attr(aria-label);content:var(--tw-content)}.loading{pointer-events:none;aspect-ratio:1;vertical-align:middle;width:calc(var(--size-selector,.25rem) * 6);background-color:currentColor;display:inline-block;-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='8s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='6s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='6s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='8s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='6s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='6s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}@media (prefers-reduced-motion:no-preference){.loading{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\")}}.countdown{display:inline-flex}.countdown>*{visibility:hidden;--value-v:calc(mod(max(0, var(--value)), 1000));--value-hundreds:calc(round(to-zero, var(--value-v) / 100, 1));--value-tens:calc(round(to-zero, mod(var(--value-v), 100) / 10, 1));--value-ones:calc(mod(var(--value-v), 100));--show-hundreds:clamp(clamp(0, var(--digits,1) - 2, 1), var(--value-hundreds), 1);--show-tens:clamp(clamp(0, var(--digits,1) - 1, 1), var(--value-tens) + var(--show-hundreds), 1);--first-digits:calc(round(to-zero, var(--value-v) / 10, 1));height:1em;width:calc(1ch + var(--show-tens) * 1ch + var(--show-hundreds) * 1ch);direction:ltr;transition:width .4s ease-out .2s;display:inline-block;position:relative;overflow-y:clip}.countdown>:before,.countdown>:after{visibility:visible;--tw-content:\"00\\a 01\\a 02\\a 03\\a 04\\a 05\\a 06\\a 07\\a 08\\a 09\\a 10\\a 11\\a 12\\a 13\\a 14\\a 15\\a 16\\a 17\\a 18\\a 19\\a 20\\a 21\\a 22\\a 23\\a 24\\a 25\\a 26\\a 27\\a 28\\a 29\\a 30\\a 31\\a 32\\a 33\\a 34\\a 35\\a 36\\a 37\\a 38\\a 39\\a 40\\a 41\\a 42\\a 43\\a 44\\a 45\\a 46\\a 47\\a 48\\a 49\\a 50\\a 51\\a 52\\a 53\\a 54\\a 55\\a 56\\a 57\\a 58\\a 59\\a 60\\a 61\\a 62\\a 63\\a 64\\a 65\\a 66\\a 67\\a 68\\a 69\\a 70\\a 71\\a 72\\a 73\\a 74\\a 75\\a 76\\a 77\\a 78\\a 79\\a 80\\a 81\\a 82\\a 83\\a 84\\a 85\\a 86\\a 87\\a 88\\a 89\\a 90\\a 91\\a 92\\a 93\\a 94\\a 95\\a 96\\a 97\\a 98\\a 99\\a \";content:var(--tw-content);font-variant-numeric:tabular-nums;white-space:pre;text-align:end;direction:rtl;transition:all 1s cubic-bezier(1,0,0,1),width .2s ease-out .2s,opacity .2s ease-out .2s;position:absolute;overflow-x:clip}.countdown>:before{width:calc(1ch + var(--show-hundreds) * 1ch);top:calc(var(--first-digits) * -1em);opacity:var(--show-tens);inset-inline-end:0}.countdown>:after{width:1ch;top:calc(var(--value-ones) * -1em);inset-inline-start:0}.collapse{border-radius:var(--radius-box,1rem);isolation:isolate;grid-template-rows:max-content 0fr;grid-template-columns:minmax(0,1fr);width:100%;display:grid;position:relative}@media (prefers-reduced-motion:no-preference){.collapse{transition:grid-template-rows .2s}}.collapse>input:is([type=checkbox],[type=radio]){appearance:none;opacity:0;z-index:1;grid-row-start:1;grid-column-start:1;width:100%;min-height:1lh;padding:1rem;padding-inline-end:3rem;transition:background-color .2s ease-out}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close)),.collapse:not(.collapse-close):has(>input:is([type=checkbox],[type=radio]):checked){grid-template-rows:max-content 1fr}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>.collapse-content,.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){--overflow-delay:.2s;overflow:revert-layer;content-visibility:visible;min-height:fit-content}@supports not (content-visibility:visible){.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>.collapse-content,.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){visibility:visible}}.collapse:focus-visible,.collapse:has(>input:is([type=checkbox],[type=radio]):focus-visible),.collapse:has(summary:focus-visible){outline-color:var(--color-base-content);outline-offset:2px;outline-width:2px;outline-style:solid}.collapse:not(.collapse-close)>input[type=checkbox],.collapse:not(.collapse-close)>input[type=radio]:not(:checked),.collapse:not(.collapse-close)>.collapse-title{cursor:pointer}:is(.collapse[tabindex]:focus:not(.collapse-close,.collapse[open]),.collapse[tabindex]:focus-within:not(.collapse-close,.collapse[open]))>.collapse-title{cursor:unset}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>:where(.collapse-content),.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){padding-bottom:1rem}.collapse:is(details){width:100%}.collapse:is(details)::details-content{--overflow-delay:0s;height:0;overflow:clip}.collapse:is(details):where([open])::details-content{overflow:revert-layer;height:auto}@media (prefers-reduced-motion:no-preference){.collapse:is(details)::details-content{transition:overflow .2s allow-discrete var(--overflow-delay), content-visibility .2s allow-discrete, visibility .2s allow-discrete, min-height .2s ease-out allow-discrete, padding .1s ease-out 20ms, background-color .2s ease-out, height .2s;interpolate-size:allow-keywords}.collapse:is(details):where([open])::details-content{--overflow-delay:.2s}}.collapse:is(details)>summary{outline:none;display:block;position:relative}.collapse:is(details)>summary::-webkit-details-marker{display:none}.collapse-content{--overflow-delay:0s;content-visibility:hidden;min-height:0;cursor:unset;grid-row-start:2;grid-column-start:1;padding-left:1rem;padding-right:1rem;overflow:clip}@supports not (content-visibility:hidden){.collapse-content{visibility:hidden}}@media (prefers-reduced-motion:no-preference){.collapse-content{transition:overflow .2s allow-discrete var(--overflow-delay), content-visibility .2s allow-discrete, visibility .2s allow-discrete, min-height .2s ease-out allow-discrete, padding .1s ease-out 20ms, background-color .2s ease-out}}details>.collapse-content{content-visibility:visible}.filter{flex-wrap:wrap;display:flex}.filter [type=radio]{width:auto}.filter input{opacity:1;transition:visibility .1s allow-discrete, margin .1s, opacity .3s, padding .3s, border-width .1s;overflow:hidden;scale:1}.filter input.filter-reset{aspect-ratio:1}.filter input.filter-reset:after{--tw-content:\"\u00D7\";content:var(--tw-content)}.filter>input:not(:last-child),.filter>:not(:last-child) input{margin-inline-end:.25rem}.list{flex-direction:column;font-size:.875rem;display:flex}.list .list-row{--list-grid-cols:minmax(0, auto) 1fr;border-radius:var(--radius-box);word-break:break-word;grid-auto-flow:column;grid-template-columns:var(--list-grid-cols);gap:1rem;padding:1rem;display:grid;position:relative}:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{content:\"\";border-bottom:var(--border) solid;inset-inline:var(--radius-box);border-color:var(--color-base-content);position:absolute;bottom:0}@supports (color:color-mix(in lab, red, red)){:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{border-color:color-mix(in oklab, var(--color-base-content) 5%, transparent)}}.toast{translate:var(--toast-x,0) var(--toast-y,0);inset-inline:auto 1rem;background-color:#0000;flex-direction:column;gap:.5rem;width:max-content;max-width:calc(100vw - 2rem);display:flex;position:fixed;top:auto;bottom:1rem}@media (prefers-reduced-motion:no-preference){.toast>*{animation:.25s ease-out toast}}.toggle{border:var(--border) solid currentColor;color:var(--input-color);cursor:pointer;appearance:none;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;user-select:none;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--toggle-p), var(--radius-selector-max)) + min(var(--border), var(--radius-selector-max)));padding:var(--toggle-p);flex-shrink:0;grid-template-columns:0fr 1fr 1fr;place-content:center;display:inline-grid;position:relative;box-shadow:inset 0 1px}@supports (color:color-mix(in lab, red, red)){.toggle{box-shadow:0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000) inset}}.toggle{--input-color:var(--color-base-content);transition:color .3s,grid-template-columns .2s}@supports (color:color-mix(in lab, red, red)){.toggle{--input-color:color-mix(in oklab, var(--color-base-content) 50%, #0000)}}.toggle{--toggle-p:calc(var(--size) * .125);--size:calc(var(--size-selector,.25rem) * 6);width:calc((var(--size) * 2) - (var(--border) + var(--toggle-p)) * 2);height:var(--size)}.toggle>*{z-index:1;cursor:pointer;appearance:none;background-color:#0000;border:none;grid-column:2/span 1;grid-row-start:1;height:100%;padding:.125rem;transition:opacity .2s,rotate .4s}.toggle>:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.toggle>:focus{outline-offset:2px;outline:2px solid #0000}}.toggle>:nth-child(2){color:var(--color-base-100);rotate:0deg}.toggle>:nth-child(3){color:var(--color-base-100);opacity:0;rotate:-15deg}.toggle:has(:checked)>:nth-child(2){opacity:0;rotate:15deg}.toggle:has(:checked)>:nth-child(3){opacity:1;rotate:0deg}.toggle:before{aspect-ratio:1;border-radius:var(--radius-selector);--tw-content:\"\";content:var(--tw-content);width:100%;height:100%;box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor;background-color:currentColor;grid-row-start:1;grid-column-start:2;transition:background-color .1s,translate .2s,inset-inline-start .2s;position:relative;inset-inline-start:0;translate:0}@supports (color:color-mix(in lab, red, red)){.toggle:before{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000)}}.toggle:before{background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise)}@media (forced-colors:active){.toggle:before{outline-style:var(--tw-outline-style);outline-offset:calc(1px * -1);outline-width:1px}}@media print{.toggle:before{outline-offset:-1rem;outline:.25rem solid}}.toggle:focus-visible,.toggle:has(:focus-visible){outline-offset:2px;outline:2px solid}.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked){background-color:var(--color-base-100);--input-color:var(--color-base-content);grid-template-columns:1fr 1fr 0fr}:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{background-color:currentColor}@starting-style{:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{opacity:0}}.toggle:indeterminate{grid-template-columns:.5fr 1fr .5fr}.toggle:disabled{cursor:not-allowed;opacity:.3}.toggle:disabled:before{border:var(--border) solid currentColor;background-color:#0000}.input{appearance:none;background-color:var(--color-base-100);vertical-align:middle;white-space:nowrap;--size:calc(var(--size-field,.25rem) * var(--in-size-mul));--input-color:var(--color-base-content);flex-shrink:1;align-items:center;gap:.5rem;padding-inline:.75rem;display:inline-flex;position:relative}@supports (color:color-mix(in lab, red, red)){.input{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.input{cursor:text;width:clamp(3rem,20rem,100%);height:var(--size);font-size:max(var(--font-size,0rem), var(--font-size-min));touch-action:manipulation;border:var(--border) solid var(--input-color,#0000);box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field))}@supports (color:color-mix(in lab, red, red)){.input{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.input input{appearance:none;background-color:#0000;border:none;width:100%;height:100%}.input input::placeholder{color:var(--color-base-content);opacity:.5}.input input:focus,.input input:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.input input:focus,.input input:focus-within{outline-offset:2px;outline:2px solid #0000}}.input input::-webkit-calendar-picker-indicator{inset-inline-end:-.15em}.input::-webkit-inner-spin-button{margin-inline-end:-10px}.input::-webkit-calendar-picker-indicator{inset-inline-end:.75em}input.input,.input input{display:inline-flex;position:relative}:is(input.input,.input input)[type=url],:is(input.input,.input input)[type=email]{text-align:left}:is(input.input,.input input)::-webkit-datetime-edit{min-height:100%;text-align:inherit;align-items:center;display:grid}:is(input.input,.input input)::-webkit-date-and-time-value{min-height:100%;text-align:inherit;align-items:center;display:grid}:is(input.input,.input input)::-webkit-inner-spin-button{margin-block:calc(.25rem * var(--spin-my))}:is(input.input,.input input)::-webkit-calendar-picker-indicator{cursor:pointer;width:1em;height:1em;position:absolute}:is(input.input,.input input)::-webkit-color-swatch-wrapper{padding-block:.25rem}.input:focus,.input:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.input:focus,.input:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.input:focus,.input:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}@media (pointer:coarse){@supports (-webkit-touch-callout:none){.input:focus,.input:focus-within{--font-size:1rem}}}.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200)}:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input):is(input),:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input) :is(input){color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input):is(input),:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input) :is(input){color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{box-shadow:none}:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input)::placeholder,:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input) ::placeholder{color:var(--color-base-content);opacity:.2}.input:has(>input[disabled])>input[disabled]{cursor:not-allowed}.range{appearance:none;webkit-appearance:none;--range-thumb:var(--color-base-100);--range-thumb-size:calc(var(--size-selector,.25rem) * 6);--range-progress:currentColor;--range-fill:1;--range-p:.25rem;--range-bg:currentColor}@supports (color:color-mix(in lab, red, red)){.range{--range-bg:color-mix(in oklab, currentColor 10%, #0000)}}.range{--range-fill-x:calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2));--range-fill-y:0;--range-fill-spread:calc(100cqw * var(--range-fill));cursor:pointer;vertical-align:middle;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));width:clamp(3rem,20rem,100%);height:var(--range-thumb-size);background-color:#0000;border:none;overflow:hidden}[dir=rtl] .range{--range-dir:-1}.range:focus{outline:none}.range:focus-visible{outline-offset:2px;outline:2px solid}.range::-webkit-slider-runnable-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size) * .5)}@media (forced-colors:active){.range::-webkit-slider-runnable-track{border:1px solid}.range::-moz-range-track{border:1px solid}}.range::-webkit-slider-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));background-color:var(--range-thumb);height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p) solid;appearance:none;webkit-appearance:none;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor, 0 0 0 2rem var(--range-thumb) inset, var(--range-fill-x) var(--range-fill-y) 0 var(--range-fill-spread);position:relative;inset-block-start:50%;transform:translateY(-50%)}@supports (color:color-mix(in lab, red, red)){.range::-webkit-slider-thumb{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000), 0 0 0 2rem var(--range-thumb) inset, var(--range-fill-x) var(--range-fill-y) 0 var(--range-fill-spread)}}.range::-moz-range-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size) * .5)}.range::-moz-range-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p) solid;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor, 0 0 0 2rem var(--range-thumb) inset, var(--range-fill-x) var(--range-fill-y) 0 var(--range-fill-spread);background-color:currentColor;position:relative}@supports (color:color-mix(in lab, red, red)){.range::-moz-range-thumb{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000), 0 0 0 2rem var(--range-thumb) inset, var(--range-fill-x) var(--range-fill-y) 0 var(--range-fill-spread)}}.range:disabled{cursor:not-allowed;opacity:.3}.table{border-collapse:separate;--tw-border-spacing-x:0;--tw-border-spacing-y:0;width:100%;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y);border-radius:var(--radius-box);text-align:left;font-size:.875rem;position:relative}.table:where(:dir(rtl),[dir=rtl],[dir=rtl] *){text-align:right}@media (hover:hover){:is(.table tr.row-hover,.table tr.row-hover:nth-child(2n)):hover{background-color:var(--color-base-200)}}.table :where(th,td){vertical-align:middle;padding-block:.75rem;padding-inline:1rem}.table :where(thead,tfoot){white-space:nowrap;color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(thead,tfoot){color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.table :where(thead,tfoot){font-size:.875rem;font-weight:600}.table :where(tfoot tr:first-child :is(td,th)){border-top:var(--border) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(tfoot tr:first-child :is(td,th)){border-top:var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000)}}.table :where(.table-pin-rows thead tr){z-index:1;background-color:var(--color-base-100);position:sticky;top:0}.table :where(.table-pin-rows tfoot tr){z-index:1;background-color:var(--color-base-100);position:sticky;bottom:0}.table :where(.table-pin-cols tr th){background-color:var(--color-base-100);position:sticky;left:0;right:0}.table :where(thead tr :is(td,th),tbody tr:not(:last-child) :is(td,th)){border-bottom:var(--border) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(thead tr :is(td,th),tbody tr:not(:last-child) :is(td,th)){border-bottom:var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000)}}.aura{--aura-padding:.125rem;padding:var(--aura-padding);border-radius:calc(var(--aura-padding) + var(--aura-radius,var(--radius-box)));animation:aura var(--tw-duration,6s) linear infinite;background-image:conic-gradient(from var(--aura-angle), transparent 225deg, currentColor);display:inline-block;position:relative}.aura:has(>.card,>.alert){--aura-radius:var(--radius-box)}.aura:has(>.btn,>.input,>.select){--aura-radius:var(--radius-field)}.aura:has(>.checkbox,>.toggle,>.badge){--aura-radius:var(--radius-selector)}.aura:before,.aura:after{animation:inherit;background-color:inherit;background-image:inherit;border-radius:inherit;z-index:0;opacity:.7;filter:blur(.25rem);content:\"\";width:100%;height:100%;display:block;position:absolute;top:50%;left:50%;translate:-50% -50%}.aura:after{opacity:.3;filter:blur(1rem)}.aura>*{z-index:1;position:relative}.steps{counter-reset:step;grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid;overflow:auto hidden}.steps .step{text-align:center;--step-bg:var(--color-base-300);--step-fg:var(--color-base-content);grid-template-rows:40px 1fr;grid-template-columns:auto;place-items:center;min-width:4rem;display:grid}.steps .step:before{width:100%;height:.5rem;color:var(--step-bg);background-color:var(--step-bg);content:\"\";border:1px solid;grid-row-start:1;grid-column-start:1;margin-inline-start:-100%;top:0}.steps .step>.step-icon,.steps .step:not(:has(.step-icon)):after{--tw-content:counter(step);content:var(--tw-content);counter-increment:step;z-index:1;color:var(--step-fg);background-color:var(--step-bg);border:1px solid var(--step-bg);border-radius:3.40282e38px;grid-row-start:1;grid-column-start:1;place-self:center;place-items:center;width:2rem;height:2rem;display:grid;position:relative}.steps .step:first-child:before{--tw-content:none;content:var(--tw-content)}.steps .step[data-content]:after{--tw-content:attr(data-content);content:var(--tw-content)}.select{appearance:none;background-color:var(--color-base-100);vertical-align:middle;--size:calc(var(--size-field,.25rem) * var(--sl-size-mul));--input-color:var(--color-base-content);flex-shrink:1;align-items:center;gap:.375rem;padding-inline:.75rem 1.75rem;display:inline-flex;position:relative}@supports (color:color-mix(in lab, red, red)){.select{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.select{width:clamp(3rem,20rem,100%);height:var(--size);font-size:max(var(--font-size,0rem), var(--font-size-min));touch-action:manipulation;white-space:nowrap;text-overflow:ellipsis;border:var(--border) solid var(--input-color,#0000);box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 20px) calc(1px + 50%),calc(100% - 16.1px) calc(1px + 50%);background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));overflow:hidden}@supports (color:color-mix(in lab, red, red)){.select{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}[dir=rtl] .select{background-position:12px calc(1px + 50%),16px calc(1px + 50%)}[dir=rtl] .select::picker(select){translate:.5rem}[dir=rtl] .select select::picker(select){translate:.5rem}.select[multiple]{background-image:none;height:auto;padding-block:.75rem;padding-inline-end:.75rem;overflow:auto}.select select{appearance:none;width:calc(100% + 2.75rem);height:calc(100% - calc(var(--border) * 2));background:inherit;border-radius:inherit;border-style:none;align-items:center;margin-inline:-.75rem -1.75rem;padding-inline:.75rem 1.75rem}.select select::placeholder{color:var(--color-base-content);opacity:.5}.select select:focus,.select select:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.select select:focus,.select select:focus-within{outline-offset:2px;outline:2px solid #0000}}.select select:not(:last-child){background-image:none;margin-inline-end:-1.375rem}:is(.select:focus,.select:focus-within,.select:open){--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){:is(.select:focus,.select:focus-within,.select:open){box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}:is(.select:focus,.select:focus-within,.select:open){outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate;background-image:linear-gradient(135deg,#0000 50%,currentColor 50%),linear-gradient(45deg,currentColor 50%,#0000 50%)}.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select{cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200)}:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select):is(select),:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select) :is(select){color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select):is(select),:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select) :is(select){color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select{box-shadow:none}:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select)::placeholder,:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select) ::placeholder{color:var(--color-base-content);opacity:.2}.select:has(>select[disabled])>select[disabled]{cursor:not-allowed}@supports (appearance:base-select){:is(.select,.select select){appearance:base-select}:is(.select,.select select)::picker(select){appearance:base-select}}:is(.select,.select select)::picker(select){color:inherit;border:var(--border) solid var(--color-base-200);border-radius:var(--radius-box);background-color:inherit;max-height:min(24rem,70dvh);box-shadow:0 2px calc(var(--depth) * 3px) -2px oklch(0% 0 0/.2);box-shadow:0 20px 25px -5px rgb(0 0 0/calc(var(--depth) * .1)), 0 8px 10px -6px rgb(0 0 0/calc(var(--depth) * .1));margin-block:.5rem;margin-inline:.5rem;padding:.5rem;translate:-.5rem}:is(.select,.select select)::picker-icon{display:none}:is(.select,.select select) selectedcontent{text-overflow:ellipsis;white-space:nowrap;width:100%;overflow:hidden}:is(.select,.select select) optgroup{padding-top:.5em}:is(.select,.select select) optgroup option:first-child{margin-top:.5em}:is(.select,.select select) option{border-radius:var(--radius-field);padding-block:.375rem;padding-inline:calc(.25rem * var(--option-px));white-space:normal;transition-property:color,background-color;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{outline-offset:2px;outline:2px solid #0000}}:is(.select,.select select) option:not(:disabled):active{background-color:var(--color-neutral);color:var(--color-neutral-content);box-shadow:0 2px calc(var(--depth) * 3px) -2px var(--color-neutral)}.collapse-title{grid-row-start:1;grid-column-start:1;width:100%;min-height:1lh;padding:1rem;padding-inline-end:3rem;transition:background-color .2s ease-out;position:relative}.radio{cursor:pointer;appearance:none;vertical-align:middle;border:var(--border) solid var(--input-color,currentColor);border-radius:3.40282e38px;flex-shrink:0;padding:.25rem;display:inline-block;position:relative}@supports (color:color-mix(in lab, red, red)){.radio{border:var(--border) solid var(--input-color,color-mix(in srgb, currentColor 20%, #0000))}}.radio{box-shadow:0 1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset;--size:calc(var(--size-selector,.25rem) * 6);width:var(--size);height:var(--size);color:var(--input-color,currentColor)}.radio:before{--tw-content:\"\";content:var(--tw-content);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);border-radius:3.40282e38px;width:100%;height:100%;display:block}.radio:focus-visible{outline:2px solid}.radio:checked,.radio[aria-checked=true]{background-color:var(--color-base-100);border-color:currentColor}@media (prefers-reduced-motion:no-preference){.radio:checked,.radio[aria-checked=true]{animation:.2s ease-out radio}}:is(.radio:checked,.radio[aria-checked=true]):before{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px oklch(0% 0 0 / calc(var(--depth) * .1));background-color:currentColor}@media (forced-colors:active){:is(.radio:checked,.radio[aria-checked=true]):before{outline-style:var(--tw-outline-style);outline-offset:calc(1px * -1);outline-width:1px}}@media print{:is(.radio:checked,.radio[aria-checked=true]):before{outline-offset:-1rem;outline:.25rem solid}}.rating{vertical-align:middle;--size:var(--size-selector,.25rem) * 6;display:inline-flex;position:relative}.rating input{cursor:pointer;appearance:none}.rating *{background-color:var(--color-base-content);opacity:.2;width:calc(var(--size) * 1);height:calc(var(--size));border-radius:0}@media (prefers-reduced-motion:no-preference){.rating *{animation:.25s ease-out rating}}.rating .rating-hidden{background-color:#0000;width:.5rem}.rating :checked,.rating [aria-checked=true],.rating [aria-current=true],.rating :has(~:checked,~[aria-checked=true],~[aria-current=true]){opacity:1}.rating :focus-visible{scale:1.1}@media (prefers-reduced-motion:no-preference){.rating :focus-visible{transition:scale .2s ease-out}}.rating :active:focus{animation:none;scale:1.1}.card{border-radius:var(--radius-box);outline-offset:2px;outline:2px solid #0000;flex-direction:column;transition:outline .2s ease-in-out;display:flex;position:relative}.card:focus-visible,.card[aria-checked=true],.card:has(>:checked,>:is([type=checkbox],[type=radio]):focus-visible){outline-color:currentColor}.card:has(>:checked:focus-visible),.card[aria-checked=true]:focus-visible,.card[aria-checked=true]:has(>:is([type=checkbox],[type=radio]):focus-visible){outline-width:4px}.card:has(>:is([type=checkbox],[type=radio])){cursor:pointer;-webkit-user-select:none;user-select:none}.card>:is([type=checkbox],[type=radio]){appearance:none}.progress{appearance:none;border-radius:var(--radius-box);background-color:currentColor;width:100%;height:.5rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.progress{background-color:color-mix(in oklab, currentcolor 20%, transparent)}}.progress{color:var(--color-base-content)}.progress:indeterminate{background-image:repeating-linear-gradient(90deg,currentColor -1% 10%,#0000 10% 90%);background-position-x:15%;background-size:200%}@media (prefers-reduced-motion:no-preference){.progress:indeterminate{animation:5s ease-in-out infinite progress}}@supports ((-moz-appearance:none)){.progress:indeterminate::-moz-progress-bar{background-color:#0000}@media (prefers-reduced-motion:no-preference){.progress:indeterminate::-moz-progress-bar{background-image:repeating-linear-gradient(90deg,currentColor -1% 10%,#0000 10% 90%);background-position-x:15%;background-size:200%;animation:5s ease-in-out infinite progress}}.progress::-moz-progress-bar{border-radius:var(--radius-box);background-color:currentColor}}@supports ((-webkit-appearance:none)){.progress::-webkit-progress-bar{border-radius:var(--radius-box);background-color:#0000}.progress::-webkit-progress-value{border-radius:var(--radius-box);background-color:currentColor}}.textarea{appearance:none;border-radius:var(--radius-field);background-color:var(--color-base-100);vertical-align:middle;--input-color:var(--color-base-content);flex-shrink:1;min-height:5rem;padding-block:.5rem;padding-inline:.75rem}@supports (color:color-mix(in lab, red, red)){.textarea{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.textarea{width:clamp(3rem,20rem,100%);font-size:max(var(--font-size,0rem), var(--font-size-min));touch-action:manipulation;border:var(--border) solid var(--input-color,#0000);box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}@supports (color:color-mix(in lab, red, red)){.textarea{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.textarea textarea{appearance:none;background-color:#0000;border:none}.textarea textarea::placeholder{color:var(--color-base-content);opacity:.5}.textarea textarea:focus,.textarea textarea:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.textarea textarea:focus,.textarea textarea:focus-within{outline-offset:2px;outline:2px solid #0000}}.textarea:focus,.textarea:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.textarea:focus,.textarea:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.textarea:focus,.textarea:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}@media (pointer:coarse){@supports (-webkit-touch-callout:none){.textarea:focus,.textarea:focus-within{--font-size:1rem}}}.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){box-shadow:none}:is(.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]))::placeholder,:is(.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled])) ::placeholder{color:var(--color-base-content);opacity:.2}.textarea:has(>textarea[disabled])>textarea[disabled]{cursor:not-allowed}.stack{grid-template-rows:3px 4px 1fr 4px 3px;grid-template-columns:3px 4px 1fr 4px 3px;display:inline-grid}.stack>*{width:100%;height:100%}.stack>:nth-child(n+2){opacity:.7;width:100%}.stack>:nth-child(2){z-index:2;opacity:.9}.stack>:first-child{z-index:3;width:100%}.tab-content{order:var(--tabcontent-order);--tabcontent-radius-ss:var(--radius-box);--tabcontent-radius-se:var(--radius-box);--tabcontent-radius-es:var(--radius-box);--tabcontent-radius-ee:var(--radius-box);--tabcontent-order:1;width:100%;height:calc(100% - var(--tab-height) + var(--border));margin:var(--tabcontent-margin);border-color:#0000;border-width:var(--border);border-start-start-radius:var(--tabcontent-radius-ss);border-start-end-radius:var(--tabcontent-radius-se);border-end-end-radius:var(--tabcontent-radius-ee);border-end-start-radius:var(--tabcontent-radius-es);display:none}.modal-box{background-color:var(--color-base-100);border-top-left-radius:var(--modal-tl,var(--radius-box));border-top-right-radius:var(--modal-tr,var(--radius-box));border-bottom-left-radius:var(--modal-bl,var(--radius-box));border-bottom-right-radius:var(--modal-br,var(--radius-box));opacity:0;overscroll-behavior:contain;grid-row-start:1;grid-column-start:1;width:91.6667%;max-width:32rem;max-height:100vh;padding:1.5rem;transition:translate .3s ease-out,scale .3s ease-out,opacity .2s ease-out 50ms,box-shadow .3s ease-out;overflow-y:auto;scale:.95;box-shadow:0 25px 50px -12px oklch(0% 0 0/.25)}.breadcrumbs{max-width:100%;padding-block:.5rem;overflow-x:auto}.breadcrumbs>menu,.breadcrumbs>ul,.breadcrumbs>ol{white-space:nowrap;align-items:center;min-height:min-content;display:flex}:is(.breadcrumbs>menu,.breadcrumbs>ul,.breadcrumbs>ol)>li{align-items:center;display:flex}:is(.breadcrumbs>menu,.breadcrumbs>ul,.breadcrumbs>ol)>li>*{cursor:pointer;align-items:center;gap:.5rem;display:flex}@media (hover:hover){:is(.breadcrumbs>menu,.breadcrumbs>ul,.breadcrumbs>ol)>li>:hover{text-decoration-line:underline}}:is(.breadcrumbs>menu,.breadcrumbs>ul,.breadcrumbs>ol)>li>:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.breadcrumbs>menu,.breadcrumbs>ul,.breadcrumbs>ol)>li>:focus{outline-offset:2px;outline:2px solid #0000}}:is(.breadcrumbs>menu,.breadcrumbs>ul,.breadcrumbs>ol)>li>:focus-visible{outline-offset:2px;outline:2px solid}:is(.breadcrumbs>menu,.breadcrumbs>ul,.breadcrumbs>ol)>li+:before{content:\"\";opacity:.4;background-color:#0000;border-top:1px solid;border-right:1px solid;width:.375rem;height:.375rem;margin-inline:.5rem .75rem;display:block;rotate:45deg}[dir=rtl] :is(:is(.breadcrumbs>menu,.breadcrumbs>ul,.breadcrumbs>ol)>li)+:before{rotate:-135deg}.label{white-space:nowrap;color:currentColor;align-items:center;gap:.375rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.label{color:color-mix(in oklab, currentcolor 60%, transparent)}}.label:has(input){cursor:pointer}.label:is(.input>*,.select>*){white-space:nowrap;height:calc(100% - .5rem);font-size:inherit;align-items:center;padding-inline:.75rem;display:flex}.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border) solid currentColor;margin-inline:-.75rem .75rem}@supports (color:color-mix(in lab, red, red)){.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border) solid color-mix(in oklab, currentColor 10%, #0000)}}.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border) solid currentColor;margin-inline:.75rem -.75rem}@supports (color:color-mix(in lab, red, red)){.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border) solid color-mix(in oklab, currentColor 10%, #0000)}}.status{aspect-ratio:1;border-radius:var(--radius-selector);background-color:var(--color-base-content);width:.5rem;height:.5rem;display:inline-block}@supports (color:color-mix(in lab, red, red)){.status{background-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.status{vertical-align:middle;color:#0000004d;background-position:50%;background-repeat:no-repeat}@supports (color:color-mix(in lab, red, red)){.status{color:color-mix(in oklab, var(--color-black) 30%, transparent)}}.status{background-image:radial-gradient(circle at 35% 30%, oklch(1 0 0 / calc(var(--depth) * .5)), #0000);box-shadow:0 2px 3px -1px}@supports (color:color-mix(in lab, red, red)){.status{box-shadow:0 2px 3px -1px color-mix(in oklab, currentColor calc(var(--depth) * 100%), #0000)}}.badge{border-radius:var(--radius-selector);vertical-align:middle;color:var(--badge-fg);border:var(--border) solid var(--badge-color,var(--color-base-200));background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);background-color:var(--badge-bg);--badge-bg:var(--badge-color,var(--color-base-100));--badge-fg:var(--color-base-content);--size:calc(var(--size-selector,.25rem) * 6);width:fit-content;height:var(--size);padding-inline:calc(var(--size) / 2 - var(--border));justify-content:center;align-items:center;gap:.5rem;font-size:.875rem;display:inline-flex}.alert{--alert-border-color:var(--color-base-200);border-radius:var(--radius-box);color:var(--color-base-content);background-color:var(--alert-color,var(--color-base-200));text-align:start;background-size:auto, calc(var(--noise) * 33%);background-image:none, var(--fx-noise);box-shadow:0 3px 0 -2px oklch(100% 0 0 / calc(var(--depth) * .08)) inset, 0 1px #000, 0 4px 3px -2px oklch(0% 0 0 / calc(var(--depth) * .08));border-style:solid;grid-template-columns:auto;grid-auto-flow:column;justify-content:start;place-items:center start;gap:1rem;padding-block:.75rem;padding-inline:1rem;font-size:.875rem;line-height:1.25rem;display:grid}@supports (color:color-mix(in lab, red, red)){.alert{box-shadow:0 3px 0 -2px oklch(100% 0 0 / calc(var(--depth) * .08)) inset, 0 1px color-mix(in oklab, color-mix(in oklab, #000 20%, var(--alert-color,var(--color-base-200))) calc(var(--depth) * 20%), #0000), 0 4px 3px -2px oklch(0% 0 0 / calc(var(--depth) * .08))}}.alert:has(:nth-child(2)){grid-template-columns:auto minmax(auto,1fr)}.skeleton{border-radius:var(--radius-box);background-color:var(--color-base-300)}@media (prefers-reduced-motion:reduce){.skeleton{transition-duration:15s}}.skeleton{will-change:background-position;background-image:linear-gradient(105deg, #0000 0% 40%, var(--color-base-100) 50%, #0000 60% 100%);background-position-x:-50%;background-size:200%}@media (prefers-reduced-motion:no-preference){.skeleton{animation:1.8s ease-in-out infinite skeleton}}.link{cursor:pointer;text-decoration-line:underline}.link:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.link:focus{outline-offset:2px;outline:2px solid #0000}}.link:focus-visible{outline-offset:2px;outline:2px solid}.btn-outline{--btn-bg:#0000;color:var(--btn-rest-fg,var(--btn-color,var(--color-base-content)));--btn-border:var(--btn-color,var(--color-base-content));--btn-border-style:solid;--btn-inset:0 0 0 0 oklch(0% 0 0/0);--btn-shadow:0 0 0 0 oklch(0% 0 0/0);background-image:none}.btn-soft{--btn-bg:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 8%, var(--btn-soft-bg,var(--color-base-100)))}}.btn-soft{color:var(--btn-rest-fg,var(--btn-color,var(--color-base-content)));--btn-border:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft{--btn-border:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 10%, var(--btn-soft-bg,var(--color-base-100)))}}.btn-soft{--btn-border-style:solid;--btn-inset:0 0 0 0 oklch(0% 0 0/0);--btn-shadow:0 0 0 0 oklch(0% 0 0/0);background-image:none}.btn-ghost{--btn-bg:#0000;color:var(--btn-rest-fg,var(--btn-color,var(--color-base-content,currentColor)));--btn-border:#0000;--btn-inset:0 0 0 0 oklch(0% 0 0/0);--btn-shadow:0 0 0 0 oklch(0% 0 0/0);background-image:none}.menu-title{color:var(--color-base-content);padding-block:.5rem;padding-inline:.75rem}@supports (color:color-mix(in lab, red, red)){.menu-title{color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}.menu-title{font-size:.875rem;font-weight:600}}@layer daisyui.l1.l2{.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal{pointer-events:auto;visibility:visible;opacity:1;transition:visibility 0s allow-discrete, background-color .3s ease-out, opacity .1s ease-out;background-color:oklch(0% 0 0/.4)}.modal:popover-open{pointer-events:auto;visibility:visible;opacity:1;transition:visibility 0s allow-discrete, background-color .3s ease-out, opacity .1s ease-out;background-color:oklch(0% 0 0/.4)}.modal:popover-open .modal-box{opacity:1;translate:0;scale:1}:root:has(.modal:popover-open){--page-scroll-lock: }:is(.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal) .modal-box{opacity:1;translate:0;scale:1}:root:has(:is(.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal)){--page-scroll-lock: }@starting-style{.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal{opacity:0}.modal:popover-open{opacity:0}}.collapse-arrow>.collapse-title:after{width:.5rem;height:.5rem;display:block;position:absolute;transform:translateY(-100%)rotate(45deg)}@media (prefers-reduced-motion:no-preference){.collapse-arrow>.collapse-title:after{transition-property:all;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}}.collapse-arrow>.collapse-title:after{content:\"\";transform-origin:75% 75%;pointer-events:none;top:50%;inset-inline-end:1.4rem;box-shadow:2px 2px}@media (prefers-reduced-motion:no-preference){.collapse[open].collapse-arrow>.collapse-title:after,.collapse.collapse-open.collapse-arrow>.collapse-title:after{transform:translateY(-50%)rotate(225deg)}}.collapse.collapse-open.collapse-plus>.collapse-title:after{--tw-content:\"\u2212\";content:var(--tw-content)}:is(.collapse[tabindex].collapse-arrow:focus:not(.collapse-close),.collapse.collapse-arrow[tabindex]:focus-within:not(.collapse-close))>.collapse-title:after,.collapse.collapse-arrow:not(.collapse-close)>input:is([type=checkbox],[type=radio]):checked~.collapse-title:after{transform:translateY(-50%)rotate(225deg)}.collapse[open].collapse-plus>.collapse-title:after,.collapse[tabindex].collapse-plus:focus:not(.collapse-close)>.collapse-title:after,.collapse.collapse-plus:not(.collapse-close)>input:is([type=checkbox],[type=radio]):checked~.collapse-title:after{--tw-content:\"\u2212\";content:var(--tw-content)}.list .list-row:has(.list-col-grow:first-child){--list-grid-cols:1fr}.list .list-row:has(.list-col-grow:nth-child(2)){--list-grid-cols:minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(3)){--list-grid-cols:minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(4)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(5)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(6)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row>*{grid-row-start:1}.input{--in-size-mul:10;--font-size-min:.875rem;--spin-my:-3}.floating-label:has(.input){--top-mul:5;--font-size:.875rem}.steps .step-neutral+.step-neutral:before,.steps .step-neutral:after,.steps .step-neutral>.step-icon{--step-bg:var(--color-neutral);--step-fg:var(--color-neutral-content)}.steps .step-primary+.step-primary:before,.steps .step-primary:after,.steps .step-primary>.step-icon{--step-bg:var(--color-primary);--step-fg:var(--color-primary-content)}.steps .step-secondary+.step-secondary:before,.steps .step-secondary:after,.steps .step-secondary>.step-icon{--step-bg:var(--color-secondary);--step-fg:var(--color-secondary-content)}.steps .step-accent+.step-accent:before,.steps .step-accent:after,.steps .step-accent>.step-icon{--step-bg:var(--color-accent);--step-fg:var(--color-accent-content)}.steps .step-info+.step-info:before,.steps .step-info:after,.steps .step-info>.step-icon{--step-bg:var(--color-info);--step-fg:var(--color-info-content)}.steps .step-success+.step-success:before,.steps .step-success:after,.steps .step-success>.step-icon{--step-bg:var(--color-success);--step-fg:var(--color-success-content)}.steps .step-warning+.step-warning:before,.steps .step-warning:after,.steps .step-warning>.step-icon{--step-bg:var(--color-warning);--step-fg:var(--color-warning-content)}.steps .step-error+.step-error:before,.steps .step-error:after,.steps .step-error>.step-icon{--step-bg:var(--color-error);--step-fg:var(--color-error-content)}.select{--sl-size-mul:10;--font-size-min:.875rem;--option-px:3}.floating-label:has(.select){--top-mul:5;--font-size:.875rem}.swap{cursor:pointer;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;user-select:none;place-content:center;display:inline-grid;position:relative}.swap input{appearance:none;border:none}.swap>*{grid-row-start:1;grid-column-start:1}@media (prefers-reduced-motion:no-preference){.swap>*{transition-property:transform,rotate,opacity;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}}.swap .swap-on,.swap .swap-indeterminate,.swap input:indeterminate~.swap-on,.swap input:is(:checked,:indeterminate)~.swap-off{opacity:0}.swap input:checked~.swap-on,.swap input:indeterminate~.swap-indeterminate{opacity:1;backface-visibility:visible}.radio:disabled{cursor:not-allowed;opacity:.2}.rating{--size:var(--size-selector,.25rem) * 6}.textarea{--font-size-min:.875rem}.floating-label:has(.textarea){--top-mul:5;--font-size:.875rem}:is(.stack,.stack.stack-bottom)>*{grid-area:3/3/6/4}:is(.stack,.stack.stack-bottom)>:nth-child(2){grid-area:2/2/5/5}:is(.stack,.stack.stack-bottom)>:first-child{grid-area:1/1/4/6}.stack.stack-top>*{grid-area:1/3/4/4}.stack.stack-top>:nth-child(2){grid-area:2/2/5/5}.stack.stack-top>:first-child{grid-area:3/1/6/6}.stack.stack-start>*{grid-area:3/1/4/4}.stack.stack-start>:nth-child(2){grid-area:2/2/5/5}.stack.stack-start>:first-child{grid-area:1/3/6/6}.stack.stack-end>*{grid-area:3/3/4/6}.stack.stack-end>:nth-child(2){grid-area:2/2/5/5}.stack.stack-end>:first-child{grid-area:1/1/6/4}.btn-square{width:var(--size);height:var(--size);padding-inline:0}.btn-block{width:100%}.loading-md{width:calc(var(--size-selector,.25rem) * 6)}.aura-glow{background-image:radial-gradient(closest-corner,currentColor 0%,#0000 90%);animation:none}.aura-glow:before{animation:aura-glow var(--tw-duration,6s) ease-out infinite}.aura-glow:after{animation:aura-glow-after var(--tw-duration,6s) ease-out infinite}.menu-sm :where(li:not(.menu-title)>:not(ul,menu,details,.menu-title)),.menu-sm :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);padding-block:.25rem;padding-inline:.625rem;font-size:.75rem}.menu-sm .menu-title{padding-block:.5rem;padding-inline:.75rem}.badge-ghost{border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content);background-image:none}.loading-spinner{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='8s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='6s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='6s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='8s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='6s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='6s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\")}@media (prefers-reduced-motion:no-preference){.loading-spinner{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\")}}.badge-sm{--size:calc(var(--size-selector,.25rem) * 5);font-size:.75rem}.badge-xs{--size:calc(var(--size-selector,.25rem) * 4);font-size:.625rem}.alert-error{color:var(--color-error-content);--alert-border-color:var(--color-error);--alert-color:var(--color-error)}.alert-warning{color:var(--color-warning-content);--alert-border-color:var(--color-warning);--alert-color:var(--color-warning)}.input-sm{--in-size-mul:8;--font-size-min:.75rem;--spin-my:-2}.floating-label:has(.input-sm){--top-mul:4;--font-size:.75rem}.select-sm{--sl-size-mul:8;--font-size-min:.75rem;--option-px:2.5}.floating-label:has(.select-sm){--top-mul:4;--font-size:.75rem}.btn-primary{--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content);--btn-soft-bg:initial}.btn-sm{--fontsize:.75rem;--btn-p:.75rem;--size:calc(var(--size-field,.25rem) * 8)}.badge-neutral{--badge-color:var(--color-neutral);--badge-fg:var(--color-neutral-content)}.badge-success{--badge-color:var(--color-success);--badge-fg:var(--color-success-content)}.card-border{border:var(--border) solid var(--color-base-200)}.input-error,.input-error:focus,.input-error:focus-within{--input-color:var(--color-error)}}@layer daisyui.l1{.btn:where(:checked:not(.filter [type=radio].btn)){--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content)}@media (hover:hover){.btn:hover{--btn-bg:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn:hover{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}.btn:hover{color:var(--btn-fg);--btn-border:var(--btn-bg)}@supports (color:color-mix(in lab, red, red)){.btn:hover{--btn-border:color-mix(in oklab, var(--btn-bg), #000 calc(var(--depth) * 5%))}}.btn:hover{--btn-border-style:solid;--btn-inset:0 .5px 0 .5px oklch(100% 0 0 / calc(var(--depth) * 6%));--btn-shadow:0 3px 2px -2px var(--btn-bg), 0 4px 3px -2px var(--btn-bg)}@supports (color:color-mix(in lab, red, red)){.btn:hover{--btn-shadow:0 3px 2px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000), 0 4px 3px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000)}}}.btn:active:not(.btn-active){--btn-bg:var(--btn-color,var(--color-base-200));translate:0 .5px}@supports (color:color-mix(in lab, red, red)){.btn:active:not(.btn-active){--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 5%)}}.btn:active:not(.btn-active){color:var(--btn-fg,var(--color-base-content));--btn-border:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn:active:not(.btn-active){--btn-border:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}.btn:active:not(.btn-active){--btn-border-style:solid;--btn-inset:0 0 0 0 oklch(0% 0 0/0);--btn-shadow:0 0 0 0 oklch(0% 0 0/0)}.btn:where(:checked:not(.filter [type=radio].btn),:not([type=radio],[type=checkbox]):focus-visible){--btn-bg:var(--btn-color,var(--color-base-200));color:var(--btn-fg,var(--color-base-content));--btn-border:var(--btn-bg)}@supports (color:color-mix(in lab, red, red)){.btn:where(:checked:not(.filter [type=radio].btn),:not([type=radio],[type=checkbox]):focus-visible){--btn-border:color-mix(in oklab, var(--btn-bg), #000 calc(var(--depth) * 5%))}}.btn:where(:checked:not(.filter [type=radio].btn),:not([type=radio],[type=checkbox]):focus-visible){--btn-border-style:solid;--btn-inset:0 .5px 0 .5px oklch(100% 0 0 / calc(var(--depth) * 6%));--btn-shadow:0 3px 2px -2px var(--btn-bg), 0 4px 3px -2px var(--btn-bg)}@supports (color:color-mix(in lab, red, red)){.btn:where(:checked:not(.filter [type=radio].btn),:not([type=radio],[type=checkbox]):focus-visible){--btn-shadow:0 3px 2px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000), 0 4px 3px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000)}}.btn:where(:checked:not(.filter [type=radio].btn),:not([type=radio],[type=checkbox]):focus-visible){isolation:isolate}.btn:focus-visible,.btn:has(:focus-visible){isolation:isolate;outline-width:2px;outline-style:solid}.filter:not(:has(:checked:not(.filter-reset))) :is(.filter-reset,[type=reset]):not(:focus-visible){visibility:hidden}.filter:not(:has(:checked:not(.filter-reset))) :is(.filter-reset,[type=reset]):not(:focus-visible),.filter:not(:has(:focus-visible)):has(:checked:not(.filter-reset,[type=checkbox])) :is(input,button):not(:checked,.filter-reset,[type=reset]){opacity:0;border-width:0;width:0;margin-inline:0;padding-inline:0;scale:0}.alert-soft{color:var(--alert-color,var(--color-base-content));background:var(--alert-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.alert-soft{background:color-mix(in oklab, var(--alert-color,var(--color-base-content)) 8%, var(--color-base-100))}}.alert-soft{--alert-border-color:var(--alert-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.alert-soft{--alert-border-color:color-mix(in oklab, var(--alert-color,var(--color-base-content)) 10%, var(--color-base-100))}}.alert-soft{box-shadow:none;background-image:none}}@layer daisyui{.btn:is(:disabled,[disabled],[aria-disabled=true]){pointer-events:none;color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn:is(:disabled,[disabled],[aria-disabled=true]){color:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}.btn:is(:disabled,[disabled],[aria-disabled=true]){--btn-bg:#0000;--btn-border:#0000;--btn-inset:0 0 0 0 oklch(0% 0 0/0);--btn-shadow:0 0 0 0 oklch(0% 0 0/0);background-image:none}.btn:is(:disabled,[disabled],[aria-disabled=true]):not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn:is(:disabled,[disabled],[aria-disabled=true]):not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}}.pointer-events-none{pointer-events:none}.countdown.countdown{line-height:1em}.collapse:not(td,tr,colgroup){visibility:revert-layer}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@layer daisyui.l1.l2.l3.l4{.card figure:first-child{border-start-start-radius:inherit;border-start-end-radius:inherit;border-end-end-radius:unset;border-end-start-radius:unset;overflow:hidden}.card figure:last-child{border-start-start-radius:unset;border-start-end-radius:unset;border-end-end-radius:inherit;border-end-start-radius:inherit;overflow:hidden}.card figure{justify-content:center;align-items:center;display:flex}}.absolute{position:absolute}.fixed{position:fixed}.sticky{position:sticky}.z-10{z-index:10}.col-span-2{grid-column:span 2/span 2}.m-0{margin:0}.mt-0{margin-top:0}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.alert{border-width:var(--border);border-color:var(--alert-border-color,var(--color-base-200))}:root .prose{--tw-prose-body:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:root .prose{--tw-prose-body:color-mix(in oklab, var(--color-base-content) 80%, #0000)}}:root .prose{--tw-prose-headings:var(--color-base-content);--tw-prose-lead:var(--color-base-content);--tw-prose-links:var(--color-base-content);--tw-prose-bold:var(--color-base-content);--tw-prose-counters:var(--color-base-content);--tw-prose-bullets:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:root .prose{--tw-prose-bullets:color-mix(in oklab, var(--color-base-content) 50%, #0000)}}:root .prose{--tw-prose-hr:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:root .prose{--tw-prose-hr:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}:root .prose{--tw-prose-quotes:var(--color-base-content);--tw-prose-quote-borders:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:root .prose{--tw-prose-quote-borders:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}:root .prose{--tw-prose-captions:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:root .prose{--tw-prose-captions:color-mix(in oklab, var(--color-base-content) 50%, #0000)}}:root .prose{--tw-prose-code:var(--color-base-content);--tw-prose-pre-code:var(--color-neutral-content);--tw-prose-pre-bg:var(--color-neutral);--tw-prose-th-borders:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:root .prose{--tw-prose-th-borders:color-mix(in oklab, var(--color-base-content) 50%, #0000)}}:root .prose{--tw-prose-td-borders:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:root .prose{--tw-prose-td-borders:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}:root .prose{--tw-prose-kbd:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:root .prose{--tw-prose-kbd:color-mix(in oklab, var(--color-base-content) 80%, #0000)}}:root .prose :where(code):not(pre>code){background-color:var(--color-base-200);border-radius:var(--radius-selector);border:var(--border) solid var(--color-base-300);font-weight:inherit;padding-block:.2em;padding-inline:.5em}:root .prose :where(code):not(pre>code):before,:root .prose :where(code):not(pre>code):after{display:none}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.aspect-square{aspect-ratio:1}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-\\[52px\\]{width:52px;height:52px}.h-11{height:calc(var(--spacing) * 11)}.h-auto{height:auto}.max-h-\\[min\\(66vh\\,720px\\)\\]{max-height:min(66vh,720px)}.min-h-0{min-height:0}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-7{min-height:calc(var(--spacing) * 7)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-\\[120px\\]{min-height:120px}.w-\\[min\\(148px\\,38vw\\)\\]{width:min(148px,38vw)}.w-\\[min\\(200px\\,100\\%\\)\\]{width:min(200px,100%)}.w-auto{width:auto}.w-full{width:100%}.max-w-\\[min\\(148px\\,38vw\\)\\]{max-width:min(148px,38vw)}.max-w-\\[min\\(440px\\,100\\%\\)\\]{max-width:min(440px,100%)}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-\\[min\\(240px\\,100\\%\\)\\]{min-width:min(240px,100%)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\\[1fr_auto\\]{grid-template-columns:1fr auto}.grid-cols-\\[auto_minmax\\(0\\,1fr\\)\\]{grid-template-columns:auto minmax(0,1fr)}.grid-cols-\\[minmax\\(0\\,1fr\\)_auto\\]{grid-template-columns:minmax(0,1fr) auto}.grid-rows-\\[0fr\\]{grid-template-rows:0fr}.grid-rows-\\[1fr\\]{grid-template-rows:1fr}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.content-start{align-content:flex-start}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-start{justify-items:start}.gap-0{gap:0}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-1{row-gap:var(--spacing)}.gap-y-1\\.5{row-gap:calc(var(--spacing) * 1.5)}.justify-self-center{justify-self:center}.justify-self-end{justify-self:flex-end}.justify-self-start{justify-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-box{border-radius:var(--radius-box);border-radius:var(--radius-box)}.rounded-field{border-radius:var(--radius-field);border-radius:var(--radius-field)}.rounded-full{border-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-base-300{border-color:var(--color-base-300)}.border-base-content,.border-base-content\\/15{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.border-base-content\\/15{border-color:color-mix(in oklab, var(--color-base-content) 15%, transparent)}}.border-base-content\\/20{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.border-base-content\\/20{border-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.border-base-content\\/25{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.border-base-content\\/25{border-color:color-mix(in oklab, var(--color-base-content) 25%, transparent)}}.border-base-content\\/30{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.border-base-content\\/30{border-color:color-mix(in oklab, var(--color-base-content) 30%, transparent)}}.border-info,.border-info\\/40{border-color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.border-info\\/40{border-color:color-mix(in oklab, var(--color-info) 40%, transparent)}}.border-primary{border-color:var(--color-primary)}.border-secondary{border-color:var(--color-secondary)}.border-success,.border-success\\/40{border-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.border-success\\/40{border-color:color-mix(in oklab, var(--color-success) 40%, transparent)}}.border-warning{border-color:var(--color-warning)}.bg-base-100{background-color:var(--color-base-100)}.bg-base-200{background-color:var(--color-base-200)}.bg-info,.bg-info\\/10{background-color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.bg-info\\/10{background-color:color-mix(in oklab, var(--color-info) 10%, transparent)}}.bg-primary,.bg-primary\\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-secondary,.bg-secondary\\/10{background-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\\/10{background-color:color-mix(in oklab, var(--color-secondary) 10%, transparent)}}.bg-success,.bg-success\\/10{background-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.bg-success\\/10{background-color:color-mix(in oklab, var(--color-success) 10%, transparent)}}.bg-warning,.bg-warning\\/10{background-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\\/10{background-color:color-mix(in oklab, var(--color-warning) 10%, transparent)}}.stroke-current{stroke:currentColor}.object-contain{object-fit:contain}.p-0{padding:0}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:var(--spacing)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-1{padding-block:var(--spacing)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-4{padding-block:calc(var(--spacing) * 4)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[0\\.65rem\\]{font-size:.65rem}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.text-base-content,.text-base-content\\/55{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\\/55{color:color-mix(in oklab, var(--color-base-content) 55%, transparent)}}.text-base-content\\/60{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\\/60{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.text-base-content\\/65{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\\/65{color:color-mix(in oklab, var(--color-base-content) 65%, transparent)}}.text-base-content\\/70{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\\/70{color:color-mix(in oklab, var(--color-base-content) 70%, transparent)}}.text-error{color:var(--color-error)}.text-info-content{color:var(--color-info-content)}.text-success{color:var(--color-success)}.text-success-content{color:var(--color-success-content)}.text-warning{color:var(--color-warning)}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.prose :where(a.btn:not(.btn-link)):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-line:none}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-info,.ring-info\\/50{--tw-ring-color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.ring-info\\/50{--tw-ring-color:color-mix(in oklab, var(--color-info) 50%, transparent)}}.ring-primary,.ring-primary\\/30{--tw-ring-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.ring-primary\\/30{--tw-ring-color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.ring-primary\\/50{--tw-ring-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.ring-primary\\/50{--tw-ring-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.ring-secondary,.ring-secondary\\/50{--tw-ring-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.ring-secondary\\/50{--tw-ring-color:color-mix(in oklab, var(--color-secondary) 50%, transparent)}}.ring-success,.ring-success\\/50{--tw-ring-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.ring-success\\/50{--tw-ring-color:color-mix(in oklab, var(--color-success) 50%, transparent)}}.ring-warning,.ring-warning\\/50{--tw-ring-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.ring-warning\\/50{--tw-ring-color:color-mix(in oklab, var(--color-warning) 50%, transparent)}}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[grid-template-rows\\,opacity\\,margin\\]{transition-property:grid-template-rows,opacity,margin;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.outline-none\\!{--tw-outline-style:none!important;outline-style:none!important}.select-all{-webkit-user-select:all;user-select:all}@media (hover:hover){.hover\\:border-base-content\\/45:hover{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.hover\\:border-base-content\\/45:hover{border-color:color-mix(in oklab, var(--color-base-content) 45%, transparent)}}.hover\\:border-primary:hover{border-color:var(--color-primary)}.hover\\:bg-base-100:hover{background-color:var(--color-base-100)}}.focus\\:outline-offset-0\\!:focus{outline-offset:0px!important}.focus\\:outline-none\\!:focus{--tw-outline-style:none!important;outline-style:none!important}.focus-visible\\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-primary:focus-visible{outline-color:var(--color-primary)}@media (prefers-reduced-motion:reduce){.motion-reduce\\:transition-none{transition-property:none}}@media (min-width:390px){.min-\\[390px\\]\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:40rem){.sm\\:col-span-2{grid-column:span 2/span 2}.sm\\:block{display:block}.sm\\:hidden{display:none}.sm\\:size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:gap-3{gap:calc(var(--spacing) * 3)}.sm\\:p-5{padding:calc(var(--spacing) * 5)}.sm\\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\\:px-5{padding-inline:calc(var(--spacing) * 5)}.sm\\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media (min-width:48rem){.md\\:col-span-1{grid-column:span 1/span 1}.md\\:w-\\[min\\(180px\\,100\\%\\)\\]{width:min(180px,100%)}.md\\:w-\\[min\\(200px\\,36vw\\)\\]{width:min(200px,36vw)}.md\\:w-auto{width:auto}.md\\:max-w-\\[min\\(200px\\,36vw\\)\\]{max-width:min(200px,36vw)}.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\\:grid-cols-\\[auto_minmax\\(0\\,1fr\\)\\]{grid-template-columns:auto minmax(0,1fr)}.md\\:grid-cols-\\[minmax\\(0\\,1fr\\)_auto_auto\\]{grid-template-columns:minmax(0,1fr) auto auto}.md\\:items-start{align-items:flex-start}.md\\:gap-x-2{column-gap:calc(var(--spacing) * 2)}.md\\:gap-x-5{column-gap:calc(var(--spacing) * 5)}.md\\:gap-y-1{row-gap:var(--spacing)}.md\\:justify-self-end{justify-self:flex-end}.md\\:justify-self-start{justify-self:flex-start}.md\\:text-left{text-align:left}}@media (min-width:64rem){.lg\\:col-span-4{grid-column:span 4/span 4}.lg\\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\\:grid-cols-\\[9rem_minmax\\(0\\,1fr\\)_minmax\\(8rem\\,auto\\)\\]{grid-template-columns:9rem minmax(0,1fr) minmax(8rem,auto)}.lg\\:items-start{align-items:flex-start}}.\\[\\&_svg\\]\\:block svg{display:block}.\\[\\&_svg\\]\\:h-auto svg{height:auto}.\\[\\&_svg\\]\\:w-full svg{width:100%}}:host{display:block}:host([hidden]){display:none}@keyframes dropdown{0%{opacity:0}}@keyframes rotator{89.9999%,to{--first-item-position:0 0%}90%,99.9999%{--first-item-position:0 calc(var(--items) * 100%)}to{translate:0 -100%}}@keyframes radio{0%{padding:5px}50%{padding:3px}}@keyframes toast{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@keyframes skeleton{0%{background-position:150%}to{background-position:-50%}}@keyframes progress{50%{background-position-x:-115%}}@keyframes rating{0%,40%{filter:brightness(1.05)contrast(1.05);scale:1.1}}@keyframes aura{to{--aura-angle:360deg;transform:translateZ(1px)}}@keyframes aura-glow{20%,80%{opacity:.7;filter:blur(.25rem)}50%{opacity:1;filter:blur(.75rem)}}@keyframes aura-glow-after{20%,80%{opacity:.3;filter:blur(1rem)}50%{opacity:.6;filter:blur(1.5rem)}}@keyframes menu{0%{opacity:0}}@property --tw-rotate-x{syntax:\"*\";inherits:false}@property --tw-rotate-y{syntax:\"*\";inherits:false}@property --tw-rotate-z{syntax:\"*\";inherits:false}@property --tw-skew-x{syntax:\"*\";inherits:false}@property --tw-skew-y{syntax:\"*\";inherits:false}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-tracking{syntax:\"*\";inherits:false}@property --tw-ordinal{syntax:\"*\";inherits:false}@property --tw-slashed-zero{syntax:\"*\";inherits:false}@property --tw-numeric-figure{syntax:\"*\";inherits:false}@property --tw-numeric-spacing{syntax:\"*\";inherits:false}@property --tw-numeric-fraction{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-ease{syntax:\"*\";inherits:false}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}";
|
|
251
|
+
declare const paymentMethods: readonly PaymentMethodOption[];
|
|
252
|
+
declare function parseOptionalInteger(value: string | null | undefined, options?: ParseOpenReceiveOptionalIntegerOptions): number | undefined;
|
|
253
|
+
declare function parseBooleanAttribute(value: string | null | undefined): boolean | undefined;
|
|
254
|
+
declare function parseResolvedTheme(value: string | null | undefined): ResolvedTheme | undefined;
|
|
255
|
+
declare function parseThemePreference(value: string | null | undefined): ThemePreference | undefined;
|
|
256
|
+
declare function parsePaymentMethod(value: string | null): PaymentMethod | null;
|
|
257
|
+
|
|
258
|
+
declare function createTransientFeedbackController<T>(options: TransientFeedbackOptions<T>): TransientFeedbackController<T>;
|
|
259
|
+
declare function createTickingValueController(options: TickingValueOptions): TickingValueController;
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* @param options.now Unix timestamp in **seconds** ({@link UnixSeconds}); the
|
|
263
|
+
* provider countdown is measured against it. Milliseconds (`Date.now()`)
|
|
264
|
+
* throw rather than pinning every deposit window at zero.
|
|
265
|
+
*/
|
|
266
|
+
declare function createSwapDisplayModel(invoice: CheckoutInvoiceSnapshot, options?: {
|
|
267
|
+
readonly now?: UnixSeconds;
|
|
268
|
+
}): SwapDisplayModel | undefined;
|
|
269
|
+
/**
|
|
270
|
+
* Poll snapshots omit the locally staged refund address/nonce. Overlay them so
|
|
271
|
+
* Review → Confirm is not wiped by the next `/swaps/status` tick.
|
|
272
|
+
*/
|
|
273
|
+
declare function overlaySwapRefundStaging(invoice: CheckoutInvoiceSnapshot, local: CheckoutInvoiceSnapshot | undefined | null): CheckoutInvoiceSnapshot;
|
|
274
|
+
declare function swapAssetMatchesRoute(routeKey: string, payInAsset: string | undefined): boolean;
|
|
275
|
+
|
|
276
|
+
/** Deposit networks that have a public block explorer in OpenReceive UI. */
|
|
277
|
+
type ExplorerNetwork = "ETH" | "SOL" | "TRON";
|
|
278
|
+
/**
|
|
279
|
+
* Resolve the chain network from a `pay_in_asset` like `USDT_ETH` / `SOL_SOL`.
|
|
280
|
+
* Returns undefined for unknown or Lightning-only values.
|
|
281
|
+
*/
|
|
282
|
+
declare function getExplorerNetwork(payInAsset: string | undefined): ExplorerNetwork | undefined;
|
|
283
|
+
/**
|
|
284
|
+
* Public block-explorer URL for an on-chain address or transaction.
|
|
285
|
+
* Lightning identifiers are intentionally unsupported — use
|
|
286
|
+
* {@link createLightningInvoiceDecodeUrl} for bolt11.
|
|
287
|
+
*/
|
|
288
|
+
declare function createBlockExplorerUrl(options: {
|
|
289
|
+
readonly payInAsset?: string;
|
|
290
|
+
readonly network?: ExplorerNetwork | string;
|
|
291
|
+
readonly kind: "address" | "tx";
|
|
292
|
+
readonly value: string;
|
|
293
|
+
}): string | undefined;
|
|
294
|
+
/**
|
|
295
|
+
* Link to an external bolt11 decoder, as `{decodeLinkUrl}?invoice={bolt11}`.
|
|
296
|
+
* Strips an optional `lightning:` URI prefix.
|
|
297
|
+
*
|
|
298
|
+
* Off unless the host names a decoder: a bolt11 carries the amount, payee and
|
|
299
|
+
* description, and fetching it hands the payer's IP to that third party too, so
|
|
300
|
+
* OpenReceive never picks one on the host's behalf. Omit `decodeLinkUrl` and no
|
|
301
|
+
* link is rendered.
|
|
302
|
+
*/
|
|
303
|
+
declare function createLightningInvoiceDecodeUrl(invoice: string, decodeLinkUrl?: string): string | undefined;
|
|
304
|
+
/** What a detail row's value IS, which decides the link it can carry. */
|
|
305
|
+
type DetailLinkKind = "invoice" | "address" | "tx";
|
|
306
|
+
/**
|
|
307
|
+
* External link metadata for a swap/transaction detail row (explorer or decode).
|
|
308
|
+
*
|
|
309
|
+
* `kind` is explicit, never inferred from the row's display label: dispatching
|
|
310
|
+
* on English strings meant renaming a label — or localizing one — silently
|
|
311
|
+
* killed its explorer or decode link, with nothing to notice.
|
|
312
|
+
*/
|
|
313
|
+
declare function createDetailExternalLink(options: {
|
|
314
|
+
readonly kind: DetailLinkKind;
|
|
315
|
+
readonly value: string;
|
|
316
|
+
readonly payInAsset?: string;
|
|
317
|
+
/** Host-configured bolt11 decoder. Omitted, no decode link is offered. */
|
|
318
|
+
readonly decodeLinkUrl?: string;
|
|
319
|
+
}): {
|
|
320
|
+
readonly href: string;
|
|
321
|
+
readonly hrefLabel: string;
|
|
322
|
+
} | undefined;
|
|
323
|
+
|
|
324
|
+
/**
|
|
325
|
+
* Build display rows for settled checkout / swap state from public OpenReceive
|
|
326
|
+
* fields only. Omits undefined values; never surfaces NWC or send-payment secrets.
|
|
327
|
+
*/
|
|
328
|
+
declare function createTransactionDetails(input: TransactionDetailsInput): TransactionDetailRow[];
|
|
329
|
+
declare function createTransactionDetailsFromState(state: Pick<CheckoutState, "reference" | "checkout_id" | "invoice_id" | "invoice" | "rail" | "payment_hash" | "amount_msats" | "fiat_quote" | "transaction_state" | "workflow_state" | "expires_at" | "settled_at" | "swap">): TransactionDetailRow[];
|
|
330
|
+
/**
|
|
331
|
+
* Everything a transaction-details panel accepts: a live checkout state, the
|
|
332
|
+
* flat detail input, pre-built rows, or nothing.
|
|
333
|
+
*
|
|
334
|
+
* React's `<TransactionDetails>` and the elements HTML renderer used to declare
|
|
335
|
+
* this union and its resolver separately, byte-identically. Only the RENDERING
|
|
336
|
+
* legitimately differs between them (React.createElement vs an HTML string);
|
|
337
|
+
* which rows a source yields is one rule and lives here.
|
|
338
|
+
*/
|
|
339
|
+
type TransactionDetailsSource = CheckoutState | TransactionDetailsInput | readonly TransactionDetailRow[] | null | undefined;
|
|
340
|
+
declare function resolveTransactionDetailRows(source: TransactionDetailsSource): TransactionDetailRow[];
|
|
341
|
+
interface PaymentDataEntry {
|
|
342
|
+
readonly label: string;
|
|
343
|
+
readonly value: string;
|
|
344
|
+
}
|
|
345
|
+
/** Structural subset of {@link CheckoutState} / display data a payment-data panel needs. */
|
|
346
|
+
interface PaymentDataSource {
|
|
347
|
+
readonly reference?: string;
|
|
348
|
+
readonly checkout_id?: string;
|
|
349
|
+
readonly invoice_id?: string;
|
|
350
|
+
readonly invoice?: string;
|
|
351
|
+
readonly rail?: "lightning" | "swap" | "checkout_lock";
|
|
352
|
+
readonly payment_hash?: string;
|
|
353
|
+
readonly amount_msats?: number;
|
|
354
|
+
readonly fiat_quote?: CheckoutInvoiceSnapshot["fiat_quote"];
|
|
355
|
+
readonly transaction_state?: string;
|
|
356
|
+
readonly workflow_state?: string;
|
|
357
|
+
readonly settled_at?: number;
|
|
358
|
+
readonly expires_at?: number;
|
|
359
|
+
readonly swap?: CheckoutInvoiceSwapSnapshot;
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Everything the client knows about a payment, as ordered label/value rows for the
|
|
363
|
+
* post-settlement "payment data" panel. Undefined fields are skipped.
|
|
364
|
+
*/
|
|
365
|
+
declare function createPaymentDataEntries(source: PaymentDataSource): readonly PaymentDataEntry[];
|
|
366
|
+
|
|
367
|
+
/**
|
|
368
|
+
* Choose the invoice the checkout UI should treat as primary.
|
|
369
|
+
*
|
|
370
|
+
* Prefers the active payable invoice; otherwise a bolt11-bearing invoice (Lightning),
|
|
371
|
+
* preferring one that has settled. After a swap settles alongside a Lightning invoice,
|
|
372
|
+
* the newest entry is often the settled swap shadow (rail "swap", no public bolt11) —
|
|
373
|
+
* fall back to the payable Lightning invoice for QR/copy display.
|
|
374
|
+
*
|
|
375
|
+
* When Lightning was never minted (deferred create + swap-only), return the swap invoice
|
|
376
|
+
* so settlement still drives paid/`onSettled` UI even though bolt11 is omitted.
|
|
377
|
+
*
|
|
378
|
+
* `checkout_lock` rails are deferred placeholders and are skipped. Returns `undefined`
|
|
379
|
+
* only when the checkout still has only a checkout_lock (or no invoices).
|
|
380
|
+
*/
|
|
381
|
+
declare function selectCheckoutDisplayInvoice(snapshot: CheckoutSnapshot): CheckoutInvoiceSnapshot | undefined;
|
|
382
|
+
/**
|
|
383
|
+
* True when the given Lightning invoice has more than {@link OPENRECEIVE_LIGHTNING_REUSE_BUFFER_SECONDS}
|
|
384
|
+
* seconds remaining. Pass an optional `now` (Unix seconds) for deterministic tests; defaults to the
|
|
385
|
+
* current clock.
|
|
386
|
+
*/
|
|
387
|
+
declare function isReusableLightningInvoice(expiresAt: number, now?: UnixSeconds): boolean;
|
|
388
|
+
declare function createCheckoutState(snapshot: CheckoutSnapshot, options?: CreateCheckoutStateOptions): CheckoutState;
|
|
389
|
+
/**
|
|
390
|
+
* Wrap ONE payment attempt as a whole checkout snapshot.
|
|
391
|
+
*
|
|
392
|
+
* The custom element's source of truth is HTML attributes, not a wire payload:
|
|
393
|
+
* declarative and SSR usage give it one attempt's fields and nothing else. This
|
|
394
|
+
* is the only place that invents the surrounding checkout, and it stays
|
|
395
|
+
* conservative — checkout_id and reference fall back to the invoice id, and the
|
|
396
|
+
* checkout counts as paid exactly when the attempt does.
|
|
397
|
+
*
|
|
398
|
+
* It takes a {@link CheckoutInvoiceSnapshot}, the canonical sub-part, rather
|
|
399
|
+
* than the flattened CheckoutDisplayData shape it used to: an attempt read off
|
|
400
|
+
* attributes is still an attempt.
|
|
401
|
+
*/
|
|
402
|
+
declare function createCheckoutSnapshotFromInvoice(attempt: CheckoutInvoiceSnapshot, identity?: {
|
|
403
|
+
readonly checkout_id?: string;
|
|
404
|
+
readonly reference?: string;
|
|
405
|
+
}): CheckoutSnapshot;
|
|
406
|
+
declare function createCheckoutStatusModel(source?: CheckoutState | CheckoutStatusModelInput, options?: {
|
|
407
|
+
readonly now?: UnixSeconds;
|
|
408
|
+
}): CheckoutStatusModel;
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* Fold a started attempt (swap deposit or minted bolt11) into a snapshot: the
|
|
412
|
+
* attempt becomes the active invoice, its predecessor entry and any
|
|
413
|
+
* checkout_lock placeholder drop out, and polling re-keys onto it.
|
|
414
|
+
*/
|
|
415
|
+
declare function mergeAttemptIntoSnapshot(invoice: CheckoutInvoiceSnapshot, base: CheckoutSnapshot): CheckoutSnapshot;
|
|
416
|
+
/**
|
|
417
|
+
* {@link mergeAttemptIntoSnapshot} with a minimal fallback snapshot
|
|
418
|
+
* for hosts that started an attempt before any checkout snapshot existed.
|
|
419
|
+
*/
|
|
420
|
+
declare function mergeAttemptIntoCheckout(invoice: CheckoutInvoiceSnapshot, previous: CheckoutSnapshot | undefined, reference: string): CheckoutSnapshot;
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* The flat prop surface of an OpenReceive checkout component. Every framework
|
|
424
|
+
* package derives its props from this — directly (React, Vue) or by declaring
|
|
425
|
+
* the same names because its prop syntax cannot be generated from a type
|
|
426
|
+
* (Svelte, Angular). Framework-only additions (React's component/class-name
|
|
427
|
+
* slots, the element wrappers' `options` escape hatch) sit beside it.
|
|
428
|
+
*/
|
|
429
|
+
interface CheckoutComponentProps {
|
|
430
|
+
/** Snapshot mode: render this checkout directly. */
|
|
431
|
+
readonly checkout?: CheckoutSnapshot;
|
|
432
|
+
/** Create mode: the component creates the checkout for this reference, then renders and polls. */
|
|
433
|
+
readonly reference?: string;
|
|
434
|
+
/**
|
|
435
|
+
* Base path the shipped router is mounted at. Default `/openreceive`. The ONLY
|
|
436
|
+
* URL input: create, prepare, payment-check and the four swap routes are all
|
|
437
|
+
* derived from it (see `checkoutRoutes` in ./routes.ts).
|
|
438
|
+
*/
|
|
439
|
+
readonly prefix?: string;
|
|
440
|
+
readonly paymentWizard?: boolean;
|
|
441
|
+
/**
|
|
442
|
+
* Base URL of an external bolt11 decoder. Omitted (the default), no "Decode" link is
|
|
443
|
+
* rendered and the invoice is never sent to a third party.
|
|
444
|
+
*/
|
|
445
|
+
readonly decodeLinkUrl?: string;
|
|
446
|
+
/** Default true: the checkout owns `data-theme` and renders the package theme toggle. */
|
|
447
|
+
readonly themeToggle?: boolean;
|
|
448
|
+
readonly defaultTheme?: ThemePreference;
|
|
449
|
+
readonly storageKey?: string;
|
|
450
|
+
/** Create mode only: metadata sent with the create request. */
|
|
451
|
+
readonly metadata?: Record<string, unknown>;
|
|
452
|
+
/**
|
|
453
|
+
* Create mode only. Opt into History API URL sync to `{resumePathPrefix}/{reference}`
|
|
454
|
+
* (default `/checkout/:id`). Off by default — many hosts own routing themselves — and
|
|
455
|
+
* skipped when `routeReference` is set. This controls URL mutation only; order-resume
|
|
456
|
+
* data remains a host concern.
|
|
457
|
+
*/
|
|
458
|
+
readonly syncUrl?: boolean;
|
|
459
|
+
/** Create mode only. History API path prefix when `syncUrl` is set. Default `/checkout`. */
|
|
460
|
+
readonly resumePathPrefix?: string;
|
|
461
|
+
/**
|
|
462
|
+
* Create mode only. Order id from the app router (e.g. Next.js). When set, the component
|
|
463
|
+
* does not push/replace the URL itself.
|
|
464
|
+
*/
|
|
465
|
+
readonly routeReference?: string;
|
|
466
|
+
}
|
|
467
|
+
/** Which props only do something in create mode (no `checkout` snapshot). */
|
|
468
|
+
declare const CREATE_MODE_ONLY_PROPS: readonly ["metadata", "syncUrl", "resumePathPrefix", "routeReference"];
|
|
469
|
+
type CreateModeOnlyProp = (typeof CREATE_MODE_ONLY_PROPS)[number];
|
|
470
|
+
/**
|
|
471
|
+
* What the check reads: the two mode props plus the create-only ones, derived
|
|
472
|
+
* from the list above so the names exist once.
|
|
473
|
+
*/
|
|
474
|
+
interface CheckoutPropsValidation extends Pick<CheckoutComponentProps, CreateModeOnlyProp | "reference"> {
|
|
475
|
+
readonly framework: string;
|
|
476
|
+
/** `null` as well as `undefined`: Angular binds an absent snapshot input as null. */
|
|
477
|
+
readonly checkout?: CheckoutSnapshot | null;
|
|
478
|
+
readonly warn?: (message: string) => void;
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Boundary check for the checkout components: without it the missing-mode failure surfaces
|
|
482
|
+
* as a `TypeError` thrown from inside a computed/reactive statement (in Angular, on every
|
|
483
|
+
* change-detection pass) rather than as one clear error where the props are read.
|
|
484
|
+
*/
|
|
485
|
+
declare function validateCheckoutProps(props: CheckoutPropsValidation): void;
|
|
486
|
+
|
|
487
|
+
/**
|
|
488
|
+
* The swap attempt the wizard is showing. It stays host state — the element's
|
|
489
|
+
* breadcrumb, refund draft and deposit panel read it, and React's wizard keeps
|
|
490
|
+
* it in `useState` — so the session reaches it through accessors instead of
|
|
491
|
+
* owning a second copy that could disagree.
|
|
492
|
+
*/
|
|
493
|
+
interface SwapSelection {
|
|
494
|
+
started(): CheckoutInvoiceSnapshot | undefined;
|
|
495
|
+
setStarted(invoice: CheckoutInvoiceSnapshot): void;
|
|
496
|
+
dismissedInvoiceId(): string | null;
|
|
497
|
+
setDismissedInvoiceId(invoiceId: string | null): void;
|
|
498
|
+
setSelectedAsset(payInAsset: string | null): void;
|
|
499
|
+
}
|
|
500
|
+
interface CheckoutSessionOptions {
|
|
501
|
+
/**
|
|
502
|
+
* The snapshot the host is rendering right now, read at call time — the
|
|
503
|
+
* element's changes under it on every poll.
|
|
504
|
+
*/
|
|
505
|
+
snapshot(): CheckoutSnapshot | undefined;
|
|
506
|
+
/** The order being paid, read at call time (the element's is an attribute). */
|
|
507
|
+
reference(): string | undefined;
|
|
508
|
+
/**
|
|
509
|
+
* Mint a Lightning invoice for this reference (POST `${prefix}/checkouts`).
|
|
510
|
+
* The host closes over its own prefix, metadata and fetch. Answer `undefined`
|
|
511
|
+
* to say "this host cannot mint" — React's payment wizard is such a host: it
|
|
512
|
+
* asks its parent for Lightning through `onRequestLightning` instead.
|
|
513
|
+
*/
|
|
514
|
+
requestCheckout?(reference: string): Promise<CheckoutSnapshot> | undefined;
|
|
515
|
+
/** Publish a snapshot that now carries the Lightning attempt. */
|
|
516
|
+
onSnapshot?(snapshot: CheckoutSnapshot): void;
|
|
517
|
+
/**
|
|
518
|
+
* The mount prefix swap routes are derived from, or `undefined` when this
|
|
519
|
+
* host has no swap backend (a standalone wizard with no prefix).
|
|
520
|
+
*/
|
|
521
|
+
swapPrefix?(): string | undefined;
|
|
522
|
+
/** Read at call time so a host that swaps `globalThis.fetch` is honoured. */
|
|
523
|
+
fetch?(): typeof globalThis.fetch | undefined;
|
|
524
|
+
swapSelection?: SwapSelection;
|
|
525
|
+
/**
|
|
526
|
+
* Publish a freshly started swap attempt. The two hosts fold it into their
|
|
527
|
+
* snapshot differently (the element re-keys its poll controller onto the
|
|
528
|
+
* merged snapshot; React hands the attempt to whichever component owns the
|
|
529
|
+
* snapshot), so the merge stays on the host side of this callback.
|
|
530
|
+
*/
|
|
531
|
+
onSwapStarted?(invoice: CheckoutInvoiceSnapshot): void;
|
|
532
|
+
logger?: BrowserLoggerOption;
|
|
533
|
+
/** The host's error surface: a DOM `openreceive:error` event, or `onError`. */
|
|
534
|
+
onError(error: unknown): void;
|
|
535
|
+
/** Session state changed — re-render. */
|
|
536
|
+
onChange(): void;
|
|
537
|
+
}
|
|
538
|
+
interface CheckoutSession {
|
|
539
|
+
/** Lightning mint failure, shown inline in the wizard by the element. */
|
|
540
|
+
readonly wizardError: string | undefined;
|
|
541
|
+
/** Swap-start failure, shown inline in the deposit slot with a retry button. */
|
|
542
|
+
readonly swapStartError: string | undefined;
|
|
543
|
+
/** Create mode: the Lightning QR is deferred until the payer asks for it. */
|
|
544
|
+
readonly lightningRequested: boolean;
|
|
545
|
+
/** True while a mint is in flight — the guard, and the spinner. */
|
|
546
|
+
readonly mintingLightning: boolean;
|
|
547
|
+
/** In-flight swap create; a second click must not mint a colliding attempt. */
|
|
548
|
+
readonly startingSwapAsset: string | null;
|
|
549
|
+
/**
|
|
550
|
+
* Quotes observed for each pay-in asset, keyed by `pay_in_asset`. An entry
|
|
551
|
+
* with `available: false` is why `startSwap` stopped before starting, and
|
|
552
|
+
* carries the accepted range the host renders in its unavailable panel.
|
|
553
|
+
*/
|
|
554
|
+
readonly swapQuotes: Readonly<Record<string, CheckoutPaymentMethod>>;
|
|
555
|
+
ensureLightning(): Promise<void>;
|
|
556
|
+
/**
|
|
557
|
+
* Quote the pay-in asset, then start the swap when the quote confirms the
|
|
558
|
+
* amount is in range. Both steps live HERE so the element and React behave
|
|
559
|
+
* identically: an out-of-range amount is an unavailable quote in
|
|
560
|
+
* {@link swapQuotes}, not a generic swap-start error.
|
|
561
|
+
*/
|
|
562
|
+
startSwap(payInAsset: string): Promise<void>;
|
|
563
|
+
/** A new order is being prepared: Lightning is deferred again. */
|
|
564
|
+
resetLightningRequest(): void;
|
|
565
|
+
/** The payer left the focused swap flow, so the failure they left goes too. */
|
|
566
|
+
clearSwapStartError(): void;
|
|
567
|
+
}
|
|
568
|
+
declare function createCheckoutSession(options: CheckoutSessionOptions): CheckoutSession;
|
|
569
|
+
|
|
570
|
+
/**
|
|
571
|
+
* Attributes for `<openreceive-checkout>` in each of its three modes:
|
|
572
|
+
*
|
|
573
|
+
* - **create** (`snapshot === null`): routing + theming + the create-time options.
|
|
574
|
+
* The element owns the whole lifecycle from `reference` (+ optional `prefix`).
|
|
575
|
+
* - **deferred** (a snapshot with no payer bolt11 — amount locked, method grid
|
|
576
|
+
* showing): the same set, because the element still has a Lightning mint ahead of
|
|
577
|
+
* it, plus the locked amount.
|
|
578
|
+
* - **snapshot** (a snapshot carrying a bolt11): the full invoice display set. The
|
|
579
|
+
* attempt already exists, so create-time options no longer apply.
|
|
580
|
+
*/
|
|
581
|
+
declare function createCheckoutElementAttributes(snapshot: CheckoutSnapshot | null, options?: CheckoutElementAttributeOptions): CheckoutElementAttributes;
|
|
582
|
+
declare function createThemeToggleElementAttributes(options?: ThemeToggleElementAttributeOptions): ThemeToggleElementAttributes;
|
|
583
|
+
declare function createCheckoutElementListeners(handlers?: CheckoutElementEventHandlers): CheckoutElementListeners;
|
|
584
|
+
declare function createCheckoutShellModel(snapshot: CheckoutSnapshot | null, options?: CheckoutShellOptions): CheckoutShellModel;
|
|
585
|
+
declare function applyCheckoutElementAttributes(target: ThemeAttributeTarget, attributes: CheckoutElementAttributes): void;
|
|
586
|
+
declare function createThemeToggleElement(options?: CreateOpenReceiveThemeToggleElementOptions): HTMLElement;
|
|
587
|
+
declare function createCheckoutShell(snapshot: CheckoutSnapshot, options?: CreateCheckoutShellOptions): CheckoutShellElements;
|
|
588
|
+
|
|
589
|
+
/**
|
|
590
|
+
* What every swap call needs: the fetch to use, and the mount `prefix` its
|
|
591
|
+
* route is derived from (see {@link checkoutRoutes}). `prefix` is the only
|
|
592
|
+
* URL input — no call in this module takes a route of its own.
|
|
593
|
+
*/
|
|
594
|
+
interface SwapRequestOptions {
|
|
595
|
+
readonly fetch: typeof globalThis.fetch;
|
|
596
|
+
readonly prefix: string;
|
|
597
|
+
readonly logger?: BrowserLoggerOption;
|
|
598
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
599
|
+
}
|
|
600
|
+
/**
|
|
601
|
+
* POST JSON through the mounted swap route set.
|
|
602
|
+
*
|
|
603
|
+
* `action` selects the route client-side and is never sent: the shipped schemas
|
|
604
|
+
* are `additionalProperties: false`, so an extra key is a 400. Only the actions
|
|
605
|
+
* listed here are routed — an unrecognized one throws rather than silently
|
|
606
|
+
* posting to `${prefix}/payments/check`. Swap starts go through
|
|
607
|
+
* `startSwapRequest`, which owns the /swaps route and its audit events.
|
|
608
|
+
*/
|
|
609
|
+
declare function postJson(options: SwapRequestOptions & {
|
|
610
|
+
readonly body: Record<string, unknown>;
|
|
611
|
+
}): Promise<unknown>;
|
|
612
|
+
declare function normalizeSwapStartInvoice(body: unknown): CheckoutInvoiceSnapshot;
|
|
613
|
+
/**
|
|
614
|
+
* Start a swap on the mounted /swaps route. This is the only swap-start path,
|
|
615
|
+
* so the swap.start.* audit events are emitted here — routing it through
|
|
616
|
+
* postJson would log a start while posting somewhere else.
|
|
617
|
+
*/
|
|
618
|
+
declare function startSwapRequest(options: SwapRequestOptions & {
|
|
619
|
+
readonly reference: string;
|
|
620
|
+
readonly payInAsset: string;
|
|
621
|
+
}): Promise<CheckoutInvoiceSnapshot>;
|
|
622
|
+
/**
|
|
623
|
+
* Review-or-confirm a swap refund for one attempt: locates the attempt's
|
|
624
|
+
* payment hash among the known invoices, posts the refund action, and returns
|
|
625
|
+
* the normalized swap invoice (with the staged refund address on review).
|
|
626
|
+
*/
|
|
627
|
+
declare function requestSwapRefund(options: SwapRequestOptions & {
|
|
628
|
+
readonly reference?: string;
|
|
629
|
+
readonly invoices: readonly (CheckoutInvoiceSnapshot | null | undefined)[];
|
|
630
|
+
readonly attemptId: string;
|
|
631
|
+
readonly refundAddress: string;
|
|
632
|
+
readonly confirm: boolean;
|
|
633
|
+
}): Promise<CheckoutInvoiceSnapshot>;
|
|
634
|
+
|
|
635
|
+
declare function readThemePreference(options?: ReadThemePreferenceOptions): ThemePreference;
|
|
636
|
+
declare function writeThemePreference(theme: ThemePreference, options?: ThemeStorageOptions): void;
|
|
637
|
+
declare function createThemeModel(theme: ThemePreference, options?: ThemeModelOptions): ThemeModel;
|
|
638
|
+
declare function createStoredThemeModel(options?: StoredThemeModelOptions): ThemeModel;
|
|
639
|
+
declare function syncStoredThemeControls(targets: ThemeControlTargets, options?: StoredThemeModelOptions): ThemeModel;
|
|
640
|
+
declare function toggleStoredThemeControls(targets: ThemeControlTargets, options?: StoredThemeModelOptions): ThemeModel;
|
|
641
|
+
|
|
642
|
+
declare function getWizardEmptyMessage(): string;
|
|
643
|
+
declare function getRouteNetworkLabel(routeId: string): string;
|
|
644
|
+
declare function createWizardRouteAssetDisplays(assets: readonly AssetIndexEntry[], options?: {
|
|
645
|
+
readonly selectedRoute?: string | null;
|
|
646
|
+
}): readonly WizardRouteAssetDisplay[];
|
|
647
|
+
declare function createWizardRouteDisplays(routes: readonly PaymentWizardRoute[], options?: {
|
|
648
|
+
readonly providerPreviewLimit?: number;
|
|
649
|
+
}): readonly WizardRouteDisplay[];
|
|
650
|
+
declare function getPaymentMethodIcon(method: PaymentMethod): string;
|
|
651
|
+
/** Icon for a swap network label (Tron → trx, Solana → sol, Ethereum → eth). */
|
|
652
|
+
declare function getNetworkIcon(networkLabel: string): string;
|
|
653
|
+
/**
|
|
654
|
+
* Icon for a swap pay-in option card. Always the token/coin mark (USDT, USDC, SOL, …).
|
|
655
|
+
* Network marks (Tron/Solana/Ethereum) belong only in the network reveal via
|
|
656
|
+
* {@link getNetworkIcon}.
|
|
657
|
+
*/
|
|
658
|
+
declare function getSwapOptionIcon(option: {
|
|
659
|
+
readonly label: string;
|
|
660
|
+
}): string;
|
|
661
|
+
interface SwapMethodGroup<T extends {
|
|
662
|
+
readonly label: string;
|
|
663
|
+
}> {
|
|
664
|
+
readonly label: string;
|
|
665
|
+
readonly options: readonly T[];
|
|
666
|
+
}
|
|
667
|
+
type MethodGridEntry<T extends {
|
|
668
|
+
readonly label: string;
|
|
669
|
+
}> = {
|
|
670
|
+
readonly kind: "method";
|
|
671
|
+
readonly method: PaymentMethodOption;
|
|
672
|
+
} | {
|
|
673
|
+
readonly kind: "swap";
|
|
674
|
+
readonly group: SwapMethodGroup<T>;
|
|
675
|
+
};
|
|
676
|
+
/**
|
|
677
|
+
* Interleave payment methods with grouped swap coins in the preferred grid order.
|
|
678
|
+
* When no swap options are present yet, returns the payment methods only.
|
|
679
|
+
*/
|
|
680
|
+
declare function buildMethodGridEntries<T extends {
|
|
681
|
+
readonly label: string;
|
|
682
|
+
}>(paymentMethods: readonly PaymentMethodOption[], swapOptions: readonly T[]): readonly MethodGridEntry<T>[];
|
|
683
|
+
type PaymentAccentId = "bitcoin" | "usdt" | "usdc" | "sol" | "eth" | "default";
|
|
684
|
+
declare function swapPickerKey(label: string): string;
|
|
685
|
+
declare function parseMethodPickerKey(key: string): {
|
|
686
|
+
readonly kind: "method";
|
|
687
|
+
readonly methodId: string;
|
|
688
|
+
} | null;
|
|
689
|
+
declare function paymentAccentId(labelOrMethodId: string): PaymentAccentId;
|
|
690
|
+
declare function assetButtonClasses(options: {
|
|
691
|
+
readonly accent: PaymentAccentId;
|
|
692
|
+
readonly selected: boolean;
|
|
693
|
+
readonly disabled?: boolean;
|
|
694
|
+
}): string;
|
|
695
|
+
declare function networkButtonClasses(options: {
|
|
696
|
+
readonly accent: PaymentAccentId;
|
|
697
|
+
readonly selected: boolean;
|
|
698
|
+
readonly disabled?: boolean;
|
|
699
|
+
}): string;
|
|
700
|
+
declare function networkMobileRevealClasses(accent: PaymentAccentId): string;
|
|
701
|
+
declare function networkCheckClasses(accent: PaymentAccentId): string;
|
|
702
|
+
declare function networkSummaryIconClasses(accent: PaymentAccentId): string;
|
|
703
|
+
declare function formatNetworkSummary(assetLabel: string, networkLabel: string): string;
|
|
704
|
+
declare function formatChooseNetworkHeading(assetLabel: string): string;
|
|
705
|
+
/**
|
|
706
|
+
* When switching between multi-network coins, reuse the prior network label if the
|
|
707
|
+
* newly selected coin supports it. Otherwise clear that coin's network selection.
|
|
708
|
+
*/
|
|
709
|
+
declare function resolvePreservedNetworkSelection<T extends {
|
|
710
|
+
readonly pay_in_asset: string;
|
|
711
|
+
readonly network_label: string;
|
|
712
|
+
readonly available?: boolean;
|
|
713
|
+
}>(options: {
|
|
714
|
+
readonly previousGroup: {
|
|
715
|
+
readonly label: string;
|
|
716
|
+
readonly options: readonly T[];
|
|
717
|
+
} | undefined;
|
|
718
|
+
readonly nextGroup: {
|
|
719
|
+
readonly label: string;
|
|
720
|
+
readonly options: readonly T[];
|
|
721
|
+
};
|
|
722
|
+
readonly selectedNetworks: Readonly<Record<string, string>>;
|
|
723
|
+
}): string | undefined;
|
|
724
|
+
/** The swap group a compact-selector picker key points at, when it is a swap key. */
|
|
725
|
+
declare function findSwapGridGroup<T extends {
|
|
726
|
+
readonly label: string;
|
|
727
|
+
}>(entries: readonly MethodGridEntry<T>[], pickerKey: string | null | undefined): SwapMethodGroup<T> | undefined;
|
|
728
|
+
/**
|
|
729
|
+
* Per-coin network selection after a picker tile is selected: keeps the coin's
|
|
730
|
+
* own prior pick when still available, otherwise carries the previously
|
|
731
|
+
* selected coin's network over when the new coin supports it (see
|
|
732
|
+
* {@link resolvePreservedNetworkSelection}), otherwise clears the
|
|
733
|
+
* coin's entry. Returns the map unchanged for non-swap keys and single-network
|
|
734
|
+
* groups.
|
|
735
|
+
*/
|
|
736
|
+
declare function updateSelectedSwapNetworks<T extends {
|
|
737
|
+
readonly label: string;
|
|
738
|
+
readonly pay_in_asset: string;
|
|
739
|
+
readonly network_label: string;
|
|
740
|
+
readonly available?: boolean;
|
|
741
|
+
}>(options: {
|
|
742
|
+
readonly entries: readonly MethodGridEntry<T>[];
|
|
743
|
+
readonly nextKey: string;
|
|
744
|
+
readonly previousKey: string | null;
|
|
745
|
+
readonly selectedNetworks: Readonly<Record<string, string>>;
|
|
746
|
+
}): Record<string, string>;
|
|
747
|
+
/** Invoice-side amount context for fiat swap-limit notes. */
|
|
748
|
+
interface SwapLimitContext {
|
|
749
|
+
readonly amount_msats: number;
|
|
750
|
+
readonly fiat?: {
|
|
751
|
+
readonly currency: string;
|
|
752
|
+
readonly value: string;
|
|
753
|
+
};
|
|
754
|
+
}
|
|
755
|
+
/**
|
|
756
|
+
* The generated DOM ids for one network group's disclosure panel and its
|
|
757
|
+
* heading. ONE helper so `aria-controls` and `aria-labelledby` cannot disagree
|
|
758
|
+
* — between the two renderers, or between the two ids inside one of them (the
|
|
759
|
+
* element used to sanitize the panel id and not the heading id; React
|
|
760
|
+
* sanitized neither).
|
|
761
|
+
*/
|
|
762
|
+
declare function wizardNetworkGroupIds(groupKey: string): {
|
|
763
|
+
readonly panelId: string;
|
|
764
|
+
readonly headingId: string;
|
|
765
|
+
};
|
|
766
|
+
/**
|
|
767
|
+
* The out-of-range swap panel, as data. Both renderers build the same panel
|
|
768
|
+
* from this: the element writes HTML, React writes elements, and neither one
|
|
769
|
+
* owns the copy or the range arithmetic.
|
|
770
|
+
*/
|
|
771
|
+
interface SwapUnavailableModel {
|
|
772
|
+
readonly title: string;
|
|
773
|
+
readonly detail: string;
|
|
774
|
+
/** Accepted pay-in range, when the provider reported limits. */
|
|
775
|
+
readonly range?: string;
|
|
776
|
+
readonly hint: string;
|
|
777
|
+
}
|
|
778
|
+
declare function createSwapUnavailableModel(option: Pick<CheckoutPaymentMethod, "label" | "available" | "unavailable_reason" | "unavailable_message" | "minimum_invoice_amount_msats" | "maximum_invoice_amount_msats" | "minimum_pay_amount" | "maximum_pay_amount">, checkout: SwapLimitContext | undefined): SwapUnavailableModel;
|
|
779
|
+
/**
|
|
780
|
+
* Short reason to show for an out-of-range swap asset. Prefers a fiat figure
|
|
781
|
+
* ("Minimum amount $10.00") converted from the invoice-side limit using the
|
|
782
|
+
* checkout's own rate, falling back to the pay-in asset's own units
|
|
783
|
+
* ("Minimum 5 USDT") when the provider only reports pay-side limits, then to
|
|
784
|
+
* the provider's generic message.
|
|
785
|
+
*/
|
|
786
|
+
declare function swapOptionLimitMessage(option: Pick<CheckoutPaymentMethod, "label" | "available" | "unavailable_reason" | "unavailable_message" | "minimum_invoice_amount_msats" | "maximum_invoice_amount_msats" | "minimum_pay_amount" | "maximum_pay_amount">, checkout: SwapLimitContext | undefined): string | undefined;
|
|
787
|
+
/** Prefer the lowest invoice-side floor when every network in a group is unavailable. */
|
|
788
|
+
declare function swapGroupLimitOption<T extends {
|
|
789
|
+
readonly available?: boolean;
|
|
790
|
+
readonly unavailable_reason?: string;
|
|
791
|
+
readonly minimum_invoice_amount_msats?: number;
|
|
792
|
+
}>(options: readonly T[]): T | undefined;
|
|
793
|
+
/**
|
|
794
|
+
* Payer-facing validation for a swap refund address, shared by every refund
|
|
795
|
+
* form: an empty address prompts for one, anything else is checked against the
|
|
796
|
+
* pay-in asset's address format.
|
|
797
|
+
*/
|
|
798
|
+
declare function getSwapRefundFormError(payInAsset: string, address: string, networkLabel: string): string | undefined;
|
|
799
|
+
declare function createPaymentWizardSelection(): PaymentWizardSelection;
|
|
800
|
+
declare function createPaymentWizardModel(selection: PaymentWizardSelection): PaymentWizardModel;
|
|
801
|
+
declare function updatePaymentWizardSelection(selection: PaymentWizardSelection, action: PaymentWizardSelectionAction): PaymentWizardSelection;
|
|
802
|
+
declare function createPaymentWizardController(options?: PaymentWizardControllerOptions): PaymentWizardController;
|
|
803
|
+
|
|
804
|
+
export { BrowserLoggerOption, type CheckoutComponentProps, CheckoutElementAttributeOptions, CheckoutElementAttributes, CheckoutElementEventHandlers, CheckoutElementListeners, CheckoutInvoiceSnapshot, CheckoutPaymentMethod, type CheckoutPropsValidation, type CheckoutSession, type CheckoutSessionOptions, CheckoutShellElements, CheckoutShellModel, CheckoutShellOptions, CheckoutSnapshot, CheckoutState, CheckoutStatusModel, CreateCheckoutShellOptions, type DetailLinkKind, type MethodGridEntry, type PaymentDataSource, PaymentMethod, PaymentWizardController, PaymentWizardModel, PaymentWizardSelection, ResolvedTheme, StoredThemeModelOptions, SwapDisplayModel, type SwapLimitContext, type SwapMethodGroup, type SwapSelection, type SwapUnavailableModel, ThemeModel, ThemeModelOptions, ThemePreference, ThemeToggleElementAttributeOptions, ThemeToggleElementAttributes, TransactionDetailRow, TransactionDetailsInput, type TransactionDetailsSource, TransientFeedbackController, UnixSeconds, WizardRouteAssetDisplay, WizardRouteDisplay, applyCheckoutElementAttributes, assetButtonClasses, buildMethodGridEntries, checkoutElementStyles, checkoutLabels, createBlockExplorerUrl, createCheckoutElementAttributes, createCheckoutElementListeners, createCheckoutSession, createCheckoutShell, createCheckoutShellModel, createCheckoutSnapshotFromInvoice, createCheckoutState, createCheckoutStatusModel, createDetailExternalLink, createLightningInvoiceDecodeUrl, createPaymentDataEntries, createPaymentWizardController, createPaymentWizardModel, createPaymentWizardSelection, createStoredThemeModel, createSwapDisplayModel, createSwapUnavailableModel, createThemeModel, createThemeToggleElement, createThemeToggleElementAttributes, createTickingValueController, createTransactionDetails, createTransactionDetailsFromState, createTransientFeedbackController, createWizardRouteAssetDisplays, createWizardRouteDisplays, findSwapGridGroup, formatChooseNetworkHeading, formatNetworkSummary, getExplorerNetwork, getNetworkIcon, getPaymentMethodIcon, getRouteNetworkLabel, getSwapOptionIcon, getSwapRefundFormError, getWizardEmptyMessage, isReusableLightningInvoice, mergeAttemptIntoCheckout, mergeAttemptIntoSnapshot, networkButtonClasses, networkCheckClasses, networkMobileRevealClasses, networkSummaryIconClasses, normalizeSwapStartInvoice, orClasses, overlaySwapRefundStaging, parseBooleanAttribute, parseMethodPickerKey, parseOptionalInteger, parsePaymentMethod, parseResolvedTheme, parseThemePreference, paymentAccentId, paymentIconUrls, paymentMethods, postJson, readThemePreference, requestSwapRefund, resolvePreservedNetworkSelection, resolveTransactionDetailRows, selectCheckoutDisplayInvoice, startSwapRequest, swapAssetMatchesRoute, swapGroupLimitOption, swapOptionLimitMessage, swapPickerKey, syncStoredThemeControls, toggleStoredThemeControls, updatePaymentWizardSelection, updateSelectedSwapNetworks, validateCheckoutProps, wizardNetworkGroupIds, writeThemePreference };
|