zframes 0.8.0 → 0.8.1

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 (225) hide show
  1. package/dist/index.js +14 -3
  2. package/package.json +5 -5
  3. package/runtime/assets/bar-chart-DCMbxUJx.js +1 -0
  4. package/runtime/assets/{bitcoin-dominance-Y-pfXAWg.js → bitcoin-dominance-BqoH90r5.js} +1 -1
  5. package/runtime/assets/{breakeven-D5o1aZeG.js → breakeven-1Kr-v9pE.js} +1 -1
  6. package/runtime/assets/{breathing-C3xWrMh-.js → breathing-NOTeAM6N.js} +1 -1
  7. package/runtime/assets/{btc-block-size-bars-Dm4d1uP6.js → btc-block-size-bars-BgwX4eu_.js} +1 -1
  8. package/runtime/assets/{btc-blocks-Dh75DtBl.js → btc-blocks-D6TscPNp.js} +1 -1
  9. package/runtime/assets/{btc-difficulty-DT6GcCi7.js → btc-difficulty-BhSve3vk.js} +1 -1
  10. package/runtime/assets/{btc-difficulty-chart-D6G_nIaV.js → btc-difficulty-chart-Yqxof0b6.js} +1 -1
  11. package/runtime/assets/{btc-fees-CAwJQaIo.js → btc-fees-C-Za_OxK.js} +1 -1
  12. package/runtime/assets/{btc-hashrate-CWvKwoGY.js → btc-hashrate-5xnTYpft.js} +1 -1
  13. package/runtime/assets/{btc-mempool-C_PwdChj.js → btc-mempool-0WFrtuQR.js} +1 -1
  14. package/runtime/assets/bubbles-shared-DlmjtiIA.js +1 -0
  15. package/runtime/assets/{calculator-DmCi3Diy.js → calculator-CcLe2vqJ.js} +1 -1
  16. package/runtime/assets/{capital-structure-bars-CCL6FBZT.js → capital-structure-bars-SEyFIReK.js} +1 -1
  17. package/runtime/assets/{chain-activity-DmVXPTCW.js → chain-activity-CCO3t0hA.js} +1 -1
  18. package/runtime/assets/{chain-activity-bars-C2_6k9uI.js → chain-activity-bars-DHYCDKWT.js} +1 -1
  19. package/runtime/assets/{chain-activity-scatter-KDstJ2gQ.js → chain-activity-scatter-DeusbLku.js} +1 -1
  20. package/runtime/assets/{chain-price-movers-C7cM87Np.js → chain-price-movers-SeTwhqsM.js} +1 -1
  21. package/runtime/assets/{checklist-aIHO99Oy.js → checklist-orMUS_qt.js} +1 -1
  22. package/runtime/assets/{clock-RTIdbX_o.js → clock-9PqJvMgi.js} +1 -1
  23. package/runtime/assets/{coin-momentum-heatmap-BqpZC5MD.js → coin-momentum-heatmap-DvfWWzSD.js} +1 -1
  24. package/runtime/assets/{coin-momentum-scatter-BLQuQ5y9.js → coin-momentum-scatter-Cf4Y29lp.js} +1 -1
  25. package/runtime/assets/{coin-movers-BcLGwl1y.js → coin-movers-D3cmI-tT.js} +1 -1
  26. package/runtime/assets/{countdown-DiZVeLK1.js → countdown-tMz3FsXT.js} +1 -1
  27. package/runtime/assets/{custom-data-BgQF-y2R.js → custom-data-DPPNQ2QQ.js} +1 -1
  28. package/runtime/assets/{cycle-signals-1fCJGzfH.js → cycle-signals-DJYUIjas.js} +1 -1
  29. package/runtime/assets/{cycle-valuation-composite-BBA7wxL2.js → cycle-valuation-composite-DO_Pda0n.js} +1 -1
  30. package/runtime/assets/{daily-analysis-w96yBGxi.js → daily-analysis-BVEvATPa.js} +1 -1
  31. package/runtime/assets/{day-meter-D7SyWAWO.js → day-meter-DmbSq9YK.js} +1 -1
  32. package/runtime/assets/{defi-revenue-DC7iVw-b.js → defi-revenue-DPazGCl4.js} +1 -1
  33. package/runtime/assets/{dex-hot-pools-CbBeDh7R.js → dex-hot-pools-BeuuV2Cj.js} +1 -1
  34. package/runtime/assets/{dex-pool-bubbles-DsS26KRy.js → dex-pool-bubbles-BLUbqZ4v.js} +1 -1
  35. package/runtime/assets/{dex-pool-liquidity-scatter-Cam1cxZL.js → dex-pool-liquidity-scatter-Civ63yej.js} +1 -1
  36. package/runtime/assets/{dex-pool-treemap-CuU6G6rY.js → dex-pool-treemap-ecoWHB8O.js} +1 -1
  37. package/runtime/assets/{dex-volume-bubbles-DZvYb1Gu.js → dex-volume-bubbles-CX9SfXmZ.js} +1 -1
  38. package/runtime/assets/{dex-volume-chart-BmJMKgts.js → dex-volume-chart-Bgdepem0.js} +1 -1
  39. package/runtime/assets/{dex-volume-share-area-B16TypiP.js → dex-volume-share-area-uDfe8wQZ.js} +1 -1
  40. package/runtime/assets/{dex-volume-treemap-Kl3BycC8.js → dex-volume-treemap-BlrxYmk-.js} +1 -1
  41. package/runtime/assets/{dice-BBWeIZ4c.js → dice-BOUHMLs6.js} +1 -1
  42. package/runtime/assets/{dino-game-CacSVnNs.js → dino-game-BBIAIplk.js} +1 -1
  43. package/runtime/assets/{divider-BDbJkoKt.js → divider-B-nMbdhH.js} +1 -1
  44. package/runtime/assets/{dominance-bars-D7mHdU5j.js → dominance-bars-BjKMZR8V.js} +1 -1
  45. package/runtime/assets/{dominance-gauge-D4Dizu40.js → dominance-gauge-DVITO-Eg.js} +1 -1
  46. package/runtime/assets/{drawdy-C4Xes6ll.js → drawdy-gpdcuxey.js} +1 -1
  47. package/runtime/assets/{dxy-CQqmlBOH.js → dxy-DfHaYZsj.js} +1 -1
  48. package/runtime/assets/{dxy-chart-COvjjHiK.js → dxy-chart-CidtFThk.js} +1 -1
  49. package/runtime/assets/{editor-CFgkD4LH.js → editor-yifYG0tI.js} +1 -1
  50. package/runtime/assets/{etf-flow-bars-DQmhSdlG.js → etf-flow-bars-NYq3d_-U.js} +1 -1
  51. package/runtime/assets/{etf-flow-calendar-BtU4tAJx.js → etf-flow-calendar-BI18BrWM.js} +1 -1
  52. package/runtime/assets/{etf-flows-chart-CrJq5l_U.js → etf-flows-chart-BzKKqHh4.js} +1 -1
  53. package/runtime/assets/{etf-flows-B5HTl_O2.js → etf-flows-cufmZrd_.js} +1 -1
  54. package/runtime/assets/{etf-issuer-bars-C8CS42V9.js → etf-issuer-bars-Dl9H_CZC.js} +1 -1
  55. package/runtime/assets/{etf-issuer-treemap-B8V6wOUz.js → etf-issuer-treemap-IhYjIP-y.js} +1 -1
  56. package/runtime/assets/{eth-issuance-impact-DBfYkAhQ.js → eth-issuance-impact-BLHuDvGQ.js} +1 -1
  57. package/runtime/assets/{eth-staking-CS-soUKT.js → eth-staking-CzidwFMK.js} +1 -1
  58. package/runtime/assets/{eth-supply-5f4GEmei.js → eth-supply-C7KDK-97.js} +1 -1
  59. package/runtime/assets/{fear-greed-D20BQ0ai.js → fear-greed-DTLHRhif.js} +1 -1
  60. package/runtime/assets/{fear-greed-chart-CzqxRAt0.js → fear-greed-chart-N1vM_QJ7.js} +1 -1
  61. package/runtime/assets/{filings-feed-C-uvwTLC.js → filings-feed-Dpz6nWMU.js} +1 -1
  62. package/runtime/assets/{filings-mix-OIhf0PEq.js → filings-mix-7ykY8NsE.js} +1 -1
  63. package/runtime/assets/{financial-stress-B29D-qDA.js → financial-stress-BcnDhPO4.js} +1 -1
  64. package/runtime/assets/{flappy-bird-DGYf5Ewk.js → flappy-bird-Vp7j7ceN.js} +1 -1
  65. package/runtime/assets/{fundamentals-CcvmrNcz.js → fundamentals-BIesVoJt.js} +1 -1
  66. package/runtime/assets/{funding-bars-D7M6sJZL.js → funding-bars-BNVCUVqC.js} +1 -1
  67. package/runtime/assets/{funding-carry-area-Dq7ytVeR.js → funding-carry-area-BqCrQOi5.js} +1 -1
  68. package/runtime/assets/{funding-comparison-Ci4xJZk2.js → funding-comparison-BynnnDDf.js} +1 -1
  69. package/runtime/assets/{funding-crowding-scatter-nUiUaNV4.js → funding-crowding-scatter-BTzQUtFn.js} +1 -1
  70. package/runtime/assets/{funding-heatmap-B5zG3T9U.js → funding-heatmap-DUOcDAeX.js} +1 -1
  71. package/runtime/assets/{funding-leaderboard-bars-cf5-s8-T.js → funding-leaderboard-bars-CpYvO_Cs.js} +1 -1
  72. package/runtime/assets/{funding-rate-chart-Dp06ipCG.js → funding-rate-chart-CANXPS3a.js} +1 -1
  73. package/runtime/assets/{funding-spread-bars-CZdgC9ni.js → funding-spread-bars-BgA-vSh-.js} +1 -1
  74. package/runtime/assets/{funding-venue-heatmap-C-Kh1qHo.js → funding-venue-heatmap-jKiQGgLb.js} +1 -1
  75. package/runtime/assets/{fx-board-C4yCDDGZ.js → fx-board-CTnlbWGJ.js} +1 -1
  76. package/runtime/assets/{fx-cross-heatmap-DHP7jzo6.js → fx-cross-heatmap-CDORG9Cx.js} +1 -1
  77. package/runtime/assets/{fx-movers-bars-8q6fFcdY.js → fx-movers-bars-WKvSm3Ry.js} +1 -1
  78. package/runtime/assets/{fx-trend-chart-DEtRTau8.js → fx-trend-chart-uITTwyv8.js} +1 -1
  79. package/runtime/assets/{heading-B6HiIuvX.js → heading-Cidi7R-_.js} +1 -1
  80. package/runtime/assets/{hero-number-DUjENGj6.js → hero-number-p8eaQmkA.js} +1 -1
  81. package/runtime/assets/{holiday-calendar-qi7M9l4n.js → holiday-calendar-ErapPWhY.js} +1 -1
  82. package/runtime/assets/{image-D5ZO4DFB.js → image-BQQ0gSaW.js} +1 -1
  83. package/runtime/assets/{image-gallery-Dpr218ld.js → image-gallery-CNa-8BAA.js} +1 -1
  84. package/runtime/assets/{index-CiYWppnQ.js → index-BHlJHScr.js} +3 -3
  85. package/runtime/assets/index-Bw1aFtyx.js +1 -0
  86. package/runtime/assets/index-yv-SCb9g.css +1 -0
  87. package/runtime/assets/{inflation-pulse-cleNvOgk.js → inflation-pulse-B54HwpAO.js} +1 -1
  88. package/runtime/assets/{journal-log-BYS6KBP0.js → journal-log-0CruSC_H.js} +1 -1
  89. package/runtime/assets/{journal-open-Dd-2HpWe.js → journal-open-DIwxMMCH.js} +1 -1
  90. package/runtime/assets/{journal-results-Bo95cRBC.js → journal-results-BM_i_JJ3.js} +1 -1
  91. package/runtime/assets/{journal-score-CQ5jNovg.js → journal-score-He6DdYtU.js} +1 -1
  92. package/runtime/assets/{journal-ui-P_aNAgF1.js → journal-ui-CP9YblNJ.js} +1 -1
  93. package/runtime/assets/{labor-force-flow-0vecYFin.js → labor-force-flow-8HLQsbKV.js} +1 -1
  94. package/runtime/assets/{labor-market-BSxSRnKx.js → labor-market-If23zBQK.js} +1 -1
  95. package/runtime/assets/{lightning-stats-CBj576A7.js → lightning-stats-DhrfBtX6.js} +1 -1
  96. package/runtime/assets/{link-grid-MCfSDZZw.js → link-grid-CsnxpE4z.js} +1 -1
  97. package/runtime/assets/{liquidity-basis-bars-CPGTcxkm.js → liquidity-basis-bars-CaU5YtBA.js} +1 -1
  98. package/runtime/assets/{ma-multiplier-g4p5Pi3k.js → ma-multiplier-BBN7qsdV.js} +1 -1
  99. package/runtime/assets/{macro-calendar-d2JHausW.js → macro-calendar-cKBRneX9.js} +1 -1
  100. package/runtime/assets/{market-bubbles-CDCGDkEQ.js → market-bubbles-BKNkvOTg.js} +1 -1
  101. package/runtime/assets/{market-cap-treemap-BSElYaQa.js → market-cap-treemap-BSBU8mjq.js} +1 -1
  102. package/runtime/assets/{market-hours-BH2Focsr.js → market-hours-B10lWec_.js} +1 -1
  103. package/runtime/assets/{market-scatter-CdXDxlvI.js → market-scatter-CVUa4ZQ_.js} +1 -1
  104. package/runtime/assets/{marquee-DAz20C7s.js → marquee-BS_quB4S.js} +1 -1
  105. package/runtime/assets/{mayer-multiple-mJbiBIAH.js → mayer-multiple-iiKonfXX.js} +1 -1
  106. package/runtime/assets/{mempool-fee-curve-DC21aRj_.js → mempool-fee-curve-CQ4nzab8.js} +1 -1
  107. package/runtime/assets/{mining-pools-DDrcI0JC.js → mining-pools-DROnvkZS.js} +1 -1
  108. package/runtime/assets/{mining-pools-share-BTghpuPh.js → mining-pools-share-BhHh0hUJ.js} +1 -1
  109. package/runtime/assets/{misery-index-BFKKI3-y.js → misery-index-DpG7yLgX.js} +1 -1
  110. package/runtime/assets/{mover-row-9TS6-Vx5.js → mover-row-Bz-YpFL3.js} +1 -1
  111. package/runtime/assets/{movers-bars-BGRZiztL.js → movers-bars-CEFjsHnv.js} +1 -1
  112. package/runtime/assets/{movers-bubbles-DKwj1mvp.js → movers-bubbles-C-SriZvR.js} +1 -1
  113. package/runtime/assets/{mvrv-bAGE8y8s.js → mvrv-Cg0t6U5X.js} +1 -1
  114. package/runtime/assets/{mvrv-zscore-chart-BBQG73VU.js → mvrv-zscore-chart-qyOkheJb.js} +1 -1
  115. package/runtime/assets/national-debt-BRX09_U_.js +1 -0
  116. package/runtime/assets/{news-feed-BdERDNLF.js → news-feed-DQHSPzk5.js} +1 -1
  117. package/runtime/assets/{nft-activity-bars-DDM29Mlf.js → nft-activity-bars-BmNs4RMC.js} +1 -1
  118. package/runtime/assets/{nft-bubbles-piuKr-F-.js → nft-bubbles-0f9wAld0.js} +1 -1
  119. package/runtime/assets/{nft-collections-BRT3lGEI.js → nft-collections-Czp0t7ZU.js} +1 -1
  120. package/runtime/assets/{nft-scatter-v2AlapcL.js → nft-scatter-BHULn6_-.js} +1 -1
  121. package/runtime/assets/{nft-treemap-DOoBuiAe.js → nft-treemap-D2Kj3AuL.js} +1 -1
  122. package/runtime/assets/{note-Cge-Twe7.js → note-BdVtsqXo.js} +1 -1
  123. package/runtime/assets/{nupl-DyKmiugr.js → nupl-BrK2rcgi.js} +1 -1
  124. package/runtime/assets/{nupl-cycle-chart-CjPXwU_H.js → nupl-cycle-chart-BlXOLj4A.js} +1 -1
  125. package/runtime/assets/{nyfed-fed-funds-band-gauge-CgtBzt19.js → nyfed-fed-funds-band-gauge-DnzVhh9I.js} +1 -1
  126. package/runtime/assets/{nyfed-reference-rate-bars-XM22e3m1.js → nyfed-reference-rate-bars-CxLwUFUY.js} +1 -1
  127. package/runtime/assets/{nyfed-sofr-term-averages-bars-BX8DdQdy.js → nyfed-sofr-term-averages-bars-DxzLVO9o.js} +1 -1
  128. package/runtime/assets/{ofr-stress-category-area-DJ9A1Jek.js → ofr-stress-category-area-TXpXiMP-.js} +1 -1
  129. package/runtime/assets/{ohlcv-volume-bars-DjbIATbf.js → ohlcv-volume-bars-BQZiJJ3u.js} +1 -1
  130. package/runtime/assets/{oi-treemap-DN3lHhIw.js → oi-treemap-BEusAMZU.js} +1 -1
  131. package/runtime/assets/{onchain-oscillator-overlay-BhHhVrFw.js → onchain-oscillator-overlay-BPa_jULR.js} +1 -1
  132. package/runtime/assets/{open-interest-CQz_hue7.js → open-interest-BqO1-ZYo.js} +1 -1
  133. package/runtime/assets/{options-flow-skew-BnNt577O.js → options-flow-skew-Cy0SUhs0.js} +1 -1
  134. package/runtime/assets/{options-iv-DRlcGyOA.js → options-iv-RsCKjmmC.js} +1 -1
  135. package/runtime/assets/{options-max-pain-DttmKvGL.js → options-max-pain-B2pA7KJP.js} +1 -1
  136. package/runtime/assets/{options-max-pain-multi-BWvVp8w0.js → options-max-pain-multi-BLfX8Qe6.js} +1 -1
  137. package/runtime/assets/{options-oi-ladder-heatmap-D-GtQnYR.js → options-oi-ladder-heatmap-Do8eYI3h.js} +1 -1
  138. package/runtime/assets/{options-oi-skew-C7zh_o7-.js → options-oi-skew-D869gcp7.js} +1 -1
  139. package/runtime/assets/{options-oi-strike-CRd6fuzZ.js → options-oi-strike-CKWXk22Q.js} +1 -1
  140. package/runtime/assets/{options-put-call-DaSJMaWB.js → options-put-call-DcSwyIIX.js} +1 -1
  141. package/runtime/assets/{options-vol-smile-DLg5yS2Q.js → options-vol-smile-CqP0-CSw.js} +1 -1
  142. package/runtime/assets/{options-vol-spread-DzhDF8S2.js → options-vol-spread-DMXdphxM.js} +1 -1
  143. package/runtime/assets/{payrolls-bars-DUfM2bRV.js → payrolls-bars-15U_DxmS.js} +1 -1
  144. package/runtime/assets/{pi-cycle-Dnep9J9d.js → pi-cycle-tqHUEYSe.js} +1 -1
  145. package/runtime/assets/{pomodoro-462F-K_R.js → pomodoro-DSswMPuv.js} +1 -1
  146. package/runtime/assets/{portfolio-allocation-BmnvEhEW.js → portfolio-allocation-DHN6r6fl.js} +1 -1
  147. package/runtime/assets/{portfolio-common-DPg-LM-S.js → portfolio-common-e3o9U7qd.js} +1 -1
  148. package/runtime/assets/{portfolio-holdings-pJ3PcDtA.js → portfolio-holdings-Bf6vOm0e.js} +1 -1
  149. package/runtime/assets/{portfolio-movers-88ySthIZ.js → portfolio-movers-DmaGwFtS.js} +1 -1
  150. package/runtime/assets/{portfolio-value-BIrDQqeD.js → portfolio-value-DLQHtwCl.js} +1 -1
  151. package/runtime/assets/{portfolio-value-bars-B5PlVsS-.js → portfolio-value-bars-B8XP7r22.js} +1 -1
  152. package/runtime/assets/{prediction-market-bars-CjhLqjKZ.js → prediction-market-bars-Du1RxZc_.js} +1 -1
  153. package/runtime/assets/{prediction-market-scatter-PFzl9aUV.js → prediction-market-scatter-bdlr6r_V.js} +1 -1
  154. package/runtime/assets/{prediction-markets-COBBk6vK.js → prediction-markets-DNDg43g9.js} +1 -1
  155. package/runtime/assets/{prediction-markets-bubble-OHW4Fyta.js → prediction-markets-bubble-ccP01yj3.js} +1 -1
  156. package/runtime/assets/{price-chart-CttRCaIA.js → price-chart-Cw8OXmKH.js} +1 -1
  157. package/runtime/assets/{price-compare-DNhtDisn.js → price-compare-txGWDCHD.js} +1 -1
  158. package/runtime/assets/{price-liveline-DR_topxQ.js → price-liveline-F7uJKuTS.js} +1 -1
  159. package/runtime/assets/{price-ticker-DgbqT8Ft.js → price-ticker-DQFyiHmW.js} +1 -1
  160. package/runtime/assets/{protocol-fees-bubbles-DJKiIQLP.js → protocol-fees-bubbles-oV66t8AJ.js} +1 -1
  161. package/runtime/assets/{protocol-fees-treemap-YkaWU0jI.js → protocol-fees-treemap-CsZhFjxB.js} +1 -1
  162. package/runtime/assets/{protocol-fees-vs-tvl-scatter-BdbfLYV5.js → protocol-fees-vs-tvl-scatter-CtLKoDeh.js} +1 -1
  163. package/runtime/assets/{protocol-tvl-bubbles-BC38d6kb.js → protocol-tvl-bubbles-CuULi2KY.js} +1 -1
  164. package/runtime/assets/{protocol-tvl-by-category-D6xbGiRH.js → protocol-tvl-by-category-BV2yIdZ_.js} +1 -1
  165. package/runtime/assets/{protocol-tvl-chart-MRYKJKC8.js → protocol-tvl-chart-BRPlR_kj.js} +1 -1
  166. package/runtime/assets/{protocol-tvl-share-area-BaLjcOpi.js → protocol-tvl-share-area-BeWSgocA.js} +1 -1
  167. package/runtime/assets/{protocol-tvl-treemap-DdIxlR7K.js → protocol-tvl-treemap-BYECslhG.js} +1 -1
  168. package/runtime/assets/{puell-multiple-C-5BP2qr.js → puell-multiple-akyTNZyp.js} +1 -1
  169. package/runtime/assets/{put-call-gauge-CIL56SWp.js → put-call-gauge-CwrHYfdq.js} +1 -1
  170. package/runtime/assets/{quote-BCahDrH2.js → quote-6JmbHxfg.js} +1 -1
  171. package/runtime/assets/{rates-board-JeVYxfxX.js → rates-board-CiY6mWMz.js} +1 -1
  172. package/runtime/assets/{real-wages-CxYcPexL.js → real-wages-BTBOxvjP.js} +1 -1
  173. package/runtime/assets/{realized-price-DfKM0AQB.js → realized-price-CbjZ3Sqj.js} +1 -1
  174. package/runtime/assets/{reserve-risk-CZ8W5vox.js → reserve-risk-UlEv8oS1.js} +1 -1
  175. package/runtime/assets/returns-projector-qPZeZ-n9.js +1 -0
  176. package/runtime/assets/{risk-reward-DgkqN_mw.js → risk-reward-DWcu9j4_.js} +1 -1
  177. package/runtime/assets/{rsi-momentum-DLc5Fw80.js → rsi-momentum-BuasFcVH.js} +1 -1
  178. package/runtime/assets/{rules-card-B5gZWhLc.js → rules-card-DkjHPbht.js} +1 -1
  179. package/runtime/assets/scatter-chart-B78EA7lD.js +1 -0
  180. package/runtime/assets/{sector-bars-CahrlX_u.js → sector-bars-JKmedArM.js} +1 -1
  181. package/runtime/assets/{sector-bubbles-DdfZ6e5Q.js → sector-bubbles-DLXckuua.js} +1 -1
  182. package/runtime/assets/{sector-performance-BdYXFE7z.js → sector-performance-C_2-xbIq.js} +1 -1
  183. package/runtime/assets/{sector-treemap-DBA5ilb3.js → sector-treemap-DquBCyc3.js} +1 -1
  184. package/runtime/assets/{sentiment-gauge-BD6U6U9e.js → sentiment-gauge-CuNvuk1q.js} +1 -1
  185. package/runtime/assets/{session-progress-1UWc9VqZ.js → session-progress-BDhJHQEn.js} +1 -1
  186. package/runtime/assets/{short-volume-BR5Bd4dE.js → short-volume-Deb7fra_.js} +1 -1
  187. package/runtime/assets/{short-volume-bars-qHwd3DwT.js → short-volume-bars-DRjpg7RS.js} +1 -1
  188. package/runtime/assets/{snake-VPnsi0wu.js → snake-B9EEDroM.js} +1 -1
  189. package/runtime/assets/{sopr-pPCw72oY.js → sopr-DM_gpDem.js} +1 -1
  190. package/runtime/assets/{spotify-embed-BAYLjQ13.js → spotify-embed-Dxt1RnUX.js} +1 -1
  191. package/runtime/assets/{stablecoin-chains-gXvliWf0.js → stablecoin-chains-LzYMilQE.js} +1 -1
  192. package/runtime/assets/{stablecoin-supply-cKbLU-qq.js → stablecoin-supply-69kqOBoU.js} +1 -1
  193. package/runtime/assets/{stopwatch-USjNEK2T.js → stopwatch-ClPrrveo.js} +1 -1
  194. package/runtime/assets/{top-movers-m16-LIpD.js → top-movers-BRiiYOPQ.js} +1 -1
  195. package/runtime/assets/{treasury-auction-demand-scatter-qtbp6UWp.js → treasury-auction-demand-scatter-yYNPz1VC.js} +1 -1
  196. package/runtime/assets/{treasury-auction-size-bars-BN1UAVmo.js → treasury-auction-size-bars-CGD6MeAz.js} +1 -1
  197. package/runtime/assets/{treasury-auctions-BiOh-3vx.js → treasury-auctions-Z_4MtXmL.js} +1 -1
  198. package/runtime/assets/{treasury-avg-rate-bars-CJ1IViWy.js → treasury-avg-rate-bars-FXGz1a7e.js} +1 -1
  199. package/runtime/assets/{treasury-debt-composition-area-BPy8-h89.js → treasury-debt-composition-area-5yRh0K6a.js} +1 -1
  200. package/runtime/assets/{trending-bars-D_8IduL8.js → trending-bars-z_cjmEXN.js} +1 -1
  201. package/runtime/assets/{trending-bubbles-DYxWvz2k.js → trending-bubbles-nwoxKQEW.js} +1 -1
  202. package/runtime/assets/{trending-coins-DqSuuuF9.js → trending-coins-9vrbEbBm.js} +1 -1
  203. package/runtime/assets/{tvl-bars-inXG_MRY.js → tvl-bars-BkJcttcu.js} +1 -1
  204. package/runtime/assets/{tvl-bubbles-C5-rCI8e.js → tvl-bubbles-D4tahOC6.js} +1 -1
  205. package/runtime/assets/{tvl-treemap-KR6k_75O.js → tvl-treemap-B7kWI7o0.js} +1 -1
  206. package/runtime/assets/{video-DcFqrZ43.js → video-Dsc13Zja.js} +1 -1
  207. package/runtime/assets/{volume-movers-scatter-C4nPVYp-.js → volume-movers-scatter-BA8Wmoil.js} +1 -1
  208. package/runtime/assets/volume-profile-DcSNvDqP.js +1 -0
  209. package/runtime/assets/{volume-share-donut-DCtz5g5J.js → volume-share-donut-3MenMO-V.js} +1 -1
  210. package/runtime/assets/{yield-composition-scatter-Djup_wzz.js → yield-composition-scatter-rfxC16n2.js} +1 -1
  211. package/runtime/assets/{yield-curve-BM9IJJt6.js → yield-curve-DXsfXy4P.js} +1 -1
  212. package/runtime/assets/{yield-momentum-bars-gE1357zR.js → yield-momentum-bars-B9nKuItO.js} +1 -1
  213. package/runtime/assets/yield-risk-pie-DUxkXYIQ.js +1 -0
  214. package/runtime/assets/{yield-scanner-CbcLN2kK.js → yield-scanner-sCBXpQTV.js} +1 -1
  215. package/runtime/assets/{yield-scatter-B6ic-t9n.js → yield-scatter-BZHOhFcm.js} +1 -1
  216. package/runtime/index.html +2 -2
  217. package/runtime/assets/bar-chart-DmyKFv_O.js +0 -1
  218. package/runtime/assets/bubbles-shared-DY914nhm.js +0 -1
  219. package/runtime/assets/index-5ezz63At.css +0 -1
  220. package/runtime/assets/index-D051JGM1.js +0 -1
  221. package/runtime/assets/national-debt-DKFxcreA.js +0 -1
  222. package/runtime/assets/returns-projector-D8UX1710.js +0 -1
  223. package/runtime/assets/scatter-chart-B28DJ7P-.js +0 -1
  224. package/runtime/assets/volume-profile-BYg0s84c.js +0 -1
  225. package/runtime/assets/yield-risk-pie-qhN37WPr.js +0 -1
