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
@@ -1 +1 @@
1
- import{j as e}from"./react-qoZPGuNy.js";import{D as n,U as m}from"./format-DxkEZcwQ.js";import{f as c,cu as o,bb as u}from"./index-CiYWppnQ.js";import{F as r}from"./ui-Bq3RQsdJ.js";import{R as p}from"./radial-gauge-0BzRQ6fO.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";o.schema;function d({config:t}){const{summary:a,isLoading:l}=u(t.currency);if(l)return e.jsx(r,{loading:!0,children:"loading options…"});if(!a)return e.jsx(r,{children:"no options data yet"});const s=t.basis==="oi"?a.putCallRatioOi:a.putCallRatioVolume,i=s>1?n:m;return e.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-1",children:[e.jsxs(p,{value:s,min:0,max:2,color:i,size:170,children:[e.jsx("div",{className:"metric-xl leading-none",style:{color:i},children:s.toFixed(2)}),e.jsx("div",{className:"caption text-soft mt-1 uppercase tracking-wide",children:"put / call"})]}),e.jsxs("div",{className:"caption text-soft",children:[t.currency," · by ",t.basis==="oi"?"open interest":"volume"]})]})}const O=c({...o,component:d});export{O as putCallGaugeFrame};
1
+ import{j as e}from"./react-qoZPGuNy.js";import{D as n,U as m}from"./format-DxkEZcwQ.js";import{f as c,cu as o,bb as u}from"./index-BHlJHScr.js";import{F as r}from"./ui-Bq3RQsdJ.js";import{R as p}from"./radial-gauge-0BzRQ6fO.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";o.schema;function d({config:t}){const{summary:a,isLoading:l}=u(t.currency);if(l)return e.jsx(r,{loading:!0,children:"loading options…"});if(!a)return e.jsx(r,{children:"no options data yet"});const s=t.basis==="oi"?a.putCallRatioOi:a.putCallRatioVolume,i=s>1?n:m;return e.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-1",children:[e.jsxs(p,{value:s,min:0,max:2,color:i,size:170,children:[e.jsx("div",{className:"metric-xl leading-none",style:{color:i},children:s.toFixed(2)}),e.jsx("div",{className:"caption text-soft mt-1 uppercase tracking-wide",children:"put / call"})]}),e.jsxs("div",{className:"caption text-soft",children:[t.currency," · by ",t.basis==="oi"?"open interest":"volume"]})]})}const O=c({...o,component:d});export{O as putCallGaugeFrame};
@@ -1 +1 @@
1
- import{r as s,j as t}from"./react-qoZPGuNy.js";import{f as u,aR as i}from"./index-CiYWppnQ.js";i.schema;const c="var(--color-highlight)";function d({config:a}){const e=a.quotes,[r,l]=s.useState(0);s.useEffect(()=>l(0),[a.quotes]),s.useEffect(()=>{if(a.intervalSec<=0||e.length<=1)return;const o=window.setInterval(()=>l(n=>(n+1)%e.length),a.intervalSec*1e3);return()=>window.clearInterval(o)},[a.intervalSec,e.length]);const m=e[Math.min(r,e.length-1)]??"";return t.jsx("div",{className:"flex h-full w-full items-center justify-center [container-type:size]",children:t.jsxs("figure",{className:"relative max-h-full overflow-auto px-3 text-center",children:[t.jsx("span",{"aria-hidden":!0,className:"block font-dmsans font-black leading-none",style:{fontSize:"clamp(1.5rem, 14cqmin, 3rem)",color:c},children:"“"}),t.jsx("blockquote",{className:"body-md text-normal -mt-[0.3em] whitespace-pre-wrap italic leading-snug",style:{fontSize:"clamp(0.85rem, 8cqmin, 1.25rem)"},children:m}),e.length>1&&t.jsx("figcaption",{className:"mt-2 flex justify-center gap-1.5","aria-hidden":!0,children:e.map((o,n)=>t.jsx("span",{className:"h-1 w-1 rounded-full transition-colors",style:{background:n===Math.min(r,e.length-1)?c:"var(--color-disabled)"}},n))})]})})}const x=u({...i,component:d});export{x as quoteFrame};
1
+ import{r as s,j as t}from"./react-qoZPGuNy.js";import{f as u,aR as i}from"./index-BHlJHScr.js";i.schema;const c="var(--color-highlight)";function d({config:a}){const e=a.quotes,[r,l]=s.useState(0);s.useEffect(()=>l(0),[a.quotes]),s.useEffect(()=>{if(a.intervalSec<=0||e.length<=1)return;const o=window.setInterval(()=>l(n=>(n+1)%e.length),a.intervalSec*1e3);return()=>window.clearInterval(o)},[a.intervalSec,e.length]);const m=e[Math.min(r,e.length-1)]??"";return t.jsx("div",{className:"flex h-full w-full items-center justify-center [container-type:size]",children:t.jsxs("figure",{className:"relative max-h-full overflow-auto px-3 text-center",children:[t.jsx("span",{"aria-hidden":!0,className:"block font-dmsans font-black leading-none",style:{fontSize:"clamp(1.5rem, 14cqmin, 3rem)",color:c},children:"“"}),t.jsx("blockquote",{className:"body-md text-normal -mt-[0.3em] whitespace-pre-wrap italic leading-snug",style:{fontSize:"clamp(0.85rem, 8cqmin, 1.25rem)"},children:m}),e.length>1&&t.jsx("figcaption",{className:"mt-2 flex justify-center gap-1.5","aria-hidden":!0,children:e.map((o,n)=>t.jsx("span",{className:"h-1 w-1 rounded-full transition-colors",style:{background:n===Math.min(r,e.length-1)?c:"var(--color-disabled)"}},n))})]})})}const x=u({...i,component:d});export{x as quoteFrame};
@@ -1 +1 @@
1
- import{j as e}from"./react-qoZPGuNy.js";import{b as a,f as g}from"./format-DxkEZcwQ.js";import{M as v}from"./metric-row-BVVhjsjK.js";import{f as j,ak as f,al as R,am as y}from"./index-CiYWppnQ.js";import{F as m}from"./ui-Bq3RQsdJ.js";f.schema;function b({config:t}){var c,d;const{rates:i,isLoading:x}=R(),{rates:o,isLoading:u}=y();if(x&&u)return e.jsx(m,{loading:!0,children:"loading official rates…"});if(!i.length&&!o.length)return e.jsx(m,{children:"no rates data yet"});const n=i.slice(0,t.maxReferenceRates),r=o.slice(0,t.maxTreasuryRates),l=(c=n[0])==null?void 0:c.date,h=(d=r[0])==null?void 0:d.date;return e.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-3",children:[e.jsxs("div",{className:"flex items-baseline justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("div",{className:"caption text-soft uppercase",children:"official rates"}),e.jsx("div",{className:"body-sm text-normal",children:l?`as of ${l}`:"reference rates"})]}),e.jsx("div",{className:"caption text-soft text-right",children:"daily"})]}),e.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:n.map(s=>{const p=s.targetRateFrom!==void 0&&s.targetRateTo!==void 0?`target ${a(s.targetRateFrom)}-${a(s.targetRateTo)}`:s.volumeInBillions!==void 0?`${g(s.volumeInBillions*1e9)} volume`:s.source;return e.jsx(v,{label:s.label,value:a(s.rate),meta:p},s.code)})}),t.showTreasuryAverageRates&&r.length>0&&e.jsxs("div",{className:"border-t border-white/[0.08] pt-2",children:[e.jsxs("div",{className:"caption text-soft mb-1 flex justify-between",children:[e.jsx("span",{children:"Treasury average rates"}),e.jsx("span",{children:h})]}),e.jsx("div",{className:"grid grid-cols-2 gap-1.5",children:r.map(s=>e.jsxs("div",{className:"rounded bg-white/[0.04] px-2 py-1.5",children:[e.jsx("div",{className:"caption text-soft truncate",children:s.security}),e.jsx("div",{className:"body-sm text-strong font-bold tabular-nums",children:a(s.rate)})]},`${s.date}-${s.security}`))})]})]})}const B=j({...f,component:b});export{B as ratesBoardFrame};
1
+ import{j as e}from"./react-qoZPGuNy.js";import{b as a,f as g}from"./format-DxkEZcwQ.js";import{M as v}from"./metric-row-BVVhjsjK.js";import{f as j,ak as f,al as R,am as y}from"./index-BHlJHScr.js";import{F as m}from"./ui-Bq3RQsdJ.js";f.schema;function b({config:t}){var c,d;const{rates:i,isLoading:x}=R(),{rates:o,isLoading:u}=y();if(x&&u)return e.jsx(m,{loading:!0,children:"loading official rates…"});if(!i.length&&!o.length)return e.jsx(m,{children:"no rates data yet"});const n=i.slice(0,t.maxReferenceRates),r=o.slice(0,t.maxTreasuryRates),l=(c=n[0])==null?void 0:c.date,h=(d=r[0])==null?void 0:d.date;return e.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-3",children:[e.jsxs("div",{className:"flex items-baseline justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("div",{className:"caption text-soft uppercase",children:"official rates"}),e.jsx("div",{className:"body-sm text-normal",children:l?`as of ${l}`:"reference rates"})]}),e.jsx("div",{className:"caption text-soft text-right",children:"daily"})]}),e.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:n.map(s=>{const p=s.targetRateFrom!==void 0&&s.targetRateTo!==void 0?`target ${a(s.targetRateFrom)}-${a(s.targetRateTo)}`:s.volumeInBillions!==void 0?`${g(s.volumeInBillions*1e9)} volume`:s.source;return e.jsx(v,{label:s.label,value:a(s.rate),meta:p},s.code)})}),t.showTreasuryAverageRates&&r.length>0&&e.jsxs("div",{className:"border-t border-white/[0.08] pt-2",children:[e.jsxs("div",{className:"caption text-soft mb-1 flex justify-between",children:[e.jsx("span",{children:"Treasury average rates"}),e.jsx("span",{children:h})]}),e.jsx("div",{className:"grid grid-cols-2 gap-1.5",children:r.map(s=>e.jsxs("div",{className:"rounded bg-white/[0.04] px-2 py-1.5",children:[e.jsx("div",{className:"caption text-soft truncate",children:s.security}),e.jsx("div",{className:"body-sm text-strong font-bold tabular-nums",children:a(s.rate)})]},`${s.date}-${s.security}`))})]})]})}const B=j({...f,component:b});export{B as ratesBoardFrame};
@@ -1 +1 @@
1
- import{r as I,j as l}from"./react-qoZPGuNy.js";import{a as M,b as T}from"./format-DxkEZcwQ.js";import{f as w,di as x,S as h}from"./index-CiYWppnQ.js";import{F as S}from"./ui-Bq3RQsdJ.js";import{C as v,a as L}from"./chart-utils-DGogNvJT.js";import{M as R}from"./index-BpPIfN5S.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";x.schema;const D="CUUR0000SA0",U="CES0500000003";function C(a){const u=new Map(a.map(e=>[e.time,e.value]));return a.flatMap(e=>{const t=new Date(e.time),n=Date.UTC(t.getUTCFullYear()-1,t.getUTCMonth(),1),r=u.get(n);return r===void 0||r<=0?[]:[{...e,value:(e.value/r-1)*100}]})}function j({config:a}){var p,f;const e=new Date().getUTCFullYear(),t=e-3,{series:n,isLoading:r}=h(D,t,e),{series:m,isLoading:y}=h(U,t,e),s=I.useMemo(()=>{if(!n||!m)return[];const i=C(m.points).slice(-a.months),E=C(n.points).slice(-a.months);return[{id:"earnings",name:"Avg hourly earnings",color:v[1],data:i.map(o=>({date:new Date(o.time).toISOString(),value:o.value}))},{id:"cpi",name:"CPI-U",color:v[3],data:E.map(o=>({date:new Date(o.time).toISOString(),value:o.value}))}]},[n,m,a.months]);if((r||y)&&s.every(i=>i.data.length===0))return l.jsx(S,{loading:!0,children:"loading real wages…"});if(s.every(i=>i.data.length===0))return l.jsx(S,{children:"no wage data yet"});const d=(p=s[0].data.at(-1))==null?void 0:p.value,g=(f=s[1].data.at(-1))==null?void 0:f.value,c=d!==void 0&&g!==void 0?d-g:null;return l.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-2",children:[l.jsx(R,{series:s,timeframe:L.YTD,height:250,formatValue:M}),c!==null&&l.jsxs("div",{className:"caption text-soft text-center",children:["pay ",c>=0?"outrunning":"trailing"," inflation by"," ",T(Math.abs(c),2)]})]})}const G=w({...x,component:j});export{G as realWagesFrame};
1
+ import{r as I,j as l}from"./react-qoZPGuNy.js";import{a as M,b as T}from"./format-DxkEZcwQ.js";import{f as w,di as x,S as h}from"./index-BHlJHScr.js";import{F as S}from"./ui-Bq3RQsdJ.js";import{C as v,a as L}from"./chart-utils-DGogNvJT.js";import{M as R}from"./index-BpPIfN5S.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";x.schema;const D="CUUR0000SA0",U="CES0500000003";function C(a){const u=new Map(a.map(e=>[e.time,e.value]));return a.flatMap(e=>{const t=new Date(e.time),n=Date.UTC(t.getUTCFullYear()-1,t.getUTCMonth(),1),r=u.get(n);return r===void 0||r<=0?[]:[{...e,value:(e.value/r-1)*100}]})}function j({config:a}){var p,f;const e=new Date().getUTCFullYear(),t=e-3,{series:n,isLoading:r}=h(D,t,e),{series:m,isLoading:y}=h(U,t,e),s=I.useMemo(()=>{if(!n||!m)return[];const i=C(m.points).slice(-a.months),E=C(n.points).slice(-a.months);return[{id:"earnings",name:"Avg hourly earnings",color:v[1],data:i.map(o=>({date:new Date(o.time).toISOString(),value:o.value}))},{id:"cpi",name:"CPI-U",color:v[3],data:E.map(o=>({date:new Date(o.time).toISOString(),value:o.value}))}]},[n,m,a.months]);if((r||y)&&s.every(i=>i.data.length===0))return l.jsx(S,{loading:!0,children:"loading real wages…"});if(s.every(i=>i.data.length===0))return l.jsx(S,{children:"no wage data yet"});const d=(p=s[0].data.at(-1))==null?void 0:p.value,g=(f=s[1].data.at(-1))==null?void 0:f.value,c=d!==void 0&&g!==void 0?d-g:null;return l.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-2",children:[l.jsx(R,{series:s,timeframe:L.YTD,height:250,formatValue:M}),c!==null&&l.jsxs("div",{className:"caption text-soft text-center",children:["pay ",c>=0?"outrunning":"trailing"," inflation by"," ",T(Math.abs(c),2)]})]})}const G=w({...x,component:j});export{G as realWagesFrame};
@@ -1 +1 @@
1
- import{r as l,j as i}from"./react-qoZPGuNy.js";import{f}from"./format-DxkEZcwQ.js";import{w as p,t as o}from"./indicators-Cw7CVPn4.js";import{f as u,bT as c,bi as h}from"./index-CiYWppnQ.js";import{F as n}from"./ui-Bq3RQsdJ.js";import{C as s,a as w}from"./chart-utils-DGogNvJT.js";import{M as x}from"./index-BpPIfN5S.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";c.schema;const m=r=>r.map(e=>({date:new Date(e.time).toISOString(),value:e.value}));function z({config:r}){const{valuation:e,isLoading:d}=h(),t=l.useMemo(()=>{if(!e)return[];const a=p(r.window);return[{id:"price",name:"Market Price",color:s[0],data:m(o(e.history.price,a))},{id:"realized",name:"Realized Price",color:s[1],data:m(o(e.history.realizedPrice,a))}]},[e,r.window]);return d?i.jsx(n,{loading:!0,children:"loading realized price…"}):!e||t.every(a=>a.data.length===0)?i.jsx(n,{children:"no on-chain data yet"}):i.jsx(x,{series:t,timeframe:w.YTD,height:220,formatValue:f})}const v=u({...c,component:z});export{v as realizedPriceFrame};
1
+ import{r as l,j as i}from"./react-qoZPGuNy.js";import{f}from"./format-DxkEZcwQ.js";import{w as p,t as o}from"./indicators-Cw7CVPn4.js";import{f as u,bT as c,bi as h}from"./index-BHlJHScr.js";import{F as n}from"./ui-Bq3RQsdJ.js";import{C as s,a as w}from"./chart-utils-DGogNvJT.js";import{M as x}from"./index-BpPIfN5S.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";c.schema;const m=r=>r.map(e=>({date:new Date(e.time).toISOString(),value:e.value}));function z({config:r}){const{valuation:e,isLoading:d}=h(),t=l.useMemo(()=>{if(!e)return[];const a=p(r.window);return[{id:"price",name:"Market Price",color:s[0],data:m(o(e.history.price,a))},{id:"realized",name:"Realized Price",color:s[1],data:m(o(e.history.realizedPrice,a))}]},[e,r.window]);return d?i.jsx(n,{loading:!0,children:"loading realized price…"}):!e||t.every(a=>a.data.length===0)?i.jsx(n,{children:"no on-chain data yet"}):i.jsx(x,{series:t,timeframe:w.YTD,height:220,formatValue:f})}const v=u({...c,component:z});export{v as realizedPriceFrame};
@@ -1 +1 @@
1
- import{j as o}from"./react-qoZPGuNy.js";import{z as n,Z as l,M as m}from"./cycle-shared-XoGVsOjC.js";import{D as c,U as p}from"./format-DxkEZcwQ.js";import{t as R,w as u}from"./indicators-Cw7CVPn4.js";import{f as v,bU as i,bl as f}from"./index-CiYWppnQ.js";import{F as s}from"./ui-Bq3RQsdJ.js";import"./mini-line-chart-DyG55cVW.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";i.schema;function k({config:a}){const{extras:e,isLoading:t}=f();if(t)return o.jsx(s,{loading:!0,children:"loading reserve risk…"});if(!e||e.reserveRisk===null)return o.jsx(s,{children:"Reserve Risk unavailable"});const r=n(e.reserveRisk,[{upTo:.0015,zone:{label:"Attractive",color:p}},{upTo:.008,zone:{label:"Neutral",color:l}}],{label:"Elevated",color:c});return o.jsx(m,{caption:"Reserve Risk",headline:e.reserveRisk.toPrecision(2),headlineColor:r.color,zone:r,sparkline:R(e.history.reserveRisk,u(a.window)),sparkColor:r.color})}const g=v({...i,component:k});export{g as reserveRiskFrame};
1
+ import{j as o}from"./react-qoZPGuNy.js";import{z as n,Z as l,M as m}from"./cycle-shared-XoGVsOjC.js";import{D as c,U as p}from"./format-DxkEZcwQ.js";import{t as R,w as u}from"./indicators-Cw7CVPn4.js";import{f as v,bU as i,bl as f}from"./index-BHlJHScr.js";import{F as s}from"./ui-Bq3RQsdJ.js";import"./mini-line-chart-DyG55cVW.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";i.schema;function k({config:a}){const{extras:e,isLoading:t}=f();if(t)return o.jsx(s,{loading:!0,children:"loading reserve risk…"});if(!e||e.reserveRisk===null)return o.jsx(s,{children:"Reserve Risk unavailable"});const r=n(e.reserveRisk,[{upTo:.0015,zone:{label:"Attractive",color:p}},{upTo:.008,zone:{label:"Neutral",color:l}}],{label:"Elevated",color:c});return o.jsx(m,{caption:"Reserve Risk",headline:e.reserveRisk.toPrecision(2),headlineColor:r.color,zone:r,sparkline:R(e.history.reserveRisk,u(a.window)),sparkColor:r.color})}const g=v({...i,component:k});export{g as reserveRiskFrame};
@@ -0,0 +1 @@
1
+ import{r as i,j as e}from"./react-qoZPGuNy.js";import{i as k}from"./content-shared-BZ1XzrJx.js";import{d as w,a as R,f as j,c as $}from"./format-DxkEZcwQ.js";import{f as E,bX as v}from"./index-BHlJHScr.js";import{M as L}from"./mini-line-chart-DyG55cVW.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";v.schema;function l({label:s,value:t,onChange:c}){return e.jsxs("label",{className:`flex flex-col gap-0.5 px-2 py-1 ${k}`,children:[e.jsx("span",{className:"caption text-soft truncate",children:s}),e.jsx("input",{type:"number",value:Number.isFinite(t)?t:0,onChange:r=>c(Number(r.target.value)),className:"body-sm text-strong w-full bg-transparent outline-none"})]})}function U({config:s}){const[t,c]=i.useState(s.principal),[r,N]=i.useState(s.ratePct),[m,C]=i.useState(s.periods),[o,P]=i.useState(s.contribution),{series:M,ending:h,contributed:x,gain:u}=i.useMemo(()=>{const S=r/100,y=Math.max(0,Math.min(600,Math.floor(m))),g=[{date:"0",value:t}];let n=t,p=t;for(let d=1;d<=y;d++)n=n*(1+S)+o,p+=o,g.push({date:String(d),value:n});return{series:g,ending:n,contributed:p,gain:n-p}},[t,r,m,o]),a=x>0?u/x*100:0,b=s.label.trim(),f=Number.isFinite(h)&&Number.isFinite(u),F=Number.isFinite(a)?Math.abs(a)>=1e5?`${a>=0?"+":""}${w(a)}%`:R(a):"—";return e.jsxs("div",{className:"flex h-full w-full flex-col gap-2",children:[b&&e.jsx("div",{className:"caption text-soft shrink-0 uppercase tracking-[0.12em]",children:b}),e.jsxs("div",{className:"shrink-0",children:[e.jsx("div",{className:"caption text-soft",children:"projected value"}),e.jsx("div",{className:"metric-lg text-strong",children:f?j(h):"—"}),e.jsxs("div",{className:"body-sm",style:{color:$(a)},children:[F," · ",f?j(u):"—"," gain"]})]}),e.jsx("div",{className:"min-h-0 flex-1",children:e.jsx(L,{data:M,width:260,height:48,variant:"green",className:"w-full"})}),e.jsxs("div",{className:"grid shrink-0 grid-cols-2 gap-1.5",children:[e.jsx(l,{label:"principal",value:t,onChange:c}),e.jsx(l,{label:"rate %/period",value:r,onChange:N}),e.jsx(l,{label:"periods",value:m,onChange:C}),e.jsx(l,{label:"contribution",value:o,onChange:P})]})]})}const H=E({...v,component:U});export{H as returnsProjectorFrame};
@@ -1 +1 @@
1
- import{r as l,j as e}from"./react-qoZPGuNy.js";import{i as S}from"./content-shared-BZ1XzrJx.js";import{D as h,U as f,a as y,e as v}from"./format-DxkEZcwQ.js";import{f as M,aV as R}from"./index-CiYWppnQ.js";import{s as O}from"./ui-Bq3RQsdJ.js";R.schema;const P="var(--color-highlight)";function b(s){const a=Number(s);return Number.isFinite(a)?a:0}function g({label:s,value:a,onChange:n}){return e.jsxs("label",{className:"flex min-w-0 flex-col gap-1",children:[e.jsx("span",{className:"caption text-soft uppercase tracking-[0.12em]",children:s}),e.jsxs("span",{className:`flex items-center px-2 py-1.5 ${S}`,children:[e.jsx("span",{className:"body-sm text-soft",children:"$"}),e.jsx("input",{type:"number",inputMode:"decimal",value:a,onChange:c=>n(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"})]})]})}function L({value:s,onChange:a}){return e.jsx("div",{className:`flex gap-1 p-1 ${S}`,children:["long","short"].map(n=>{const c=n===s;return e.jsx("button",{type:"button",onClick:()=>a(n),className:`caption flex-1 rounded px-2 py-1 text-center uppercase tracking-[0.12em] transition-colors ${c?"bg-white/[0.06] font-semibold":"text-soft"}`,style:c?{color:P}:void 0,children:n},n)})})}function T({config:s}){const[a,n]=l.useState(String(s.entry)),[c,j]=l.useState(String(s.stop)),[m,N]=l.useState(String(s.target)),[o,k]=l.useState(s.direction);l.useEffect(()=>n(String(s.entry)),[s.entry]),l.useEffect(()=>j(String(s.stop)),[s.stop]),l.useEffect(()=>N(String(s.target)),[s.target]),l.useEffect(()=>k(s.direction),[s.direction]);const t=l.useMemo(()=>{const r=b(a),p=b(c),x=b(m),i=Math.abs(r-p),d=Math.abs(x-r),D=i>0?d/i:0,E=r!==0?i/r*100:0,$=r!==0?d/r*100:0,u=i+d,U=u>0?i/u*100:50,F=o==="long"?p<r&&r<x:x<r&&r<p;return{riskPerUnit:i,rewardPerUnit:d,rr:D,riskPct:E,rewardPct:$,riskShare:U,hasRisk:i>0,hasData:u>0,valid:F}},[a,c,m,o]),C=t.hasData?t.hasRisk?`1 : ${t.rr.toFixed(t.rr>=10?0:1)}`:"∞":"—",w=s.label.trim();return e.jsxs("div",{className:`${O} flex flex-col gap-3`,children:[w&&e.jsx("span",{className:"caption text-soft uppercase tracking-[0.12em]",children:w}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsx(g,{label:"Entry",value:a,onChange:n}),e.jsx(g,{label:"Stop",value:c,onChange:j}),e.jsx(g,{label:"Target",value:m,onChange:N})]}),e.jsx(L,{value:o,onChange:k}),e.jsxs("div",{className:"flex flex-col gap-2.5 rounded-lg border border-white/[0.07] bg-white/[0.03] p-3",children:[e.jsxs("div",{className:"flex flex-col items-center gap-0.5",children:[e.jsx("span",{className:"caption text-soft uppercase tracking-[0.12em]",children:"Risk : Reward"}),e.jsx("span",{className:"metric-md",style:{color:t.hasData?P:void 0},children:C})]}),e.jsxs("div",{className:"flex h-2.5 w-full overflow-hidden rounded-full bg-white/[0.06]",children:[e.jsx("span",{className:"h-full",style:{width:`${t.riskShare}%`,background:h}}),e.jsx("span",{className:"h-full",style:{width:`${100-t.riskShare}%`,background:f}})]}),e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex min-w-0 flex-col",children:[e.jsx("span",{className:"caption uppercase tracking-[0.12em]",style:{color:h},children:"Risk"}),e.jsx("span",{className:"body-sm tabular-nums",style:{color:h},children:y(-t.riskPct)}),e.jsxs("span",{className:"caption text-soft tabular-nums",children:[v(t.riskPerUnit)," / unit"]})]}),e.jsxs("div",{className:"flex min-w-0 flex-col items-end text-right",children:[e.jsx("span",{className:"caption uppercase tracking-[0.12em]",style:{color:f},children:"Reward"}),e.jsx("span",{className:"body-sm tabular-nums",style:{color:f},children:y(t.rewardPct)}),e.jsxs("span",{className:"caption text-soft tabular-nums",children:[v(t.rewardPerUnit)," / unit"]})]})]}),t.hasData&&!t.valid&&e.jsxs("span",{className:"caption text-soft",children:["⚠ Prices don't bracket entry for a ",o," setup."]})]})]})}const z=M({...R,component:T});export{z as riskRewardFrame};
1
+ import{r as l,j as e}from"./react-qoZPGuNy.js";import{i as S}from"./content-shared-BZ1XzrJx.js";import{D as h,U as f,a as y,e as v}from"./format-DxkEZcwQ.js";import{f as M,aV as R}from"./index-BHlJHScr.js";import{s as O}from"./ui-Bq3RQsdJ.js";R.schema;const P="var(--color-highlight)";function b(s){const a=Number(s);return Number.isFinite(a)?a:0}function g({label:s,value:a,onChange:n}){return e.jsxs("label",{className:"flex min-w-0 flex-col gap-1",children:[e.jsx("span",{className:"caption text-soft uppercase tracking-[0.12em]",children:s}),e.jsxs("span",{className:`flex items-center px-2 py-1.5 ${S}`,children:[e.jsx("span",{className:"body-sm text-soft",children:"$"}),e.jsx("input",{type:"number",inputMode:"decimal",value:a,onChange:c=>n(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"})]})]})}function L({value:s,onChange:a}){return e.jsx("div",{className:`flex gap-1 p-1 ${S}`,children:["long","short"].map(n=>{const c=n===s;return e.jsx("button",{type:"button",onClick:()=>a(n),className:`caption flex-1 rounded px-2 py-1 text-center uppercase tracking-[0.12em] transition-colors ${c?"bg-white/[0.06] font-semibold":"text-soft"}`,style:c?{color:P}:void 0,children:n},n)})})}function T({config:s}){const[a,n]=l.useState(String(s.entry)),[c,j]=l.useState(String(s.stop)),[m,N]=l.useState(String(s.target)),[o,k]=l.useState(s.direction);l.useEffect(()=>n(String(s.entry)),[s.entry]),l.useEffect(()=>j(String(s.stop)),[s.stop]),l.useEffect(()=>N(String(s.target)),[s.target]),l.useEffect(()=>k(s.direction),[s.direction]);const t=l.useMemo(()=>{const r=b(a),p=b(c),x=b(m),i=Math.abs(r-p),d=Math.abs(x-r),D=i>0?d/i:0,E=r!==0?i/r*100:0,$=r!==0?d/r*100:0,u=i+d,U=u>0?i/u*100:50,F=o==="long"?p<r&&r<x:x<r&&r<p;return{riskPerUnit:i,rewardPerUnit:d,rr:D,riskPct:E,rewardPct:$,riskShare:U,hasRisk:i>0,hasData:u>0,valid:F}},[a,c,m,o]),C=t.hasData?t.hasRisk?`1 : ${t.rr.toFixed(t.rr>=10?0:1)}`:"∞":"—",w=s.label.trim();return e.jsxs("div",{className:`${O} flex flex-col gap-3`,children:[w&&e.jsx("span",{className:"caption text-soft uppercase tracking-[0.12em]",children:w}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsx(g,{label:"Entry",value:a,onChange:n}),e.jsx(g,{label:"Stop",value:c,onChange:j}),e.jsx(g,{label:"Target",value:m,onChange:N})]}),e.jsx(L,{value:o,onChange:k}),e.jsxs("div",{className:"flex flex-col gap-2.5 rounded-lg border border-white/[0.07] bg-white/[0.03] p-3",children:[e.jsxs("div",{className:"flex flex-col items-center gap-0.5",children:[e.jsx("span",{className:"caption text-soft uppercase tracking-[0.12em]",children:"Risk : Reward"}),e.jsx("span",{className:"metric-md",style:{color:t.hasData?P:void 0},children:C})]}),e.jsxs("div",{className:"flex h-2.5 w-full overflow-hidden rounded-full bg-white/[0.06]",children:[e.jsx("span",{className:"h-full",style:{width:`${t.riskShare}%`,background:h}}),e.jsx("span",{className:"h-full",style:{width:`${100-t.riskShare}%`,background:f}})]}),e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex min-w-0 flex-col",children:[e.jsx("span",{className:"caption uppercase tracking-[0.12em]",style:{color:h},children:"Risk"}),e.jsx("span",{className:"body-sm tabular-nums",style:{color:h},children:y(-t.riskPct)}),e.jsxs("span",{className:"caption text-soft tabular-nums",children:[v(t.riskPerUnit)," / unit"]})]}),e.jsxs("div",{className:"flex min-w-0 flex-col items-end text-right",children:[e.jsx("span",{className:"caption uppercase tracking-[0.12em]",style:{color:f},children:"Reward"}),e.jsx("span",{className:"body-sm tabular-nums",style:{color:f},children:y(t.rewardPct)}),e.jsxs("span",{className:"caption text-soft tabular-nums",children:[v(t.rewardPerUnit)," / unit"]})]})]}),t.hasData&&!t.valid&&e.jsxs("span",{className:"caption text-soft",children:["⚠ Prices don't bracket entry for a ",o," setup."]})]})]})}const z=M({...R,component:T});export{z as riskRewardFrame};
@@ -1 +1 @@
1
- import{r as b,j as a}from"./react-qoZPGuNy.js";import{z as O,Z as R,M as x}from"./cycle-shared-XoGVsOjC.js";import{D as m,U as u}from"./format-DxkEZcwQ.js";import{r as v,t as y,w as z}from"./indicators-Cw7CVPn4.js";import{f as M,br as c,bo as g}from"./index-CiYWppnQ.js";import{F as p}from"./ui-Bq3RQsdJ.js";import"./mini-line-chart-DyG55cVW.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";c.schema;function j({config:e}){const{history:r,isLoading:d}=g("btc"),t=b.useMemo(()=>{const f=r.map(o=>o.value),h=v(f,e.period),l=[];for(let o=0;o<r.length;o++){const n=h[o];n!==null&&l.push({time:r[o].time,value:n})}return l},[r,e.period]);if(d)return a.jsx(p,{loading:!0,children:"loading RSI…"});if(t.length===0)return a.jsx(p,{children:"not enough price history yet"});const i=t[t.length-1].value,s=O(i,[{upTo:30,zone:{label:"Oversold",color:u}},{upTo:45,zone:{label:"Risk-off",color:m}},{upTo:55,zone:{label:"Neutral",color:R}},{upTo:80,zone:{label:"Risk-on",color:u}}],{label:"Overbought",color:m});return a.jsx(x,{caption:`RSI ${e.period} · daily`,headline:i.toFixed(0),headlineColor:s.color,zone:s,sparkline:y(t,z(e.window)),sparkColor:s.color})}const S=M({...c,component:j});export{S as rsiMomentumFrame};
1
+ import{r as b,j as a}from"./react-qoZPGuNy.js";import{z as O,Z as R,M as x}from"./cycle-shared-XoGVsOjC.js";import{D as m,U as u}from"./format-DxkEZcwQ.js";import{r as v,t as y,w as z}from"./indicators-Cw7CVPn4.js";import{f as M,br as c,bo as g}from"./index-BHlJHScr.js";import{F as p}from"./ui-Bq3RQsdJ.js";import"./mini-line-chart-DyG55cVW.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";c.schema;function j({config:e}){const{history:r,isLoading:d}=g("btc"),t=b.useMemo(()=>{const f=r.map(o=>o.value),h=v(f,e.period),l=[];for(let o=0;o<r.length;o++){const n=h[o];n!==null&&l.push({time:r[o].time,value:n})}return l},[r,e.period]);if(d)return a.jsx(p,{loading:!0,children:"loading RSI…"});if(t.length===0)return a.jsx(p,{children:"not enough price history yet"});const i=t[t.length-1].value,s=O(i,[{upTo:30,zone:{label:"Oversold",color:u}},{upTo:45,zone:{label:"Risk-off",color:m}},{upTo:55,zone:{label:"Neutral",color:R}},{upTo:80,zone:{label:"Risk-on",color:u}}],{label:"Overbought",color:m});return a.jsx(x,{caption:`RSI ${e.period} · daily`,headline:i.toFixed(0),headlineColor:s.color,zone:s,sparkline:y(t,z(e.window)),sparkColor:s.color})}const S=M({...c,component:j});export{S as rsiMomentumFrame};
@@ -1 +1 @@
1
- import{j as s}from"./react-qoZPGuNy.js";import{f as m,b$ as n}from"./index-CiYWppnQ.js";import{F as i,s as o}from"./ui-Bq3RQsdJ.js";n.schema;function c({config:l}){const r=l.rules.filter(e=>e.trim()),a=l.title.trim();return r.length===0?s.jsx(i,{children:"no rules yet"}):s.jsxs("div",{className:"flex h-full w-full flex-col",children:[a&&s.jsx("div",{className:"body-sm text-strong mb-1 shrink-0 font-semibold",children:a}),s.jsx("ol",{className:`min-h-0 flex-1 ${o}`,children:r.map((e,t)=>s.jsxs("li",{className:"flex gap-2 py-1",children:[s.jsx("span",{className:"caption text-highlight shrink-0 tabular-nums",children:t+1}),s.jsx("span",{className:"body-sm text-normal",children:e})]},t))})]})}const u=m({...n,component:c});export{u as rulesCardFrame};
1
+ import{j as s}from"./react-qoZPGuNy.js";import{f as m,b$ as n}from"./index-BHlJHScr.js";import{F as i,s as o}from"./ui-Bq3RQsdJ.js";n.schema;function c({config:l}){const r=l.rules.filter(e=>e.trim()),a=l.title.trim();return r.length===0?s.jsx(i,{children:"no rules yet"}):s.jsxs("div",{className:"flex h-full w-full flex-col",children:[a&&s.jsx("div",{className:"body-sm text-strong mb-1 shrink-0 font-semibold",children:a}),s.jsx("ol",{className:`min-h-0 flex-1 ${o}`,children:r.map((e,t)=>s.jsxs("li",{className:"flex gap-2 py-1",children:[s.jsx("span",{className:"caption text-highlight shrink-0 tabular-nums",children:t+1}),s.jsx("span",{className:"body-sm text-normal",children:e})]},t))})]})}const u=m({...n,component:c});export{u as rulesCardFrame};
@@ -0,0 +1 @@
1
+ import{r as y,j as F}from"./react-qoZPGuNy.js";import{s as I,e as L,l as N,z as J,A as K}from"./d3-ibrLIlQc.js";import{p as Q}from"./utils-DxneYyA_.js";const $="10px 'DM Sans', sans-serif",Z="var(--color-highlight, #8b8bff)",Y=({data:l,height:u=220,yScale:w="linear",color:b=Z,formatX:A=i=>String(i),formatY:C=i=>String(i),zeroXLine:h=!1,radiusRange:E=[3,14],maxLabels:O=12})=>{const i=y.useRef(null),S=y.useRef(null),[o,P]=y.useState(null);return y.useEffect(()=>{const c=i.current;if(!c)return;const m=()=>{const n=c.getBoundingClientRect().width;P(s=>s!==null&&Math.abs(s-n)<.5?s:n)};m();const e=typeof ResizeObserver<"u"?new ResizeObserver(m):null;return e==null||e.observe(c),()=>e==null?void 0:e.disconnect()},[]),y.useEffect(()=>{const c=S.current;if(!c||!o||o<=0||!l.length)return;I(c).selectAll("*").remove();const m=I(c),e={top:10,right:16,bottom:22,left:46},n=Math.max(o-e.left-e.right,10),s=Math.max(u-e.top-e.bottom,10),g=L(l,t=>t.x),j=(g[1]-g[0]||1)*.08,x=N().domain([Math.min(g[0]-j,h?0:1/0),Math.max(g[1]+j,h?0:-1/0)]).range([0,n]).nice(),R=l.map(t=>t.y),f=w==="log"?J().domain([Math.min(...R)*.7,Math.max(...R)*1.4]).range([s,0]):N().domain(L(R)).range([s,0]).nice(),q=K().domain([0,Math.max(...l.map(t=>t.weight??1),1e-9)]).range([E[0],E[1]]),p=m.append("g").attr("transform",`translate(${e.left},${e.top})`),U=x.ticks(Math.max(2,Math.floor(n/90))),_=f.ticks(4),B=_.filter(t=>{const r=Math.log10(t);return Math.abs(r-Math.round(r))<1e-9}),H=w==="log"&&B.length>=2?B:_;p.selectAll("line.grid-y").data(H).enter().append("line").attr("x1",0).attr("x2",n).attr("y1",t=>f(t)).attr("y2",t=>f(t)).attr("stroke","currentColor").attr("stroke-opacity",.08),p.selectAll("text.tick-y").data(H).enter().append("text").attr("x",-8).attr("y",t=>f(t)).attr("text-anchor","end").attr("dominant-baseline","central").attr("fill","currentColor").attr("fill-opacity",.5).style("font",$).text(t=>C(t)),p.selectAll("text.tick-x").data(U).enter().append("text").attr("x",t=>x(t)).attr("y",s+15).attr("text-anchor","middle").attr("fill","currentColor").attr("fill-opacity",.5).style("font",$).text(t=>A(t)),h&&p.append("line").attr("x1",x(0)).attr("x2",x(0)).attr("y1",0).attr("y2",s).attr("stroke","currentColor").attr("stroke-opacity",.22).attr("stroke-dasharray","3,3");const v=p.selectAll("circle.dot").data(l).enter().append("circle").attr("cx",t=>x(t.x)).attr("cy",t=>f(t.y)).attr("fill",t=>t.color??b).attr("fill-opacity",.55).attr("stroke",t=>t.color??b).attr("stroke-opacity",.9).attr("r",0),T=t=>q(t.weight??1);Q()?v.attr("r",T):v.transition().duration(400).attr("r",T),v.append("title").text(t=>`${t.label} · x ${A(t.x)} · y ${C(t.y)}`);const V=6,W=11,D=[],z=[...l].sort((t,r)=>(r.weight??1)-(t.weight??1)).slice(0,O).map(t=>{const r=t.label.length*V+4,a=x(t.x),G=f(t.y)-T(t)-3;let k,M,d;return a-r/2<0?(k="start",M=0,d=0):a+r/2>n?(k="end",M=n,d=n-r):(k="middle",M=a,d=a-r/2),{d:t,anchor:k,tx:M,cy:G,x1:d,x2:d+r}}).filter(t=>D.some(a=>t.x1<a.x2&&t.x2>a.x1&&t.cy-W<a.y2&&t.cy+2>a.y1)?!1:(D.push({x1:t.x1,x2:t.x2,y1:t.cy-W,y2:t.cy+2}),!0));p.selectAll("text.dot-label").data(z).enter().append("text").attr("x",t=>t.tx).attr("y",t=>t.cy).attr("text-anchor",t=>t.anchor).attr("fill","currentColor").attr("fill-opacity",.75).style("font",$).style("font-weight","600").style("pointer-events","none").text(t=>t.d.label)},[l,o,u,w,b,A,C,h,E,O]),F.jsx("div",{ref:i,className:"w-full",style:{height:u},children:o!==null&&o>0&&F.jsx("svg",{ref:S,width:o,height:u})})},rt=y.memo(Y);export{rt as S};
@@ -1 +1 @@
1
- import{r as m,j as a}from"./react-qoZPGuNy.js";import{a as h,D as l,U as f}from"./format-DxkEZcwQ.js";import{f as u,ca as n,bO as g}from"./index-CiYWppnQ.js";import{F as c}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:o}){const{sectors:s,isLoading:i}=g(),e=m.useMemo(()=>[...s].sort((t,r)=>Math.abs(r.changePct24h)-Math.abs(t.changePct24h)).slice(0,o.limit).sort((t,r)=>r.changePct24h-t.changePct24h).map(t=>({label:t.name,value:t.changePct24h})),[s,o.limit]);return i?a.jsx(c,{loading:!0,children:"loading sectors…"}):e.length===0?a.jsx(c,{children:"no sector data yet"}):a.jsx("div",{className:"flex h-full flex-col justify-center text-normal",children:a.jsx(p,{data:e,orientation:"horizontal",color:f,negativeColor:l,height:Math.max(e.length*24,96),formatValue:h})})}const b=u({...n,component:x});export{b as sectorBarsFrame};
1
+ import{r as m,j as a}from"./react-qoZPGuNy.js";import{a as h,D as l,U as f}from"./format-DxkEZcwQ.js";import{f as u,ca as n,bO as g}from"./index-BHlJHScr.js";import{F as c}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:o}){const{sectors:s,isLoading:i}=g(),e=m.useMemo(()=>[...s].sort((t,r)=>Math.abs(r.changePct24h)-Math.abs(t.changePct24h)).slice(0,o.limit).sort((t,r)=>r.changePct24h-t.changePct24h).map(t=>({label:t.name,value:t.changePct24h})),[s,o.limit]);return i?a.jsx(c,{loading:!0,children:"loading sectors…"}):e.length===0?a.jsx(c,{children:"no sector data yet"}):a.jsx("div",{className:"flex h-full flex-col justify-center text-normal",children:a.jsx(p,{data:e,orientation:"horizontal",color:f,negativeColor:l,height:Math.max(e.length*24,96),formatValue:h})})}const b=u({...n,component:x});export{b as sectorBarsFrame};
@@ -1 +1 @@
1
- import{r as s,j as n}from"./react-qoZPGuNy.js";import{B as i}from"./bubbles-shared-DY914nhm.js";import{c as r,f as l,a as p}from"./format-DxkEZcwQ.js";import{f as h,ck as c,bO as b}from"./index-CiYWppnQ.js";import"./ui-Bq3RQsdJ.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";c.schema;function f({config:t}){const{sectors:a,isLoading:m}=b(),o=s.useMemo(()=>a.filter(e=>e.marketCap>0).slice(0,t.limit).map(e=>({id:e.name,label:e.name,value:e.marketCap,color:r(e.changePct24h),borderColor:r(e.changePct24h),changePct24h:e.changePct24h})),[a,t.limit]);return n.jsx(i,{nodes:o,isLoading:m,loadingText:"loading sectors…",emptyText:"no sector data yet",caption:`area by sector mcap · ring by 24h change · top ${o.length}`,formatTitle:e=>`${e.label} · ${l(e.value)} mcap · ${p(e.changePct24h)}`})}const y=h({...c,component:f});export{y as sectorBubblesFrame};
1
+ import{r as s,j as n}from"./react-qoZPGuNy.js";import{B as i}from"./bubbles-shared-DlmjtiIA.js";import{c as r,f as l,a as p}from"./format-DxkEZcwQ.js";import{f as h,ck as c,bO as b}from"./index-BHlJHScr.js";import"./ui-Bq3RQsdJ.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";c.schema;function f({config:t}){const{sectors:a,isLoading:m}=b(),o=s.useMemo(()=>a.filter(e=>e.marketCap>0).slice(0,t.limit).map(e=>({id:e.name,label:e.name,value:e.marketCap,color:r(e.changePct24h),borderColor:r(e.changePct24h),changePct24h:e.changePct24h})),[a,t.limit]);return n.jsx(i,{nodes:o,isLoading:m,loadingText:"loading sectors…",emptyText:"no sector data yet",caption:`area by sector mcap · ring by 24h change · top ${o.length}`,formatTitle:e=>`${e.label} · ${l(e.value)} mcap · ${p(e.changePct24h)}`})}const y=h({...c,component:f});export{y as sectorBubblesFrame};
@@ -1 +1 @@
1
- import{j as e}from"./react-qoZPGuNy.js";import{a as i,c as l,f}from"./format-DxkEZcwQ.js";import{M as h}from"./metric-row-BVVhjsjK.js";import{f as p,bN as t,bO as d}from"./index-CiYWppnQ.js";import{F as o,s as x}from"./ui-Bq3RQsdJ.js";t.schema;function u({config:s}){const{sectors:c,isLoading:n}=d(),a=c.slice(0,s.limit);return n?e.jsx(o,{loading:!0,children:"loading sectors…"}):a.length===0?e.jsx(o,{children:"no sector data yet"}):e.jsx("div",{className:`${x} flex flex-col`,children:a.map((r,m)=>e.jsx(h,{label:r.name,meta:f(r.marketCap),value:e.jsx("span",{style:{color:l(r.changePct24h)},children:i(r.changePct24h)})},m))})}const b=p({...t,component:u});export{b as sectorPerformanceFrame};
1
+ import{j as e}from"./react-qoZPGuNy.js";import{a as i,c as l,f}from"./format-DxkEZcwQ.js";import{M as h}from"./metric-row-BVVhjsjK.js";import{f as p,bN as t,bO as d}from"./index-BHlJHScr.js";import{F as o,s as x}from"./ui-Bq3RQsdJ.js";t.schema;function u({config:s}){const{sectors:c,isLoading:n}=d(),a=c.slice(0,s.limit);return n?e.jsx(o,{loading:!0,children:"loading sectors…"}):a.length===0?e.jsx(o,{children:"no sector data yet"}):e.jsx("div",{className:`${x} flex flex-col`,children:a.map((r,m)=>e.jsx(h,{label:r.name,meta:f(r.marketCap),value:e.jsx("span",{style:{color:l(r.changePct24h)},children:i(r.changePct24h)})},m))})}const b=p({...t,component:u});export{b as sectorPerformanceFrame};
@@ -1 +1 @@
1
- import{r as i,j as o}from"./react-qoZPGuNy.js";import{f as p,a as n}from"./format-DxkEZcwQ.js";import{f,bR as c,bO as h}from"./index-CiYWppnQ.js";import{T as l,a as u}from"./treemap-leaf-QG-L-SIG.js";import{F as s}from"./ui-Bq3RQsdJ.js";import"./utils-DxneYyA_.js";import"./d3-ibrLIlQc.js";c.schema;function g({width:t,height:a,data:e}){return o.jsx(u,{width:t,height:a,label:e.id,secondary:n(e.changePct24h),title:`${e.id} · ${p(e.marketCap)} · ${n(e.changePct24h)}`})}function d({config:t}){const{sectors:a,isLoading:e}=h(),m=i.useMemo(()=>a.slice(0,t.limit).map(r=>({id:r.name,value:r.marketCap,marketCap:r.marketCap,changePct24h:r.changePct24h})),[a,t.limit]);return e?o.jsx(s,{loading:!0,children:"loading sectors…"}):m.length===0?o.jsx(s,{children:"no sector data yet"}):o.jsx(l,{data:m,LeafComponent:g,getColorValue:r=>r.changePct24h})}const L=f({...c,component:d});export{L as sectorTreemapFrame};
1
+ import{r as i,j as o}from"./react-qoZPGuNy.js";import{f as p,a as n}from"./format-DxkEZcwQ.js";import{f,bR as c,bO as h}from"./index-BHlJHScr.js";import{T as l,a as u}from"./treemap-leaf-QG-L-SIG.js";import{F as s}from"./ui-Bq3RQsdJ.js";import"./utils-DxneYyA_.js";import"./d3-ibrLIlQc.js";c.schema;function g({width:t,height:a,data:e}){return o.jsx(u,{width:t,height:a,label:e.id,secondary:n(e.changePct24h),title:`${e.id} · ${p(e.marketCap)} · ${n(e.changePct24h)}`})}function d({config:t}){const{sectors:a,isLoading:e}=h(),m=i.useMemo(()=>a.slice(0,t.limit).map(r=>({id:r.name,value:r.marketCap,marketCap:r.marketCap,changePct24h:r.changePct24h})),[a,t.limit]);return e?o.jsx(s,{loading:!0,children:"loading sectors…"}):m.length===0?o.jsx(s,{children:"no sector data yet"}):o.jsx(l,{data:m,LeafComponent:g,getColorValue:r=>r.changePct24h})}const L=f({...c,component:d});export{L as sectorTreemapFrame};
@@ -1 +1 @@
1
- import{j as e}from"./react-qoZPGuNy.js";import{f as c,co as s,I as l}from"./index-CiYWppnQ.js";import{F as n}from"./ui-Bq3RQsdJ.js";import{R as m}from"./radial-gauge-0BzRQ6fO.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";s.schema;function d(t){return t<=25?"#F21553":t<=45?"#F97316":t<=55?"#F59E0B":t<=75?"#84CC16":"#25A78D"}function f(t){const{points:a,isLoading:o}=l(1),r=a[0];if(o)return e.jsx(n,{loading:!0,children:"loading index…"});if(!r)return e.jsx(n,{children:"no sentiment data yet"});const i=d(r.value);return e.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-1",children:[e.jsxs(m,{value:r.value,color:i,size:170,children:[e.jsx("div",{className:"metric-xl leading-none",style:{color:i,textShadow:`0 0 28px ${i}55`},children:r.value}),e.jsx("div",{className:"caption text-soft mt-1 uppercase tracking-wide",children:r.classification})]}),e.jsx("div",{className:"caption text-soft",children:"crypto fear & greed"})]})}const F=c({...s,component:f});export{F as sentimentGaugeFrame};
1
+ import{j as e}from"./react-qoZPGuNy.js";import{f as c,co as s,I as l}from"./index-BHlJHScr.js";import{F as n}from"./ui-Bq3RQsdJ.js";import{R as m}from"./radial-gauge-0BzRQ6fO.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";s.schema;function d(t){return t<=25?"#F21553":t<=45?"#F97316":t<=55?"#F59E0B":t<=75?"#84CC16":"#25A78D"}function f(t){const{points:a,isLoading:o}=l(1),r=a[0];if(o)return e.jsx(n,{loading:!0,children:"loading index…"});if(!r)return e.jsx(n,{children:"no sentiment data yet"});const i=d(r.value);return e.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-1",children:[e.jsxs(m,{value:r.value,color:i,size:170,children:[e.jsx("div",{className:"metric-xl leading-none",style:{color:i,textShadow:`0 0 28px ${i}55`},children:r.value}),e.jsx("div",{className:"caption text-soft mt-1 uppercase tracking-wide",children:r.classification})]}),e.jsx("div",{className:"caption text-soft",children:"crypto fear & greed"})]})}const F=c({...s,component:f});export{F as sentimentGaugeFrame};
@@ -1 +1 @@
1
- import{r as d,j as e}from"./react-qoZPGuNy.js";import{E as u,e as w,f as h}from"./market-data-CvmpLFSo.js";import{f as N,aX as f}from"./index-CiYWppnQ.js";import{F as v}from"./ui-Bq3RQsdJ.js";f.schema;function x(s){const[o,r]=s.split(":").map(Number);return o*60+r}function b(s){return Math.min(1,Math.max(0,s))}function M({config:s}){const[o,r]=d.useState(()=>new Date);d.useEffect(()=>{const j=setInterval(()=>r(new Date),3e4);return()=>clearInterval(j)},[]);const n=u[s.exchange]??u.NYSE;if(!n)return e.jsx(v,{children:"unknown exchange"});const t=w(n,o),a=t.status==="open",c=s.label.trim(),l=x(t.close)-x(t.open),i=a&&l>0?b((l-t.nextChangeMin)/l):0,p=Math.round(i*100),g=t.status==="holiday"?"Holiday":a?`${p}%`:"Closed",m=a?`closes in ${h(t.nextChangeMin)}`:s.showCountdown?`opens in ${h(t.nextChangeMin)}`:null;return e.jsxs("div",{className:"flex h-full w-full flex-col justify-center gap-2",children:[e.jsxs("div",{className:"caption text-soft flex items-center gap-1.5 uppercase tracking-[0.14em]",children:[e.jsx("span",{className:"text-normal font-semibold",children:n.mark}),e.jsx("span",{children:n.code}),c&&e.jsxs("span",{className:"text-disabled truncate tracking-normal normal-case",children:["· ",c]})]}),e.jsx("div",{className:`metric-md leading-none ${a?"text-strong":"text-soft"}`,children:g}),e.jsx("div",{className:"bg-surface h-2 w-full overflow-hidden rounded-full",children:e.jsx("div",{className:"h-full rounded-full transition-[width] duration-500",style:{width:`${i*100}%`,background:"var(--color-highlight)"}})}),m&&e.jsx("div",{className:"caption text-soft",children:m})]})}const $=N({...f,component:M});export{$ as sessionProgressFrame};
1
+ import{r as d,j as e}from"./react-qoZPGuNy.js";import{E as u,e as w,f as h}from"./market-data-CvmpLFSo.js";import{f as N,aX as f}from"./index-BHlJHScr.js";import{F as v}from"./ui-Bq3RQsdJ.js";f.schema;function x(s){const[o,r]=s.split(":").map(Number);return o*60+r}function b(s){return Math.min(1,Math.max(0,s))}function M({config:s}){const[o,r]=d.useState(()=>new Date);d.useEffect(()=>{const j=setInterval(()=>r(new Date),3e4);return()=>clearInterval(j)},[]);const n=u[s.exchange]??u.NYSE;if(!n)return e.jsx(v,{children:"unknown exchange"});const t=w(n,o),a=t.status==="open",c=s.label.trim(),l=x(t.close)-x(t.open),i=a&&l>0?b((l-t.nextChangeMin)/l):0,p=Math.round(i*100),g=t.status==="holiday"?"Holiday":a?`${p}%`:"Closed",m=a?`closes in ${h(t.nextChangeMin)}`:s.showCountdown?`opens in ${h(t.nextChangeMin)}`:null;return e.jsxs("div",{className:"flex h-full w-full flex-col justify-center gap-2",children:[e.jsxs("div",{className:"caption text-soft flex items-center gap-1.5 uppercase tracking-[0.14em]",children:[e.jsx("span",{className:"text-normal font-semibold",children:n.mark}),e.jsx("span",{children:n.code}),c&&e.jsxs("span",{className:"text-disabled truncate tracking-normal normal-case",children:["· ",c]})]}),e.jsx("div",{className:`metric-md leading-none ${a?"text-strong":"text-soft"}`,children:g}),e.jsx("div",{className:"bg-surface h-2 w-full overflow-hidden rounded-full",children:e.jsx("div",{className:"h-full rounded-full transition-[width] duration-500",style:{width:`${i*100}%`,background:"var(--color-highlight)"}})}),m&&e.jsx("div",{className:"caption text-soft",children:m})]})}const $=N({...f,component:M});export{$ as sessionProgressFrame};
@@ -1 +1 @@
1
- import{r as u,j as s}from"./react-qoZPGuNy.js";import{f as x,ap as h,aq as p,A as f}from"./index-CiYWppnQ.js";import{b,d as i}from"./format-DxkEZcwQ.js";import{F as c,s as j}from"./ui-Bq3RQsdJ.js";h.schema;const d=(e=1)=>`hsl(var(--zf-accent-hue, 242) 85% 72% / ${e})`;function y({symbol:e,entry:o}){const l=e.includes(":")?e:`xyz:${o.symbol}`,r=Math.max(0,Math.min(100,o.shortPct));return s.jsxs("div",{className:"flex min-w-0 items-center gap-3 border-b border-white/[0.06] py-2 last:border-b-0",children:[s.jsx(f,{symbol:l,size:20}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[s.jsx("span",{className:"body-sm text-strong truncate font-semibold",children:o.symbol}),s.jsx("span",{className:"body-md text-strong font-bold tabular-nums",children:b(r,1)})]}),s.jsx("div",{className:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-white/[0.07]",children:s.jsx("div",{className:"h-full rounded-full",style:{width:`${r}%`,background:d(.85),boxShadow:`0 0 8px ${d(.5)}`}})}),s.jsxs("div",{className:"caption text-soft mt-1 tabular-nums",children:["short ",i(o.shortVolume)," /"," ",i(o.totalVolume)]})]})]})}function v({config:e}){const{data:o,isLoading:l}=p(e.symbols),r=u.useMemo(()=>{const a=e.symbols.map(t=>({symbol:t,entry:o[t]})).filter(t=>!!t.entry);return a.sort((t,n)=>e.sort==="symbol"?t.entry.symbol.localeCompare(n.entry.symbol):e.sort==="volume"?n.entry.totalVolume-t.entry.totalVolume:n.entry.shortPct-t.entry.shortPct),a},[o,e.symbols,e.sort]);if(l)return s.jsx(c,{loading:!0,children:"loading short volume…"});if(r.length===0)return s.jsx(c,{children:"no FINRA short-volume data yet"});const m=r[0].entry.date;return s.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-3",children:[s.jsxs("div",{className:"flex items-start justify-between gap-3",children:[s.jsxs("div",{children:[s.jsx("div",{className:"caption text-soft uppercase",children:"short volume"}),s.jsx("div",{className:"body-sm text-normal",children:m?`FINRA · ${m}`:"FINRA"})]}),s.jsxs("div",{className:"caption text-soft text-right",children:["reported volume",s.jsx("br",{}),"not short interest"]})]}),s.jsx("div",{className:j,children:r.map(({symbol:a,entry:t})=>s.jsx(y,{symbol:a,entry:t},a))})]})}const F=x({...h,component:v});export{F as shortVolumeFrame};
1
+ import{r as u,j as s}from"./react-qoZPGuNy.js";import{f as x,ap as h,aq as p,A as f}from"./index-BHlJHScr.js";import{b,d as i}from"./format-DxkEZcwQ.js";import{F as c,s as j}from"./ui-Bq3RQsdJ.js";h.schema;const d=(e=1)=>`hsl(var(--zf-accent-hue, 242) 85% 72% / ${e})`;function y({symbol:e,entry:o}){const l=e.includes(":")?e:`xyz:${o.symbol}`,r=Math.max(0,Math.min(100,o.shortPct));return s.jsxs("div",{className:"flex min-w-0 items-center gap-3 border-b border-white/[0.06] py-2 last:border-b-0",children:[s.jsx(f,{symbol:l,size:20}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[s.jsx("span",{className:"body-sm text-strong truncate font-semibold",children:o.symbol}),s.jsx("span",{className:"body-md text-strong font-bold tabular-nums",children:b(r,1)})]}),s.jsx("div",{className:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-white/[0.07]",children:s.jsx("div",{className:"h-full rounded-full",style:{width:`${r}%`,background:d(.85),boxShadow:`0 0 8px ${d(.5)}`}})}),s.jsxs("div",{className:"caption text-soft mt-1 tabular-nums",children:["short ",i(o.shortVolume)," /"," ",i(o.totalVolume)]})]})]})}function v({config:e}){const{data:o,isLoading:l}=p(e.symbols),r=u.useMemo(()=>{const a=e.symbols.map(t=>({symbol:t,entry:o[t]})).filter(t=>!!t.entry);return a.sort((t,n)=>e.sort==="symbol"?t.entry.symbol.localeCompare(n.entry.symbol):e.sort==="volume"?n.entry.totalVolume-t.entry.totalVolume:n.entry.shortPct-t.entry.shortPct),a},[o,e.symbols,e.sort]);if(l)return s.jsx(c,{loading:!0,children:"loading short volume…"});if(r.length===0)return s.jsx(c,{children:"no FINRA short-volume data yet"});const m=r[0].entry.date;return s.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-3",children:[s.jsxs("div",{className:"flex items-start justify-between gap-3",children:[s.jsxs("div",{children:[s.jsx("div",{className:"caption text-soft uppercase",children:"short volume"}),s.jsx("div",{className:"body-sm text-normal",children:m?`FINRA · ${m}`:"FINRA"})]}),s.jsxs("div",{className:"caption text-soft text-right",children:["reported volume",s.jsx("br",{}),"not short interest"]})]}),s.jsx("div",{className:j,children:r.map(({symbol:a,entry:t})=>s.jsx(y,{symbol:a,entry:t},a))})]})}const F=x({...h,component:v});export{F as shortVolumeFrame};
@@ -1 +1 @@
1
- import{r as h,j as o}from"./react-qoZPGuNy.js";import{b as u}from"./format-DxkEZcwQ.js";import{f as c,dl as l,aq as f}from"./index-CiYWppnQ.js";import{F as m}from"./ui-Bq3RQsdJ.js";import{B as p}from"./bar-chart-DmyKFv_O.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";l.schema;function d({config:e}){const{data:a,isLoading:n}=f(e.symbols),s=h.useMemo(()=>{const r=e.symbols.map(t=>a[t]).filter(t=>!!t);return r.sort((t,i)=>i.shortPct-t.shortPct),r.map(t=>({label:t.symbol,value:t.shortPct}))},[a,e.symbols]);return n?o.jsx(m,{loading:!0,children:"loading short volume…"}):s.length===0?o.jsx(m,{children:"no FINRA short-volume data yet"}):o.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[o.jsx(p,{data:s,orientation:"horizontal",height:Math.max(s.length*24,96),formatValue:r=>u(r,1)}),o.jsx("div",{className:"caption text-soft text-center",children:"% of reported volume sold short · FINRA, not short interest"})]})}const y=c({...l,component:d});export{y as shortVolumeBarsFrame};
1
+ import{r as h,j as o}from"./react-qoZPGuNy.js";import{b as u}from"./format-DxkEZcwQ.js";import{f as c,dl as l,aq as f}from"./index-BHlJHScr.js";import{F as m}from"./ui-Bq3RQsdJ.js";import{B as p}from"./bar-chart-DCMbxUJx.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";l.schema;function d({config:e}){const{data:a,isLoading:n}=f(e.symbols),s=h.useMemo(()=>{const r=e.symbols.map(t=>a[t]).filter(t=>!!t);return r.sort((t,i)=>i.shortPct-t.shortPct),r.map(t=>({label:t.symbol,value:t.shortPct}))},[a,e.symbols]);return n?o.jsx(m,{loading:!0,children:"loading short volume…"}):s.length===0?o.jsx(m,{children:"no FINRA short-volume data yet"}):o.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[o.jsx(p,{data:s,orientation:"horizontal",height:Math.max(s.length*24,96),formatValue:r=>u(r,1)}),o.jsx("div",{className:"caption text-soft text-center",children:"% of reported volume sold short · FINRA, not short interest"})]})}const y=c({...l,component:d});export{y as shortVolumeBarsFrame};
@@ -1 +1 @@
1
- import{r as a,j as L}from"./react-qoZPGuNy.js";import{a as H,G as M,d as X}from"./game-ui-BiMS2KJf.js";import{f as j,aK as z}from"./index-CiYWppnQ.js";import"./format-DxkEZcwQ.js";const g=18,P=14,W=0,K={snakeHead:"rgba(255, 255, 255, 0.95)",food:"hsla(347, 100%, 62%, 1)"};function N(s,r,l,u,f){s.fillStyle=u,s.fillRect(r.originX+l.x*g+f,r.originY+l.y*g+f,g-f*2,g-f*2)}function q(s,r,l,u,f,y){r.clearRect(0,0,s.width,s.height),N(r,l,l.food,K.food,3),l.snake.forEach((d,C)=>N(r,l,d,C===0?K.snakeHead:y,2)),X(s,r,u,f,y)}function O(s,r,l,u,f,y){r.clearRect(0,0,s.width,s.height),r.textAlign="center",l==="idle"?(r.fillStyle=M.text,r.font='bold 14px "DM Sans", sans-serif',r.fillText("Arrow keys or swipe to start",s.width/2,s.height/2)):(r.fillStyle=M.gameOver,r.font='bold 20px "DM Sans", sans-serif',r.fillText("GAME OVER",s.width/2,s.height/2-30),r.fillStyle=M.text,r.font='bold 14px "DM Sans", sans-serif',r.fillText(`Score: ${u}`,s.width/2,s.height/2),r.fillStyle=M.textSoft,r.fillText("Press an arrow or tap to play again",s.width/2,s.height/2+28)),r.textAlign="left",X(s,r,u,f,y)}function v(){const s=a.useRef(null),r=a.useRef(null),[l,u]=a.useState("idle"),[f,y]=a.useState(0),[d,C]=a.useState(()=>{if(typeof window<"u"){const e=localStorage.getItem("zframes-snake-high-score");return e?parseInt(e,10):0}return 0}),[,I]=a.useState(!1),h=a.useRef(0),S=a.useRef(d),x=a.useRef(l),A=a.useRef(null),b=a.useRef(H(null));a.useEffect(()=>{S.current=d,d>0&&localStorage.setItem("zframes-snake-high-score",String(d))},[d]),a.useEffect(()=>{x.current=l},[l]);const w=a.useRef({snake:[],dir:{x:1,y:0},pendingDir:{x:1,y:0},food:{x:0,y:0},cols:0,rows:0,originX:0,originY:0,stepCounter:0}),D=a.useCallback(()=>{const e=w.current;if(e.cols<=0||e.rows<=0)return;let t,o=0;do t={x:Math.floor(Math.random()*e.cols),y:Math.floor(Math.random()*e.rows)},o++;while(e.snake.some(i=>i.x===t.x&&i.y===t.y)&&o<400);e.food=t},[]),T=a.useCallback(()=>{const e=w.current,t=Math.floor(e.cols/2),o=Math.floor(e.rows/2);e.snake=[{x:t,y:o},{x:t-1,y:o},{x:t-2,y:o}],e.dir={x:1,y:0},e.pendingDir={x:1,y:0},e.stepCounter=0,D(),h.current=0,y(0)},[D]),p=a.useCallback(()=>{w.current.cols<=0||(T(),u("playing"))},[T]),m=a.useCallback((e,t)=>{const o=w.current;o.dir.x===-e&&o.dir.y===-t||(o.pendingDir={x:e,y:t})},[]);a.useEffect(()=>{const e=o=>{const i=o.target;if(i.tagName==="INPUT"||i.tagName==="TEXTAREA"||i.isContentEditable)return;const c=x.current==="playing";let n=!0;switch(o.code){case"ArrowUp":case"KeyW":c?m(0,-1):p();break;case"ArrowDown":case"KeyS":c?m(0,1):p();break;case"ArrowLeft":case"KeyA":c?m(-1,0):p();break;case"ArrowRight":case"KeyD":c?m(1,0):p();break;case"Space":c||p();break;default:n=!1}n&&o.preventDefault()},t=r.current;if(t)return t.addEventListener("keydown",e),()=>t.removeEventListener("keydown",e)},[m,p]),a.useLayoutEffect(()=>{const e=s.current;if(!e)return;const t=()=>{const i=e.parentElement;if(i&&i.clientWidth>0&&i.clientHeight>0){e.width=i.clientWidth,e.height=i.clientHeight-W,b.current=H(e);const c=w.current;c.cols=Math.max(5,Math.floor(e.width/g)),c.rows=Math.max(5,Math.floor(e.height/g)),c.originX=Math.floor((e.width-c.cols*g)/2),c.originY=Math.floor((e.height-c.rows*g)/2);const n=e.getContext("2d");n&&x.current!=="playing"&&O(e,n,x.current,h.current,S.current,b.current),I(E=>!E)}};t();const o=new ResizeObserver(t);return o.observe(e.parentElement),()=>o.disconnect()},[]),a.useEffect(()=>{if(l!=="playing")return;const e=s.current,t=e==null?void 0:e.getContext("2d");if(!e||!t)return;let o;const i=()=>{h.current>S.current&&(S.current=h.current,C(h.current)),u("gameover")},c=()=>{const n=w.current;if(n.stepCounter++,n.stepCounter>=P){n.stepCounter=0,n.dir=n.pendingDir;const E=n.snake[0],k=E.x+n.dir.x,R=E.y+n.dir.y;if(k<0||R<0||k>=n.cols||R>=n.rows){i();return}const G=k===n.food.x&&R===n.food.y;if((G?n.snake:n.snake.slice(0,-1)).some(F=>F.x===k&&F.y===R)){i();return}n.snake.unshift({x:k,y:R}),G?(h.current+=1,y(h.current),D()):n.snake.pop()}q(e,t,n,h.current,S.current,b.current),o=requestAnimationFrame(c)};return o=requestAnimationFrame(c),()=>cancelAnimationFrame(o)},[l]),a.useEffect(()=>{if(l==="playing")return;const e=s.current,t=e==null?void 0:e.getContext("2d");!e||!t||O(e,t,l,f,d,b.current)},[l,f,d]);const U=e=>{const t=e.touches[0];t&&(A.current={x:t.clientX,y:t.clientY})},Y=e=>{var n;const t=A.current;A.current=null;const o=e.changedTouches[0];if((n=r.current)==null||n.focus(),x.current!=="playing"){p();return}if(!t||!o)return;const i=o.clientX-t.x,c=o.clientY-t.y;Math.abs(i)<12&&Math.abs(c)<12||(Math.abs(i)>Math.abs(c)?m(i>0?1:-1,0):m(0,c>0?1:-1))};return L.jsx("div",{ref:r,tabIndex:0,className:"relative h-full w-full cursor-pointer select-none overflow-hidden outline-none",onTouchStart:U,onTouchEnd:Y,onClick:()=>{var e;return(e=r.current)==null?void 0:e.focus()},role:"application","aria-label":"Snake game. Use the arrow keys or swipe to steer.",children:L.jsx("canvas",{ref:s,className:"h-full w-full"})})}const Q=j({...z,component:v});export{Q as snakeFrame};
1
+ import{r as a,j as L}from"./react-qoZPGuNy.js";import{a as H,G as M,d as X}from"./game-ui-BiMS2KJf.js";import{f as j,aK as z}from"./index-BHlJHScr.js";import"./format-DxkEZcwQ.js";const g=18,P=14,W=0,K={snakeHead:"rgba(255, 255, 255, 0.95)",food:"hsla(347, 100%, 62%, 1)"};function N(s,r,l,u,f){s.fillStyle=u,s.fillRect(r.originX+l.x*g+f,r.originY+l.y*g+f,g-f*2,g-f*2)}function q(s,r,l,u,f,y){r.clearRect(0,0,s.width,s.height),N(r,l,l.food,K.food,3),l.snake.forEach((d,C)=>N(r,l,d,C===0?K.snakeHead:y,2)),X(s,r,u,f,y)}function O(s,r,l,u,f,y){r.clearRect(0,0,s.width,s.height),r.textAlign="center",l==="idle"?(r.fillStyle=M.text,r.font='bold 14px "DM Sans", sans-serif',r.fillText("Arrow keys or swipe to start",s.width/2,s.height/2)):(r.fillStyle=M.gameOver,r.font='bold 20px "DM Sans", sans-serif',r.fillText("GAME OVER",s.width/2,s.height/2-30),r.fillStyle=M.text,r.font='bold 14px "DM Sans", sans-serif',r.fillText(`Score: ${u}`,s.width/2,s.height/2),r.fillStyle=M.textSoft,r.fillText("Press an arrow or tap to play again",s.width/2,s.height/2+28)),r.textAlign="left",X(s,r,u,f,y)}function v(){const s=a.useRef(null),r=a.useRef(null),[l,u]=a.useState("idle"),[f,y]=a.useState(0),[d,C]=a.useState(()=>{if(typeof window<"u"){const e=localStorage.getItem("zframes-snake-high-score");return e?parseInt(e,10):0}return 0}),[,I]=a.useState(!1),h=a.useRef(0),S=a.useRef(d),x=a.useRef(l),A=a.useRef(null),b=a.useRef(H(null));a.useEffect(()=>{S.current=d,d>0&&localStorage.setItem("zframes-snake-high-score",String(d))},[d]),a.useEffect(()=>{x.current=l},[l]);const w=a.useRef({snake:[],dir:{x:1,y:0},pendingDir:{x:1,y:0},food:{x:0,y:0},cols:0,rows:0,originX:0,originY:0,stepCounter:0}),D=a.useCallback(()=>{const e=w.current;if(e.cols<=0||e.rows<=0)return;let t,o=0;do t={x:Math.floor(Math.random()*e.cols),y:Math.floor(Math.random()*e.rows)},o++;while(e.snake.some(i=>i.x===t.x&&i.y===t.y)&&o<400);e.food=t},[]),T=a.useCallback(()=>{const e=w.current,t=Math.floor(e.cols/2),o=Math.floor(e.rows/2);e.snake=[{x:t,y:o},{x:t-1,y:o},{x:t-2,y:o}],e.dir={x:1,y:0},e.pendingDir={x:1,y:0},e.stepCounter=0,D(),h.current=0,y(0)},[D]),p=a.useCallback(()=>{w.current.cols<=0||(T(),u("playing"))},[T]),m=a.useCallback((e,t)=>{const o=w.current;o.dir.x===-e&&o.dir.y===-t||(o.pendingDir={x:e,y:t})},[]);a.useEffect(()=>{const e=o=>{const i=o.target;if(i.tagName==="INPUT"||i.tagName==="TEXTAREA"||i.isContentEditable)return;const c=x.current==="playing";let n=!0;switch(o.code){case"ArrowUp":case"KeyW":c?m(0,-1):p();break;case"ArrowDown":case"KeyS":c?m(0,1):p();break;case"ArrowLeft":case"KeyA":c?m(-1,0):p();break;case"ArrowRight":case"KeyD":c?m(1,0):p();break;case"Space":c||p();break;default:n=!1}n&&o.preventDefault()},t=r.current;if(t)return t.addEventListener("keydown",e),()=>t.removeEventListener("keydown",e)},[m,p]),a.useLayoutEffect(()=>{const e=s.current;if(!e)return;const t=()=>{const i=e.parentElement;if(i&&i.clientWidth>0&&i.clientHeight>0){e.width=i.clientWidth,e.height=i.clientHeight-W,b.current=H(e);const c=w.current;c.cols=Math.max(5,Math.floor(e.width/g)),c.rows=Math.max(5,Math.floor(e.height/g)),c.originX=Math.floor((e.width-c.cols*g)/2),c.originY=Math.floor((e.height-c.rows*g)/2);const n=e.getContext("2d");n&&x.current!=="playing"&&O(e,n,x.current,h.current,S.current,b.current),I(E=>!E)}};t();const o=new ResizeObserver(t);return o.observe(e.parentElement),()=>o.disconnect()},[]),a.useEffect(()=>{if(l!=="playing")return;const e=s.current,t=e==null?void 0:e.getContext("2d");if(!e||!t)return;let o;const i=()=>{h.current>S.current&&(S.current=h.current,C(h.current)),u("gameover")},c=()=>{const n=w.current;if(n.stepCounter++,n.stepCounter>=P){n.stepCounter=0,n.dir=n.pendingDir;const E=n.snake[0],k=E.x+n.dir.x,R=E.y+n.dir.y;if(k<0||R<0||k>=n.cols||R>=n.rows){i();return}const G=k===n.food.x&&R===n.food.y;if((G?n.snake:n.snake.slice(0,-1)).some(F=>F.x===k&&F.y===R)){i();return}n.snake.unshift({x:k,y:R}),G?(h.current+=1,y(h.current),D()):n.snake.pop()}q(e,t,n,h.current,S.current,b.current),o=requestAnimationFrame(c)};return o=requestAnimationFrame(c),()=>cancelAnimationFrame(o)},[l]),a.useEffect(()=>{if(l==="playing")return;const e=s.current,t=e==null?void 0:e.getContext("2d");!e||!t||O(e,t,l,f,d,b.current)},[l,f,d]);const U=e=>{const t=e.touches[0];t&&(A.current={x:t.clientX,y:t.clientY})},Y=e=>{var n;const t=A.current;A.current=null;const o=e.changedTouches[0];if((n=r.current)==null||n.focus(),x.current!=="playing"){p();return}if(!t||!o)return;const i=o.clientX-t.x,c=o.clientY-t.y;Math.abs(i)<12&&Math.abs(c)<12||(Math.abs(i)>Math.abs(c)?m(i>0?1:-1,0):m(0,c>0?1:-1))};return L.jsx("div",{ref:r,tabIndex:0,className:"relative h-full w-full cursor-pointer select-none overflow-hidden outline-none",onTouchStart:U,onTouchEnd:Y,onClick:()=>{var e;return(e=r.current)==null?void 0:e.focus()},role:"application","aria-label":"Snake game. Use the arrow keys or swipe to steer.",children:L.jsx("canvas",{ref:s,className:"h-full w-full"})})}const Q=j({...z,component:v});export{Q as snakeFrame};
@@ -1 +1 @@
1
- import{j as e}from"./react-qoZPGuNy.js";import{z as n,a as l,Z as p,M as m}from"./cycle-shared-XoGVsOjC.js";import{U as u}from"./format-DxkEZcwQ.js";import{t as c,w as f}from"./indicators-Cw7CVPn4.js";import{f as d,bk as a,bl as R}from"./index-CiYWppnQ.js";import{F as s}from"./ui-Bq3RQsdJ.js";import"./mini-line-chart-DyG55cVW.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";a.schema;function x({config:i}){const{extras:o,isLoading:t}=R();if(t)return e.jsx(s,{loading:!0,children:"loading SOPR…"});if(!o||o.sopr===null)return e.jsx(s,{children:"SOPR unavailable"});const r=n(o.sopr,[{upTo:.99,zone:{label:"Loss / capitulation",color:u}},{upTo:1.01,zone:{label:"Neutral",color:p}}],{label:"Profit-taking",color:l});return e.jsx(m,{caption:"Spent Output Profit Ratio",headline:o.sopr.toFixed(3),headlineColor:r.color,zone:r,sub:o.reserveRisk!==null?`Reserve Risk ${o.reserveRisk.toPrecision(2)}`:void 0,sparkline:c(o.history.sopr,f(i.window)),sparkColor:r.color})}const z=d({...a,component:x});export{z as soprFrame};
1
+ import{j as e}from"./react-qoZPGuNy.js";import{z as n,a as l,Z as p,M as m}from"./cycle-shared-XoGVsOjC.js";import{U as u}from"./format-DxkEZcwQ.js";import{t as c,w as f}from"./indicators-Cw7CVPn4.js";import{f as d,bk as a,bl as R}from"./index-BHlJHScr.js";import{F as s}from"./ui-Bq3RQsdJ.js";import"./mini-line-chart-DyG55cVW.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";a.schema;function x({config:i}){const{extras:o,isLoading:t}=R();if(t)return e.jsx(s,{loading:!0,children:"loading SOPR…"});if(!o||o.sopr===null)return e.jsx(s,{children:"SOPR unavailable"});const r=n(o.sopr,[{upTo:.99,zone:{label:"Loss / capitulation",color:u}},{upTo:1.01,zone:{label:"Neutral",color:p}}],{label:"Profit-taking",color:l});return e.jsx(m,{caption:"Spent Output Profit Ratio",headline:o.sopr.toFixed(3),headlineColor:r.color,zone:r,sub:o.reserveRisk!==null?`Reserve Risk ${o.reserveRisk.toPrecision(2)}`:void 0,sparkline:c(o.history.sopr,f(i.window)),sparkColor:r.color})}const z=d({...a,component:x});export{z as soprFrame};
@@ -1 +1 @@
1
- import{r as s,j as l}from"./react-qoZPGuNy.js";import{f as p,c1 as i}from"./index-CiYWppnQ.js";import{F as o}from"./ui-Bq3RQsdJ.js";i.schema;const c=["track","album","playlist","artist","episode","show"];function d(t){let a;try{a=new URL(t.trim())}catch{return null}if(a.hostname.replace(/^www\./,"")!=="open.spotify.com")return null;const r=a.pathname.split("/").filter(Boolean),e=r.findIndex(n=>c.includes(n));return e===-1||!r[e+1]?null:`https://open.spotify.com/embed/${r[e]}/${r[e+1]}`}function m({config:t}){const[a,r]=s.useState("loading"),e=s.useMemo(()=>d(t.url),[t.url]);return e?a==="error"?l.jsx(o,{children:"player unavailable"}):l.jsxs("div",{className:"relative h-full w-full overflow-hidden rounded-md",children:[a==="loading"&&l.jsx("div",{className:"absolute inset-0 z-10",children:l.jsx(o,{loading:!0,children:"loading player…"})}),l.jsx("iframe",{src:e,title:"Spotify player",className:"w-full",height:t.compact?152:"100%",style:{border:0,height:t.compact?152:"100%"},loading:"lazy",allow:"autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture",onLoad:()=>r("loaded"),onError:()=>r("error")},e+String(t.compact))]}):l.jsx(o,{children:"paste a Spotify track / album / playlist URL"})}const h=p({...i,component:m});export{h as spotifyEmbedFrame};
1
+ import{r as s,j as l}from"./react-qoZPGuNy.js";import{f as p,c1 as i}from"./index-BHlJHScr.js";import{F as o}from"./ui-Bq3RQsdJ.js";i.schema;const c=["track","album","playlist","artist","episode","show"];function d(t){let a;try{a=new URL(t.trim())}catch{return null}if(a.hostname.replace(/^www\./,"")!=="open.spotify.com")return null;const r=a.pathname.split("/").filter(Boolean),e=r.findIndex(n=>c.includes(n));return e===-1||!r[e+1]?null:`https://open.spotify.com/embed/${r[e]}/${r[e+1]}`}function m({config:t}){const[a,r]=s.useState("loading"),e=s.useMemo(()=>d(t.url),[t.url]);return e?a==="error"?l.jsx(o,{children:"player unavailable"}):l.jsxs("div",{className:"relative h-full w-full overflow-hidden rounded-md",children:[a==="loading"&&l.jsx("div",{className:"absolute inset-0 z-10",children:l.jsx(o,{loading:!0,children:"loading player…"})}),l.jsx("iframe",{src:e,title:"Spotify player",className:"w-full",height:t.compact?152:"100%",style:{border:0,height:t.compact?152:"100%"},loading:"lazy",allow:"autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture",onLoad:()=>r("loaded"),onError:()=>r("error")},e+String(t.compact))]}):l.jsx(o,{children:"paste a Spotify track / album / playlist URL"})}const h=p({...i,component:m});export{h as spotifyEmbedFrame};
@@ -1 +1 @@
1
- import{r as m,j as s}from"./react-qoZPGuNy.js";import{f as l}from"./format-DxkEZcwQ.js";import{f as c,bQ as r,bx as u}from"./index-CiYWppnQ.js";import{T as p,a as d}from"./treemap-leaf-QG-L-SIG.js";import{F as n}from"./ui-Bq3RQsdJ.js";import"./utils-DxneYyA_.js";import"./d3-ibrLIlQc.js";r.schema;function f({width:o,height:e,data:a}){const t=l(a.usd);return s.jsx(d,{width:o,height:e,label:a.id,secondary:t,title:`${a.id} · ${t} stablecoins`})}function b({config:o}){const{supply:e,isLoading:a}=u(),t=m.useMemo(()=>((e==null?void 0:e.topChains)??[]).slice(0,o.limit).map(i=>({id:i.name,value:i.usd,usd:i.usd})),[e,o.limit]);return a?s.jsx(n,{loading:!0,children:"loading stablecoin chains…"}):t.length===0?s.jsx(n,{children:"no stablecoin data yet"}):s.jsx(p,{data:t,LeafComponent:f,getColorValue:()=>0})}const S=c({...r,component:b});export{S as stablecoinChainsFrame};
1
+ import{r as m,j as s}from"./react-qoZPGuNy.js";import{f as l}from"./format-DxkEZcwQ.js";import{f as c,bQ as r,bx as u}from"./index-BHlJHScr.js";import{T as p,a as d}from"./treemap-leaf-QG-L-SIG.js";import{F as n}from"./ui-Bq3RQsdJ.js";import"./utils-DxneYyA_.js";import"./d3-ibrLIlQc.js";r.schema;function f({width:o,height:e,data:a}){const t=l(a.usd);return s.jsx(d,{width:o,height:e,label:a.id,secondary:t,title:`${a.id} · ${t} stablecoins`})}function b({config:o}){const{supply:e,isLoading:a}=u(),t=m.useMemo(()=>((e==null?void 0:e.topChains)??[]).slice(0,o.limit).map(i=>({id:i.name,value:i.usd,usd:i.usd})),[e,o.limit]);return a?s.jsx(n,{loading:!0,children:"loading stablecoin chains…"}):t.length===0?s.jsx(n,{children:"no stablecoin data yet"}):s.jsx(p,{data:t,LeafComponent:f,getColorValue:()=>0})}const S=c({...r,component:b});export{S as stablecoinChainsFrame};
@@ -1 +1 @@
1
- import{j as a}from"./react-qoZPGuNy.js";import{M as s,Z as p}from"./cycle-shared-XoGVsOjC.js";import{c,a as l,f as m}from"./format-DxkEZcwQ.js";import{f as u,bw as d,bx as f}from"./index-CiYWppnQ.js";import{F as e}from"./ui-Bq3RQsdJ.js";import"./indicators-Cw7CVPn4.js";import"./mini-line-chart-DyG55cVW.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";function h(){const{supply:o,isLoading:i}=f();if(i)return a.jsx(e,{loading:!0,children:"loading stablecoin supply…"});if(!o)return a.jsx(e,{children:"no stablecoin data yet"});const t=c(o.changePct7d),n=o.topChains.slice(0,3).map(r=>r.name).join(" · ");return a.jsx(s,{caption:"Stablecoin Supply",headline:m(o.totalUsd),headlineColor:p,zone:{label:o.changePct7d>=0?"Expanding":"Contracting",color:t},sub:`7d ${l(o.changePct7d)}${n?` · ${n}`:""}`,sparkline:o.history,sparkColor:t})}const P=u({...d,component:h});export{P as stablecoinSupplyFrame};
1
+ import{j as a}from"./react-qoZPGuNy.js";import{M as s,Z as p}from"./cycle-shared-XoGVsOjC.js";import{c,a as l,f as m}from"./format-DxkEZcwQ.js";import{f as u,bw as d,bx as f}from"./index-BHlJHScr.js";import{F as e}from"./ui-Bq3RQsdJ.js";import"./indicators-Cw7CVPn4.js";import"./mini-line-chart-DyG55cVW.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";function h(){const{supply:o,isLoading:i}=f();if(i)return a.jsx(e,{loading:!0,children:"loading stablecoin supply…"});if(!o)return a.jsx(e,{children:"no stablecoin data yet"});const t=c(o.changePct7d),n=o.topChains.slice(0,3).map(r=>r.name).join(" · ");return a.jsx(s,{caption:"Stablecoin Supply",headline:m(o.totalUsd),headlineColor:p,zone:{label:o.changePct7d>=0?"Expanding":"Contracting",color:t},sub:`7d ${l(o.changePct7d)}${n?` · ${n}`:""}`,sparkline:o.history,sparkColor:t})}const P=u({...d,component:h});export{P as stablecoinSupplyFrame};
@@ -1 +1 @@
1
- import{r as l,j as s}from"./react-qoZPGuNy.js";import{i as h}from"./content-shared-BZ1XzrJx.js";import{f as y,aW as f,a8 as S}from"./index-CiYWppnQ.js";f.schema;const p="var(--color-highlight)",x="0 0 18px hsl(var(--zf-accent-hue, 242) 92% 70% / 0.45)",i=t=>String(t).padStart(2,"0");function g(t){const e=Math.floor(Math.max(0,t)/1e3),c=Math.floor(e/3600),n=Math.floor(e%3600/60),o=e%60;return c>0?`${c}:${i(n)}:${i(o)}`:`${i(n)}:${i(o)}`}function k({config:t}){const e=S(),[c,n]=l.useState({startedAt:t.startedAt,accumulatedMs:t.accumulatedMs}),o=e?t.startedAt:c.startedAt,w=e?t.accumulatedMs:c.accumulatedMs,a=o!==0,d=l.useCallback(r=>{e?e(r):n(m=>({...m,...r}))},[e]),[,b]=l.useState(0);l.useEffect(()=>{if(!a)return;const r=window.setInterval(()=>b(m=>m+1),250);return()=>window.clearInterval(r)},[a]);const u=w+(a?Date.now()-o:0),v=()=>d({startedAt:Date.now()}),M=()=>d({startedAt:0,accumulatedMs:u}),j=()=>d({startedAt:0,accumulatedMs:0});return s.jsxs("div",{className:"flex h-full w-full flex-col items-center justify-center gap-2 text-center",children:[t.label&&s.jsxs("div",{className:"caption text-soft inline-flex items-center gap-1.5 uppercase tracking-[0.18em]",children:[s.jsx("span",{"aria-hidden":!0,className:"inline-block h-1 w-1 rounded-full",style:{background:p,boxShadow:a?x:void 0}}),t.label]}),s.jsx("div",{className:"metric-lg text-strong leading-none",style:a?{color:p,textShadow:x}:void 0,children:g(u)}),s.jsxs("div",{className:"flex items-center justify-center gap-2",children:[s.jsx("button",{type:"button",onClick:a?M:v,className:`caption text-normal px-3 py-1 uppercase tracking-[0.12em] ${h}`,style:a?void 0:{color:p},children:a?"Pause":"Start"}),s.jsx("button",{type:"button",onClick:j,disabled:!a&&u===0,className:`caption text-soft px-3 py-1 uppercase tracking-[0.12em] transition-opacity disabled:opacity-40 ${h}`,children:"Reset"})]})]})}const E=y({...f,component:k});export{E as stopwatchFrame};
1
+ import{r as l,j as s}from"./react-qoZPGuNy.js";import{i as h}from"./content-shared-BZ1XzrJx.js";import{f as y,aW as f,a8 as S}from"./index-BHlJHScr.js";f.schema;const p="var(--color-highlight)",x="0 0 18px hsl(var(--zf-accent-hue, 242) 92% 70% / 0.45)",i=t=>String(t).padStart(2,"0");function g(t){const e=Math.floor(Math.max(0,t)/1e3),c=Math.floor(e/3600),n=Math.floor(e%3600/60),o=e%60;return c>0?`${c}:${i(n)}:${i(o)}`:`${i(n)}:${i(o)}`}function k({config:t}){const e=S(),[c,n]=l.useState({startedAt:t.startedAt,accumulatedMs:t.accumulatedMs}),o=e?t.startedAt:c.startedAt,w=e?t.accumulatedMs:c.accumulatedMs,a=o!==0,d=l.useCallback(r=>{e?e(r):n(m=>({...m,...r}))},[e]),[,b]=l.useState(0);l.useEffect(()=>{if(!a)return;const r=window.setInterval(()=>b(m=>m+1),250);return()=>window.clearInterval(r)},[a]);const u=w+(a?Date.now()-o:0),v=()=>d({startedAt:Date.now()}),M=()=>d({startedAt:0,accumulatedMs:u}),j=()=>d({startedAt:0,accumulatedMs:0});return s.jsxs("div",{className:"flex h-full w-full flex-col items-center justify-center gap-2 text-center",children:[t.label&&s.jsxs("div",{className:"caption text-soft inline-flex items-center gap-1.5 uppercase tracking-[0.18em]",children:[s.jsx("span",{"aria-hidden":!0,className:"inline-block h-1 w-1 rounded-full",style:{background:p,boxShadow:a?x:void 0}}),t.label]}),s.jsx("div",{className:"metric-lg text-strong leading-none",style:a?{color:p,textShadow:x}:void 0,children:g(u)}),s.jsxs("div",{className:"flex items-center justify-center gap-2",children:[s.jsx("button",{type:"button",onClick:a?M:v,className:`caption text-normal px-3 py-1 uppercase tracking-[0.12em] ${h}`,style:a?void 0:{color:p},children:a?"Pause":"Start"}),s.jsx("button",{type:"button",onClick:j,disabled:!a&&u===0,className:`caption text-soft px-3 py-1 uppercase tracking-[0.12em] transition-opacity disabled:opacity-40 ${h}`,children:"Reset"})]})]})}const E=y({...f,component:k});export{E as stopwatchFrame};
@@ -1 +1 @@
1
- import{r as d,j as s}from"./react-qoZPGuNy.js";import{f as g,ar as m,aj as h,h as l}from"./index-CiYWppnQ.js";import{M as i}from"./mover-row-9TS6-Vx5.js";import{F as n}from"./ui-Bq3RQsdJ.js";import"./format-DxkEZcwQ.js";m.schema;const f=["xyz:*"];function u({config:t}){const{stats:c,isLoading:p}=h(f,6e4),{gainers:o,losers:x}=d.useMemo(()=>{const e=Object.entries(c).map(([a,r])=>({symbol:a,...r})).filter(a=>a.symbol.includes(":")&&a.markPx>0&&a.prevDayPx>0).sort((a,r)=>r.changePct-a.changePct);return{gainers:e.slice(0,t.count),losers:e.slice(-t.count).reverse()}},[c,t.count]);return p?s.jsx(n,{loading:!0,children:"loading movers…"}):o.length===0?s.jsx(n,{children:"no mover data yet"}):s.jsxs("div",{className:"grid h-full grid-cols-2 gap-x-4 overflow-hidden",children:[s.jsxs("div",{className:"flex flex-col gap-1.5",children:[s.jsx("div",{className:"caption text-soft uppercase tracking-wide",children:"gainers"}),o.map(e=>s.jsx(i,{symbol:e.symbol,label:l(e.symbol),price:e.markPx,changePct:e.changePct},e.symbol))]}),s.jsxs("div",{className:"flex flex-col gap-1.5",children:[s.jsx("div",{className:"caption text-soft uppercase tracking-wide",children:"losers"}),x.map(e=>s.jsx(i,{symbol:e.symbol,label:l(e.symbol),price:e.markPx,changePct:e.changePct},e.symbol))]})]})}const M=g({...m,component:u});export{M as topMoversFrame};
1
+ import{r as d,j as s}from"./react-qoZPGuNy.js";import{f as g,ar as m,aj as h,h as l}from"./index-BHlJHScr.js";import{M as i}from"./mover-row-Bz-YpFL3.js";import{F as n}from"./ui-Bq3RQsdJ.js";import"./format-DxkEZcwQ.js";m.schema;const f=["xyz:*"];function u({config:t}){const{stats:c,isLoading:p}=h(f,6e4),{gainers:o,losers:x}=d.useMemo(()=>{const e=Object.entries(c).map(([a,r])=>({symbol:a,...r})).filter(a=>a.symbol.includes(":")&&a.markPx>0&&a.prevDayPx>0).sort((a,r)=>r.changePct-a.changePct);return{gainers:e.slice(0,t.count),losers:e.slice(-t.count).reverse()}},[c,t.count]);return p?s.jsx(n,{loading:!0,children:"loading movers…"}):o.length===0?s.jsx(n,{children:"no mover data yet"}):s.jsxs("div",{className:"grid h-full grid-cols-2 gap-x-4 overflow-hidden",children:[s.jsxs("div",{className:"flex flex-col gap-1.5",children:[s.jsx("div",{className:"caption text-soft uppercase tracking-wide",children:"gainers"}),o.map(e=>s.jsx(i,{symbol:e.symbol,label:l(e.symbol),price:e.markPx,changePct:e.changePct},e.symbol))]}),s.jsxs("div",{className:"flex flex-col gap-1.5",children:[s.jsx("div",{className:"caption text-soft uppercase tracking-wide",children:"losers"}),x.map(e=>s.jsx(i,{symbol:e.symbol,label:l(e.symbol),price:e.markPx,changePct:e.changePct},e.symbol))]})]})}const M=g({...m,component:u});export{M as topMoversFrame};
@@ -1 +1 @@
1
- import{r as m,j as r}from"./react-qoZPGuNy.js";import{b as u}from"./format-DxkEZcwQ.js";import{f as d,da as s,X as l}from"./index-CiYWppnQ.js";import{F as n}from"./ui-Bq3RQsdJ.js";import{S as f}from"./scatter-chart-B28DJ7P-.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";s.schema;function x(e){return`${e.toFixed(2)}×`}function p({config:e}){const{auctions:o,isLoading:i}=l(e.count),a=m.useMemo(()=>o.filter(t=>t.rate!==null&&t.bidToCover!==null).slice(0,e.count).map((t,c)=>({id:`${t.auctionDate}-${t.securityType}-${c}`,label:t.securityTerm||t.securityType,x:t.rate,y:t.bidToCover})),[o,e.count]);return i?r.jsx(n,{loading:!0,children:"loading auction demand…"}):a.length===0?r.jsx(n,{children:"no auction-demand data yet"}):r.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[r.jsx(f,{data:a,height:210,formatX:u,formatY:x,maxLabels:a.length}),r.jsxs("div",{className:"caption text-soft text-center",children:["awarded rate (x) vs bid-to-cover (y) · last ",a.length," auctions"]})]})}const S=d({...s,component:p});export{S as treasuryAuctionDemandScatterFrame};
1
+ import{r as m,j as r}from"./react-qoZPGuNy.js";import{b as u}from"./format-DxkEZcwQ.js";import{f as d,da as s,X as l}from"./index-BHlJHScr.js";import{F as n}from"./ui-Bq3RQsdJ.js";import{S as f}from"./scatter-chart-B78EA7lD.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";s.schema;function x(e){return`${e.toFixed(2)}×`}function p({config:e}){const{auctions:o,isLoading:i}=l(e.count),a=m.useMemo(()=>o.filter(t=>t.rate!==null&&t.bidToCover!==null).slice(0,e.count).map((t,c)=>({id:`${t.auctionDate}-${t.securityType}-${c}`,label:t.securityTerm||t.securityType,x:t.rate,y:t.bidToCover})),[o,e.count]);return i?r.jsx(n,{loading:!0,children:"loading auction demand…"}):a.length===0?r.jsx(n,{children:"no auction-demand data yet"}):r.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[r.jsx(f,{data:a,height:210,formatX:u,formatY:x,maxLabels:a.length}),r.jsxs("div",{className:"caption text-soft text-center",children:["awarded rate (x) vs bid-to-cover (y) · last ",a.length," auctions"]})]})}const S=d({...s,component:p});export{S as treasuryAuctionDemandScatterFrame};
@@ -1 +1 @@
1
- import{r as m,j as e}from"./react-qoZPGuNy.js";import{f}from"./format-DxkEZcwQ.js";import{f as d,db as l,X as p}from"./index-CiYWppnQ.js";import{F as o}from"./ui-Bq3RQsdJ.js";import{B as x}from"./bar-chart-DmyKFv_O.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";l.schema;const c="rgba(255,255,255,0.32)",i="hsl(var(--zf-accent-hue, 242) 85% 72%)";function h(t){const a=new Date(`${t}T00:00:00Z`);return`${a.getUTCMonth()+1}/${a.getUTCDate()}`}function g({config:t}){const{auctions:a,isLoading:u}=p(t.count),r=m.useMemo(()=>[...a].filter(s=>s.offeringAmount!==null&&s.totalAccepted!==null).slice(0,t.count).reverse().flatMap(s=>{const n=h(s.auctionDate);return[{label:n,value:s.offeringAmount,color:c},{label:n,value:s.totalAccepted,color:i}]}),[a,t.count]);return u?e.jsx(o,{loading:!0,children:"loading auction sizes…"}):r.length===0?e.jsx(o,{children:"no auction-size data yet"}):e.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[e.jsx(x,{data:r,height:200,formatValue:f,showValues:!1,maxTickLabels:Math.min(t.count,8)}),e.jsxs("div",{className:"flex items-center justify-center gap-3",children:[e.jsxs("span",{className:"caption text-soft flex items-center gap-1",children:[e.jsx("span",{className:"h-1.5 w-1.5 shrink-0 rounded-full",style:{background:c}}),"offering"]}),e.jsxs("span",{className:"caption text-soft flex items-center gap-1",children:[e.jsx("span",{className:"h-1.5 w-1.5 shrink-0 rounded-full",style:{background:i}}),"accepted"]})]})]})}const z=d({...l,component:g});export{z as treasuryAuctionSizeBarsFrame};
1
+ import{r as m,j as e}from"./react-qoZPGuNy.js";import{f}from"./format-DxkEZcwQ.js";import{f as d,db as l,X as p}from"./index-BHlJHScr.js";import{F as o}from"./ui-Bq3RQsdJ.js";import{B as x}from"./bar-chart-DCMbxUJx.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";l.schema;const c="rgba(255,255,255,0.32)",i="hsl(var(--zf-accent-hue, 242) 85% 72%)";function h(t){const a=new Date(`${t}T00:00:00Z`);return`${a.getUTCMonth()+1}/${a.getUTCDate()}`}function g({config:t}){const{auctions:a,isLoading:u}=p(t.count),r=m.useMemo(()=>[...a].filter(s=>s.offeringAmount!==null&&s.totalAccepted!==null).slice(0,t.count).reverse().flatMap(s=>{const n=h(s.auctionDate);return[{label:n,value:s.offeringAmount,color:c},{label:n,value:s.totalAccepted,color:i}]}),[a,t.count]);return u?e.jsx(o,{loading:!0,children:"loading auction sizes…"}):r.length===0?e.jsx(o,{children:"no auction-size data yet"}):e.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[e.jsx(x,{data:r,height:200,formatValue:f,showValues:!1,maxTickLabels:Math.min(t.count,8)}),e.jsxs("div",{className:"flex items-center justify-center gap-3",children:[e.jsxs("span",{className:"caption text-soft flex items-center gap-1",children:[e.jsx("span",{className:"h-1.5 w-1.5 shrink-0 rounded-full",style:{background:c}}),"offering"]}),e.jsxs("span",{className:"caption text-soft flex items-center gap-1",children:[e.jsx("span",{className:"h-1.5 w-1.5 shrink-0 rounded-full",style:{background:i}}),"accepted"]})]})]})}const z=d({...l,component:g});export{z as treasuryAuctionSizeBarsFrame};
@@ -1 +1 @@
1
- import{j as s}from"./react-qoZPGuNy.js";import{b as c}from"./format-DxkEZcwQ.js";import{M as m}from"./metric-row-BVVhjsjK.js";import{f as u,W as a,X as d}from"./index-CiYWppnQ.js";import{F as i,s as x}from"./ui-Bq3RQsdJ.js";a.schema;function f({auction:e}){const t=[e.securityTerm,e.securityType].filter(Boolean).join(" ");return s.jsx(m,{label:t||e.securityType,meta:e.auctionDate+(e.bidToCover!==null?` · ${e.bidToCover.toFixed(2)}× bid-to-cover`:""),value:e.rate!==null?c(e.rate):"—"})}function p({config:e}){const{auctions:t,isLoading:o}=d(e.count);if(o)return s.jsx(i,{loading:!0,children:"loading auctions…"});if(!t.length)return s.jsx(i,{children:"no auction data yet"});const n=t.slice(0,e.count);return s.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-3",children:[s.jsxs("div",{className:"flex items-baseline justify-between gap-3",children:[s.jsxs("div",{children:[s.jsx("div",{className:"caption text-soft uppercase",children:"treasury auctions"}),s.jsx("div",{className:"body-sm text-normal",children:"high yield · bid-to-cover"})]}),s.jsx("div",{className:"caption text-soft text-right",children:"results"})]}),s.jsx("div",{className:x,children:n.map((r,l)=>s.jsx(f,{auction:r},`${r.auctionDate}-${r.securityType}-${r.securityTerm}-${l}`))})]})}const T=u({...a,component:p});export{T as treasuryAuctionsFrame};
1
+ import{j as s}from"./react-qoZPGuNy.js";import{b as c}from"./format-DxkEZcwQ.js";import{M as m}from"./metric-row-BVVhjsjK.js";import{f as u,W as a,X as d}from"./index-BHlJHScr.js";import{F as i,s as x}from"./ui-Bq3RQsdJ.js";a.schema;function f({auction:e}){const t=[e.securityTerm,e.securityType].filter(Boolean).join(" ");return s.jsx(m,{label:t||e.securityType,meta:e.auctionDate+(e.bidToCover!==null?` · ${e.bidToCover.toFixed(2)}× bid-to-cover`:""),value:e.rate!==null?c(e.rate):"—"})}function p({config:e}){const{auctions:t,isLoading:o}=d(e.count);if(o)return s.jsx(i,{loading:!0,children:"loading auctions…"});if(!t.length)return s.jsx(i,{children:"no auction data yet"});const n=t.slice(0,e.count);return s.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-3",children:[s.jsxs("div",{className:"flex items-baseline justify-between gap-3",children:[s.jsxs("div",{children:[s.jsx("div",{className:"caption text-soft uppercase",children:"treasury auctions"}),s.jsx("div",{className:"body-sm text-normal",children:"high yield · bid-to-cover"})]}),s.jsx("div",{className:"caption text-soft text-right",children:"results"})]}),s.jsx("div",{className:x,children:n.map((r,l)=>s.jsx(f,{auction:r},`${r.auctionDate}-${r.securityType}-${r.securityTerm}-${l}`))})]})}const T=u({...a,component:p});export{T as treasuryAuctionsFrame};
@@ -1 +1 @@
1
- import{r as l,j as r}from"./react-qoZPGuNy.js";import{b as u}from"./format-DxkEZcwQ.js";import{f as c,d9 as i,am as f}from"./index-CiYWppnQ.js";import{F as o}from"./ui-Bq3RQsdJ.js";import{B as h}from"./bar-chart-DmyKFv_O.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";i.schema;function p({config:e}){const{rates:s,isLoading:m}=f(),t=l.useMemo(()=>[...s].sort((a,n)=>n.rate-a.rate).slice(0,e.limit).map(a=>({label:a.security,value:a.rate})),[s,e.limit]);return m?r.jsx(o,{loading:!0,children:"loading average rates…"}):t.length===0?r.jsx(o,{children:"no average-rate data yet"}):r.jsx("div",{className:"flex h-full flex-col justify-center text-normal",children:r.jsx(h,{data:t,orientation:"horizontal",height:Math.max(t.length*24,96),formatValue:u})})}const R=c({...i,component:p});export{R as treasuryAvgRateBarsFrame};
1
+ import{r as l,j as r}from"./react-qoZPGuNy.js";import{b as u}from"./format-DxkEZcwQ.js";import{f as c,d9 as i,am as f}from"./index-BHlJHScr.js";import{F as o}from"./ui-Bq3RQsdJ.js";import{B as h}from"./bar-chart-DCMbxUJx.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";i.schema;function p({config:e}){const{rates:s,isLoading:m}=f(),t=l.useMemo(()=>[...s].sort((a,n)=>n.rate-a.rate).slice(0,e.limit).map(a=>({label:a.security,value:a.rate})),[s,e.limit]);return m?r.jsx(o,{loading:!0,children:"loading average rates…"}):t.length===0?r.jsx(o,{children:"no average-rate data yet"}):r.jsx("div",{className:"flex h-full flex-col justify-center text-normal",children:r.jsx(h,{data:t,orientation:"horizontal",height:Math.max(t.length*24,96),formatValue:u})})}const R=c({...i,component:p});export{R as treasuryAvgRateBarsFrame};
@@ -1 +1 @@
1
- import{r as d,j as e}from"./react-qoZPGuNy.js";import{f as s}from"./format-DxkEZcwQ.js";import{f,df as l,V as p}from"./index-CiYWppnQ.js";import{F as n}from"./ui-Bq3RQsdJ.js";import{C as m}from"./chart-utils-DGogNvJT.js";import{S as u}from"./index-DuNO-RcB.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";l.schema;function x(r){return`${r.getMonth()+1}/${r.getDate()}`}function h({series:r}){return e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-x-3 gap-y-1",children:r.map(t=>e.jsxs("span",{className:"caption text-soft flex items-center gap-1",children:[e.jsx("span",{className:"h-1.5 w-1.5 shrink-0 rounded-full",style:{background:t.color}}),t.name]},t.id))})}function g({config:r}){const{debt:t,isLoading:c}=p(r.trendDays),o=d.useMemo(()=>{const i=((t==null?void 0:t.trend)??[]).filter(a=>a.heldByPublic!==void 0&&a.intragovernmental!==void 0);return i.length<2?[]:[{id:"public",name:"Held by public",color:m[0],data:i.map(a=>({date:new Date(a.time),value:a.heldByPublic}))},{id:"intragov",name:"Intragovernmental",color:m[1],data:i.map(a=>({date:new Date(a.time),value:a.intragovernmental}))}]},[t]);return c?e.jsx(n,{loading:!0,children:"loading debt composition…"}):o.length===0?e.jsx(n,{children:"no debt-composition data yet"}):e.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-2",children:[e.jsxs("div",{className:"flex items-baseline justify-between gap-3",children:[e.jsx("div",{className:"caption text-soft uppercase",children:"debt composition"}),e.jsx("div",{className:"caption text-soft text-right",children:t?`as of ${t.date}`:""})]}),e.jsx(u,{series:o,height:210,formatXAxis:x,formatYAxis:s,formatValue:s}),e.jsx(h,{series:o})]})}const S=f({...l,component:g});export{S as treasuryDebtCompositionAreaFrame};
1
+ import{r as d,j as e}from"./react-qoZPGuNy.js";import{f as s}from"./format-DxkEZcwQ.js";import{f,df as l,V as p}from"./index-BHlJHScr.js";import{F as n}from"./ui-Bq3RQsdJ.js";import{C as m}from"./chart-utils-DGogNvJT.js";import{S as u}from"./index-DuNO-RcB.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";l.schema;function x(r){return`${r.getMonth()+1}/${r.getDate()}`}function h({series:r}){return e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-x-3 gap-y-1",children:r.map(t=>e.jsxs("span",{className:"caption text-soft flex items-center gap-1",children:[e.jsx("span",{className:"h-1.5 w-1.5 shrink-0 rounded-full",style:{background:t.color}}),t.name]},t.id))})}function g({config:r}){const{debt:t,isLoading:c}=p(r.trendDays),o=d.useMemo(()=>{const i=((t==null?void 0:t.trend)??[]).filter(a=>a.heldByPublic!==void 0&&a.intragovernmental!==void 0);return i.length<2?[]:[{id:"public",name:"Held by public",color:m[0],data:i.map(a=>({date:new Date(a.time),value:a.heldByPublic}))},{id:"intragov",name:"Intragovernmental",color:m[1],data:i.map(a=>({date:new Date(a.time),value:a.intragovernmental}))}]},[t]);return c?e.jsx(n,{loading:!0,children:"loading debt composition…"}):o.length===0?e.jsx(n,{children:"no debt-composition data yet"}):e.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-2",children:[e.jsxs("div",{className:"flex items-baseline justify-between gap-3",children:[e.jsx("div",{className:"caption text-soft uppercase",children:"debt composition"}),e.jsx("div",{className:"caption text-soft text-right",children:t?`as of ${t.date}`:""})]}),e.jsx(u,{series:o,height:210,formatXAxis:x,formatYAxis:s,formatValue:s}),e.jsx(h,{series:o})]})}const S=f({...l,component:g});export{S as treasuryDebtCompositionAreaFrame};
@@ -1 +1 @@
1
- import{r as l,j as e}from"./react-qoZPGuNy.js";import{a as c,D as h,U as g}from"./format-DxkEZcwQ.js";import{f as d,cH as o,bM as f}from"./index-CiYWppnQ.js";import{F as i}from"./ui-Bq3RQsdJ.js";import{B as u}from"./bar-chart-DmyKFv_O.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";o.schema;function p({config:a}){const{coins:n,isLoading:s}=f(),r=l.useMemo(()=>n.filter(t=>t.changePct24h!==null&&Number.isFinite(t.changePct24h)).slice(0,a.limit).sort((t,m)=>m.changePct24h-t.changePct24h).map(t=>({label:t.symbol,value:t.changePct24h})),[n,a.limit]);return s?e.jsx(i,{loading:!0,children:"loading trending…"}):r.length===0?e.jsx(i,{children:"no trending data yet"}):e.jsx("div",{className:"flex h-full flex-col justify-center text-normal",children:e.jsx(u,{data:r,orientation:"horizontal",color:g,negativeColor:h,height:Math.max(r.length*24,96),formatValue:c})})}const b=d({...o,component:p});export{b as trendingBarsFrame};
1
+ import{r as l,j as e}from"./react-qoZPGuNy.js";import{a as c,D as h,U as g}from"./format-DxkEZcwQ.js";import{f as d,cH as o,bM as f}from"./index-BHlJHScr.js";import{F as i}from"./ui-Bq3RQsdJ.js";import{B as u}from"./bar-chart-DCMbxUJx.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";o.schema;function p({config:a}){const{coins:n,isLoading:s}=f(),r=l.useMemo(()=>n.filter(t=>t.changePct24h!==null&&Number.isFinite(t.changePct24h)).slice(0,a.limit).sort((t,m)=>m.changePct24h-t.changePct24h).map(t=>({label:t.symbol,value:t.changePct24h})),[n,a.limit]);return s?e.jsx(i,{loading:!0,children:"loading trending…"}):r.length===0?e.jsx(i,{children:"no trending data yet"}):e.jsx("div",{className:"flex h-full flex-col justify-center text-normal",children:e.jsx(u,{data:r,orientation:"horizontal",color:g,negativeColor:h,height:Math.max(r.length*24,96),formatValue:c})})}const b=d({...o,component:p});export{b as trendingBarsFrame};
@@ -1 +1 @@
1
- import{r as c,j as m}from"./react-qoZPGuNy.js";import{B as h}from"./bubbles-shared-DY914nhm.js";import{c as r,a as l}from"./format-DxkEZcwQ.js";import{f as g,cK as i,bM as d}from"./index-CiYWppnQ.js";import"./ui-Bq3RQsdJ.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";i.schema;function b({config:t}){const{coins:n,isLoading:s}=d(),a=c.useMemo(()=>n.filter(e=>e.changePct24h!==null&&Number.isFinite(e.changePct24h)).slice(0,t.limit).map(e=>({id:e.id,label:e.symbol,value:Math.max(Math.abs(e.changePct24h),.05),color:r(e.changePct24h),borderColor:r(e.changePct24h),changePct24h:e.changePct24h})),[n,t.limit]);return m.jsx(h,{nodes:a,isLoading:s,loadingText:"loading trending…",emptyText:"no trending data yet",caption:`area by |24h change| · top ${a.length} trending`,formatTitle:e=>{const o=e;return`${o.label} · ${l(o.changePct24h)}`}})}const M=g({...i,component:b});export{M as trendingBubblesFrame};
1
+ import{r as c,j as m}from"./react-qoZPGuNy.js";import{B as h}from"./bubbles-shared-DlmjtiIA.js";import{c as r,a as l}from"./format-DxkEZcwQ.js";import{f as g,cK as i,bM as d}from"./index-BHlJHScr.js";import"./ui-Bq3RQsdJ.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";i.schema;function b({config:t}){const{coins:n,isLoading:s}=d(),a=c.useMemo(()=>n.filter(e=>e.changePct24h!==null&&Number.isFinite(e.changePct24h)).slice(0,t.limit).map(e=>({id:e.id,label:e.symbol,value:Math.max(Math.abs(e.changePct24h),.05),color:r(e.changePct24h),borderColor:r(e.changePct24h),changePct24h:e.changePct24h})),[n,t.limit]);return m.jsx(h,{nodes:a,isLoading:s,loadingText:"loading trending…",emptyText:"no trending data yet",caption:`area by |24h change| · top ${a.length} trending`,formatTitle:e=>{const o=e;return`${o.label} · ${l(o.changePct24h)}`}})}const M=g({...i,component:b});export{M as trendingBubblesFrame};
@@ -1 +1 @@
1
- import{j as e}from"./react-qoZPGuNy.js";import{a as l,c as m,e as c}from"./format-DxkEZcwQ.js";import{M as d}from"./metric-row-BVVhjsjK.js";import{f as g,bL as s,bM as f}from"./index-CiYWppnQ.js";import{F as a,s as h}from"./ui-Bq3RQsdJ.js";s.schema;function p({config:i}){const{coins:o,isLoading:t}=f(),r=o.slice(0,i.limit);return t?e.jsx(a,{loading:!0,children:"loading trending…"}):r.length===0?e.jsx(a,{children:"no trending data yet"}):e.jsx("div",{className:`${h} flex flex-col`,children:r.map(n=>e.jsx(d,{label:n.symbol,meta:`${n.name}${n.rank?` · #${n.rank}`:""}`,value:n.changePct24h!=null?e.jsx("span",{style:{color:m(n.changePct24h)},children:l(n.changePct24h)}):n.price!=null?c(n.price):"—"},n.id))})}const b=g({...s,component:p});export{b as trendingCoinsFrame};
1
+ import{j as e}from"./react-qoZPGuNy.js";import{a as l,c as m,e as c}from"./format-DxkEZcwQ.js";import{M as d}from"./metric-row-BVVhjsjK.js";import{f as g,bL as s,bM as f}from"./index-BHlJHScr.js";import{F as a,s as h}from"./ui-Bq3RQsdJ.js";s.schema;function p({config:i}){const{coins:o,isLoading:t}=f(),r=o.slice(0,i.limit);return t?e.jsx(a,{loading:!0,children:"loading trending…"}):r.length===0?e.jsx(a,{children:"no trending data yet"}):e.jsx("div",{className:`${h} flex flex-col`,children:r.map(n=>e.jsx(d,{label:n.symbol,meta:`${n.name}${n.rank?` · #${n.rank}`:""}`,value:n.changePct24h!=null?e.jsx("span",{style:{color:m(n.changePct24h)},children:l(n.changePct24h)}):n.price!=null?c(n.price):"—"},n.id))})}const b=g({...s,component:p});export{b as trendingCoinsFrame};
@@ -1 +1 @@
1
- import{r as m,j as t}from"./react-qoZPGuNy.js";import{f as c}from"./format-DxkEZcwQ.js";import{f,cq as i,at as h}from"./index-CiYWppnQ.js";import{F as s}from"./ui-Bq3RQsdJ.js";import{B as p}from"./bar-chart-DmyKFv_O.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";i.schema;function x({config:r}){const{entries:o,isLoading:l}=h(),e=m.useMemo(()=>[...o].sort((a,n)=>n.tvl-a.tvl).slice(0,r.limit).map(a=>({label:a.name,value:a.tvl})),[o,r.limit]);return l?t.jsx(s,{loading:!0,children:"loading TVL…"}):e.length===0?t.jsx(s,{children:"no TVL data yet"}):t.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[t.jsx(p,{data:e,orientation:"horizontal",height:Math.max(e.length*26,96),formatValue:c}),t.jsx("div",{className:"caption text-soft text-center",children:"total value locked · by chain"})]})}const F=f({...i,component:x});export{F as tvlBarsFrame};
1
+ import{r as m,j as t}from"./react-qoZPGuNy.js";import{f as c}from"./format-DxkEZcwQ.js";import{f,cq as i,at as h}from"./index-BHlJHScr.js";import{F as s}from"./ui-Bq3RQsdJ.js";import{B as p}from"./bar-chart-DCMbxUJx.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";i.schema;function x({config:r}){const{entries:o,isLoading:l}=h(),e=m.useMemo(()=>[...o].sort((a,n)=>n.tvl-a.tvl).slice(0,r.limit).map(a=>({label:a.name,value:a.tvl})),[o,r.limit]);return l?t.jsx(s,{loading:!0,children:"loading TVL…"}):e.length===0?t.jsx(s,{children:"no TVL data yet"}):t.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[t.jsx(p,{data:e,orientation:"horizontal",height:Math.max(e.length*26,96),formatValue:c}),t.jsx("div",{className:"caption text-soft text-center",children:"total value locked · by chain"})]})}const F=f({...i,component:x});export{F as tvlBarsFrame};
@@ -1 +1 @@
1
- import{r as m,j as l}from"./react-qoZPGuNy.js";import{B as i}from"./bubbles-shared-DY914nhm.js";import{f as n}from"./format-DxkEZcwQ.js";import{f as p,cg as r,at as u}from"./index-CiYWppnQ.js";import"./ui-Bq3RQsdJ.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";r.schema;function b({config:a}){const{entries:e,isLoading:s}=u(),o=m.useMemo(()=>e.filter(t=>t.tvl>0).slice(0,a.topN).map(t=>({id:t.name,label:t.name,value:t.tvl})),[e,a.topN]);return l.jsx(i,{nodes:o,isLoading:s,loadingText:"loading TVL…",emptyText:"no TVL data",caption:`area by chain TVL · top ${o.length}`,formatTitle:t=>`${t.label} · ${n(t.value)} TVL`})}const L=p({...r,component:b});export{L as tvlBubblesFrame};
1
+ import{r as m,j as l}from"./react-qoZPGuNy.js";import{B as i}from"./bubbles-shared-DlmjtiIA.js";import{f as n}from"./format-DxkEZcwQ.js";import{f as p,cg as r,at as u}from"./index-BHlJHScr.js";import"./ui-Bq3RQsdJ.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";r.schema;function b({config:a}){const{entries:e,isLoading:s}=u(),o=m.useMemo(()=>e.filter(t=>t.tvl>0).slice(0,a.topN).map(t=>({id:t.name,label:t.name,value:t.tvl})),[e,a.topN]);return l.jsx(i,{nodes:o,isLoading:s,loadingText:"loading TVL…",emptyText:"no TVL data",caption:`area by chain TVL · top ${o.length}`,formatTitle:t=>`${t.label} · ${n(t.value)} TVL`})}const L=p({...r,component:b});export{L as tvlBubblesFrame};
@@ -1 +1 @@
1
- import{r as i,j as s}from"./react-qoZPGuNy.js";import{f as l}from"./format-DxkEZcwQ.js";import{f as p,as as n,at as f}from"./index-CiYWppnQ.js";import{T as u,a as c}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 d({width:r,height:o,data:e}){const t=l(e.tvl);return s.jsx(c,{width:r,height:o,label:e.id,secondary:t,title:`${e.id} · ${t}`})}function v({config:r}){const{entries:o,isLoading:e}=f(),t=i.useMemo(()=>o.slice(0,r.topN).map(a=>({id:a.name,value:a.tvl,tvl:a.tvl})),[o,r.topN]);return e?s.jsx(m,{loading:!0,children:"loading TVL…"}):t.length===0?s.jsx(m,{children:"no TVL data"}):s.jsx(u,{data:t,LeafComponent:d,getColorValue:a=>a.tvl})}const F=p({...n,component:v});export{F as tvlTreemapFrame};
1
+ import{r as i,j as s}from"./react-qoZPGuNy.js";import{f as l}from"./format-DxkEZcwQ.js";import{f as p,as as n,at as f}from"./index-BHlJHScr.js";import{T as u,a as c}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 d({width:r,height:o,data:e}){const t=l(e.tvl);return s.jsx(c,{width:r,height:o,label:e.id,secondary:t,title:`${e.id} · ${t}`})}function v({config:r}){const{entries:o,isLoading:e}=f(),t=i.useMemo(()=>o.slice(0,r.topN).map(a=>({id:a.name,value:a.tvl,tvl:a.tvl})),[o,r.topN]);return e?s.jsx(m,{loading:!0,children:"loading TVL…"}):t.length===0?s.jsx(m,{children:"no TVL data"}):s.jsx(u,{data:t,LeafComponent:d,getColorValue:a=>a.tvl})}const F=p({...n,component:v});export{F as tvlTreemapFrame};
@@ -1 +1 @@
1
- import{r as l,j as o}from"./react-qoZPGuNy.js";import{f as u,aM as s}from"./index-CiYWppnQ.js";import{F as i}from"./ui-Bq3RQsdJ.js";s.schema;function c(a){let e;try{e=new URL(a.trim())}catch{return null}const r=e.hostname.replace(/^www\./,"");if(r==="youtu.be"){const t=e.pathname.slice(1).split("/")[0];return t?`https://www.youtube.com/embed/${t}`:null}if(r==="youtube.com"||r==="m.youtube.com"){if(e.pathname==="/watch"){const n=e.searchParams.get("v");return n?`https://www.youtube.com/embed/${n}`:null}const t=e.pathname.match(/^\/(?:embed|shorts)\/([^/]+)/);return t?`https://www.youtube.com/embed/${t[1]}`:null}if(r==="vimeo.com"){const t=e.pathname.split("/").filter(Boolean)[0];return t&&/^\d+$/.test(t)?`https://player.vimeo.com/video/${t}`:null}return r==="player.vimeo.com"||e.protocol==="https:"?e.toString():null}function m({config:a}){const[e,r]=l.useState("loading"),t=l.useMemo(()=>c(a.url),[a.url]);return l.useEffect(()=>r("loading"),[t]),t?e==="error"?o.jsx(i,{children:"video unavailable"}):o.jsxs("div",{className:"relative h-full w-full overflow-hidden rounded-md",children:[e==="loading"&&o.jsx("div",{className:"absolute inset-0 z-10",children:o.jsx(i,{loading:!0,children:"loading video…"})}),o.jsx("iframe",{src:t,title:a.title,className:`h-full w-full border-0 transition-opacity duration-300 ${e==="loaded"?"opacity-100":"opacity-0"}`,allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowFullScreen:!0,onLoad:()=>r("loaded"),onError:()=>r("error")},t)]}):o.jsx(i,{children:"invalid video URL"})}const f=u({...s,component:m});export{f as videoFrame};
1
+ import{r as l,j as o}from"./react-qoZPGuNy.js";import{f as u,aM as s}from"./index-BHlJHScr.js";import{F as i}from"./ui-Bq3RQsdJ.js";s.schema;function c(a){let e;try{e=new URL(a.trim())}catch{return null}const r=e.hostname.replace(/^www\./,"");if(r==="youtu.be"){const t=e.pathname.slice(1).split("/")[0];return t?`https://www.youtube.com/embed/${t}`:null}if(r==="youtube.com"||r==="m.youtube.com"){if(e.pathname==="/watch"){const n=e.searchParams.get("v");return n?`https://www.youtube.com/embed/${n}`:null}const t=e.pathname.match(/^\/(?:embed|shorts)\/([^/]+)/);return t?`https://www.youtube.com/embed/${t[1]}`:null}if(r==="vimeo.com"){const t=e.pathname.split("/").filter(Boolean)[0];return t&&/^\d+$/.test(t)?`https://player.vimeo.com/video/${t}`:null}return r==="player.vimeo.com"||e.protocol==="https:"?e.toString():null}function m({config:a}){const[e,r]=l.useState("loading"),t=l.useMemo(()=>c(a.url),[a.url]);return l.useEffect(()=>r("loading"),[t]),t?e==="error"?o.jsx(i,{children:"video unavailable"}):o.jsxs("div",{className:"relative h-full w-full overflow-hidden rounded-md",children:[e==="loading"&&o.jsx("div",{className:"absolute inset-0 z-10",children:o.jsx(i,{loading:!0,children:"loading video…"})}),o.jsx("iframe",{src:t,title:a.title,className:`h-full w-full border-0 transition-opacity duration-300 ${e==="loaded"?"opacity-100":"opacity-0"}`,allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowFullScreen:!0,onLoad:()=>r("loaded"),onError:()=>r("error")},t)]}):o.jsx(i,{children:"invalid video URL"})}const f=u({...s,component:m});export{f as videoFrame};
@@ -1 +1 @@
1
- import{r as c,j as a}from"./react-qoZPGuNy.js";import{f as n,cB as m,aj as f,h}from"./index-CiYWppnQ.js";import{c as d,f as u,a as x}from"./format-DxkEZcwQ.js";import{F as l}from"./ui-Bq3RQsdJ.js";import{S as p}from"./scatter-chart-B28DJ7P-.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";m.schema;function g({config:o}){const{stats:s,isLoading:i}=f(),r=c.useMemo(()=>Object.entries(s).filter(([,t])=>(t.dayNtlVlm??0)>0).sort((t,e)=>(e[1].dayNtlVlm??0)-(t[1].dayNtlVlm??0)).slice(0,o.limit).map(([t,e])=>({id:t,label:h(t),x:e.changePct,y:e.dayNtlVlm,weight:e.dayNtlVlm,color:d(e.changePct)})),[s,o.limit]);return i?a.jsx(l,{loading:!0,children:"loading markets…"}):r.length===0?a.jsx(l,{children:"no volume data yet"}):a.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[a.jsx(p,{data:r,yScale:"log",height:210,zeroXLine:!0,formatX:x,formatY:u,maxLabels:10}),a.jsxs("div",{className:"caption text-soft text-center",children:["24h change (x) vs 24h notional volume (y, log) · top ",r.length]})]})}const C=n({...m,component:g});export{C as volumeMoversScatterFrame};
1
+ import{r as c,j as a}from"./react-qoZPGuNy.js";import{f as n,cB as m,aj as f,h}from"./index-BHlJHScr.js";import{c as d,f as u,a as x}from"./format-DxkEZcwQ.js";import{F as l}from"./ui-Bq3RQsdJ.js";import{S as p}from"./scatter-chart-B78EA7lD.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";m.schema;function g({config:o}){const{stats:s,isLoading:i}=f(),r=c.useMemo(()=>Object.entries(s).filter(([,t])=>(t.dayNtlVlm??0)>0).sort((t,e)=>(e[1].dayNtlVlm??0)-(t[1].dayNtlVlm??0)).slice(0,o.limit).map(([t,e])=>({id:t,label:h(t),x:e.changePct,y:e.dayNtlVlm,weight:e.dayNtlVlm,color:d(e.changePct)})),[s,o.limit]);return i?a.jsx(l,{loading:!0,children:"loading markets…"}):r.length===0?a.jsx(l,{children:"no volume data yet"}):a.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[a.jsx(p,{data:r,yScale:"log",height:210,zeroXLine:!0,formatX:x,formatY:u,maxLabels:10}),a.jsxs("div",{className:"caption text-soft text-center",children:["24h change (x) vs 24h notional volume (y, log) · top ",r.length]})]})}const C=n({...m,component:g});export{C as volumeMoversScatterFrame};
@@ -0,0 +1 @@
1
+ import{r as g,j as o}from"./react-qoZPGuNy.js";import{e as f,U as L}from"./format-DxkEZcwQ.js";import{f as E,bs as I,ac as R,h as S}from"./index-BHlJHScr.js";import{F as w}from"./ui-Bq3RQsdJ.js";I.schema;function v({label:t,value:x}){return o.jsxs("div",{className:"min-w-0 rounded-md bg-white/[0.04] px-2 py-1 text-center",children:[o.jsx("div",{className:"metric-sm text-strong truncate leading-none tabular-nums",title:x,children:x}),o.jsx("div",{className:"caption text-soft mt-0.5",children:t})]})}function U({config:t}){const x=g.useMemo(()=>Date.now()-t.lookbackDays*864e5,[t.lookbackDays]),{candles:c,isLoading:y}=R(t.symbol,t.interval,x),b=g.useMemo(()=>{if(c.length===0)return null;let s=1/0,a=-1/0;for(const e of c)s=Math.min(s,e.low),a=Math.max(a,e.high);if(!(a>s))return null;const i=t.bins,d=(a-s)/i,l=Array.from({length:i},(e,r)=>({low:s+r*d,high:s+(r+1)*d,mid:s+(r+.5)*d,volume:0}));for(const e of c){const r=(e.high+e.low+e.close)/3,D=e.volume??0;let h=Math.floor((r-s)/d);h<0&&(h=0),h>=i&&(h=i-1),l[h].volume+=D}const j=l.reduce((e,r)=>e+r.volume,0);if(j<=0)return null;let n=0;for(let e=1;e<i;e++)l[e].volume>l[n].volume&&(n=e);let m=n,u=n,p=l[n].volume;for(;p<j*.7&&(m>0||u<i-1);){const e=m>0?l[m-1].volume:-1;(u<i-1?l[u+1].volume:-1)>=e?p+=l[++u].volume:p+=l[--m].volume}return{bins:l,pocIdx:n,loI:m,hiI:u,maxVol:l[n].volume||1,poc:l[n].mid,vah:l[u].high,val:l[m].low,price:c[c.length-1].close}},[c,t.bins]);if(y)return o.jsx(w,{loading:!0,children:"loading volume profile…"});if(!b)return o.jsxs(w,{children:["no candles for ",S(t.symbol)]});const{bins:P,pocIdx:M,loI:N,hiI:k,maxVol:V,poc:A,vah:F,val:O,price:C}=b;return o.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-2",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-1.5",children:[o.jsx(v,{label:"Price",value:f(C)}),o.jsx(v,{label:"POC",value:f(A)}),o.jsx(v,{label:"VAH",value:f(F)}),o.jsx(v,{label:"VAL",value:f(O)})]}),o.jsx("div",{className:"flex min-h-0 flex-1 flex-col-reverse gap-px overflow-hidden",children:P.map((s,a)=>{const i=a>=N&&a<=k,l=a===M?L:i?"rgba(148,163,184,0.55)":"rgba(148,163,184,0.22)";return o.jsx("div",{className:"flex min-h-[3px] flex-1 items-center",title:f(s.mid),children:o.jsx("div",{className:"h-full rounded-sm",style:{width:`${Math.max(2,s.volume/V*100)}%`,background:l}})},a)})})]})}const q=E({...I,component:U});export{q as volumeProfileFrame};
@@ -1 +1 @@
1
- import{r as x,j as e}from"./react-qoZPGuNy.js";import{f as h,cA as f,aj as v,h as j}from"./index-CiYWppnQ.js";import{f as g,b as y}from"./format-DxkEZcwQ.js";import{F as u}from"./ui-Bq3RQsdJ.js";import{C as d}from"./chart-utils-DGogNvJT.js";import{P as N}from"./pie-chart-BIxKuHm-.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";f.schema;const b="rgba(255, 255, 255, 0.22)";function S({config:l}){const{stats:n,isLoading:p}=v(),o=x.useMemo(()=>{const s=Object.entries(n).map(([t,a])=>({symbol:t,vol:a.dayNtlVlm??0})).filter(t=>t.vol>0).sort((t,a)=>a.vol-t.vol),r=s.slice(0,l.limit),c=s.slice(l.limit).reduce((t,a)=>t+a.vol,0),i=r.map((t,a)=>({name:j(t.symbol),value:t.vol,color:d[a%d.length]}));return c>0&&i.push({name:"Other",value:c,color:b}),i},[n,l.limit]),m=o.reduce((s,r)=>s+r.value,0);return p?e.jsx(u,{loading:!0,children:"loading volume…"}):o.length===0?e.jsx(u,{children:"no volume data yet"}):e.jsxs("div",{className:"flex h-full w-full flex-col items-center justify-center gap-4",children:[e.jsx(N,{data:o,width:200,height:200,innerRadius:58,outerRadius:92,colors:o.map(s=>s.color),children:e.jsxs("div",{className:"flex flex-col items-center gap-0.5",children:[e.jsx("span",{className:"caption text-soft",children:"24h volume"}),e.jsx("span",{className:"metric-lg text-strong",children:g(m)})]})}),e.jsx("div",{className:"flex w-full max-w-xs flex-wrap justify-center gap-x-5 gap-y-1.5",children:o.map(s=>e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"h-2 w-2 flex-shrink-0 rounded-full",style:{background:s.color}}),e.jsx("span",{className:"body-sm text-soft",children:s.name}),e.jsx("span",{className:"body-sm text-normal font-bold tabular-nums",children:y(s.value/m*100,1)})]},s.name))})]})}const k=h({...f,component:S});export{k as volumeShareDonutFrame};
1
+ import{r as x,j as e}from"./react-qoZPGuNy.js";import{f as h,cA as f,aj as v,h as j}from"./index-BHlJHScr.js";import{f as g,b as y}from"./format-DxkEZcwQ.js";import{F as u}from"./ui-Bq3RQsdJ.js";import{C as d}from"./chart-utils-DGogNvJT.js";import{P as N}from"./pie-chart-BIxKuHm-.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";f.schema;const b="rgba(255, 255, 255, 0.22)";function S({config:l}){const{stats:n,isLoading:p}=v(),o=x.useMemo(()=>{const s=Object.entries(n).map(([t,a])=>({symbol:t,vol:a.dayNtlVlm??0})).filter(t=>t.vol>0).sort((t,a)=>a.vol-t.vol),r=s.slice(0,l.limit),c=s.slice(l.limit).reduce((t,a)=>t+a.vol,0),i=r.map((t,a)=>({name:j(t.symbol),value:t.vol,color:d[a%d.length]}));return c>0&&i.push({name:"Other",value:c,color:b}),i},[n,l.limit]),m=o.reduce((s,r)=>s+r.value,0);return p?e.jsx(u,{loading:!0,children:"loading volume…"}):o.length===0?e.jsx(u,{children:"no volume data yet"}):e.jsxs("div",{className:"flex h-full w-full flex-col items-center justify-center gap-4",children:[e.jsx(N,{data:o,width:200,height:200,innerRadius:58,outerRadius:92,colors:o.map(s=>s.color),children:e.jsxs("div",{className:"flex flex-col items-center gap-0.5",children:[e.jsx("span",{className:"caption text-soft",children:"24h volume"}),e.jsx("span",{className:"metric-lg text-strong",children:g(m)})]})}),e.jsx("div",{className:"flex w-full max-w-xs flex-wrap justify-center gap-x-5 gap-y-1.5",children:o.map(s=>e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"h-2 w-2 flex-shrink-0 rounded-full",style:{background:s.color}}),e.jsx("span",{className:"body-sm text-soft",children:s.name}),e.jsx("span",{className:"body-sm text-normal font-bold tabular-nums",children:y(s.value/m*100,1)})]},s.name))})]})}const k=h({...f,component:S});export{k as volumeShareDonutFrame};
@@ -1 +1 @@
1
- import{r as d,j as e}from"./react-qoZPGuNy.js";import{b as r}from"./format-DxkEZcwQ.js";import{f as c,cO as i,bz as p}from"./index-CiYWppnQ.js";import{F as l}from"./ui-Bq3RQsdJ.js";import{S as x}from"./scatter-chart-B28DJ7P-.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";i.schema;function f({config:a}){const{pools:o,isLoading:m}=p(),s=d.useMemo(()=>o.filter(t=>t.apyBase!==null&&t.apyReward!==null&&t.tvlUsd>0&&(!a.stablecoinOnly||t.stablecoin)).sort((t,n)=>n.tvlUsd-t.tvlUsd).slice(0,a.limit).map(t=>({id:t.pool,label:t.symbol,x:t.apyBase,y:t.apyReward,weight:t.tvlUsd})),[o,a.limit,a.stablecoinOnly]);return m?e.jsx(l,{loading:!0,children:"loading yields…"}):s.length===0?e.jsx(l,{children:"no yield data yet"}):e.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[e.jsx(x,{data:s,height:210,formatX:t=>r(t,1),formatY:t=>r(t,1),maxLabels:8}),e.jsxs("div",{className:"caption text-soft text-center",children:["base APY (x) vs reward APY (y) · bubble = TVL · top ",s.length]})]})}const g=c({...i,component:f});export{g as yieldCompositionScatterFrame};
1
+ import{r as d,j as e}from"./react-qoZPGuNy.js";import{b as r}from"./format-DxkEZcwQ.js";import{f as c,cO as i,bz as p}from"./index-BHlJHScr.js";import{F as l}from"./ui-Bq3RQsdJ.js";import{S as x}from"./scatter-chart-B78EA7lD.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";i.schema;function f({config:a}){const{pools:o,isLoading:m}=p(),s=d.useMemo(()=>o.filter(t=>t.apyBase!==null&&t.apyReward!==null&&t.tvlUsd>0&&(!a.stablecoinOnly||t.stablecoin)).sort((t,n)=>n.tvlUsd-t.tvlUsd).slice(0,a.limit).map(t=>({id:t.pool,label:t.symbol,x:t.apyBase,y:t.apyReward,weight:t.tvlUsd})),[o,a.limit,a.stablecoinOnly]);return m?e.jsx(l,{loading:!0,children:"loading yields…"}):s.length===0?e.jsx(l,{children:"no yield data yet"}):e.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[e.jsx(x,{data:s,height:210,formatX:t=>r(t,1),formatY:t=>r(t,1),maxLabels:8}),e.jsxs("div",{className:"caption text-soft text-center",children:["base APY (x) vs reward APY (y) · bubble = TVL · top ",s.length]})]})}const g=c({...i,component:f});export{g as yieldCompositionScatterFrame};
@@ -1 +1 @@
1
- import{j as e}from"./react-qoZPGuNy.js";import{c as x,b as v}from"./format-DxkEZcwQ.js";import{f as j,au as p,av as g}from"./index-CiYWppnQ.js";import{F as u}from"./ui-Bq3RQsdJ.js";p.schema;const h=(n=1)=>`hsl(var(--zf-accent-hue, 242) 85% 72% / ${n})`;function y({rates:n}){const a=Math.min(...n),m=Math.max(...n),i=Math.max(.01,m-a),o=n.length,c=r=>100*r/(o-1),t=r=>4+32*(1-(r-a)/i),d=n.map((r,s)=>`${s?"L":"M"}${c(s).toFixed(2)},${t(r).toFixed(2)}`).join(" ");return e.jsxs("svg",{viewBox:"0 0 100 40",preserveAspectRatio:"none",className:"h-20 w-full","aria-hidden":!0,children:[e.jsx("path",{d:`${d} L100,40 L0,40 Z`,fill:h(.14)}),e.jsx("path",{d,fill:"none",stroke:h(.9),strokeWidth:1.5,vectorEffect:"non-scaling-stroke",strokeLinejoin:"round"})]})}function N({config:n}){const{curve:a,isLoading:m}=g();if(m)return e.jsx(u,{loading:!0,children:"loading yield curve…"});if(!a||a.points.length<2)return e.jsx(u,{children:"no yield-curve data yet"});const i=s=>{var l;return(l=a.points.find(f=>f.label===s))==null?void 0:l.rate},o=i("2Y"),c=i("10Y"),t=o!=null&&c!=null?Math.round((c-o)*100):null,d=t!=null&&t<0,r=n.maturities;return e.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-2",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("div",{className:"caption text-soft uppercase",children:"Treasury yield curve"}),e.jsxs("div",{className:"body-sm text-normal",children:["U.S. Treasury · ",a.date]})]}),e.jsx("div",{className:"caption text-soft text-right",children:"daily"})]}),t!=null&&e.jsxs("div",{className:"flex items-baseline gap-2",children:[e.jsxs("span",{className:"metric-md leading-none",style:{color:x(t),textShadow:`0 0 24px ${x(t)}44`},children:[t>=0?"+":"",t," bps"]}),e.jsxs("span",{className:"caption text-soft",children:["2s10s · ",d?"inverted":"normal"]})]}),e.jsx(y,{rates:a.points.map(s=>s.rate)}),e.jsx("div",{className:"grid gap-1",style:{gridTemplateColumns:`repeat(${r.length}, minmax(0, 1fr))`},children:r.map(s=>{const l=i(s);return e.jsxs("div",{className:"rounded bg-white/[0.04] px-1.5 py-1 text-center",children:[e.jsx("div",{className:"caption text-soft",children:s}),e.jsx("div",{className:"body-sm text-strong font-bold tabular-nums",children:l!=null?v(l):"—"})]},s)})})]})}const M=j({...p,component:N});export{M as yieldCurveFrame};
1
+ import{j as e}from"./react-qoZPGuNy.js";import{c as x,b as v}from"./format-DxkEZcwQ.js";import{f as j,au as p,av as g}from"./index-BHlJHScr.js";import{F as u}from"./ui-Bq3RQsdJ.js";p.schema;const h=(n=1)=>`hsl(var(--zf-accent-hue, 242) 85% 72% / ${n})`;function y({rates:n}){const a=Math.min(...n),m=Math.max(...n),i=Math.max(.01,m-a),o=n.length,c=r=>100*r/(o-1),t=r=>4+32*(1-(r-a)/i),d=n.map((r,s)=>`${s?"L":"M"}${c(s).toFixed(2)},${t(r).toFixed(2)}`).join(" ");return e.jsxs("svg",{viewBox:"0 0 100 40",preserveAspectRatio:"none",className:"h-20 w-full","aria-hidden":!0,children:[e.jsx("path",{d:`${d} L100,40 L0,40 Z`,fill:h(.14)}),e.jsx("path",{d,fill:"none",stroke:h(.9),strokeWidth:1.5,vectorEffect:"non-scaling-stroke",strokeLinejoin:"round"})]})}function N({config:n}){const{curve:a,isLoading:m}=g();if(m)return e.jsx(u,{loading:!0,children:"loading yield curve…"});if(!a||a.points.length<2)return e.jsx(u,{children:"no yield-curve data yet"});const i=s=>{var l;return(l=a.points.find(f=>f.label===s))==null?void 0:l.rate},o=i("2Y"),c=i("10Y"),t=o!=null&&c!=null?Math.round((c-o)*100):null,d=t!=null&&t<0,r=n.maturities;return e.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-2",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("div",{className:"caption text-soft uppercase",children:"Treasury yield curve"}),e.jsxs("div",{className:"body-sm text-normal",children:["U.S. Treasury · ",a.date]})]}),e.jsx("div",{className:"caption text-soft text-right",children:"daily"})]}),t!=null&&e.jsxs("div",{className:"flex items-baseline gap-2",children:[e.jsxs("span",{className:"metric-md leading-none",style:{color:x(t),textShadow:`0 0 24px ${x(t)}44`},children:[t>=0?"+":"",t," bps"]}),e.jsxs("span",{className:"caption text-soft",children:["2s10s · ",d?"inverted":"normal"]})]}),e.jsx(y,{rates:a.points.map(s=>s.rate)}),e.jsx("div",{className:"grid gap-1",style:{gridTemplateColumns:`repeat(${r.length}, minmax(0, 1fr))`},children:r.map(s=>{const l=i(s);return e.jsxs("div",{className:"rounded bg-white/[0.04] px-1.5 py-1 text-center",children:[e.jsx("div",{className:"caption text-soft",children:s}),e.jsx("div",{className:"body-sm text-strong font-bold tabular-nums",children:l!=null?v(l):"—"})]},s)})})]})}const M=j({...p,component:N});export{M as yieldCurveFrame};
@@ -1 +1 @@
1
- import{r as d,j as a}from"./react-qoZPGuNy.js";import{a as p,D as h,U as u}from"./format-DxkEZcwQ.js";import{f,cS as n,bz as x}from"./index-CiYWppnQ.js";import{F as i}from"./ui-Bq3RQsdJ.js";import{B as y}from"./bar-chart-DmyKFv_O.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";n.schema;function g({config:e}){const{pools:s,isLoading:m}=x(),o=d.useMemo(()=>{const r=s.filter(t=>t.apyPct7D!==null&&t.tvlUsd>=e.minTvlUsd).sort((t,c)=>c.apyPct7D-t.apyPct7D),l=Math.floor(e.limit/2);return(r.length<=e.limit?r:[...r.slice(0,l),...r.slice(-l)]).map(t=>({label:t.symbol,value:t.apyPct7D}))},[s,e.limit,e.minTvlUsd]);return m?a.jsx(i,{loading:!0,children:"loading yields…"}):o.length===0?a.jsx(i,{children:"no pools match"}):a.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[a.jsx(y,{data:o,orientation:"horizontal",color:u,negativeColor:h,height:Math.max(o.length*22,96),formatValue:p}),a.jsxs("div",{className:"caption text-soft text-center",children:["top ",o.length," · 7d APY change"]})]})}const U=f({...n,component:g});export{U as yieldMomentumBarsFrame};
1
+ import{r as d,j as a}from"./react-qoZPGuNy.js";import{a as p,D as h,U as u}from"./format-DxkEZcwQ.js";import{f,cS as n,bz as x}from"./index-BHlJHScr.js";import{F as i}from"./ui-Bq3RQsdJ.js";import{B as y}from"./bar-chart-DCMbxUJx.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";n.schema;function g({config:e}){const{pools:s,isLoading:m}=x(),o=d.useMemo(()=>{const r=s.filter(t=>t.apyPct7D!==null&&t.tvlUsd>=e.minTvlUsd).sort((t,c)=>c.apyPct7D-t.apyPct7D),l=Math.floor(e.limit/2);return(r.length<=e.limit?r:[...r.slice(0,l),...r.slice(-l)]).map(t=>({label:t.symbol,value:t.apyPct7D}))},[s,e.limit,e.minTvlUsd]);return m?a.jsx(i,{loading:!0,children:"loading yields…"}):o.length===0?a.jsx(i,{children:"no pools match"}):a.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[a.jsx(y,{data:o,orientation:"horizontal",color:u,negativeColor:h,height:Math.max(o.length*22,96),formatValue:p}),a.jsxs("div",{className:"caption text-soft text-center",children:["top ",o.length," · 7d APY change"]})]})}const U=f({...n,component:g});export{U as yieldMomentumBarsFrame};
@@ -0,0 +1 @@
1
+ import{r as u,j as a}from"./react-qoZPGuNy.js";import{f as r,b as f}from"./format-DxkEZcwQ.js";import{f as p,cL as x,bz as h}from"./index-BHlJHScr.js";import{F as i}from"./ui-Bq3RQsdJ.js";import{C as m}from"./chart-utils-DGogNvJT.js";import{P as j}from"./pie-chart-BIxKuHm-.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";const y={no:"No IL Risk",yes:"IL Risk",unknown:"Unknown"};function R(){const{pools:o,isLoading:c}=h(),n=u.useMemo(()=>{const e=new Map;for(const s of o){const t=s.ilRisk==="no"||s.ilRisk==="yes"?s.ilRisk:"unknown";e.set(t,(e.get(t)??0)+s.tvlUsd)}return[...e.entries()].map(([s,t],d)=>({name:y[s]??s,value:t,color:m[d%m.length]})).filter(s=>s.value>0).sort((s,t)=>t.value-s.value)},[o]),l=n.reduce((e,s)=>e+s.value,0);return c?a.jsx(i,{loading:!0,children:"loading yield pools…"}):n.length===0?a.jsx(i,{children:"no yield data yet"}):a.jsxs("div",{className:"flex h-full w-full flex-col items-center justify-center gap-4",children:[a.jsx(j,{data:n,width:188,height:188,innerRadius:54,outerRadius:86,colors:n.map(e=>e.color),children:a.jsxs("div",{className:"flex max-w-[100px] flex-col items-center gap-0.5",children:[a.jsx("span",{className:"caption text-soft",children:"TVL by IL risk"}),a.jsx("span",{className:"metric-md text-strong leading-none tabular-nums",children:r(l)})]})}),a.jsx("div",{className:"flex w-full max-w-xs flex-wrap justify-center gap-x-5 gap-y-1.5",children:n.map(e=>a.jsxs("div",{className:"flex items-center gap-1.5",children:[a.jsx("span",{className:"h-2 w-2 flex-shrink-0 rounded-full",style:{background:e.color}}),a.jsx("span",{className:"body-sm text-soft",children:e.name}),a.jsx("span",{className:"body-sm text-normal font-bold tabular-nums",children:f(e.value/l*100,1)}),a.jsx("span",{className:"caption text-soft tabular-nums",children:r(e.value)})]},e.name))})]})}const I=p({...x,component:R});export{I as yieldRiskPieFrame};
@@ -1 +1 @@
1
- import{r as m,j as a}from"./react-qoZPGuNy.js";import{U as c,b as d,p,f as y}from"./format-DxkEZcwQ.js";import{M as f}from"./metric-row-BVVhjsjK.js";import{f as u,by as r,bz as x}from"./index-CiYWppnQ.js";import{F as o,s as b}from"./ui-Bq3RQsdJ.js";r.schema;function h({config:e}){const{pools:l,isLoading:i}=x(),t=m.useMemo(()=>l.filter(s=>(!e.stablecoinOnly||s.stablecoin)&&s.tvlUsd>=e.minTvlUsd).sort((s,n)=>n.apy-s.apy).slice(0,e.limit),[l,e.stablecoinOnly,e.minTvlUsd,e.limit]);return i?a.jsx(o,{loading:!0,children:"loading yields…"}):t.length===0?a.jsx(o,{children:"no pools match"}):a.jsx("div",{className:`${b} flex flex-col`,children:t.map(s=>a.jsx(f,{label:s.symbol,meta:`${p(s.project)} · ${s.chain} · ${y(s.tvlUsd)}${s.stablecoin?" · stable":""}`,value:a.jsx("span",{style:{color:c},children:d(s.apy)})},s.pool))})}const F=u({...r,component:h});export{F as yieldScannerFrame};
1
+ import{r as m,j as a}from"./react-qoZPGuNy.js";import{U as c,b as d,p,f as y}from"./format-DxkEZcwQ.js";import{M as f}from"./metric-row-BVVhjsjK.js";import{f as u,by as r,bz as x}from"./index-BHlJHScr.js";import{F as o,s as b}from"./ui-Bq3RQsdJ.js";r.schema;function h({config:e}){const{pools:l,isLoading:i}=x(),t=m.useMemo(()=>l.filter(s=>(!e.stablecoinOnly||s.stablecoin)&&s.tvlUsd>=e.minTvlUsd).sort((s,n)=>n.apy-s.apy).slice(0,e.limit),[l,e.stablecoinOnly,e.minTvlUsd,e.limit]);return i?a.jsx(o,{loading:!0,children:"loading yields…"}):t.length===0?a.jsx(o,{children:"no pools match"}):a.jsx("div",{className:`${b} flex flex-col`,children:t.map(s=>a.jsx(f,{label:s.symbol,meta:`${p(s.project)} · ${s.chain} · ${y(s.tvlUsd)}${s.stablecoin?" · stable":""}`,value:a.jsx("span",{style:{color:c},children:d(s.apy)})},s.pool))})}const F=u({...r,component:h});export{F as yieldScannerFrame};
@@ -1 +1 @@
1
- import{r as n,j as a}from"./react-qoZPGuNy.js";import{p as d,f as c,b as p}from"./format-DxkEZcwQ.js";import{f as x,cr as o,bz as y}from"./index-CiYWppnQ.js";import{F as l}from"./ui-Bq3RQsdJ.js";import{S as f}from"./scatter-chart-B28DJ7P-.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";o.schema;function u({config:e}){const{pools:r,isLoading:i}=y(),s=n.useMemo(()=>r.filter(t=>Number.isFinite(t.apy)&&t.apy>0&&t.apy<=e.maxApy&&t.tvlUsd>0&&(!e.stablecoinOnly||t.stablecoin)).sort((t,m)=>m.tvlUsd-t.tvlUsd).slice(0,e.limit).map(t=>({id:t.pool,label:d(t.project),x:t.apy,y:t.tvlUsd,weight:t.tvlUsd})),[r,e.limit,e.maxApy,e.stablecoinOnly]);return i?a.jsx(l,{loading:!0,children:"loading yields…"}):s.length===0?a.jsx(l,{children:"no yield data yet"}):a.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[a.jsx(f,{data:s,yScale:"log",height:210,formatX:t=>p(t,0),formatY:c,maxLabels:8}),a.jsxs("div",{className:"caption text-soft text-center",children:["DeFi yields · APY (x) vs TVL (y, log) · top ",s.length]})]})}const U=x({...o,component:u});export{U as yieldScatterFrame};
1
+ import{r as n,j as a}from"./react-qoZPGuNy.js";import{p as d,f as c,b as p}from"./format-DxkEZcwQ.js";import{f as x,cr as o,bz as y}from"./index-BHlJHScr.js";import{F as l}from"./ui-Bq3RQsdJ.js";import{S as f}from"./scatter-chart-B78EA7lD.js";import"./d3-ibrLIlQc.js";import"./utils-DxneYyA_.js";o.schema;function u({config:e}){const{pools:r,isLoading:i}=y(),s=n.useMemo(()=>r.filter(t=>Number.isFinite(t.apy)&&t.apy>0&&t.apy<=e.maxApy&&t.tvlUsd>0&&(!e.stablecoinOnly||t.stablecoin)).sort((t,m)=>m.tvlUsd-t.tvlUsd).slice(0,e.limit).map(t=>({id:t.pool,label:d(t.project),x:t.apy,y:t.tvlUsd,weight:t.tvlUsd})),[r,e.limit,e.maxApy,e.stablecoinOnly]);return i?a.jsx(l,{loading:!0,children:"loading yields…"}):s.length===0?a.jsx(l,{children:"no yield data yet"}):a.jsxs("div",{className:"flex h-full flex-col justify-center gap-1 text-normal",children:[a.jsx(f,{data:s,yScale:"log",height:210,formatX:t=>p(t,0),formatY:c,maxLabels:8}),a.jsxs("div",{className:"caption text-soft text-center",children:["DeFi yields · APY (x) vs TVL (y, log) · top ",s.length]})]})}const U=x({...o,component:u});export{U as yieldScatterFrame};
@@ -8,9 +8,9 @@
8
8
  <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16.png" />
