zframes 0.5.3 → 0.6.0
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/dist/index.js +608 -9
- package/package.json +4 -4
- package/runtime/assets/{bitcoin-dominance-CxfMBVwW.js → bitcoin-dominance-CweHlZx7.js} +1 -1
- package/runtime/assets/{breakeven-BrpmE2y2.js → breakeven-CG9rKwgE.js} +1 -1
- package/runtime/assets/{breathing-Bjv7D86F.js → breathing-cDundHq6.js} +1 -1
- package/runtime/assets/{btc-blocks-Cy-YFeqC.js → btc-blocks-Do_nySHd.js} +1 -1
- package/runtime/assets/{btc-difficulty-CQ_30M6B.js → btc-difficulty-vNbz5uRo.js} +1 -1
- package/runtime/assets/{btc-fees-DsYgskwn.js → btc-fees-BmADLsmK.js} +1 -1
- package/runtime/assets/{btc-hashrate-C0dYT_WJ.js → btc-hashrate-Wx2RAG-5.js} +1 -1
- package/runtime/assets/{btc-mempool-DipekM7O.js → btc-mempool-CTwbkMUR.js} +1 -1
- package/runtime/assets/{calculator-zC8onHXp.js → calculator-mvv6XpQC.js} +1 -1
- package/runtime/assets/{checklist-baxMKxEm.js → checklist-CuEw3GpE.js} +1 -1
- package/runtime/assets/{clock-x9v1tYQm.js → clock-Cjnwi03W.js} +1 -1
- package/runtime/assets/{coin-movers-fIxzBuhy.js → coin-movers-Bcx1XR0F.js} +1 -1
- package/runtime/assets/{countdown-BlyeM771.js → countdown-Cdi5gSSu.js} +1 -1
- package/runtime/assets/cycle-shared-BOGcJDzT.js +1 -0
- package/runtime/assets/cycle-signals-CS629ZDc.js +1 -0
- package/runtime/assets/{daily-analysis-DxjxE53t.js → daily-analysis-DX8bVq85.js} +1 -1
- package/runtime/assets/{day-meter-9YEIbKbk.js → day-meter-DDfTuhms.js} +1 -1
- package/runtime/assets/defi-revenue-CpeAGwhb.js +1 -0
- package/runtime/assets/{dex-volume-chart-CIN2oKpJ.js → dex-volume-chart-sHIuJACJ.js} +1 -1
- package/runtime/assets/{dex-volume-treemap-CqHdMsnd.js → dex-volume-treemap-rSTrzz7O.js} +1 -1
- package/runtime/assets/{dice-DnddcY-J.js → dice-BrFORdjN.js} +1 -1
- package/runtime/assets/{dino-game-D6AH1SSj.js → dino-game-BOV8mV1d.js} +1 -1
- package/runtime/assets/{divider-Bu8aGlm1.js → divider-C33tH1RU.js} +1 -1
- package/runtime/assets/{drawdy-BhOQeakE.js → drawdy-BIb36JN9.js} +1 -1
- package/runtime/assets/dxy-CRifEdp_.js +1 -0
- package/runtime/assets/editor-CZoWRTJC.css +1 -0
- package/runtime/assets/editor-Dnp1eXvY.js +68 -0
- package/runtime/assets/etf-flows-BV10E2R-.js +1 -0
- package/runtime/assets/etf-flows-chart-DHu8mkXm.js +1 -0
- package/runtime/assets/eth-staking-BqWeJq6F.js +1 -0
- package/runtime/assets/eth-supply-CF-MgHjn.js +1 -0
- package/runtime/assets/{fear-greed-i87oWLnT.js → fear-greed-DuDR56h2.js} +1 -1
- package/runtime/assets/{filings-feed-Cxg9eG9S.js → filings-feed-BpfO2yF6.js} +1 -1
- package/runtime/assets/{financial-stress-Bv_reW65.js → financial-stress-BfYJdlry.js} +1 -1
- package/runtime/assets/{flappy-bird-BENHBDEL.js → flappy-bird-Dbb2UQBv.js} +1 -1
- package/runtime/assets/{fundamentals-AlhngJ8G.js → fundamentals-CUnqjF--.js} +1 -1
- package/runtime/assets/funding-comparison-CMKxW1n-.js +1 -0
- package/runtime/assets/{funding-heatmap-B4RGXX4K.js → funding-heatmap-CZWnYF8Y.js} +1 -1
- package/runtime/assets/{funding-rate-chart-Cg6gi0YC.js → funding-rate-chart-C-tpwid_.js} +1 -1
- package/runtime/assets/{fx-board-BqGsP0Xx.js → fx-board-YAy44m5d.js} +1 -1
- package/runtime/assets/{heading-Dr7Q6vy_.js → heading-uIVBEE7K.js} +1 -1
- package/runtime/assets/{holiday-calendar-C1fruUVL.js → holiday-calendar-DCj83hi2.js} +1 -1
- package/runtime/assets/{image-BulRsYTV.js → image-CITPAmp0.js} +1 -1
- package/runtime/assets/index-Bx7RmzY8.js +1 -0
- package/runtime/assets/index-CrmTiZaB.css +1 -0
- package/runtime/assets/index-DyvZokhk.js +1097 -0
- package/runtime/assets/indicators-CogwjDn9.js +1 -0
- package/runtime/assets/{inflation-pulse-Q-3bZn55.js → inflation-pulse-Bqa3-cuC.js} +1 -1
- package/runtime/assets/{journal-log-FuAPC6JH.js → journal-log-Bgjia8cQ.js} +1 -1
- package/runtime/assets/{journal-open-BREaG6Cs.js → journal-open-Bm5gwWXz.js} +1 -1
- package/runtime/assets/{journal-results-Y_pKQcgg.js → journal-results-cEWe2pbe.js} +1 -1
- package/runtime/assets/{journal-score-ZATtCKrj.js → journal-score-vmfF-9bK.js} +1 -1
- package/runtime/assets/{journal-ui-C_1ADbUX.js → journal-ui-ApBNIq5_.js} +1 -1
- package/runtime/assets/{labor-market-DVybIeSN.js → labor-market-azDXD-dR.js} +1 -1
- package/runtime/assets/{lightning-stats-ByvWkKyP.js → lightning-stats-nkyh2dOX.js} +1 -1
- package/runtime/assets/{link-grid-CJC48i5r.js → link-grid-BEo4b54T.js} +1 -1
- package/runtime/assets/ma-multiplier-BllDQMF5.js +1 -0
- package/runtime/assets/macro-calendar-Ck0dJk4p.js +1 -0
- package/runtime/assets/{market-cap-treemap-CpnOP_gY.js → market-cap-treemap-AxE2EYPO.js} +1 -1
- package/runtime/assets/{market-hours-B9zPCvQk.js → market-hours-BSwXtU8c.js} +1 -1
- package/runtime/assets/{marquee-D8GTgVmy.js → marquee-1Zr5qDJP.js} +1 -1
- package/runtime/assets/mayer-multiple-DpBJNd4d.js +1 -0
- package/runtime/assets/{mining-pools-DiyEBr6a.js → mining-pools-B-jxdTot.js} +1 -1
- package/runtime/assets/{mover-row-CO2STKkw.js → mover-row-Dg96EIqq.js} +1 -1
- package/runtime/assets/mvrv-Dx_S0TwE.js +1 -0
- package/runtime/assets/{national-debt-CcTydivP.js → national-debt-BKVBHaqm.js} +1 -1
- package/runtime/assets/{news-feed-D4xS-sLD.js → news-feed-C9itZmyp.js} +1 -1
- package/runtime/assets/{note-BXsj5NlE.js → note-BtCnmuMo.js} +1 -1
- package/runtime/assets/nupl-aIjkc57m.js +1 -0
- package/runtime/assets/{open-interest-DaFRJd2O.js → open-interest-C0ulogv6.js} +1 -1
- package/runtime/assets/{options-iv-MpSqgS3E.js → options-iv-CdUder3x.js} +1 -1
- package/runtime/assets/{options-oi-strike-BHF28ASR.js → options-oi-strike-CvCZnMCR.js} +1 -1
- package/runtime/assets/{options-put-call-_ZFaepBW.js → options-put-call-FuaDHJ-S.js} +1 -1
- package/runtime/assets/pi-cycle-BuCnLnIJ.js +1 -0
- package/runtime/assets/{pomodoro-CxHVmgqp.js → pomodoro-DDBVVcSR.js} +1 -1
- package/runtime/assets/{portfolio-allocation-Cf251dcH.js → portfolio-allocation-DAnQk_h_.js} +1 -1
- package/runtime/assets/{portfolio-common-DnESc3oR.js → portfolio-common-Bi16i0aA.js} +1 -1
- package/runtime/assets/{portfolio-holdings-2vYKEk7f.js → portfolio-holdings-MyAinCzt.js} +1 -1
- package/runtime/assets/{portfolio-value-B-7uIpG4.js → portfolio-value-BPURwKf8.js} +1 -1
- package/runtime/assets/prediction-markets-Bzy51qnV.js +1 -0
- package/runtime/assets/{price-chart-Cx_2scgb.js → price-chart-BOCD8ka3.js} +1 -1
- package/runtime/assets/{price-compare-DQcEOpnr.js → price-compare-DZlF-qhZ.js} +1 -1
- package/runtime/assets/{price-liveline-TTo-aOFd.js → price-liveline-Bl7qCd5-.js} +1 -1
- package/runtime/assets/{price-ticker-Cp7yYsNm.js → price-ticker-D2W4T02y.js} +1 -1
- package/runtime/assets/{protocol-fees-treemap-D-koQrKr.js → protocol-fees-treemap-DiIt4bfo.js} +1 -1
- package/runtime/assets/{protocol-tvl-chart-CDZkrQuF.js → protocol-tvl-chart-CmzANiR7.js} +1 -1
- package/runtime/assets/{protocol-tvl-treemap-I8fjLZU7.js → protocol-tvl-treemap-BjNPrrtL.js} +1 -1
- package/runtime/assets/puell-multiple-BGrJX43r.js +1 -0
- package/runtime/assets/{quote-CKEEp9tF.js → quote-CRM3bfI7.js} +1 -1
- package/runtime/assets/{rates-board-BElUHlYN.js → rates-board-Cb9rV0_-.js} +1 -1
- package/runtime/assets/realized-price-CYlrFa0m.js +1 -0
- package/runtime/assets/reserve-risk-Be98XUsD.js +1 -0
- package/runtime/assets/{returns-projector-DjIbvas1.js → returns-projector-D67a_yvC.js} +1 -1
- package/runtime/assets/{risk-reward-pVHqmm_g.js → risk-reward-C7WMz2od.js} +1 -1
- package/runtime/assets/rsi-momentum-IglnulkJ.js +1 -0
- package/runtime/assets/{rules-card-uMZQ6oP0.js → rules-card-DJs3fDVN.js} +1 -1
- package/runtime/assets/sector-performance-DVMaleLY.js +1 -0
- package/runtime/assets/sector-treemap-B681nSi6.js +1 -0
- package/runtime/assets/{session-progress-Djhvb1G5.js → session-progress-CZO3LqUi.js} +1 -1
- package/runtime/assets/{short-volume-CiBfmCKw.js → short-volume-l8_9Yoh3.js} +1 -1
- package/runtime/assets/{snake-CYXVjy8d.js → snake-CifbTGlZ.js} +1 -1
- package/runtime/assets/sopr-Dw_oz-mC.js +1 -0
- package/runtime/assets/{spotify-embed-CGYKFOmX.js → spotify-embed-BA0m1IRb.js} +1 -1
- package/runtime/assets/stablecoin-chains-Dd2LqqqY.js +1 -0
- package/runtime/assets/stablecoin-supply-DM4ogL4V.js +1 -0
- package/runtime/assets/{stopwatch-Cl10sfaX.js → stopwatch-Co72v-7u.js} +1 -1
- package/runtime/assets/{top-movers-vvOomk6S.js → top-movers-CLmC2TNu.js} +1 -1
- package/runtime/assets/{treasury-auctions-JMoATy9T.js → treasury-auctions-Dl9fiRgf.js} +1 -1
- package/runtime/assets/{treemap-leaf-DNIoJEK-.js → treemap-leaf-Dn31k9S9.js} +1 -1
- package/runtime/assets/trending-coins-Cpx9T6cG.js +1 -0
- package/runtime/assets/{tvl-treemap-B28_19EZ.js → tvl-treemap-e610jE8k.js} +1 -1
- package/runtime/assets/{video-DjiOnvMm.js → video-CeKjM-cE.js} +1 -1
- package/runtime/assets/volume-profile-CiMFsIBu.js +1 -0
- package/runtime/assets/{yield-curve-Dj5vJwI4.js → yield-curve-DkB0u2_Q.js} +1 -1
- package/runtime/assets/yield-scanner-BP90untT.js +1 -0
- package/runtime/index.html +2 -2
- package/runtime/assets/editor-BMMobjrE.css +0 -1
- package/runtime/assets/editor-Ca-voh3h.js +0 -68
- package/runtime/assets/index-BgSQpj_B.js +0 -936
- package/runtime/assets/index-BqHx9BjX.css +0 -1
- package/runtime/assets/index-DK7jWlTL.js +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zframes",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "zframes CLI — serve a dashboard.json as a live, editable market terminal (serve), print the frame catalogue for generating agents (catalogue), and validate a dashboard.json (lint).",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Zentry",
|
|
@@ -42,13 +42,13 @@
|
|
|
42
42
|
"typescript": "^5.8.0",
|
|
43
43
|
"@zframes/account": "0.0.0",
|
|
44
44
|
"@zframes/frames": "0.0.0",
|
|
45
|
-
"@zframes/provider-
|
|
45
|
+
"@zframes/provider-defillama": "0.0.0",
|
|
46
46
|
"@zframes/provider-coingecko": "0.0.0",
|
|
47
|
+
"@zframes/provider-alternativeme": "0.0.0",
|
|
47
48
|
"@zframes/provider-hyperliquid": "0.0.0",
|
|
48
|
-
"@zframes/provider-defillama": "0.0.0",
|
|
49
49
|
"@zframes/serve": "0.0.0",
|
|
50
|
-
"@zframes/store": "0.0.0",
|
|
51
50
|
"@zframes/spec": "0.0.0",
|
|
51
|
+
"@zframes/store": "0.0.0",
|
|
52
52
|
"@zframes/zai": "0.0.0"
|
|
53
53
|
},
|
|
54
54
|
"scripts": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as f,j as e}from"./react-qoZPGuNy.js";import{b as r,f as p,a as x,c as g}from"./format-CfAcS4D8.js";import{f as j,n as i,o as v}from"./index-
|
|
1
|
+
import{r as f,j as e}from"./react-qoZPGuNy.js";import{b as r,f as p,a as x,c as g}from"./format-CfAcS4D8.js";import{f as j,n as i,o as v}from"./index-DyvZokhk.js";import{F as o}from"./ui-Bq3RQsdJ.js";i.schema;const c={BTC:"linear-gradient(90deg, #FF810F 0%, #FF9E37 100%)",ETH:"hsl(var(--zf-accent-hue, 242) 85% 72%)",Others:"hsl(var(--zf-accent-hue, 242) 38% 52%)"};function y({config:d}){const{market:s,isLoading:m}=v(),n=f.useMemo(()=>{if(!s)return[];const a=s.dominance.btc??0,t=s.dominance.eth??0;return[{type:"BTC",value:a},{type:"ETH",value:t},{type:"Others",value:Math.max(0,100-a-t)}].sort((h,u)=>u.value-h.value)},[s]);if(m)return e.jsx(o,{loading:!0,children:"loading dominance…"});if(!s)return e.jsx(o,{children:"no market data"});const l=n[0];return e.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-3",children:[e.jsxs("div",{className:"flex items-baseline gap-2",children:[e.jsx("span",{className:"metric-xl text-strong",children:r(l.value,1)}),e.jsx("span",{className:"body-md text-soft",children:l.type})]}),e.jsx("div",{className:"flex h-3 w-full max-w-sm gap-1 overflow-hidden rounded-full",children:n.map((a,t)=>e.jsx("div",{className:`h-full ${t===0?"rounded-l-full":""} ${t===n.length-1?"rounded-r-full":""}`,style:{width:`${a.value}%`,background:c[a.type]}},a.type))}),e.jsx("div",{className:"grid w-full max-w-sm grid-cols-3",children:n.map(a=>e.jsxs("div",{className:"flex items-center justify-center gap-1.5",children:[e.jsx("div",{className:"h-2 w-2 flex-shrink-0 rounded-full",style:{background:c[a.type]}}),e.jsx("span",{className:"body-sm text-soft",children:a.type}),e.jsx("span",{className:"body-sm text-normal font-bold tabular-nums",children:r(a.value,1)})]},a.type))}),d.showTotalMarketCap&&e.jsxs("div",{className:"caption text-soft",children:["total mcap ",p(s.totalMarketCapUsd)," ·"," ",e.jsxs("span",{style:{color:g(s.marketCapChangePct24h)},children:[x(s.marketCapChangePct24h)," 24h"]})]})]})}const F=j({...i,component:y});export{F as bitcoinDominanceFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as u,j as e}from"./react-qoZPGuNy.js";import{i as c}from"./content-shared-BZ1XzrJx.js";import{d as N,a as j,c as y}from"./format-CfAcS4D8.js";import{f as k,
|
|
1
|
+
import{r as u,j as e}from"./react-qoZPGuNy.js";import{i as c}from"./content-shared-BZ1XzrJx.js";import{d as N,a as j,c as y}from"./format-CfAcS4D8.js";import{f as k,bO as b}from"./index-DyvZokhk.js";import{s as z}from"./ui-Bq3RQsdJ.js";b.schema;function C({config:l}){const[o,m]=u.useState(l.fills.length?l.fills:[{price:0,size:0}]),[n,g]=u.useState(l.currentPrice),{avg:r,totalSize:p}=u.useMemo(()=>{let s=0,a=0;for(const t of o)s+=t.price*t.size,a+=t.size;return{avg:a>0?s/a:0,totalSize:a}},[o]),x=r>0&&n>0?(n-r)/r*100:null,d=l.label.trim(),h=(s,a,t)=>m(f=>f.map((i,v)=>v===s?{...i,[a]:t}:i));return e.jsxs("div",{className:"flex h-full w-full flex-col gap-2",children:[d&&e.jsx("div",{className:"caption text-soft shrink-0 uppercase tracking-[0.12em]",children:d}),e.jsxs("div",{className:"shrink-0",children:[e.jsx("div",{className:"caption text-soft",children:"break-even (avg cost)"}),e.jsx("div",{className:"metric-lg text-strong",children:p>0?N(r):"—"}),e.jsxs("div",{className:"caption text-soft",children:[p>0?`${p} units`:"add fills below",x!==null&&e.jsxs(e.Fragment,{children:[" · ",e.jsxs("span",{style:{color:y(x)},children:[j(x)," unrealized"]})]})]})]}),e.jsxs("div",{className:`min-h-0 flex-1 ${z}`,children:[o.map((s,a)=>e.jsxs("div",{className:"mb-1 flex items-center gap-1",children:[e.jsxs("label",{className:`flex flex-1 items-center gap-1 px-2 py-1 ${c}`,children:[e.jsx("span",{className:"caption text-soft",children:"px"}),e.jsx("input",{type:"number",value:Number.isFinite(s.price)?s.price:0,onChange:t=>h(a,"price",Number(t.target.value)),className:"body-sm text-strong w-full bg-transparent outline-none"})]}),e.jsxs("label",{className:`flex flex-1 items-center gap-1 px-2 py-1 ${c}`,children:[e.jsx("span",{className:"caption text-soft",children:"sz"}),e.jsx("input",{type:"number",value:Number.isFinite(s.size)?s.size:0,onChange:t=>h(a,"size",Number(t.target.value)),className:"body-sm text-strong w-full bg-transparent outline-none"})]}),e.jsx("button",{type:"button",onClick:()=>m(t=>t.length>1?t.filter((f,i)=>i!==a):t),className:"caption text-soft hover:text-strong shrink-0 px-1","aria-label":"remove fill",children:"×"})]},a)),e.jsx("button",{type:"button",onClick:()=>m(s=>[...s,{price:0,size:0}]),className:`caption text-soft hover:text-strong w-full px-2 py-1 ${c}`,children:"+ add fill"})]}),e.jsxs("label",{className:`flex shrink-0 items-center gap-1 px-2 py-1 ${c}`,children:[e.jsx("span",{className:"caption text-soft shrink-0",children:"current price"}),e.jsx("input",{type:"number",value:Number.isFinite(n)?n:0,onChange:s=>g(Number(s.target.value)),className:"body-sm text-strong w-full bg-transparent text-right outline-none"})]})]})}const E=k({...b,component:C});export{E as breakevenFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as s,j as r}from"./react-qoZPGuNy.js";import{f as m,
|
|
1
|
+
import{r as s,j as r}from"./react-qoZPGuNy.js";import{f as m,bS as n}from"./index-DyvZokhk.js";n.schema;function c(e){return[{name:"Breathe in",dur:e.inhale,scale:1},{name:"Hold",dur:e.hold,scale:1},{name:"Breathe out",dur:e.exhale,scale:.45},{name:"Hold",dur:e.holdAfter,scale:.45}]}function x({config:e}){const t=c(e),[a,l]=s.useState(0);s.useEffect(()=>{l(0)},[e.inhale,e.hold,e.exhale,e.holdAfter]),s.useEffect(()=>{const d=Math.max(0,t[a].dur),u=setTimeout(()=>l(i=>(i+1)%t.length),Math.max(300,d*1e3));return()=>clearTimeout(u)},[a,e.inhale,e.hold,e.exhale,e.holdAfter]);const o=t[a].scale,h=Math.max(.3,t[a].dur);return r.jsxs("div",{className:"relative flex h-full w-full items-center justify-center overflow-hidden",children:[r.jsx("div",{className:"aspect-square w-[55%] rounded-full",style:{background:"var(--color-highlight)",opacity:.25,transform:`scale(${o})`,transition:`transform ${h}s ease-in-out`}}),r.jsx("div",{className:"caption text-soft absolute uppercase tracking-[0.2em]",children:t[a].name})]})}const b=m({...n,component:x});export{b as breathingFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as s}from"./react-qoZPGuNy.js";import{t as c,j as i}from"./format-CfAcS4D8.js";import{f as r,aS as o,aT as m}from"./index-
|
|
1
|
+
import{j as s}from"./react-qoZPGuNy.js";import{t as c,j as i}from"./format-CfAcS4D8.js";import{f as r,aS as o,aT as m}from"./index-DyvZokhk.js";import{F as a,s as d}from"./ui-Bq3RQsdJ.js";o.schema;function x({config:l}){const{blocks:e,isLoading:n}=m(l.count);return n?s.jsx(a,{loading:!0,children:"loading blocks…"}):e.length===0?s.jsx(a,{children:"no block data yet"}):s.jsx("div",{className:"flex h-full min-h-0 flex-col",children:s.jsx("div",{className:d,children:s.jsx("div",{className:"flex flex-col gap-1.5",children:e.map(t=>s.jsxs("div",{className:"grid grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 rounded-md bg-white/[0.03] px-2 py-1.5",title:`Block ${t.height} · ${t.poolName} · ${t.txCount.toLocaleString("en-US")} txs`,children:[s.jsxs("div",{className:"flex flex-col",children:[s.jsx("span",{className:"body-sm text-strong font-bold tabular-nums",children:t.height.toLocaleString("en-US")}),s.jsx("span",{className:"caption text-soft",children:c(t.time)})]}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("span",{className:"body-sm text-normal block truncate",children:t.poolName}),s.jsxs("span",{className:"caption text-soft",children:[t.txCount.toLocaleString("en-US")," txs"]})]}),s.jsxs("div",{className:"text-right",children:[s.jsx("span",{className:"body-sm text-normal block font-bold tabular-nums",children:i(t.totalFees)}),s.jsxs("span",{className:"caption text-soft",children:["~",Math.round(t.medianFee)," sat/vB"]})]})]},t.id))})})})}const j=r({...o,component:x});export{j as btcBlocksFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as t}from"./react-qoZPGuNy.js";import{a as r,b as m,c as o}from"./format-CfAcS4D8.js";import{f as u,aW as c,aX as h}from"./index-
|
|
1
|
+
import{j as t}from"./react-qoZPGuNy.js";import{a as r,b as m,c as o}from"./format-CfAcS4D8.js";import{f as u,aW as c,aX as h}from"./index-DyvZokhk.js";import{F as l}from"./ui-Bq3RQsdJ.js";c.schema;function x(n){const e=Math.max(0,Math.round((n-Date.now())/1e3)),i=Math.floor(e/86400),s=Math.floor(e%86400/3600),a=Math.floor(e%3600/60);return i>0?`in ${i}d ${s}h`:s>0?`in ${s}h ${a}m`:`in ${a}m`}function j({config:n}){const{adjustment:e,isLoading:i}=h();if(i)return t.jsx(l,{loading:!0,children:"loading difficulty…"});if(!e)return t.jsx(l,{children:"no difficulty data yet"});const{progressPercent:s,difficultyChange:a,remainingBlocks:d}=e,f=o(a);return t.jsxs("div",{className:"flex h-full min-h-0 flex-col justify-center gap-3",children:[t.jsxs("div",{className:"flex items-end justify-between gap-3",children:[t.jsxs("div",{children:[t.jsx("div",{className:"caption text-soft uppercase",children:"next adjustment"}),t.jsx("div",{className:"metric-lg leading-none",style:{color:f},children:r(a)}),t.jsx("div",{className:"body-sm text-soft",children:a>=0?"harder":"easier"})]}),t.jsxs("div",{className:"text-right",children:[t.jsx("div",{className:"body-md text-normal font-bold tabular-nums",children:x(e.estimatedRetargetDate)}),t.jsxs("div",{className:"caption text-soft",children:[d.toLocaleString("en-US")," blocks left"]})]})]}),t.jsxs("div",{children:[t.jsx("div",{className:"relative h-2.5 w-full overflow-hidden rounded-full bg-white/[0.08]",children:t.jsx("div",{className:"absolute left-0 top-0 h-full rounded-full",style:{width:`${Math.min(100,Math.max(0,s))}%`,background:"hsl(var(--zf-accent-hue, 242) 85% 72%)"}})}),t.jsxs("div",{className:"caption text-soft mt-1 tabular-nums",children:[m(s,1)," through this epoch"]})]}),n.showPrevious&&t.jsxs("div",{className:"caption text-soft border-t border-white/[0.08] pt-2",children:["previous retarget"," ",t.jsx("span",{className:"font-bold tabular-nums",style:{color:o(e.previousRetarget)},children:r(e.previousRetarget)})]})]})}const N=u({...c,component:j});export{N as btcDifficultyFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as t}from"./react-qoZPGuNy.js";import{F as i,a as e}from"./btc-shared-DeqDaCze.js";import{f as c,aO as n,aP as f}from"./index-
|
|
1
|
+
import{j as t}from"./react-qoZPGuNy.js";import{F as i,a as e}from"./btc-shared-DeqDaCze.js";import{f as c,aO as n,aP as f}from"./index-DyvZokhk.js";import{F as a}from"./ui-Bq3RQsdJ.js";import"./format-CfAcS4D8.js";n.schema;const l={fastest:"Next block",halfHour:"~30 min",hour:"~1 hour",economy:"Economy",minimum:"Minimum"},u={fastest:e[0],halfHour:e[1],hour:e[2],economy:e[3],minimum:e[4]};function p({config:m}){const{fees:o,isLoading:r}=f();return r?t.jsx(a,{loading:!0,children:"loading fees…"}):o?t.jsx("div",{className:"flex h-full flex-wrap content-center items-stretch justify-center gap-2",children:m.tiers.map(s=>t.jsx(i,{className:"min-w-[64px] flex-1",color:u[s],value:o[s],caption:l[s]},s))}):t.jsx(a,{children:"no fee data yet"})}const E=c({...n,component:p});export{E as btcFeesFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as c,j as e}from"./react-qoZPGuNy.js";import{k as h,e as l}from"./format-CfAcS4D8.js";import{f as m,aU as i,aV as d}from"./index-
|
|
1
|
+
import{r as c,j as e}from"./react-qoZPGuNy.js";import{k as h,e as l}from"./format-CfAcS4D8.js";import{f as m,aU as i,aV as d}from"./index-DyvZokhk.js";import{F as r}from"./ui-Bq3RQsdJ.js";import{M as f}from"./mini-line-chart-CHM5UBjJ.js";import"./d3-xK4fOkBU.js";import"./utils-DaT-yT0k.js";i.schema;function x({config:a}){const{data:t,isLoading:n}=d(a.window),o=c.useMemo(()=>((t==null?void 0:t.hashrates)??[]).map(s=>({date:new Date(s.time).toISOString(),value:s.hashrate})),[t==null?void 0:t.hashrates]);return n?e.jsx(r,{loading:!0,children:"loading hashrate…"}):t?e.jsxs("div",{className:"flex h-full min-h-0 flex-col justify-center gap-3",children:[e.jsxs("div",{className:"flex items-end justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("div",{className:"caption text-soft uppercase",children:"network hashrate"}),e.jsx("div",{className:"metric-lg text-strong leading-none",children:h(t.currentHashrate)})]}),e.jsxs("div",{className:"text-right",children:[e.jsx("div",{className:"body-md text-normal font-bold tabular-nums",children:l(t.currentDifficulty)}),e.jsx("div",{className:"caption text-soft",children:"difficulty"})]})]}),e.jsx(f,{data:o,width:320,height:54,color:"hsl(var(--zf-accent-hue, 242) 85% 72%)"}),e.jsxs("div",{className:"caption text-soft",children:["past ",a.window]})]}):e.jsx(r,{children:"no hashrate data yet"})}const b=m({...i,component:x});export{b as btcHashrateFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e}from"./react-qoZPGuNy.js";import{F as m,f as d}from"./btc-shared-DeqDaCze.js";import{e as x}from"./format-CfAcS4D8.js";import{f as p,aQ as o,aR as f}from"./index-
|
|
1
|
+
import{j as e}from"./react-qoZPGuNy.js";import{F as m,f as d}from"./btc-shared-DeqDaCze.js";import{e as x}from"./format-CfAcS4D8.js";import{f as p,aQ as o,aR as f}from"./index-DyvZokhk.js";import{F as a,a as j}from"./ui-Bq3RQsdJ.js";o.schema;function u({config:i}){const{state:s,isLoading:n}=f();if(n)return e.jsx(a,{loading:!0,children:"loading mempool…"});if(!s)return e.jsx(a,{children:"no mempool data yet"});const l=s.projected.slice(0,i.projectedBlocks),r=(s.vsize/1e6).toFixed(1);return e.jsxs("div",{className:"flex h-full min-h-0 flex-col justify-center gap-3",children:[e.jsxs("div",{className:"flex items-end justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("div",{className:"caption text-soft uppercase",children:"unconfirmed"}),e.jsx("div",{className:"metric-lg text-strong leading-none",children:s.count.toLocaleString("en-US")}),e.jsx("div",{className:"body-sm text-soft",children:"transactions"})]}),e.jsxs("div",{className:"text-right",children:[e.jsxs("div",{className:"body-md text-normal font-bold tabular-nums",children:[r," MvB"]}),e.jsx("div",{className:"caption text-soft",children:"pending vsize"})]})]}),e.jsx("div",{className:`flex gap-1.5 ${j}`,children:l.map((t,c)=>e.jsx(m,{className:"min-w-[76px]",color:d(t.medianFee),value:`~${Math.round(t.medianFee)}`,caption:`${x(t.nTx)} tx`},c))})]})}const M=p({...o,component:u});export{M as btcMempoolFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as n,j as e}from"./react-qoZPGuNy.js";import{i as C}from"./content-shared-BZ1XzrJx.js";import{f as F,aG as N}from"./index-
|
|
1
|
+
import{r as n,j as e}from"./react-qoZPGuNy.js";import{i as C}from"./content-shared-BZ1XzrJx.js";import{f as F,aG as N}from"./index-DyvZokhk.js";import{s as A}from"./ui-Bq3RQsdJ.js";N.schema;const R="var(--color-highlight)";function x(t){const s=Number(t);return Number.isFinite(s)?s:0}function d({label:t,value:s,onChange:i,prefix:r,suffix:l}){return e.jsxs("label",{className:"flex flex-col gap-1",children:[e.jsx("span",{className:"caption text-soft uppercase tracking-[0.12em]",children:t}),e.jsxs("span",{className:`flex items-center gap-1 px-2 py-1.5 ${C}`,children:[r&&e.jsx("span",{className:"body-sm text-soft",children:r}),e.jsx("input",{type:"number",inputMode:"decimal",value:s,onChange:c=>i(c.target.value),className:"body-sm text-normal min-w-0 flex-1 bg-transparent text-right tabular-nums outline-none [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none"}),l&&e.jsx("span",{className:"body-sm text-soft",children:l})]})]})}function M({config:t}){const[s,i]=n.useState(String(t.account)),[r,l]=n.useState(String(t.riskPct)),[c,g]=n.useState(String(t.entry)),[h,v]=n.useState(String(t.stop));n.useEffect(()=>i(String(t.account)),[t.account]),n.useEffect(()=>l(String(t.riskPct)),[t.riskPct]),n.useEffect(()=>g(String(t.entry)),[t.entry]),n.useEffect(()=>v(String(t.stop)),[t.stop]);const a=n.useMemo(()=>{const o=x(s),w=x(r),m=x(c),j=x(h),S=o*w/100,p=Math.abs(m-j),y=p>0?S/p:0,E=y*m,P=m===j?"—":j<m?"long":"short";return{riskAmount:S,perUnit:p,size:y,value:E,side:P,hasStop:p>0}},[s,r,c,h]),u=t.currency,f=o=>`${u}${o.toLocaleString(void 0,{maximumFractionDigits:2})}`,k=o=>o.toLocaleString(void 0,{maximumFractionDigits:o>=1?2:4});return e.jsxs("div",{className:`${A} flex flex-col gap-3`,children:[e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsx(d,{label:"Account",value:s,onChange:i,prefix:u}),e.jsx(d,{label:"Risk",value:r,onChange:l,suffix:"%"}),e.jsx(d,{label:"Entry",value:c,onChange:g,prefix:u}),e.jsx(d,{label:"Stop",value:h,onChange:v,prefix:u})]}),e.jsxs("div",{className:"flex flex-col gap-1.5 rounded-lg border border-white/[0.07] bg-white/[0.03] p-2.5",children:[e.jsxs("div",{className:"flex items-baseline justify-between",children:[e.jsx("span",{className:"caption text-soft uppercase tracking-[0.12em]",children:"Position size"}),e.jsx("span",{className:"body-lg font-extrabold tabular-nums",style:{color:a.hasStop?R:void 0},children:a.hasStop?k(a.size):"—"})]}),e.jsx(b,{label:"Risk amount",value:f(a.riskAmount)}),e.jsx(b,{label:"Per-unit risk",value:a.hasStop?f(a.perUnit):"set a stop"}),e.jsx(b,{label:"Position value",value:a.hasStop?f(a.value):"—"}),e.jsx(b,{label:"Direction",value:a.side})]})]})}function b({label:t,value:s}){return e.jsxs("div",{className:"flex items-baseline justify-between",children:[e.jsx("span",{className:"body-sm text-soft",children:t}),e.jsx("span",{className:"body-sm text-normal tabular-nums",children:s})]})}const U=F({...N,component:M});export{U as calculatorFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as x,j as t}from"./react-qoZPGuNy.js";import{f as p,
|
|
1
|
+
import{r as x,j as t}from"./react-qoZPGuNy.js";import{f as p,bP as o,m as u}from"./index-DyvZokhk.js";import{s as b}from"./ui-Bq3RQsdJ.js";o.schema;function f({config:s}){const r=u(),[i,m]=x.useState(s.checked),l=r?s.checked:i,h=a=>{const e=s.items.map((k,c)=>c===a?!l[c]:!!l[c]);r?r({checked:e}):m(e)},d=s.items.filter((a,e)=>l[e]).length,n=s.title.trim();return t.jsxs("div",{className:"flex h-full w-full flex-col",children:[t.jsxs("div",{className:"mb-1 flex shrink-0 items-baseline justify-between gap-2",children:[n&&t.jsx("div",{className:"body-sm text-strong truncate font-semibold",children:n}),t.jsxs("div",{className:"caption text-soft shrink-0 tabular-nums",children:[d,"/",s.items.length]})]}),t.jsx("div",{className:`min-h-0 flex-1 ${b}`,children:s.items.map((a,e)=>t.jsxs("button",{type:"button",onClick:()=>h(e),className:"flex w-full items-center gap-2 py-1 text-left",children:[t.jsx("span",{className:"caption flex h-4 w-4 shrink-0 items-center justify-center rounded border leading-none",style:{borderColor:l[e]?"var(--color-highlight)":"rgba(255,255,255,0.2)",background:l[e]?"var(--color-highlight)":"transparent",color:l[e]?"#0b0e14":"transparent"},children:"✓"}),t.jsx("span",{className:`body-sm ${l[e]?"text-disabled line-through":"text-normal"}`,children:a})]},e))})]})}const v=p({...o,component:f});export{v as checklistFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as s,j as o}from"./react-qoZPGuNy.js";import{f as R,q as y}from"./index-
|
|
1
|
+
import{r as s,j as o}from"./react-qoZPGuNy.js";import{f as R,q as y}from"./index-DyvZokhk.js";import{F as b}from"./ui-Bq3RQsdJ.js";import{u as m}from"./use-countdown-BmcF-qdL.js";y.schema;function u(e){const r={hour:"",minute:"",second:"",fractional:"",period:""};for(const n of e.formatToParts(new Date))n.type==="hour"?r.hour=n.value:n.type==="minute"?r.minute=n.value:n.type==="second"?r.second=n.value:n.type==="fractionalSecond"?r.fractional=n.value:n.type==="dayPeriod"&&(r.period=n.value);return r}function j({config:e}){const r=s.useRef(null),n=s.useRef(null),f=s.useRef(null),p=s.useRef(null),h=s.useRef(null),a=e.timezone.trim()||void 0,c=e.showSeconds||e.showMillis,t=s.useMemo(()=>{var l;try{const z=new Intl.DateTimeFormat(void 0,{timeZone:a,hour:"2-digit",minute:"2-digit",second:c?"2-digit":void 0,fractionalSecondDigits:e.showMillis?3:void 0,hour12:e.hour12}),v=e.showDate?new Intl.DateTimeFormat(void 0,{timeZone:a,weekday:"short",month:"short",day:"numeric"}):null;let x="";return e.showTimezone&&(x=((l=new Intl.DateTimeFormat(void 0,{timeZone:a,hour:"2-digit",timeZoneName:"short"}).formatToParts(new Date).find(D=>D.type==="timeZoneName"))==null?void 0:l.value)??""),{time:z,date:v,zone:x,error:null}}catch{return{time:null,date:null,zone:"",error:a??"invalid timezone"}}},[a,c,e.showMillis,e.hour12,e.showDate,e.showTimezone]);if(m({ref:r,getRemainingMs:()=>Date.now(),format:()=>{if(!t.time)return"";const l=u(t.time);return`${l.hour}:${l.minute}`}}),m({ref:n,getRemainingMs:()=>Date.now(),format:()=>t.time?`:${u(t.time).second}`:""}),m({ref:f,getRemainingMs:()=>Date.now(),format:()=>t.time?`.${u(t.time).fractional}`:""}),m({ref:p,getRemainingMs:()=>Date.now(),format:()=>t.time?u(t.time).period:""}),m({ref:h,getRemainingMs:()=>Date.now(),format:()=>t.date?t.date.format(new Date):""}),t.error)return o.jsxs(b,{children:["unknown timezone: ",t.error]});const i=u(t.time),d="var(--color-highlight)",w="0 0 18px hsl(var(--zf-accent-hue, 242) 92% 70% / 0.45)";return o.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-2 text-center [container-type:size]",children:[o.jsxs("div",{className:"text-strong inline-flex max-w-full items-baseline justify-center whitespace-nowrap font-dmsans font-extrabold leading-none tracking-[-0.01em] tabular-nums",style:{fontSize:"clamp(1.6rem, 37cqmin, 5.5rem)"},children:[o.jsx("span",{ref:r,suppressHydrationWarning:!0,children:`${i.hour}:${i.minute}`}),c&&o.jsx("span",{ref:n,suppressHydrationWarning:!0,className:"font-bold",style:{fontSize:"0.46em",color:d,textShadow:w},children:`:${i.second}`}),e.showMillis&&o.jsx("span",{ref:f,suppressHydrationWarning:!0,className:"font-semibold",style:{fontSize:"0.3em",color:d,opacity:.65},children:`.${i.fractional}`}),e.hour12&&o.jsx("span",{ref:p,suppressHydrationWarning:!0,className:"text-soft ml-[0.3em] self-center font-semibold uppercase",style:{fontSize:"0.3em",letterSpacing:"0.08em"},children:i.period})]}),e.showDate&&t.date&&o.jsx("div",{ref:h,suppressHydrationWarning:!0,className:"caption text-soft tabular-nums",children:t.date.format(new Date)}),(e.label||t.zone)&&o.jsxs("div",{className:"caption text-soft inline-flex items-center gap-1.5 uppercase tracking-[0.18em]",children:[o.jsx("span",{"aria-hidden":!0,className:"inline-block h-1 w-1 rounded-full",style:{background:d,boxShadow:w}}),e.label&&t.zone?`${e.label} · ${t.zone}`:e.label||t.zone]})]})}const k=R({...y,component:j});export{k as clockFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as p,j as r}from"./react-qoZPGuNy.js";import{M as l}from"./mover-row-
|
|
1
|
+
import{r as p,j as r}from"./react-qoZPGuNy.js";import{M as l}from"./mover-row-Dg96EIqq.js";import{f as h,b5 as t,b6 as x}from"./index-DyvZokhk.js";import{F as n}from"./ui-Bq3RQsdJ.js";import"./format-CfAcS4D8.js";t.schema;function u({config:e}){const{entries:o,isLoading:c}=x(),{gainers:i,losers:m}=p.useMemo(()=>{const s=o.filter(a=>a.rank<=e.minRank&&a.volume24hUsd>0).map(a=>({symbol:a.symbol,price:a.priceUsd,chg:a.changePct[e.window]??0})).sort((a,d)=>d.chg-a.chg);return{gainers:s.slice(0,e.count),losers:s.slice(-e.count).reverse()}},[o,e.window,e.count,e.minRank]);return c?r.jsx(n,{loading:!0,children:"loading movers…"}):i.length===0?r.jsx(n,{children:"no mover data yet"}):r.jsxs("div",{className:"grid h-full grid-cols-2 gap-x-4 overflow-hidden",children:[r.jsxs("div",{className:"flex flex-col gap-1.5",children:[r.jsxs("div",{className:"caption text-soft uppercase tracking-wide",children:["gainers · ",e.window]}),i.map(s=>r.jsx(l,{symbol:s.symbol,label:s.symbol,price:s.price,changePct:s.chg},s.symbol))]}),r.jsxs("div",{className:"flex flex-col gap-1.5",children:[r.jsxs("div",{className:"caption text-soft uppercase tracking-wide",children:["losers · ",e.window]}),m.map(s=>r.jsx(l,{symbol:s.symbol,label:s.symbol,price:s.price,changePct:s.chg},s.symbol))]})]})}const f=h({...t,component:u});export{f as coinMoversFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r,j as t}from"./react-qoZPGuNy.js";import{f as z,aE as F}from"./index-
|
|
1
|
+
import{r,j as t}from"./react-qoZPGuNy.js";import{f as z,aE as F}from"./index-DyvZokhk.js";import{F as S}from"./ui-Bq3RQsdJ.js";import{u as g}from"./use-countdown-BmcF-qdL.js";F.schema;const v=864e5,b=36e5,D=6e4;function f(n){let s=Math.max(0,n);const l=Math.floor(s/v);s-=l*v;const m=Math.floor(s/b);s-=m*b;const u=Math.floor(s/D);s-=u*D;const o=Math.floor(s/1e3);return{days:l,hours:m,minutes:u,seconds:o}}const y="var(--color-highlight)",N="0 0 18px hsl(var(--zf-accent-hue, 242) 92% 70% / 0.45)",c=n=>String(n).padStart(2,"0");function T({config:n}){const s=r.useRef(null),l=r.useRef(null),m=r.useRef(null),u=r.useRef(null),o=n.target.trim(),a=r.useMemo(()=>{if(!o)return null;const e=new Date(o).getTime();return Number.isFinite(e)?e:NaN},[o]),i=a!=null&&!Number.isNaN(a),[p,x]=r.useState(i&&a<=Date.now());r.useEffect(()=>{if(!i)return;const e=a-Date.now();if(e<=0){x(!0);return}x(!1);const w=window.setTimeout(()=>x(!0),e);return()=>window.clearTimeout(w)},[i,a]);const d=()=>i?a-Date.now():0;g({ref:s,getRemainingMs:d,format:e=>String(f(e).days)}),g({ref:l,getRemainingMs:d,format:e=>c(f(e).hours)}),g({ref:m,getRemainingMs:d,format:e=>c(f(e).minutes)}),g({ref:u,getRemainingMs:d,format:e=>c(f(e).seconds)});const R=r.useMemo(()=>i?new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"short"}).format(new Date(a)):"",[i,a]);if(!o)return t.jsx(S,{children:"set a target date & time"});if(!i)return t.jsxs(S,{children:["invalid target date: ",o]});const h=f(d()),k=[[s,String(h.days),"days"],[l,c(h.hours),"hrs"],[m,c(h.minutes),"min"],[u,c(h.seconds),"sec"]];return t.jsxs("div",{className:"flex h-full w-full flex-col items-center justify-center gap-2 text-center [container-type:size]",children:[n.label&&t.jsxs("div",{className:"caption text-soft inline-flex items-center gap-1.5 uppercase tracking-[0.18em]",children:[t.jsx("span",{"aria-hidden":!0,className:"inline-block h-1 w-1 rounded-full",style:{background:y,boxShadow:N}}),n.label]}),t.jsx("div",{className:"flex items-start justify-center gap-[0.5em] leading-none tabular-nums",style:{fontSize:"clamp(0.9rem, 20cqmin, 2.8rem)"},children:k.map(([e,w,j],M)=>t.jsxs("div",{className:"flex flex-col items-center gap-[0.25em]",children:[t.jsx("span",{ref:e,suppressHydrationWarning:!0,className:"text-strong font-dmsans font-extrabold tracking-[-0.01em]",style:{fontSize:"1em",color:M===3&&!p?y:void 0,textShadow:M===3&&!p?N:void 0},children:w}),t.jsx("span",{className:"text-soft uppercase tracking-[0.12em]",style:{fontSize:"0.26em"},children:j})]},j))}),p?t.jsx("div",{className:"caption font-semibold uppercase tracking-[0.2em]",style:{color:y,textShadow:N},children:"reached"}):n.showTarget&&R&&t.jsx("div",{className:"caption text-soft tabular-nums",children:R})]})}const q=z({...F,component:T});export{q as countdownFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as s}from"./react-qoZPGuNy.js";import{a as i}from"./indicators-CogwjDn9.js";import{M as f}from"./mini-line-chart-CHM5UBjJ.js";const x="#cbd5e1",u="#f5a524";function h({caption:e,headline:n,headlineColor:a,zone:o,sub:t,sparkline:r,sparkColor:l}){const c=i(r);return s.jsxs("div",{className:"flex h-full min-h-0 flex-col justify-center gap-2",children:[s.jsx("div",{className:"caption text-soft",children:e}),s.jsx("div",{className:"metric-xl leading-none",style:{color:a,textShadow:`0 0 24px ${a}44`},children:n}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"caption rounded-full px-2 py-0.5 font-semibold",style:{color:o.color,background:`${o.color}1f`},children:o.label}),t!=null&&s.jsx("span",{className:"caption text-soft truncate",children:t})]}),c.length>1&&s.jsx(f,{data:c,width:280,height:44,color:l,className:"w-full"})]})}function N(e,n,a){for(const o of n){const t=o.upTo===void 0||e<o.upTo,r=o.from===void 0||e>=o.from;if(t&&r)return o.zone}return a}export{h as M,x as Z,u as a,N as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as T,j as e}from"./react-qoZPGuNy.js";import{D as _,U as $}from"./format-CfAcS4D8.js";import{Z as A}from"./cycle-shared-BOGcJDzT.js";import{s as g,r as B,e as H}from"./indicators-CogwjDn9.js";import{f as W,bl as E,b8 as q,bb as z,be as G}from"./index-DyvZokhk.js";import{M as J}from"./metric-row-BVVhjsjK.js";import{F,s as K}from"./ui-Bq3RQsdJ.js";import"./mini-line-chart-CHM5UBjJ.js";import"./d3-xK4fOkBU.js";import"./utils-DaT-yT0k.js";E.schema;function p(f){for(let i=f.length-1;i>=0;i--)if(f[i]!==null)return f[i];return null}function Q({config:f}){const{valuation:i,isLoading:U}=q(),{extras:d}=z(),{history:N,isLoading:Z}=G("btc"),h=f.mode==="peak",y=T.useMemo(()=>{if(!i)return[];const l=N.map(t=>t.value),C=l.at(-1)??null,L=p(g(l,200)),o=C!==null&&L?C/L:null,a=p(B(l,14)),S=p(g(l,111)),V=p(g(l,350)),M=S!==null&&V?S/(2*V):null,I=H(l,150).at(-1)??null,O=p(g(l,471)),j=I!==null&&O?I/O:null,r=(d==null?void 0:d.puell)??null,{mvrv:c,mvrvZScore:m,nupl:u}=i,n=(t,x,D,k,w)=>({name:t,value:x,display:D,threshold:k,fired:x!==null&&w}),P=t=>t!==null?`${(t*100).toFixed(0)}%`:"—",s=(t,x=2)=>t!==null?t.toFixed(x):"—";return h?[n("MVRV",c,s(c),"≥ 3",(c??0)>=3),n("MVRV Z-Score",m,s(m),"≥ 7",(m??0)>=7),n("NUPL",u,P(u),"≥ 75%",(u??0)>=.75),n("Mayer Multiple",o,s(o),"≥ 2.4",(o??0)>=2.4),n("Puell Multiple",r,s(r),"≥ 4",(r??0)>=4),n("RSI (14)",a,s(a,0),"≥ 80",(a??0)>=80),n("Pi Cycle Top",M,s(M),"≥ 1",(M??0)>=1)]:[n("MVRV",c,s(c),"≤ 1",(c??1/0)<=1),n("MVRV Z-Score",m,s(m),"≤ 0",(m??1/0)<=0),n("NUPL",u,P(u),"≤ 0%",(u??1/0)<=0),n("Mayer Multiple",o,s(o),"≤ 0.8",(o??1/0)<=.8),n("Puell Multiple",r,s(r),"≤ 0.5",(r??1/0)<=.5),n("RSI (14)",a,s(a,0),"≤ 30",(a??1/0)<=30),n("Pi Cycle Bottom",j,s(j),"≥ 0.745",(j??0)>=.745)]},[i,d,N,h]);if((U||Z)&&y.length===0)return e.jsx(F,{loading:!0,children:"loading cycle signals…"});if(y.length===0)return e.jsx(F,{children:"no on-chain data yet"});const R=y.filter(l=>l.value!==null),b=R.filter(l=>l.fired).length,v=h?_:$;return e.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-2",children:[e.jsxs("div",{className:"flex items-baseline justify-between",children:[e.jsx("span",{className:"caption text-soft",children:h?"Cycle-top signals":"Cycle-bottom signals"}),e.jsxs("span",{className:"metric-md",style:{color:b>0?v:A},children:[b,e.jsxs("span",{className:"text-soft",children:["/",R.length]})]})]}),e.jsx("div",{className:`${K} flex flex-col`,children:y.map(l=>e.jsx(J,{label:l.name,meta:`fires ${l.threshold}`,value:e.jsxs("span",{style:{color:l.fired?v:void 0},children:[l.fired?"● ":"",l.display]})},l.name))})]})}const rl=W({...E,component:Q});export{rl as cycleSignalsFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as x,j as s}from"./react-qoZPGuNy.js";import{f as L,r as b,h as R}from"./index-
|
|
1
|
+
import{r as x,j as s}from"./react-qoZPGuNy.js";import{f as L,r as b,h as R}from"./index-DyvZokhk.js";import{D as g,U as O}from"./format-CfAcS4D8.js";import{F as N,s as C}from"./ui-Bq3RQsdJ.js";b.schema;const h={bullish:O,bearish:g,neutral:"var(--color-soft)"},I={hit:O,miss:g,partial:"#f4a259"};function y(r){let n=0,i=0;for(const m of r)for(const c of m.grades??[])i++,c.verdict==="hit"?n+=1:c.verdict==="partial"&&(n+=.5);return{rate:i?n/i:0,n:i}}function D({config:r}){const[n,i]=x.useState(null),[m,c]=x.useState(!1);if(x.useEffect(()=>{let e=!1;const l=()=>{fetch(r.src,{cache:"no-store"}).then(t=>{if(!t.ok)throw new Error(`HTTP ${t.status}`);return t.json()}).then(t=>{e||(i(t),c(!0))}).catch(()=>{e||c(!0)})};l();const o=()=>l();window.addEventListener("focus",o);const d=window.setInterval(l,r.refreshSec*1e3);return()=>{e=!0,window.removeEventListener("focus",o),window.clearInterval(d)}},[r.src,r.refreshSec]),!m)return s.jsx(N,{loading:!0,children:"loading brief…"});const f=(n==null?void 0:n.entries)??[];if(f.length===0)return s.jsx(N,{children:"no brief yet — run /zframes-brief"});const k=f.slice(-r.entries).reverse(),{rate:E,n:u}=y(f);return s.jsxs("div",{className:`body-sm flex flex-col gap-3 ${C}`,children:[u>0&&s.jsxs("div",{className:"caption text-soft flex items-center justify-between",children:[s.jsx("span",{className:"uppercase tracking-wide",children:"track record"}),s.jsxs("span",{className:"text-strong font-bold tabular-nums",children:[Math.round(E*100),"% · ",u," call",u===1?"":"s"]})]}),k.map((e,l)=>{var o,d,t,j,v,w;return s.jsxs("div",{className:"flex flex-col gap-1.5",children:[(e.date||((o=e.run)==null?void 0:o.model))&&s.jsxs("div",{className:"caption text-soft flex items-baseline justify-between gap-2",children:[s.jsx("span",{className:"uppercase tracking-wide",children:e.date}),((d=e.run)==null?void 0:d.model)&&s.jsxs("span",{className:"truncate opacity-70",title:e.run.timestamp??"",children:[e.run.model,e.run.effort?` · ${e.run.effort}`:""]})]}),e.summary&&s.jsx("div",{className:"text-normal whitespace-pre-wrap",children:e.summary}),(((t=e.calls)==null?void 0:t.length)??0)>0&&s.jsx("div",{className:"flex flex-col gap-1",children:(j=e.calls)==null?void 0:j.map((a,p)=>s.jsxs("div",{className:"grid grid-cols-[auto_minmax(0,1fr)] items-baseline gap-2",children:[s.jsx("span",{className:"caption font-bold uppercase tracking-wide",style:{color:h[a.direction??"neutral"]??h.neutral},children:a.symbol?R(a.symbol):a.direction??"•"}),s.jsx("span",{className:"text-normal",children:a.claim})]},a.id??p))}),(((v=e.grades)==null?void 0:v.length)??0)>0&&s.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[s.jsx("span",{className:"caption text-soft uppercase tracking-wide",children:"graded"}),(w=e.grades)==null?void 0:w.map((a,p)=>s.jsx("span",{className:"caption rounded px-1.5 py-0.5 font-bold uppercase",style:{color:I[a.verdict??""]??h.neutral,background:"var(--color-surface)"},title:a.note??"",children:a.verdict??"—"},a.callId??p))]})]},e.date??l)})]})}const T=L({...b,component:D});export{T as dailyAnalysisFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as a}from"./react-qoZPGuNy.js";import{E as p,a as c,i as u}from"./market-data-CvmpLFSo.js";import{f,
|
|
1
|
+
import{j as a}from"./react-qoZPGuNy.js";import{E as p,a as c,i as u}from"./market-data-CvmpLFSo.js";import{f,bM as m}from"./index-DyvZokhk.js";import{F as w}from"./ui-Bq3RQsdJ.js";m.schema;const g=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],j="#f2b066",T=864e5;function b({config:t}){const o=p[t.exchange],n=o?c(t.exchange):null;if(!o||!n)return a.jsx(w,{children:"unknown exchange"});const y=new Date,x=(n.dow+6)%7,i=[];for(let e=0;e<7;e++){const s=c(t.exchange,new Date(y.getTime()+(e-x)*T));if(!s)continue;const r=o.days.includes(s.dow),l=r&&u(t.exchange,s.ymd);i.push({ymd:s.ymd,dow:s.dow,day:Number(s.ymd.split("-")[2]),isToday:s.ymd===n.ymd,isHoliday:l,isTrading:r&&!l})}const h=t.weekdaysOnly?i.filter(e=>o.days.includes(e.dow)):i,d=t.label.trim();return a.jsxs("div",{className:"flex h-full w-full flex-col justify-center gap-1.5",children:[d&&a.jsx("div",{className:"caption text-soft shrink-0 uppercase tracking-[0.12em]",children:d}),a.jsx("div",{className:"flex min-h-0 flex-1 items-stretch gap-1",children:h.map(e=>{const s=!e.isTrading&&!e.isHoliday;return a.jsxs("div",{title:e.isHoliday?"Market holiday":e.isTrading?"Trading day":"Closed",className:`flex flex-1 flex-col items-center justify-center rounded-md border px-1 py-1 ${e.isToday?"text-strong":s?"text-disabled":"text-normal"}`,style:{borderColor:e.isToday?"var(--color-highlight)":"rgba(255,255,255,0.06)",color:e.isHoliday&&!e.isToday?j:void 0},children:[a.jsx("span",{className:"caption opacity-80",children:g[e.dow]}),a.jsx("span",{className:"metric-sm",children:e.day})]},e.ymd)})})]})}const v=f({...m,component:b});export{v as dayMeterFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as o}from"./react-qoZPGuNy.js";import{Z as r,M as i}from"./cycle-shared-BOGcJDzT.js";import{c as s,a as c,f as m}from"./format-CfAcS4D8.js";import{f,bq as l,br as p}from"./index-DyvZokhk.js";import{F as t}from"./ui-Bq3RQsdJ.js";import"./indicators-CogwjDn9.js";import"./mini-line-chart-CHM5UBjJ.js";import"./d3-xK4fOkBU.js";import"./utils-DaT-yT0k.js";function u(){const{fees:e,isLoading:a}=p();if(a)return o.jsx(t,{loading:!0,children:"loading DeFi fees…"});if(!e)return o.jsx(t,{children:"no fees data yet"});const n=e.changePct!=null?s(e.changePct):r;return o.jsx(i,{caption:"DeFi Fees · 24h",headline:m(e.total24h),headlineColor:r,zone:{label:"protocol fees",color:r},sub:e.changePct!=null?`1d ${c(e.changePct)}`:void 0,sparkline:e.history,sparkColor:n})}const R=f({...l,component:u});export{R as defiRevenueFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as l,j as r}from"./react-qoZPGuNy.js";import{p as x,f as C}from"./format-CfAcS4D8.js";import{f as M,ao as f,ap as S}from"./index-
|
|
1
|
+
import{r as l,j as r}from"./react-qoZPGuNy.js";import{p as x,f as C}from"./format-CfAcS4D8.js";import{f as M,ao as f,ap as S}from"./index-DyvZokhk.js";import{F as p}from"./ui-Bq3RQsdJ.js";import{a,C as u}from"./chart-utils-BYIZMM9J.js";import{M as D}from"./index-Bx7RmzY8.js";import"./d3-xK4fOkBU.js";import"./utils-DaT-yT0k.js";const E={"7D":{ms:10080*60*1e3,timeframe:a["7D"]},"1M":{ms:720*60*60*1e3,timeframe:a["1M"]},"3M":{ms:2160*60*60*1e3,timeframe:a["3M"]}};f.schema;function j({config:t}){const{ms:m,timeframe:c}=E[t.lookback],s=l.useMemo(()=>Date.now()-m,[m]),{history:i,isLoading:d}=S(t.protocols),n=l.useMemo(()=>t.protocols.map((e,h)=>({id:e,name:x(e),color:u[h%u.length],data:(i[e]??[]).filter(o=>o.time>=s).map(o=>({date:new Date(o.time).toISOString(),value:o.value}))})),[t.protocols,i,s]);return d?r.jsx(p,{loading:!0,children:"loading DEX volume…"}):n.every(e=>e.data.length===0)?r.jsx(p,{children:"no DEX volume data yet"}):r.jsx(D,{series:n,timeframe:c,height:250,formatValue:C})}const I=M({...f,component:j});export{I as dexVolumeChartFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as u,j as t}from"./react-qoZPGuNy.js";import{f as i}from"./format-CfAcS4D8.js";import{f as l,am as n,an as p}from"./index-
|
|
1
|
+
import{r as u,j as t}from"./react-qoZPGuNy.js";import{f as i}from"./format-CfAcS4D8.js";import{f as l,am as n,an as p}from"./index-DyvZokhk.js";import{T as c,a as f}from"./treemap-leaf-Dn31k9S9.js";import{F as s}from"./ui-Bq3RQsdJ.js";import"./utils-DaT-yT0k.js";import"./d3-xK4fOkBU.js";n.schema;function d({width:m,height:r,data:o}){const a=i(o.volume24h);return t.jsx(f,{width:m,height:r,label:o.id,secondary:a,title:`${o.id} · ${a} 24h volume`})}function h({config:m}){const{entries:r,isLoading:o}=p(),a=u.useMemo(()=>r.slice(0,m.topN).map(e=>({id:e.name,value:e.volume24h,volume24h:e.volume24h,changePct:e.changePct??0})),[r,m.topN]);return o?t.jsx(s,{loading:!0,children:"loading DEX volume…"}):a.length===0?t.jsx(s,{children:"no DEX volume data"}):t.jsx(c,{data:a,LeafComponent:d,getColorValue:e=>e.changePct})}const D=l({...n,component:h});export{D as dexVolumeTreemapFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as s,j as t}from"./react-qoZPGuNy.js";import{i as w}from"./content-shared-BZ1XzrJx.js";import{f as k,aK as x}from"./index-
|
|
1
|
+
import{r as s,j as t}from"./react-qoZPGuNy.js";import{i as w}from"./content-shared-BZ1XzrJx.js";import{f as k,aK as x}from"./index-DyvZokhk.js";import{F as b}from"./ui-Bq3RQsdJ.js";x.schema;const h="var(--color-highlight)",p={coin:"Coin flip",dice:"Dice roll",list:"Random pick"},v={1:[!1,!1,!1,!1,!0,!1,!1,!1,!1],2:[!0,!1,!1,!1,!1,!1,!1,!1,!0],3:[!0,!1,!1,!1,!0,!1,!1,!1,!0],4:[!0,!1,!0,!1,!1,!1,!0,!1,!0],5:[!0,!1,!0,!1,!0,!1,!0,!1,!0],6:[!0,!1,!0,!0,!1,!0,!0,!1,!0]};function c(r,e){return r==="coin"?Math.random()<.5?"Heads":"Tails":r==="dice"?String(Math.floor(Math.random()*6)+1):e.length===0?"":e[Math.floor(Math.random()*e.length)]??""}function N({value:r}){const e=v[r];return e?t.jsx("div",{className:"grid grid-cols-3 gap-1","aria-hidden":!0,children:e.map((a,l)=>t.jsx("span",{className:"h-1.5 w-1.5 rounded-full",style:{background:a?h:"transparent"}},l))}):null}function E({config:r}){const{mode:e,options:a,label:l}=r,n=e==="list"&&a.length===0,[o,f]=s.useState(()=>c(e,a)),[i,u]=s.useState(!1);s.useEffect(()=>{f(c(e,a))},[e,a]),s.useEffect(()=>{if(!i)return;let d=0;const m=window.setInterval(()=>{f(c(e,a)),d+=1,d>=6&&(window.clearInterval(m),u(!1))},60);return()=>window.clearInterval(m)},[i,e,a]);const g=s.useCallback(()=>{n||u(!0)},[n]);if(n)return t.jsx(b,{children:"add options to decide"});const j=e==="list"?"metric-lg":"metric-xl";return t.jsxs("button",{type:"button",onClick:g,"aria-label":`${p[e]} — roll again`,className:`flex h-full w-full cursor-pointer flex-col items-center justify-center gap-2 px-3 py-2 ${w}`,children:[t.jsx("span",{className:"caption text-soft uppercase tracking-[0.12em]",children:p[e]}),t.jsx("span",{"aria-live":"polite",className:`${j} max-w-full break-words text-center leading-none transition-transform`,style:{color:h,transform:i?"scale(1.08)":void 0},children:o}),e==="dice"&&t.jsx(N,{value:Number(o)}),l.trim()&&t.jsx("span",{className:"caption text-soft max-w-full text-center",children:l.trim()}),t.jsx("span",{className:"caption text-disabled uppercase tracking-[0.12em]",children:"click to roll"})]})}const F=k({...x,component:E});export{F as diceFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as s,j as M}from"./react-qoZPGuNy.js";import{a as P,d as _,G as T}from"./game-ui-Dy_QYsPr.js";import{f as k,z}from"./index-
|
|
1
|
+
import{r as s,j as M}from"./react-qoZPGuNy.js";import{a as P,d as _,G as T}from"./game-ui-Dy_QYsPr.js";import{f as k,z}from"./index-DyvZokhk.js";import"./format-CfAcS4D8.js";const F=.6,U=-12,I=40,W=40,b=44,Y=24,X=40,H=3,q=5e-4,p={ground:"rgba(255, 255, 255, 0.1)",groundTexture:"rgba(255, 255, 255, 0.06)",dino:"rgba(255, 255, 255, 1)",eye:"rgba(0, 0, 0, 0.8)",cactus:"#25A78D"};function L(t,n,o,c){t.fillStyle=p.dino,t.fillRect(n+10,o+10,25,24),t.fillRect(n+20,o,20,16),t.fillStyle=p.eye,t.fillRect(n+32,o+4,4,4),t.fillStyle=p.dino,t.fillRect(n,o+16,14,8),t.fillRect(n-4,o+12,8,8),c===null?(t.fillRect(n+12,o+34,6,10),t.fillRect(n+24,o+34,6,10)):(t.fillRect(n+12,o+34,6,c===0?10:6),t.fillRect(n+24,o+34,6,c===1?10:6)),t.fillRect(n+30,o+18,4,10)}function B(t,n,o,c,m){const f=o-m;t.fillStyle=p.cactus,t.fillRect(n+c/2-4,f,8,m),t.fillRect(n,f+10,8,6),t.fillRect(n,f+10,4,14),t.fillRect(n+c-8,f+18,8,6),t.fillRect(n+c-4,f+18,4,12)}function N(t,n,o,c,m,f){const u=t.height-I;n.clearRect(0,0,t.width,t.height),n.fillStyle=p.ground,n.fillRect(0,u,t.width,2),L(n,50,u-b,null),n.textAlign="center",o==="idle"?(n.fillStyle=T.text,n.font='bold 14px "DM Sans", sans-serif',n.fillText("Press SPACE or tap to start",t.width/2,t.height/2-30)):(n.fillStyle=T.gameOver,n.font='bold 20px "DM Sans", sans-serif',n.fillText("GAME OVER",t.width/2,t.height/2-40),n.fillStyle=T.text,n.font='bold 14px "DM Sans", sans-serif',n.fillText(`Score: ${c}`,t.width/2,t.height/2-10),n.fillStyle=T.textSoft,n.fillText("Press SPACE or tap to restart",t.width/2,t.height/2+20)),n.textAlign="left",_(t,n,c,m,f)}function K(){const t=s.useRef(null),n=s.useRef(null),[o,c]=s.useState("idle"),[m,f]=s.useState(0),[u,V]=s.useState(()=>{if(typeof window<"u"){const e=localStorage.getItem("zframes-dino-high-score");return e?parseInt(e,10):0}return 0}),[v,J]=s.useState(!1),g=s.useRef(0),S=s.useRef(u),D=s.useRef(o),y=s.useRef(P(null));s.useEffect(()=>{S.current=u,u>0&&localStorage.setItem("zframes-dino-high-score",String(u))},[u]),s.useEffect(()=>{D.current=o},[o]);const R=s.useRef({dinoY:0,dinoVelocity:0,isJumping:!1,obstacles:[],speed:H,frameCount:0,groundOffset:0}),O=s.useCallback(()=>{const e=t.current;e&&(R.current={dinoY:e.height-I-b,dinoVelocity:0,isJumping:!1,obstacles:[],speed:H,frameCount:0,groundOffset:0},g.current=0,f(0))},[]),C=s.useCallback(()=>{var i;if((i=n.current)==null||i.focus(),o!=="playing"){O(),c("playing");return}const e=R.current;e.isJumping||(e.dinoVelocity=U,e.isJumping=!0)},[o,O]);return s.useEffect(()=>{const e=a=>{const l=a.target;l.tagName==="INPUT"||l.tagName==="TEXTAREA"||l.isContentEditable||(a.code==="Space"||a.code==="ArrowUp")&&(a.preventDefault(),C())},i=n.current;if(i)return i.addEventListener("keydown",e),()=>i.removeEventListener("keydown",e)},[C]),s.useLayoutEffect(()=>{const e=t.current;if(!e)return;const i=()=>{const l=e.parentElement;if(l&&l.clientWidth>0&&l.clientHeight>0){e.width=l.clientWidth,e.height=l.clientHeight,y.current=P(e),R.current.dinoY=e.height-I-b;const E=e.getContext("2d");E&&D.current!=="playing"&&N(e,E,D.current,g.current,S.current,y.current),J(A=>!A)}};i();const a=new ResizeObserver(i);return a.observe(e.parentElement),()=>a.disconnect()},[]),s.useEffect(()=>{if(o!=="playing")return;const e=t.current,i=e==null?void 0:e.getContext("2d");if(!e||!i)return;let a;const l=e.height-I,E=()=>{i.fillStyle=p.ground,i.fillRect(0,l,e.width,2),i.fillStyle=p.groundTexture;const r=R.current.groundOffset%30;for(let h=-r;h<e.width;h+=30)i.beginPath(),i.arc(h,l+12,1.5,0,Math.PI*2),i.fill(),i.beginPath(),i.arc(h+15,l+20,1,0,Math.PI*2),i.fill()},A=r=>{const w=R.current.dinoY;return 50+W-5>r.x&&55<r.x+r.width&&w+b>l-r.height&&w+5<l},G=()=>{const r=R.current;i.clearRect(0,0,e.width,e.height),r.dinoVelocity+=F,r.dinoY+=r.dinoVelocity;const h=l-b;r.dinoY>=h&&(r.dinoY=h,r.dinoVelocity=0,r.isJumping=!1),r.obstacles=r.obstacles.filter(d=>d.x>-Y),r.obstacles.forEach(d=>{d.x-=r.speed});const w=r.obstacles[r.obstacles.length-1],j=300+Math.random()*200;(!w||w.x<e.width-j)&&Math.random()<.02&&r.obstacles.push({x:e.width,width:Y,height:X});for(const d of r.obstacles)if(A(d)){g.current>S.current&&(S.current=g.current,V(g.current)),c("gameover");return}r.frameCount++,r.frameCount%6===0&&(g.current+=1,f(g.current)),r.speed+=q,r.groundOffset+=r.speed,E(),L(i,50,r.dinoY,r.isJumping?null:Math.floor(r.frameCount/5)%2),r.obstacles.forEach(d=>B(i,d.x,l,d.width,d.height)),_(e,i,g.current,S.current,y.current),a=requestAnimationFrame(G)};return a=requestAnimationFrame(G),()=>cancelAnimationFrame(a)},[o]),s.useEffect(()=>{if(o==="playing")return;const e=t.current,i=e==null?void 0:e.getContext("2d");!e||!i||N(e,i,o,m,u,y.current)},[o,m,u,v]),M.jsx("div",{ref:n,tabIndex:0,className:"relative h-full w-full cursor-pointer select-none overflow-hidden outline-none",onClick:C,onTouchStart:C,role:"application","aria-label":"Dino running game. Press space or tap to jump over obstacles.",children:M.jsx("canvas",{ref:t,className:"h-full w-full"})})}const ee=k({...z,component:K});export{ee as dinoGameFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as t}from"./react-qoZPGuNy.js";import{f as o,aI as a}from"./index-
|
|
1
|
+
import{j as t}from"./react-qoZPGuNy.js";import{f as o,aI as a}from"./index-DyvZokhk.js";a.schema;const i="rgba(255,255,255,0.16)";function n({config:r}){const e=r.orientation==="vertical",s=r.label.trim(),l=c=>t.jsx("span",{className:`shrink ${e?"w-0 flex-1":"h-0 flex-1"} `,style:e?{borderLeftWidth:1,borderLeftStyle:r.style,borderColor:i}:{borderTopWidth:1,borderTopStyle:r.style,borderColor:i}});return s?t.jsxs("div",{className:`flex h-full w-full items-center justify-center gap-3 ${e?"flex-col py-1":"px-1"}`,children:[l(),t.jsx("span",{className:"caption text-soft shrink-0 whitespace-nowrap uppercase tracking-[0.14em]",style:e?{writingMode:"vertical-rl"}:void 0,children:s}),l()]}):t.jsx("div",{className:`flex h-full w-full items-center justify-center ${e?"flex-col":""}`,children:l()})}const m=o({...a,component:n});export{m as dividerFrame};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as t,j as a}from"./react-qoZPGuNy.js";import{f as d,aD as s}from"./index-
|
|
1
|
+
import{r as t,j as a}from"./react-qoZPGuNy.js";import{f as d,aD as s}from"./index-DyvZokhk.js";import{F as o}from"./ui-Bq3RQsdJ.js";function i(){const[r,e]=t.useState("loading");return r==="error"?a.jsx(o,{children:"canvas unavailable"}):a.jsxs("div",{className:"relative h-full w-full overflow-hidden rounded-md",children:[r==="loading"&&a.jsx("div",{className:"absolute inset-0 z-10",children:a.jsx(o,{loading:!0,children:"loading canvas…"})}),a.jsx("iframe",{src:"https://drawdy.io",title:"Drawdy Canvas",className:`h-full w-full border-0 transition-opacity duration-300 ${r==="loaded"?"opacity-100":"opacity-0"}`,allow:"clipboard-read; clipboard-write",onLoad:()=>e("loaded"),onError:()=>e("error")})]})}const m=d({...s,component:i});export{m as drawdyFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as r}from"./react-qoZPGuNy.js";import{M as n,Z as i}from"./cycle-shared-BOGcJDzT.js";import{c as s,a as m}from"./format-CfAcS4D8.js";import{f as c,bj as l,bk as d}from"./index-DyvZokhk.js";import{F as a}from"./ui-Bq3RQsdJ.js";import"./indicators-CogwjDn9.js";import"./mini-line-chart-CHM5UBjJ.js";import"./d3-xK4fOkBU.js";import"./utils-DaT-yT0k.js";function p(){const{dxy:o,isLoading:t}=d();if(t)return r.jsx(a,{loading:!0,children:"loading DXY…"});if(!o)return r.jsx(a,{children:"no FX data yet"});const e=s(o.changePct);return r.jsx(n,{caption:"US Dollar Index",headline:o.value.toFixed(2),headlineColor:i,zone:{label:o.changePct>=0?"Stronger USD":"Weaker USD",color:e},sub:m(o.changePct),sparkline:o.history,sparkColor:e})}const C=c({...l,component:p});export{C as dxyFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.zf-editor{--zf-accent: hsl(var(--zf-accent-hue, 242) var(--zf-accent-sat, 90%) 76%);--font-dmsans: var(--zf-font-family, "DM Sans", sans-serif);--zf-ease-out: cubic-bezier(.23, 1, .32, 1);--zf-ease-drawer: cubic-bezier(.32, .72, 0, 1);position:relative}.zf-editor-main{display:flex;align-items:flex-start}.zf-editor-grid{flex:1;min-width:0;min-height:360px;padding-inline:var(--zf-pad-x, 0);border-radius:18px;border:1px dashed transparent;transition:border-color .2s var(--zf-ease-out),opacity .24s var(--zf-ease-out),filter .24s var(--zf-ease-out),transform .24s var(--zf-ease-out)}.zf-editor-grid[data-switching=true]{opacity:.15;filter:blur(10px);transform:scale(.985);transition:opacity .14s var(--zf-ease-out),filter .14s var(--zf-ease-out),transform .14s var(--zf-ease-out)}@media(prefers-reduced-motion:reduce){.zf-editor-grid[data-switching=true]{filter:none;transform:none}}.zf-editor.zf-customise .zf-editor-grid{border-color:#ffffff14}.zf-editor[data-mode=flow-horizontal] .zf-editor-grid{overflow-x:auto;overflow-y:hidden}.zf-editor .grid-stack>.grid-stack-item>.grid-stack-item-content{overflow:visible}@media(hover:hover){.zf-editor:not(.zf-customise) .grid-stack-item-content:hover>.zf-frame{transform:translateY(-2px);border-color:var( --zf-frame-border-hover, hsl(var(--zf-accent-hue, 242) 90% 76% / .42) )}.zf-editor:not(.zf-customise) .grid-stack-item-content:hover>.zf-frame:not(.zf-frame--error):after{opacity:1}}.zf-fill{width:100%;height:100%}.zf-editor .zf-frame,.zf-editor .zf-bare{animation:none}.zf-editor.zf-customise .grid-stack-item>.grid-stack-item-content{outline:2px dashed rgba(255,255,255,.08);outline-offset:-2px;border-radius:18px;transition:outline-color .2s var(--zf-ease-out)}.zf-editor.zf-customise .grid-stack-item>.grid-stack-item-content>*{pointer-events:none}.zf-editor.zf-customise .grid-stack-item:hover>.grid-stack-item-content{outline-color:var(--zf-accent)}.zf-editor.zf-customise .grid-stack-item>.grid-stack-item-content{cursor:grab}body.zf-dragging,body.zf-dragging *{cursor:grabbing!important}@keyframes zf-wiggle{0%,to{transform:rotate(-.4deg)}50%{transform:rotate(.4deg)}}.zf-editor.zf-customise:not([data-wiggle=off]) .grid-stack-item>.grid-stack-item-content{animation:zf-wiggle .32s ease-in-out infinite}.zf-editor.zf-customise .grid-stack-item:nth-child(2n)>.grid-stack-item-content{animation-delay:.05s;animation-duration:.28s}.zf-editor.zf-customise .grid-stack-item:nth-child(3n)>.grid-stack-item-content{animation-delay:.1s;animation-duration:.34s}.zf-editor.zf-customise .grid-stack-item:nth-child(5n)>.grid-stack-item-content{animation-delay:.15s;animation-duration:.26s}.zf-editor.zf-customise .grid-stack-item.ui-draggable-dragging>.grid-stack-item-content,.zf-editor.zf-customise .grid-stack-item.ui-resizing>.grid-stack-item-content{animation:none}@media(prefers-reduced-motion:reduce){.zf-editor.zf-customise .grid-stack-item>.grid-stack-item-content{animation:none}}.zf-del-btn{position:absolute;top:0;right:0;width:24px;height:24px;border-radius:9999px;background:linear-gradient(180deg,#f87171d1,#dc2626db);border:1px solid rgba(255,255,255,.28);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transform:scale(.8);-webkit-backdrop-filter:blur(12px) saturate(150%);backdrop-filter:blur(12px) saturate(150%);box-shadow:inset 0 1px #ffffff59,0 1px 2px #0000004d,0 8px 20px -12px #dc2626b3;transition:opacity .2s var(--zf-ease-out),transform .2s var(--zf-ease-out),background .2s var(--zf-ease-out),border-color .2s var(--zf-ease-out),box-shadow .2s var(--zf-ease-out);z-index:100;font-size:14px;font-weight:700;line-height:1;padding:0}.zf-del-btn:hover{background:linear-gradient(180deg,#f87171f2,#dc2626fa);border-color:#ffffff6b;transform:scale(1.1);box-shadow:inset 0 1px #ffffff6b,0 2px 6px #00000052,0 12px 26px -12px #dc2626d9}.zf-del-btn:active{transform:scale(.98)}.zf-editor.zf-customise .grid-stack-item:hover>.zf-del-btn{opacity:1;transform:scale(1)}.zf-cfg-btn{position:absolute;top:0;right:28px;width:24px;height:24px;border-radius:9999px;background:linear-gradient(180deg,#262838b8,#13141fc7);border:1px solid rgba(255,255,255,.16);color:#ffffffeb;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transform:scale(.8);-webkit-backdrop-filter:blur(14px) saturate(150%);backdrop-filter:blur(14px) saturate(150%);box-shadow:inset 0 1px #ffffff1a,0 1px 2px #00000052,0 8px 20px -12px #000c;transition:opacity .2s var(--zf-ease-out),transform .2s var(--zf-ease-out),color .2s var(--zf-ease-out),border-color .2s var(--zf-ease-out),box-shadow .2s var(--zf-ease-out);z-index:100;padding:0}.zf-cfg-btn:hover{color:hsl(var(--zf-accent-hue, 242) 96% 82%);border-color:hsl(var(--zf-accent-hue, 242) 90% 76% / .6);transform:scale(1.1);box-shadow:inset 0 1px #ffffff24,0 2px 6px #00000057,0 12px 26px -14px #000000d1}.zf-cfg-btn:active{transform:scale(.98)}.zf-cfg-btn>svg{display:block}.zf-editor.zf-customise .grid-stack-item:hover>.zf-cfg-btn{opacity:1;transform:scale(1)}.zf-editor .grid-stack-placeholder>.placeholder-content{background:hsl(var(--zf-accent-hue, 242) 90% 76% / .15);border:2px dashed hsl(var(--zf-accent-hue, 242) 90% 76% / .55);border-radius:18px}.ui-draggable-dragging>.zf-drag-ghost{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;gap:10px;padding:0 14px;direction:ltr;border-radius:12px;background:linear-gradient(165deg,#222332f2,#0d0e15f5);border:1px solid hsl(var(--zf-accent-hue, 242) var(--zf-accent-sat, 90%) 76% / .55);box-shadow:inset 0 1px #ffffff14,0 22px 50px -20px #000000d9,0 0 0 1px hsl(var(--zf-accent-hue, 242) var(--zf-accent-sat, 90%) 76% / .22);color:#eef1f8;font-family:var(--font-dmsans, "DM Sans", system-ui, sans-serif);-webkit-backdrop-filter:blur(10px) saturate(140%);backdrop-filter:blur(10px) saturate(140%);overflow:hidden}.ui-draggable-dragging>.zf-drag-ghost>.zf-drag-ghost-icon{width:30px;height:30px;flex:none;border-radius:7px;object-fit:cover}.ui-draggable-dragging>.zf-drag-ghost>.zf-drag-ghost-name{font-size:13px;font-weight:700;letter-spacing:.01em;text-transform:capitalize;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}body:has(.ui-draggable-dragging),body:has(.ui-draggable-dragging) *{cursor:grabbing!important}.zf-editor-bar{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-bottom:14px}.zf-editor-bar-spacer{flex:1}.zf-btn{font:inherit;font-size:13px;font-weight:600;line-height:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 15px;border-radius:10px;cursor:pointer;border:1px solid rgba(255,255,255,.14);background:linear-gradient(180deg,#262838b8,#13141fc7);color:#ffffffeb;-webkit-backdrop-filter:blur(14px) saturate(150%);backdrop-filter:blur(14px) saturate(150%);box-shadow:inset 0 1px #ffffff14,0 1px 2px #00000052,0 10px 24px -14px #000c;transition:background .18s var(--zf-ease-out),border-color .18s var(--zf-ease-out),color .18s var(--zf-ease-out),box-shadow .18s var(--zf-ease-out),transform .18s var(--zf-ease-out)}.zf-btn:hover{background:linear-gradient(180deg,#323447d1,#1a1b29db);border-color:#ffffff38;transform:translateY(-1px);box-shadow:inset 0 1px #ffffff1a,0 2px 6px #00000057,0 16px 30px -16px #000000d1}.zf-btn:active{transform:translateY(0) scale(.97);box-shadow:inset 0 1px 3px #00000073,0 1px 2px #0000004d}.zf-btn:focus-visible{outline:none;border-color:hsl(var(--zf-accent-hue, 242) 90% 76% / .7);box-shadow:inset 0 1px #ffffff14,0 0 0 3px hsl(var(--zf-accent-hue, 242) 90% 76% / .35)}.zf-btn--primary{border-color:hsl(var(--zf-accent-hue, 242) 90% 72% / .7);background:linear-gradient(180deg,hsl(var(--zf-accent-hue, 242) 96% 81%),hsl(var(--zf-accent-hue, 242) 88% 72%));color:#0b0c13;box-shadow:inset 0 1px #fff6,0 1px 2px #0000004d,0 12px 26px -12px hsl(var(--zf-accent-hue, 242) 85% 60% / .7)}.zf-btn--primary:hover{border-color:hsl(var(--zf-accent-hue, 242) 95% 78% / .85);background:linear-gradient(180deg,hsl(var(--zf-accent-hue, 242) 100% 85%),hsl(var(--zf-accent-hue, 242) 92% 76%));box-shadow:inset 0 1px #ffffff73,0 2px 6px #0000004d,0 18px 34px -14px hsl(var(--zf-accent-hue, 242) 85% 60% / .8)}.zf-btn--primary:focus-visible{box-shadow:inset 0 1px #fff6,0 0 0 3px hsl(var(--zf-accent-hue, 242) 90% 76% / .45)}.zf-btn--danger{border-color:#f2155352;color:#ff9aab}.zf-btn--danger:hover{border-color:#f215538c;color:#ffb3bf;background:linear-gradient(180deg,#781c349e,#4a1224b8)}.zf-btn--danger:focus-visible{border-color:#f21553b3;box-shadow:inset 0 1px #ffffff14,0 0 0 3px #f2155359}.zf-btn--ghost{border-color:#ffffff1a;background:linear-gradient(180deg,#1e1f2c80,#10111a94);color:#ffffffc7}.zf-btn--ghost:hover{color:#fffffff2}.zf-btn--icon{padding:0;width:38px;height:38px;border-radius:11px;color:#ffffffd9}.zf-btn--icon:hover{color:hsl(var(--zf-accent-hue, 242) 96% 82%);border-color:hsl(var(--zf-accent-hue, 242) 90% 76% / .55)}.zf-btn--icon>svg{display:block}@media(prefers-reduced-motion:reduce){.zf-btn:hover,.zf-btn:active,.zf-del-btn:active,.zf-cfg-btn:active,.zf-rail-tab:active,.zf-dialog-close:active{transform:none}}.zf-rail{flex:none;width:0;margin-left:0;overflow:hidden;position:sticky;top:12px;transition:width .32s var(--zf-ease-drawer),margin-left .32s var(--zf-ease-drawer)}.zf-editor.zf-customise .zf-rail{width:320px;margin-left:16px}.zf-editor.zf-customise[data-mode=flow-horizontal] .zf-rail{margin-right:24px}.zf-rail-inner{box-sizing:border-box;width:320px;display:flex;flex-direction:column;gap:12px;padding:14px;border-radius:14px;background:linear-gradient(180deg,#141622b3,#0b0c13cc);border:1px solid rgba(255,255,255,.08);max-height:calc(100vh - 24px);overflow-x:hidden;overflow-y:auto;opacity:0;transition:opacity .2s var(--zf-ease-out)}.zf-editor.zf-customise .zf-rail-inner{opacity:1;transition-delay:.12s}.zf-rail-actions{display:flex;flex:none;gap:8px}.zf-rail-actions .zf-btn{flex:1}.zf-rail-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:16px}@media(prefers-reduced-motion:reduce){.zf-rail,.zf-rail-inner{transition:none}}.zf-rail-tabs{display:flex;gap:4px;padding:3px;border-radius:9px;background:#00000047;border:1px solid rgba(255,255,255,.07)}.zf-rail-tab{flex:1;font:inherit;font-size:11px;font-weight:600;letter-spacing:.04em;color:#ffffff80;background:transparent;border:0;border-radius:7px;padding:6px 8px;cursor:pointer;transition:background .15s var(--zf-ease-out),color .15s var(--zf-ease-out),box-shadow .15s var(--zf-ease-out),transform .15s var(--zf-ease-out)}.zf-rail-tab:hover{color:#ffffffd1}.zf-rail-tab:active{transform:scale(.97)}.zf-rail-tab.is-active{color:#fff;background:hsl(var(--zf-accent-hue, 242) 90% 70% / .22);box-shadow:inset 0 0 0 1px hsl(var(--zf-accent-hue, 242) 90% 76% / .4)}.zf-rail-tab:focus-visible{outline:2px solid hsl(var(--zf-accent-hue, 242) 90% 76% / .7);outline-offset:1px}.zf-mode-seg{display:flex;gap:4px;padding:3px;border-radius:9px;background:#00000047;border:1px solid rgba(255,255,255,.07)}.zf-mode-seg-btn{flex:1;font:inherit;font-size:11px;font-weight:600;letter-spacing:.04em;color:#ffffff80;background:transparent;border:0;border-radius:7px;padding:6px 8px;cursor:pointer;transition:background .15s var(--zf-ease-out),color .15s var(--zf-ease-out),box-shadow .15s var(--zf-ease-out),transform .15s var(--zf-ease-out)}.zf-mode-seg-btn:hover:not(:disabled){color:#ffffffd1}.zf-mode-seg-btn:active:not(:disabled){transform:scale(.97)}.zf-mode-seg-btn.is-active{color:#fff;background:hsl(var(--zf-accent-hue, 242) 90% 70% / .22);box-shadow:inset 0 0 0 1px hsl(var(--zf-accent-hue, 242) 90% 76% / .4)}.zf-mode-seg-btn:disabled{opacity:.4;cursor:not-allowed}.zf-mode-seg-btn:focus-visible{outline:2px solid hsl(var(--zf-accent-hue, 242) 90% 76% / .7);outline-offset:1px}.zf-mode-seg-hint{margin:8px 1px 0;font-size:10.5px;line-height:1.4;color:#ffffff6b}.zf-rail-title{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#ffffff75;margin:0 0 8px}.zf-palette-hint{font-size:11px;color:#fff6;margin:-4px 0 8px}.zf-palette-search{display:flex;align-items:center;gap:7px;height:34px;margin:0 0 8px;padding:0 9px;border-radius:9px;border:1px solid rgba(255,255,255,.11);background:#00000047;color:#ffffff7a}.zf-palette-search:focus-within{border-color:var(--zf-accent);box-shadow:0 0 0 3px hsl(var(--zf-accent-hue, 242) 90% 76% / .12)}.zf-palette-search input{min-width:0;flex:1;border:0;outline:0;padding:0;background:transparent;color:#ffffffe6;font:inherit;font-size:12px}.zf-palette-search input::placeholder{color:#ffffff57}.zf-palette-search-clear{display:flex;align-items:center;justify-content:center;flex:none;width:18px;height:18px;padding:0;border:0;border-radius:5px;background:transparent;color:#ffffff80;cursor:pointer;transition:background .15s var(--zf-ease-out),color .15s var(--zf-ease-out)}.zf-palette-search-clear:hover{background:#ffffff14;color:#fff}.zf-palette-search-clear svg{width:12px;height:12px}.zf-palette-empty{font-size:12px;color:#ffffff73;padding:6px 2px;margin:0}.zf-palette-cats{display:flex;flex-direction:column;gap:6px}.zf-palette-cat{border-radius:10px;border:1px solid rgba(255,255,255,.06);background:#ffffff05;overflow:hidden;transition:background .15s var(--zf-ease-out),border-color .15s var(--zf-ease-out)}.zf-palette-cat.is-open{background:#ffffff09;border-color:#ffffff1a}.zf-palette-cat-header{display:flex;align-items:center;gap:9px;width:100%;font:inherit;text-align:left;cursor:pointer;padding:10px 11px;background:transparent;border:0;color:#fffc;transition:background .15s var(--zf-ease-out),color .15s var(--zf-ease-out)}.zf-palette-cat-header:hover{background:#ffffff0b;color:#fff}.zf-palette-cat-header:focus-visible{outline:2px solid hsl(var(--zf-accent-hue, 242) 90% 76% / .7);outline-offset:-2px}.zf-palette-cat-chevron{width:13px;height:13px;flex:none;color:#fff6;transition:transform .18s var(--zf-ease-out),color .15s var(--zf-ease-out)}.zf-palette-cat.is-open .zf-palette-cat-chevron{transform:rotate(90deg);color:hsl(var(--zf-accent-hue, 242) 70% 80% / .9)}.zf-palette-cat-label{flex:1;min-width:0;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.zf-palette-cat.is-open .zf-palette-cat-label{color:hsl(var(--zf-accent-hue, 242) 72% 84% / .95)}.zf-palette-cat-count{flex:none;font-size:10px;font-weight:600;font-variant-numeric:tabular-nums;color:#ffffff80;background:#ffffff12;border-radius:999px;padding:1px 7px;min-width:22px;text-align:center}.zf-palette-cat-body{padding:0 8px 9px;animation:zf-cat-in .18s var(--zf-ease-out)}@keyframes zf-cat-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.zf-palette-cat-body{animation:none}.zf-palette-cat-chevron{transition:none}}.zf-palette-cat-desc{font-size:10.5px;line-height:1.45;color:#ffffff61;margin:0 2px 9px}.zf-palette{display:flex;flex-direction:column;gap:6px}.zf-newwidget{display:flex;align-items:center;gap:10px;text-align:left;cursor:grab;user-select:none;-webkit-user-select:none;min-height:58px;padding:7px 10px 7px 8px;border-radius:9px;background:#ffffff0a;border:1px solid rgba(255,255,255,.07);transition:background .15s var(--zf-ease-out),border-color .15s var(--zf-ease-out)}.zf-newwidget:hover{background:#ffffff17;border-color:hsl(var(--zf-accent-hue, 242) 90% 76% / .4)}.zf-newwidget:active{cursor:grabbing}.zf-newwidget-icon{width:42px;height:42px;flex:none;border-radius:10px;object-fit:cover;background:#ffffff0d;box-shadow:inset 0 0 0 1px #ffffff14,0 8px 18px #00000038}.zf-newwidget-copy{min-width:0}.zf-newwidget-name{font-size:12px;font-weight:600;color:#ffffffe6;text-transform:capitalize}.zf-newwidget-desc{font-size:11px;color:#fff6;margin-top:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.zf-field{display:flex;flex-direction:column;gap:5px;margin-bottom:10px}.zf-field label{font-size:11px;color:#ffffff8c}.zf-field-hint{font-size:10px;color:#ffffff61;line-height:1.4;margin:0}.zf-input,.zf-textarea{font:inherit;font-size:12px;color:#ffffffe6;background:#0000004d;border:1px solid rgba(255,255,255,.12);border-radius:7px;padding:7px 9px;width:100%;box-sizing:border-box}.zf-textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;min-height:120px;resize:vertical;line-height:1.45}.zf-input:focus,.zf-textarea:focus{outline:none;border-color:var(--zf-accent)}.zf-checkbox{display:flex;align-items:center;gap:7px;font-size:12px;color:#ffffffb3;margin-bottom:10px;cursor:pointer}.zf-config-error{font-size:11px;color:#ff8b9d;line-height:1.45;margin:-4px 0 10px;white-space:pre-wrap}.zf-rail-empty{font-size:12px;color:#fff6;line-height:1.5}.zf-select{font:inherit;font-size:12px;color:#ffffffe6;background:#0000004d;border:1px solid rgba(255,255,255,.12);border-radius:7px;padding:7px 28px 7px 9px;width:100%;box-sizing:border-box;cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-opacity='0.55' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center}.zf-select:focus{outline:none;border-color:var(--zf-accent)}.zf-select option{color:#0b0c13}.zf-field-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.zf-field-num{font-size:12px;font-variant-numeric:tabular-nums;font-weight:700;color:#ffffffd1}.zf-range{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:6px;margin:4px 0 2px;border-radius:9999px;outline:none;cursor:pointer;background:#ffffff21}.zf-range::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:15px;height:15px;border-radius:9999px;background:var(--zf-accent);border:2px solid #fff;box-shadow:0 1px 4px #00000080;cursor:pointer}.zf-range::-moz-range-thumb{width:15px;height:15px;border-radius:9999px;background:var(--zf-accent);border:2px solid #fff;box-shadow:0 1px 4px #00000080;cursor:pointer}.zf-range:focus-visible{box-shadow:0 0 0 3px hsl(var(--zf-accent-hue, 242) 90% 76% / .3)}.zf-color-row{display:flex;gap:8px}.zf-color{flex:none;width:40px;height:34px;padding:2px;border-radius:7px;border:1px solid rgba(255,255,255,.12);background:#0000004d;cursor:pointer}.zf-textarea--prose{font-family:inherit;min-height:76px}.zf-taglist{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:2px}.zf-tag{display:inline-flex;align-items:center;gap:5px;padding:4px 5px 4px 9px;border-radius:9999px;border:1px solid rgba(255,255,255,.1);background:#0000003d;font-size:11px;font-weight:600;letter-spacing:.02em;color:#ffffffd1}.zf-symbol-editor{position:relative;display:flex;flex-direction:column;gap:9px;margin:0 0 12px;padding:10px;border-radius:11px;border:1px solid hsl(var(--zf-accent-hue, 242) 90% 76% / .16);background:linear-gradient(135deg,hsl(var(--zf-accent-hue, 242) 90% 76% / .1),#ffffff09 45%,#00000029),#ffffff08}.zf-symbol-head,.zf-holding-row,.zf-holding-main,.zf-selected-symbol,.zf-symbol-search,.zf-symbol-chip{display:flex;align-items:center}.zf-symbol-head{justify-content:space-between;gap:10px}.zf-symbol-label{font-size:10px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:#ffffff75}.zf-symbol-detail{margin-top:2px;font-size:13px;font-weight:700;color:#ffffffe0}.zf-symbol-source{flex:none;padding:4px 7px;border-radius:9999px;border:1px solid rgba(255,255,255,.09);background:#0003;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#ffffff7a}.zf-symbol-source.is-loading{color:var(--zf-accent);border-color:hsl(var(--zf-accent-hue, 242) 90% 76% / .24)}.zf-selected-symbol{min-width:0;gap:8px;padding:7px 8px;border-radius:9px;border:1px solid rgba(255,255,255,.08);background:#00000038}.zf-selected-symbol.is-compact{gap:6px;padding:0;border:0;background:transparent}.zf-selected-symbol-text{min-width:0;display:flex;flex-direction:column;gap:1px}.zf-selected-symbol-text strong,.zf-symbol-option-main strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:#ffffffe6}.zf-selected-symbol-text em,.zf-symbol-option-main em{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal;font-size:10px;color:#fff6}.zf-selected-symbol-price{margin-left:auto;font-variant-numeric:tabular-nums;font-size:12px;font-weight:700;color:#ffffffb8}.zf-symbol-avatar{flex:none;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:7px;font-size:9px;font-weight:800;letter-spacing:.02em;line-height:1}.zf-symbol-avatar--stock{background:#ffffffeb;color:#151821;box-shadow:inset 0 0 0 1px #00000014}.zf-symbol-avatar--crypto{background:hsl(var(--zf-accent-hue, 242) 90% 76% / .18);color:var(--zf-accent);box-shadow:inset 0 0 0 1px hsl(var(--zf-accent-hue, 242) 90% 76% / .22)}.zf-symbol-avatar--logo{object-fit:contain}.zf-symbol-avatar--logo.zf-symbol-avatar--stock{padding:2px}.zf-symbol-avatar--logo.zf-symbol-avatar--crypto{border-radius:9999px;background:transparent;box-shadow:none}.zf-symbol-chips{display:flex;flex-wrap:wrap;gap:6px}.zf-symbol-chip{min-width:0;gap:6px;max-width:100%;padding:6px 6px 6px 7px;border-radius:9999px;border:1px solid rgba(255,255,255,.08);background:#00000038}.zf-symbol-remove{flex:none;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:9999px;padding:0;cursor:pointer;background:#ffffff0f;color:#ffffff80}.zf-symbol-remove:hover{background:#ef44442e;color:#ff8b9d}.zf-symbol-empty{padding:7px 8px;border-radius:8px;border:1px dashed rgba(255,255,255,.09);color:#ffffff5c;font-size:11px}.zf-symbol-combo{position:relative}.zf-symbol-search{gap:7px;height:34px;border-radius:9px;padding:0 9px;border:1px solid rgba(255,255,255,.11);background:#00000047;color:#ffffff7a}.zf-symbol-search:focus-within{border-color:var(--zf-accent);box-shadow:0 0 0 3px hsl(var(--zf-accent-hue, 242) 90% 76% / .12)}.zf-symbol-search.is-disabled{opacity:.55}.zf-symbol-search input{min-width:0;flex:1;border:0;outline:0;padding:0;background:transparent;color:#ffffffe6;font:inherit;font-size:12px}.zf-symbol-search input::placeholder{color:#ffffff57}.zf-symbol-menu{position:absolute;z-index:120;top:calc(100% + 6px);left:0;right:0;display:flex;flex-direction:column;gap:3px;max-height:286px;overflow-y:auto;padding:6px;border-radius:11px;border:1px solid rgba(255,255,255,.12);background:#0b0c13f5;box-shadow:0 18px 36px #00000075,0 0 0 1px #0000004d;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.zf-symbol-option{width:100%;min-width:0;display:grid;grid-template-columns:22px minmax(0,1fr) auto 16px;align-items:center;gap:8px;min-height:40px;padding:7px;border:0;border-radius:8px;background:transparent;color:inherit;text-align:left;cursor:pointer}.zf-symbol-option:hover,.zf-symbol-option:focus-visible{outline:none;background:#ffffff13}.zf-symbol-option:disabled{cursor:default;opacity:.52}.zf-symbol-option.is-selected{background:hsl(var(--zf-accent-hue, 242) 90% 76% / .1)}.zf-symbol-option--custom{border-top:1px solid rgba(255,255,255,.06);border-radius:0 0 8px 8px}.zf-symbol-option-main{min-width:0;display:flex;flex-direction:column;gap:1px}.zf-symbol-option-meta{display:flex;flex-direction:column;align-items:flex-end;gap:1px;font-variant-numeric:tabular-nums;font-size:10px;color:#ffffff70}.zf-symbol-change{font-size:10px;font-weight:800}.zf-symbol-change.is-up{color:#42d67a}.zf-symbol-change.is-down{color:#ff637d}.zf-symbol-custom-icon{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:7px;background:#ffffff12;color:var(--zf-accent)}.zf-symbol-menu-status{padding:10px 8px;color:#ffffff61;font-size:11px}.zf-holding-list{display:flex;flex-direction:column;gap:6px}.zf-holding-row{justify-content:space-between;gap:8px;min-width:0;padding:7px;border-radius:9px;border:1px solid rgba(255,255,255,.08);background:#0000002e}.zf-holding-main{min-width:0;gap:7px}.zf-holding-amount{flex:none;font-variant-numeric:tabular-nums;font-size:11px;color:#ffffff70}.zf-theme{margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid rgba(255,255,255,.07)}.zf-theme-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px}.zf-theme-val{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-variant-numeric:tabular-nums;color:#ffffff8c}.zf-theme-swatch{width:11px;height:11px;border-radius:9999px;background:var(--zf-accent);box-shadow:0 0 8px hsl(var(--zf-accent-hue, 242) var(--zf-accent-sat, 90%) 76% / .9)}.zf-theme-knob-end{display:inline-flex;align-items:center;gap:10px}.zf-theme-reset{background:none;border:none;padding:0;font:inherit;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#ffffff61;cursor:pointer}.zf-theme-reset:hover{color:var(--zf-accent)}.zf-hue-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:10px;border-radius:9999px;outline:none;cursor:pointer;border:1px solid rgba(255,255,255,.12);background:linear-gradient(to right,#f98b8b,#f9f98b,#8bf98b,#8bf9f9,#8b8bf9,#f98bf9,#f98b8b)}.zf-hue-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:9999px;background:var(--zf-accent);border:2px solid #fff;box-shadow:0 1px 4px #00000080;cursor:pointer}.zf-hue-slider::-moz-range-thumb{width:16px;height:16px;border-radius:9999px;background:var(--zf-accent);border:2px solid #fff;box-shadow:0 1px 4px #00000080;cursor:pointer}.zf-presets{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.zf-preset{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:#ffffff08;color:#ffffffb3;font:inherit;font-size:11px;font-weight:600;cursor:pointer;text-align:left;transition:border-color .15s var(--zf-ease-out, ease),background .15s var(--zf-ease-out, ease),color .15s var(--zf-ease-out, ease)}.zf-preset:hover{border-color:#ffffff38;color:#ffffffe6}.zf-preset.is-active{border-color:var(--zf-accent);color:#fff;box-shadow:0 0 0 1px var(--zf-accent)}.zf-preset-swatch{width:16px;height:16px;flex:none;border-radius:5px;border:1px solid rgba(255,255,255,.18)}.zf-preset-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zf-seg{display:flex;gap:6px}.zf-seg-btn{flex:1;padding:7px 6px;border-radius:9px;border:1px solid rgba(255,255,255,.1);background:#ffffff08;color:#ffffff9e;font:inherit;font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;transition:border-color .15s var(--zf-ease-out, ease),background .15s var(--zf-ease-out, ease),color .15s var(--zf-ease-out, ease)}.zf-seg-btn:hover{border-color:#ffffff38;color:#ffffffd9}.zf-seg-btn.is-active{border-color:var(--zf-accent);background:hsl(var(--zf-accent-hue, 242) var(--zf-accent-sat, 90%) 60% / .14);color:#fff}.zf-color{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:22px;height:16px;padding:0;border:1px solid rgba(255,255,255,.18);border-radius:5px;background:none;cursor:pointer;vertical-align:middle}.zf-color::-webkit-color-swatch-wrapper{padding:0}.zf-color::-webkit-color-swatch{border:none;border-radius:4px}.zf-color::-moz-color-swatch{border:none;border-radius:4px}.zf-dialog-backdrop{--zf-accent: hsl(var(--zf-accent-hue, 242) var(--zf-accent-sat, 90%) 76%);--zf-ease-out: cubic-bezier(.23, 1, .32, 1);position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px;background:#06070c9e;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:zf-dialog-fade .16s var(--zf-ease-out)}.zf-dialog{width:min(440px,100%);max-height:calc(100vh - 48px);display:flex;flex-direction:column;border-radius:16px;border:1px solid rgba(255,255,255,.1);background:linear-gradient(180deg,#141622fa,#0b0c13fc);box-shadow:0 30px 80px -20px #000c,0 0 0 1px #0006;animation:zf-dialog-pop .18s cubic-bezier(.32,.72,0,1)}.zf-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 16px 12px;border-bottom:1px solid rgba(255,255,255,.07)}.zf-dialog-title{margin:0;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#ffffff9e}.zf-dialog-close{flex:none;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid rgba(255,255,255,.1);background:#ffffff0a;color:#ffffffb3;cursor:pointer;transition:background .15s var(--zf-ease-out),color .15s var(--zf-ease-out),border-color .15s var(--zf-ease-out),transform .15s var(--zf-ease-out)}.zf-dialog-close:hover{background:#ffffff17;border-color:#ffffff2e;color:#fff}.zf-dialog-close:active{transform:scale(.94)}.zf-dialog-close>svg{display:block}.zf-dialog-body{padding:16px;overflow-y:auto;scrollbar-gutter:stable}.zf-dialog-body>:first-child{margin-top:0}.zf-dialog-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px 16px;border-top:1px solid rgba(255,255,255,.07)}@keyframes zf-dialog-fade{0%{opacity:0}to{opacity:1}}@keyframes zf-dialog-pop{0%{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.zf-dialog-backdrop,.zf-dialog{animation:none}}
|