zframes 0.6.0 → 0.7.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.
Files changed (131) hide show
  1. package/dist/index.js +130 -3
  2. package/package.json +6 -6
  3. package/runtime/assets/{bitcoin-dominance-CweHlZx7.js → bitcoin-dominance-rskkp4h2.js} +1 -1
  4. package/runtime/assets/{breakeven-CG9rKwgE.js → breakeven-DyCA3ya5.js} +1 -1
  5. package/runtime/assets/{breathing-cDundHq6.js → breathing-C8Y-Izs8.js} +1 -1
  6. package/runtime/assets/{btc-blocks-Do_nySHd.js → btc-blocks-BxS4aEAB.js} +1 -1
  7. package/runtime/assets/{btc-difficulty-vNbz5uRo.js → btc-difficulty-CNFxEiPh.js} +1 -1
  8. package/runtime/assets/{btc-fees-BmADLsmK.js → btc-fees-Db-5JKh9.js} +1 -1
  9. package/runtime/assets/{btc-hashrate-Wx2RAG-5.js → btc-hashrate-Dy2c30Gb.js} +1 -1
  10. package/runtime/assets/{btc-mempool-CTwbkMUR.js → btc-mempool-DFgUVk8y.js} +1 -1
  11. package/runtime/assets/{calculator-mvv6XpQC.js → calculator-v01_FkZv.js} +1 -1
  12. package/runtime/assets/chain-activity-CuA1eiPY.js +1 -0
  13. package/runtime/assets/{chart-utils-BYIZMM9J.js → chart-utils-Ct7WziT9.js} +1 -1
  14. package/runtime/assets/{checklist-CuEw3GpE.js → checklist-Be_y1aTE.js} +1 -1
  15. package/runtime/assets/{clock-Cjnwi03W.js → clock-BWFux5om.js} +1 -1
  16. package/runtime/assets/{coin-movers-Bcx1XR0F.js → coin-movers-BcXfoFc6.js} +1 -1
  17. package/runtime/assets/{countdown-Cdi5gSSu.js → countdown-CXSOeUWD.js} +1 -1
  18. package/runtime/assets/{cycle-shared-BOGcJDzT.js → cycle-shared-pyXzkgt1.js} +1 -1
  19. package/runtime/assets/{cycle-signals-CS629ZDc.js → cycle-signals-BrKJX2c6.js} +1 -1
  20. package/runtime/assets/{d3-xK4fOkBU.js → d3-Dr3MHXm3.js} +1 -1
  21. package/runtime/assets/{daily-analysis-DX8bVq85.js → daily-analysis-CWluVygw.js} +1 -1
  22. package/runtime/assets/{day-meter-DDfTuhms.js → day-meter-Bi5OZCC4.js} +1 -1
  23. package/runtime/assets/{defi-revenue-CpeAGwhb.js → defi-revenue-CFNSNfG7.js} +1 -1
  24. package/runtime/assets/dex-hot-pools-C4TrRB17.js +1 -0
  25. package/runtime/assets/dex-pool-treemap-DqvlN1Jo.js +1 -0
  26. package/runtime/assets/{dex-volume-chart-sHIuJACJ.js → dex-volume-chart-BLR-L_B0.js} +1 -1
  27. package/runtime/assets/{dex-volume-treemap-rSTrzz7O.js → dex-volume-treemap-qyEBx4ll.js} +1 -1
  28. package/runtime/assets/{dice-BrFORdjN.js → dice-CuzcQipj.js} +1 -1
  29. package/runtime/assets/{dino-game-BOV8mV1d.js → dino-game-CiGWzsag.js} +1 -1
  30. package/runtime/assets/{divider-C33tH1RU.js → divider-DvK5oM9v.js} +1 -1
  31. package/runtime/assets/{drawdy-BIb36JN9.js → drawdy-Bxr7eJ-7.js} +1 -1
  32. package/runtime/assets/{dxy-CRifEdp_.js → dxy-CVbZmRsT.js} +1 -1
  33. package/runtime/assets/editor-CQM8mtD8.css +1 -0
  34. package/runtime/assets/{editor-Dnp1eXvY.js → editor-EOEtB4_n.js} +1 -1
  35. package/runtime/assets/{etf-flows-BV10E2R-.js → etf-flows-Cl1WliDl.js} +1 -1
  36. package/runtime/assets/{etf-flows-chart-DHu8mkXm.js → etf-flows-chart-B4Im9TVy.js} +1 -1
  37. package/runtime/assets/{eth-staking-BqWeJq6F.js → eth-staking-_q2b8DEx.js} +1 -1
  38. package/runtime/assets/{eth-supply-CF-MgHjn.js → eth-supply-55OpYYBL.js} +1 -1
  39. package/runtime/assets/{fear-greed-DuDR56h2.js → fear-greed-CywOCckQ.js} +1 -1
  40. package/runtime/assets/{filings-feed-BpfO2yF6.js → filings-feed-CosEi4NL.js} +1 -1
  41. package/runtime/assets/{financial-stress-BfYJdlry.js → financial-stress-DBCae4TA.js} +1 -1
  42. package/runtime/assets/{flappy-bird-Dbb2UQBv.js → flappy-bird-CBVgwfgX.js} +1 -1
  43. package/runtime/assets/{fundamentals-CUnqjF--.js → fundamentals-zRwGUcmb.js} +1 -1
  44. package/runtime/assets/{funding-comparison-CMKxW1n-.js → funding-comparison-wCNoCb1H.js} +1 -1
  45. package/runtime/assets/{funding-heatmap-CZWnYF8Y.js → funding-heatmap-a4zdnKi9.js} +1 -1
  46. package/runtime/assets/{funding-rate-chart-C-tpwid_.js → funding-rate-chart-Da9WMKyJ.js} +1 -1
  47. package/runtime/assets/{fx-board-YAy44m5d.js → fx-board-CxhwDBHO.js} +1 -1
  48. package/runtime/assets/{heading-uIVBEE7K.js → heading-b5H33lig.js} +1 -1
  49. package/runtime/assets/{holiday-calendar-DCj83hi2.js → holiday-calendar-C77t3m6c.js} +1 -1
  50. package/runtime/assets/{image-CITPAmp0.js → image-C8ZSUHEx.js} +1 -1
  51. package/runtime/assets/{index-XGtH5pVY.css → index-BXLwJuoo.css} +1 -1
  52. package/runtime/assets/{index-CrmTiZaB.css → index-C-VdMqKb.css} +1 -1
  53. package/runtime/assets/index-DKixdHYB.js +1 -0
  54. package/runtime/assets/index-kB-TyxKi.js +1073 -0
  55. package/runtime/assets/{inflation-pulse-Bqa3-cuC.js → inflation-pulse-CoXcuabd.js} +1 -1
  56. package/runtime/assets/{journal-log-Bgjia8cQ.js → journal-log-BDu39CBE.js} +1 -1
  57. package/runtime/assets/{journal-open-Bm5gwWXz.js → journal-open-FejLOzlA.js} +1 -1
  58. package/runtime/assets/{journal-results-cEWe2pbe.js → journal-results-CtKy6MZM.js} +1 -1
  59. package/runtime/assets/{journal-score-vmfF-9bK.js → journal-score-Bd7IDYl4.js} +1 -1
  60. package/runtime/assets/{journal-ui-ApBNIq5_.js → journal-ui-C_htu3aM.js} +1 -1
  61. package/runtime/assets/{labor-market-azDXD-dR.js → labor-market-DR0j05Gy.js} +1 -1
  62. package/runtime/assets/{lightning-stats-nkyh2dOX.js → lightning-stats-botYMCIX.js} +1 -1
  63. package/runtime/assets/{link-grid-BEo4b54T.js → link-grid-DFuD6XVK.js} +1 -1
  64. package/runtime/assets/{ma-multiplier-BllDQMF5.js → ma-multiplier-s6ix-kL8.js} +1 -1
  65. package/runtime/assets/{macro-calendar-Ck0dJk4p.js → macro-calendar-Dhnx2n5Q.js} +1 -1
  66. package/runtime/assets/{market-cap-treemap-AxE2EYPO.js → market-cap-treemap-BWtivvac.js} +1 -1
  67. package/runtime/assets/{market-hours-BSwXtU8c.js → market-hours-wSrW5Elv.js} +1 -1
  68. package/runtime/assets/{marquee-1Zr5qDJP.js → marquee-NHBiLJUk.js} +1 -1
  69. package/runtime/assets/{mayer-multiple-DpBJNd4d.js → mayer-multiple-CZC5q6ra.js} +1 -1
  70. package/runtime/assets/{mini-line-chart-CHM5UBjJ.js → mini-line-chart-QWeuTPfP.js} +1 -1
  71. package/runtime/assets/{mining-pools-B-jxdTot.js → mining-pools-BxipfJmv.js} +1 -1
  72. package/runtime/assets/{mover-row-Dg96EIqq.js → mover-row-CUd1i2yt.js} +1 -1
  73. package/runtime/assets/{mvrv-Dx_S0TwE.js → mvrv-BIwCiyRN.js} +1 -1
  74. package/runtime/assets/{national-debt-BKVBHaqm.js → national-debt-DwC5azy3.js} +1 -1
  75. package/runtime/assets/{news-feed-C9itZmyp.js → news-feed-BhAsJ6gt.js} +1 -1
  76. package/runtime/assets/nft-collections-sD-yDfKU.js +1 -0
  77. package/runtime/assets/nft-treemap-Bqhk41Of.js +1 -0
  78. package/runtime/assets/{note-BtCnmuMo.js → note-C1-RPOvR.js} +1 -1
  79. package/runtime/assets/{nupl-aIjkc57m.js → nupl-U-WHVDJ0.js} +1 -1
  80. package/runtime/assets/{open-interest-C0ulogv6.js → open-interest-C0_M6MkH.js} +1 -1
  81. package/runtime/assets/{options-iv-CdUder3x.js → options-iv-CIHzBULM.js} +1 -1
  82. package/runtime/assets/{options-oi-strike-CvCZnMCR.js → options-oi-strike-Db8lP27S.js} +1 -1
  83. package/runtime/assets/{options-put-call-FuaDHJ-S.js → options-put-call-5ex7Ablt.js} +1 -1
  84. package/runtime/assets/{pi-cycle-BuCnLnIJ.js → pi-cycle-eACZGQhd.js} +1 -1
  85. package/runtime/assets/{pomodoro-DDBVVcSR.js → pomodoro-CaS6y-eQ.js} +1 -1
  86. package/runtime/assets/portfolio-allocation-NR-4wbGL.js +1 -0
  87. package/runtime/assets/{portfolio-common-Bi16i0aA.js → portfolio-common-Cfpnudvk.js} +1 -1
  88. package/runtime/assets/{portfolio-holdings-MyAinCzt.js → portfolio-holdings-D-SG9B5X.js} +1 -1
  89. package/runtime/assets/{portfolio-value-BPURwKf8.js → portfolio-value-DPKyirHc.js} +1 -1
  90. package/runtime/assets/{prediction-markets-Bzy51qnV.js → prediction-markets-Cnf0KZba.js} +1 -1
  91. package/runtime/assets/{price-chart-BOCD8ka3.js → price-chart-BEnpZLyb.js} +1 -1
  92. package/runtime/assets/{price-compare-DZlF-qhZ.js → price-compare-8LvkF-xq.js} +1 -1
  93. package/runtime/assets/{price-liveline-Bl7qCd5-.js → price-liveline-DkTeXuC2.js} +1 -1
  94. package/runtime/assets/{price-ticker-D2W4T02y.js → price-ticker-DgDJ3k4b.js} +1 -1
  95. package/runtime/assets/{protocol-fees-treemap-DiIt4bfo.js → protocol-fees-treemap-fvVOfUFt.js} +1 -1
  96. package/runtime/assets/{protocol-tvl-chart-CmzANiR7.js → protocol-tvl-chart-BfrszRqq.js} +1 -1
  97. package/runtime/assets/{protocol-tvl-treemap-BjNPrrtL.js → protocol-tvl-treemap-v5kaQdP4.js} +1 -1
  98. package/runtime/assets/{puell-multiple-BGrJX43r.js → puell-multiple-BdOLF9Wh.js} +1 -1
  99. package/runtime/assets/{quote-CRM3bfI7.js → quote-slpulzHo.js} +1 -1
  100. package/runtime/assets/{rates-board-Cb9rV0_-.js → rates-board-B6hHyiDM.js} +1 -1
  101. package/runtime/assets/{realized-price-CYlrFa0m.js → realized-price-dn6bApj-.js} +1 -1
  102. package/runtime/assets/{reserve-risk-Be98XUsD.js → reserve-risk-_07r_h5w.js} +1 -1
  103. package/runtime/assets/{returns-projector-D67a_yvC.js → returns-projector-NBs7iGAV.js} +1 -1
  104. package/runtime/assets/{risk-reward-C7WMz2od.js → risk-reward-Baq_TRho.js} +1 -1
  105. package/runtime/assets/{rsi-momentum-IglnulkJ.js → rsi-momentum-B6oTu5W6.js} +1 -1
  106. package/runtime/assets/{rules-card-DJs3fDVN.js → rules-card-D98hKEwY.js} +1 -1
  107. package/runtime/assets/{sector-performance-DVMaleLY.js → sector-performance-DlnYIM-L.js} +1 -1
  108. package/runtime/assets/{sector-treemap-B681nSi6.js → sector-treemap-C3sX3Q9o.js} +1 -1
  109. package/runtime/assets/{session-progress-CZO3LqUi.js → session-progress-BYwNuuP-.js} +1 -1
  110. package/runtime/assets/{short-volume-l8_9Yoh3.js → short-volume-CxBDSjP6.js} +1 -1
  111. package/runtime/assets/{snake-CifbTGlZ.js → snake-CGV0Kg4z.js} +1 -1
  112. package/runtime/assets/{sopr-Dw_oz-mC.js → sopr-DAn99w9D.js} +1 -1
  113. package/runtime/assets/{spotify-embed-BA0m1IRb.js → spotify-embed-BBfim9vk.js} +1 -1
  114. package/runtime/assets/{stablecoin-chains-Dd2LqqqY.js → stablecoin-chains-D4EKi_YR.js} +1 -1
  115. package/runtime/assets/{stablecoin-supply-DM4ogL4V.js → stablecoin-supply-1m6FGR7-.js} +1 -1
  116. package/runtime/assets/{stopwatch-Co72v-7u.js → stopwatch-CCqsSaII.js} +1 -1
  117. package/runtime/assets/{top-movers-CLmC2TNu.js → top-movers-CAqBZOUL.js} +1 -1
  118. package/runtime/assets/{treasury-auctions-Dl9fiRgf.js → treasury-auctions-Bl19yaM_.js} +1 -1
  119. package/runtime/assets/{treemap-leaf-Dn31k9S9.js → treemap-leaf-A45Ge4-e.js} +1 -1
  120. package/runtime/assets/{trending-coins-Cpx9T6cG.js → trending-coins-Dm9R9zGQ.js} +1 -1
  121. package/runtime/assets/{tvl-treemap-e610jE8k.js → tvl-treemap-CSM9ioUr.js} +1 -1
  122. package/runtime/assets/{utils-DaT-yT0k.js → utils-DxneYyA_.js} +1 -1
  123. package/runtime/assets/{video-CeKjM-cE.js → video-CkvIGlHg.js} +1 -1
  124. package/runtime/assets/{volume-profile-CiMFsIBu.js → volume-profile-UJPTgNwV.js} +1 -1
  125. package/runtime/assets/{yield-curve-DkB0u2_Q.js → yield-curve-DlXQg4sl.js} +1 -1
  126. package/runtime/assets/{yield-scanner-BP90untT.js → yield-scanner-Qm88hZuv.js} +1 -1
  127. package/runtime/index.html +2 -2
  128. package/runtime/assets/editor-CZoWRTJC.css +0 -1
  129. package/runtime/assets/index-Bx7RmzY8.js +0 -1
  130. package/runtime/assets/index-DyvZokhk.js +0 -1097
  131. package/runtime/assets/portfolio-allocation-DAnQk_h_.js +0 -1