9
9
  <link rel="apple-touch-icon" href="/apple-touch-icon.png" />
10
10
  <title>zframes runtime</title>
11
- <script type="module" crossorigin src="/assets/index-CiYWppnQ.js"></script>
11
+ <script type="module" crossorigin src="/assets/index-BHlJHScr.js"></script>
12
12
  <link rel="modulepreload" crossorigin href="/assets/react-qoZPGuNy.js">
13
- <link rel="stylesheet" crossorigin href="/assets/index-5ezz63At.css">
13
+ <link rel="stylesheet" crossorigin href="/assets/index-yv-SCb9g.css">
14
14
  </head>
15
15
  <body>
16
16
  <div id="root"></div>
@@ -1 +0,0 @@
1
- import{r as d,j as L}from"./react-qoZPGuNy.js";import{s as T,l as z,h as K}from"./d3-ibrLIlQc.js";import{p as Q}from"./utils-DxneYyA_.js";const A="11px 'DM Sans', sans-serif",Z="var(--color-highlight, #8b8bff)",V=({data:e,orientation:C="vertical",color:j=Z,negativeColor:v,height:i=200,formatValue:p=y=>String(Math.round(y)),showValues:x=!0,maxTickLabels:k=8})=>{const y=d.useRef(null),B=d.useRef(null),[n,U]=d.useState(null);return d.useEffect(()=>{const o=y.current;if(!o)return;const c=()=>{const u=o.getBoundingClientRect().width;U(m=>m!==null&&Math.abs(m-u)<.5?m:u)};c();const l=typeof ResizeObserver<"u"?new ResizeObserver(c):null;return l==null||l.observe(o),()=>l==null?void 0:l.disconnect()},[]),d.useEffect(()=>{const o=B.current;if(!o||!n||n<=0||!e.length)return;T(o).selectAll("*").remove();const c=T(o),l=t=>t.color??(v&&t.value<0?v:j),u=!Q();if(C==="horizontal"){const t=Math.min(Math.max(...e.map(a=>a.label.length))*6.4+8,n*.35),r=x?52:8,w=Math.max(n-t-r,10),g=i/e.length,$=Math.min(Math.max(g*.55,3),18),S=v!==void 0&&e.some(a=>a.value<0),_=Math.max(...e.map(a=>Math.abs(a.value)),1e-9),R=S?z().domain([-_,_]).range([0,w]):z().domain([Math.min(0,...e.map(a=>a.value)),_]).range([0,w]),h=R(0),D=c.append("g").attr("transform",`translate(${t},0)`);S&&D.append("line").attr("x1",h).attr("x2",h).attr("y1",0).attr("y2",i).attr("stroke","currentColor").attr("stroke-opacity",.18);const O=D.selectAll("g.bar-row").data(e).enter().append("g").attr("transform",(a,E)=>`translate(0,${E*g+g/2})`),X=O.append("rect").attr("y",-$/2).attr("height",$).attr("rx",Math.min(3,$/2)).attr("fill",l).attr("x",h).attr("width",0),Y=a=>Math.min(h,R(a.value)),I=a=>Math.abs(R(a.value)-h);u?X.transition().duration(400).attr("x",Y).attr("width",I):X.attr("x",Y).attr("width",I),c.selectAll("text.bar-label").data(e).enter().append("text").attr("x",t-8).attr("y",(a,E)=>E*g+g/2).attr("text-anchor","end").attr("dominant-baseline","central").attr("fill","currentColor").attr("fill-opacity",.65).style("font",A).text(a=>a.label),x&&O.append("text").attr("x",a=>a.value>=0?R(a.value)+6:h+6).attr("text-anchor","start").attr("dominant-baseline","central").attr("fill",l).style("font",A).style("font-weight","600").text(a=>p(a.value)),O.append("title").text(a=>`${a.label}: ${p(a.value)}`);return}const m=18,H=x?16:6,W=Math.max(i-m-H,10),q=Math.min(0,...e.map(t=>t.value)),G=Math.max(0,...e.map(t=>t.value),1e-9),f=z().domain([q,G]).range([W,0]).nice(),s=K().domain(e.map((t,r)=>r)).range([0,n]).paddingInner(.25).paddingOuter(.05),b=f(0),M=c.append("g").attr("transform",`translate(0,${H})`);M.append("line").attr("x1",0).attr("x2",n).attr("y1",b).attr("y2",b).attr("stroke","currentColor").attr("stroke-opacity",.18);const F=M.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",b).attr("height",0),N=t=>Math.min(b,f(t.value)),P=t=>Math.abs(f(t.value)-b);u?F.transition().duration(400).attr("y",N).attr("height",P):F.attr("y",N).attr("height",P),M.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",W).attr("fill","transparent").append("title").text(t=>`${t.label}: ${p(t.value)}`),x&&s.bandwidth()>=26&&M.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?f(t.value)-4:f(t.value)+12).attr("text-anchor","middle").attr("fill",l).style("font",A).style("font-weight","600").text(t=>p(t.value));const J=Math.max(1,Math.ceil(e.length/k));c.selectAll("text.tick-label").data(e.filter((t,r)=>r%J===0)).enter().append("text").attr("x",t=>{const r=e.indexOf(t),w=(s(r)??0)+s.bandwidth()/2;return Math.min(Math.max(w,16),n-16)}).attr("y",i-4).attr("text-anchor","middle").attr("fill","currentColor").attr("fill-opacity",.55).style("font",A).text(t=>t.label)},[e,n,i,C,j,v,p,x,k]),L.jsx("div",{ref:y,className:"w-full",style:{height:i},children:n!==null&&n>0&&L.jsx("svg",{ref:B,width:n,height:i})})},rt=d.memo(V);export{rt as B};