package/dist/index.js CHANGED
@@ -4260,7 +4260,8 @@ var RUNNERS = [
4260
4260
  ],
4261
4261
  parseDelta: claudeDelta,
4262
4262
  parseStatus: claudeStatus,
4263
- readResult: async (stdout) => claudeResult(stdout)
4263
+ readResult: async (stdout) => claudeResult(stdout),
4264
+ configEnv: "CLAUDE_CONFIG_DIR"
4264
4265
  },
4265
4266
  {
4266
4267
  id: "codex",
@@ -4291,7 +4292,8 @@ var RUNNERS = [
4291
4292
  } catch {
4292
4293
  return stdout.trim();
4293
4294
  }
4294
- }
4295
+ },
4296
+ configEnv: "CODEX_HOME"
4295
4297
  },
4296
4298
  {
4297
4299
  id: "kimi",
@@ -4373,6 +4375,12 @@ Answer the user's question in 2\u20134 sentences of plain text \u2014 no markdow
4373
4375
  Question: ${question}`
4374
4376
  );
4375
4377
  }
4378
+ function resolveAgentEnv(runner, baseEnv = process.env) {
4379
+ if (!runner.configEnv) return baseEnv;
4380
+ const override = baseEnv[`ZFRAMES_${runner.configEnv}`];
4381
+ if (!override) return baseEnv;
4382
+ return { ...baseEnv, [runner.configEnv]: override };
4383
+ }
4376
4384
  var askCounter = 0;
4377
4385
  function runAgent(runner, prompt, cwd, onDelta, onStatus) {
4378
4386
  const outFile = join2(
@@ -4384,7 +4392,10 @@ function runAgent(runner, prompt, cwd, onDelta, onStatus) {
4384
4392
  try {
4385
4393
  child = spawn(runner.bin, runner.buildArgs(prompt, outFile), {
4386
4394
  cwd,
4387
- stdio: ["ignore", "pipe", "pipe"]
4395
+ stdio: ["ignore", "pipe", "pipe"],
4396
+ // A ZFRAMES_<CONFIG_VAR> override points this CLI at a specific account
4397
+ // (config/creds dir) without touching the global env — see resolveAgentEnv.
4398
+ env: resolveAgentEnv(runner)
4388
4399
  });
4389
4400
  } catch (error) {
4390
4401
  resolve5({ ok: false, error: String(error) });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zframes",
3
- "version": "0.8.0",
3
+ "version": "0.8.1",
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",
@@ -40,15 +40,15 @@
40
40
  "@types/node": "^20.14.0",
41
41
  "tsup": "^8.3.0",
42
42
  "typescript": "^5.8.0",
43
- "@zframes/account": "0.0.0",
44
43
  "@zframes/frames": "0.0.0",
44
+ "@zframes/account": "0.0.0",
45
45
  "@zframes/provider-alternativeme": "0.0.0",
46
- "@zframes/provider-coingecko": "0.0.0",
47
46
  "@zframes/provider-defillama": "0.0.0",
47
+ "@zframes/provider-coingecko": "0.0.0",
48
+ "@zframes/provider-hyperliquid": "0.0.0",
48
49
  "@zframes/serve": "0.0.0",
49
- "@zframes/spec": "0.0.0",
50
50
  "@zframes/store": "0.0.0",
51
- "@zframes/provider-hyperliquid": "0.0.0",
51
+ "@zframes/spec": "0.0.0",
52
52
  "@zframes/zai": "0.0.0"
53
53
  },
54
54
  "scripts": {
@@ -0,0 +1 @@
1
+ import{r as p,j as Y}from"./react-qoZPGuNy.js";import{s as G,l as L,h as V}from"./d3-ibrLIlQc.js";import{p as tt}from"./utils-DxneYyA_.js";const $="11px 'DM Sans', sans-serif",at="var(--color-highlight, #8b8bff)",q=6.4,z=8,U=4,et=(e,v)=>{const h=Math.floor(v/q);return e.length<=h?e:h<=1?"…":`${e.slice(0,h-1)}…`},rt=({data:e,orientation:v="vertical",color:h=at,negativeColor:y,height:i=200,formatValue:x=w=>String(Math.round(w)),showValues:u=!0,maxTickLabels:H=8})=>{const w=p.useRef(null),P=p.useRef(null),[n,J]=p.useState(null);return p.useEffect(()=>{const o=w.current;if(!o)return;const c=()=>{const f=o.getBoundingClientRect().width;J(m=>m!==null&&Math.abs(m-f)<.5?m:f)};c();const l=typeof ResizeObserver<"u"?new ResizeObserver(c):null;return l==null||l.observe(o),()=>l==null?void 0:l.disconnect()},[]),p.useEffect(()=>{const o=P.current;if(!o||!n||n<=0||!e.length)return;G(o).selectAll("*").remove();const c=G(o),l=t=>t.color??(y&&t.value<0?y:h),f=!tt();if(v==="horizontal"){const t=Math.min(Math.max(...e.map(a=>a.label.length))*q+z+U,n*.35),r=u?52:8,R=Math.max(n-t-r,10),M=i/e.length,E=Math.min(Math.max(M*.55,3),18),F=y!==void 0&&e.some(a=>a.value<0),C=Math.max(...e.map(a=>Math.abs(a.value)),1e-9),_=F?L().domain([-C,C]).range([0,R]):L().domain([Math.min(0,...e.map(a=>a.value)),C]).range([0,R]),d=_(0),X=c.append("g").attr("transform",`translate(${t},0)`);F&&X.append("line").attr("x1",d).attr("x2",d).attr("y1",0).attr("y2",i).attr("stroke","currentColor").attr("stroke-opacity",.18);const O=X.selectAll("g.bar-row").data(e).enter().append("g").attr("transform",(a,B)=>`translate(0,${B*M+M/2})`),D=O.append("rect").attr("y",-E/2).attr("height",E).attr("rx",Math.min(3,E/2)).attr("fill",l).attr("x",d).attr("width",0),I=a=>Math.min(d,_(a.value)),T=a=>Math.abs(_(a.value)-d);f?D.transition().duration(400).attr("x",I).attr("width",T):D.attr("x",I).attr("width",T),c.selectAll("text.bar-label").data(e).enter().append("text").attr("x",t-z).attr("y",(a,B)=>B*M+M/2).attr("text-anchor","end").attr("dominant-baseline","central").attr("fill","currentColor").attr("fill-opacity",.65).style("font",$).text(a=>et(a.label,t-z-U)),u&&O.append("text").attr("x",a=>a.value>=0?_(a.value)+6:d+6).attr("text-anchor","start").attr("dominant-baseline","central").attr("fill",l).style("font",$).style("font-weight","600").text(a=>x(a.value)),O.append("title").text(a=>`${a.label}: ${x(a.value)}`);return}const m=18,j=u?16:6,k=Math.max(i-m-j,10),K=Math.min(0,...e.map(t=>t.value)),Q=Math.max(0,...e.map(t=>t.value),1e-9),b=L().domain([K,Q]).range([k,0]).nice(),s=V().domain(e.map((t,r)=>r)).range([0,n]).paddingInner(.25).paddingOuter(.05),g=b(0),A=c.append("g").attr("transform",`translate(0,${j})`);A.append("line").attr("x1",0).attr("x2",n).attr("y1",g).attr("y2",g).attr("stroke","currentColor").attr("stroke-opacity",.18);const N=A.selectAll("rect.bar").data(e).enter().append("rect").attr("x",(t,r)=>s(r)??0).attr("width",s.bandwidth()).attr("rx",Math.min(2,s.bandwidth()/2)).attr("fill",l).attr("y",g).attr("height",0),S=t=>Math.min(g,b(t.value)),W=t=>Math.abs(b(t.value)-g);f?N.transition().duration(400).attr("y",S).attr("height",W):N.attr("y",S).attr("height",W),A.selectAll("rect.bar-hit").data(e).enter().append("rect").attr("x",(t,r)=>s(r)??0).attr("width",s.bandwidth()).attr("y",0).attr("height",k).attr("fill","transparent").append("title").text(t=>`${t.label}: ${x(t.value)}`),u&&s.bandwidth()>=26&&A.selectAll("text.bar-value").data(e).enter().append("text").attr("x",(t,r)=>(s(r)??0)+s.bandwidth()/2).attr("y",t=>t.value>=0?b(t.value)-4:b(t.value)+12).attr("text-anchor","middle").attr("fill",l).style("font",$).style("font-weight","600").text(t=>x(t.value));const Z=Math.max(1,Math.ceil(e.length/H));c.selectAll("text.tick-label").data(e.filter((t,r)=>r%Z===0)).enter().append("text").attr("x",t=>{const r=e.indexOf(t),R=(s(r)??0)+s.bandwidth()/2;return Math.min(Math.max(R,16),n-16)}).attr("y",i-4).attr("text-anchor","middle").attr("fill","currentColor").attr("fill-opacity",.55).style("font",$).text(t=>t.label)},[e,n,i,v,h,y,x,u,H]),Y.jsx("div",{ref:w,className:"w-full",style:{height:i},children:n!==null&&n>0&&Y.jsx("svg",{ref:P,width:n,height:i})})},it=p.memo(rt);export{it as B};
@@ -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-DxkEZcwQ.js";import{f as j,j as i,k as v}from"./index-CiYWppnQ.js";import{F as c}from"./ui-Bq3RQsdJ.js";i.schema;const o={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(c,{loading:!0,children:"loading dominance…"});if(!s)return e.jsx(c,{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:o[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:o[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
+ 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-DxkEZcwQ.js";import{f as j,j as i,k as v}from"./index-BHlJHScr.js";import{F as c}from"./ui-Bq3RQsdJ.js";i.schema;const o={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(c,{loading:!0,children:"loading dominance…"});if(!s)return e.jsx(c,{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:o[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:o[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{e as N,a as j,c as y}from"./format-DxkEZcwQ.js";import{f as k,bY as b}from"./index-CiYWppnQ.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
+ import{r as u,j as e}from"./react-qoZPGuNy.js";import{i as c}from"./content-shared-BZ1XzrJx.js";import{e as N,a as j,c as y}from"./format-DxkEZcwQ.js";import{f as k,bY as b}from"./index-BHlJHScr.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 i,c0 as n}from"./index-CiYWppnQ.js";n.schema;function m(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=m(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(c=>(c+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 j=i({...n,component:x});export{j as breathingFrame};
1
+ import{r as s,j as r}from"./react-qoZPGuNy.js";import{f as i,c0 as n}from"./index-BHlJHScr.js";n.schema;function m(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=m(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(c=>(c+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 j=i({...n,component:x});export{j as breathingFrame};
@@ -1 +1 @@
1
- import{r as m,j as e}from"./react-qoZPGuNy.js";import{d as r}from"./format-DxkEZcwQ.js";import{f,cU as i,b1 as p}from"./index-CiYWppnQ.js";import{F as c}from"./ui-Bq3RQsdJ.js";import{B as u}from"./bar-chart-DmyKFv_O.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";i.schema;function x({config:l}){var a;const{blocks:t,isLoading:n}=p(l.count),s=m.useMemo(()=>[...t].reverse().map(o=>({label:o.height.toLocaleString("en-US"),value:o.size})),[t]);return n?e.jsx(c,{loading:!0,children:"loading blocks…"}):s.length===0?e.jsx(c,{children:"no block data yet"}):e.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[e.jsx(u,{data:s,height:200,formatValue:r,showValues:!1,maxTickLabels:6}),e.jsxs("div",{className:"caption text-soft text-center",children:["block size (bytes) · latest ",r(((a=t[0])==null?void 0:a.size)??0)]})]})}const z=f({...i,component:x});export{z as btcBlockSizeBarsFrame};
1
+ import{r as m,j as e}from"./react-qoZPGuNy.js";import{d as r}from"./format-DxkEZcwQ.js";import{f,cU as i,b1 as p}from"./index-BHlJHScr.js";import{F as c}from"./ui-Bq3RQsdJ.js";import{B as u}from"./bar-chart-DCMbxUJx.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";i.schema;function x({config:l}){var a;const{blocks:t,isLoading:n}=p(l.count),s=m.useMemo(()=>[...t].reverse().map(o=>({label:o.height.toLocaleString("en-US"),value:o.size})),[t]);return n?e.jsx(c,{loading:!0,children:"loading blocks…"}):s.length===0?e.jsx(c,{children:"no block data yet"}):e.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[e.jsx(u,{data:s,height:200,formatValue:r,showValues:!1,maxTickLabels:6}),e.jsxs("div",{className:"caption text-soft text-center",children:["block size (bytes) · latest ",r(((a=t[0])==null?void 0:a.size)??0)]})]})}const z=f({...i,component:x});export{z as btcBlockSizeBarsFrame};
@@ -1 +1 @@
1
- import{j as s}from"./react-qoZPGuNy.js";import{t as c,j as i}from"./format-DxkEZcwQ.js";import{f as r,b0 as o,b1 as m}from"./index-CiYWppnQ.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
+ import{j as s}from"./react-qoZPGuNy.js";import{t as c,j as i}from"./format-DxkEZcwQ.js";import{f as r,b0 as o,b1 as m}from"./index-BHlJHScr.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-DxkEZcwQ.js";import{f as u,b4 as c,b5 as h}from"./index-CiYWppnQ.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
+ import{j as t}from"./react-qoZPGuNy.js";import{a as r,b as m,c as o}from"./format-DxkEZcwQ.js";import{f as u,b4 as c,b5 as h}from"./index-BHlJHScr.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{r as o,j as t}from"./react-qoZPGuNy.js";import{d as l,k as f}from"./format-DxkEZcwQ.js";import{f as d,cT as r,b3 as m}from"./index-CiYWppnQ.js";import{F as a}from"./ui-Bq3RQsdJ.js";import{M as h}from"./mini-line-chart-DyG55cVW.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";r.schema;function u({config:i}){const{data:e,isLoading:c}=m(i.window),n=o.useMemo(()=>((e==null?void 0:e.difficulty)??[]).map(s=>({date:new Date(s.time).toISOString(),value:s.difficulty})),[e==null?void 0:e.difficulty]);return c?t.jsx(a,{loading:!0,children:"loading difficulty…"}):e?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:"network difficulty"}),t.jsx("div",{className:"metric-lg text-strong leading-none",children:l(e.currentDifficulty)})]}),t.jsxs("div",{className:"text-right",children:[t.jsx("div",{className:"body-md text-normal font-bold tabular-nums",children:f(e.currentHashrate)}),t.jsx("div",{className:"caption text-soft",children:"hashrate"})]})]}),t.jsx(h,{data:n,width:320,height:54,color:"hsl(var(--zf-accent-hue, 242) 85% 72%)"}),t.jsxs("div",{className:"caption text-soft",children:["past ",i.window]})]}):t.jsx(a,{children:"no difficulty data yet"})}const N=d({...r,component:u});export{N as btcDifficultyChartFrame};
1
+ import{r as o,j as t}from"./react-qoZPGuNy.js";import{d as l,k as f}from"./format-DxkEZcwQ.js";import{f as d,cT as r,b3 as m}from"./index-BHlJHScr.js";import{F as a}from"./ui-Bq3RQsdJ.js";import{M as h}from"./mini-line-chart-DyG55cVW.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";r.schema;function u({config:i}){const{data:e,isLoading:c}=m(i.window),n=o.useMemo(()=>((e==null?void 0:e.difficulty)??[]).map(s=>({date:new Date(s.time).toISOString(),value:s.difficulty})),[e==null?void 0:e.difficulty]);return c?t.jsx(a,{loading:!0,children:"loading difficulty…"}):e?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:"network difficulty"}),t.jsx("div",{className:"metric-lg text-strong leading-none",children:l(e.currentDifficulty)})]}),t.jsxs("div",{className:"text-right",children:[t.jsx("div",{className:"body-md text-normal font-bold tabular-nums",children:f(e.currentHashrate)}),t.jsx("div",{className:"caption text-soft",children:"hashrate"})]})]}),t.jsx(h,{data:n,width:320,height:54,color:"hsl(var(--zf-accent-hue, 242) 85% 72%)"}),t.jsxs("div",{className:"caption text-soft",children:["past ",i.window]})]}):t.jsx(a,{children:"no difficulty data yet"})}const N=d({...r,component:u});export{N as btcDifficultyChartFrame};
@@ -1 +1 @@
1
- import{j as t}from"./react-qoZPGuNy.js";import{F as i,a as e}from"./btc-shared-yOWoU9Im.js";import{f as c,aY as n,aZ as f}from"./index-CiYWppnQ.js";import{F as a}from"./ui-Bq3RQsdJ.js";import"./format-DxkEZcwQ.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
+ import{j as t}from"./react-qoZPGuNy.js";import{F as i,a as e}from"./btc-shared-yOWoU9Im.js";import{f as c,aY as n,aZ as f}from"./index-BHlJHScr.js";import{F as a}from"./ui-Bq3RQsdJ.js";import"./format-DxkEZcwQ.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 t}from"./react-qoZPGuNy.js";import{k as h,d as l}from"./format-DxkEZcwQ.js";import{f as m,b2 as i,b3 as d}from"./index-CiYWppnQ.js";import{F as r}from"./ui-Bq3RQsdJ.js";import{M as f}from"./mini-line-chart-DyG55cVW.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";i.schema;function x({config:a}){const{data:e,isLoading:n}=d(a.window),o=c.useMemo(()=>((e==null?void 0:e.hashrates)??[]).map(s=>({date:new Date(s.time).toISOString(),value:s.hashrate})),[e==null?void 0:e.hashrates]);return n?t.jsx(r,{loading:!0,children:"loading hashrate…"}):e?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:"network hashrate"}),t.jsx("div",{className:"metric-lg text-strong leading-none",children:h(e.currentHashrate)})]}),t.jsxs("div",{className:"text-right",children:[t.jsx("div",{className:"body-md text-normal font-bold tabular-nums",children:l(e.currentDifficulty)}),t.jsx("div",{className:"caption text-soft",children:"difficulty"})]})]}),t.jsx(f,{data:o,width:320,height:54,color:"hsl(var(--zf-accent-hue, 242) 85% 72%)"}),t.jsxs("div",{className:"caption text-soft",children:["past ",a.window]})]}):t.jsx(r,{children:"no hashrate data yet"})}const b=m({...i,component:x});export{b as btcHashrateFrame};
1
+ import{r as c,j as t}from"./react-qoZPGuNy.js";import{k as h,d as l}from"./format-DxkEZcwQ.js";import{f as m,b2 as i,b3 as d}from"./index-BHlJHScr.js";import{F as r}from"./ui-Bq3RQsdJ.js";import{M as f}from"./mini-line-chart-DyG55cVW.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";i.schema;function x({config:a}){const{data:e,isLoading:n}=d(a.window),o=c.useMemo(()=>((e==null?void 0:e.hashrates)??[]).map(s=>({date:new Date(s.time).toISOString(),value:s.hashrate})),[e==null?void 0:e.hashrates]);return n?t.jsx(r,{loading:!0,children:"loading hashrate…"}):e?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:"network hashrate"}),t.jsx("div",{className:"metric-lg text-strong leading-none",children:h(e.currentHashrate)})]}),t.jsxs("div",{className:"text-right",children:[t.jsx("div",{className:"body-md text-normal font-bold tabular-nums",children:l(e.currentDifficulty)}),t.jsx("div",{className:"caption text-soft",children:"difficulty"})]})]}),t.jsx(f,{data:o,width:320,height:54,color:"hsl(var(--zf-accent-hue, 242) 85% 72%)"}),t.jsxs("div",{className:"caption text-soft",children:["past ",a.window]})]}):t.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-yOWoU9Im.js";import{d as x}from"./format-DxkEZcwQ.js";import{f as p,a_ as o,a$ as f}from"./index-CiYWppnQ.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
+ import{j as e}from"./react-qoZPGuNy.js";import{F as m,f as d}from"./btc-shared-yOWoU9Im.js";import{d as x}from"./format-DxkEZcwQ.js";import{f as p,a_ as o,a$ as f}from"./index-BHlJHScr.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};
@@ -0,0 +1 @@
1
+ import{r as p,j as l}from"./react-qoZPGuNy.js";import{F as B}from"./ui-Bq3RQsdJ.js";import{s as j,B as O,C as z,D,E as S,F as U,G as I}from"./d3-ibrLIlQc.js";import{p as P}from"./utils-DxneYyA_.js";const T="'DM Sans', sans-serif",q="var(--color-highlight, #8b8bff)";function L(e){return e<=4?.85:e<=10?.72:e<=20?.6:e<=50?.5:.42}function Y(e,h,f){const x=Math.max(...e.map(s=>s.value),1e-9),o=e.map(s=>Math.sqrt(Math.max(s.value,0)/x)),m=o.reduce((s,n)=>s+Math.PI*n*n,0),y=h*f*L(e.length),r=Math.sqrt(y/Math.max(m,1e-9)),w=Math.min(h,f)*.32;return o.map(s=>Math.max(6,Math.min(s*r,w)))}const _=({nodes:e,height:h,showLabels:f=!0,color:x=q,formatTitle:o})=>{const m=p.useRef(null),y=p.useRef(null),[r,w]=p.useState(null),s=p.useId().replace(/[^a-zA-Z0-9]/g,"");return p.useEffect(()=>{const n=m.current;if(!n)return;const i=()=>{const u=n.getBoundingClientRect();w(d=>d&&Math.abs(d.w-u.width)<.5&&Math.abs(d.h-u.height)<.5?d:{w:u.width,h:u.height})};i();const a=typeof ResizeObserver<"u"?new ResizeObserver(i):null;return a==null||a.observe(n),()=>a==null?void 0:a.disconnect()},[]),p.useEffect(()=>{const n=y.current;if(!n||!r||r.w<=0||r.h<=0||!e.length)return;const{w:i,h:a}=r;j(n).selectAll("*").remove();const u=j(n),d=u.append("defs"),E=u.append("g"),A=Y(e,i,a),R=e.map((t,c)=>({node:t,r:A[c],x:i/2+Math.cos(c*2.4)*(8+c*6),y:a/2+Math.sin(c*2.4)*(8+c*6)})),M=4,v=t=>{t.x=Math.max(t.r+M,Math.min(i-t.r-M,t.x??0)),t.y=Math.max(t.r+M,Math.min(a-t.r-M,t.y??0))},g=O(R).force("x",z(i/2).strength(.05)).force("y",D(a/2).strength(.05*i/a)).force("collide",S().radius(t=>t.r+1.5).strength(.9).iterations(3)).force("charge",U().strength(2)).velocityDecay(.35),C=E.selectAll("g.bubble").data(R).enter().append("g").attr("class","bubble").attr("cursor","grab");C.each(function(t,c){const b=j(this),F=t.node.color??x;b.append("circle").attr("r",t.r).attr("fill",F).attr("fill-opacity",t.node.imageUrl?.12:.55),t.node.imageUrl&&(d.append("clipPath").attr("id",`${s}-${c}`).append("circle").attr("r",t.r),b.append("image").attr("href",t.node.imageUrl).attr("x",-t.r).attr("y",-t.r).attr("width",t.r*2).attr("height",t.r*2).attr("clip-path",`url(#${s}-${c})`).attr("preserveAspectRatio","xMidYMid slice").style("opacity",0).on("load",function(){j(this).transition().duration(300).style("opacity",.9)})),b.append("circle").attr("r",Math.max(t.r-1,1)).attr("fill","none").attr("stroke",t.node.borderColor??"currentColor").attr("stroke-width",1.5).attr("stroke-opacity",t.node.borderColor?.75:.15);const k=Math.max(9,Math.min(t.r*.42,15)),N=t.node.label.length*k*.6;f&&t.r>=14&&N<=t.r*2-6&&b.append("text").attr("text-anchor","middle").attr("dy","0.35em").attr("fill","currentColor").attr("fill-opacity",.9).attr("paint-order","stroke").attr("stroke","rgba(0,0,0,0.55)").attr("stroke-width",2.5).style("font",`600 ${k}px ${T}`).style("pointer-events","none").text(t.node.label),b.append("title").text(o?o(t.node):t.node.label)});const $=()=>{R.forEach(v),C.attr("transform",t=>`translate(${t.x},${t.y})`)};if(P()){g.stop();for(let t=0;t<200;t++)g.tick();$()}else g.on("tick",$),C.call(I().on("start",t=>{t.active||g.alphaTarget(.25).restart(),t.subject.fx=t.subject.x,t.subject.fy=t.subject.y}).on("drag",t=>{t.subject.fx=t.x,t.subject.fy=t.y}).on("end",t=>{t.active||g.alphaTarget(0),t.subject.fx=null,t.subject.fy=null}));return()=>{g.stop()}},[e,r,f,x,o,s]),l.jsx("div",{ref:m,className:"h-full w-full",style:h?{height:h}:void 0,children:r&&r.w>0&&r.h>0&&l.jsx("svg",{ref:y,width:r.w,height:r.h})})},G=p.memo(_);function J({nodes:e,isLoading:h,loadingText:f,emptyText:x,caption:o,formatTitle:m}){return h?l.jsx(B,{loading:!0,children:f}):e.length===0?l.jsx(B,{children:x}):l.jsxs("div",{className:"flex h-full flex-col gap-1 text-normal",children:[l.jsx("div",{className:"min-h-0 flex-1",children:l.jsx(G,{nodes:e,formatTitle:m})}),o&&l.jsx("div",{className:"caption text-soft text-center",children:o})]})}export{J as B};
@@ -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,aQ as N}from"./index-CiYWppnQ.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
+ import{r as n,j as e}from"./react-qoZPGuNy.js";import{i as C}from"./content-shared-BZ1XzrJx.js";import{f as F,aQ as N}from"./index-BHlJHScr.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 f,j as t}from"./react-qoZPGuNy.js";import{f as d,dm as c,O as p,h as n}from"./index-CiYWppnQ.js";import{f as h}from"./format-DxkEZcwQ.js";import{F as u}from"./ui-Bq3RQsdJ.js";import{B as x}from"./bar-chart-DmyKFv_O.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";c.schema;function b({config:r}){const{data:e,isLoading:m}=p(r.symbol),a=f.useMemo(()=>{const o=(e==null?void 0:e.metrics)??[],s=o.find(l=>l.label==="Total assets"),i=o.find(l=>l.label==="Shareholders' equity");return!s||!i?null:{fiscalPeriod:s.fiscalPeriod,bars:[{label:"Total assets",value:s.value},{label:"Liabilities",value:s.value-i.value},{label:"Shareholders' equity",value:i.value}]}},[e]);return m?t.jsx(u,{loading:!0,children:"loading capital structure…"}):a?t.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[t.jsx(x,{data:a.bars,orientation:"horizontal",height:Math.max(a.bars.length*24,96),formatValue:h}),t.jsxs("div",{className:"caption text-soft text-center",children:[(e==null?void 0:e.entityName)||n(r.symbol)," · ",a.fiscalPeriod," · liabilities derived (assets − equity)"]})]}):t.jsxs(u,{children:["no SEC balance-sheet data for “",n(r.symbol),"”"]})}const g=d({...c,component:b});export{g as capitalStructureBarsFrame};
1
+ import{r as f,j as t}from"./react-qoZPGuNy.js";import{f as d,dm as c,O as p,h as n}from"./index-BHlJHScr.js";import{f as h}from"./format-DxkEZcwQ.js";import{F as u}from"./ui-Bq3RQsdJ.js";import{B as x}from"./bar-chart-DCMbxUJx.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";c.schema;function b({config:r}){const{data:e,isLoading:m}=p(r.symbol),a=f.useMemo(()=>{const o=(e==null?void 0:e.metrics)??[],s=o.find(l=>l.label==="Total assets"),i=o.find(l=>l.label==="Shareholders' equity");return!s||!i?null:{fiscalPeriod:s.fiscalPeriod,bars:[{label:"Total assets",value:s.value},{label:"Liabilities",value:s.value-i.value},{label:"Shareholders' equity",value:i.value}]}},[e]);return m?t.jsx(u,{loading:!0,children:"loading capital structure…"}):a?t.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[t.jsx(x,{data:a.bars,orientation:"horizontal",height:Math.max(a.bars.length*24,96),formatValue:h}),t.jsxs("div",{className:"caption text-soft text-center",children:[(e==null?void 0:e.entityName)||n(r.symbol)," · ",a.fiscalPeriod," · liabilities derived (assets − equity)"]})]}):t.jsxs(u,{children:["no SEC balance-sheet data for “",n(r.symbol),"”"]})}const g=d({...c,component:b});export{g as capitalStructureBarsFrame};
@@ -1 +1 @@
1
- import{j as i}from"./react-qoZPGuNy.js";import{d as t}from"./format-DxkEZcwQ.js";import{M as r}from"./metric-row-BVVhjsjK.js";import{f as e,c6 as m,c7 as c}from"./index-CiYWppnQ.js";import{F as s,s as l}from"./ui-Bq3RQsdJ.js";function h(){const{chains:o,isLoading:n}=c();return n?i.jsx(s,{loading:!0,children:"loading chain activity…"}):o.length===0?i.jsx(s,{children:"no chain data"}):i.jsx("div",{className:l,children:o.map(a=>i.jsx(r,{label:a.label,meta:`${t(a.mempoolTxns)} mempool · ${t(a.blocks24h)} blocks`,value:`${t(a.transactions24h)} tx`},a.chain))})}const v=e({...m,component:h});export{v as chainActivityFrame};
1
+ import{j as i}from"./react-qoZPGuNy.js";import{d as t}from"./format-DxkEZcwQ.js";import{M as r}from"./metric-row-BVVhjsjK.js";import{f as e,c6 as m,c7 as c}from"./index-BHlJHScr.js";import{F as s,s as l}from"./ui-Bq3RQsdJ.js";function h(){const{chains:o,isLoading:n}=c();return n?i.jsx(s,{loading:!0,children:"loading chain activity…"}):o.length===0?i.jsx(s,{children:"no chain data"}):i.jsx("div",{className:l,children:o.map(a=>i.jsx(r,{label:a.label,meta:`${t(a.mempoolTxns)} mempool · ${t(a.blocks24h)} blocks`,value:`${t(a.transactions24h)} tx`},a.chain))})}const v=e({...m,component:h});export{v as chainActivityFrame};
@@ -1 +1 @@
1
- import{r as m,j as t}from"./react-qoZPGuNy.js";import{d as l}from"./format-DxkEZcwQ.js";import{f as h,cd as n,c7 as f}from"./index-CiYWppnQ.js";import{F as e}from"./ui-Bq3RQsdJ.js";import{B as p}from"./bar-chart-DmyKFv_O.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";n.schema;function x({config:r}){const{chains:s,isLoading:o}=f(),i=m.useMemo(()=>[...s].sort((a,c)=>c.transactions24h-a.transactions24h).slice(0,r.limit).map(a=>({label:a.label,value:a.transactions24h})),[s,r.limit]);return o?t.jsx(e,{loading:!0,children:"loading chain activity…"}):i.length===0?t.jsx(e,{children:"no chain data yet"}):t.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[t.jsx(p,{data:i,orientation:"horizontal",height:Math.max(i.length*26,96),formatValue:l}),t.jsx("div",{className:"caption text-soft text-center",children:"transactions · last 24h"})]})}const A=h({...n,component:x});export{A as chainActivityBarsFrame};
1
+ import{r as m,j as t}from"./react-qoZPGuNy.js";import{d as l}from"./format-DxkEZcwQ.js";import{f as h,cd as n,c7 as f}from"./index-BHlJHScr.js";import{F as e}from"./ui-Bq3RQsdJ.js";import{B as p}from"./bar-chart-DCMbxUJx.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";n.schema;function x({config:r}){const{chains:s,isLoading:o}=f(),i=m.useMemo(()=>[...s].sort((a,c)=>c.transactions24h-a.transactions24h).slice(0,r.limit).map(a=>({label:a.label,value:a.transactions24h})),[s,r.limit]);return o?t.jsx(e,{loading:!0,children:"loading chain activity…"}):i.length===0?t.jsx(e,{children:"no chain data yet"}):t.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[t.jsx(p,{data:i,orientation:"horizontal",height:Math.max(i.length*26,96),formatValue:l}),t.jsx("div",{className:"caption text-soft text-center",children:"transactions · last 24h"})]})}const A=h({...n,component:x});export{A as chainActivityBarsFrame};
@@ -1 +1 @@
1
- import{r as c,j as a}from"./react-qoZPGuNy.js";import{c as s,d as m,a as h}from"./format-DxkEZcwQ.js";import{f as l,cW as o,c7 as p}from"./index-CiYWppnQ.js";import{F as i}from"./ui-Bq3RQsdJ.js";import{S as f}from"./scatter-chart-B28DJ7P-.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";o.schema;function x(g){const{chains:e,isLoading:n}=p(),r=c.useMemo(()=>e.filter(t=>t.transactions24h>0).map(t=>({id:t.chain,label:t.label,x:t.priceChangePct24h,y:t.transactions24h,weight:t.mempoolTxns,color:s(t.priceChangePct24h)})),[e]);return n?a.jsx(i,{loading:!0,children:"loading chain activity…"}):r.length===0?a.jsx(i,{children:"no chain data yet"}):a.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[a.jsx(f,{data:r,yScale:"log",height:210,zeroXLine:!0,formatX:h,formatY:m,maxLabels:10}),a.jsx("div",{className:"caption text-soft text-center",children:"24h price change (x) vs 24h transactions (y, log) · bubble = mempool backlog"})]})}const S=l({...o,component:x});export{S as chainActivityScatterFrame};
1
+ import{r as c,j as a}from"./react-qoZPGuNy.js";import{c as s,d as m,a as h}from"./format-DxkEZcwQ.js";import{f as l,cW as o,c7 as p}from"./index-BHlJHScr.js";import{F as i}from"./ui-Bq3RQsdJ.js";import{S as f}from"./scatter-chart-B78EA7lD.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";o.schema;function x(g){const{chains:e,isLoading:n}=p(),r=c.useMemo(()=>e.filter(t=>t.transactions24h>0).map(t=>({id:t.chain,label:t.label,x:t.priceChangePct24h,y:t.transactions24h,weight:t.mempoolTxns,color:s(t.priceChangePct24h)})),[e]);return n?a.jsx(i,{loading:!0,children:"loading chain activity…"}):r.length===0?a.jsx(i,{children:"no chain data yet"}):a.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[a.jsx(f,{data:r,yScale:"log",height:210,zeroXLine:!0,formatX:h,formatY:m,maxLabels:10}),a.jsx("div",{className:"caption text-soft text-center",children:"24h price change (x) vs 24h transactions (y, log) · bubble = mempool backlog"})]})}const S=l({...o,component:x});export{S as chainActivityScatterFrame};
@@ -1 +1 @@
1
- import{r as h,j as e}from"./react-qoZPGuNy.js";import{a as m,D as l,U as p}from"./format-DxkEZcwQ.js";import{f,cV as s,c7 as u}from"./index-CiYWppnQ.js";import{F as n}from"./ui-Bq3RQsdJ.js";import{B as g}from"./bar-chart-DmyKFv_O.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";s.schema;function x({config:i}){const{chains:o,isLoading:c}=u(),t=h.useMemo(()=>[...o].sort((a,r)=>Math.abs(r.priceChangePct24h)-Math.abs(a.priceChangePct24h)).slice(0,i.limit).sort((a,r)=>r.priceChangePct24h-a.priceChangePct24h).map(a=>({label:a.label,value:a.priceChangePct24h})),[o,i.limit]);return c?e.jsx(n,{loading:!0,children:"loading chain movers…"}):t.length===0?e.jsx(n,{children:"no chain data yet"}):e.jsx("div",{className:"flex h-full flex-col justify-center text-normal",children:e.jsx(g,{data:t,orientation:"horizontal",color:p,negativeColor:l,height:Math.max(t.length*24,96),formatValue:m})})}const b=f({...s,component:x});export{b as chainPriceMoversFrame};
1
+ import{r as h,j as e}from"./react-qoZPGuNy.js";import{a as m,D as l,U as p}from"./format-DxkEZcwQ.js";import{f,cV as s,c7 as u}from"./index-BHlJHScr.js";import{F as n}from"./ui-Bq3RQsdJ.js";import{B as g}from"./bar-chart-DCMbxUJx.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";s.schema;function x({config:i}){const{chains:o,isLoading:c}=u(),t=h.useMemo(()=>[...o].sort((a,r)=>Math.abs(r.priceChangePct24h)-Math.abs(a.priceChangePct24h)).slice(0,i.limit).sort((a,r)=>r.priceChangePct24h-a.priceChangePct24h).map(a=>({label:a.label,value:a.priceChangePct24h})),[o,i.limit]);return c?e.jsx(n,{loading:!0,children:"loading chain movers…"}):t.length===0?e.jsx(n,{children:"no chain data yet"}):e.jsx("div",{className:"flex h-full flex-col justify-center text-normal",children:e.jsx(g,{data:t,orientation:"horizontal",color:p,negativeColor:l,height:Math.max(t.length*24,96),formatValue:m})})}const b=f({...s,component:x});export{b as chainPriceMoversFrame};
@@ -1 +1 @@
1
- import{r as x,j as t}from"./react-qoZPGuNy.js";import{f as p,bZ as o,a8 as u}from"./index-CiYWppnQ.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
+ import{r as x,j as t}from"./react-qoZPGuNy.js";import{f as p,bZ as o,a8 as u}from"./index-BHlJHScr.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,l as y}from"./index-CiYWppnQ.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
+ import{r as s,j as o}from"./react-qoZPGuNy.js";import{f as R,l as y}from"./index-BHlJHScr.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 f,j as o}from"./react-qoZPGuNy.js";import{a as p}from"./format-DxkEZcwQ.js";import{f as d,cF as l,bg as h}from"./index-CiYWppnQ.js";import{F as i}from"./ui-Bq3RQsdJ.js";import{H as x}from"./index-D051JGM1.js";import"./utils-DxneYyA_.js";l.schema;const b=["1h","24h","7d","30d"];function g({data:n,width:r}){return r<44?null:o.jsx("div",{className:"flex h-full w-full items-center justify-center",children:o.jsx("span",{className:"caption text-normal tabular-nums",children:p(n.value)})})}function j({config:n}){const{entries:r,isLoading:c}=h(),a=f.useMemo(()=>{const u=[...r].sort((t,e)=>t.rank-e.rank).slice(0,n.limit),m=[];for(const t of u)for(const e of b){const s=t.changePct[e];Number.isFinite(s)&&m.push({id:`${t.symbol}-${e}`,row:t.symbol,column:e,value:s})}return m},[r,n.limit]);return c?o.jsx(i,{loading:!0,children:"loading momentum…"}):a.length===0?o.jsx(i,{children:"no momentum data yet"}):o.jsx(x,{data:a,CellComponent:g,gap:3,showLabels:!0,rowLabelWidth:48,columnLabelHeight:20})}const y=d({...l,component:j});export{y as coinMomentumHeatmapFrame};
1
+ import{r as f,j as o}from"./react-qoZPGuNy.js";import{a as p}from"./format-DxkEZcwQ.js";import{f as d,cF as l,bg as h}from"./index-BHlJHScr.js";import{F as i}from"./ui-Bq3RQsdJ.js";import{H as x}from"./index-Bw1aFtyx.js";import"./utils-DxneYyA_.js";l.schema;const b=["1h","24h","7d","30d"];function g({data:n,width:r}){return r<44?null:o.jsx("div",{className:"flex h-full w-full items-center justify-center",children:o.jsx("span",{className:"caption text-normal tabular-nums",children:p(n.value)})})}function j({config:n}){const{entries:r,isLoading:c}=h(),a=f.useMemo(()=>{const u=[...r].sort((t,e)=>t.rank-e.rank).slice(0,n.limit),m=[];for(const t of u)for(const e of b){const s=t.changePct[e];Number.isFinite(s)&&m.push({id:`${t.symbol}-${e}`,row:t.symbol,column:e,value:s})}return m},[r,n.limit]);return c?o.jsx(i,{loading:!0,children:"loading momentum…"}):a.length===0?o.jsx(i,{children:"no momentum data yet"}):o.jsx(x,{data:a,CellComponent:g,gap:3,showLabels:!0,rowLabelWidth:48,columnLabelHeight:20})}const y=d({...l,component:j});export{y as coinMomentumHeatmapFrame};
@@ -1 +1 @@
1
- import{r as l,j as e}from"./react-qoZPGuNy.js";import{c as h,a as n}from"./format-DxkEZcwQ.js";import{f as u,cG as s,bg as d}from"./index-CiYWppnQ.js";import{F as m}from"./ui-Bq3RQsdJ.js";import{S as f}from"./scatter-chart-B28DJ7P-.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";s.schema;function g({config:r}){const{entries:o,isLoading:i}=d(),a=l.useMemo(()=>o.filter(t=>Number.isFinite(t.changePct["24h"])&&Number.isFinite(t.changePct["7d"])&&t.marketCapUsd>0).sort((t,c)=>t.rank-c.rank).slice(0,r.limit).map(t=>({id:t.symbol,label:t.symbol,x:t.changePct["24h"],y:t.changePct["7d"],weight:t.marketCapUsd,color:h(t.changePct["24h"])})),[o,r.limit]);return i?e.jsx(m,{loading:!0,children:"loading momentum…"}):a.length===0?e.jsx(m,{children:"no momentum data yet"}):e.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[e.jsx(f,{data:a,height:210,zeroXLine:!0,formatX:n,formatY:n,maxLabels:10}),e.jsxs("div",{className:"caption text-soft text-center",children:["24h change (x) vs 7d change (y) · top ",a.length]})]})}const M=u({...s,component:g});export{M as coinMomentumScatterFrame};
1
+ import{r as l,j as e}from"./react-qoZPGuNy.js";import{c as h,a as n}from"./format-DxkEZcwQ.js";import{f as u,cG as s,bg as d}from"./index-BHlJHScr.js";import{F as m}from"./ui-Bq3RQsdJ.js";import{S as f}from"./scatter-chart-B78EA7lD.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";s.schema;function g({config:r}){const{entries:o,isLoading:i}=d(),a=l.useMemo(()=>o.filter(t=>Number.isFinite(t.changePct["24h"])&&Number.isFinite(t.changePct["7d"])&&t.marketCapUsd>0).sort((t,c)=>t.rank-c.rank).slice(0,r.limit).map(t=>({id:t.symbol,label:t.symbol,x:t.changePct["24h"],y:t.changePct["7d"],weight:t.marketCapUsd,color:h(t.changePct["24h"])})),[o,r.limit]);return i?e.jsx(m,{loading:!0,children:"loading momentum…"}):a.length===0?e.jsx(m,{children:"no momentum data yet"}):e.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[e.jsx(f,{data:a,height:210,zeroXLine:!0,formatX:n,formatY:n,maxLabels:10}),e.jsxs("div",{className:"caption text-soft text-center",children:["24h change (x) vs 7d change (y) · top ",a.length]})]})}const M=u({...s,component:g});export{M as coinMomentumScatterFrame};
@@ -1 +1 @@
1
- import{r as p,j as r}from"./react-qoZPGuNy.js";import{M as l}from"./mover-row-9TS6-Vx5.js";import{f as h,bf as t,bg as x}from"./index-CiYWppnQ.js";import{F as n}from"./ui-Bq3RQsdJ.js";import"./format-DxkEZcwQ.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 y=h({...t,component:u});export{y as coinMoversFrame};
1
+ import{r as p,j as r}from"./react-qoZPGuNy.js";import{M as l}from"./mover-row-Bz-YpFL3.js";import{f as h,bf as t,bg as x}from"./index-BHlJHScr.js";import{F as n}from"./ui-Bq3RQsdJ.js";import"./format-DxkEZcwQ.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 y=h({...t,component:u});export{y as coinMoversFrame};
@@ -1 +1 @@
1
- import{r,j as t}from"./react-qoZPGuNy.js";import{f as z,aO as F}from"./index-CiYWppnQ.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 O=z({...F,component:T});export{O as countdownFrame};
1
+ import{r,j as t}from"./react-qoZPGuNy.js";import{f as z,aO as F}from"./index-BHlJHScr.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 O=z({...F,component:T});export{O as countdownFrame};
@@ -1 +1 @@
1
- import{j as t,r as m}from"./react-qoZPGuNy.js";import{f as C,m as y,n as S,o as E,q as j,r as w,v as R,M as O}from"./index-CiYWppnQ.js";import{d as z}from"./format-DxkEZcwQ.js";import{M as B}from"./metric-row-BVVhjsjK.js";import{F as f,s as D}from"./ui-Bq3RQsdJ.js";import{M as b}from"./mini-line-chart-DyG55cVW.js";import{B as L}from"./bar-chart-DmyKFv_O.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";y.schema;async function F(e){const r=R(e);if(r)throw new Error(r);const a=await fetch(e,{credentials:"omit",referrerPolicy:"no-referrer",cache:"no-store",signal:AbortSignal.timeout(1e4)});if(!a.ok)throw new Error(`HTTP ${a.status}`);const c=await a.text();if(c.length>O)throw new Error("response too large");return JSON.parse(c)}function I(e){const[r,a]=m.useState(void 0),[c,u]=m.useState(null),[l,o]=m.useState(!1);return m.useEffect(()=>{let s=!1;o(!1),u(null);const i=()=>{F(e.url).then(h=>{s||(a(h),u(null),o(!0))}).catch(h=>{s||(u(h instanceof Error?h.message:"fetch failed"),o(!0))})};i();const n=window.setInterval(i,e.refreshMinutes*6e4);return()=>{s=!0,window.clearInterval(n)}},[e.url,e.refreshMinutes]),{extracted:m.useMemo(()=>{if(r===void 0)return null;try{const s=j(r,e.values),i=s===void 0?[]:w(s);let n=[];return e.labels&&(n=w(j(r,e.labels)).map(h=>S(String(h)))),{cells:i,labels:n}}catch(s){return{pathError:s instanceof Error?s.message:"bad path"}}},[r,e.values,e.labels]),error:c,loaded:l}}function x(e,r){if(typeof e!="number")return String(e);const a=Math.abs(e)>=1e4?z(e):Number.isInteger(e)?String(e):e.toFixed(2);return r?`${a}${r}`:a}function g(e){return e.map((r,a)=>({date:new Date(a*6e4).toISOString(),value:r}))}function v(e){try{return new URL(e).hostname}catch{return""}}function A(){const[e,r]=m.useState(null),[a,c]=m.useState(null);return m.useEffect(()=>{if(!e)return;const u=()=>{const o=e.getBoundingClientRect();c(d=>{const s={w:Math.round(o.width),h:Math.round(o.height)};return d&&d.w===s.w&&d.h===s.h?d:s})};u();const l=typeof ResizeObserver<"u"?new ResizeObserver(u):null;return l==null||l.observe(e),()=>l==null?void 0:l.disconnect()},[e]),{ref:r,size:a}}const M="var(--color-highlight, #8b8bff)";function N({numbers:e,unit:r}){if(e.length<2)return null;const a=Math.max(...e),c=Math.min(...e);return t.jsxs("span",{className:"caption text-soft shrink-0 tabular-nums",children:["H ",x(a,r)," · L ",x(c,r)]})}function p({config:e}){const r=v(e.url);return t.jsxs("div",{className:"caption text-soft flex items-baseline justify-between gap-2",children:[t.jsx("span",{className:"truncate",children:e.label||r}),e.label&&r&&t.jsx("span",{className:"truncate opacity-70",children:r})]})}function $({config:e}){const{extracted:r,error:a,loaded:c}=I(e),{ref:u,size:l}=A();if(!c&&r===null)return t.jsxs(f,{loading:!0,children:["fetching ",v(e.url),"…"]});if(a)return t.jsxs(f,{children:["fetch failed — ",S(a)]});if(r===null||"pathError"in r)return t.jsxs(f,{children:["path error —"," ",r&&"pathError"in r?r.pathError:"no data"]});const{cells:o,labels:d}=r;if(o.length===0)return t.jsx(f,{children:"path matched nothing in the response"});const s=E(o);if(e.display==="stat"){const i=o[o.length-1],n=g(s);return t.jsxs("div",{className:"flex h-full min-h-0 flex-col justify-center gap-2",children:[t.jsx(p,{config:e}),t.jsxs("div",{className:"flex items-baseline justify-between gap-3",children:[t.jsx("div",{className:"metric-xl text-strong leading-none",children:x(i,e.unit)}),t.jsx(N,{numbers:s,unit:e.unit})]}),n.length>1&&t.jsx("div",{ref:u,className:"min-h-[36px] w-full",children:l&&t.jsx(b,{data:n,width:l.w,height:44,color:M})})]})}if(e.display==="line"){if(s.length<2)return t.jsx(f,{children:"need a numeric series for a line chart"});const i=g(s),n=s[s.length-1];return t.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-2",children:[t.jsxs("div",{className:"flex items-baseline justify-between gap-3",children:[t.jsx("div",{className:"metric-lg text-strong leading-none",children:x(n,e.unit)}),t.jsx(N,{numbers:s,unit:e.unit})]}),t.jsx("div",{ref:u,className:"min-h-0 w-full flex-1",children:l&&t.jsx(b,{data:i,width:l.w,height:Math.max(l.h,48),color:M})}),t.jsx(p,{config:e})]})}if(e.display==="bars"){if(s.length===0)return t.jsx(f,{children:"need numeric values for a bar chart"});const i=s.map((n,h)=>({label:d[h]??String(h+1),value:n}));return t.jsxs("div",{className:"flex h-full min-h-0 flex-col justify-center gap-1",children:[t.jsx(L,{data:i.slice(0,40),orientation:i.length>12?"vertical":"horizontal",height:Math.max(Math.min(i.length,12)*24,96),formatValue:n=>x(n,e.unit)}),t.jsx(p,{config:e})]})}return t.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-1",children:[t.jsx(p,{config:e}),t.jsx("div",{className:D,children:o.map((i,n)=>t.jsx(B,{label:d[n]??`#${n+1}`,value:x(i,e.unit)},n))})]})}const X=C({...y,component:$});export{X as customDataFrame};
1
+ import{j as t,r as m}from"./react-qoZPGuNy.js";import{f as C,m as y,n as S,o as E,q as j,r as w,v as R,M as O}from"./index-BHlJHScr.js";import{d as z}from"./format-DxkEZcwQ.js";import{M as B}from"./metric-row-BVVhjsjK.js";import{F as f,s as D}from"./ui-Bq3RQsdJ.js";import{M as b}from"./mini-line-chart-DyG55cVW.js";import{B as L}from"./bar-chart-DCMbxUJx.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";y.schema;async function F(e){const r=R(e);if(r)throw new Error(r);const a=await fetch(e,{credentials:"omit",referrerPolicy:"no-referrer",cache:"no-store",signal:AbortSignal.timeout(1e4)});if(!a.ok)throw new Error(`HTTP ${a.status}`);const c=await a.text();if(c.length>O)throw new Error("response too large");return JSON.parse(c)}function I(e){const[r,a]=m.useState(void 0),[c,u]=m.useState(null),[l,o]=m.useState(!1);return m.useEffect(()=>{let s=!1;o(!1),u(null);const i=()=>{F(e.url).then(h=>{s||(a(h),u(null),o(!0))}).catch(h=>{s||(u(h instanceof Error?h.message:"fetch failed"),o(!0))})};i();const n=window.setInterval(i,e.refreshMinutes*6e4);return()=>{s=!0,window.clearInterval(n)}},[e.url,e.refreshMinutes]),{extracted:m.useMemo(()=>{if(r===void 0)return null;try{const s=j(r,e.values),i=s===void 0?[]:w(s);let n=[];return e.labels&&(n=w(j(r,e.labels)).map(h=>S(String(h)))),{cells:i,labels:n}}catch(s){return{pathError:s instanceof Error?s.message:"bad path"}}},[r,e.values,e.labels]),error:c,loaded:l}}function x(e,r){if(typeof e!="number")return String(e);const a=Math.abs(e)>=1e4?z(e):Number.isInteger(e)?String(e):e.toFixed(2);return r?`${a}${r}`:a}function g(e){return e.map((r,a)=>({date:new Date(a*6e4).toISOString(),value:r}))}function v(e){try{return new URL(e).hostname}catch{return""}}function A(){const[e,r]=m.useState(null),[a,c]=m.useState(null);return m.useEffect(()=>{if(!e)return;const u=()=>{const o=e.getBoundingClientRect();c(d=>{const s={w:Math.round(o.width),h:Math.round(o.height)};return d&&d.w===s.w&&d.h===s.h?d:s})};u();const l=typeof ResizeObserver<"u"?new ResizeObserver(u):null;return l==null||l.observe(e),()=>l==null?void 0:l.disconnect()},[e]),{ref:r,size:a}}const M="var(--color-highlight, #8b8bff)";function N({numbers:e,unit:r}){if(e.length<2)return null;const a=Math.max(...e),c=Math.min(...e);return t.jsxs("span",{className:"caption text-soft shrink-0 tabular-nums",children:["H ",x(a,r)," · L ",x(c,r)]})}function p({config:e}){const r=v(e.url);return t.jsxs("div",{className:"caption text-soft flex items-baseline justify-between gap-2",children:[t.jsx("span",{className:"truncate",children:e.label||r}),e.label&&r&&t.jsx("span",{className:"truncate opacity-70",children:r})]})}function $({config:e}){const{extracted:r,error:a,loaded:c}=I(e),{ref:u,size:l}=A();if(!c&&r===null)return t.jsxs(f,{loading:!0,children:["fetching ",v(e.url),"…"]});if(a)return t.jsxs(f,{children:["fetch failed — ",S(a)]});if(r===null||"pathError"in r)return t.jsxs(f,{children:["path error —"," ",r&&"pathError"in r?r.pathError:"no data"]});const{cells:o,labels:d}=r;if(o.length===0)return t.jsx(f,{children:"path matched nothing in the response"});const s=E(o);if(e.display==="stat"){const i=o[o.length-1],n=g(s);return t.jsxs("div",{className:"flex h-full min-h-0 flex-col justify-center gap-2",children:[t.jsx(p,{config:e}),t.jsxs("div",{className:"flex items-baseline justify-between gap-3",children:[t.jsx("div",{className:"metric-xl text-strong leading-none",children:x(i,e.unit)}),t.jsx(N,{numbers:s,unit:e.unit})]}),n.length>1&&t.jsx("div",{ref:u,className:"min-h-[36px] w-full",children:l&&t.jsx(b,{data:n,width:l.w,height:44,color:M})})]})}if(e.display==="line"){if(s.length<2)return t.jsx(f,{children:"need a numeric series for a line chart"});const i=g(s),n=s[s.length-1];return t.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-2",children:[t.jsxs("div",{className:"flex items-baseline justify-between gap-3",children:[t.jsx("div",{className:"metric-lg text-strong leading-none",children:x(n,e.unit)}),t.jsx(N,{numbers:s,unit:e.unit})]}),t.jsx("div",{ref:u,className:"min-h-0 w-full flex-1",children:l&&t.jsx(b,{data:i,width:l.w,height:Math.max(l.h,48),color:M})}),t.jsx(p,{config:e})]})}if(e.display==="bars"){if(s.length===0)return t.jsx(f,{children:"need numeric values for a bar chart"});const i=s.map((n,h)=>({label:d[h]??String(h+1),value:n}));return t.jsxs("div",{className:"flex h-full min-h-0 flex-col justify-center gap-1",children:[t.jsx(L,{data:i.slice(0,40),orientation:i.length>12?"vertical":"horizontal",height:Math.max(Math.min(i.length,12)*24,96),formatValue:n=>x(n,e.unit)}),t.jsx(p,{config:e})]})}return t.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-1",children:[t.jsx(p,{config:e}),t.jsx("div",{className:D,children:o.map((i,n)=>t.jsx(B,{label:d[n]??`#${n+1}`,value:x(i,e.unit)},n))})]})}const X=C({...y,component:$});export{X as customDataFrame};
@@ -1 +1 @@
1
- import{r as T,j as e}from"./react-qoZPGuNy.js";import{D as _,U as $}from"./format-DxkEZcwQ.js";import{Z as A}from"./cycle-shared-XoGVsOjC.js";import{s as g,r as B,e as H}from"./indicators-Cw7CVPn4.js";import{f as W,bv as E,bi as q,bl as z,bo as G}from"./index-CiYWppnQ.js";import{M as J}from"./metric-row-BVVhjsjK.js";import{F,s as K}from"./ui-Bq3RQsdJ.js";import"./mini-line-chart-DyG55cVW.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.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),b=l.at(-1)??null,L=p(g(l,200)),o=b!==null&&L?b/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 v=y.filter(l=>l.value!==null),R=v.filter(l=>l.fired).length,C=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:R>0?C:A},children:[R,e.jsxs("span",{className:"text-soft",children:["/",v.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?C:void 0},children:[l.fired?"● ":"",l.display]})},l.name))})]})}const rl=W({...E,component:Q});export{rl as cycleSignalsFrame};
1
+ import{r as T,j as e}from"./react-qoZPGuNy.js";import{D as _,U as $}from"./format-DxkEZcwQ.js";import{Z as A}from"./cycle-shared-XoGVsOjC.js";import{s as g,r as B,e as H}from"./indicators-Cw7CVPn4.js";import{f as W,bv as E,bi as q,bl as z,bo as G}from"./index-BHlJHScr.js";import{M as J}from"./metric-row-BVVhjsjK.js";import{F,s as K}from"./ui-Bq3RQsdJ.js";import"./mini-line-chart-DyG55cVW.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.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),b=l.at(-1)??null,L=p(g(l,200)),o=b!==null&&L?b/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 v=y.filter(l=>l.value!==null),R=v.filter(l=>l.fired).length,C=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:R>0?C:A},children:[R,e.jsxs("span",{className:"text-soft",children:["/",v.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?C: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 y,j as s}from"./react-qoZPGuNy.js";import{b as v}from"./format-DxkEZcwQ.js";import{w as C,r as S,a as g,n as L,t as V}from"./indicators-Cw7CVPn4.js";import{f as w,d6 as p,bi as x,bo as M}from"./index-CiYWppnQ.js";import{F as u}from"./ui-Bq3RQsdJ.js";import{C as n,a as R}from"./chart-utils-DGogNvJT.js";import{M as j}from"./index-BpPIfN5S.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";p.schema;function b({config:m}){const{valuation:t,isLoading:d}=x(),{history:r,isLoading:f}=M("btc"),e=y.useMemo(()=>{if(!t)return[];const a=C(m.window),i=o=>g(L(V(o,a))),h=S(r.map(o=>o.value),14),l=[];for(let o=0;o<r.length;o++){const c=h[o];c!==null&&l.push({time:r[o].time,value:c})}return[{id:"mvrv-zscore",name:"MVRV Z-Score",color:n[0],data:i(t.history.mvrvZScore)},{id:"nupl",name:"NUPL",color:n[1],data:i(t.history.nupl)},{id:"rsi14",name:"RSI (14)",color:n[2],data:i(l)}]},[t,r,m.window]);return(d||f)&&e.length===0?s.jsx(u,{loading:!0,children:"loading cycle composite…"}):e.every(a=>a.data.length===0)?s.jsx(u,{children:"no on-chain data yet"}):s.jsx(j,{series:e,timeframe:R.YTD,height:260,formatValue:a=>v(a*100,0)})}const P=w({...p,component:b});export{P as cycleValuationCompositeFrame};
1
+ import{r as y,j as s}from"./react-qoZPGuNy.js";import{b as v}from"./format-DxkEZcwQ.js";import{w as C,r as S,a as g,n as L,t as V}from"./indicators-Cw7CVPn4.js";import{f as w,d6 as p,bi as x,bo as M}from"./index-BHlJHScr.js";import{F as u}from"./ui-Bq3RQsdJ.js";import{C as n,a as R}from"./chart-utils-DGogNvJT.js";import{M as j}from"./index-BpPIfN5S.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";p.schema;function b({config:m}){const{valuation:t,isLoading:d}=x(),{history:r,isLoading:f}=M("btc"),e=y.useMemo(()=>{if(!t)return[];const a=C(m.window),i=o=>g(L(V(o,a))),h=S(r.map(o=>o.value),14),l=[];for(let o=0;o<r.length;o++){const c=h[o];c!==null&&l.push({time:r[o].time,value:c})}return[{id:"mvrv-zscore",name:"MVRV Z-Score",color:n[0],data:i(t.history.mvrvZScore)},{id:"nupl",name:"NUPL",color:n[1],data:i(t.history.nupl)},{id:"rsi14",name:"RSI (14)",color:n[2],data:i(l)}]},[t,r,m.window]);return(d||f)&&e.length===0?s.jsx(u,{loading:!0,children:"loading cycle composite…"}):e.every(a=>a.data.length===0)?s.jsx(u,{children:"no on-chain data yet"}):s.jsx(j,{series:e,timeframe:R.YTD,height:260,formatValue:a=>v(a*100,0)})}const P=w({...p,component:b});export{P as cycleValuationCompositeFrame};
@@ -1 +1 @@
1
- import{r as x,j as s}from"./react-qoZPGuNy.js";import{f as L,w as b,h as R}from"./index-CiYWppnQ.js";import{D as g,U as O}from"./format-DxkEZcwQ.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,w,v;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))}),(((w=e.grades)==null?void 0:w.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"}),(v=e.grades)==null?void 0:v.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
+ import{r as x,j as s}from"./react-qoZPGuNy.js";import{f as L,w as b,h as R}from"./index-BHlJHScr.js";import{D as g,U as O}from"./format-DxkEZcwQ.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,w,v;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))}),(((w=e.grades)==null?void 0:w.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"}),(v=e.grades)==null?void 0:v.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,bW as m}from"./index-CiYWppnQ.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};
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,bW as m}from"./index-BHlJHScr.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};
@@ -1 +1 @@
1
- import{j as o}from"./react-qoZPGuNy.js";import{Z as r,M as i}from"./cycle-shared-XoGVsOjC.js";import{c as s,a as c,f as m}from"./format-DxkEZcwQ.js";import{f,bA as l,bB as p}from"./index-CiYWppnQ.js";import{F as t}from"./ui-Bq3RQsdJ.js";import"./indicators-Cw7CVPn4.js";import"./mini-line-chart-DyG55cVW.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.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
+ import{j as o}from"./react-qoZPGuNy.js";import{Z as r,M as i}from"./cycle-shared-XoGVsOjC.js";import{c as s,a as c,f as m}from"./format-DxkEZcwQ.js";import{f,bA as l,bB as p}from"./index-BHlJHScr.js";import{F as t}from"./ui-Bq3RQsdJ.js";import"./indicators-Cw7CVPn4.js";import"./mini-line-chart-DyG55cVW.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.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{j as e}from"./react-qoZPGuNy.js";import{a as c,c as m,e as i,f as d}from"./format-DxkEZcwQ.js";import{M as h}from"./metric-row-BVVhjsjK.js";import{f,c4 as t,c5 as x}from"./index-CiYWppnQ.js";import{F as r,s as u}from"./ui-Bq3RQsdJ.js";t.schema;function p({config:a}){const{pools:s,isLoading:n}=x(a.network);return n?e.jsx(r,{loading:!0,children:"loading hot pools…"}):s.length===0?e.jsx(r,{children:"no pool data"}):e.jsx("div",{className:u,children:s.slice(0,a.count).map((o,l)=>e.jsx(h,{label:o.name,meta:`${i(o.priceUsd)} · ${d(o.volume24hUsd)} vol`,value:e.jsx("span",{style:{color:m(o.changePct24h)},children:c(o.changePct24h)})},`${o.name}-${l}`))})}const F=f({...t,component:p});export{F as dexHotPoolsFrame};
1
+ import{j as e}from"./react-qoZPGuNy.js";import{a as c,c as m,e as i,f as d}from"./format-DxkEZcwQ.js";import{M as h}from"./metric-row-BVVhjsjK.js";import{f,c4 as t,c5 as x}from"./index-BHlJHScr.js";import{F as r,s as u}from"./ui-Bq3RQsdJ.js";t.schema;function p({config:a}){const{pools:s,isLoading:n}=x(a.network);return n?e.jsx(r,{loading:!0,children:"loading hot pools…"}):s.length===0?e.jsx(r,{children:"no pool data"}):e.jsx("div",{className:u,children:s.slice(0,a.count).map((o,l)=>e.jsx(h,{label:o.name,meta:`${i(o.priceUsd)} · ${d(o.volume24hUsd)} vol`,value:e.jsx("span",{style:{color:m(o.changePct24h)},children:c(o.changePct24h)})},`${o.name}-${l}`))})}const F=f({...t,component:p});export{F as dexHotPoolsFrame};
@@ -1 +1 @@
1
- import{r as m,j as c}from"./react-qoZPGuNy.js";import{B as n}from"./bubbles-shared-DY914nhm.js";import{c as t,f as h,a as i}from"./format-DxkEZcwQ.js";import{f as u,cm as r,c5 as d}from"./index-CiYWppnQ.js";import"./ui-Bq3RQsdJ.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";r.schema;function b({config:e}){const{pools:a,isLoading:s}=d(e.network),l=m.useMemo(()=>a.filter(o=>o.volume24hUsd>0).slice(0,e.count).map(o=>({id:o.name,label:o.name,value:o.volume24hUsd,color:t(o.changePct24h),borderColor:t(o.changePct24h),changePct24h:o.changePct24h})),[a,e.count]);return c.jsx(n,{nodes:l,isLoading:s,loadingText:"loading hot pools…",emptyText:"no pool data",caption:`${e.network} · area by 24h volume · ring by 24h change`,formatTitle:o=>`${o.label} · ${h(o.value)} vol · ${i(o.changePct24h)}`})}const C=u({...r,component:b});export{C as dexPoolBubblesFrame};
1
+ import{r as m,j as c}from"./react-qoZPGuNy.js";import{B as n}from"./bubbles-shared-DlmjtiIA.js";import{c as t,f as h,a as i}from"./format-DxkEZcwQ.js";import{f as u,cm as r,c5 as d}from"./index-BHlJHScr.js";import"./ui-Bq3RQsdJ.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";r.schema;function b({config:e}){const{pools:a,isLoading:s}=d(e.network),l=m.useMemo(()=>a.filter(o=>o.volume24hUsd>0).slice(0,e.count).map(o=>({id:o.name,label:o.name,value:o.volume24hUsd,color:t(o.changePct24h),borderColor:t(o.changePct24h),changePct24h:o.changePct24h})),[a,e.count]);return c.jsx(n,{nodes:l,isLoading:s,loadingText:"loading hot pools…",emptyText:"no pool data",caption:`${e.network} · area by 24h volume · ring by 24h change`,formatTitle:o=>`${o.label} · ${h(o.value)} vol · ${i(o.changePct24h)}`})}const C=u({...r,component:b});export{C as dexPoolBubblesFrame};
@@ -1 +1 @@
1
- import{r as n,j as t}from"./react-qoZPGuNy.js";import{c,f as s}from"./format-DxkEZcwQ.js";import{f as d,cM as i,c5 as x}from"./index-CiYWppnQ.js";import{F as l}from"./ui-Bq3RQsdJ.js";import{S as u}from"./scatter-chart-B28DJ7P-.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";i.schema;function h({config:o}){const{pools:r,isLoading:m}=x(o.network),a=n.useMemo(()=>r.filter(e=>e.reserveUsd>0&&e.volume24hUsd>0).slice(0,o.count).map(e=>({id:e.name,label:e.name,x:Math.log10(e.reserveUsd),y:e.volume24hUsd,weight:e.txns24h,color:c(e.changePct24h)})),[r,o.count]);return m?t.jsx(l,{loading:!0,children:"loading pools…"}):a.length===0?t.jsx(l,{children:"no pool data yet"}):t.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[t.jsx(u,{data:a,yScale:"log",height:210,formatX:e=>s(10**e),formatY:s,maxLabels:8}),t.jsxs("div",{className:"caption text-soft text-center",children:[o.network," · liquidity (x, log) vs 24h volume (y, log) · bubble = trades"]})]})}const b=d({...i,component:h});export{b as dexPoolLiquidityScatterFrame};
1
+ import{r as n,j as t}from"./react-qoZPGuNy.js";import{c,f as s}from"./format-DxkEZcwQ.js";import{f as d,cM as i,c5 as x}from"./index-BHlJHScr.js";import{F as l}from"./ui-Bq3RQsdJ.js";import{S as u}from"./scatter-chart-B78EA7lD.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";i.schema;function h({config:o}){const{pools:r,isLoading:m}=x(o.network),a=n.useMemo(()=>r.filter(e=>e.reserveUsd>0&&e.volume24hUsd>0).slice(0,o.count).map(e=>({id:e.name,label:e.name,x:Math.log10(e.reserveUsd),y:e.volume24hUsd,weight:e.txns24h,color:c(e.changePct24h)})),[r,o.count]);return m?t.jsx(l,{loading:!0,children:"loading pools…"}):a.length===0?t.jsx(l,{children:"no pool data yet"}):t.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[t.jsx(u,{data:a,yScale:"log",height:210,formatX:e=>s(10**e),formatY:s,maxLabels:8}),t.jsxs("div",{className:"caption text-soft text-center",children:[o.network," · liquidity (x, log) vs 24h volume (y, log) · bubble = trades"]})]})}const b=d({...i,component:h});export{b as dexPoolLiquidityScatterFrame};
@@ -1 +1 @@
1
- import{r as l,j as s}from"./react-qoZPGuNy.js";import{f as c,a as i}from"./format-DxkEZcwQ.js";import{f as h,c9 as n,c5 as u}from"./index-CiYWppnQ.js";import{T as p,a as d}from"./treemap-leaf-QG-L-SIG.js";import{F as m}from"./ui-Bq3RQsdJ.js";import"./utils-DxneYyA_.js";import"./d3-ibrLIlQc.js";n.schema;function f({width:t,height:a,data:o}){const r=c(o.volume24hUsd);return s.jsx(d,{width:t,height:a,label:o.id,secondary:r,title:`${o.id} · ${r} vol · ${i(o.changePct24h)}`})}function x({config:t}){const{pools:a,isLoading:o}=u(t.network),r=l.useMemo(()=>a.filter(e=>e.volume24hUsd>0).slice(0,t.count).map(e=>({id:e.name,value:e.volume24hUsd,volume24hUsd:e.volume24hUsd,changePct24h:e.changePct24h})),[a,t.count]);return o?s.jsx(m,{loading:!0,children:"loading hot pools…"}):r.length===0?s.jsx(m,{children:"no pool data"}):s.jsx(p,{data:r,LeafComponent:f,getColorValue:e=>e.changePct24h})}const F=h({...n,component:x});export{F as dexPoolTreemapFrame};
1
+ import{r as l,j as s}from"./react-qoZPGuNy.js";import{f as c,a as i}from"./format-DxkEZcwQ.js";import{f as h,c9 as n,c5 as u}from"./index-BHlJHScr.js";import{T as p,a as d}from"./treemap-leaf-QG-L-SIG.js";import{F as m}from"./ui-Bq3RQsdJ.js";import"./utils-DxneYyA_.js";import"./d3-ibrLIlQc.js";n.schema;function f({width:t,height:a,data:o}){const r=c(o.volume24hUsd);return s.jsx(d,{width:t,height:a,label:o.id,secondary:r,title:`${o.id} · ${r} vol · ${i(o.changePct24h)}`})}function x({config:t}){const{pools:a,isLoading:o}=u(t.network),r=l.useMemo(()=>a.filter(e=>e.volume24hUsd>0).slice(0,t.count).map(e=>({id:e.name,value:e.volume24hUsd,volume24hUsd:e.volume24hUsd,changePct24h:e.changePct24h})),[a,t.count]);return o?s.jsx(m,{loading:!0,children:"loading hot pools…"}):r.length===0?s.jsx(m,{children:"no pool data"}):s.jsx(p,{data:r,LeafComponent:f,getColorValue:e=>e.changePct24h})}const F=h({...n,component:x});export{F as dexPoolTreemapFrame};
@@ -1 +1 @@
1
- import{r as s,j as n}from"./react-qoZPGuNy.js";import{B as c}from"./bubbles-shared-DY914nhm.js";import{c as m,f as i,a as u}from"./format-DxkEZcwQ.js";import{f as p,ci as r,ax as b}from"./index-CiYWppnQ.js";import"./ui-Bq3RQsdJ.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";r.schema;function d({config:o}){const{entries:a,isLoading:l}=b(),t=s.useMemo(()=>a.filter(e=>e.volume24h>0).slice(0,o.topN).map(e=>({id:e.name,label:e.name,value:e.volume24h,color:m(e.changePct??0),borderColor:m(e.changePct??0),changePct:e.changePct??0})),[a,o.topN]);return n.jsx(c,{nodes:t,isLoading:l,loadingText:"loading DEX volume…",emptyText:"no DEX volume data",caption:`area by 24h volume · ring by 1d change · top ${t.length}`,formatTitle:e=>`${e.label} · ${i(e.value)} vol · ${u(e.changePct)}`})}const C=p({...r,component:d});export{C as dexVolumeBubblesFrame};
1
+ import{r as s,j as n}from"./react-qoZPGuNy.js";import{B as c}from"./bubbles-shared-DlmjtiIA.js";import{c as m,f as i,a as u}from"./format-DxkEZcwQ.js";import{f as p,ci as r,ax as b}from"./index-BHlJHScr.js";import"./ui-Bq3RQsdJ.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";r.schema;function d({config:o}){const{entries:a,isLoading:l}=b(),t=s.useMemo(()=>a.filter(e=>e.volume24h>0).slice(0,o.topN).map(e=>({id:e.name,label:e.name,value:e.volume24h,color:m(e.changePct??0),borderColor:m(e.changePct??0),changePct:e.changePct??0})),[a,o.topN]);return n.jsx(c,{nodes:t,isLoading:l,loadingText:"loading DEX volume…",emptyText:"no DEX volume data",caption:`area by 24h volume · ring by 1d change · top ${t.length}`,formatTitle:e=>`${e.label} · ${i(e.value)} vol · ${u(e.changePct)}`})}const C=p({...r,component:d});export{C as dexVolumeBubblesFrame};
@@ -1 +1 @@
1
- import{r as l,j as r}from"./react-qoZPGuNy.js";import{p as x,f as C}from"./format-DxkEZcwQ.js";import{f as M,ay as p,az as S}from"./index-CiYWppnQ.js";import{F as u}from"./ui-Bq3RQsdJ.js";import{a,C as f}from"./chart-utils-DGogNvJT.js";import{M as D}from"./index-BpPIfN5S.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";const y={"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"]}};p.schema;function E({config:t}){const{ms:m,timeframe:c}=y[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:f[h%f.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(u,{loading:!0,children:"loading DEX volume…"}):n.every(e=>e.data.length===0)?r.jsx(u,{children:"no DEX volume data yet"}):r.jsx(D,{series:n,timeframe:c,height:250,formatValue:C})}const I=M({...p,component:E});export{I as dexVolumeChartFrame};
1
+ import{r as l,j as r}from"./react-qoZPGuNy.js";import{p as x,f as C}from"./format-DxkEZcwQ.js";import{f as M,ay as p,az as S}from"./index-BHlJHScr.js";import{F as u}from"./ui-Bq3RQsdJ.js";import{a,C as f}from"./chart-utils-DGogNvJT.js";import{M as D}from"./index-BpPIfN5S.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";const y={"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"]}};p.schema;function E({config:t}){const{ms:m,timeframe:c}=y[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:f[h%f.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(u,{loading:!0,children:"loading DEX volume…"}):n.every(e=>e.data.length===0)?r.jsx(u,{children:"no DEX volume data yet"}):r.jsx(D,{series:n,timeframe:c,height:250,formatValue:C})}const I=M({...p,component:E});export{I as dexVolumeChartFrame};
@@ -1 +1 @@
1
- import{r as n,j as r}from"./react-qoZPGuNy.js";import{p as d,f as i}from"./format-DxkEZcwQ.js";import{f as h,cR as c,az as x}from"./index-CiYWppnQ.js";import{F as l}from"./ui-Bq3RQsdJ.js";import{C as u}from"./chart-utils-DGogNvJT.js";import{S}from"./index-DuNO-RcB.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";const D={"7D":10080*60*1e3,"1M":720*60*60*1e3,"3M":2160*60*60*1e3};c.schema;function A(e){return e.toLocaleDateString("en-US",{month:"short",day:"numeric"})}function M({config:e}){const a=n.useMemo(()=>Date.now()-D[e.lookback],[e.lookback]),{history:m,isLoading:p}=x(e.protocols),s=n.useMemo(()=>e.protocols.map((o,f)=>({id:o,name:d(o),color:u[f%u.length],data:(m[o]??[]).filter(t=>t.time>=a).map(t=>({date:new Date(t.time),value:t.value}))})),[e.protocols,m,a]);return p?r.jsx(l,{loading:!0,children:"loading DEX volume…"}):s.every(o=>o.data.length===0)?r.jsx(l,{children:"no DEX volume data yet"}):r.jsx(S,{series:s,height:240,formatXAxis:A,formatYAxis:i,formatValue:i})}const V=h({...c,component:M});export{V as dexVolumeShareAreaFrame};
1
+ import{r as n,j as r}from"./react-qoZPGuNy.js";import{p as d,f as i}from"./format-DxkEZcwQ.js";import{f as h,cR as c,az as x}from"./index-BHlJHScr.js";import{F as l}from"./ui-Bq3RQsdJ.js";import{C as u}from"./chart-utils-DGogNvJT.js";import{S}from"./index-DuNO-RcB.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";const D={"7D":10080*60*1e3,"1M":720*60*60*1e3,"3M":2160*60*60*1e3};c.schema;function A(e){return e.toLocaleDateString("en-US",{month:"short",day:"numeric"})}function M({config:e}){const a=n.useMemo(()=>Date.now()-D[e.lookback],[e.lookback]),{history:m,isLoading:p}=x(e.protocols),s=n.useMemo(()=>e.protocols.map((o,f)=>({id:o,name:d(o),color:u[f%u.length],data:(m[o]??[]).filter(t=>t.time>=a).map(t=>({date:new Date(t.time),value:t.value}))})),[e.protocols,m,a]);return p?r.jsx(l,{loading:!0,children:"loading DEX volume…"}):s.every(o=>o.data.length===0)?r.jsx(l,{children:"no DEX volume data yet"}):r.jsx(S,{series:s,height:240,formatXAxis:A,formatYAxis:i,formatValue:i})}const V=h({...c,component:M});export{V as dexVolumeShareAreaFrame};
@@ -1 +1 @@
1
- import{r as u,j as t}from"./react-qoZPGuNy.js";import{f as i}from"./format-DxkEZcwQ.js";import{f as l,aw as n,ax as p}from"./index-CiYWppnQ.js";import{T as c,a as f}from"./treemap-leaf-QG-L-SIG.js";import{F as s}from"./ui-Bq3RQsdJ.js";import"./utils-DxneYyA_.js";import"./d3-ibrLIlQc.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
+ import{r as u,j as t}from"./react-qoZPGuNy.js";import{f as i}from"./format-DxkEZcwQ.js";import{f as l,aw as n,ax as p}from"./index-BHlJHScr.js";import{T as c,a as f}from"./treemap-leaf-QG-L-SIG.js";import{F as s}from"./ui-Bq3RQsdJ.js";import"./utils-DxneYyA_.js";import"./d3-ibrLIlQc.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,aU as x}from"./index-CiYWppnQ.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
+ import{r as s,j as t}from"./react-qoZPGuNy.js";import{i as w}from"./content-shared-BZ1XzrJx.js";import{f as k,aU as x}from"./index-BHlJHScr.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};