@@ -1 +1 @@
1
- import{j as e}from"./react-qoZPGuNy.js";import{c as x,b as v}from"./format-CfAcS4D8.js";import{f as j,ak as p,al as g}from"./index-DyvZokhk.js";import{F as u}from"./ui-Bq3RQsdJ.js";p.schema;const h=(n=1)=>`hsl(var(--zf-accent-hue, 242) 85% 72% / ${n})`;function y({rates:n}){const a=Math.min(...n),m=Math.max(...n),i=Math.max(.01,m-a),o=n.length,c=r=>100*r/(o-1),t=r=>4+32*(1-(r-a)/i),d=n.map((r,s)=>`${s?"L":"M"}${c(s).toFixed(2)},${t(r).toFixed(2)}`).join(" ");return e.jsxs("svg",{viewBox:"0 0 100 40",preserveAspectRatio:"none",className:"h-20 w-full","aria-hidden":!0,children:[e.jsx("path",{d:`${d} L100,40 L0,40 Z`,fill:h(.14)}),e.jsx("path",{d,fill:"none",stroke:h(.9),strokeWidth:1.5,vectorEffect:"non-scaling-stroke",strokeLinejoin:"round"})]})}function N({config:n}){const{curve:a,isLoading:m}=g();if(m)return e.jsx(u,{loading:!0,children:"loading yield curve…"});if(!a||a.points.length<2)return e.jsx(u,{children:"no yield-curve data yet"});const i=s=>{var l;return(l=a.points.find(f=>f.label===s))==null?void 0:l.rate},o=i("2Y"),c=i("10Y"),t=o!=null&&c!=null?Math.round((c-o)*100):null,d=t!=null&&t<0,r=n.maturities;return e.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-2",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("div",{className:"caption text-soft uppercase",children:"Treasury yield curve"}),e.jsxs("div",{className:"body-sm text-normal",children:["U.S. Treasury · ",a.date]})]}),e.jsx("div",{className:"caption text-soft text-right",children:"daily"})]}),t!=null&&e.jsxs("div",{className:"flex items-baseline gap-2",children:[e.jsxs("span",{className:"metric-md leading-none",style:{color:x(t),textShadow:`0 0 24px ${x(t)}44`},children:[t>=0?"+":"",t," bps"]}),e.jsxs("span",{className:"caption text-soft",children:["2s10s · ",d?"inverted":"normal"]})]}),e.jsx(y,{rates:a.points.map(s=>s.rate)}),e.jsx("div",{className:"grid gap-1",style:{gridTemplateColumns:`repeat(${r.length}, minmax(0, 1fr))`},children:r.map(s=>{const l=i(s);return e.jsxs("div",{className:"rounded bg-white/[0.04] px-1.5 py-1 text-center",children:[e.jsx("div",{className:"caption text-soft",children:s}),e.jsx("div",{className:"body-sm text-strong font-bold tabular-nums",children:l!=null?v(l):"—"})]},s)})})]})}const F=j({...p,component:N});export{F as yieldCurveFrame};
1
+ import{j as e}from"./react-qoZPGuNy.js";import{c as x,b as v}from"./format-CfAcS4D8.js";import{f as j,ak as p,al as g}from"./index-kB-TyxKi.js";import{F as u}from"./ui-Bq3RQsdJ.js";p.schema;const h=(n=1)=>`hsl(var(--zf-accent-hue, 242) 85% 72% / ${n})`;function y({rates:n}){const a=Math.min(...n),m=Math.max(...n),i=Math.max(.01,m-a),o=n.length,c=r=>100*r/(o-1),t=r=>4+32*(1-(r-a)/i),d=n.map((r,s)=>`${s?"L":"M"}${c(s).toFixed(2)},${t(r).toFixed(2)}`).join(" ");return e.jsxs("svg",{viewBox:"0 0 100 40",preserveAspectRatio:"none",className:"h-20 w-full","aria-hidden":!0,children:[e.jsx("path",{d:`${d} L100,40 L0,40 Z`,fill:h(.14)}),e.jsx("path",{d,fill:"none",stroke:h(.9),strokeWidth:1.5,vectorEffect:"non-scaling-stroke",strokeLinejoin:"round"})]})}function N({config:n}){const{curve:a,isLoading:m}=g();if(m)return e.jsx(u,{loading:!0,children:"loading yield curve…"});if(!a||a.points.length<2)return e.jsx(u,{children:"no yield-curve data yet"});const i=s=>{var l;return(l=a.points.find(f=>f.label===s))==null?void 0:l.rate},o=i("2Y"),c=i("10Y"),t=o!=null&&c!=null?Math.round((c-o)*100):null,d=t!=null&&t<0,r=n.maturities;return e.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-2",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("div",{className:"caption text-soft uppercase",children:"Treasury yield curve"}),e.jsxs("div",{className:"body-sm text-normal",children:["U.S. Treasury · ",a.date]})]}),e.jsx("div",{className:"caption text-soft text-right",children:"daily"})]}),t!=null&&e.jsxs("div",{className:"flex items-baseline gap-2",children:[e.jsxs("span",{className:"metric-md leading-none",style:{color:x(t),textShadow:`0 0 24px ${x(t)}44`},children:[t>=0?"+":"",t," bps"]}),e.jsxs("span",{className:"caption text-soft",children:["2s10s · ",d?"inverted":"normal"]})]}),e.jsx(y,{rates:a.points.map(s=>s.rate)}),e.jsx("div",{className:"grid gap-1",style:{gridTemplateColumns:`repeat(${r.length}, minmax(0, 1fr))`},children:r.map(s=>{const l=i(s);return e.jsxs("div",{className:"rounded bg-white/[0.04] px-1.5 py-1 text-center",children:[e.jsx("div",{className:"caption text-soft",children:s}),e.jsx("div",{className:"body-sm text-strong font-bold tabular-nums",children:l!=null?v(l):"—"})]},s)})})]})}const F=j({...p,component:N});export{F as yieldCurveFrame};
@@ -1 +1 @@
1
- import{r as m,j as a}from"./react-qoZPGuNy.js";import{U as c,b as d,p,f}from"./format-CfAcS4D8.js";import{M as u}from"./metric-row-BVVhjsjK.js";import{f as x,bo as r,bp as y}from"./index-DyvZokhk.js";import{F as o,s as b}from"./ui-Bq3RQsdJ.js";r.schema;function h({config:e}){const{pools:l,isLoading:i}=y(),t=m.useMemo(()=>l.filter(s=>(!e.stablecoinOnly||s.stablecoin)&&s.tvlUsd>=e.minTvlUsd).sort((s,n)=>n.apy-s.apy).slice(0,e.limit),[l,e.stablecoinOnly,e.minTvlUsd,e.limit]);return i?a.jsx(o,{loading:!0,children:"loading yields…"}):t.length===0?a.jsx(o,{children:"no pools match"}):a.jsx("div",{className:`${b} flex flex-col`,children:t.map(s=>a.jsx(u,{label:s.symbol,meta:`${p(s.project)} · ${s.chain} · ${f(s.tvlUsd)}${s.stablecoin?" · stable":""}`,value:a.jsx("span",{style:{color:c},children:d(s.apy)})},s.pool))})}const F=x({...r,component:h});export{F as yieldScannerFrame};
1
+ import{r as m,j as a}from"./react-qoZPGuNy.js";import{U as c,b as d,p,f}from"./format-CfAcS4D8.js";import{M as u}from"./metric-row-BVVhjsjK.js";import{f as x,bo as r,bp as y}from"./index-kB-TyxKi.js";import{F as o,s as b}from"./ui-Bq3RQsdJ.js";r.schema;function h({config:e}){const{pools:l,isLoading:i}=y(),t=m.useMemo(()=>l.filter(s=>(!e.stablecoinOnly||s.stablecoin)&&s.tvlUsd>=e.minTvlUsd).sort((s,n)=>n.apy-s.apy).slice(0,e.limit),[l,e.stablecoinOnly,e.minTvlUsd,e.limit]);return i?a.jsx(o,{loading:!0,children:"loading yields…"}):t.length===0?a.jsx(o,{children:"no pools match"}):a.jsx("div",{className:`${b} flex flex-col`,children:t.map(s=>a.jsx(u,{label:s.symbol,meta:`${p(s.project)} · ${s.chain} · ${f(s.tvlUsd)}${s.stablecoin?" · stable":""}`,value:a.jsx("span",{style:{color:c},children:d(s.apy)})},s.pool))})}const F=x({...r,component:h});export{F as yieldScannerFrame};
@@ -8,9 +8,9 @@
8
8
  <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16.png" />
9
9
  <link rel="apple-touch-icon" href="/apple-touch-icon.png" />
10
10
  <title>zframes runtime</title>
11
- <script type="module" crossorigin src="/assets/index-DyvZokhk.js"></script>
11
+ <script type="module" crossorigin src="/assets/index-kB-TyxKi.js"></script>
12
12
  <link rel="modulepreload" crossorigin href="/assets/react-qoZPGuNy.js">
13
- <link rel="stylesheet" crossorigin href="/assets/index-CrmTiZaB.css">
13
+ <link rel="stylesheet" crossorigin href="/assets/index-C-VdMqKb.css">
14
14
  </head>
15
15
  <body>
16
16
  <div id="root"></div>
@@ -1 +0,0 @@
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}}
@@ -1 +0,0 @@
1
- import{r as b,j as s,R as ut}from"./react-qoZPGuNy.js";import{l as ct,h as mt,c as pt,e as ft,i as lt,j as nt,d as ht,f as gt,k as xt,s as X,n as J,q as vt,r as yt,t as wt,u as st,v as kt}from"./d3-xK4fOkBU.js";import{c as F}from"./utils-DaT-yT0k.js";import{c as bt,f as jt}from"./chart-utils-BYIZMM9J.js";const O={top:20,right:110,bottom:40,left:50},tt={sm:640},R={height:400,yAxisPadding:15,fontSize:12},rt={rectHeight:22,paddingX:4},St={offsetX:80},Y={ticks:6,opacity:.05,color:"#FFFFFF"},$={xTicks:5,xSubTicks:36,yTicks:5,tickSize:10,subTickSize:6,tickColor:"#404146",domainColor:"#FFFFFF",domainOpacity:.05,textOpacity:.5},at=1e12,ot=1e9,Z=1e6,U=t=>t==null?"-":t===0?"0":t<.001?Mt(t):t<1||t<10?parseFloat(t.toPrecision(4)).toString():t<Z?t.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:2}):t>at?`${(t/at).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}T`:t>ot?`${(t/ot).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}B`:t>Z?`${(t/Z).toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}M`:t.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0}),Nt=t=>{const n=["₀","₁","₂","₃","₄","₅","₆","₇","₈","₉"];return t.toString().split("").map(e=>n[parseInt(e)]).join("")},Mt=t=>{const n=t<0,i=Math.abs(t).toFixed(20).replace(/\.?0+$/,""),l=i.match(/^0\.0+/);if(l){const u=l[0].length-2,a=i.slice(l[0].length).slice(0,3).replace(/0+$/,""),o=`0.${Nt(u)}${a}`;return n?`-${o}`:o}return Number.isInteger(t)?String(t):String(Math.round(t*100)/100)};let P;const Ct=t=>(P===void 0&&(P=typeof document<"u"?document.createElement("canvas").getContext("2d"):null,P&&(P.font=`700 ${R.fontSize}px "DM Sans", sans-serif`)),P?P.measureText(t).width:t.length*R.fontSize*.62),Tt=({width:t,height:n=R.height,yDomain:e,formatValue:i,containerRef:l})=>{const[u,r]=b.useState(t);b.useLayoutEffect(()=>{const f=()=>{if(l.current){const M=l.current.getBoundingClientRect();r(N=>N!==void 0&&Math.abs(N-M.width)<.5?N:M.width)}};f();const w=typeof ResizeObserver<"u"?new ResizeObserver(f):null;return w&&l.current&&w.observe(l.current),window.addEventListener("resize",f),()=>{w==null||w.disconnect(),window.removeEventListener("resize",f)}},[l]);const a=f=>{const[w,M]=f.domain(),N=5;let y=0;for(let L=0;L<N;L++){const S=w+(M-w)/(N-1)*L,z=i?i(S):U(S);y=Math.max(y,Ct(z))}return Math.ceil(y)+R.yAxisPadding};let o=u??null;if(!o&&l.current){const f=l.current.getBoundingClientRect();f.width>0&&(o=f.width)}o=o||t||null;const c=n-O.top-O.bottom,g=ct().domain(e).range([c,0]),x=o&&o>0?a(g):null,p=o&&o>0&&x&&x>0?o-x-(o>640?O.right:20):null;return{width:o,height:n,innerWidth:p,innerHeight:c,dynamicLeftMargin:x}},Lt=t=>{const n=b.useMemo(()=>{const r=new Set;return t.forEach(a=>{a.seriesGroup&&r.add(a.seriesGroup)}),Array.from(r)},[t]),[e,i]=b.useState(()=>new Set(n));b.useEffect(()=>{i(r=>{const a=new Set(r);return n.forEach(o=>{a.has(o)||a.add(o)}),a})},[n]);const l=b.useMemo(()=>t.filter(r=>r.seriesGroup?e.has(r.seriesGroup):!0),[t,e]);return{seriesGroups:n,visibleGroups:e,filteredSeries:l,toggleGroup:r=>{i(a=>{const o=new Set(a);return o.has(r)?o.delete(r):o.add(r),o})}}},$t=t=>({seriesColors:b.useMemo(()=>t.reduce((e,i)=>(e[i.id]=i.color,e),{}),[t]),isColorLoading:!1}),Dt=({group:t,isVisible:n,onClick:e})=>s.jsxs("button",{onClick:e,className:F("flex cursor-pointer items-center justify-center gap-2 text-xs font-semibold",n?"text-white":"text-white/30"),children:[s.jsx("div",{className:F("h-3 w-3",n?"bg-white/80":"bg-white/30")}),t]}),Ft=Dt,Et=(t,n)=>jt(t,n),it=(t,n)=>{const e=parseInt(t.slice(1,3),16),i=parseInt(t.slice(3,5),16),l=parseInt(t.slice(5,7),16);return`rgba(${e}, ${i}, ${l}, ${n})`},zt=t=>{const n=t.flatMap(e=>e.data);return bt(n)},At=t=>{const n=new Set;return t.forEach(e=>{e.data.forEach(i=>n.add(i.date))}),Array.from(n).sort()},It=(t,n)=>t.map(e=>{const i={};return n.forEach(l=>{const u=l.data.find(r=>r.date===e);i[l.id]=u?u.value:0}),{date:new Date(e),values:i}}),Gt=(t,n,e)=>{const i=n.invert(t),l=mt(o=>o.date).left,u=l(e,i,1),r=e[u-1],a=e[u];return!r||!a?null:i.getTime()-r.date.getTime()>a.date.getTime()-i.getTime()?a:r},Q=(t,n)=>{const e=n===t,i=n!==null&&n!==t;return e?1:i?.3:1},Ot=({legendItems:t,containerWidth:n,hoveredSeriesId:e,onSeriesHover:i,onLabelClick:l,unitPrefix:u,unitSuffix:r,legendRef:a})=>n&&n>tt.sm?s.jsx("div",{className:F("pointer-events-none absolute left-0 top-0 w-full flex-wrap items-center gap-2 max-sm:overflow-hidden"),children:t.map(c=>s.jsx("div",{className:F("pointer-events-auto absolute flex h-[22px] w-fit cursor-pointer items-center justify-center gap-1 rounded-[11px] px-[5px] py-1 transition-opacity duration-200 ease-out"),style:{left:`${c.left}px`,top:`${c.top}px`,backgroundColor:it(c.color,.3),opacity:Q(c.id,e)},onClick:()=>l==null?void 0:l(c.id),onPointerEnter:g=>{g.preventDefault(),g.stopPropagation(),i(c.id)},onPointerLeave:g=>{g.preventDefault(),g.stopPropagation(),i(null)},children:s.jsxs("div",{className:"relative flex select-none items-center justify-center gap-1",children:[c.seriesData.iconImageUrl&&s.jsx("div",{className:"size-4 rounded-full",children:s.jsx("img",{src:c.seriesData.iconImageUrl,width:16,height:16,alt:c.seriesData.name,className:"size-4 rounded-full",draggable:!1})}),s.jsxs("div",{className:"text-normal relative flex items-center justify-center whitespace-nowrap text-[11px] font-semibold leading-4",children:[s.jsx("span",{className:F("mr-1 max-w-12 truncate",c.seriesData.iconImageUrl?"max-w-10":"max-w-12"),children:c.displayText}),u&&s.jsx("span",{className:"mr-0.5 [&_svg]:!text-white/70",children:u}),s.jsx("span",{children:c.value}),r&&s.jsx("span",{children:r})]})]})},c.id))}):s.jsx("div",{className:F("pointer-events-none left-0 top-0 flex w-full flex-wrap items-center gap-1 max-sm:overflow-hidden"),ref:a,children:t.map(c=>s.jsx("div",{className:F("pointer-events-auto flex h-[22px] w-fit min-w-[112px] cursor-pointer items-center gap-1 rounded-[11px] px-[5px] py-1 transition-opacity duration-200 ease-out"),style:{backgroundColor:it(c.color,.3),opacity:Q(c.id,e)},onClick:()=>l==null?void 0:l(c.id),onPointerEnter:g=>{g.preventDefault(),g.stopPropagation(),i(c.id)},onPointerLeave:g=>{g.preventDefault(),g.stopPropagation(),i(null)},children:s.jsxs("div",{className:"relative flex select-none items-center gap-1",children:[c.seriesData.iconImageUrl&&s.jsx("div",{className:"size-4 rounded-full",children:s.jsx("img",{src:c.seriesData.iconImageUrl,width:16,height:16,alt:c.seriesData.name,className:"size-4 rounded-full",draggable:!1})}),s.jsxs("div",{className:"text-normal relative flex items-center whitespace-nowrap text-[11px] font-semibold leading-none",children:[s.jsx("span",{className:F("mr-1 max-w-12 truncate",c.seriesData.iconImageUrl?"max-w-10":"max-w-12"),children:c.displayText}),s.jsx("span",{"data-legend-value":c.id,children:c.value}),r&&s.jsx("span",{children:r})]})]})},c.id))}),Wt=Ot,Ht=({containerWidth:t,tooltipRef:n,series:e,seriesColors:i,unitPrefix:l,unitSuffix:u})=>t&&t>tt.sm?s.jsx("div",{ref:n,className:"pointer-events-none absolute left-0 top-0 z-50 rounded-md bg-slate-700 px-6 py-3 text-xs text-white opacity-0 transition-opacity duration-300",children:s.jsxs("div",{className:"flex flex-col gap-3",children:[s.jsx("div",{className:"body-md font-semibold text-white/50","data-tooltip-date":!0}),s.jsx("div",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1.5",children:e.map(a=>s.jsxs(ut.Fragment,{children:[s.jsxs("span",{className:"text-soft flex max-w-[126px] items-center gap-1",children:[s.jsx("div",{className:"h-full w-0.5 rounded-full",style:{backgroundColor:i[a.id]}}),a.iconImageUrl&&s.jsx("img",{src:a.iconImageUrl,width:20,height:20,alt:a.name,className:"rounded-full"}),s.jsx("span",{className:"text-normal body-sm font-bold capitalize",children:a.name})]}),s.jsxs("div",{className:"font-dmsans text-normal flex flex-row items-center font-bold",children:[s.jsx("div",{className:"mr-1",children:l}),s.jsx("span",{className:"text-normal text-right text-xs font-bold","data-tooltip-value":a.id}),u]})]},a.id))})]})}):s.jsx("div",{ref:n,className:"pointer-events-none absolute left-0 top-0 z-50 min-w-[130px] rounded-md bg-slate-700 px-2 py-1 text-xs text-white opacity-0 transition-opacity duration-300 ease-out",children:s.jsx("div",{className:"flex flex-col items-center justify-center gap-3",children:s.jsx("div",{className:"caption font-semibold text-white/50","data-tooltip-date":!0})})}),Bt=Ht,Pt=(t,n,e,i)=>{const l=pt().domain(ft(t,r=>r.date)).range([0,e]),u=ct().domain(n).range([i,0]);return{xScale:l,yScale:u}},Xt=(t,n,e)=>{const[i,l]=n.domain(),u=[];for(let r=0;r<Y.ticks;r++){const a=i+(l-i)/(Y.ticks-1)*r;u.push(a)}t.append("g").attr("class","grid").call(lt(n).tickValues(u).tickSize(-e).tickFormat(()=>"")).call(r=>r.select(".domain").remove()).selectAll("line").attr("stroke",Y.color).attr("stroke-opacity",Y.opacity)},Ut=(t,n,e,i,l,u,r)=>{const o=r!==void 0?Math.max(2,Math.min($.xTicks,Math.floor(r/72))):$.xTicks,c=n.ticks(o),g=Math.max(1,Math.ceil(c.length/o)),x=c.filter((S,z)=>z%g===0),p=t.append("g").attr("transform",`translate(0,${i})`).call(nt(n).tickValues(x).tickSize($.tickSize).tickFormat(S=>S instanceof Date?Et(S.toISOString(),l):String(S))).style("font-size","12px").style("font-weight","700").style("font-family","var(--font-manrope)");p.select(".domain").attr("stroke",$.domainColor).attr("stroke-width",1).attr("stroke-opacity",$.domainOpacity),p.selectAll(".tick line").attr("stroke",$.tickColor).attr("transform","translate(0, 4)"),p.selectAll(".tick text").attr("dy","1.2em").style("fill",$.domainColor).style("opacity",$.textOpacity);const f=t.append("g").attr("transform",`translate(0,${i})`).call(nt(n).ticks($.xSubTicks).tickSize($.subTickSize).tickFormat(()=>""));f.select(".domain").remove(),f.selectAll(".tick line").attr("stroke",$.tickColor).attr("transform","translate(0, 4)");const[w,M]=e.domain(),N=[],y=5;for(let S=0;S<y;S++){const z=w+(M-w)/(y-1)*S;N.push(z)}const L=t.append("g").call(lt(e).tickValues(N).tickSize($.yTicks).tickFormat(S=>u?u(S):U(S))).style("font-size","12px").style("color",$.domainColor).style("font-family","var(--font-dmsans)").style("opacity",$.textOpacity).style("font-weight","700");L.select(".domain").attr("stroke","none"),L.selectAll(".tick line").attr("stroke","none")},_t=(t,n,e,i,l,u=!0)=>{const r=ht().x(a=>i(a.date)).y(a=>l(a.value)).curve(gt);n.forEach(a=>{const o=a.data.map(p=>({date:new Date(p.date),value:p.value})),c=e[a.id],g=t.append("path").datum(o).attr("fill","none").attr("stroke",c).attr("stroke-width",1.2).attr("opacity",1).attr("data-series-id",a.id).attr("d",r);if(!u){g.attr("stroke-dasharray",null).attr("stroke-dashoffset",null);return}const x=g.node().getTotalLength();g.attr("stroke-dasharray",x+" "+x).attr("stroke-dashoffset",x),g.transition("draw").duration(1200).ease(xt).attr("stroke-dashoffset",0).on("end",function(){X(this).attr("stroke-dasharray",null)})})},Vt=({g:t,containerWidth:n,innerWidth:e,innerHeight:i,xScale:l,yScale:u,combinedData:r,filteredSeries:a,tooltipRef:o,containerRef:c,legendRef:g,highestValue:x,formatValue:p})=>{var A;const f=t.append("line").attr("class","hover-line").attr("stroke","white").attr("stroke-width",1).attr("stroke-dasharray","4,4").attr("stroke-opacity",.6).attr("x1",0).attr("y1",0).attr("x2",0).attr("y2",i).attr("opacity",0),w=t.append("g").attr("class","hover-dots");let M=!0,N=((A=c.current)==null?void 0:A.getBoundingClientRect().width)||e,y=0,L=0;const S=h=>{M?(f.attr("x1",h-.75),f.attr("x2",h-.75),f.transition().duration(150).ease(J).attr("opacity",1),M=!1):f.transition().duration(100).ease(st).attr("x1",h-.75).attr("x2",h-.75).attr("opacity",1)},z=(h,d)=>{const j=w.selectAll("g.hover-circle-group").data(a.filter(v=>h.values[v.id]!==void 0));j.exit().remove();const C=j.enter().append("g").attr("class","hover-circle-group").style("opacity",0);C.append("circle").attr("class","hover-dot-glow").attr("r",9).attr("fill","white").attr("fill-opacity",.18),C.append("circle").attr("class","hover-dot-core").attr("r",4.5).attr("fill","white").attr("stroke","rgba(10, 12, 20, 0.55)").attr("stroke-width",1.5),C.attr("transform",v=>{const T=h.values[v.id];return`translate(${d}, ${u(T)}) scale(0.5)`}).style("opacity",1).transition().duration(200).ease(kt).attr("transform",v=>{const T=h.values[v.id];return`translate(${d}, ${u(T)}) scale(1)`}),j.transition().duration(100).ease(st).attr("transform",v=>{const T=h.values[v.id];return`translate(${d}, ${u(T)})`})},E=(h,d)=>{o.current&&y===0&&L===0&&(y=o.current.getBoundingClientRect().height,L=o.current.getBoundingClientRect().width);let m=h+St.offsetX;return m+L>N&&(m=h-L),m<0&&(m=0),{x:m,y:d-y/2+20}},q=h=>{let m=h-65+O.left;const j=u(x);return h+130/2>N-O.left&&(m=N-130),m<0&&(m=0),{x:m,y:j}},G=(h,d)=>{if(!o.current)return;const m=o.current.querySelector("[data-tooltip-date]");m&&m.textContent!==h&&(m.textContent=h),a.forEach(j=>{var D;const C=d[j.id];if(C===void 0)return;const v=(D=o.current)==null?void 0:D.querySelector(`[data-tooltip-value="${j.id}"]`),T=p?p(C):U(C);v&&v.textContent!==T&&(v.textContent=T)})},W=h=>{if(!o.current)return;const d=o.current.querySelector("[data-tooltip-date]");d&&d.textContent!==h&&(d.textContent=h)},H=h=>{g.current&&a.forEach(d=>{var C;const m=h[d.id];if(m===void 0)return;const j=(C=g.current)==null?void 0:C.querySelector(`[data-legend-value="${d.id}"]`);if(j){const v=p?p(m):U(m);j.textContent=v}})},k=(h,d)=>{o.current&&(o.current.style.opacity="1",o.current.style.transform=`translate3d(${h}px, ${d}px, 0)`)},_=h=>{const m=window.TouchEvent&&h instanceof TouchEvent?h.touches[0]:h,[j,C]=yt(m,t.node()),v=Gt(j,l,r);if(!v)return;const T=l(v.date),D=wt("%b %d, %Y - %H:%M")(v.date);if(n>tt.sm){const I=E(j,C);k(I.x,I.y),G(D,v.values)}else{const I=q(j);k(I.x,I.y),W(D),H(v.values)}S(T),z(v,T)},B=()=>{f.transition().duration(150).ease(J).attr("opacity",0),M=!0,o.current&&(o.current.style.opacity="0"),w.selectAll("g").transition().duration(150).ease(vt).style("opacity",0).attr("transform",(h,d,m)=>{const C=X(m[d]).attr("transform"),v=C.match(/translate\(([^,]+),\s*([^)]+)\)/);if(v){const T=parseFloat(v[1]),D=parseFloat(v[2]);return`translate(${T}, ${D}) scale(0.3)`}return C}).remove()},V=new ResizeObserver(()=>{c.current&&(N=c.current.getBoundingClientRect().width)});return c.current&&V.observe(c.current),{onMouseMove:_,onMouseLeave:B,destroy:()=>V.disconnect()}},Yt=(t,n,{xScale:e,yScale:i},l,u,r)=>{const a=rt.rectHeight,o=rt.paddingX,c=[];return t.forEach(x=>{const p=x.data.map(f=>({date:new Date(f.date),value:f.value}));if(p.length>0){const f=p[p.length-1],w=e(f.date)+8,M=i(f.value),N=w-o;let y=M-a/2;const L=c.findLast(S=>y+a>=S.top&&y<=S.bottom);L&&(y=L.top+a),c.push({top:y,bottom:y+a,id:x.id,left:N})}}),c.reverse().reduce((x,p)=>{const f=x.find(w=>p.top+a>=w.top&&p.top<=w.bottom&&w.id!==p.id);return f&&(p.top=f.top-a),[p,...x]},[]),c.map(x=>{var M,N;const p=t.find(y=>y.id===x.id);if(!p)return null;const f=n[x.id],w=r?r(((M=p.data.at(-1))==null?void 0:M.value)??0):U(((N=p.data.at(-1))==null?void 0:N.value)??0);return{id:x.id,left:x.left+l,top:x.top+u,seriesData:p,color:f,value:w,displayText:p.name}}).filter(Boolean)},Rt=({className:t})=>s.jsx("div",{className:F("relative size-8",t),children:s.jsx("div",{className:"absolute left-1/2 top-1/2 flex size-12 -translate-x-1/2 -translate-y-1/2 items-center justify-center",children:s.jsxs("div",{className:"relative h-6 w-full",children:[Array.from({length:5}).map((n,e)=>s.jsx("div",{className:"absolute size-1.5 rounded-full will-change-transform",style:{left:`${e/6*100}%`,animation:`dnaStrand1Move 2s infinite ease-in-out ${-e*.2}s, dnaStrand1Scale 2s infinite ease-in-out ${-e*.2}s, dnaStrand1Color 2s infinite ease-in-out ${-e*.2}s`}},`strand1-${e}`)),Array.from({length:5}).map((n,e)=>s.jsx("div",{className:"absolute size-1.5 rounded-full",style:{left:`${e/6*100}%`,animation:`dnaStrand2Move 2s infinite ease-in-out ${-e*.2}s, dnaStrand2Scale 2s infinite ease-in-out ${-e*.2}s, dnaStrand2Color 2s infinite ease-in-out ${-e*.2}s`}},`strand2-${e}`))]})})}),qt=({series:t,width:n,height:e=400,timeframe:i,className:l,isLoading:u=!1,formatValue:r,unitPrefix:a,unitSuffix:o,onLabelClick:c})=>{const g=b.useRef(null),x=b.useRef(null),p=b.useRef(null),f=b.useRef(null),w=b.useRef(!1),[M,N]=b.useState(null),y=b.useMemo(()=>[...t].sort((d,m)=>{const j=d.data.length>0?d.data[d.data.length-1].value:0;return(m.data.length>0?m.data[m.data.length-1].value:0)-j}),[t]),L=b.useCallback(d=>{N(d)},[]),{seriesGroups:S,visibleGroups:z,filteredSeries:E,toggleGroup:q}=Lt(y),{seriesColors:G,isColorLoading:W}=$t(y),H=b.useMemo(()=>zt(y),[y]),k=Tt({width:n,height:e,yDomain:H,formatValue:r,containerRef:x}),_=b.useMemo(()=>At(y),[y]),B=b.useMemo(()=>It(_,y),[_,y]),V=b.useMemo(()=>Math.max(...E.map(d=>d.data.map(m=>m.value)).flat().filter(d=>d!==void 0)),[E]),A=b.useMemo(()=>!k.innerWidth||!k.innerHeight?null:Pt(B,H,k.innerWidth,k.innerHeight),[B,H,k.innerWidth,k.innerHeight]),h=b.useMemo(()=>!A||!k.dynamicLeftMargin?[]:Yt(E,G,A,k.dynamicLeftMargin,O.top,r),[A,k.dynamicLeftMargin,E,G,r]);return b.useEffect(()=>{if(!g.current||t.length===0||W||!A||k.width===null||k.innerWidth===null||k.dynamicLeftMargin===null)return;const d=X(g.current),{innerWidth:m,innerHeight:j,dynamicLeftMargin:C}=k;d.selectAll("*").remove();const{xScale:v,yScale:T}=A,D=d.append("g").attr("transform",`translate(${C},${O.top})`);Xt(D,T,m),Ut(D,v,T,j,i,r,m),_t(D,E,G,v,T,!w.current),w.current=!0;const{onMouseMove:I,onMouseLeave:et,destroy:dt}=Vt({g:D,containerWidth:k.width,innerWidth:m,innerHeight:k.innerHeight,xScale:v,yScale:T,combinedData:B,filteredSeries:E,tooltipRef:p,containerRef:x,legendRef:f,highestValue:V,formatValue:r}),K=D.append("rect").attr("class","overlay").attr("width",m).attr("height",j).attr("fill","transparent").style("cursor","crosshair").style("pointer-events","all");return K.on("mousemove",I).on("mouseleave",et).on("touchstart",I).on("touchmove",I).on("touchend",et),K.raise(),()=>{dt(),K.on("mousemove",null).on("mouseleave",null).on("touchstart",null).on("touchmove",null).on("touchend",null),d.selectAll("*").interrupt(),d.selectAll("*").remove()}},[B,H,t.length,E,A,k.innerWidth,k.innerHeight,k.dynamicLeftMargin,e,i,W,G,r]),b.useEffect(()=>{if(!g.current||t.length===0||W)return;X(g.current).select("g").selectAll("path[data-series-id]").transition().duration(200).ease(J).attr("opacity",function(){const j=X(this).attr("data-series-id");return Q(j,M)})},[M,t,G,W]),!u&&t.length===0?s.jsx("div",{className:F("relative w-full",l),children:s.jsx("div",{className:F("mx-auto flex w-full items-center justify-center text-sm text-gray-400"),style:{height:e},children:"No data available"})}):s.jsx("div",{ref:x,className:F("relative w-full",l),style:{width:n,minHeight:e},children:u?s.jsx(Rt,{className:"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2"}):s.jsxs(s.Fragment,{children:[S.length>0&&s.jsx("div",{className:"mb-3 flex flex-wrap items-center justify-center gap-2",children:S.map(d=>s.jsx(Ft,{group:d,isVisible:z.has(d),onClick:()=>q(d)},d))}),k.width!==null&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"relative z-20",children:s.jsx(Wt,{legendRef:f,legendItems:h,containerWidth:k.width,hoveredSeriesId:M,onSeriesHover:L,onLabelClick:c,unitPrefix:a,unitSuffix:o})}),s.jsxs("div",{className:"relative select-none",children:[s.jsx("svg",{ref:g,width:k.width,height:e,className:"relative z-0",style:{maxWidth:"100%",width:"100%",display:"block",overflow:"visible"}}),s.jsx("div",{className:"z-10",children:s.jsx(Bt,{containerWidth:k.width,tooltipRef:p,series:E,seriesColors:G,unitPrefix:a,unitSuffix:o})})]})]})]})})},te=b.memo(qt);export{te as M};