zframes 0.8.2 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +524 -5
- package/package.json +6 -6
- package/runtime/assets/bar-chart-CMWrEpFm.js +1 -0
- package/runtime/assets/bitcoin-dominance-CDZbSLQ9.js +1 -0
- package/runtime/assets/breakeven-N9JfaLs2.js +1 -0
- package/runtime/assets/breathing-CSiaHH2d.js +1 -0
- package/runtime/assets/btc-block-size-bars-BwGQm2NA.js +1 -0
- package/runtime/assets/btc-blocks-CFz6DrIF.js +1 -0
- package/runtime/assets/btc-difficulty-bSLdWqGX.js +1 -0
- package/runtime/assets/btc-difficulty-chart-D6il3x9b.js +1 -0
- package/runtime/assets/btc-fees-CwRPq2S2.js +1 -0
- package/runtime/assets/btc-hashrate-_PbwOOj4.js +1 -0
- package/runtime/assets/btc-in-gold-JNXTU7sM.js +1 -0
- package/runtime/assets/btc-mempool-DivYz6mX.js +1 -0
- package/runtime/assets/btc-shared-BC2IjkCh.js +1 -0
- package/runtime/assets/bubbles-shared-BgKUWrak.js +1 -0
- package/runtime/assets/calculator-F474oCeb.js +1 -0
- package/runtime/assets/capital-structure-bars-BHtcggyu.js +1 -0
- package/runtime/assets/chain-activity-Db-zx6eG.js +1 -0
- package/runtime/assets/chain-activity-bars-CPhHE6lU.js +1 -0
- package/runtime/assets/chain-activity-scatter-CU7D3Nx9.js +1 -0
- package/runtime/assets/chain-price-movers-Vym50Lcy.js +1 -0
- package/runtime/assets/chart-utils-Ba8AFSZR.js +1 -0
- package/runtime/assets/checklist-BSCOZLJ-.js +1 -0
- package/runtime/assets/clock-C5hPRu82.js +1 -0
- package/runtime/assets/coin-momentum-heatmap-DbHsWjP2.js +1 -0
- package/runtime/assets/coin-momentum-scatter-5wS64urM.js +1 -0
- package/runtime/assets/coin-movers-BPifHhH2.js +1 -0
- package/runtime/assets/content-shared-CrVCFeOp.js +1 -0
- package/runtime/assets/countdown-9cgAKml3.js +1 -0
- package/runtime/assets/custom-data-A7UR4hIt.js +1 -0
- package/runtime/assets/cycle-shared-D8LQcBSw.js +1 -0
- package/runtime/assets/cycle-signals-CmEenZJE.js +1 -0
- package/runtime/assets/cycle-valuation-composite-olTWmWgj.js +1 -0
- package/runtime/assets/d3-BDRmnSFu.js +1 -0
- package/runtime/assets/daily-analysis-DmNxxfsL.js +1 -0
- package/runtime/assets/day-meter-DYYqZgFQ.js +1 -0
- package/runtime/assets/defi-revenue-BwnWnaOl.js +1 -0
- package/runtime/assets/dex-hot-pools-5sl00AOK.js +1 -0
- package/runtime/assets/dex-pool-bubbles-KyBmXb-u.js +1 -0
- package/runtime/assets/dex-pool-liquidity-scatter-Cczoa7F0.js +1 -0
- package/runtime/assets/dex-pool-treemap-DmoYWG3V.js +1 -0
- package/runtime/assets/dex-volume-bubbles-lLAheaQp.js +1 -0
- package/runtime/assets/dex-volume-chart-CGCkffrp.js +1 -0
- package/runtime/assets/dex-volume-share-area-figZ1USz.js +1 -0
- package/runtime/assets/dex-volume-treemap-CXXZ330C.js +1 -0
- package/runtime/assets/dice-BRHGwsSK.js +1 -0
- package/runtime/assets/dino-game-DkbgStXN.js +1 -0
- package/runtime/assets/divider-B_ScYYo5.js +1 -0
- package/runtime/assets/dominance-bars-CwFTP6Sh.js +1 -0
- package/runtime/assets/dominance-gauge-DL_JjphD.js +1 -0
- package/runtime/assets/drawdy-Bqx6Qs9j.js +1 -0
- package/runtime/assets/dxy-EDEcDqHS.js +1 -0
- package/runtime/assets/dxy-chart-DZ9Q_k9j.js +1 -0
- package/runtime/assets/editor-DNWRDAc5.css +1 -0
- package/runtime/assets/editor-DchM45os.js +2 -0
- package/runtime/assets/etf-flow-bars-BdLldRsx.js +1 -0
- package/runtime/assets/etf-flow-calendar-QeCVgCXm.js +1 -0
- package/runtime/assets/etf-flows-BokfCz94.js +1 -0
- package/runtime/assets/etf-flows-chart-B7vXhlo1.js +1 -0
- package/runtime/assets/etf-issuer-bars-ZWR-71DZ.js +1 -0
- package/runtime/assets/etf-issuer-treemap-zM5ZN913.js +1 -0
- package/runtime/assets/eth-issuance-impact-C0dbmsYs.js +1 -0
- package/runtime/assets/eth-staking-DhS4t_di.js +1 -0
- package/runtime/assets/eth-supply-BDXv32cs.js +1 -0
- package/runtime/assets/fear-greed-Db3YYSrb.js +1 -0
- package/runtime/assets/fear-greed-chart-BUaJVaqb.js +1 -0
- package/runtime/assets/feed-row-qDN72CXa.js +1 -0
- package/runtime/assets/filings-feed-CNEQhc4S.js +1 -0
- package/runtime/assets/filings-mix-BycrOiTn.js +1 -0
- package/runtime/assets/financial-stress-CtL4d_BQ.js +1 -0
- package/runtime/assets/flappy-bird-OADt73RX.js +1 -0
- package/runtime/assets/format-DWMrfgke.js +1 -0
- package/runtime/assets/fundamentals-DeZ9OQCp.js +1 -0
- package/runtime/assets/funding-bars-CZicqsRm.js +1 -0
- package/runtime/assets/funding-carry-area-B9WKPWmT.js +1 -0
- package/runtime/assets/funding-comparison-TSJiamEF.js +1 -0
- package/runtime/assets/funding-crowding-scatter-DfPN294N.js +1 -0
- package/runtime/assets/funding-heatmap-BiW7ZLwp.js +1 -0
- package/runtime/assets/funding-leaderboard-bars-C6PF11ps.js +1 -0
- package/runtime/assets/funding-rate-chart-MWU01Uib.js +1 -0
- package/runtime/assets/funding-spread-bars-Br7XsS11.js +1 -0
- package/runtime/assets/funding-venue-heatmap-sPFQ1fzo.js +1 -0
- package/runtime/assets/fx-board-CXrfSPfH.js +1 -0
- package/runtime/assets/fx-cross-heatmap-CHJIg4cN.js +1 -0
- package/runtime/assets/fx-movers-bars-DpD5YR28.js +1 -0
- package/runtime/assets/fx-trend-chart-DXS0-OTV.js +1 -0
- package/runtime/assets/game-ui-DRuW9syP.js +1 -0
- package/runtime/assets/gold-silver-ratio-C1AEhktf.js +1 -0
- package/runtime/assets/gridstack-BJOLV-iY.js +3 -0
- package/runtime/assets/gridstack-Chv4ms9g.css +1 -0
- package/runtime/assets/heading-DMvjA_mI.js +1 -0
- package/runtime/assets/heatmap-chart-CXN9d41C.js +1 -0
- package/runtime/assets/hero-number-BFIUUm5q.js +1 -0
- package/runtime/assets/holiday-calendar-s6CQYrht.js +1 -0
- package/runtime/assets/hooks-CLLchjg6.js +1 -0
- package/runtime/assets/image-Dx6lzZxo.js +1 -0
- package/runtime/assets/image-gallery-DlvoKVqh.js +1 -0
- package/runtime/assets/index-9oCCAb1t.js +1106 -0
- package/runtime/assets/index-tGx-fhSL.css +1 -0
- package/runtime/assets/indicators-YksbfYtF.js +1 -0
- package/runtime/assets/inflation-pulse-DFjPkATF.js +1 -0
- package/runtime/assets/journal-log-DllO3-3Q.js +1 -0
- package/runtime/assets/journal-open-49eapsYs.js +1 -0
- package/runtime/assets/journal-results-CYsmiD33.js +1 -0
- package/runtime/assets/journal-score-BvJ7YMEp.js +1 -0
- package/runtime/assets/journal-store-DcqepoPT.js +1 -0
- package/runtime/assets/journal-ui-CR7uxhyO.js +1 -0
- package/runtime/assets/labor-force-flow-BIAQjzra.js +1 -0
- package/runtime/assets/labor-market-D_4TsgBi.js +1 -0
- package/runtime/assets/lightning-stats-DqM9rjwr.js +1 -0
- package/runtime/assets/link-grid-DUGgdBCS.js +1 -0
- package/runtime/assets/liquidity-basis-bars-BBthK657.js +1 -0
- package/runtime/assets/live-tick-S-lWTthW.js +1 -0
- package/runtime/assets/liveline-BV-xqAVq.js +1 -0
- package/runtime/assets/ma-multiplier-0NdXDf5j.js +1 -0
- package/runtime/assets/macro-calendar-BtFBeUX9.js +1 -0
- package/runtime/assets/market-bubbles-B4CW9pwK.js +1 -0
- package/runtime/assets/market-cap-treemap-ydmUhoNY.js +1 -0
- package/runtime/assets/market-data-BeuX48f-.js +1 -0
- package/runtime/assets/market-hours-B_bTdanw.js +1 -0
- package/runtime/assets/market-scatter-FTzDpslF.js +1 -0
- package/runtime/assets/marquee-sW0gA0u_.js +28 -0
- package/runtime/assets/mayer-multiple-D6T_kVDR.js +1 -0
- package/runtime/assets/mempool-fee-curve-DUsgJQRe.js +1 -0
- package/runtime/assets/metal-annual-returns-CsZDcJs4.js +1 -0
- package/runtime/assets/metal-ath-ChqiN4O-.js +1 -0
- package/runtime/assets/metal-compare-chart-CiOT1Su2.js +1 -0
- package/runtime/assets/metal-cot-breakdown-B83N5bkN.js +1 -0
- package/runtime/assets/metal-cot-gauge-DK-PBRRk.js +1 -0
- package/runtime/assets/metal-cot-net-B5BW2stR.js +1 -0
- package/runtime/assets/metal-drawdown-DZ7uOHIc.js +1 -0
- package/runtime/assets/metal-fix-table-ChbUOgVu.js +1 -0
- package/runtime/assets/metal-milestones-BpfRvE7K.js +1 -0
- package/runtime/assets/metal-open-interest-BFYrS2KP.js +1 -0
- package/runtime/assets/metal-performance-CBD6oX6f.js +1 -0
- package/runtime/assets/metal-positioning-vs-price-BPxrZcR9.js +1 -0
- package/runtime/assets/metal-price-CIZRcE2_.js +1 -0
- package/runtime/assets/metal-price-chart-BX5tGnIt.js +1 -0
- package/runtime/assets/metal-ratio-chart-D99QH7nv.js +1 -0
- package/runtime/assets/metal-return-distribution-B0AAXxe0.js +1 -0
- package/runtime/assets/metal-seasonality-BuQKG4Gi.js +1 -0
- package/runtime/assets/metal-value-CTPzpBvh.js +1 -0
- package/runtime/assets/metal-volatility-g94-b7hn.js +1 -0
- package/runtime/assets/metals-board-DPfkH3Vj.js +1 -0
- package/runtime/assets/metals-correlation-BjZHMzKY.js +1 -0
- package/runtime/assets/metals-shared-CN6-LtS3.js +1 -0
- package/runtime/assets/metric-row-CqsjSvCI.js +1 -0
- package/runtime/assets/mini-line-chart-B0Ixv2kC.js +1 -0
- package/runtime/assets/mining-pools-BpaMCs0f.js +1 -0
- package/runtime/assets/mining-pools-share-CrfTxNKr.js +1 -0
- package/runtime/assets/misery-index-BU2requD.js +1 -0
- package/runtime/assets/money-BHiVNo0u.js +1 -0
- package/runtime/assets/mover-row-DmmszLhN.js +1 -0
- package/runtime/assets/movers-bars-Bp8o2qzk.js +1 -0
- package/runtime/assets/movers-bubbles-BidtAeZE.js +1 -0
- package/runtime/assets/multi-series-line-chart-DyOsZlI2.css +1 -0
- package/runtime/assets/multi-series-line-chart-XRttVKf5.js +1 -0
- package/runtime/assets/mvrv-CrYk75Yb.js +1 -0
- package/runtime/assets/mvrv-zscore-chart-0m51ohsV.js +1 -0
- package/runtime/assets/national-debt-BExrnkxj.js +1 -0
- package/runtime/assets/news-feed-BHQ8VVq_.js +1 -0
- package/runtime/assets/nft-activity-bars-BjGU2vJF.js +1 -0
- package/runtime/assets/nft-bubbles-BU8EpLxc.js +1 -0
- package/runtime/assets/nft-collections-BED52ibd.js +1 -0
- package/runtime/assets/nft-scatter-CGhED2cB.js +1 -0
- package/runtime/assets/nft-treemap-PO55tL6W.js +1 -0
- package/runtime/assets/note-Dgl6DLv8.js +3 -0
- package/runtime/assets/nupl-DglP-qbC.js +1 -0
- package/runtime/assets/nupl-cycle-chart-S9yflXUB.js +1 -0
- package/runtime/assets/nyfed-fed-funds-band-gauge-CFMKcqEc.js +1 -0
- package/runtime/assets/nyfed-reference-rate-bars-C_3KkqpO.js +1 -0
- package/runtime/assets/nyfed-sofr-term-averages-bars-Dqaa52Pl.js +1 -0
- package/runtime/assets/ofr-stress-category-area-DnEjZbRo.js +1 -0
- package/runtime/assets/ohlcv-volume-bars-Bi83GPWW.js +1 -0
- package/runtime/assets/oi-treemap-BbPekPJp.js +1 -0
- package/runtime/assets/onchain-oscillator-overlay-Ck_7aTc_.js +1 -0
- package/runtime/assets/open-interest-B5119LVQ.js +1 -0
- package/runtime/assets/options-flow-skew-Cj0v65sh.js +1 -0
- package/runtime/assets/options-iv-Bbopuw_Z.js +1 -0
- package/runtime/assets/options-max-pain-DkUoBRmq.js +1 -0
- package/runtime/assets/options-max-pain-multi-BZq8vuHy.js +1 -0
- package/runtime/assets/options-oi-ladder-heatmap-BMFAQkEI.js +1 -0
- package/runtime/assets/options-oi-skew-B3eQqfLD.js +1 -0
- package/runtime/assets/options-oi-strike-D1ZtVHSn.js +1 -0
- package/runtime/assets/options-put-call-lwGRvlsC.js +1 -0
- package/runtime/assets/options-vol-smile-zdzBnvMN.js +1 -0
- package/runtime/assets/options-vol-spread-CnZEubR3.js +1 -0
- package/runtime/assets/order-book-depth-CeFNsjv3.js +1 -0
- package/runtime/assets/payrolls-bars-T0e6cyjh.js +1 -0
- package/runtime/assets/pi-cycle-CqX0lAu1.js +1 -0
- package/runtime/assets/pie-chart-cmDhECET.js +1 -0
- package/runtime/assets/pomodoro-BstwVCqa.js +1 -0
- package/runtime/assets/portfolio-allocation-DzjS0F9u.js +1 -0
- package/runtime/assets/portfolio-common-CcbzaPrv.js +1 -0
- package/runtime/assets/portfolio-holdings-1d7jT_Dv.js +1 -0
- package/runtime/assets/portfolio-movers-vdVKKjAL.js +1 -0
- package/runtime/assets/portfolio-value-C2hCsXwG.js +1 -0
- package/runtime/assets/portfolio-value-bars-Bkh18oxT.js +1 -0
- package/runtime/assets/prediction-market-bars-WOea9YlB.js +1 -0
- package/runtime/assets/prediction-market-scatter-Bg8Hp9YU.js +1 -0
- package/runtime/assets/prediction-markets-bubble-DUFbL6ZL.js +1 -0
- package/runtime/assets/prediction-markets-vrOoZGTG.js +1 -0
- package/runtime/assets/price-chart-NGnXyEwF.js +1 -0
- package/runtime/assets/price-compare-D0cu78Tg.js +1 -0
- package/runtime/assets/price-liveline-B_6-t2eO.js +1 -0
- package/runtime/assets/price-ticker-DpNG6jQF.js +1 -0
- package/runtime/assets/protocol-fees-bubbles-CfMsdfGV.js +1 -0
- package/runtime/assets/protocol-fees-treemap-b4z8_0dU.js +1 -0
- package/runtime/assets/protocol-fees-vs-tvl-scatter-D-REm65e.js +1 -0
- package/runtime/assets/protocol-tvl-bubbles-BDAUSzkE.js +1 -0
- package/runtime/assets/protocol-tvl-by-category-fw6ADU1F.js +1 -0
- package/runtime/assets/protocol-tvl-chart-Q1hGvfby.js +1 -0
- package/runtime/assets/protocol-tvl-share-area-DXQzexAL.js +1 -0
- package/runtime/assets/protocol-tvl-treemap-DC_qfwIF.js +1 -0
- package/runtime/assets/puell-multiple-uc0NZXdh.js +1 -0
- package/runtime/assets/put-call-gauge-DtlDFtDZ.js +1 -0
- package/runtime/assets/quote-CuEE1U0a.js +1 -0
- package/runtime/assets/radial-gauge-DUhIBGcM.js +1 -0
- package/runtime/assets/rates-board-Byz3erIf.js +1 -0
- package/runtime/assets/react-DdM8gsnR.js +9 -0
- package/runtime/assets/real-wages-BU2XSTAC.js +1 -0
- package/runtime/assets/realized-price-D91T6q7P.js +1 -0
- package/runtime/assets/reserve-risk-CuRuMPUz.js +1 -0
- package/runtime/assets/returns-projector-DvVTUgZa.js +1 -0
- package/runtime/assets/risk-reward-Brde1Qql.js +1 -0
- package/runtime/assets/rolldown-runtime-Bh1tDfsg.js +1 -0
- package/runtime/assets/rsi-momentum-DFARJhwN.js +1 -0
- package/runtime/assets/rules-card-CDgHHXtE.js +1 -0
- package/runtime/assets/scatter-chart-tjlc1NWO.js +1 -0
- package/runtime/assets/scene-DgXljRUS.js +1 -0
- package/runtime/assets/sector-bars-D0A6Sj3C.js +1 -0
- package/runtime/assets/sector-bubbles-C5lQoTi9.js +1 -0
- package/runtime/assets/sector-performance-CVVJ-VGu.js +1 -0
- package/runtime/assets/sector-treemap-lyftrGDF.js +1 -0
- package/runtime/assets/sentiment-gauge-CdnbFwyn.js +1 -0
- package/runtime/assets/session-progress-BfuN5Ilt.js +1 -0
- package/runtime/assets/short-volume-B2TiqLCD.js +1 -0
- package/runtime/assets/short-volume-bars-Cm-TnzY-.js +1 -0
- package/runtime/assets/snake-D0Secq9I.js +1 -0
- package/runtime/assets/sopr-j5kMKG03.js +1 -0
- package/runtime/assets/spotify-embed-BJIW3cBK.js +1 -0
- package/runtime/assets/stablecoin-chains-jLxaRE9T.js +1 -0
- package/runtime/assets/stablecoin-supply-6Q2kIHWN.js +1 -0
- package/runtime/assets/stacked-area-chart-B3ayMBfx.js +1 -0
- package/runtime/assets/stopwatch-DKtBGcQd.js +1 -0
- package/runtime/assets/timeframe-DUDLPk23.js +1 -0
- package/runtime/assets/tokenized-gold-B6KMvUVf.js +1 -0
- package/runtime/assets/top-movers-Bzz7lloh.js +1 -0
- package/runtime/assets/treasury-auction-demand-scatter-CUoIYkrP.js +1 -0
- package/runtime/assets/treasury-auction-size-bars-DXMJ0a9C.js +1 -0
- package/runtime/assets/treasury-auctions-ChsX0OUJ.js +1 -0
- package/runtime/assets/treasury-avg-rate-bars-DQ_HgQ0U.js +1 -0
- package/runtime/assets/treasury-debt-composition-area-C3sBaNNX.js +1 -0
- package/runtime/assets/treemap-leaf-f-vE1hUM.js +1 -0
- package/runtime/assets/trending-bars-DtgWzD_x.js +1 -0
- package/runtime/assets/trending-bubbles-DRJqfQqK.js +1 -0
- package/runtime/assets/trending-coins-n7mmU4mL.js +1 -0
- package/runtime/assets/tvl-bars-5IQ6zz2M.js +1 -0
- package/runtime/assets/tvl-bubbles-DU2M5Zl1.js +1 -0
- package/runtime/assets/tvl-treemap-qsmpeeAB.js +1 -0
- package/runtime/assets/ui-CYz5SGgR.js +1 -0
- package/runtime/assets/us-gold-reserve-8L2oYWV_.js +1 -0
- package/runtime/assets/us-gold-vaults-TuTFtr2T.js +1 -0
- package/runtime/assets/use-countdown-DSLbwkPl.js +1 -0
- package/runtime/assets/utils-BsB3-B7h.js +1 -0
- package/runtime/assets/video-CYH3El1X.js +1 -0
- package/runtime/assets/volume-movers-scatter-B8dYI1EZ.js +1 -0
- package/runtime/assets/volume-profile-W44vUguI.js +1 -0
- package/runtime/assets/volume-share-donut-CLbp38ek.js +1 -0
- package/runtime/assets/yield-composition-scatter-BinG9C4D.js +1 -0
- package/runtime/assets/yield-curve-DHeqDdBV.js +1 -0
- package/runtime/assets/yield-momentum-bars-D4ToH0Fp.js +1 -0
- package/runtime/assets/yield-risk-pie-C73G7WqW.js +1 -0
- package/runtime/assets/yield-scanner-uR4S_OrU.js +1 -0
- package/runtime/assets/yield-scatter-CnZQ7naG.js +1 -0
- package/runtime/index.html +7 -3
- package/runtime/assets/bar-chart-DCMbxUJx.js +0 -1
- package/runtime/assets/bitcoin-dominance-DQ6fUOfp.js +0 -1
- package/runtime/assets/breakeven-BiMfl0NU.js +0 -1
- package/runtime/assets/breathing-BQamMTOy.js +0 -1
- package/runtime/assets/btc-block-size-bars-DbwVb3YX.js +0 -1
- package/runtime/assets/btc-blocks-UZJqCEtB.js +0 -1
- package/runtime/assets/btc-difficulty-BtNgUCRS.js +0 -1
- package/runtime/assets/btc-difficulty-chart-BNT2fdwu.js +0 -1
- package/runtime/assets/btc-fees-CJhybpGO.js +0 -1
- package/runtime/assets/btc-hashrate-CtKkSA37.js +0 -1
- package/runtime/assets/btc-mempool-Dvlm6Uqk.js +0 -1
- package/runtime/assets/btc-shared-yOWoU9Im.js +0 -1
- package/runtime/assets/bubbles-shared-DlmjtiIA.js +0 -1
- package/runtime/assets/calculator-vMXfcXI8.js +0 -1
- package/runtime/assets/capital-structure-bars-B8-6gPY8.js +0 -1
- package/runtime/assets/chain-activity-Dj-2gNmT.js +0 -1
- package/runtime/assets/chain-activity-bars-BKvgXG2Z.js +0 -1
- package/runtime/assets/chain-activity-scatter-BQHleuZR.js +0 -1
- package/runtime/assets/chain-price-movers-Brvxvf8U.js +0 -1
- package/runtime/assets/chart-utils-DGogNvJT.js +0 -1
- package/runtime/assets/checklist-CNXEkmSt.js +0 -1
- package/runtime/assets/clock-Cygi_7Rq.js +0 -1
- package/runtime/assets/coin-momentum-heatmap-1twNsb0f.js +0 -1
- package/runtime/assets/coin-momentum-scatter-DPsgGLFi.js +0 -1
- package/runtime/assets/coin-movers-CVT1PPyM.js +0 -1
- package/runtime/assets/content-shared-BZ1XzrJx.js +0 -1
- package/runtime/assets/countdown-DSGwZS9O.js +0 -1
- package/runtime/assets/custom-data-eTpLXe-p.js +0 -1
- package/runtime/assets/cycle-shared-XoGVsOjC.js +0 -1
- package/runtime/assets/cycle-signals-DjvuKoAs.js +0 -1
- package/runtime/assets/cycle-valuation-composite-D2lAreTy.js +0 -1
- package/runtime/assets/d3-ibrLIlQc.js +0 -1
- package/runtime/assets/daily-analysis-00KQOxaw.js +0 -1
- package/runtime/assets/day-meter-VL3CbmZ4.js +0 -1
- package/runtime/assets/defi-revenue-DWs3X1sr.js +0 -1
- package/runtime/assets/dex-hot-pools-Btjw9uOK.js +0 -1
- package/runtime/assets/dex-pool-bubbles-DOWGPgDC.js +0 -1
- package/runtime/assets/dex-pool-liquidity-scatter-DBqKeUjl.js +0 -1
- package/runtime/assets/dex-pool-treemap-Dev3WsvG.js +0 -1
- package/runtime/assets/dex-volume-bubbles-C9INGAs-.js +0 -1
- package/runtime/assets/dex-volume-chart-CdhI9ySp.js +0 -1
- package/runtime/assets/dex-volume-share-area-DblxtqOC.js +0 -1
- package/runtime/assets/dex-volume-treemap-LweUYNfn.js +0 -1
- package/runtime/assets/dice-CRJFRdlS.js +0 -1
- package/runtime/assets/dino-game-DIj8Xqmq.js +0 -1
- package/runtime/assets/divider-C0PhyAZz.js +0 -1
- package/runtime/assets/dominance-bars-CNztOXI9.js +0 -1
- package/runtime/assets/dominance-gauge-BSlVu-kG.js +0 -1
- package/runtime/assets/drawdy-UVwx54Tz.js +0 -1
- package/runtime/assets/dxy-DDnItBY-.js +0 -1
- package/runtime/assets/dxy-chart-CbyyyRdn.js +0 -1
- package/runtime/assets/editor-C9dj6xX0.css +0 -1
- package/runtime/assets/editor-CpgNu0wu.js +0 -68
- package/runtime/assets/etf-flow-bars-Dknb70p4.js +0 -1
- package/runtime/assets/etf-flow-calendar-DXTg-p2v.js +0 -1
- package/runtime/assets/etf-flows-D7WwvrYS.js +0 -1
- package/runtime/assets/etf-flows-chart-D_Ts_7Bc.js +0 -1
- package/runtime/assets/etf-issuer-bars-B5q3WXIk.js +0 -1
- package/runtime/assets/etf-issuer-treemap-hdTKUL3C.js +0 -1
- package/runtime/assets/eth-issuance-impact-CSucvUy4.js +0 -1
- package/runtime/assets/eth-staking-Yp_RzOHD.js +0 -1
- package/runtime/assets/eth-supply-jf4tRC80.js +0 -1
- package/runtime/assets/fear-greed-BrDutlol.js +0 -1
- package/runtime/assets/fear-greed-chart-BPAfnROs.js +0 -1
- package/runtime/assets/feed-row-mVg1d5Zj.js +0 -1
- package/runtime/assets/filings-feed-BrtWoUaf.js +0 -1
- package/runtime/assets/filings-mix-D8Z-fvzY.js +0 -1
- package/runtime/assets/financial-stress-DaxcQDnz.js +0 -1
- package/runtime/assets/flappy-bird-M38jNjAd.js +0 -1
- package/runtime/assets/format-DxkEZcwQ.js +0 -1
- package/runtime/assets/fundamentals-TlBRBKFV.js +0 -1
- package/runtime/assets/funding-bars-BPDrsC0K.js +0 -1
- package/runtime/assets/funding-carry-area-BZRpyy3L.js +0 -1
- package/runtime/assets/funding-comparison-C1OOzJw-.js +0 -1
- package/runtime/assets/funding-crowding-scatter-DDjzoq8v.js +0 -1
- package/runtime/assets/funding-heatmap-DqnJJPw0.js +0 -1
- package/runtime/assets/funding-leaderboard-bars-CrQMBbY7.js +0 -1
- package/runtime/assets/funding-rate-chart-dYIjvTBt.js +0 -1
- package/runtime/assets/funding-spread-bars-CRoG-zHf.js +0 -1
- package/runtime/assets/funding-venue-heatmap-DA0JsXzA.js +0 -1
- package/runtime/assets/fx-board-C_h1IJJy.js +0 -1
- package/runtime/assets/fx-cross-heatmap-CLHkKvsB.js +0 -1
- package/runtime/assets/fx-movers-bars-_U6XrETl.js +0 -1
- package/runtime/assets/fx-trend-chart-Cdi-lmjx.js +0 -1
- package/runtime/assets/game-ui-BiMS2KJf.js +0 -1
- package/runtime/assets/gridstack-BxxvPIFU.js +0 -9
- package/runtime/assets/gridstack-FIb_WQSt.css +0 -1
- package/runtime/assets/heading-BS9IhuAM.js +0 -1
- package/runtime/assets/hero-number-R-27T2n_.js +0 -1
- package/runtime/assets/holiday-calendar-BxcU0Y64.js +0 -1
- package/runtime/assets/image-HcDu9YKF.js +0 -1
- package/runtime/assets/image-gallery-BCXhCjqj.js +0 -1
- package/runtime/assets/index-BJ1Zyy42.js +0 -1108
- package/runtime/assets/index-BXLwJuoo.css +0 -1
- package/runtime/assets/index-BpPIfN5S.js +0 -1
- package/runtime/assets/index-Bw1aFtyx.js +0 -1
- package/runtime/assets/index-DuNO-RcB.js +0 -1
- package/runtime/assets/index-yv-SCb9g.css +0 -1
- package/runtime/assets/indicators-Cw7CVPn4.js +0 -1
- package/runtime/assets/inflation-pulse-BDmh42Nq.js +0 -1
- package/runtime/assets/journal-log-BKsmm4ZL.js +0 -1
- package/runtime/assets/journal-open-CQtXIVzV.js +0 -1
- package/runtime/assets/journal-results-BBhWJDi4.js +0 -1
- package/runtime/assets/journal-score-DRmD6tOH.js +0 -1
- package/runtime/assets/journal-store-DVDSxNMj.js +0 -1
- package/runtime/assets/journal-ui-YZ5om8r6.js +0 -1
- package/runtime/assets/labor-force-flow-B-8gZXZw.js +0 -1
- package/runtime/assets/labor-market-C6nbrubk.js +0 -1
- package/runtime/assets/lightning-stats-cbygNRrq.js +0 -1
- package/runtime/assets/link-grid-C0BQkbQ9.js +0 -1
- package/runtime/assets/liquidity-basis-bars-Dd5FSjDX.js +0 -1
- package/runtime/assets/live-tick-9Q3ubPF9.js +0 -1
- package/runtime/assets/liveline-bcaEuskN.js +0 -1
- package/runtime/assets/ma-multiplier-CrY1aFKX.js +0 -1
- package/runtime/assets/macro-calendar-D9MJ74wW.js +0 -1
- package/runtime/assets/market-bubbles-BKLV2VSd.js +0 -1
- package/runtime/assets/market-cap-treemap-B9af5p9K.js +0 -1
- package/runtime/assets/market-data-CvmpLFSo.js +0 -1
- package/runtime/assets/market-hours-jJUnunAF.js +0 -1
- package/runtime/assets/market-scatter-_f6FvF2I.js +0 -1
- package/runtime/assets/marquee-CJGebjBa.js +0 -28
- package/runtime/assets/mayer-multiple-DcxCnx6X.js +0 -1
- package/runtime/assets/mempool-fee-curve-yI10fMrE.js +0 -1
- package/runtime/assets/metric-row-BVVhjsjK.js +0 -1
- package/runtime/assets/mini-line-chart-DyG55cVW.js +0 -1
- package/runtime/assets/mining-pools-SIhc1qJ_.js +0 -1
- package/runtime/assets/mining-pools-share-DQSjhlWH.js +0 -1
- package/runtime/assets/misery-index-p5iEl6PS.js +0 -1
- package/runtime/assets/mover-row-_czAON2U.js +0 -1
- package/runtime/assets/movers-bars-clMvsESM.js +0 -1
- package/runtime/assets/movers-bubbles-CnHOfNZx.js +0 -1
- package/runtime/assets/mvrv-x4gyjhWx.js +0 -1
- package/runtime/assets/mvrv-zscore-chart-BT3IGmGY.js +0 -1
- package/runtime/assets/national-debt-DNtVgcl5.js +0 -1
- package/runtime/assets/news-feed-BVfKqSh7.js +0 -1
- package/runtime/assets/nft-activity-bars-lFRednN3.js +0 -1
- package/runtime/assets/nft-bubbles-ClNH9-_X.js +0 -1
- package/runtime/assets/nft-collections-B9RW4PJG.js +0 -1
- package/runtime/assets/nft-scatter--MbPsUx4.js +0 -1
- package/runtime/assets/nft-treemap-DBkTmq6-.js +0 -1
- package/runtime/assets/note-BhUZxKk8.js +0 -3
- package/runtime/assets/nupl-D3l-QZE3.js +0 -1
- package/runtime/assets/nupl-cycle-chart-BskEKMiX.js +0 -1
- package/runtime/assets/nyfed-fed-funds-band-gauge-CyShM9Rb.js +0 -1
- package/runtime/assets/nyfed-reference-rate-bars-WKmIeI9B.js +0 -1
- package/runtime/assets/nyfed-sofr-term-averages-bars-BXymij4O.js +0 -1
- package/runtime/assets/ofr-stress-category-area-Cq2zYtm9.js +0 -1
- package/runtime/assets/ohlcv-volume-bars-BqgMyH4V.js +0 -1
- package/runtime/assets/oi-treemap-Bu6FQGPf.js +0 -1
- package/runtime/assets/onchain-oscillator-overlay-BETEO4VQ.js +0 -1
- package/runtime/assets/open-interest-DPwK2Vft.js +0 -1
- package/runtime/assets/options-flow-skew-CLWqzUM0.js +0 -1
- package/runtime/assets/options-iv-tjSjFT91.js +0 -1
- package/runtime/assets/options-max-pain-multi-bMgyJ7e8.js +0 -1
- package/runtime/assets/options-max-pain-v6hCUt4V.js +0 -1
- package/runtime/assets/options-oi-ladder-heatmap-M34leT_q.js +0 -1
- package/runtime/assets/options-oi-skew-DxGLV4Co.js +0 -1
- package/runtime/assets/options-oi-strike-CoVTVWcx.js +0 -1
- package/runtime/assets/options-put-call-fRylJJIM.js +0 -1
- package/runtime/assets/options-vol-smile-DsHa2Bug.js +0 -1
- package/runtime/assets/options-vol-spread-BB1X9lml.js +0 -1
- package/runtime/assets/payrolls-bars-CQOZQEvE.js +0 -1
- package/runtime/assets/pi-cycle-BTdRfEfm.js +0 -1
- package/runtime/assets/pie-chart-BIxKuHm-.js +0 -1
- package/runtime/assets/pomodoro-lYAXlnH5.js +0 -1
- package/runtime/assets/portfolio-allocation-CJCJ-fv5.js +0 -1
- package/runtime/assets/portfolio-common-BMRwgiXd.js +0 -1
- package/runtime/assets/portfolio-holdings-BwUpyolL.js +0 -1
- package/runtime/assets/portfolio-movers-CGcHyyU9.js +0 -1
- package/runtime/assets/portfolio-value--mB-D1zn.js +0 -1
- package/runtime/assets/portfolio-value-bars-C1sg3z_9.js +0 -1
- package/runtime/assets/prediction-market-bars-CV7qn0TK.js +0 -1
- package/runtime/assets/prediction-market-scatter-vvAyUSMc.js +0 -1
- package/runtime/assets/prediction-markets-Dj5pUGQ9.js +0 -1
- package/runtime/assets/prediction-markets-bubble-Dy58nx5D.js +0 -1
- package/runtime/assets/price-chart-BWVJKy6l.js +0 -1
- package/runtime/assets/price-compare-X_somRkJ.js +0 -1
- package/runtime/assets/price-liveline-BcfvYH4i.js +0 -1
- package/runtime/assets/price-ticker-Dp5X5iEE.js +0 -1
- package/runtime/assets/protocol-fees-bubbles-cOlmopfM.js +0 -1
- package/runtime/assets/protocol-fees-treemap-k3DCqpib.js +0 -1
- package/runtime/assets/protocol-fees-vs-tvl-scatter-DE0XqWUP.js +0 -1
- package/runtime/assets/protocol-tvl-bubbles-C_y8RNpr.js +0 -1
- package/runtime/assets/protocol-tvl-by-category-CU3EhtYv.js +0 -1
- package/runtime/assets/protocol-tvl-chart-BSjYp87K.js +0 -1
- package/runtime/assets/protocol-tvl-share-area-A9uUDjqD.js +0 -1
- package/runtime/assets/protocol-tvl-treemap-DK99PI9E.js +0 -1
- package/runtime/assets/puell-multiple-DUwx8WAi.js +0 -1
- package/runtime/assets/put-call-gauge-wPFbaG0I.js +0 -1
- package/runtime/assets/quote-BEXrdAL4.js +0 -1
- package/runtime/assets/radial-gauge-0BzRQ6fO.js +0 -1
- package/runtime/assets/rates-board-Bo-1vZL3.js +0 -1
- package/runtime/assets/react-qoZPGuNy.js +0 -49
- package/runtime/assets/real-wages-DFbQjlXf.js +0 -1
- package/runtime/assets/realized-price-C7sCYZ-5.js +0 -1
- package/runtime/assets/reserve-risk-CYWr6Bnu.js +0 -1
- package/runtime/assets/returns-projector-Bitu8mA2.js +0 -1
- package/runtime/assets/risk-reward-5CA4dPWK.js +0 -1
- package/runtime/assets/rsi-momentum-BdScXy4t.js +0 -1
- package/runtime/assets/rules-card-BxdIuORn.js +0 -1
- package/runtime/assets/scatter-chart-B78EA7lD.js +0 -1
- package/runtime/assets/scene-uwfOGek1.js +0 -1
- package/runtime/assets/sector-bars-B4Nabix2.js +0 -1
- package/runtime/assets/sector-bubbles-D_s1FnKb.js +0 -1
- package/runtime/assets/sector-performance-C8K8FBsp.js +0 -1
- package/runtime/assets/sector-treemap-DOn3li5j.js +0 -1
- package/runtime/assets/sentiment-gauge-D-TyqTrT.js +0 -1
- package/runtime/assets/session-progress-2uZKU_tb.js +0 -1
- package/runtime/assets/short-volume-DrAqZxL_.js +0 -1
- package/runtime/assets/short-volume-bars-D0tDnbRp.js +0 -1
- package/runtime/assets/snake-CPrCYXRC.js +0 -1
- package/runtime/assets/sopr-CL-DcV9H.js +0 -1
- package/runtime/assets/spotify-embed-Cuyo3WcD.js +0 -1
- package/runtime/assets/stablecoin-chains-BNyBP4r7.js +0 -1
- package/runtime/assets/stablecoin-supply-CDoJSW65.js +0 -1
- package/runtime/assets/stopwatch-C5UbM7BR.js +0 -1
- package/runtime/assets/top-movers-n7gjNCAB.js +0 -1
- package/runtime/assets/treasury-auction-demand-scatter-B2GgfweB.js +0 -1
- package/runtime/assets/treasury-auction-size-bars-RSKrqPZN.js +0 -1
- package/runtime/assets/treasury-auctions-DmhLNhux.js +0 -1
- package/runtime/assets/treasury-avg-rate-bars-CHo7_TZ6.js +0 -1
- package/runtime/assets/treasury-debt-composition-area-D9TIg2Fu.js +0 -1
- package/runtime/assets/treemap-leaf-QG-L-SIG.js +0 -1
- package/runtime/assets/trending-bars-CFUOf_2T.js +0 -1
- package/runtime/assets/trending-bubbles-CWixlrYZ.js +0 -1
- package/runtime/assets/trending-coins-XmlyMu9W.js +0 -1
- package/runtime/assets/tvl-bars-CMr0p3wy.js +0 -1
- package/runtime/assets/tvl-bubbles-CBwy6njm.js +0 -1
- package/runtime/assets/tvl-treemap-Df9Sw5pQ.js +0 -1
- package/runtime/assets/ui-Bq3RQsdJ.js +0 -1
- package/runtime/assets/use-countdown-BmcF-qdL.js +0 -1
- package/runtime/assets/utils-DxneYyA_.js +0 -1
- package/runtime/assets/video-Cb7G8kra.js +0 -1
- package/runtime/assets/volume-movers-scatter-MwF5sr-K.js +0 -1
- package/runtime/assets/volume-profile-DM349em1.js +0 -1
- package/runtime/assets/volume-share-donut-FMessqoh.js +0 -1
- package/runtime/assets/yield-composition-scatter-51jp_MgP.js +0 -1
- package/runtime/assets/yield-curve-WOaDSVNR.js +0 -1
- package/runtime/assets/yield-momentum-bars-0hhg35dJ.js +0 -1
- package/runtime/assets/yield-risk-pie-mBxQGJN1.js +0 -1
- package/runtime/assets/yield-scanner-DTDsWH9C.js +0 -1
- package/runtime/assets/yield-scatter-BkeRhOK4.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./liveline-BV-xqAVq.js";import{D as t}from"./hooks-CLLchjg6.js";import{f as n}from"./format-DWMrfgke.js";import{t as r}from"./ui-CYz5SGgR.js";import{t as i}from"./radial-gauge-DUhIBGcM.js";import{G as a,Ri as o}from"./index-9oCCAb1t.js";var s=e();a.schema;var c=`hsl(var(--zf-accent-hue, 242) 82% 70%)`;function l({config:e}){let{market:a,isLoading:o}=t();if(o)return(0,s.jsx)(r,{loading:!0,children:`loading dominance…`});if(!a)return(0,s.jsx)(r,{children:`no market data yet`});let l=a.dominance[e.coin]??0,u=e.coin.toUpperCase();return(0,s.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-1`,children:[(0,s.jsxs)(i,{value:l,min:0,max:100,color:c,size:170,children:[(0,s.jsx)(`div`,{className:`metric-xl leading-none`,style:{color:c,textShadow:`0 0 28px hsl(var(--zf-accent-hue, 242) 82% 70% / 0.33)`},children:n(l,1)}),(0,s.jsxs)(`div`,{className:`caption text-soft mt-1 uppercase tracking-wide`,children:[u,` dominance`]})]}),(0,s.jsx)(`div`,{className:`caption text-soft`,children:`share of total market cap`})]})}var u=o({...a,component:l});export{u as dominanceGaugeFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{t as r}from"./ui-CYz5SGgR.js";import{K as i,Ri as a}from"./index-9oCCAb1t.js";var o=e(n(),1),s=t();function c(){let[e,t]=(0,o.useState)(`loading`);return e===`error`?(0,s.jsx)(r,{children:`canvas unavailable`}):(0,s.jsxs)(`div`,{className:`relative h-full w-full overflow-hidden rounded-md`,children:[e===`loading`&&(0,s.jsx)(`div`,{className:`absolute inset-0 z-10`,children:(0,s.jsx)(r,{loading:!0,children:`loading canvas…`})}),(0,s.jsx)(`iframe`,{src:`https://drawdy.io`,title:`Drawdy Canvas`,className:`h-full w-full border-0 transition-opacity duration-300 ${e===`loaded`?`opacity-100`:`opacity-0`}`,allow:`clipboard-read; clipboard-write`,onLoad:()=>t(`loaded`),onError:()=>t(`error`)})]})}var l=a({...i,component:c});export{l as drawdyFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./liveline-BV-xqAVq.js";import{v as t}from"./hooks-CLLchjg6.js";import{a as n,s as r}from"./format-DWMrfgke.js";import{t as i}from"./ui-CYz5SGgR.js";import{n as a,t as o}from"./cycle-shared-D8LQcBSw.js";import{J as s,Ri as c}from"./index-9oCCAb1t.js";var l=e();function u(){let{dxy:e,isLoading:s}=t();if(s)return(0,l.jsx)(i,{loading:!0,children:`loading DXY…`});if(!e)return(0,l.jsx)(i,{children:`no FX data yet`});let c=n(e.changePct);return(0,l.jsx)(o,{caption:`US Dollar Index`,headline:e.value.toFixed(2),headlineColor:a,zone:{label:e.changePct>=0?`Stronger USD`:`Weaker USD`,color:c},sub:r(e.changePct),sparkline:e.history,sparkColor:c})}var d=c({...s,component:u});export{d as dxyFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{v as r}from"./hooks-CLLchjg6.js";import{i,n as a}from"./format-DWMrfgke.js";import{t as o}from"./ui-CYz5SGgR.js";import{t as s}from"./multi-series-line-chart-XRttVKf5.js";import{t as c}from"./timeframe-DUDLPk23.js";import{Ri as l,q as u}from"./index-9oCCAb1t.js";var d=e(n(),1),f=t(),p=e=>e.toFixed(2);function m(){let{dxy:e,isLoading:t}=r(),n=(0,d.useMemo)(()=>e?[{id:`dxy`,name:`DXY`,color:e.changePct>=0?i:a,data:e.history.map(e=>({date:new Date(e.time).toISOString(),value:e.value}))}]:[],[e]);return t?(0,f.jsx)(o,{loading:!0,children:`loading DXY…`}):n.length===0||n[0].data.length===0?(0,f.jsx)(o,{children:`no FX data yet`}):(0,f.jsx)(s,{series:n,timeframe:c[`1M`],height:220,formatValue:p})}var h=l({...u,component:m});export{h as dxyChartFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.zf-editor{--zf-accent:hsl(var(--zf-accent-hue,242) var(--zf-accent-sat,90%) 76%);--font-dmsans:var(--zf-font-family,"DM Sans", sans-serif);--zf-ease-out:cubic-bezier(.23, 1, .32, 1);--zf-ease-drawer:cubic-bezier(.32, .72, 0, 1);position:relative}.zf-editor-main{align-items:flex-start;display:flex}.zf-editor-grid{min-width:0;min-height:360px;padding-inline:var(--zf-pad-x,0);transition:border-color .2s var(--zf-ease-out), opacity .24s var(--zf-ease-out), filter .24s var(--zf-ease-out), transform .24s var(--zf-ease-out);border:1px dashed #0000;border-radius:18px;flex:1}.zf-editor-grid[data-switching=true]{opacity:.15;filter:blur(10px);transition:opacity .14s var(--zf-ease-out), filter .14s var(--zf-ease-out), transform .14s var(--zf-ease-out);transform:scale(.985)}@media (prefers-reduced-motion:reduce){.zf-editor-grid[data-switching=true]{filter:none;transform:none}}.zf-editor.zf-customise .zf-editor-grid{border-color:#ffffff14}.zf-editor[data-surface=light] .zf-editor-grid{background:#eef0f4}.zf-editor[data-surface=light].zf-customise .zf-editor-grid{border-color:#0000001a}.zf-editor[data-mode=flow-horizontal] .zf-editor-grid{overflow:auto hidden}.zf-editor .grid-stack>.grid-stack-item>.grid-stack-item-content{overflow:visible}@media (hover:hover){.zf-editor:not(.zf-customise) .grid-stack-item-content:hover>.zf-frame{border-color:var(--zf-frame-border-hover,hsl(var(--zf-accent-hue,242) 90% 76% / .42));transform:translateY(-2px)}.zf-editor:not(.zf-customise) .grid-stack-item-content:hover>.zf-frame:not(.zf-frame--error):after{opacity:1}}.zf-fill{width:100%;height:100%}.zf-editor .zf-frame,.zf-editor .zf-bare{animation:none}.zf-editor.zf-customise .grid-stack-item>.grid-stack-item-content{outline-offset:-2px;transition:outline-color .2s var(--zf-ease-out);border-radius:18px;outline:2px dashed #ffffff14}.zf-editor.zf-customise .grid-stack-item>.grid-stack-item-content>*{pointer-events:none}.zf-editor.zf-customise .grid-stack-item:hover>.grid-stack-item-content{outline-color:var(--zf-accent)}.zf-editor.zf-customise .grid-stack-item>.grid-stack-item-content{cursor:grab}body.zf-dragging,body.zf-dragging *{cursor:grabbing!important}@keyframes zf-wiggle{0%,to{transform:rotate(-.4deg)}50%{transform:rotate(.4deg)}}.zf-editor.zf-customise:not([data-wiggle=off]) .grid-stack-item>.grid-stack-item-content{animation:.32s ease-in-out infinite zf-wiggle}.zf-editor.zf-customise .grid-stack-item:nth-child(2n)>.grid-stack-item-content{animation-duration:.28s;animation-delay:50ms}.zf-editor.zf-customise .grid-stack-item:nth-child(3n)>.grid-stack-item-content{animation-duration:.34s;animation-delay:.1s}.zf-editor.zf-customise .grid-stack-item:nth-child(5n)>.grid-stack-item-content{animation-duration:.26s;animation-delay:.15s}.zf-editor.zf-customise .grid-stack-item.ui-draggable-dragging>.grid-stack-item-content,.zf-editor.zf-customise .grid-stack-item.ui-resizing>.grid-stack-item-content{animation:none}@media (prefers-reduced-motion:reduce){.zf-editor.zf-customise .grid-stack-item>.grid-stack-item-content{animation:none}}.zf-del-btn{color:#fff;cursor:pointer;opacity:0;-webkit-backdrop-filter:blur(12px)saturate(150%);backdrop-filter:blur(12px)saturate(150%);width:24px;height:24px;transition:opacity .2s var(--zf-ease-out), transform .2s var(--zf-ease-out), background .2s var(--zf-ease-out), border-color .2s var(--zf-ease-out), box-shadow .2s var(--zf-ease-out);z-index:100;background:linear-gradient(#f87171d1,#dc2626db);border:1px solid #ffffff47;border-radius:9999px;justify-content:center;align-items:center;padding:0;font-size:14px;font-weight:700;line-height:1;display:flex;position:absolute;top:0;right:0;transform:scale(.8);box-shadow:inset 0 1px #ffffff59,0 1px 2px #0000004d,0 8px 20px -12px #dc2626b3}.zf-del-btn:hover{background:linear-gradient(#f87171f2,#dc2626fa);border-color:#ffffff6b;transform:scale(1.1);box-shadow:inset 0 1px #ffffff6b,0 2px 6px #00000052,0 12px 26px -12px #dc2626d9}.zf-del-btn:active{transition-duration:0s;transform:scale(.98)}.zf-editor.zf-customise .grid-stack-item:hover>.zf-del-btn{opacity:1;transform:scale(1)}.zf-cfg-btn{color:#ffffffeb;cursor:pointer;opacity:0;-webkit-backdrop-filter:blur(14px)saturate(150%);backdrop-filter:blur(14px)saturate(150%);width:24px;height:24px;transition:opacity .2s var(--zf-ease-out), transform .2s var(--zf-ease-out), color .2s var(--zf-ease-out), border-color .2s var(--zf-ease-out), box-shadow .2s var(--zf-ease-out);z-index:100;background:linear-gradient(#262838b8,#13141fc7);border:1px solid #ffffff29;border-radius:9999px;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;top:0;right:28px;transform:scale(.8);box-shadow:inset 0 1px #ffffff1a,0 1px 2px #00000052,0 8px 20px -12px #000c}.zf-cfg-btn:hover{color:hsl(var(--zf-accent-hue,242) 96% 82%);border-color:hsl(var(--zf-accent-hue,242) 90% 76% / .6);transform:scale(1.1);box-shadow:inset 0 1px #ffffff24,0 2px 6px #00000057,0 12px 26px -14px #000000d1}.zf-cfg-btn:active{transition-duration:0s;transform:scale(.98)}.zf-cfg-btn>svg{display:block}.zf-editor.zf-customise .grid-stack-item:hover>.zf-cfg-btn{opacity:1;transform:scale(1)}.zf-editor .grid-stack-placeholder>.placeholder-content{background:hsl(var(--zf-accent-hue,242) 90% 76% / .15);border:2px dashed hsl(var(--zf-accent-hue,242) 90% 76% / .55);border-radius:18px}.ui-draggable-dragging>.zf-drag-ghost{box-sizing:border-box;border:1px solid hsl(var(--zf-accent-hue,242) var(--zf-accent-sat,90%) 76% / .55);width:100%;height:100%;box-shadow:inset 0 1px 0 #ffffff14, 0 22px 50px -20px #000000d9, 0 0 0 1px hsl(var(--zf-accent-hue,242) var(--zf-accent-sat,90%) 76% / .22);color:#eef1f8;font-family:var(--font-dmsans,"DM Sans", system-ui, sans-serif);-webkit-backdrop-filter:blur(10px)saturate(140%);backdrop-filter:blur(10px)saturate(140%);direction:ltr;background:linear-gradient(165deg,#222332f2,#0d0e15f5);border-radius:12px;align-items:center;gap:10px;padding:0 14px;display:flex;overflow:hidden}.ui-draggable-dragging>.zf-drag-ghost>.zf-drag-ghost-icon{object-fit:cover;border-radius:7px;flex:none;width:30px;height:30px}.ui-draggable-dragging>.zf-drag-ghost>.zf-drag-ghost-name{letter-spacing:.01em;text-transform:capitalize;white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:700;overflow:hidden}:is(body:has(.ui-draggable-dragging),body:has(.ui-draggable-dragging) *){cursor:grabbing!important}.zf-editor-bar{justify-content:flex-end;align-items:center;gap:8px;margin-bottom:14px;display:flex}.zf-editor-bar-spacer{flex:1}.zf-btn{font:inherit;cursor:pointer;color:#ffffffeb;-webkit-backdrop-filter:blur(14px)saturate(150%);backdrop-filter:blur(14px)saturate(150%);transition:background .18s var(--zf-ease-out), border-color .18s var(--zf-ease-out), color .18s var(--zf-ease-out), box-shadow .18s var(--zf-ease-out), transform .18s var(--zf-ease-out);background:linear-gradient(#262838b8,#13141fc7);border:1px solid #ffffff24;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:9px 15px;font-size:13px;font-weight:600;line-height:1;display:inline-flex;box-shadow:inset 0 1px #ffffff14,0 1px 2px #00000052,0 10px 24px -14px #000c}.zf-btn:hover{background:linear-gradient(#323447d1,#1a1b29db);border-color:#ffffff38;transform:translateY(-1px);box-shadow:inset 0 1px #ffffff1a,0 2px 6px #00000057,0 16px 30px -16px #000000d1}.zf-btn:active{transition-duration:0s;transform:translateY(0)scale(.97);box-shadow:inset 0 1px 3px #00000073,0 1px 2px #0000004d}.zf-btn:focus-visible{border-color:hsl(var(--zf-accent-hue,242) 90% 76% / .7);box-shadow:inset 0 1px 0 #ffffff14, 0 0 0 3px hsl(var(--zf-accent-hue,242) 90% 76% / .35);outline:none}.zf-btn--primary{border-color:hsl(var(--zf-accent-hue,242) 90% 72% / .7);background:linear-gradient(180deg, hsl(var(--zf-accent-hue,242) 96% 81%), hsl(var(--zf-accent-hue,242) 88% 72%));color:#0b0c13;box-shadow:inset 0 1px 0 #fff6, 0 1px 2px #0000004d, 0 12px 26px -12px hsl(var(--zf-accent-hue,242) 85% 60% / .7)}.zf-btn--primary:hover{border-color:hsl(var(--zf-accent-hue,242) 95% 78% / .85);background:linear-gradient(180deg, hsl(var(--zf-accent-hue,242) 100% 85%), hsl(var(--zf-accent-hue,242) 92% 76%));box-shadow:inset 0 1px 0 #ffffff73, 0 2px 6px #0000004d, 0 18px 34px -14px hsl(var(--zf-accent-hue,242) 85% 60% / .8)}.zf-btn--primary:focus-visible{box-shadow:inset 0 1px 0 #fff6, 0 0 0 3px hsl(var(--zf-accent-hue,242) 90% 76% / .45)}.zf-btn--danger{color:#ff9aab;border-color:#f2155352}.zf-btn--danger:hover{color:#ffb3bf;background:linear-gradient(#781c349e,#4a1224b8);border-color:#f215538c}.zf-btn--danger:focus-visible{border-color:#f21553b3;box-shadow:inset 0 1px #ffffff14,0 0 0 3px #f2155359}.zf-btn--ghost{color:#ffffffc7;background:linear-gradient(#1e1f2c80,#10111a94);border-color:#ffffff1a}.zf-btn--ghost:hover{color:#fffffff2}.zf-btn--icon{color:#ffffffd9;border-radius:11px;width:38px;height:38px;padding:0}.zf-btn--icon:hover{color:hsl(var(--zf-accent-hue,242) 96% 82%);border-color:hsl(var(--zf-accent-hue,242) 90% 76% / .55)}.zf-btn--icon>svg{display:block}@media (prefers-reduced-motion:reduce){.zf-btn:hover,.zf-btn:active,.zf-del-btn:active,.zf-cfg-btn:active,.zf-rail-tab:active,.zf-dialog-close:active{transform:none}}.zf-rail{width:0;transition:width .32s var(--zf-ease-drawer), margin-left .32s var(--zf-ease-drawer);flex:none;margin-left:0;position:sticky;top:12px;overflow:hidden}.zf-editor.zf-customise .zf-rail{width:320px;margin-left:16px}.zf-editor.zf-customise[data-mode=flow-horizontal] .zf-rail{margin-right:24px}.zf-rail-inner{box-sizing:border-box;opacity:0;width:320px;max-height:calc(100vh - 24px);transition:opacity .2s var(--zf-ease-out);background:linear-gradient(#141622b3,#0b0c13cc);border:1px solid #ffffff14;border-radius:14px;flex-direction:column;gap:12px;padding:14px;display:flex;overflow:hidden auto}.zf-editor.zf-customise .zf-rail-inner{opacity:1;transition-delay:.12s}.zf-rail-actions{flex:none;gap:8px;display:flex}.zf-rail-actions .zf-btn{flex:1}.zf-rail-scroll{flex-direction:column;flex:1;gap:16px;min-height:0;display:flex;overflow-y:auto}@media (prefers-reduced-motion:reduce){.zf-rail,.zf-rail-inner{transition:none}}.zf-rail-tabs{background:#00000047;border:1px solid #ffffff12;border-radius:9px;gap:4px;padding:3px;display:flex}.zf-rail-tab{font:inherit;letter-spacing:.04em;color:#ffffff80;cursor:pointer;transition:background .15s var(--zf-ease-out), color .15s var(--zf-ease-out), box-shadow .15s var(--zf-ease-out), transform .15s var(--zf-ease-out);background:0 0;border:0;border-radius:7px;flex:1;padding:6px 8px;font-size:11px;font-weight:600}.zf-rail-tab:hover{color:#ffffffd1}.zf-rail-tab:active{transition-duration:0s;transform:scale(.97)}.zf-rail-tab.is-active{color:#fff;background:hsl(var(--zf-accent-hue,242) 90% 70% / .22);box-shadow:inset 0 0 0 1px hsl(var(--zf-accent-hue,242) 90% 76% / .4)}.zf-rail-tab:focus-visible{outline:2px solid hsl(var(--zf-accent-hue,242) 90% 76% / .7);outline-offset:1px}.zf-mode-seg{background:#00000047;border:1px solid #ffffff12;border-radius:9px;gap:4px;padding:3px;display:flex}.zf-mode-seg-btn{font:inherit;letter-spacing:.04em;color:#ffffff80;cursor:pointer;transition:background .15s var(--zf-ease-out), color .15s var(--zf-ease-out), box-shadow .15s var(--zf-ease-out), transform .15s var(--zf-ease-out);background:0 0;border:0;border-radius:7px;flex:1;padding:6px 8px;font-size:11px;font-weight:600}.zf-mode-seg-btn:hover:not(:disabled){color:#ffffffd1}.zf-mode-seg-btn:active:not(:disabled){transition-duration:0s;transform:scale(.97)}.zf-mode-seg-btn.is-active{color:#fff;background:hsl(var(--zf-accent-hue,242) 90% 70% / .22);box-shadow:inset 0 0 0 1px hsl(var(--zf-accent-hue,242) 90% 76% / .4)}.zf-mode-seg-btn:disabled{opacity:.4;cursor:not-allowed}.zf-mode-seg-btn:focus-visible{outline:2px solid hsl(var(--zf-accent-hue,242) 90% 76% / .7);outline-offset:1px}.zf-mode-seg-hint{color:#ffffff6b;margin:8px 1px 0;font-size:10.5px;line-height:1.4}.zf-rail-title{letter-spacing:.12em;text-transform:uppercase;color:#ffffff75;margin:0 0 8px;font-size:10px;font-weight:700}.zf-palette-hint{color:#fff6;margin:-4px 0 8px;font-size:11px}.zf-palette-search{color:#ffffff7a;background:#00000047;border:1px solid #ffffff1c;border-radius:9px;align-items:center;gap:7px;height:34px;margin:0 0 8px;padding:0 9px;display:flex}.zf-palette-search:focus-within{border-color:var(--zf-accent);box-shadow:0 0 0 3px hsl(var(--zf-accent-hue,242) 90% 76% / .12)}.zf-palette-search input{color:#ffffffe6;min-width:0;font:inherit;background:0 0;border:0;outline:0;flex:1;padding:0;font-size:12px}.zf-palette-search input::placeholder{color:#ffffff57}.zf-palette-search-clear{color:#ffffff80;cursor:pointer;width:18px;height:18px;transition:background .15s var(--zf-ease-out), color .15s var(--zf-ease-out);background:0 0;border:0;border-radius:5px;flex:none;justify-content:center;align-items:center;padding:0;display:flex}.zf-palette-search-clear:hover{color:#fff;background:#ffffff14}.zf-palette-search-clear svg{width:12px;height:12px}.zf-palette-empty{color:#ffffff73;margin:0;padding:6px 2px;font-size:12px}.zf-palette-cats{flex-direction:column;gap:6px;display:flex}.zf-palette-cat{transition:background .15s var(--zf-ease-out), border-color .15s var(--zf-ease-out);background:#ffffff05;border:1px solid #ffffff0f;border-radius:10px;overflow:hidden}.zf-palette-cat.is-open{background:#ffffff09;border-color:#ffffff1a}.zf-palette-cat-header{width:100%;font:inherit;text-align:left;cursor:pointer;color:#fffc;transition:background .15s var(--zf-ease-out), color .15s var(--zf-ease-out);background:0 0;border:0;align-items:center;gap:9px;padding:10px 11px;display:flex}.zf-palette-cat-header:hover{color:#fff;background:#ffffff0b}.zf-palette-cat-header:focus-visible{outline:2px solid hsl(var(--zf-accent-hue,242) 90% 76% / .7);outline-offset:-2px}.zf-palette-cat-chevron{color:#fff6;width:13px;height:13px;transition:transform .18s var(--zf-ease-out), color .15s var(--zf-ease-out);flex:none}.zf-palette-cat.is-open .zf-palette-cat-chevron{color:hsl(var(--zf-accent-hue,242) 70% 80% / .9);transform:rotate(90deg)}.zf-palette-cat-label{letter-spacing:.08em;text-transform:uppercase;flex:1;min-width:0;font-size:11px;font-weight:700}.zf-palette-cat.is-open .zf-palette-cat-label{color:hsl(var(--zf-accent-hue,242) 72% 84% / .95)}.zf-palette-cat-count{font-variant-numeric:tabular-nums;color:#ffffff80;text-align:center;background:#ffffff12;border-radius:999px;flex:none;min-width:22px;padding:1px 7px;font-size:10px;font-weight:600}.zf-palette-cat-body{animation:zf-cat-in .18s var(--zf-ease-out);padding:0 8px 9px}@keyframes zf-cat-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.zf-palette-cat-body{animation:none}.zf-palette-cat-chevron{transition:none}}.zf-palette-cat-desc{color:#ffffff61;margin:0 2px 9px;font-size:10.5px;line-height:1.45}.zf-palette{flex-direction:column;gap:6px;display:flex}.zf-newwidget{text-align:left;cursor:grab;-webkit-user-select:none;user-select:none;min-height:58px;transition:background .15s var(--zf-ease-out), border-color .15s var(--zf-ease-out);background:#ffffff0a;border:1px solid #ffffff12;border-radius:9px;align-items:center;gap:10px;padding:7px 10px 7px 8px;display:flex}.zf-newwidget:hover{border-color:hsl(var(--zf-accent-hue,242) 90% 76% / .4);background:#ffffff17}.zf-newwidget:active{cursor:grabbing}.zf-newwidget-icon{object-fit:cover;background:#ffffff0d;border-radius:10px;flex:none;width:42px;height:42px;box-shadow:inset 0 0 0 1px #ffffff14,0 8px 18px #00000038}.zf-newwidget-copy{min-width:0}.zf-newwidget-name{color:#ffffffe6;text-transform:capitalize;font-size:12px;font-weight:600}.zf-newwidget-desc{color:#fff6;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:2px;font-size:11px;display:-webkit-box;overflow:hidden}.zf-field{flex-direction:column;gap:5px;margin-bottom:10px;display:flex}.zf-field label{color:#ffffff8c;font-size:11px}.zf-field-hint{color:#ffffff61;margin:0;font-size:10px;line-height:1.4}.zf-input,.zf-textarea{font:inherit;color:#ffffffe6;box-sizing:border-box;background:#0000004d;border:1px solid #ffffff1f;border-radius:7px;width:100%;padding:7px 9px;font-size:12px}.zf-textarea{resize:vertical;min-height:120px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;line-height:1.45}.zf-input:focus,.zf-textarea:focus{border-color:var(--zf-accent);outline:none}.zf-checkbox{color:#ffffffb3;cursor:pointer;align-items:center;gap:7px;margin-bottom:10px;font-size:12px;display:flex}.zf-config-error{color:#ff8b9d;white-space:pre-wrap;margin:-4px 0 10px;font-size:11px;line-height:1.45}.zf-rail-empty{color:#fff6;font-size:12px;line-height:1.5}.zf-style-panel{border-top:1px solid #ffffff14;margin-top:6px;padding-top:12px}.zf-style-head{width:100%;font:inherit;color:#ffffffb3;cursor:pointer;background:0 0;border:none;align-items:center;gap:7px;padding:0;font-size:12px;font-weight:600;display:flex}.zf-style-head:hover{color:#ffffffeb}.zf-style-chevron{transition:transform .18s var(--zf-ease-out,ease);flex:none}.zf-style-panel.is-open .zf-style-chevron{transform:rotate(180deg)}.zf-style-head-label{margin-right:auto}.zf-style-count{background:var(--zf-accent);color:#0b0c13;text-align:center;border-radius:9999px;min-width:16px;height:16px;padding:0 5px;font-size:10px;font-weight:700;line-height:16px}.zf-style-clear{letter-spacing:.1em;text-transform:uppercase;color:#ffffff61;cursor:pointer;font-size:10px}.zf-style-clear:hover{color:var(--zf-accent)}.zf-style-body{margin-top:10px}.zf-style-field{margin-bottom:12px}.zf-style-toggle{cursor:pointer;align-items:center;gap:7px;margin:0;display:inline-flex}.zf-style-toggle input{cursor:pointer}.zf-select{font:inherit;color:#ffffffe6;box-sizing:border-box;cursor:pointer;appearance:none;background:#0000004d url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-opacity='0.55' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") right 9px center no-repeat;border:1px solid #ffffff1f;border-radius:7px;width:100%;padding:7px 28px 7px 9px;font-size:12px}.zf-select:focus{border-color:var(--zf-accent);outline:none}.zf-select option{color:#0b0c13}.zf-field-row{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.zf-field-num{font-variant-numeric:tabular-nums;color:#ffffffd1;font-size:12px;font-weight:700}.zf-range{appearance:none;cursor:pointer;background:#ffffff21;border-radius:9999px;outline:none;width:100%;height:6px;margin:4px 0 2px}.zf-range::-webkit-slider-thumb{appearance:none;background:var(--zf-accent);cursor:pointer;border:2px solid #fff;border-radius:9999px;width:15px;height:15px;box-shadow:0 1px 4px #00000080}.zf-range::-moz-range-thumb{background:var(--zf-accent);cursor:pointer;border:2px solid #fff;border-radius:9999px;width:15px;height:15px;box-shadow:0 1px 4px #00000080}.zf-range:focus-visible{box-shadow:0 0 0 3px hsl(var(--zf-accent-hue,242) 90% 76% / .3)}.zf-color-row{gap:8px;display:flex}.zf-color{cursor:pointer;background:#0000004d;border:1px solid #ffffff1f;border-radius:7px;flex:none;width:40px;height:34px;padding:2px}.zf-textarea--prose{min-height:76px;font-family:inherit}.zf-taglist{flex-wrap:wrap;gap:6px;margin-bottom:2px;display:flex}.zf-tag{letter-spacing:.02em;color:#ffffffd1;background:#0000003d;border:1px solid #ffffff1a;border-radius:9999px;align-items:center;gap:5px;padding:4px 5px 4px 9px;font-size:11px;font-weight:600;display:inline-flex}.zf-symbol-editor{border:1px solid hsl(var(--zf-accent-hue,242) 90% 76% / .16);background:linear-gradient(135deg, hsl(var(--zf-accent-hue,242) 90% 76% / .1), #ffffff09 45%, #00000029), #ffffff08;border-radius:11px;flex-direction:column;gap:9px;margin:0 0 12px;padding:10px;display:flex;position:relative}.zf-symbol-head,.zf-holding-row,.zf-holding-main,.zf-selected-symbol,.zf-symbol-search,.zf-symbol-chip{align-items:center;display:flex}.zf-symbol-head{justify-content:space-between;gap:10px}.zf-symbol-label{letter-spacing:.11em;text-transform:uppercase;color:#ffffff75;font-size:10px;font-weight:700}.zf-symbol-detail{color:#ffffffe0;margin-top:2px;font-size:13px;font-weight:700}.zf-symbol-source{letter-spacing:.05em;text-transform:uppercase;color:#ffffff7a;background:#0003;border:1px solid #ffffff17;border-radius:9999px;flex:none;padding:4px 7px;font-size:10px;font-weight:700}.zf-symbol-source.is-loading{color:var(--zf-accent);border-color:hsl(var(--zf-accent-hue,242) 90% 76% / .24)}.zf-selected-symbol{background:#00000038;border:1px solid #ffffff14;border-radius:9px;gap:8px;min-width:0;padding:7px 8px}.zf-selected-symbol.is-compact{background:0 0;border:0;gap:6px;padding:0}.zf-selected-symbol-text{flex-direction:column;gap:1px;min-width:0;display:flex}.zf-selected-symbol-text strong,.zf-symbol-option-main strong{text-overflow:ellipsis;white-space:nowrap;color:#ffffffe6;min-width:0;font-size:12px;overflow:hidden}.zf-selected-symbol-text em,.zf-symbol-option-main em{text-overflow:ellipsis;white-space:nowrap;color:#fff6;min-width:0;font-size:10px;font-style:normal;overflow:hidden}.zf-selected-symbol-price{font-variant-numeric:tabular-nums;color:#ffffffb8;margin-left:auto;font-size:12px;font-weight:700}.zf-symbol-avatar{letter-spacing:.02em;border-radius:7px;flex:none;justify-content:center;align-items:center;width:22px;height:22px;font-size:9px;font-weight:800;line-height:1;display:inline-flex}.zf-symbol-avatar--stock{color:#151821;background:#ffffffeb;box-shadow:inset 0 0 0 1px #00000014}.zf-symbol-avatar--crypto{background:hsl(var(--zf-accent-hue,242) 90% 76% / .18);color:var(--zf-accent);box-shadow:inset 0 0 0 1px hsl(var(--zf-accent-hue,242) 90% 76% / .22)}.zf-symbol-avatar--logo{object-fit:contain}.zf-symbol-avatar--logo.zf-symbol-avatar--stock{padding:2px}.zf-symbol-avatar--logo.zf-symbol-avatar--crypto{box-shadow:none;background:0 0;border-radius:9999px}.zf-symbol-chips{flex-wrap:wrap;gap:6px;display:flex}.zf-symbol-chip{background:#00000038;border:1px solid #ffffff14;border-radius:9999px;gap:6px;min-width:0;max-width:100%;padding:6px 6px 6px 7px}.zf-symbol-remove{cursor:pointer;color:#ffffff80;background:#ffffff0f;border:0;border-radius:9999px;flex:none;justify-content:center;align-items:center;width:20px;height:20px;padding:0;display:inline-flex}.zf-symbol-remove:hover{color:#ff8b9d;background:#ef44442e}.zf-symbol-empty{color:#ffffff5c;border:1px dashed #ffffff17;border-radius:8px;padding:7px 8px;font-size:11px}.zf-symbol-combo{position:relative}.zf-symbol-search{color:#ffffff7a;background:#00000047;border:1px solid #ffffff1c;border-radius:9px;gap:7px;height:34px;padding:0 9px}.zf-symbol-search:focus-within{border-color:var(--zf-accent);box-shadow:0 0 0 3px hsl(var(--zf-accent-hue,242) 90% 76% / .12)}.zf-symbol-search.is-disabled{opacity:.55}.zf-symbol-search input{color:#ffffffe6;min-width:0;font:inherit;background:0 0;border:0;outline:0;flex:1;padding:0;font-size:12px}.zf-symbol-search input::placeholder{color:#ffffff57}.zf-symbol-menu{z-index:120;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#0b0c13f5;border:1px solid #ffffff1f;border-radius:11px;flex-direction:column;gap:3px;max-height:286px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto;box-shadow:0 18px 36px #00000075,0 0 0 1px #0000004d}.zf-symbol-option{width:100%;min-width:0;min-height:40px;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;grid-template-columns:22px minmax(0,1fr) auto 16px;align-items:center;gap:8px;padding:7px;display:grid}.zf-symbol-option:hover,.zf-symbol-option:focus-visible{background:#ffffff13;outline:none}.zf-symbol-option:disabled{cursor:default;opacity:.52}.zf-symbol-option.is-selected{background:hsl(var(--zf-accent-hue,242) 90% 76% / .1)}.zf-symbol-option--custom{border-top:1px solid #ffffff0f;border-radius:0 0 8px 8px}.zf-symbol-option-main{flex-direction:column;gap:1px;min-width:0;display:flex}.zf-symbol-option-meta{font-variant-numeric:tabular-nums;color:#ffffff70;flex-direction:column;align-items:flex-end;gap:1px;font-size:10px;display:flex}.zf-symbol-change{font-size:10px;font-weight:800}.zf-symbol-change.is-up{color:#42d67a}.zf-symbol-change.is-down{color:#ff637d}.zf-symbol-custom-icon{width:22px;height:22px;color:var(--zf-accent);background:#ffffff12;border-radius:7px;justify-content:center;align-items:center;display:inline-flex}.zf-symbol-menu-status{color:#ffffff61;padding:10px 8px;font-size:11px}.zf-holding-list{flex-direction:column;gap:6px;display:flex}.zf-holding-row{background:#0000002e;border:1px solid #ffffff14;border-radius:9px;justify-content:space-between;gap:8px;min-width:0;padding:7px}.zf-holding-main{gap:7px;min-width:0}.zf-holding-amount{font-variant-numeric:tabular-nums;color:#ffffff70;flex:none;font-size:11px}.zf-theme{border-bottom:1px solid #ffffff12;margin-bottom:18px;padding-bottom:16px}.zf-theme-row{justify-content:space-between;align-items:center;gap:8px;margin-bottom:9px;display:flex}.zf-theme-val{font-variant-numeric:tabular-nums;color:#ffffff8c;align-items:center;gap:6px;font-size:11px;display:inline-flex}.zf-theme-swatch{background:var(--zf-accent);width:11px;height:11px;box-shadow:0 0 8px hsl(var(--zf-accent-hue,242) var(--zf-accent-sat,90%) 76% / .9);border-radius:9999px}.zf-theme-knob-end{align-items:center;gap:10px;display:inline-flex}.zf-theme-reset{font:inherit;letter-spacing:.1em;text-transform:uppercase;color:#ffffff61;cursor:pointer;background:0 0;border:none;padding:0;font-size:10px}.zf-theme-reset:hover{color:var(--zf-accent)}.zf-hue-slider{appearance:none;cursor:pointer;background:linear-gradient(90deg,#f98b8b,#f9f98b,#8bf98b,#8bf9f9,#8b8bf9,#f98bf9,#f98b8b);border:1px solid #ffffff1f;border-radius:9999px;outline:none;width:100%;height:10px}.zf-hue-slider::-webkit-slider-thumb{appearance:none;background:var(--zf-accent);cursor:pointer;border:2px solid #fff;border-radius:9999px;width:16px;height:16px;box-shadow:0 1px 4px #00000080}.zf-hue-slider::-moz-range-thumb{background:var(--zf-accent);cursor:pointer;border:2px solid #fff;border-radius:9999px;width:16px;height:16px;box-shadow:0 1px 4px #00000080}.zf-presets{grid-template-columns:1fr 1fr;gap:7px;margin-top:10px;display:grid}.zf-preset{color:#ffffffb3;font:inherit;cursor:pointer;text-align:left;transition:border-color .15s var(--zf-ease-out,ease), background .15s var(--zf-ease-out,ease), color .15s var(--zf-ease-out,ease);background:#ffffff08;border:1px solid #ffffff1a;border-radius:10px;align-items:center;gap:8px;padding:7px 9px;font-size:11px;font-weight:600;display:flex}.zf-preset:hover{color:#ffffffe6;border-color:#ffffff38}.zf-preset.is-active{border-color:var(--zf-accent);color:#fff;box-shadow:0 0 0 1px var(--zf-accent)}.zf-preset-swatch{border:1px solid #ffffff2e;border-radius:5px;flex:none;width:16px;height:16px}.zf-preset-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.zf-seg{gap:6px;display:flex}.zf-seg-btn{color:#ffffff9e;font:inherit;cursor:pointer;white-space:nowrap;transition:border-color .15s var(--zf-ease-out,ease), background .15s var(--zf-ease-out,ease), color .15s var(--zf-ease-out,ease);background:#ffffff08;border:1px solid #ffffff1a;border-radius:9px;flex:1;padding:7px 6px;font-size:11px;font-weight:600}.zf-seg-btn:hover{color:#ffffffd9;border-color:#ffffff38}.zf-seg-btn.is-active{border-color:var(--zf-accent);background:hsl(var(--zf-accent-hue,242) var(--zf-accent-sat,90%) 60% / .14);color:#fff}.zf-bg-seg{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.zf-color{appearance:none;cursor:pointer;vertical-align:middle;background:0 0;border:1px solid #ffffff2e;border-radius:5px;width:22px;height:16px;padding:0}.zf-color::-webkit-color-swatch-wrapper{padding:0}.zf-color::-webkit-color-swatch{border:none;border-radius:4px}.zf-color::-moz-color-swatch{border:none;border-radius:4px}.zf-dialog-backdrop{--zf-accent:hsl(var(--zf-accent-hue,242) var(--zf-accent-sat,90%) 76%);--zf-ease-out:cubic-bezier(.23, 1, .32, 1);z-index:1000;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:zf-dialog-fade .16s var(--zf-ease-out);background:#06070c9e;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.zf-dialog{background:linear-gradient(#141622fa,#0b0c13fc);border:1px solid #ffffff1a;border-radius:16px;flex-direction:column;width:min(440px,100%);max-height:calc(100vh - 48px);animation:.18s cubic-bezier(.32,.72,0,1) zf-dialog-pop;display:flex;box-shadow:0 30px 80px -20px #000c,0 0 0 1px #0006}.zf-dialog-head{border-bottom:1px solid #ffffff12;justify-content:space-between;align-items:center;gap:12px;padding:15px 16px 12px;display:flex}.zf-dialog-title{letter-spacing:.12em;text-transform:uppercase;color:#ffffff9e;margin:0;font-size:11px;font-weight:700}.zf-dialog-close{color:#ffffffb3;cursor:pointer;width:28px;height:28px;transition:background .15s var(--zf-ease-out), color .15s var(--zf-ease-out), border-color .15s var(--zf-ease-out), transform .15s var(--zf-ease-out);background:#ffffff0a;border:1px solid #ffffff1a;border-radius:8px;flex:none;justify-content:center;align-items:center;display:inline-flex}.zf-dialog-close:hover{color:#fff;background:#ffffff17;border-color:#ffffff2e}.zf-dialog-close:active{transition-duration:0s;transform:scale(.94)}.zf-dialog-close>svg{display:block}.zf-dialog-body{scrollbar-gutter:stable;padding:16px;overflow-y:auto}.zf-dialog-body>:first-child{margin-top:0}.zf-dialog-foot{border-top:1px solid #ffffff12;justify-content:flex-end;gap:8px;padding:12px 16px 16px;display:flex}@keyframes zf-dialog-fade{0%{opacity:0}to{opacity:1}}@keyframes zf-dialog-pop{0%{opacity:0;transform:translateY(8px)scale(.985)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.zf-dialog-backdrop,.zf-dialog{animation:none}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{n as r,t as i}from"./react-DdM8gsnR.js";import{$ as a,t as o}from"./hooks-CLLchjg6.js";import{Di as s,Ei as c,Fi as l,Ii as u,Li as d,Mi as f,Ni as p,Pi as m,Ti as ee,ji as h,ki as g}from"./index-9oCCAb1t.js";import{t as te}from"./gridstack-BJOLV-iY.js";var _=e(n(),1),ne=r(),re=i();function ie(e){let t=e.trim().toLowerCase();return t?t.split(/\s+/):[]}function ae(e,t,n){if(n.length===0)return!0;let r=`${e.label} ${e.description??``} ${e.name} ${t}`.toLowerCase();return n.every(e=>r.includes(e))}var oe=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),se=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),ce=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),le=e=>{let t=ce(e);return t.charAt(0).toUpperCase()+t.slice(1)},ue={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},de=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},fe=(0,_.createContext)({}),pe=()=>(0,_.useContext)(fe),v=(0,_.forwardRef)(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>{let{size:l=24,strokeWidth:u=2,absoluteStrokeWidth:d=!1,color:f=`currentColor`,className:p=``}=pe()??{},m=r??d?Number(n??u)*24/Number(t??l):n??u;return(0,_.createElement)(`svg`,{ref:c,...ue,width:t??l??ue.width,height:t??l??ue.height,stroke:e??f,strokeWidth:m,className:oe(`lucide`,p,i),...!a&&!de(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>(0,_.createElement)(e,t)),...Array.isArray(a)?a:[a]])}),y=(e,t)=>{let n=(0,_.forwardRef)(({className:n,...r},i)=>(0,_.createElement)(v,{ref:i,iconNode:t,className:oe(`lucide-${se(le(e))}`,`lucide-${e}`,n),...r}));return n.displayName=le(e),n},b=y(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),x=y(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),S=y(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),me=y(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),he=y(`sliders-horizontal`,[[`path`,{d:`M10 5H3`,key:`1qgfaw`}],[`path`,{d:`M12 19H3`,key:`yhmn1j`}],[`path`,{d:`M14 3v4`,key:`1sua03`}],[`path`,{d:`M16 17v4`,key:`1q0r14`}],[`path`,{d:`M21 12h-9`,key:`1o4lsq`}],[`path`,{d:`M21 19h-5`,key:`1rlt1p`}],[`path`,{d:`M21 5h-7`,key:`1oszz2`}],[`path`,{d:`M8 10v4`,key:`tgpxqk`}],[`path`,{d:`M8 12H3`,key:`a7s4jb`}]]),C=y(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),ge=`xyz:XYZ100.xyz:SP500.xyz:NVDA.xyz:TSLA.xyz:AAPL.xyz:MSFT.xyz:GOOGL.xyz:META.xyz:AMZN.xyz:MU.xyz:AMD.xyz:AVGO.xyz:ARM.xyz:TSM.xyz:SKHX.xyz:MSTR.xyz:COIN.xyz:HOOD.xyz:PLTR.xyz:SPCX.xyz:GOLD.xyz:SILVER.xyz:CL.xyz:BRENTOIL.xyz:COPPER.xyz:EUR.xyz:JPY.xyz:SMH.BTC.ETH.SOL.HYPE.BNB.XRP.DOGE.LINK.AVAX.SUI`.split(`.`),_e=new Map(ge.map((e,t)=>[e,t]));function ve(e){let t=e.indexOf(`:`);return(t===-1?e:e.slice(t+1)).toUpperCase()}function ye(e){return e.includes(`:`)?`Stock`:`Crypto`}function be(e){let t=e.indexOf(`:`);if(t!==-1){let n=e.slice(t+1);return`https://assets.parqet.com/logos/symbol/${encodeURIComponent(n)}?format=png`}return`https://assets.coincap.io/assets/icons/${e.toLowerCase()}@2x.png`}function xe(e){let t=e.trim().replace(/\s+/g,``);if(!t)return``;let n=t.indexOf(`:`);return n===-1?t.toUpperCase():`${t.slice(0,n).toLowerCase()}:${t.slice(n+1).toUpperCase()}`}function Se(e,t,n=_e.get(e)??1e4){return{symbol:e,ticker:ve(e),kind:ye(e),markPx:t?.markPx,changePct:t?.changePct,rank:n}}function Ce(e){if(!Number.isFinite(e))return``;let t=e;return t>=1e3?`$${t.toLocaleString(void 0,{maximumFractionDigits:0})}`:t>=100?`$${t.toFixed(2)}`:t>=1?`$${t.toFixed(3)}`:`$${t.toPrecision(3)}`}function we(e){if(!Number.isFinite(e))return``;let t=e;return`${t>=0?`+`:``}${t.toFixed(2)}%`}function Te(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function w(e,t){return e?.type?Array.isArray(e.type)?e.type.includes(t):e.type===t:!1}function Ee(e){let t=e?.items;return!!t&&w(e,`array`)&&w(t,`string`)}function De(e){try{let t=u(e.schema,{io:`input`}).properties??{};if(w(t.symbol,`string`))return{kind:`single`};if(Ee(t.symbols))return{kind:`symbols`,minItems:t.symbols?.minItems,maxItems:t.symbols?.maxItems};let n=t.holdings,r=n?.items?.properties??{};if(w(n,`array`)&&w(r.symbol,`string`))return{kind:`holdings`,minItems:n?.minItems,maxItems:n?.maxItems}}catch{}return e.name===`price-chart`?{kind:`single`}:[`price-liveline`,`price-ticker`,`funding-rate-chart`,`funding-heatmap`,`price-compare`].includes(e.name)?{kind:`symbols`}:null}function Oe(e,t){return e.kind===`single`?typeof t.symbol==`string`&&t.symbol?[t.symbol]:[]:e.kind===`symbols`?Array.isArray(t.symbols)?t.symbols.filter(e=>typeof e==`string`):[]:Array.isArray(t.holdings)?t.holdings.map(e=>Te(e)&&typeof e.symbol==`string`?e.symbol:``).filter(Boolean):[]}var ke=new Set([`symbol`,`symbols`,`holdings`]);function Ae(e){let t=e.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/[_-]+/g,` `).trim();return t?t.charAt(0).toUpperCase()+t.slice(1):e}function je(e){let t;try{t=u(e.schema,{io:`input`})}catch{return[]}return Object.entries(t.properties??{}).filter(([e])=>!ke.has(e)).map(([e,t])=>({key:e,label:Ae(e),shape:t}))}var Me=[`xyz:TSLA`,`xyz:NVDA`,`xyz:AAPL`,`xyz:MSFT`,`xyz:SP500`,`xyz:GOLD`,`xyz:GOOGL`,`xyz:AMZN`];function Ne(e,t){return e===`symbol`?Me[t%Me.length]:e===`url`?`https://`:e===`text`?`New note`:e===`title`?`Heading`:Ae(e)||`value`}function Pe(e,t,n=0){if(e.default!==void 0)return e.default;if(Array.isArray(e.enum)&&e.enum.length)return e.enum[0];if(w(e,`string`))return Ne(t,n);if(w(e,`number`)||w(e,`integer`))return e.exclusiveMinimum===void 0?e.minimum??0:e.exclusiveMinimum+1;if(w(e,`boolean`))return!1;if(w(e,`array`)){let n=e.items??{},r=t===`symbols`?`symbol`:t;return Array.from({length:e.minItems??0},(e,t)=>Pe(n,r,t))}if(w(e,`object`)){let t={};for(let r of e.required??[]){let i=e.properties?.[r];i&&(t[r]=Pe(i,r,n))}return t}return null}function Fe(e){let t=e.schema.safeParse({});if(t.success)return t.data;let n;try{n=u(e.schema,{io:`input`})}catch{return{}}let r={},i=new Set(n.required??[]);for(let[e,t]of Object.entries(n.properties??{}))i.has(e)&&(r[e]=Pe(t,e));let a=e.schema.safeParse(r);return a.success?a.data:r}function Ie(e,t){let n=(0,_.useMemo)(()=>e.find(e=>e.capabilities.includes(`day-stats`)),[e]),[r,i]=(0,_.useState)({}),[a,o]=(0,_.useState)(!1);return(0,_.useEffect)(()=>{if(!t||!n?.getDayStats){o(!1);return}let e=!1;return o(!0),Promise.allSettled([n.getDayStats(),n.getDayStats([`xyz:*`])]).then(t=>{if(e)return;let n={};for(let e of t)e.status===`fulfilled`&&Object.assign(n,e.value);i(n)}).finally(()=>{e||o(!1)}),()=>{e=!0}},[t,n]),{options:(0,_.useMemo)(()=>{let e=new Map;return ge.forEach((t,n)=>{e.set(t,Se(t,r[t],n))}),Object.entries(r).forEach(([t,n])=>{e.set(t,Se(t,n,_e.get(t)??1e4))}),[...e.values()].sort((e,t)=>e.rank===t.rank?e.kind===t.kind?e.ticker.localeCompare(t.ticker):e.kind===`Stock`?-1:1:e.rank-t.rank)},[r]),loading:a}}var T=t();function Le({instance:e,registry:t,instancesRef:n,symbolUniverse:r,accentHue:i,inherited:a,onApply:o,onClose:s}){let c=t.get(e.frame),l=(0,_.useMemo)(()=>c?De(c):null,[c]),u=(0,_.useMemo)(()=>c?je(c):[],[c]),[d,f]=(0,_.useState)(()=>({...e.config??{}})),[p,m]=(0,_.useState)(null),[ee,h]=(0,_.useState)(e.title??``),g=e.id,te=(0,_.useCallback)(e=>{if(f(e),c){let t=c.schema.safeParse(e);if(!t.success){m(t.error.issues.map(e=>`${e.path.join(`.`)||`(root)`}: ${e.message}`).join(`
|
|
2
|
+
`));return}}m(null);let t=n.current.get(g);t&&(n.current.set(g,{...t,config:e}),o(g))},[c,g,n,o]),ne=(0,_.useCallback)(e=>{h(e);let t=n.current.get(g);if(!t)return;let r=e.trim();n.current.set(g,{...t,title:r===``?void 0:r}),o(g)},[g,n,o]),[re,ie]=(0,_.useState)(()=>({...e.style??{}})),ae=(0,_.useCallback)(e=>{let t=Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0));ie(t);let r=n.current.get(g);if(!r)return;let i=Object.keys(t).length>0;n.current.set(g,{...r,style:i?t:void 0}),o(g)},[g,n,o]);(0,_.useEffect)(()=>{let e=e=>{e.key===`Escape`&&s()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[s]);let oe=(e,t)=>te({...d,[e]:t}),se=c?.label??e.frame.replace(/-/g,` `);return(0,T.jsx)(`div`,{className:`zf-dialog-backdrop`,style:{"--zf-accent-hue":i},onMouseDown:e=>{e.target===e.currentTarget&&s()},children:(0,T.jsxs)(`div`,{className:`zf-dialog`,role:`dialog`,"aria-modal":`true`,"aria-label":`Configure ${se}`,children:[(0,T.jsxs)(`header`,{className:`zf-dialog-head`,children:[(0,T.jsxs)(`h3`,{className:`zf-dialog-title`,children:[`Configure · `,se]}),(0,T.jsx)(`button`,{type:`button`,className:`zf-dialog-close`,onClick:s,"aria-label":`Close`,title:`Close`,children:(0,T.jsx)(C,{size:16,"aria-hidden":`true`})})]}),(0,T.jsxs)(`div`,{className:`zf-dialog-body`,children:[c?.chrome!==`bare`&&(0,T.jsxs)(`div`,{className:`zf-field`,children:[(0,T.jsx)(`label`,{htmlFor:`zf-instance-title`,title:`Card title shown in the frame's chrome.`,children:`Title`}),(0,T.jsx)(`input`,{id:`zf-instance-title`,className:`zf-input`,value:ee,placeholder:c?.titleContent?`Auto (live)`:se,spellCheck:!1,onChange:e=>ne(e.target.value)}),(0,T.jsx)(`p`,{className:`zf-field-hint`,children:`Leave blank to use the frame’s default.`})]}),l&&(0,T.jsx)(We,{control:l,config:d,loading:r.loading,options:r.options,onChangeSymbol:e=>te({...d,symbol:e}),onChangeSymbols:e=>te({...d,symbols:e}),onChangeHoldings:e=>te({...d,holdings:e})}),u.map(e=>(0,T.jsx)(Be,{field:e,value:d[e.key],onChange:t=>oe(e.key,t)},e.key)),!l&&u.length===0&&(0,T.jsx)(`p`,{className:`zf-rail-empty`,children:`This frame has no settings.`}),p&&(0,T.jsx)(`div`,{className:`zf-config-error`,children:p}),(0,T.jsx)(ze,{style:re,inherited:a,onChange:ae})]}),(0,T.jsx)(`footer`,{className:`zf-dialog-foot`,children:(0,T.jsx)(`button`,{type:`button`,className:`zf-btn zf-btn--primary`,onClick:s,children:`Done`})})]})})}var Re=[{key:`accentHue`,label:`Accent hue`,kind:`hue`,min:0,max:360,step:1,format:e=>`${Math.round(e)}°`},{key:`accentSat`,label:`Accent saturation`,kind:`range`,min:0,max:100,step:1,format:e=>`${Math.round(e)}%`},{key:`baseHue`,label:`Surface tint`,kind:`hue`,min:0,max:360,step:1,format:e=>`${Math.round(e)}°`},{key:`baseSat`,label:`Tint strength`,kind:`range`,min:0,max:100,step:1,format:e=>`${Math.round(e)}%`},{key:`surfaceOpacity`,label:`Card opacity`,kind:`range`,min:.3,max:1,step:.05,format:e=>`${Math.round(e*100)}%`},{key:`radius`,label:`Corner radius`,kind:`range`,min:0,max:32,step:1,format:e=>`${Math.round(e)}px`},{key:`borderStrength`,label:`Border`,kind:`range`,min:0,max:1,step:.01,format:e=>`${Math.round(e*100)}%`},{key:`density`,label:`Density`,kind:`range`,min:.6,max:1.4,step:.05,format:e=>`${Math.round(e*100)}%`},{key:`elevation`,label:`Elevation`,kind:`range`,min:0,max:2,step:.1,format:e=>`${e.toFixed(1)}×`}];function ze({style:e,inherited:t,onChange:n}){let[r,i]=(0,_.useState)(!1),a=Object.keys(e).length,o=(t,r)=>n({...e,[t]:r}),s=(r,i)=>{if(i)n({...e,[r]:t[r]});else{let t={...e};delete t[r],n(t)}};return(0,T.jsxs)(`section`,{className:r?`zf-style-panel is-open`:`zf-style-panel`,children:[(0,T.jsxs)(`button`,{type:`button`,className:`zf-style-head`,"aria-expanded":r,onClick:()=>i(e=>!e),children:[(0,T.jsx)(x,{size:14,"aria-hidden":`true`,className:`zf-style-chevron`}),(0,T.jsx)(`span`,{className:`zf-style-head-label`,children:`Style`}),a>0&&(0,T.jsx)(`span`,{className:`zf-style-count`,children:a}),a>0&&(0,T.jsx)(`span`,{role:`button`,tabIndex:0,className:`zf-style-clear`,title:`Reset every override to inherit`,onClick:e=>{e.stopPropagation(),n({})},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),e.stopPropagation(),n({}))},children:`Reset all`})]}),r&&(0,T.jsxs)(`div`,{className:`zf-style-body`,children:[(0,T.jsx)(`p`,{className:`zf-field-hint`,style:{marginBottom:4},children:`Override the dashboard look for this card only. Off = inherit.`}),Re.map(n=>{let r=e[n.key],i=r!==void 0,a=i?r:t[n.key];return(0,T.jsxs)(`div`,{className:`zf-style-field`,children:[(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{marginBottom:0},children:[(0,T.jsxs)(`label`,{className:`zf-style-toggle`,children:[(0,T.jsx)(`input`,{type:`checkbox`,checked:i,"aria-label":`Override ${n.label}`,onChange:e=>s(n.key,e.target.checked)}),(0,T.jsx)(`span`,{className:`zf-theme-val`,children:n.label})]}),(0,T.jsx)(`span`,{className:`zf-theme-val`,children:i?n.format(a):`Default`})]}),i&&(0,T.jsx)(`input`,{type:`range`,className:n.kind===`hue`?`zf-hue-slider`:`zf-range`,min:n.min,max:n.max,step:n.step,value:a,"aria-label":n.label,onChange:e=>o(n.key,Number(e.target.value))})]},n.key)})]})]})}function Be({field:e,value:t,onChange:n}){let{key:r,label:i,shape:a}=e,o=`zf-cfg-${r}`,s=a.description;if(w(a,`boolean`))return(0,T.jsxs)(`label`,{className:`zf-checkbox`,title:s,children:[(0,T.jsx)(`input`,{type:`checkbox`,checked:typeof t==`boolean`?t:!!a.default,onChange:e=>n(e.target.checked)}),i]});let c=Array.isArray(a.enum)&&a.enum.every(e=>typeof e==`string`)?a.enum:null;if(c&&c.length>0){let e=typeof a.default==`string`?a.default:c[0],r=typeof t==`string`&&c.includes(t)?t:e;return(0,T.jsxs)(`div`,{className:`zf-field`,children:[(0,T.jsx)(`label`,{htmlFor:o,title:s,children:i}),(0,T.jsx)(`select`,{id:o,className:`zf-select`,value:r,onChange:e=>n(e.target.value),children:c.map(e=>(0,T.jsx)(`option`,{value:e,children:Ae(e)},e))})]})}return w(a,`integer`)||w(a,`number`)?(0,T.jsx)(Ve,{id:o,field:e,value:t,onChange:n}):Ee(a)?(0,T.jsx)(Ue,{id:o,field:e,value:t,onChange:n}):(0,T.jsx)(He,{id:o,field:e,value:t,onChange:n})}function Ve({id:e,field:t,value:n,onChange:r}){let{label:i,shape:a}=t,o=a.description,s=typeof a.minimum==`number`?a.minimum:void 0,c=typeof a.maximum==`number`?a.maximum:void 0,l=w(a,`integer`),u=l?1:`any`,d=typeof a.default==`number`?a.default:s??0,f=typeof n==`number`&&Number.isFinite(n)?n:void 0;if(s!==void 0&&c!==void 0){let t=f??d;return(0,T.jsxs)(`div`,{className:`zf-field`,children:[(0,T.jsxs)(`div`,{className:`zf-field-row`,children:[(0,T.jsx)(`label`,{htmlFor:e,title:o,children:i}),(0,T.jsx)(`span`,{className:`zf-field-num`,children:t})]}),(0,T.jsx)(`input`,{id:e,type:`range`,className:`zf-range`,min:s,max:c,step:u,value:t,onChange:e=>r(l?Math.round(Number(e.target.value)):Number(e.target.value))})]})}return(0,T.jsxs)(`div`,{className:`zf-field`,children:[(0,T.jsx)(`label`,{htmlFor:e,title:o,children:i}),(0,T.jsx)(`input`,{id:e,type:`number`,className:`zf-input`,min:s,max:c,step:u,value:n==null?``:String(n),onChange:e=>r(e.target.value===``?``:Number(e.target.value))})]})}function He({id:e,field:t,value:n,onChange:r}){let{key:i,label:a,shape:o}=t,s=o.description,c=typeof n==`string`?n:``,l=typeof o.default==`string`?o.default:``,u=typeof o.default==`string`&&/^#[0-9a-f]{6}$/i.test(o.default)?o.default:null;if(i===`color`||u){let t=/^#[0-9a-f]{6}$/i.test(c)?c:u??`#8b8df9`;return(0,T.jsxs)(`div`,{className:`zf-field`,children:[(0,T.jsx)(`label`,{htmlFor:e,title:s,children:a}),(0,T.jsxs)(`div`,{className:`zf-color-row`,children:[(0,T.jsx)(`input`,{type:`color`,className:`zf-color`,value:t,"aria-label":`${a} swatch`,onChange:e=>r(e.target.value)}),(0,T.jsx)(`input`,{id:e,className:`zf-input`,value:c,placeholder:l,spellCheck:!1,onChange:e=>r(e.target.value)})]})]})}return i===`text`?(0,T.jsxs)(`div`,{className:`zf-field`,children:[(0,T.jsx)(`label`,{htmlFor:e,title:s,children:a}),(0,T.jsx)(`textarea`,{id:e,className:`zf-textarea zf-textarea--prose`,value:c,placeholder:l,onChange:e=>r(e.target.value)})]}):(0,T.jsxs)(`div`,{className:`zf-field`,children:[(0,T.jsx)(`label`,{htmlFor:e,title:s,children:a}),(0,T.jsx)(`input`,{id:e,className:`zf-input`,value:c,placeholder:l,spellCheck:!1,onChange:e=>r(e.target.value)})]})}function Ue({id:e,field:t,value:n,onChange:r}){let{label:i,shape:a}=t,o=a.description,s=Array.isArray(n)?n.filter(e=>typeof e==`string`):[],[c,l]=(0,_.useState)(``),u=typeof a.maxItems==`number`?a.maxItems:void 0,d=u!==void 0&&s.length>=u,f=e=>{let t=e.trim().toUpperCase();l(``),!(!t||s.includes(t)||d)&&r([...s,t])};return(0,T.jsxs)(`div`,{className:`zf-field`,children:[(0,T.jsx)(`label`,{htmlFor:e,title:o,children:i}),s.length>0&&(0,T.jsx)(`div`,{className:`zf-taglist`,children:s.map(e=>(0,T.jsxs)(`span`,{className:`zf-tag`,children:[e,(0,T.jsx)(`button`,{type:`button`,className:`zf-symbol-remove`,"aria-label":`Remove ${e}`,onClick:()=>r(s.filter(t=>t!==e)),children:(0,T.jsx)(C,{size:12,"aria-hidden":`true`})})]},e))}),(0,T.jsx)(`input`,{id:e,className:`zf-input`,value:c,disabled:d,spellCheck:!1,placeholder:d?`Maximum reached`:`Type a code, Enter to add`,onChange:e=>l(e.target.value),onBlur:()=>f(c),onKeyDown:e=>{e.key===`Enter`||e.key===`,`?(e.preventDefault(),f(c)):e.key===`Backspace`&&c===``&&s.length>0&&r(s.slice(0,-1))}})]})}function We({control:e,config:t,loading:n,options:r,onChangeSymbol:i,onChangeSymbols:a,onChangeHoldings:o}){let s=Oe(e,t);if(e.kind===`single`){let e=s[0]??``;return(0,T.jsxs)(`div`,{className:`zf-symbol-editor`,children:[(0,T.jsx)(Ge,{title:`Ticker`,detail:e?ve(e):`None`,loading:n}),e?(0,T.jsx)(Ye,{symbol:e,option:qe(e,r)}):null,(0,T.jsx)(E,{loading:n,options:r,selectedSymbols:e?[e]:[],placeholder:`Search TSLA, BTC...`,onSelect:i})]})}if(e.kind===`symbols`){let t=typeof e.maxItems==`number`&&s.length>=e.maxItems;return(0,T.jsxs)(`div`,{className:`zf-symbol-editor`,children:[(0,T.jsx)(Ge,{title:`Tickers`,detail:Ke(s.length,e),loading:n}),(0,T.jsx)(Je,{symbols:s,options:r,onRemove:e=>a(s.filter(t=>t!==e))}),(0,T.jsx)(E,{disabled:t,loading:n,options:r,selectedSymbols:s,placeholder:t?`Maximum tickers added`:`Add ticker`,keepOpenOnSelect:!0,onSelect:e=>{s.includes(e)||t||a([...s,e])}})]})}let c=Array.isArray(t.holdings)?t.holdings.filter(Te):[],l=typeof e.maxItems==`number`&&c.length>=e.maxItems;return(0,T.jsxs)(`div`,{className:`zf-symbol-editor`,children:[(0,T.jsx)(Ge,{title:`Holding tickers`,detail:Ke(c.length,e),loading:n}),(0,T.jsx)(`div`,{className:`zf-holding-list`,children:c.map((e,t)=>{let n=typeof e.symbol==`string`?e.symbol:``;return(0,T.jsxs)(`div`,{className:`zf-holding-row`,children:[(0,T.jsxs)(`div`,{className:`zf-holding-main`,children:[n?(0,T.jsx)(Ye,{symbol:n,option:qe(n,r),compact:!0}):(0,T.jsx)(`span`,{className:`zf-symbol-empty`,children:`No ticker`}),typeof e.amount==`number`&&(0,T.jsxs)(`span`,{className:`zf-holding-amount`,children:[`x `,e.amount]})]}),(0,T.jsx)(`button`,{type:`button`,className:`zf-symbol-remove`,"aria-label":`Remove ${n||`holding`}`,onClick:()=>{o(c.filter((e,n)=>n!==t))},children:(0,T.jsx)(C,{size:13,"aria-hidden":`true`})})]},`${n}-${t}`)})}),(0,T.jsx)(E,{disabled:l,loading:n,options:r,selectedSymbols:s,placeholder:l?`Maximum holdings added`:`Add holding`,keepOpenOnSelect:!0,onSelect:e=>{l||o([...c,{symbol:e,amount:1}])}})]})}function Ge({title:e,detail:t,loading:n}){return(0,T.jsxs)(`div`,{className:`zf-symbol-head`,children:[(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`div`,{className:`zf-symbol-label`,children:e}),(0,T.jsx)(`div`,{className:`zf-symbol-detail`,children:t})]}),(0,T.jsx)(`span`,{className:n?`zf-symbol-source is-loading`:`zf-symbol-source`,children:n?`Loading`:`Live list`})]})}function Ke(e,t){return typeof t.maxItems==`number`?`${e}/${t.maxItems}`:typeof t.minItems==`number`&&e<t.minItems?`${e}/${t.minItems}+`:String(e)}function qe(e,t){return t.find(t=>t.symbol===e)??Se(e)}function Je({symbols:e,options:t,onRemove:n}){return e.length===0?(0,T.jsx)(`div`,{className:`zf-symbol-empty`,children:`No tickers selected`}):(0,T.jsx)(`div`,{className:`zf-symbol-chips`,children:e.map(e=>(0,T.jsxs)(`span`,{className:`zf-symbol-chip`,children:[(0,T.jsx)(Ye,{symbol:e,option:qe(e,t),compact:!0}),(0,T.jsx)(`button`,{type:`button`,className:`zf-symbol-remove`,"aria-label":`Remove ${e}`,onClick:()=>n(e),children:(0,T.jsx)(C,{size:13,"aria-hidden":`true`})})]},e))})}function Ye({symbol:e,option:t,compact:n=!1}){return(0,T.jsxs)(`span`,{className:n?`zf-selected-symbol is-compact`:`zf-selected-symbol`,children:[(0,T.jsx)(Ze,{symbol:e}),(0,T.jsxs)(`span`,{className:`zf-selected-symbol-text`,children:[(0,T.jsx)(`strong`,{children:ve(e)}),!n&&(0,T.jsx)(`em`,{children:e})]}),!n&&t.markPx!==void 0&&(0,T.jsx)(`span`,{className:`zf-selected-symbol-price`,children:Ce(t.markPx)})]})}function E({disabled:e=!1,loading:t,options:n,selectedSymbols:r,placeholder:i,keepOpenOnSelect:a=!1,onSelect:o}){let[s,c]=(0,_.useState)(``),[l,u]=(0,_.useState)(!1),d=(0,_.useMemo)(()=>new Set(r),[r]),f=(0,_.useMemo)(()=>new Set(n.map(e=>e.symbol)),[n]),p=xe(s),m=(0,_.useMemo)(()=>{let e=s.trim().toLowerCase();return(e?n.filter(t=>t.ticker.toLowerCase().includes(e)||t.symbol.toLowerCase().includes(e)):n.slice(0,28)).slice().sort((t,n)=>Xe(t,e)-Xe(n,e)).slice(0,36)},[n,s]),ee=(0,_.useMemo)(()=>{if(!p)return[];let e=p.includes(`:`)?[p]:[`xyz:${p}`,p];return e.filter((t,n)=>e.indexOf(t)===n&&!f.has(t)&&!d.has(t))},[f,p,d]),h=e=>{!e||a&&d.has(e)||(o(e),c(``),u(a))};return(0,T.jsxs)(`div`,{className:`zf-symbol-combo`,onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||u(!1)},children:[(0,T.jsxs)(`div`,{className:e?`zf-symbol-search is-disabled`:`zf-symbol-search`,children:[(0,T.jsx)(me,{size:14,"aria-hidden":`true`}),(0,T.jsx)(`input`,{value:s,disabled:e,placeholder:i,"aria-label":i,role:`combobox`,"aria-expanded":l,onFocus:()=>u(!0),onChange:e=>{c(e.target.value),u(!0)},onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),h(m[0]?.symbol??ee[0]??p))}}),(0,T.jsx)(x,{size:14,"aria-hidden":`true`})]}),l&&!e&&(0,T.jsxs)(`div`,{className:`zf-symbol-menu`,role:`listbox`,children:[t&&(0,T.jsx)(`div`,{className:`zf-symbol-menu-status`,children:`Loading live universe...`}),m.map(e=>{let t=d.has(e.symbol);return(0,T.jsxs)(`button`,{type:`button`,className:t?`zf-symbol-option is-selected`:`zf-symbol-option`,disabled:a&&t,role:`option`,"aria-selected":t,onMouseDown:t=>{t.preventDefault(),h(e.symbol)},onClick:t=>{t.detail===0&&h(e.symbol)},children:[(0,T.jsx)(Ze,{symbol:e.symbol}),(0,T.jsxs)(`span`,{className:`zf-symbol-option-main`,children:[(0,T.jsx)(`strong`,{children:e.ticker}),(0,T.jsx)(`em`,{children:e.symbol})]}),(0,T.jsxs)(`span`,{className:`zf-symbol-option-meta`,children:[(0,T.jsx)(`span`,{children:Ce(e.markPx)||e.kind}),e.changePct!==void 0&&(0,T.jsx)(`span`,{className:e.changePct>=0?`zf-symbol-change is-up`:`zf-symbol-change is-down`,children:we(e.changePct)})]}),t&&(0,T.jsx)(b,{size:14,"aria-hidden":`true`})]},e.symbol)}),ee.map(e=>(0,T.jsxs)(`button`,{type:`button`,className:`zf-symbol-option zf-symbol-option--custom`,onMouseDown:t=>{t.preventDefault(),h(e)},onClick:t=>{t.detail===0&&h(e)},children:[(0,T.jsx)(`span`,{className:`zf-symbol-custom-icon`,children:(0,T.jsx)(S,{size:13,"aria-hidden":`true`})}),(0,T.jsxs)(`span`,{className:`zf-symbol-option-main`,children:[(0,T.jsx)(`strong`,{children:ve(e)}),(0,T.jsx)(`em`,{children:e})]}),(0,T.jsx)(`span`,{className:`zf-symbol-option-meta`,children:(0,T.jsx)(`span`,{children:ye(e)})})]},e)),!t&&m.length===0&&ee.length===0&&(0,T.jsx)(`div`,{className:`zf-symbol-menu-status`,children:`No matches`})]})]})}function Xe(e,t){if(!t)return e.rank;let n=e.ticker.toLowerCase(),r=e.symbol.toLowerCase();return n===t||r===t?-40+e.rank/1e4:n.startsWith(t)?-20+e.rank/1e4:r.startsWith(t)?-10+e.rank/1e4:e.rank}function Ze({symbol:e}){let t=ye(e).toLowerCase(),[n,r]=(0,_.useState)(!1);return(0,_.useEffect)(()=>r(!1),[e]),n?(0,T.jsx)(`span`,{className:`zf-symbol-avatar zf-symbol-avatar--${t}`,children:ve(e).slice(0,2)}):(0,T.jsx)(`img`,{className:`zf-symbol-avatar zf-symbol-avatar--logo zf-symbol-avatar--${t}`,src:be(e),alt:``,"aria-hidden":`true`,draggable:!1,loading:`lazy`,onError:()=>r(!0)})}var Qe=24;function $e(e,t){return t===`flow-horizontal`?e.layouts?.[`flow-horizontal`]:e.position}function et(e,t){let n=e.reduce((e,n)=>e+Math.max(1,n.position.w)*Math.min(Math.max(1,n.position.h),t),0);return Math.max(Qe,Math.ceil(n/t*1.25)+8)}function tt(e,t,n){let r=new Set,i=(e,t,n,i)=>{for(let a=0;a<n;a++)for(let n=0;n<i;n++){let i=e+a,o=t+n;i>=0&&o>=0&&r.add(`${i},${o}`)}},a=(e,i,a,o)=>{if(e+a>t||i+o>n)return!1;for(let t=0;t<a;t++)for(let n=0;n<o;n++)if(r.has(`${e+t},${i+n}`))return!1;return!0};for(let t of e){let e=t.layouts?.[`flow-horizontal`];e&&i(e.x,e.y,e.w,Math.min(e.h,n))}return e.map(e=>{if(e.layouts?.[`flow-horizontal`])return e;let r=Math.min(Math.max(1,e.position.w),t),o=Math.min(Math.max(1,e.position.h),n),s={x:0,y:0,w:r,h:o};search:for(let e=0;e<=t-r;e++)for(let t=0;t<=n-o;t++)if(a(e,t,r,o)){s={x:e,y:t,w:r,h:o};break search}return i(s.x,s.y,s.w,s.h),{...e,layouts:{...e.layouts,"flow-horizontal":s}}})}var nt=`<svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg>`;function rt(e){queueMicrotask(()=>e.unmount())}function it({spec:e,registry:t,onSave:n,customiseButtonTarget:r,onAccentHueChange:i,onAccentSatChange:u,onFontScaleChange:oe,onUpColorChange:se,onDownColorChange:ce,onModeChange:le,onBackgroundChange:ue,onSurfaceChange:de}){let fe=a(),pe=(0,_.useRef)(null),v=(0,_.useRef)(null),y=(0,_.useRef)(!1),b=(0,_.useRef)(e.grid.mode),x=(0,_.useRef)(new Map),S=(0,_.useRef)(new Map),C=(0,_.useRef)(new Map),ge=(0,_.useRef)([]),_e=(0,_.useRef)(e.theme.accentHue),ve=(0,_.useRef)(e.theme.accentSat),ye=(0,_.useRef)(e.theme.baseHue),be=(0,_.useRef)(e.theme.baseSat),xe=(0,_.useRef)(e.theme.upColor),Se=(0,_.useRef)(e.theme.downColor),Ce=(0,_.useRef)(e.grid.gap),we=(0,_.useRef)(e.grid.paddingX),Te=(0,_.useRef)(e.grid.mode),w=(0,_.useRef)(null),Ee=(0,_.useRef)(e.appearance.radius),De=(0,_.useRef)(e.appearance.borderStrength),Oe=(0,_.useRef)(e.appearance.surfaceOpacity),ke=(0,_.useRef)(e.appearance.density),Ae=(0,_.useRef)(e.appearance.elevation),je=(0,_.useRef)(e.typography.fontFamily),Me=(0,_.useRef)(e.typography.numericStyle),Ne=(0,_.useRef)(e.typography.scale),Pe=(0,_.useRef)(e.background.type),Re=(0,_.useRef)(e.background.projectId),ze=(0,_.useRef)(e.background.opacity),Be=(0,_.useRef)(e.background.color),Ve=(0,_.useRef)(e.background.gradientFrom),He=(0,_.useRef)(e.background.gradientTo),Ue=(0,_.useRef)(e.background.gradientAngle),We=(0,_.useRef)(e.background.imageUrl),Ge=(0,_.useRef)(e.background.imageFit),Ke=(0,_.useRef)(e.background.imageBlur),qe=(0,_.useRef)(e.background.overlayOpacity),Je=(0,_.useRef)(e.theme.surface),Ye=(0,_.useRef)(0),[E,Xe]=(0,_.useState)(!1),Ze=Ie(fe,E),[Qe,it]=(0,_.useState)(e.frames.length),[D,at]=(0,_.useState)(e.theme.accentHue),[O,ot]=(0,_.useState)(e.theme.accentSat),[k,st]=(0,_.useState)(e.theme.baseHue),[A,ct]=(0,_.useState)(e.theme.baseSat),[j,lt]=(0,_.useState)(e.theme.upColor),[M,ut]=(0,_.useState)(e.theme.downColor),[N,dt]=(0,_.useState)(e.theme.surface),[P,ft]=(0,_.useState)(e.grid.mode),[pt,mt]=(0,_.useState)(!1),[F,ht]=(0,_.useState)(e.grid.gap),[I,gt]=(0,_.useState)(e.grid.paddingX),[L,_t]=(0,_.useState)(e.appearance.radius),[R,vt]=(0,_.useState)(e.appearance.borderStrength),[z,yt]=(0,_.useState)(e.appearance.surfaceOpacity),[B,bt]=(0,_.useState)(e.appearance.density),[V,xt]=(0,_.useState)(e.appearance.elevation),[H,St]=(0,_.useState)(e.typography.fontFamily),[U,Ct]=(0,_.useState)(e.typography.numericStyle),[W,wt]=(0,_.useState)(e.typography.scale),[G,Tt]=(0,_.useState)(e.background.type),[K,Et]=(0,_.useState)(e.background.projectId??h[0].projectId),[q,Dt]=(0,_.useState)(e.background.opacity),[J,Ot]=(0,_.useState)(e.background.color),[Y,kt]=(0,_.useState)(e.background.gradientFrom),[At,jt]=(0,_.useState)(e.background.gradientTo),[X,Mt]=(0,_.useState)(e.background.gradientAngle),[Nt,Pt]=(0,_.useState)(e.background.imageUrl??``),[Ft,It]=(0,_.useState)(e.background.imageFit),[Z,Lt]=(0,_.useState)(e.background.imageBlur),[Q,Rt]=(0,_.useState)(e.background.overlayOpacity),zt=(0,_.useCallback)(e=>{at(e.theme.accentHue),ot(e.theme.accentSat),st(e.theme.baseHue),ct(e.theme.baseSat),St(e.typography.fontFamily),Ct(e.typography.numericStyle),_t(e.appearance.radius),vt(e.appearance.borderStrength),yt(e.appearance.surfaceOpacity),bt(e.appearance.density),xt(e.appearance.elevation);let t=h.find(t=>t.key===e.scene);t&&(Tt(`unicorn`),Et(t.projectId))},[]),Bt=(0,_.useMemo)(()=>f.find(e=>e.theme.accentHue===D&&e.theme.accentSat===O&&e.theme.baseHue===k&&e.theme.baseSat===A&&e.typography.fontFamily===H&&e.typography.numericStyle===U&&e.appearance.radius===L&&e.appearance.borderStrength===R&&e.appearance.surfaceOpacity===z&&e.appearance.density===B&&e.appearance.elevation===V&&G===`unicorn`&&h.find(t=>t.key===e.scene)?.projectId===K)?.key??null,[D,O,k,A,H,U,L,R,z,B,V,G,K]),[Vt,Ht]=(0,_.useState)(`frames`),[Ut,Wt]=(0,_.useState)(null),Gt=(0,_.useRef)(null);Gt.current=Ut,(0,_.useEffect)(()=>{i?.(D)},[D,i]),(0,_.useEffect)(()=>{u?.(O)},[O,u]),(0,_.useEffect)(()=>{oe?.(W)},[W,oe]),(0,_.useEffect)(()=>{se?.(j)},[j,se]),(0,_.useEffect)(()=>{ce?.(M)},[M,ce]),(0,_.useEffect)(()=>{b.current=P,le?.(P)},[P,le]),(0,_.useEffect)(()=>{ue?.({...e.background,type:G,projectId:K,opacity:q,color:J,gradientFrom:Y,gradientTo:At,gradientAngle:X,imageUrl:Nt||void 0,imageFit:Ft,imageBlur:Z,overlayOpacity:Q})},[G,K,q,J,Y,At,X,Nt,Ft,Z,Q,e.background,ue]),(0,_.useEffect)(()=>{de?.(N)},[N,de]),(0,_.useEffect)(()=>{v.current?.margin(F/2)},[F]);let Kt=(0,_.useRef)(fe);Kt.current=fe;let qt=(0,_.useRef)(t);qt.current=t;let Jt=(0,_.useMemo)(()=>{let e=new Map;for(let n of t.values()){let t=n.category??`other`,r=e.get(t);r?r.push(n):e.set(t,[n])}let n=d.map(e=>e.key),r=d.map(t=>({key:t.key,label:t.label,description:t.description,frames:e.get(t.key)??[]})),i=[...e.entries()].filter(([e])=>!n.includes(e)).flatMap(([,e])=>e);return i.length&&r.push({key:`other`,label:`Other`,description:``,frames:i}),r.filter(e=>e.frames.length>0).map(e=>({...e,frames:[...e.frames].sort((e,t)=>e.name.localeCompare(t.name))}))},[t]),[Yt,Xt]=(0,_.useState)(``),Zt=(0,_.useMemo)(()=>ie(Yt),[Yt]),Qt=Zt.length>0,$t=(0,_.useMemo)(()=>Zt.length===0?Jt:Jt.map(e=>({...e,frames:e.frames.filter(t=>ae(t,e.label,Zt))})).filter(e=>e.frames.length>0),[Jt,Zt]),[en,tn]=(0,_.useState)(()=>new Set(Jt[0]?[Jt[0].key]:[])),nn=(0,_.useCallback)(e=>{tn(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),rn=(0,_.useCallback)(e=>e?Fe(e):{},[]),an=(0,_.useCallback)(e=>{let t=`${e}-${++Ye.current}`;for(;x.current.has(t);)t=`${e}-${++Ye.current}`;return t},[]),on=(0,_.useRef)(null),sn=(0,_.useRef)(e.currency.code);sn.current=e.currency.code;let $=(0,_.useCallback)(e=>{let t=C.current.get(e),n=x.current.get(e);if(!t||!n)return;let r=S.current.get(e);r||(t.innerHTML=``,r=(0,re.createRoot)(t),S.current.set(e,r)),r.render((0,T.jsx)(o,{providers:Kt.current,children:(0,T.jsx)(g,{code:sn.current,children:(0,T.jsx)(s.Provider,{value:t=>on.current?.(e,t),children:(0,T.jsx)(c,{instance:n,registry:qt.current,className:`zf-fill`})})})}))},[]);(0,_.useEffect)(()=>{for(let e of x.current.keys())$(e)},[e.currency.code,$]),on.current=(0,_.useCallback)((e,t)=>{let n=x.current.get(e);n&&(x.current.set(e,{...n,config:{...n.config,...t}}),$(e))},[$]);let cn=(0,_.useCallback)(e=>{let t=v.current;if(!t)return;let n=e.getAttribute(`gs-id`);if(n){let e=S.current.get(n);e&&rt(e),S.current.delete(n),C.current.delete(n),x.current.delete(n),Gt.current===n&&Wt(null)}t.removeWidget(e,!0),it(t.getGridItems().length)},[]),ln=(0,_.useCallback)(e=>{if(!e.querySelector(`.zf-cfg-btn`)){let t=document.createElement(`button`);t.className=`zf-cfg-btn`,t.type=`button`,t.title=`Edit frame`,t.setAttribute(`aria-label`,`Edit frame`),t.innerHTML=nt,t.addEventListener(`click`,t=>{t.stopPropagation();let n=e.getAttribute(`gs-id`);n&&Wt(n)}),e.appendChild(t)}if(!e.querySelector(`.zf-del-btn`)){let t=document.createElement(`button`);t.className=`zf-del-btn`,t.type=`button`,t.title=`Remove frame`,t.innerHTML=`×`,t.addEventListener(`click`,t=>{t.stopPropagation(),cn(e)}),e.appendChild(t)}},[cn]),un=(0,_.useCallback)(e=>{e.querySelector(`.zf-cfg-btn`)?.remove(),e.querySelector(`.zf-del-btn`)?.remove()},[]),dn=(0,_.useCallback)((t,n=!1)=>{let r=b.current,i=r===`flow-horizontal`,a=$e(t,r),o=a?.w??t.position.w,s=a?.h??t.position.h,c=i?Math.min(s,e.grid.rows):s,l=qt.current.get(t.frame)?.layout,u=document.createElement(`div`);u.className=`grid-stack-item`,u.setAttribute(`gs-id`,t.id),u.setAttribute(`data-frame`,t.frame),n||!a?u.setAttribute(`gs-auto-position`,`true`):(u.setAttribute(`gs-x`,String(a.x)),u.setAttribute(`gs-y`,String(a.y))),u.setAttribute(`gs-w`,String(o)),u.setAttribute(`gs-h`,String(c)),l?.minW&&u.setAttribute(`gs-min-w`,String(l.minW)),l?.minH&&u.setAttribute(`gs-min-h`,String(l.minH)),l?.maxW&&u.setAttribute(`gs-max-w`,String(l.maxW)),l?.maxH&&u.setAttribute(`gs-max-h`,String(l.maxH));let d=document.createElement(`div`);return d.className=`grid-stack-item-content`,u.appendChild(d),C.current.set(t.id,d),u},[e.grid.rows]),fn=(0,_.useCallback)(e=>{let t=v.current;if(t){S.current.forEach(rt),S.current.clear(),C.current.clear(),x.current=new Map(e.map(e=>[e.id,e])),t.removeAll(!0),t.el.querySelectorAll(`.grid-stack-item`).forEach(e=>e.remove()),t.batchUpdate();for(let n of e){let e=dn(n);t.el.appendChild(e),t.makeWidget(e),$(n.id)}t.batchUpdate(!1),it(e.length)}},[dn,$]),pn=(0,_.useCallback)(e=>{let t=v.current;if(!t)return;let n=qt.current.get(e),r=an(e),i={id:r,frame:e,position:{x:0,y:0,w:n?.layout?.w??4,h:n?.layout?.h??3},config:rn(n)};x.current.set(r,i);let a=dn(i,!0);t.el.appendChild(a),t.makeWidget(a),$(r),ln(a),it(t.getGridItems().length),Wt(r)},[dn,ln,rn,$,an]),mn=(0,_.useCallback)(()=>{let t=(typeof window<`u`?window.innerHeight:800)-(pe.current?.parentElement?.getBoundingClientRect().top??120)-56;return Math.max(80,Math.floor(t/e.grid.rows))},[e.grid.rows]),hn=(0,_.useCallback)(()=>{let e=v.current;if(!e)return;let t=e.el;e.off(`dropped`),e.off(`removed`),e.off(`drag`),e.off(`dragstart`),e.off(`dragstop`),document.body.classList.remove(`zf-dragging`),S.current.forEach(rt),S.current.clear(),C.current.clear(),e.destroy(!1),t&&(t.querySelectorAll(`.grid-stack-item`).forEach(e=>e.remove()),t.style.width=``,t.style.height=``),v.current=null},[]),gn=(0,_.useCallback)((t,n)=>{let r=t===`flow-horizontal`,i=r?mn():e.grid.rowHeight,a=te.init({column:r?n:e.grid.columns,cellHeight:i,margin:e.grid.gap/2,float:!0,...r?{maxRow:e.grid.rows,minRow:e.grid.rows}:{},animate:!0,acceptWidgets:!0,disableDrag:!0,disableResize:!0},pe.current);return a.el.style.width=r?`${n*i}px`:``,a.on(`dropped`,(e,t,n)=>{let r=n?.el;if(!r)return;let i=r.querySelector(`.grid-stack-item-content`),o=r.getAttribute(`data-frame`);if(!i||!o)return;let s=r.getAttribute(`gs-id`)||an(o);r.setAttribute(`gs-id`,s);let c=qt.current.get(o),l=n?.w??c?.layout?.w??4,u=n?.h??c?.layout?.h??3,d={x:n?.x??0,y:n?.y??0,w:l,h:u},f=b.current===`flow-horizontal`?{id:s,frame:o,position:{x:0,y:0,w:l,h:u},layouts:{"flow-horizontal":d},config:rn(c)}:{id:s,frame:o,position:d,config:rn(c)};x.current.set(s,f),C.current.set(s,i),$(s),ln(r),it(a.getGridItems().length),Wt(s)}),a.on(`removed`,()=>it(a.getGridItems().length)),a.on(`dragstart`,()=>document.body.classList.add(`zf-dragging`)),a.on(`dragstop`,()=>document.body.classList.remove(`zf-dragging`)),r&&a.on(`drag`,e=>{let t=pe.current?.parentElement;if(!t)return;let n=t.getBoundingClientRect(),r=e.clientX??e.touches?.[0]?.clientX;r!=null&&(r<n.left+64?t.scrollLeft-=18:r>n.right-64&&(t.scrollLeft+=18))}),a},[mn,e.grid.columns,e.grid.rowHeight,e.grid.rows,e.grid.gap,an,rn,$,ln]);(0,_.useEffect)(()=>{if(!pe.current||y.current)return;y.current=!0;let t=b.current===`flow-horizontal`,n=t?et(e.frames,e.grid.rows):e.grid.columns;return v.current=gn(b.current,n),fn(t?tt(e.frames,n,e.grid.rows):e.frames),()=>{hn(),y.current=!1}},[]),(0,_.useEffect)(()=>{let e=v.current;e&&(e.enableMove(E),e.enableResize(E),E?e.getGridItems().forEach(ln):e.getGridItems().forEach(un))},[E,ln,un]),(0,_.useEffect)(()=>{let e=v.current;if(!e||b.current!==`flow-horizontal`)return;let t=requestAnimationFrame(()=>{let t=mn();e.cellHeight(t),e.el.style.width=`${e.getColumn()*t}px`});return()=>cancelAnimationFrame(t)},[E,mn]),(0,_.useEffect)(()=>{!E||Vt!==`frames`||!v.current||te.setupDragIn(`.zf-newwidget`,{appendTo:`body`,helper:e=>{let t=(e.closest(`.zf-newwidget`)??e).dataset.frame??``,n=qt.current.get(t),r=n?.layout,i=document.createElement(`div`);i.className=`grid-stack-item`,i.setAttribute(`data-frame`,t),i.setAttribute(`gs-w`,String(r?.w??4)),i.setAttribute(`gs-h`,String(r?.h??3)),r?.minW&&i.setAttribute(`gs-min-w`,String(r.minW)),r?.minH&&i.setAttribute(`gs-min-h`,String(r.minH)),r?.maxW&&i.setAttribute(`gs-max-w`,String(r.maxW)),r?.maxH&&i.setAttribute(`gs-max-h`,String(r.maxH));let a=pe.current?.closest(`.zf-editor`);if(a){let e=getComputedStyle(a);for(let t of[`--zf-accent-hue`,`--zf-accent-sat`,`--font-dmsans`]){let n=e.getPropertyValue(t).trim();n&&i.style.setProperty(t,n)}}let o=t.replace(/-/g,` `);return i.innerHTML=`<div class="grid-stack-item-content zf-drag-ghost" data-frame="${t}">${n?.iconUrl?`<img class="zf-drag-ghost-icon" src="${n.iconUrl}" alt="" />`:``}<span class="zf-drag-ghost-name">${o}</span></div>`,i}})},[E,Vt,Jt,en]);let _n=(0,_.useCallback)(()=>{let t=v.current,n=[];if(t)for(let e of t.getGridItems()){let t=e.getAttribute(`gs-id`);if(!t)continue;let r=x.current.get(t);if(!r)continue;let i=e.gridstackNode,a=$e(r,P)??r.position,o={x:i?.x??a.x,y:i?.y??a.y,w:i?.w??a.w,h:i?.h??a.h};n.push(P===`flow-horizontal`?{...r,layouts:{...r.layouts,"flow-horizontal":o}}:{...r,position:o})}return n.sort((e,t)=>e.position.y-t.position.y||e.position.x-t.position.x),{...e,grid:{...e.grid,gap:F,paddingX:I,mode:P},background:{...e.background,type:G,projectId:K,opacity:q,color:J,gradientFrom:Y,gradientTo:At,gradientAngle:X,imageUrl:Nt||void 0,imageFit:Ft,imageBlur:Z,overlayOpacity:Q},theme:{...e.theme,accentHue:D,accentSat:O,baseHue:k,baseSat:A,upColor:j,downColor:M,surface:N},typography:{...e.typography,fontFamily:H,numericStyle:U,scale:W},appearance:{...e.appearance,radius:L,borderStrength:R,surfaceOpacity:z,density:B,elevation:V},frames:n}},[e,D,O,k,A,j,M,N,H,U,W,F,I,P,L,R,z,B,V,G,K,q,J,Y,At,X,Nt,Ft,Z,Q]),vn=(0,_.useCallback)(e=>{let t=new Blob([`${JSON.stringify(e,null,2)}\n`],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`dashboard.json`,r.click(),setTimeout(()=>URL.revokeObjectURL(n),0)},[]),yn=(0,_.useCallback)(()=>{ge.current=_n().frames,_e.current=D,ve.current=O,ye.current=k,be.current=A,xe.current=j,Se.current=M,Ce.current=F,we.current=I,Te.current=P,Ee.current=L,De.current=R,Oe.current=z,ke.current=B,Ae.current=V,je.current=H,Me.current=U,Ne.current=W,Pe.current=G,Re.current=K,ze.current=q,Be.current=J,Ve.current=Y,He.current=At,Ue.current=X,We.current=Nt||void 0,Ge.current=Ft,Ke.current=Z,qe.current=Q,Je.current=N,Xe(!0)},[_n,D,O,k,A,j,M,N,F,I,P,L,R,z,B,V,H,U,W,G,K,q,J,Y,At,X,Nt,Ft,Z,Q]),bn=(0,_.useCallback)(()=>{(Te.current!==b.current||JSON.stringify(_n().frames)!==JSON.stringify(ge.current))&&fn(ge.current),at(_e.current),ot(ve.current),st(ye.current),ct(be.current),lt(xe.current),ut(Se.current),ht(Ce.current),gt(we.current),ft(Te.current),_t(Ee.current),vt(De.current),yt(Oe.current),bt(ke.current),xt(Ae.current),St(je.current),Ct(Me.current),wt(Ne.current),Tt(Pe.current),Et(Re.current??h[0].projectId),Dt(ze.current),Ot(Be.current),kt(Ve.current),jt(He.current),Mt(Ue.current),Pt(We.current??``),It(Ge.current),Lt(Ke.current),Rt(qe.current),dt(Je.current),Wt(null),Xe(!1)},[fn,_n]),xn=(0,_.useCallback)(async()=>{let e=_n();Xe(!1),Wt(null),n?await n(e):vn(e)},[_n,n,vn]),Sn=(0,_.useCallback)(()=>{v.current?.compact(b.current===`flow-horizontal`?`list`:`compact`)},[]),Cn=(0,_.useCallback)(()=>{let e=v.current;if(!e)return;let t=b.current;for(let n of e.getGridItems()){let e=n.getAttribute(`gs-id`);if(!e)continue;let r=x.current.get(e);if(!r)continue;let i=n.gridstackNode;if(!i)continue;let a={x:i.x??0,y:i.y??0,w:i.w??1,h:i.h??1};x.current.set(e,t===`flow-horizontal`?{...r,layouts:{...r.layouts,"flow-horizontal":a}}:{...r,position:a})}},[]),wn=(0,_.useCallback)(t=>{if(t===b.current)return;let n=()=>{Cn();let n=[...x.current.values()],r=E,i=t===`flow-horizontal`,a=i?et(n,e.grid.rows):e.grid.columns;hn(),b.current=t,ft(t);let o=gn(t,a);v.current=o,fn(i?tt(n,a,e.grid.rows):n),r&&(o.enableMove(!0),o.enableResize(!0),o.getGridItems().forEach(ln))};if(typeof window<`u`&&window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches){n();return}w.current&&clearTimeout(w.current),mt(!0),w.current=setTimeout(()=>{n(),requestAnimationFrame(()=>mt(!1))},150)},[E,Cn,hn,gn,fn,ln,e.grid.rows,e.grid.columns]);(0,_.useEffect)(()=>()=>{w.current&&clearTimeout(w.current)},[]);let Tn=()=>(0,T.jsx)(`button`,{type:`button`,className:`zf-btn zf-btn--icon`,onClick:yn,"aria-label":`Customise`,title:`Customise`,children:(0,T.jsx)(he,{size:18,"aria-hidden":`true`})}),En=E&&Ut?x.current.get(Ut):void 0,Dn=P===`flow-horizontal`;return(0,T.jsxs)(g,{code:e.currency.code,children:[(0,T.jsx)(`style`,{children:ee}),r&&!E?(0,ne.createPortal)(Tn(),r):null,(0,T.jsxs)(`div`,{className:E?`zf-editor zf-customise`:`zf-editor`,"data-mode":P,"data-surface":N,"data-wiggle":E&&Qe>12?`off`:void 0,style:{"--zf-accent-hue":D,"--zf-accent-sat":`${O}%`,"--zf-base-hue":k,"--zf-base-sat":`${A}%`,...l(N),"--zf-up":j,"--zf-down":M,"--zf-font-family":p[H],"--zf-numeric":m[U],"--zf-frame-radius":`${L}px`,"--zf-border-alpha":R,"--zf-surface-opacity":z,"--zf-density":B,"--zf-elevation":V,"--zf-pad-x":`${I}px`},children:[(E||!r)&&(0,T.jsxs)(`div`,{className:`zf-editor-bar`,children:[(0,T.jsx)(`div`,{className:`zf-editor-bar-spacer`}),E?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(`button`,{type:`button`,className:`zf-btn zf-btn--ghost`,onClick:Sn,title:`Reclaim empty grid space`,children:`Tidy`}),(0,T.jsx)(`button`,{type:`button`,className:`zf-btn zf-btn--ghost`,onClick:bn,children:`Cancel`}),(0,T.jsx)(`button`,{type:`button`,className:`zf-btn zf-btn--primary`,onClick:xn,children:`Save`})]}):Tn()]}),(0,T.jsxs)(`div`,{className:`zf-editor-main`,children:[(0,T.jsx)(`div`,{className:`zf-editor-grid`,"data-switching":pt,children:(0,T.jsx)(`div`,{ref:pe,className:`grid-stack`})}),(0,T.jsx)(`aside`,{className:`zf-rail`,"aria-hidden":!E,inert:!E,children:(0,T.jsxs)(`div`,{className:`zf-rail-inner`,children:[(0,T.jsxs)(`div`,{className:`zf-rail-tabs`,role:`tablist`,"aria-label":`Customise`,children:[(0,T.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":Vt===`frames`,className:Vt===`frames`?`zf-rail-tab is-active`:`zf-rail-tab`,onClick:()=>Ht(`frames`),children:`Frames`}),(0,T.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":Vt===`cosmetics`,className:Vt===`cosmetics`?`zf-rail-tab is-active`:`zf-rail-tab`,onClick:()=>Ht(`cosmetics`),children:`Cosmetics`})]}),Vt===`cosmetics`&&(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`section`,{className:`zf-theme`,children:[(0,T.jsx)(`h3`,{className:`zf-rail-title`,style:{margin:0},children:`Presets`}),(0,T.jsx)(`div`,{className:`zf-presets`,children:f.map(e=>(0,T.jsxs)(`button`,{type:`button`,className:Bt===e.key?`zf-preset is-active`:`zf-preset`,title:e.description,"aria-pressed":Bt===e.key,onClick:()=>zt(e),children:[(0,T.jsx)(`span`,{className:`zf-preset-swatch`,style:{background:`linear-gradient(135deg, hsl(${e.theme.baseHue} ${e.theme.baseSat}% 16%) 0 52%, hsl(${e.theme.accentHue} ${e.theme.accentSat}% 62%) 52% 100%)`}}),(0,T.jsx)(`span`,{className:`zf-preset-label`,children:e.label})]},e.key))})]}),(0,T.jsxs)(`section`,{className:`zf-theme`,children:[(0,T.jsx)(`h3`,{className:`zf-rail-title`,style:{margin:0},children:`Mode`}),(0,T.jsx)(`div`,{className:`zf-seg`,role:`group`,"aria-label":`Surface mode`,style:{marginTop:10},children:[`dark`,`light`].map(e=>(0,T.jsx)(`button`,{type:`button`,className:N===e?`zf-seg-btn is-active`:`zf-seg-btn`,"aria-pressed":N===e,onClick:()=>dt(e),children:e===`dark`?`Dark`:`Light`},e))})]}),(0,T.jsxs)(`section`,{className:`zf-theme`,children:[(0,T.jsx)(`h3`,{className:`zf-rail-title`,style:{margin:0},children:`Accent`}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{margin:`10px 0 0`},children:[(0,T.jsxs)(`span`,{className:`zf-theme-val`,children:[(0,T.jsx)(`span`,{className:`zf-theme-swatch`}),`Hue `,D,`°`]}),D!==242&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>at(242),children:`Reset`})]}),(0,T.jsx)(`input`,{type:`range`,className:`zf-hue-slider`,min:0,max:360,value:D,"aria-label":`Accent hue`,onChange:e=>at(Number(e.target.value))}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{marginTop:13},children:[(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Saturation`}),(0,T.jsxs)(`span`,{className:`zf-theme-knob-end`,children:[O!==90&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>ot(90),children:`Reset`}),(0,T.jsxs)(`span`,{className:`zf-theme-val`,children:[O,`%`]})]})]}),(0,T.jsx)(`input`,{type:`range`,className:`zf-range`,min:0,max:100,value:O,"aria-label":`Accent saturation`,onChange:e=>ot(Number(e.target.value))})]}),(0,T.jsxs)(`section`,{className:`zf-theme`,children:[(0,T.jsx)(`h3`,{className:`zf-rail-title`,children:`Surface`}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{margin:`10px 0 0`},children:[(0,T.jsxs)(`span`,{className:`zf-theme-val`,children:[(0,T.jsx)(`span`,{className:`zf-theme-swatch`,style:{background:`hsl(${k} ${A}% 32%)`,boxShadow:`none`}}),`Tint `,k,`°`]}),k!==233&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>st(233),children:`Reset`})]}),(0,T.jsx)(`input`,{type:`range`,className:`zf-hue-slider`,min:0,max:360,value:k,"aria-label":`Surface tint hue`,onChange:e=>st(Number(e.target.value))}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{marginTop:13},children:[(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Tint strength`}),(0,T.jsxs)(`span`,{className:`zf-theme-knob-end`,children:[A!==20&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>ct(20),children:`Reset`}),(0,T.jsxs)(`span`,{className:`zf-theme-val`,children:[A,`%`]})]})]}),(0,T.jsx)(`input`,{type:`range`,className:`zf-range`,min:0,max:100,value:A,"aria-label":`Surface tint strength`,onChange:e=>ct(Number(e.target.value))})]}),(0,T.jsxs)(`section`,{className:`zf-theme`,children:[(0,T.jsx)(`h3`,{className:`zf-rail-title`,children:`Gain / Loss`}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{margin:`10px 0 0`},children:[(0,T.jsxs)(`label`,{className:`zf-theme-val`,children:[(0,T.jsx)(`input`,{type:`color`,className:`zf-color`,value:j,"aria-label":`Gain (up) colour`,onChange:e=>lt(e.target.value)}),`Up `,j]}),j.toLowerCase()!==`#3fd08f`&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>lt(`#3fd08f`),children:`Reset`})]}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{marginTop:9},children:[(0,T.jsxs)(`label`,{className:`zf-theme-val`,children:[(0,T.jsx)(`input`,{type:`color`,className:`zf-color`,value:M,"aria-label":`Loss (down) colour`,onChange:e=>ut(e.target.value)}),`Down `,M]}),M.toLowerCase()!==`#ff6b81`&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>ut(`#ff6b81`),children:`Reset`})]})]}),(0,T.jsxs)(`section`,{className:`zf-theme`,children:[(0,T.jsx)(`h3`,{className:`zf-rail-title`,children:`Background`}),(0,T.jsx)(`div`,{className:`zf-bg-seg`,role:`group`,"aria-label":`Background style`,children:[`none`,`color`,`gradient`,`unicorn`,`image`].map(e=>(0,T.jsx)(`button`,{type:`button`,className:G===e?`zf-seg-btn is-active`:`zf-seg-btn`,"aria-pressed":G===e,onClick:()=>Tt(e),children:e===`none`?`Glow`:e===`color`?`Color`:e===`gradient`?`Gradient`:e===`unicorn`?`Scene`:`Image`},e))}),G===`color`&&(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{marginTop:12},children:[(0,T.jsxs)(`label`,{className:`zf-theme-val`,children:[(0,T.jsx)(`input`,{type:`color`,className:`zf-color`,value:J,"aria-label":`Background colour`,onChange:e=>Ot(e.target.value)}),J]}),J.toLowerCase()!==`#0a0a12`&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>Ot(`#0a0a12`),children:`Reset`})]}),G===`gradient`&&(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(`div`,{className:`zf-theme-row`,style:{marginTop:12},children:(0,T.jsxs)(`label`,{className:`zf-theme-val`,children:[(0,T.jsx)(`input`,{type:`color`,className:`zf-color`,value:Y,"aria-label":`Gradient start colour`,onChange:e=>kt(e.target.value)}),`From `,Y]})}),(0,T.jsx)(`div`,{className:`zf-theme-row`,style:{marginTop:9},children:(0,T.jsxs)(`label`,{className:`zf-theme-val`,children:[(0,T.jsx)(`input`,{type:`color`,className:`zf-color`,value:At,"aria-label":`Gradient end colour`,onChange:e=>jt(e.target.value)}),`To `,At]})}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{marginTop:13},children:[(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Angle`}),(0,T.jsxs)(`span`,{className:`zf-theme-knob-end`,children:[X!==160&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>Mt(160),children:`Reset`}),(0,T.jsxs)(`span`,{className:`zf-theme-val`,children:[X,`°`]})]})]}),(0,T.jsx)(`input`,{type:`range`,className:`zf-range`,min:0,max:360,value:X,"aria-label":`Gradient angle`,onChange:e=>Mt(Number(e.target.value))})]}),G===`unicorn`&&(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(`div`,{className:`zf-presets`,style:{marginTop:12},role:`group`,"aria-label":`Background scene`,children:h.map(e=>(0,T.jsxs)(`button`,{type:`button`,className:K===e.projectId?`zf-preset is-active`:`zf-preset`,title:e.description,"aria-pressed":K===e.projectId,onClick:()=>Et(e.projectId),children:[(0,T.jsx)(`span`,{className:`zf-preset-swatch`,style:{background:e.swatch}}),(0,T.jsx)(`span`,{className:`zf-preset-label`,children:e.label})]},e.key))}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{marginTop:13},children:[(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Opacity`}),(0,T.jsxs)(`span`,{className:`zf-theme-knob-end`,children:[q!==.16&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>Dt(.16),children:`Reset`}),(0,T.jsxs)(`span`,{className:`zf-theme-val`,children:[Math.round(q*100),`%`]})]})]}),(0,T.jsx)(`input`,{type:`range`,className:`zf-range`,min:0,max:.6,step:.02,value:q,"aria-label":`Background scene opacity`,onChange:e=>Dt(Math.round(Number(e.target.value)*100)/100)})]}),G===`image`&&(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`div`,{className:`zf-field`,style:{marginTop:12},children:[(0,T.jsx)(`label`,{htmlFor:`zf-bg-image-url`,children:`Image URL`}),(0,T.jsx)(`input`,{id:`zf-bg-image-url`,className:`zf-input`,type:`url`,value:Nt,placeholder:`https://… or /hero.png`,spellCheck:!1,autoComplete:`off`,"aria-label":`Background image URL`,onChange:e=>Pt(e.target.value)}),(0,T.jsx)(`p`,{className:`zf-field-hint`,children:`Full-bleed behind the dashboard, with a dark scrim for legibility.`})]}),(0,T.jsx)(`div`,{className:`zf-theme-row`,children:(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Fit`})}),(0,T.jsx)(`div`,{className:`zf-seg`,role:`group`,"aria-label":`Background image fit`,children:[`cover`,`contain`].map(e=>(0,T.jsx)(`button`,{type:`button`,className:Ft===e?`zf-seg-btn is-active`:`zf-seg-btn`,"aria-pressed":Ft===e,onClick:()=>It(e),children:e===`cover`?`Cover`:`Contain`},e))}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{marginTop:13},children:[(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Blur`}),(0,T.jsxs)(`span`,{className:`zf-theme-knob-end`,children:[Z!==0&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>Lt(0),children:`Reset`}),(0,T.jsxs)(`span`,{className:`zf-theme-val`,children:[Z,`px`]})]})]}),(0,T.jsx)(`input`,{type:`range`,className:`zf-range`,min:0,max:40,value:Z,"aria-label":`Background image blur`,onChange:e=>Lt(Number(e.target.value))}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{marginTop:13},children:[(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Overlay`}),(0,T.jsxs)(`span`,{className:`zf-theme-knob-end`,children:[Q!==.55&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>Rt(.55),children:`Reset`}),(0,T.jsxs)(`span`,{className:`zf-theme-val`,children:[Math.round(Q*100),`%`]})]})]}),(0,T.jsx)(`input`,{type:`range`,className:`zf-range`,min:0,max:1,step:.05,value:Q,"aria-label":`Background image overlay opacity`,onChange:e=>Rt(Math.round(Number(e.target.value)*100)/100)})]})]}),(0,T.jsxs)(`section`,{className:`zf-theme`,children:[(0,T.jsx)(`h3`,{className:`zf-rail-title`,children:`Layout`}),(0,T.jsx)(`div`,{className:`zf-theme-row`,children:(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Direction`})}),(0,T.jsxs)(`div`,{className:`zf-mode-seg`,role:`group`,"aria-label":`Dashboard layout direction`,children:[(0,T.jsx)(`button`,{type:`button`,className:P===`flow-vertical`?`zf-mode-seg-btn is-active`:`zf-mode-seg-btn`,"aria-pressed":P===`flow-vertical`,onClick:()=>wn(`flow-vertical`),children:`Vertical`}),(0,T.jsx)(`button`,{type:`button`,className:P===`flow-horizontal`?`zf-mode-seg-btn is-active`:`zf-mode-seg-btn`,"aria-pressed":P===`flow-horizontal`,onClick:()=>wn(`flow-horizontal`),children:`Horizontal`})]}),Dn&&(0,T.jsx)(`p`,{className:`zf-mode-seg-hint`,children:`Rows fill the height; the board scrolls sideways. Arrange it freely — this layout is saved separately from Vertical.`}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{marginTop:13},children:[(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Frame gap`}),(0,T.jsxs)(`span`,{className:`zf-theme-knob-end`,children:[F!==12&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>ht(12),children:`Reset`}),(0,T.jsxs)(`span`,{className:`zf-theme-val`,children:[F,`px`]})]})]}),(0,T.jsx)(`input`,{type:`range`,className:`zf-range`,min:0,max:12,value:F,"aria-label":`Frame gap`,onChange:e=>ht(Number(e.target.value))}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{marginTop:13},children:[(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Side padding`}),(0,T.jsxs)(`span`,{className:`zf-theme-knob-end`,children:[I!==0&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>gt(0),children:`Reset`}),(0,T.jsxs)(`span`,{className:`zf-theme-val`,children:[I,`px`]})]})]}),(0,T.jsx)(`input`,{type:`range`,className:`zf-range`,min:0,max:96,step:4,value:I,"aria-label":`Grid side padding`,onChange:e=>gt(Number(e.target.value))})]}),(0,T.jsxs)(`section`,{className:`zf-theme`,children:[(0,T.jsx)(`h3`,{className:`zf-rail-title`,children:`Appearance`}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,children:[(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Corner radius`}),(0,T.jsxs)(`span`,{className:`zf-theme-knob-end`,children:[L!==18&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>_t(18),children:`Reset`}),(0,T.jsxs)(`span`,{className:`zf-theme-val`,children:[L,`px`]})]})]}),(0,T.jsx)(`input`,{type:`range`,className:`zf-range`,min:0,max:32,value:L,"aria-label":`Corner radius`,onChange:e=>_t(Number(e.target.value))}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{marginTop:13},children:[(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Border`}),(0,T.jsxs)(`span`,{className:`zf-theme-knob-end`,children:[R!==.22&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>vt(.22),children:`Reset`}),(0,T.jsxs)(`span`,{className:`zf-theme-val`,children:[Math.round(R*100),`%`]})]})]}),(0,T.jsx)(`input`,{type:`range`,className:`zf-range`,min:0,max:1,step:.01,value:R,"aria-label":`Border strength`,onChange:e=>vt(Math.round(Number(e.target.value)*100)/100)}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{marginTop:13},children:[(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Card opacity`}),(0,T.jsxs)(`span`,{className:`zf-theme-knob-end`,children:[z!==1&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>yt(1),children:`Reset`}),(0,T.jsxs)(`span`,{className:`zf-theme-val`,children:[Math.round(z*100),`%`]})]})]}),(0,T.jsx)(`input`,{type:`range`,className:`zf-range`,min:.3,max:1,step:.05,value:z,"aria-label":`Card opacity`,onChange:e=>yt(Math.round(Number(e.target.value)*100)/100)}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{marginTop:13},children:[(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Density`}),(0,T.jsxs)(`span`,{className:`zf-theme-knob-end`,children:[B!==1&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>bt(1),children:`Reset`}),(0,T.jsxs)(`span`,{className:`zf-theme-val`,children:[Math.round(B*100),`%`]})]})]}),(0,T.jsx)(`input`,{type:`range`,className:`zf-range`,min:.6,max:1.4,step:.05,value:B,"aria-label":`Card density`,onChange:e=>bt(Math.round(Number(e.target.value)*100)/100)}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{marginTop:13},children:[(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Elevation`}),(0,T.jsxs)(`span`,{className:`zf-theme-knob-end`,children:[V!==1&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>xt(1),children:`Reset`}),(0,T.jsxs)(`span`,{className:`zf-theme-val`,children:[V.toFixed(1),`×`]})]})]}),(0,T.jsx)(`input`,{type:`range`,className:`zf-range`,min:0,max:2,step:.1,value:V,"aria-label":`Card elevation`,onChange:e=>xt(Math.round(Number(e.target.value)*10)/10)})]}),(0,T.jsxs)(`section`,{className:`zf-theme`,children:[(0,T.jsx)(`h3`,{className:`zf-rail-title`,children:`Typography`}),(0,T.jsx)(`div`,{className:`zf-theme-row`,children:(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Font`})}),(0,T.jsx)(`div`,{className:`zf-seg`,role:`group`,"aria-label":`Font family`,children:[`sans`,`mono`,`serif`].map(e=>(0,T.jsx)(`button`,{type:`button`,className:H===e?`zf-seg-btn is-active`:`zf-seg-btn`,"aria-pressed":H===e,style:{fontFamily:p[e]},onClick:()=>St(e),children:e===`sans`?`Sans`:e===`mono`?`Mono`:`Serif`},e))}),(0,T.jsx)(`div`,{className:`zf-theme-row`,style:{marginTop:13},children:(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Numbers`})}),(0,T.jsx)(`div`,{className:`zf-seg`,role:`group`,"aria-label":`Numeric style`,children:[`proportional`,`tabular`].map(e=>(0,T.jsx)(`button`,{type:`button`,className:U===e?`zf-seg-btn is-active`:`zf-seg-btn`,"aria-pressed":U===e,onClick:()=>Ct(e),children:(0,T.jsx)(`span`,{style:{fontVariantNumeric:m[e]},children:e===`proportional`?`Normal 1,071`:`Tabular 1,071`})},e))}),(0,T.jsxs)(`div`,{className:`zf-theme-row`,style:{marginTop:13},children:[(0,T.jsx)(`span`,{className:`zf-theme-val`,children:`Text size`}),(0,T.jsxs)(`span`,{className:`zf-theme-knob-end`,children:[W!==1&&(0,T.jsx)(`button`,{type:`button`,className:`zf-theme-reset`,onClick:()=>wt(1),children:`Reset`}),(0,T.jsxs)(`span`,{className:`zf-theme-val`,children:[Math.round(W*100),`%`]})]})]}),(0,T.jsx)(`input`,{type:`range`,className:`zf-range`,min:.85,max:1.25,step:.05,value:W,"aria-label":`Text size`,onChange:e=>wt(Math.round(Number(e.target.value)*100)/100)})]})]}),Vt===`frames`&&(0,T.jsxs)(`section`,{children:[(0,T.jsx)(`h3`,{className:`zf-rail-title`,children:`Add a frame`}),(0,T.jsx)(`p`,{className:`zf-palette-hint`,children:`Search, or open a category, then click a frame to add it — or drag it onto the grid.`}),(0,T.jsxs)(`div`,{className:`zf-palette-search`,children:[(0,T.jsx)(me,{size:14,"aria-hidden":`true`}),(0,T.jsx)(`input`,{type:`text`,value:Yt,placeholder:`Search frames…`,"aria-label":`Search frames`,autoComplete:`off`,spellCheck:!1,onChange:e=>Xt(e.target.value),onKeyDown:e=>{e.key===`Escape`&&Yt&&(e.preventDefault(),Xt(``))}}),Yt&&(0,T.jsx)(`button`,{type:`button`,className:`zf-palette-search-clear`,"aria-label":`Clear search`,onClick:()=>Xt(``),children:(0,T.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,T.jsx)(`path`,{d:`M4 4l8 8M12 4l-8 8`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`})})})]}),(0,T.jsxs)(`div`,{className:`zf-palette-cats`,children:[Qt&&$t.length===0&&(0,T.jsxs)(`p`,{className:`zf-palette-empty`,children:[`No frames match “`,Yt.trim(),`”.`]}),$t.map(e=>{let t=Qt||en.has(e.key);return(0,T.jsxs)(`div`,{className:t?`zf-palette-cat is-open`:`zf-palette-cat`,children:[(0,T.jsxs)(`button`,{type:`button`,className:`zf-palette-cat-header`,"aria-expanded":t,onClick:()=>nn(e.key),children:[(0,T.jsx)(`svg`,{className:`zf-palette-cat-chevron`,viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,T.jsx)(`path`,{d:`M6 4l4 4-4 4`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`,strokeLinejoin:`round`})}),(0,T.jsx)(`span`,{className:`zf-palette-cat-label`,children:e.label}),(0,T.jsx)(`span`,{className:`zf-palette-cat-count`,children:e.frames.length})]}),t&&(0,T.jsxs)(`div`,{className:`zf-palette-cat-body`,children:[e.description&&(0,T.jsx)(`p`,{className:`zf-palette-cat-desc`,children:e.description}),(0,T.jsx)(`div`,{className:`zf-palette`,children:e.frames.map(e=>(0,T.jsxs)(`div`,{className:`grid-stack-item zf-newwidget`,"data-frame":e.name,"gs-w":e.layout?.w??4,"gs-h":e.layout?.h??3,"gs-min-w":e.layout?.minW,"gs-min-h":e.layout?.minH,"gs-max-w":e.layout?.maxW,"gs-max-h":e.layout?.maxH,role:`button`,tabIndex:0,title:`Drag onto the board, or click to add ${e.label}`,onClick:()=>pn(e.name),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),pn(e.name))},children:[e.iconUrl&&(0,T.jsx)(`img`,{className:`zf-newwidget-icon`,src:e.iconUrl,alt:``,loading:`lazy`,draggable:!1}),(0,T.jsxs)(`div`,{className:`zf-newwidget-copy`,children:[(0,T.jsx)(`div`,{className:`zf-newwidget-name`,children:e.label}),(0,T.jsx)(`div`,{className:`zf-newwidget-desc`,children:e.description})]})]},e.name))})]})]},e.key)})]})]})]})})]})]}),En?(0,ne.createPortal)((0,T.jsx)(Le,{instance:En,registry:t,instancesRef:x,symbolUniverse:Ze,accentHue:D,inherited:{accentHue:D,accentSat:O,baseHue:k,baseSat:A,surfaceOpacity:z,radius:L,borderStrength:R,density:B,elevation:V},onApply:e=>$(e),onClose:()=>Wt(null)},En.id),document.body):null]})}export{it as DashboardEditor};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{y as r}from"./hooks-CLLchjg6.js";import{r as i,t as a}from"./format-DWMrfgke.js";import{t as o}from"./ui-CYz5SGgR.js";import{t as s}from"./bar-chart-CMWrEpFm.js";import{Ai as c,Ri as l,Y as u}from"./index-9oCCAb1t.js";var d=e(n(),1),f=t(),p={"1M":30*864e5,"3M":90*864e5,"6M":180*864e5};u.schema;function m(e){let t=new Date(e);return`${t.getMonth()+1}/${t.getDate()}`}function h({config:e}){let t=c(),n=(0,d.useMemo)(()=>Date.now()-p[e.lookback],[e.lookback]),{flows:l,isLoading:u}=r(e.asset),h=(0,d.useMemo)(()=>(l?.history??[]).filter(e=>e.time>=n).map(e=>({label:m(e.time),value:e.value})),[l,n]);return u?(0,f.jsx)(o,{loading:!0,children:`loading ETF flows…`}):h.length===0?(0,f.jsx)(o,{children:`ETF flows unavailable`}):(0,f.jsxs)(`div`,{className:`flex h-full flex-col justify-center gap-1 text-normal`,children:[(0,f.jsx)(s,{data:h,color:i,negativeColor:a,height:200,formatValue:t.compact,showValues:!1,maxTickLabels:6}),(0,f.jsxs)(`div`,{className:`caption text-soft text-center`,children:[e.asset.toUpperCase(),` spot-ETF daily net flow · latest`,` `,t.compact(l?.dailyTotalNetInflow??0)]})]})}var g=l({...u,component:h});export{g as etfFlowBarsFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{y as r}from"./hooks-CLLchjg6.js";import{t as i}from"./ui-CYz5SGgR.js";import{t as a}from"./heatmap-chart-CXN9d41C.js";import{Ai as o,Ri as s,X as c}from"./index-9oCCAb1t.js";var l=e(n(),1),u=t(),d={"1M":30*864e5,"3M":90*864e5,"6M":180*864e5};c.schema;function f(e){let t=new Date(e);t.setHours(0,0,0,0);let n=(t.getDay()+6)%7;return t.setDate(t.getDate()-n),t.getTime()}function p({data:e,width:t,height:n}){let r=o();return t<40||n<18?null:(0,u.jsx)(`div`,{className:`flex h-full w-full items-center justify-center`,children:(0,u.jsx)(`span`,{className:`caption text-normal tabular-nums`,children:r.compact(e.value)})})}function m({config:e}){let{flows:t,isLoading:n}=r(e.asset),o=(0,l.useMemo)(()=>f(Date.now()-d[e.lookback]),[e.lookback]),s=(0,l.useMemo)(()=>(t?.history??[]).filter(e=>e.time>=o).map(e=>({id:String(e.time),row:new Date(f(e.time)).toLocaleDateString(`en-US`,{month:`short`,day:`numeric`}),column:new Date(e.time).toLocaleDateString(`en-US`,{weekday:`short`}),value:e.value})),[t,o]);return n?(0,u.jsx)(i,{loading:!0,children:`loading ETF flows…`}):s.length===0?(0,u.jsx)(i,{children:`ETF flows unavailable`}):(0,u.jsx)(a,{data:s,CellComponent:p,gap:3,showLabels:!0,rowLabelWidth:56,columnLabelHeight:20})}var h=s({...c,component:m});export{h as etfFlowCalendarFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./liveline-BV-xqAVq.js";import{y as t}from"./hooks-CLLchjg6.js";import{a as n}from"./format-DWMrfgke.js";import{n as r,t as i}from"./ui-CYz5SGgR.js";import{t as a}from"./metric-row-CqsjSvCI.js";import{Ai as o,Q as s,Ri as c}from"./index-9oCCAb1t.js";var l=e();s.schema;var u=(e,t)=>e>=0?`+${t.compact(e)}`:t.compact(e);function d({config:e}){let s=o(),{flows:c,isLoading:d}=t(e.asset);if(d)return(0,l.jsx)(i,{loading:!0,children:`loading ETF flows…`});if(!c)return(0,l.jsx)(i,{children:`ETF flows unavailable`});let f=c.issuers.slice(0,e.limit);return(0,l.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-2`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsxs)(`div`,{className:`caption text-soft`,children:[e.asset.toUpperCase(),` spot ETF · net flow`,c.date?` · ${c.date}`:``]}),(0,l.jsx)(`div`,{className:`metric-lg leading-none`,style:{color:n(c.dailyTotalNetInflow)},children:u(c.dailyTotalNetInflow,s)})]}),(0,l.jsx)(`div`,{className:`${r} flex flex-col`,children:f.map(e=>(0,l.jsx)(a,{label:e.ticker,meta:e.institute,value:(0,l.jsx)(`span`,{style:{color:n(e.dailyNetInflow)},children:u(e.dailyNetInflow,s)})},e.ticker))})]})}var f=c({...s,component:d});export{f as etfFlowsFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{y as r}from"./hooks-CLLchjg6.js";import{t as i}from"./ui-CYz5SGgR.js";import{t as a}from"./multi-series-line-chart-XRttVKf5.js";import{t as o}from"./timeframe-DUDLPk23.js";import{t as s}from"./chart-utils-Ba8AFSZR.js";import{Ai as c,Ri as l,Z as u}from"./index-9oCCAb1t.js";var d=e(n(),1),f=t(),p={"1M":{ms:30*864e5,timeframe:o[`1M`]},"3M":{ms:90*864e5,timeframe:o[`3M`]},"6M":{ms:180*864e5,timeframe:o.YTD}};u.schema;function m({config:e}){let t=c(),{ms:n,timeframe:o}=p[e.lookback],l=(0,d.useMemo)(()=>Date.now()-n,[n]),{flows:u,isLoading:m}=r(e.asset),h=(0,d.useMemo)(()=>[{id:e.asset,name:`${e.asset.toUpperCase()} net flow`,color:s[0],data:(u?.history??[]).filter(e=>e.time>=l).map(e=>({date:new Date(e.time).toISOString(),value:e.value}))}],[u,e.asset,l]);return m?(0,f.jsx)(i,{loading:!0,children:`loading ETF flows…`}):h[0].data.length===0?(0,f.jsx)(i,{children:`ETF flows unavailable`}):(0,f.jsx)(a,{series:h,timeframe:o,height:220,formatValue:t.compact})}var h=l({...u,component:m});export{h as etfFlowsChartFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{y as r}from"./hooks-CLLchjg6.js";import{r as i,t as a}from"./format-DWMrfgke.js";import{t as o}from"./ui-CYz5SGgR.js";import{t as s}from"./bar-chart-CMWrEpFm.js";import{$ as c,Ai as l,Ri as u}from"./index-9oCCAb1t.js";var d=e(n(),1),f=t();c.schema;function p({config:e}){let t=l(),{flows:n,isLoading:c}=r(e.asset),u=(0,d.useMemo)(()=>[...n?.issuers??[]].sort((e,t)=>Math.abs(t.dailyNetInflow)-Math.abs(e.dailyNetInflow)).slice(0,e.limit).sort((e,t)=>t.dailyNetInflow-e.dailyNetInflow).map(e=>({label:e.ticker,value:e.dailyNetInflow})),[n,e.limit]);return c?(0,f.jsx)(o,{loading:!0,children:`loading ETF flows…`}):u.length===0?(0,f.jsx)(o,{children:`ETF flows unavailable`}):(0,f.jsxs)(`div`,{className:`flex h-full flex-col justify-center gap-1 text-normal`,children:[(0,f.jsx)(s,{data:u,orientation:`horizontal`,color:i,negativeColor:a,height:Math.max(u.length*24,96),formatValue:t.compact}),(0,f.jsxs)(`div`,{className:`caption text-soft text-center`,children:[e.asset.toUpperCase(),` spot-ETF issuers · today's net flow`]})]})}var m=u({...c,component:p});export{m as etfIssuerBarsFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{y as r}from"./hooks-CLLchjg6.js";import{t as i}from"./ui-CYz5SGgR.js";import{n as a,t as o}from"./treemap-leaf-f-vE1hUM.js";import{Ai as s,Ri as c,et as l}from"./index-9oCCAb1t.js";var u=e(n(),1),d=t();l.schema;function f({width:e,height:t,data:n}){let r=s(),i=r.compact(n.netAssets),a=r.compact(n.dailyNetInflow);return(0,d.jsx)(o,{width:e,height:t,label:n.id,secondary:i,title:`${n.id} · ${i} AUM · ${n.dailyNetInflow>=0?`+`:``}${a} today`})}function p({config:e}){let{flows:t,isLoading:n}=r(e.asset),o=(0,u.useMemo)(()=>(t?.issuers??[]).filter(e=>e.netAssets>0).slice(0,e.limit).map(e=>({id:e.ticker,value:e.netAssets,netAssets:e.netAssets,dailyNetInflow:e.dailyNetInflow})),[t,e.limit]);return n?(0,d.jsx)(i,{loading:!0,children:`loading ETF flows…`}):o.length===0?(0,d.jsx)(i,{children:`ETF flows unavailable`}):(0,d.jsx)(a,{data:o,LeafComponent:f,getColorValue:e=>e.dailyNetInflow})}var m=c({...l,component:p});export{m as etfIssuerTreemapFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{b as r}from"./hooks-CLLchjg6.js";import{r as i,s as a,t as o}from"./format-DWMrfgke.js";import{t as s}from"./ui-CYz5SGgR.js";import{t as c}from"./bar-chart-CMWrEpFm.js";import{Ri as l,tt as u}from"./index-9oCCAb1t.js";var d=e(n(),1),f=t();function p(){let{supply:e,isLoading:t}=r(),n=(0,d.useMemo)(()=>e?[{label:`PoS (actual)`,value:e.supplyGrowthYearlyPct},{label:`PoW (counterfactual)`,value:e.supplyGrowthYearlyPowPct}]:[],[e]);return t?(0,f.jsx)(s,{loading:!0,children:`loading ETH issuance…`}):e?(0,f.jsxs)(`div`,{className:`flex h-full flex-col justify-center gap-1 text-normal`,children:[(0,f.jsx)(c,{data:n,orientation:`horizontal`,color:o,negativeColor:i,height:Math.max(n.length*28,84),formatValue:a}),(0,f.jsxs)(`div`,{className:`caption text-soft text-center`,children:[`Net`,` `,e.supplyGrowthYearlyPct<=0?`deflationary`:`inflationary`,` ·`,` `,a(e.supplyGrowthYearlyPct),`/yr`]})]}):(0,f.jsx)(s,{children:`no ETH data yet`})}var m=l({...u,component:p});export{m as ethIssuanceImpactFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./liveline-BV-xqAVq.js";import{b as t}from"./hooks-CLLchjg6.js";import{f as n,r}from"./format-DWMrfgke.js";import{t as i}from"./ui-CYz5SGgR.js";import{n as a,t as o}from"./cycle-shared-D8LQcBSw.js";import{Ri as s,nt as c}from"./index-9oCCAb1t.js";var l=e();function u(){let{supply:e,isLoading:s}=t();return s?(0,l.jsx)(i,{loading:!0,children:`loading staking APR…`}):e?(0,l.jsx)(o,{caption:`ETH Staking APR`,headline:n(e.stakingAprPct),headlineColor:r,zone:{label:`validator yield`,color:a},sub:`issuance + MEV + tips`,sparkline:[],sparkColor:a}):(0,l.jsx)(i,{children:`no ETH data yet`})}var d=s({...c,component:u});export{d as ethStakingFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./liveline-BV-xqAVq.js";import{b as t}from"./hooks-CLLchjg6.js";import{r as n,t as r}from"./format-DWMrfgke.js";import{t as i}from"./ui-CYz5SGgR.js";import{t as a}from"./cycle-shared-D8LQcBSw.js";import{Ri as o,rt as s}from"./index-9oCCAb1t.js";var c=e(),l=e=>`${Math.round(e).toLocaleString(`en-US`)} ETH/yr`;function u(){let{supply:e,isLoading:o}=t();if(o)return(0,c.jsx)(i,{loading:!0,children:`loading ETH supply…`});if(!e)return(0,c.jsx)(i,{children:`no ETH data yet`});let s=e.supplyGrowthYearlyPct,u=s<=0?n:r;return(0,c.jsx)(a,{caption:`ETH Net Supply Growth · yr`,headline:`${s>=0?`+`:``}${s.toFixed(2)}%`,headlineColor:u,zone:{label:s<=0?`Deflationary`:`Inflationary`,color:u},sub:`burn ${l(e.burnRateYearlyEth)} · issue ${l(e.issuanceRateYearlyEth)}`,sparkline:e.history,sparkColor:u})}var d=o({...s,component:u});export{d as ethSupplyFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{x as r}from"./hooks-CLLchjg6.js";import{t as i}from"./ui-CYz5SGgR.js";import{t as a}from"./mini-line-chart-B0Ixv2kC.js";import{Ri as o,at as s}from"./index-9oCCAb1t.js";var c=e(n(),1),l=t();s.schema;function u(e){return e<=25?`#F21553`:e<=45?`#F97316`:e<=55?`#F59E0B`:e<=75?`#84CC16`:`#25A78D`}function d({config:e}){let{points:t,isLoading:n}=r(e.sparklineDays),o=t[0],s=(0,c.useMemo)(()=>[...t].reverse().map(e=>({date:new Date(e.time).toISOString(),value:e.value})),[t]);if(n)return(0,l.jsx)(i,{loading:!0,children:`loading index…`});if(!o)return(0,l.jsx)(i,{children:`no sentiment data yet`});let d=u(o.value);return(0,l.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-2.5`,children:[(0,l.jsx)(`div`,{className:`metric-xl leading-none`,style:{color:d,textShadow:`0 0 28px ${d}55`},children:o.value}),(0,l.jsx)(`div`,{className:`body-sm rounded-full px-2.5 py-0.5 font-semibold uppercase tracking-wide`,style:{color:d,background:`${d}1f`,border:`1px solid ${d}33`},children:o.classification}),(0,l.jsxs)(`div`,{className:`relative w-full max-w-[180px] overflow-hidden rounded-xl`,children:[(0,l.jsx)(`div`,{className:`h-[11px] w-full opacity-40`,style:{background:`linear-gradient(90deg, #FF1F5F 4.89%, #464646 34.15%, #464646 69.98%, #81FE90 100%)`}}),(0,l.jsx)(`div`,{className:`absolute left-0 top-0 h-full w-full`,style:{background:`repeating-linear-gradient(to right, var(--color-background-terminal), var(--color-background-terminal) 2px, transparent 2px, transparent 3px)`}}),(0,l.jsx)(`div`,{className:`absolute top-1/2 h-3 w-[3px] -translate-x-1/2 -translate-y-1/2 rounded-xs`,style:{left:`${o.value}%`,background:d}})]}),(0,l.jsx)(a,{data:s,width:150,height:30,color:d}),(0,l.jsxs)(`div`,{className:`caption text-soft`,children:[`crypto fear & greed · `,e.sparklineDays,`d`]})]})}var f=o({...s,component:d});export{f as fearGreedFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{x as r}from"./hooks-CLLchjg6.js";import{t as i}from"./ui-CYz5SGgR.js";import{t as a}from"./multi-series-line-chart-XRttVKf5.js";import{t as o}from"./timeframe-DUDLPk23.js";import{Ri as s,it as c}from"./index-9oCCAb1t.js";var l=e(n(),1),u=t();c.schema;function d(e){return e<=25?`#F21553`:e<=45?`#F97316`:e<=55?`#F59E0B`:e<=75?`#84CC16`:`#25A78D`}function f(e){return e<=35?o[`1M`]:e<=100?o[`3M`]:o.YTD}var p=e=>e.toFixed(0);function m({config:e}){let{points:t,isLoading:n}=r(e.days),o=(0,l.useMemo)(()=>{let e=[...t].reverse(),n=e.at(-1);return[{id:`fear-greed`,name:`Fear & Greed`,color:n?d(n.value):`#8b8bff`,data:e.map(e=>({date:new Date(e.time).toISOString(),value:e.value}))}]},[t]);return n?(0,u.jsx)(i,{loading:!0,children:`loading index…`}):o[0].data.length===0?(0,u.jsx)(i,{children:`no sentiment data yet`}):(0,u.jsx)(a,{series:o,timeframe:f(e.days),height:220,formatValue:p})}var h=s({...c,component:m});export{h as fearGreedChartFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./liveline-BV-xqAVq.js";var t=e();function n({href:e,leading:n,title:r,subtitle:i,meta:a,titleAttr:o}){return(0,t.jsxs)(`a`,{href:e,target:`_blank`,rel:`noreferrer noopener`,title:o,className:`group relative flex min-w-0 items-start gap-3 border-b border-white/[0.06] py-2 pl-3 no-underline transition-colors last:border-b-0 before:absolute before:bottom-1.5 before:left-0 before:top-1.5 before:w-0.5 before:rounded-full before:bg-highlight before:opacity-0 before:transition-opacity hover:bg-white/[0.03] group-hover:before:opacity-100 hover:before:opacity-100`,children:[n,(0,t.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,t.jsx)(`span`,{className:`body-sm text-normal line-clamp-2 block font-medium leading-snug transition-colors group-hover:text-strong`,children:r}),i&&(0,t.jsx)(`span`,{className:`caption text-soft mt-1 line-clamp-2 block leading-relaxed`,children:i})]}),(0,t.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1.5 pt-px`,children:[a!=null&&(0,t.jsx)(`span`,{className:`caption text-soft tabular-nums`,children:a}),(0,t.jsx)(`span`,{className:`caption text-highlight/70 -mr-0.5 w-2 opacity-0 transition-opacity group-hover:opacity-100`,children:`↗`})]})]})}export{n as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{u as r}from"./hooks-CLLchjg6.js";import{g as i}from"./format-DWMrfgke.js";import{n as a,t as o}from"./ui-CYz5SGgR.js";import{t as s}from"./feed-row-qDN72CXa.js";import{Ri as c,ot as l,r as u,t as d}from"./index-9oCCAb1t.js";var f=e(n(),1),p=t();l.schema;var m={"10-K":`Annual report`,"10-Q":`Quarterly report`,"8-K":`Material event`,"20-F":`Annual report (foreign)`,"40-F":`Annual report (foreign)`,"6-K":`Foreign interim report`,"S-1":`Registration`,"S-3":`Registration`,"S-4":`Registration (M&A)`,"DEF 14A":`Proxy statement`,DEFA14A:`Proxy materials`,"SC 13D":`Activist stake`,"SC 13G":`Passive stake`,SD:`Specialized disclosure`,3:`Initial insider ownership`,4:`Insider transaction`,5:`Annual insider ownership`,144:`Proposed insider sale`,"11-K":`Employee benefit plan`},h=/^(10-K|10-Q|8-K|20-F|40-F|6-K|S-|F-|424|DEF |DEFA|DEFM|11-K|SC 13|25)/i,g=/^(3|4|5|144)(\/A)?$/;function _(e){return e.replace(/^SCHEDULE /i,`SC `).trim()}function v(e,t){return t===`all`?!0:t===`insider`?g.test(e):h.test(e)}function y(e){let t=_(e.form);if(m[t])return m[t];let n=t.replace(/\/A$/,``);return n!==t&&m[n]?`${m[n]} (amended)`:e.description&&e.description.toUpperCase()!==e.form.toUpperCase()?e.description:t}function b({filing:e}){return(0,p.jsx)(s,{href:e.url,titleAttr:e.form,leading:(0,p.jsx)(`span`,{className:`caption text-strong inline-flex w-16 shrink-0 justify-center truncate rounded bg-white/[0.06] px-1.5 py-1 font-bold`,children:_(e.form)}),title:y(e),subtitle:e.reportDate?`period ${e.reportDate}`:e.items?`items ${e.items}`:e.accessionNumber,meta:e.filingDate?i(new Date(e.filingDate).getTime()):void 0})}function x({config:e}){let{data:t,isLoading:n}=r(e.symbol),i=(0,f.useMemo)(()=>(t?.filings??[]).filter(t=>v(_(t.form),e.forms)).slice(0,e.count),[t?.filings,e.forms,e.count]);if(n)return(0,p.jsx)(o,{loading:!0,children:`loading SEC filings…`});if(!t)return(0,p.jsxs)(o,{children:[`no SEC data for “`,u(e.symbol),`”`]});let s=t.tickers[0],c=e.symbol.includes(`:`)?e.symbol:s?`xyz:${s}`:null,l=[t.exchanges[0],t.category].filter(Boolean).join(` · `);return(0,p.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-3`,children:[(0,p.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,p.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[c&&(0,p.jsx)(d,{symbol:c,size:22}),(0,p.jsxs)(`div`,{className:`min-w-0`,children:[(0,p.jsx)(`div`,{className:`body-sm text-strong truncate font-semibold`,children:t.name||s||u(e.symbol)}),l&&(0,p.jsx)(`div`,{className:`caption text-soft truncate`,children:l})]})]}),(0,p.jsx)(`div`,{className:`caption text-soft shrink-0 text-right`,children:`filings`})]}),(0,p.jsx)(`div`,{className:a,children:i.length>0?i.map(e=>(0,p.jsx)(b,{filing:e},e.accessionNumber)):(0,p.jsxs)(o,{children:[`no `,e.forms===`all`?``:`${e.forms} `,`filings yet`]})})]})}var S=c({...l,component:x});export{S as filingsFeedFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{u as r}from"./hooks-CLLchjg6.js";import{f as i}from"./format-DWMrfgke.js";import{t as a}from"./ui-CYz5SGgR.js";import{t as o}from"./chart-utils-Ba8AFSZR.js";import{t as s}from"./pie-chart-cmDhECET.js";import{Ri as c,r as l,st as u}from"./index-9oCCAb1t.js";var d=e(n(),1),f=t();u.schema;var p=/^(10-K|10-Q|8-K|20-F|40-F|6-K|S-|F-|424|DEF |DEFA|DEFM|11-K|SC 13|25)/i,m=/^(3|4|5|144)(\/A)?$/;function h(e){return e.replace(/^SCHEDULE /i,`SC `).trim()}function g(e){let t=h(e);return m.test(t)?`insider`:p.test(t)?`important`:`other`}var _=[{id:`important`,label:`Periodic & material`,color:o[0]},{id:`insider`,label:`Insider (3/4/5/144)`,color:o[2]},{id:`other`,label:`Other`,color:o[5]}];function v({config:e}){let{data:t,isLoading:n}=r(e.symbol),o=(0,d.useMemo)(()=>{let e={important:0,insider:0,other:0};for(let n of t?.filings??[])e[g(n.form)]++;return _.map(t=>({...t,value:e[t.id]})).filter(e=>e.value>0).sort((e,t)=>t.value-e.value)},[t]),c=o.reduce((e,t)=>e+t.value,0);return n?(0,f.jsx)(a,{loading:!0,children:`loading SEC filings…`}):o.length===0?(0,f.jsxs)(a,{children:[`no SEC filings for “`,l(e.symbol),`”`]}):(0,f.jsxs)(`div`,{className:`flex h-full w-full flex-col items-center justify-center gap-4`,children:[(0,f.jsx)(s,{data:o.map(e=>({name:e.label,value:e.value})),width:200,height:200,innerRadius:58,outerRadius:92,colors:o.map(e=>e.color),children:(0,f.jsxs)(`div`,{className:`flex flex-col items-center gap-0.5`,children:[(0,f.jsx)(`span`,{className:`caption text-soft`,children:t?.name||l(e.symbol)}),(0,f.jsx)(`span`,{className:`metric-lg text-strong`,children:c}),(0,f.jsx)(`span`,{className:`caption text-soft`,children:`filings`})]})}),(0,f.jsx)(`div`,{className:`flex w-full max-w-xs flex-wrap justify-center gap-x-5 gap-y-1.5`,children:o.map(e=>(0,f.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,f.jsx)(`span`,{className:`h-2 w-2 flex-shrink-0 rounded-full`,style:{background:e.color}}),(0,f.jsx)(`span`,{className:`body-sm text-soft`,children:e.label}),(0,f.jsx)(`span`,{className:`body-sm text-normal font-bold tabular-nums`,children:i(e.value/c*100,0)})]},e.id))})]})}var y=c({...u,component:v});export{y as filingsMixFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{C as r}from"./hooks-CLLchjg6.js";import{r as i,t as a}from"./format-DWMrfgke.js";import{t as o}from"./ui-CYz5SGgR.js";import{t as s}from"./mini-line-chart-B0Ixv2kC.js";import{Ri as c,ct as l}from"./index-9oCCAb1t.js";var u=e(n(),1),d=t();l.schema;function f(e){return e>0?a:i}function p(e){return e>=2.5?`high stress`:e>=1?`elevated`:e>-1?`near average`:`below average`}function m({config:e}){let{stress:t,isLoading:n}=r(),i=(0,u.useMemo)(()=>(t?.trend??[]).slice(-e.trendDays).map(e=>({date:new Date(e.time).toISOString(),value:e.value})),[e.trendDays,t?.trend]);if(n)return(0,d.jsx)(o,{loading:!0,children:`loading stress index…`});if(!t)return(0,d.jsx)(o,{children:`no stress-index data yet`});let a=f(t.value);return(0,d.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col justify-center gap-3`,children:[(0,d.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`div`,{className:`caption text-soft uppercase`,children:`OFR FSI`}),(0,d.jsx)(`div`,{className:`body-sm text-normal`,children:t.date})]}),(0,d.jsx)(`div`,{className:`caption text-soft text-right`,children:`daily`})]}),(0,d.jsxs)(`div`,{className:`flex items-end justify-between gap-3`,children:[(0,d.jsxs)(`div`,{children:[(0,d.jsxs)(`div`,{className:`metric-xl leading-none`,style:{color:a,textShadow:`0 0 24px ${a}44`},children:[t.value>0?`+`:``,t.value.toFixed(2)]}),(0,d.jsx)(`div`,{className:`caption text-soft mt-1`,children:p(t.value)})]}),(0,d.jsxs)(`div`,{className:`caption text-soft max-w-[46%] text-right leading-snug`,children:[`0 = long-run average`,(0,d.jsx)(`br`,{}),`higher = more stress`]})]}),(0,d.jsx)(s,{data:i,width:210,height:42,color:a}),e.showCategories&&t.categories.length>0&&(0,d.jsx)(`div`,{className:`grid grid-cols-2 gap-1.5 border-t border-white/[0.08] pt-2`,children:t.categories.map(e=>(0,d.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,d.jsx)(`span`,{className:`caption text-soft truncate`,children:e.label}),(0,d.jsxs)(`span`,{className:`body-sm font-bold tabular-nums`,style:{color:f(e.value)},children:[e.value>0?`+`:``,e.value.toFixed(2)]})]},e.label))})]})}var h=c({...l,component:m});export{h as financialStressFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{n as r,r as i,t as a}from"./game-ui-DRuW9syP.js";import{Ri as o,lt as s}from"./index-9oCCAb1t.js";var c=e(n(),1),l=t(),u=.225,d=-3.6,f=52,p=132,m=210,h=1.3,g=64,_=12,v=28,y=28,b={bird:`rgba(255, 255, 255, 0.95)`,eye:`rgba(0, 0, 0, 0.8)`,pipe:`hsla(160, 64%, 40%, 0.9)`,ground:`rgba(255, 255, 255, 0.1)`};function x(e,t,n,r){e.save(),e.translate(g,t),e.rotate(Math.max(-.5,Math.min(.9,n*.06))),e.fillStyle=b.bird,e.beginPath(),e.arc(0,0,_,0,Math.PI*2),e.fill(),e.fillStyle=r,e.fillRect(-10,0,10,5),e.fillStyle=b.eye,e.beginPath(),e.arc(5,-4,2,0,Math.PI*2),e.fill(),e.restore()}function S(e,t,n,r,o,s){t.clearRect(0,0,e.width,e.height);let c=e.height-v;t.fillStyle=b.ground,t.fillRect(0,c,e.width,2),x(t,e.height/2,0,s),t.textAlign=`center`,n===`idle`?(t.fillStyle=a.text,t.font=`bold 14px "DM Sans", sans-serif`,t.fillText(`Press SPACE or tap to fly`,e.width/2,e.height/2-40)):(t.fillStyle=a.gameOver,t.font=`bold 20px "DM Sans", sans-serif`,t.fillText(`GAME OVER`,e.width/2,e.height/2-50),t.fillStyle=a.text,t.font=`bold 14px "DM Sans", sans-serif`,t.fillText(`Score: ${r}`,e.width/2,e.height/2-22),t.fillStyle=a.textSoft,t.fillText(`Press SPACE or tap to retry`,e.width/2,e.height/2+6)),t.textAlign=`left`,i(e,t,r,o,s)}function C(){let e=(0,c.useRef)(null),t=(0,c.useRef)(null),[n,a]=(0,c.useState)(`idle`),[o,s]=(0,c.useState)(0),[C,w]=(0,c.useState)(()=>{if(typeof window<`u`){let e=localStorage.getItem(`zframes-flappy-bird-high-score`);return e?parseInt(e,10):0}return 0}),[,T]=(0,c.useState)(!1),E=(0,c.useRef)(0),D=(0,c.useRef)(C),O=(0,c.useRef)(n),k=(0,c.useRef)(r(null));(0,c.useEffect)(()=>{D.current=C,C>0&&localStorage.setItem(`zframes-flappy-bird-high-score`,String(C))},[C]),(0,c.useEffect)(()=>{O.current=n},[n]);let A=(0,c.useRef)({birdY:0,birdVel:0,pipes:[],frameCount:0}),j=(0,c.useCallback)(e=>{let t=e.height-v,n=y,r=t-y-p;return n+Math.random()*Math.max(0,r-n)},[]),M=(0,c.useCallback)(()=>{let t=e.current;t&&(A.current={birdY:t.height/2,birdVel:0,pipes:[{x:t.width+60,gapY:j(t),passed:!1}],frameCount:0},E.current=0,s(0))},[j]),N=(0,c.useCallback)(()=>{if(t.current?.focus(),O.current!==`playing`){M(),a(`playing`);return}A.current.birdVel=d},[M]);return(0,c.useEffect)(()=>{let e=e=>{let t=e.target;t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable||(e.code===`Space`||e.code===`ArrowUp`)&&(e.preventDefault(),N())},n=t.current;if(n)return n.addEventListener(`keydown`,e),()=>n.removeEventListener(`keydown`,e)},[N]),(0,c.useLayoutEffect)(()=>{let t=e.current;if(!t)return;let n=()=>{let e=t.parentElement;if(e&&e.clientWidth>0&&e.clientHeight>0){t.width=e.clientWidth,t.height=e.clientHeight,k.current=r(t);let n=t.getContext(`2d`);O.current!==`playing`&&(A.current.birdY=t.height/2,n&&S(t,n,O.current,E.current,D.current,k.current)),T(e=>!e)}};n();let i=new ResizeObserver(n);return i.observe(t.parentElement),()=>i.disconnect()},[]),(0,c.useEffect)(()=>{if(n!==`playing`)return;let t=e.current,r=t?.getContext(`2d`);if(!t||!r)return;let o,c=t.height-v,l=()=>{E.current>D.current&&(D.current=E.current,w(E.current)),a(`gameover`)},d=()=>{let e=A.current;r.clearRect(0,0,t.width,t.height),e.birdVel+=u,e.birdY+=e.birdVel,e.pipes=e.pipes.filter(e=>e.x>-52),e.pipes.forEach(e=>e.x-=h);let n=e.pipes[e.pipes.length-1];if((!n||n.x<t.width-m)&&e.pipes.push({x:t.width,gapY:j(t),passed:!1}),e.birdY-_<=0||e.birdY+_>=c){l();return}for(let t of e.pipes){if(76>t.x&&g-_<t.x+f&&(e.birdY-_<t.gapY||e.birdY+_>t.gapY+p)){l();return}!t.passed&&t.x+f<g&&(t.passed=!0,E.current+=1,s(E.current))}r.fillStyle=b.pipe;for(let t of e.pipes)r.fillRect(t.x,0,f,t.gapY),r.fillRect(t.x,t.gapY+p,f,c-(t.gapY+p));r.fillStyle=b.ground,r.fillRect(0,c,t.width,2),x(r,e.birdY,e.birdVel,k.current),i(t,r,E.current,D.current,k.current),e.frameCount++,o=requestAnimationFrame(d)};return o=requestAnimationFrame(d),()=>cancelAnimationFrame(o)},[n]),(0,c.useEffect)(()=>{if(n===`playing`)return;let t=e.current,r=t?.getContext(`2d`);!t||!r||S(t,r,n,o,C,k.current)},[n,o,C]),(0,l.jsx)(`div`,{ref:t,tabIndex:0,className:`relative h-full w-full cursor-pointer select-none overflow-hidden outline-none`,onClick:N,onTouchStart:N,role:`application`,"aria-label":`Flappy bird game. Press space or tap to flap.`,children:(0,l.jsx)(`canvas`,{ref:e,className:`h-full w-full`})})}var w=o({...s,component:C});export{w as flappyBirdFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e,n as t,r as n}from"./money-BHiVNo0u.js";function r(e){return n(e,`USD`)}function i(e){return`${e>=0?`+`:``}${e.toFixed(2)}%`}function a(e){let t=e>=100?2:4;return e.toLocaleString(`en-US`,{minimumFractionDigits:t,maximumFractionDigits:t})}function o(e,t=2){return`${e.toFixed(t)}%`}function s(e){return`${e>=0?`+`:``}${e.toFixed(4)}%`}var c=`var(--zf-up, #3fd08f)`,l=`var(--zf-down, #ff6b81)`,u=`#3fd08f`,d=`#ff6b81`;function f(e){return e>=0?c:l}function p(e){return t(e)}function m(t){return e(t,`USD`)}function h(e){return e.split(/[-_]/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function g(e){let t=e/1e8;return t>=100?`${t.toFixed(0)} BTC`:t>=1?`${t.toFixed(2)} BTC`:t>=.001?`${t.toFixed(4)} BTC`:`${Math.round(e).toLocaleString(`en-US`)} sats`}function _(e){let t=[`H/s`,`kH/s`,`MH/s`,`GH/s`,`TH/s`,`PH/s`,`EH/s`,`ZH/s`],n=e,r=0;for(;n>=1e3&&r<t.length-1;)n/=1e3,r++;return`${n.toFixed(n>=100?0:n>=10?1:2)} ${t[r]}`}function v(e){let t=Math.max(0,Math.round((Date.now()-e)/1e3));if(t<60)return`now`;let n=Math.round(t/60);if(n<60)return`${n}m`;let r=Math.round(n/60);if(r<24)return`${r}h`;let i=Math.round(r/24);if(i<7)return`${i}d`;let a=Math.round(i/7);return a<5?`${a}w`:new Date(e).toLocaleDateString(`en-US`,{month:`short`,day:`numeric`})}export{f as a,p as c,_ as d,o as f,v as g,h,u as i,m as l,a as m,d as n,g as o,r as p,c as r,i as s,l as t,s as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./liveline-BV-xqAVq.js";import{l as t}from"./hooks-CLLchjg6.js";import{c as n,l as r,p as i}from"./format-DWMrfgke.js";import{n as a,t as o}from"./ui-CYz5SGgR.js";import{Ri as s,r as c,ut as l}from"./index-9oCCAb1t.js";var u=e();l.schema;function d(e){return e.unit===`USD/shares`?i(e.value):e.unit===`shares`?n(e.value):r(e.value)}function f({config:e}){let{data:n,isLoading:r}=t(e.symbol);return r?(0,u.jsx)(o,{loading:!0,children:`loading SEC financials…`}):!n||n.metrics.length===0?(0,u.jsxs)(o,{children:[`no SEC financials for “`,c(e.symbol),`”`]}):(0,u.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-3`,children:[(0,u.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,u.jsxs)(`div`,{className:`min-w-0`,children:[(0,u.jsx)(`div`,{className:`body-sm text-strong truncate font-semibold`,children:n.entityName||c(e.symbol)}),(0,u.jsx)(`div`,{className:`caption text-soft truncate`,children:`SEC EDGAR · XBRL company facts`})]}),(0,u.jsx)(`div`,{className:`caption text-soft shrink-0 text-right`,children:`on filing`})]}),(0,u.jsx)(`div`,{className:`grid grid-cols-2 content-start gap-2 ${a}`,children:n.metrics.map(e=>(0,u.jsxs)(`div`,{className:`rounded bg-white/[0.04] px-3 py-2`,children:[(0,u.jsx)(`div`,{className:`caption text-soft truncate`,children:e.label}),(0,u.jsx)(`div`,{className:`metric-sm text-strong`,children:d(e)}),(0,u.jsx)(`div`,{className:`caption text-soft truncate`,children:e.fiscalPeriod})]},e.label))})]})}var p=s({...l,component:f});export{p as fundamentalsFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{w as r}from"./hooks-CLLchjg6.js";import{r as i,t as a,u as o}from"./format-DWMrfgke.js";import{t as s}from"./ui-CYz5SGgR.js";import{t as c}from"./bar-chart-CMWrEpFm.js";import{Ri as l,dt as u}from"./index-9oCCAb1t.js";var d=e(n(),1),f=t();u.schema;function p({config:e}){let{comparison:t,isLoading:n}=r(),l=e.coin.trim().toUpperCase(),u=(0,d.useMemo)(()=>t.find(e=>e.coin.toUpperCase()===l),[t,l]),p=(0,d.useMemo)(()=>(u?.venues??[]).map(e=>({label:e.venue,value:e.annualizedPct})),[u]);return n?(0,f.jsx)(s,{loading:!0,children:`loading funding…`}):p.length===0?(0,f.jsxs)(s,{children:[`no cross-venue funding for `,l]}):(0,f.jsxs)(`div`,{className:`flex h-full flex-col justify-center gap-1 text-normal`,children:[(0,f.jsx)(c,{data:p,orientation:`horizontal`,color:i,negativeColor:a,height:Math.max(p.length*28,84),formatValue:e=>o(e)}),(0,f.jsxs)(`div`,{className:`caption text-soft text-center`,children:[l,` funding, annualized · spread`,` `,o(u?.spreadPct??0)]})]})}var m=l({...u,component:p});export{m as fundingBarsFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{T as r}from"./hooks-CLLchjg6.js";import{u as i}from"./format-DWMrfgke.js";import{t as a}from"./ui-CYz5SGgR.js";import{t as o}from"./chart-utils-Ba8AFSZR.js";import{t as s}from"./stacked-area-chart-B3ayMBfx.js";import{Ri as c,ft as l,r as u}from"./index-9oCCAb1t.js";var d=e(n(),1),f=t(),p={"24h":1440*60*1e3,"7D":10080*60*1e3,"1M":720*60*60*1e3};l.schema;function m(e){return e.toLocaleDateString(`en-US`,{month:`short`,day:`numeric`})}function h({config:e}){let t=p[e.lookback],n=(0,d.useMemo)(()=>Date.now()-t,[t]),{history:c,isLoading:l}=r(e.symbols,n),h=(0,d.useMemo)(()=>e.symbols.map((e,t)=>{let n=0,r=[...c[e]??[]].sort((e,t)=>e.time-t.time).map(e=>(n+=e.fundingRate*100,{date:new Date(e.time),value:n}));return{id:e,name:u(e),color:o[t%o.length],data:r}}),[e.symbols,c]);return l?(0,f.jsx)(a,{loading:!0,children:`loading funding carry…`}):h.every(e=>e.data.length===0)?(0,f.jsx)(a,{children:`no funding data yet`}):(0,f.jsx)(s,{series:h,height:250,formatXAxis:m,formatYAxis:i,formatValue:i})}var g=c({...l,component:h});export{g as fundingCarryAreaFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./liveline-BV-xqAVq.js";import{w as t}from"./hooks-CLLchjg6.js";import{f as n}from"./format-DWMrfgke.js";import{n as r,t as i}from"./ui-CYz5SGgR.js";import{t as a}from"./metric-row-CqsjSvCI.js";import{Ri as o,pt as s}from"./index-9oCCAb1t.js";var c=e();s.schema;function l({config:e}){let{comparison:o,isLoading:s}=t(),l=o.slice(0,e.limit);return s?(0,c.jsx)(i,{loading:!0,children:`loading funding…`}):l.length===0?(0,c.jsx)(i,{children:`no funding data yet`}):(0,c.jsx)(`div`,{className:`${r} flex flex-col`,children:l.map(e=>(0,c.jsx)(a,{label:e.coin,meta:e.venues.map(e=>`${e.venue.slice(0,3)} ${n(e.annualizedPct,1)}`).join(` · `),value:`${n(e.spreadPct,1)} sprd`},e.coin))})}var u=o({...s,component:l});export{u as fundingComparisonFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{W as r,p as i}from"./hooks-CLLchjg6.js";import{a,s as o,u as s}from"./format-DWMrfgke.js";import{t as c}from"./ui-CYz5SGgR.js";import{t as l}from"./scatter-chart-tjlc1NWO.js";import{Ri as u,mt as d,r as f}from"./index-9oCCAb1t.js";var p=e(n(),1),m=t();d.schema;function h({config:e}){let{stats:t,isLoading:n}=i(),{entries:u,isLoading:d}=r(),h=n||d,g=(0,p.useMemo)(()=>{let e=new Map;for(let t of u)e.set(t.symbol,t.openInterestUsd);return e},[u]),_=(0,p.useMemo)(()=>Object.entries(t).filter(([,e])=>e.funding!==void 0).map(([e,t])=>({id:e,label:f(e),x:t.changePct,y:t.funding*100,weight:g.get(e)??0,color:a(t.changePct)})).filter(e=>e.weight>0).sort((e,t)=>t.weight-e.weight).slice(0,e.limit),[t,g,e.limit]);return h?(0,m.jsx)(c,{loading:!0,children:`loading funding…`}):_.length===0?(0,m.jsx)(c,{children:`no funding data yet`}):(0,m.jsxs)(`div`,{className:`flex h-full flex-col justify-center gap-1 text-normal`,children:[(0,m.jsx)(l,{data:_,zeroXLine:!0,height:210,formatX:o,formatY:s,maxLabels:10}),(0,m.jsxs)(`div`,{className:`caption text-soft text-center`,children:[`24h change (x) vs funding rate (y) · bubble = open interest · top`,` `,_.length]})]})}var g=u({...d,component:h});export{g as fundingCrowdingScatterFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{T as r}from"./hooks-CLLchjg6.js";import{u as i}from"./format-DWMrfgke.js";import{t as a}from"./ui-CYz5SGgR.js";import{t as o}from"./heatmap-chart-CXN9d41C.js";import{Ri as s,ht as c,r as l}from"./index-9oCCAb1t.js";var u=e(n(),1),d=t();c.schema;var f=1440*60*1e3,p=10080*60*1e3;function m({data:e,width:t}){return t<44?null:(0,d.jsx)(`div`,{className:`flex h-full w-full items-center justify-center`,children:(0,d.jsx)(`span`,{className:`caption text-normal tabular-nums`,children:i(e.rate*100)})})}function h({config:e}){let t=(0,u.useMemo)(()=>Date.now()-p,[]),{history:n,isLoading:i}=r(e.symbols,t),s=(0,u.useMemo)(()=>{let t=[];for(let r of e.symbols){let e=n[r]??[],i=new Map;for(let t of e){let e=Math.floor(t.time/f)*f,n=i.get(e)??{sum:0,n:0};n.sum+=t.fundingRate,n.n+=1,i.set(e,n)}for(let[e,{sum:n,n:a}]of i){let i=n/a,o=new Date(e).toLocaleDateString(`en-US`,{month:`numeric`,day:`numeric`});t.push({id:`${r}-${e}`,row:l(r),column:o,value:i*1e4,rate:i})}}return t},[n,e.symbols]);return i?(0,d.jsx)(a,{loading:!0,children:`loading funding…`}):s.length===0?(0,d.jsx)(a,{children:`no funding data`}):(0,d.jsx)(o,{data:s,CellComponent:m,gap:3,showLabels:!0,rowLabelWidth:48,columnLabelHeight:20})}var g=s({...c,component:h});export{g as fundingHeatmapFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{p as r}from"./hooks-CLLchjg6.js";import{r as i,t as a,u as o}from"./format-DWMrfgke.js";import{t as s}from"./ui-CYz5SGgR.js";import{t as c}from"./bar-chart-CMWrEpFm.js";import{Ri as l,gt as u,r as d}from"./index-9oCCAb1t.js";var f=e(n(),1),p=t();u.schema;var m=[`xyz:*`];function h({config:e}){let t=r(void 0,6e4),n=r(m,6e4),l=t.isLoading||n.isLoading,u=(0,f.useMemo)(()=>Object.entries({...t.stats,...n.stats}).filter(([,e])=>e.funding!==void 0).map(([e,t])=>({label:d(e),value:t.funding*100})).sort((e,t)=>Math.abs(t.value)-Math.abs(e.value)).slice(0,e.limit).sort((e,t)=>t.value-e.value),[t.stats,n.stats,e.limit]);return l?(0,p.jsx)(s,{loading:!0,children:`loading funding…`}):u.length===0?(0,p.jsx)(s,{children:`no funding data yet`}):(0,p.jsx)(`div`,{className:`flex h-full flex-col justify-center text-normal`,children:(0,p.jsx)(c,{data:u,orientation:`horizontal`,color:i,negativeColor:a,height:Math.max(u.length*24,96),formatValue:o})})}var g=l({...u,component:h});export{g as fundingLeaderboardBarsFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{T as r}from"./hooks-CLLchjg6.js";import{u as i}from"./format-DWMrfgke.js";import{t as a}from"./ui-CYz5SGgR.js";import{t as o}from"./multi-series-line-chart-XRttVKf5.js";import{t as s}from"./timeframe-DUDLPk23.js";import{t as c}from"./chart-utils-Ba8AFSZR.js";import{Ri as l,_t as u,r as d}from"./index-9oCCAb1t.js";var f=e(n(),1),p=t(),m={"24h":{ms:1440*60*1e3,timeframe:s[`24h`]},"7D":{ms:10080*60*1e3,timeframe:s[`7D`]},"1M":{ms:720*60*60*1e3,timeframe:s[`1M`]}};u.schema;function h({config:e}){let{ms:t,timeframe:n}=m[e.lookback],s=(0,f.useMemo)(()=>Date.now()-t,[t]),{history:l,isLoading:u}=r(e.symbols,s),h=(0,f.useMemo)(()=>e.symbols.map((e,t)=>({id:e,name:d(e),color:c[t%c.length],data:(l[e]??[]).map(e=>({date:new Date(e.time).toISOString(),value:e.fundingRate*100}))})),[e.symbols,l]);return u?(0,p.jsx)(a,{loading:!0,children:`loading funding rates…`}):h.every(e=>e.data.length===0)?(0,p.jsx)(a,{children:`no funding data yet`}):(0,p.jsx)(o,{series:h,timeframe:n,height:250,formatValue:i})}var g=l({...u,component:h});export{g as fundingRateChartFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{w as r}from"./hooks-CLLchjg6.js";import{f as i}from"./format-DWMrfgke.js";import{t as a}from"./ui-CYz5SGgR.js";import{t as o}from"./bar-chart-CMWrEpFm.js";import{Ri as s,vt as c}from"./index-9oCCAb1t.js";var l=e(n(),1),u=t();c.schema;function d({config:e}){let{comparison:t,isLoading:n}=r(),s=(0,l.useMemo)(()=>[...t].sort((e,t)=>t.spreadPct-e.spreadPct).slice(0,e.limit).map(e=>({label:e.coin,value:e.spreadPct})),[t,e.limit]);return n?(0,u.jsx)(a,{loading:!0,children:`loading funding…`}):s.length===0?(0,u.jsx)(a,{children:`no funding data yet`}):(0,u.jsxs)(`div`,{className:`flex h-full flex-col justify-center gap-1 text-normal`,children:[(0,u.jsx)(o,{data:s,orientation:`horizontal`,height:Math.max(s.length*26,96),formatValue:e=>i(e,1)}),(0,u.jsxs)(`div`,{className:`caption text-soft text-center`,children:[`cross-venue funding spread, annualized · top `,s.length]})]})}var f=s({...c,component:d});export{f as fundingSpreadBarsFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{w as r}from"./hooks-CLLchjg6.js";import{f as i}from"./format-DWMrfgke.js";import{t as a}from"./ui-CYz5SGgR.js";import{t as o}from"./heatmap-chart-CXN9d41C.js";import{Ri as s,yt as c}from"./index-9oCCAb1t.js";var l=e(n(),1),u=t();c.schema;function d({data:e,width:t}){return t<44?null:(0,u.jsx)(`div`,{className:`flex h-full w-full items-center justify-center`,children:(0,u.jsx)(`span`,{className:`caption text-normal tabular-nums`,children:i(e.annualizedPct,1)})})}function f({config:e}){let{comparison:t,isLoading:n}=r(),i=(0,l.useMemo)(()=>{let n=[...t].sort((e,t)=>Math.abs(t.spreadPct)-Math.abs(e.spreadPct)).slice(0,e.limit),r=[];for(let e of n)for(let t of e.venues)r.push({id:`${e.coin}-${t.venue}`,row:e.coin,column:t.venue,value:t.annualizedPct,annualizedPct:t.annualizedPct});return r},[t,e.limit]);return n?(0,u.jsx)(a,{loading:!0,children:`loading funding…`}):i.length===0?(0,u.jsx)(a,{children:`no funding data`}):(0,u.jsx)(o,{data:i,CellComponent:d,gap:3,showLabels:!0,rowLabelWidth:48,columnLabelHeight:20})}var p=s({...c,component:f});export{p as fundingVenueHeatmapFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./liveline-BV-xqAVq.js";import{E as t}from"./hooks-CLLchjg6.js";import{a as n,m as r,s as i}from"./format-DWMrfgke.js";import{t as a}from"./ui-CYz5SGgR.js";import{t as o}from"./mini-line-chart-B0Ixv2kC.js";import{Ri as s,bt as c}from"./index-9oCCAb1t.js";var l=e();c.schema;function u({config:e}){let{rates:s,isLoading:c}=t(e.base,e.symbols);if(c)return(0,l.jsx)(a,{loading:!0,children:`loading FX rates…`});if(!s.length)return(0,l.jsx)(a,{children:`no FX data yet`});let u=s[0]?.history.at(-1)?.time;return(0,l.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-3`,children:[(0,l.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`div`,{className:`caption text-soft uppercase`,children:`FX rates`}),(0,l.jsxs)(`div`,{className:`body-sm text-normal`,children:[`1 `,e.base.toUpperCase(),` buys`]})]}),(0,l.jsx)(`div`,{className:`caption text-soft text-right`,children:u?new Date(u).toLocaleDateString(`en-US`,{month:`short`,day:`numeric`}):`ECB daily`})]}),(0,l.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden`,children:s.map(t=>{let a=n(t.changePct),s=t.history.map(e=>({date:new Date(e.time).toISOString(),value:e.value}));return(0,l.jsxs)(`div`,{className:`flex items-center gap-3 border-b border-white/[0.06] py-1.5 last:border-b-0`,children:[(0,l.jsx)(`span`,{className:`body-sm w-9 font-bold text-strong`,children:t.symbol}),(0,l.jsx)(`div`,{className:`flex-1`}),e.showSparkline&&s.length>1&&(0,l.jsx)(o,{data:s,width:72,height:20,color:a}),(0,l.jsxs)(`span`,{className:`whitespace-nowrap text-right tabular-nums`,children:[(0,l.jsx)(`span`,{className:`body-sm text-strong`,children:r(t.rate)}),(0,l.jsx)(`span`,{className:`caption ml-2 font-bold`,style:{color:a},children:i(t.changePct)})]})]},t.symbol)})})]})}var d=s({...c,component:u});export{d as fxBoardFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{E as r}from"./hooks-CLLchjg6.js";import{m as i,s as a}from"./format-DWMrfgke.js";import{t as o}from"./ui-CYz5SGgR.js";import{t as s}from"./heatmap-chart-CXN9d41C.js";import{Ri as c,xt as l}from"./index-9oCCAb1t.js";var u=e(n(),1),d=t();l.schema;function f({data:e,width:t}){return t<40?null:(0,d.jsx)(`div`,{className:`flex h-full w-full items-center justify-center`,title:`${e.row} → ${e.column} · ${i(e.rate)} · ${a(e.value)}`,children:(0,d.jsx)(`span`,{className:`caption text-normal tabular-nums`,children:a(e.value)})})}function p({config:e}){let{rates:t,isLoading:n}=r(`USD`,(0,u.useMemo)(()=>e.symbols.filter(e=>e!==`USD`),[e.symbols])),i=(0,u.useMemo)(()=>{let n=new Map([[`USD`,{rate:1,changePct:0}]]);for(let e of t)n.set(e.symbol,e);let r=[];for(let t of e.symbols){let i=n.get(t);if(i)for(let a of e.symbols){if(t===a)continue;let e=n.get(a);if(!e)continue;let o=((1+e.changePct/100)/(1+i.changePct/100)-1)*100;r.push({id:`${t}-${a}`,row:t,column:a,value:o,rate:e.rate/i.rate})}}return r},[t,e.symbols]);return n?(0,d.jsx)(o,{loading:!0,children:`loading FX crosses…`}):i.length===0?(0,d.jsx)(o,{children:`no FX data yet`}):(0,d.jsx)(s,{data:i,CellComponent:f,gap:3,showLabels:!0,rowLabelWidth:40,columnLabelHeight:20})}var m=c({...l,component:p});export{m as fxCrossHeatmapFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{E as r}from"./hooks-CLLchjg6.js";import{r as i,s as a,t as o}from"./format-DWMrfgke.js";import{t as s}from"./ui-CYz5SGgR.js";import{t as c}from"./bar-chart-CMWrEpFm.js";import{Ri as l,St as u}from"./index-9oCCAb1t.js";var d=e(n(),1),f=t();u.schema;function p({config:e}){let{rates:t,isLoading:n}=r(e.base,e.symbols),l=(0,d.useMemo)(()=>[...t].sort((e,t)=>t.changePct-e.changePct).map(e=>({label:e.symbol,value:e.changePct})),[t]);return n?(0,f.jsx)(s,{loading:!0,children:`loading FX rates…`}):l.length===0?(0,f.jsx)(s,{children:`no FX data yet`}):(0,f.jsxs)(`div`,{className:`flex h-full flex-col justify-center gap-1 text-normal`,children:[(0,f.jsx)(c,{data:l,orientation:`horizontal`,color:i,negativeColor:o,height:Math.max(l.length*24,96),formatValue:a}),(0,f.jsxs)(`div`,{className:`caption text-soft text-center`,children:[e.base.toUpperCase(),` FX movers · day change`]})]})}var m=l({...u,component:p});export{m as fxMoversBarsFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{E as r}from"./hooks-CLLchjg6.js";import{s as i}from"./format-DWMrfgke.js";import{t as a}from"./ui-CYz5SGgR.js";import{t as o}from"./multi-series-line-chart-XRttVKf5.js";import{t as s}from"./timeframe-DUDLPk23.js";import{t as c}from"./chart-utils-Ba8AFSZR.js";import{Ct as l,Ri as u}from"./index-9oCCAb1t.js";var d=e(n(),1),f=t();l.schema;function p({config:e}){let{rates:t,isLoading:n}=r(e.base,e.symbols),l=(0,d.useMemo)(()=>t.filter(e=>e.history.length>0).map((e,t)=>{let n=e.history[0].value;return{id:e.symbol,name:e.symbol,color:c[t%c.length],data:e.history.map(e=>({date:new Date(e.time).toISOString(),value:n>0?(e.value-n)/n*100:0}))}}),[t]);return n?(0,f.jsx)(a,{loading:!0,children:`loading FX trends…`}):l.length===0?(0,f.jsx)(a,{children:`no FX data yet`}):(0,f.jsx)(o,{series:l,timeframe:s[`1M`],height:220,formatValue:i})}var m=u({...l,component:p});export{m as fxTrendChartFrame};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./format-DWMrfgke.js";function t(e,t=70,n=1){let r=`242`,i=`90%`;if(e){let t=getComputedStyle(e);r=t.getPropertyValue(`--zf-accent-hue`).trim()||`242`,i=t.getPropertyValue(`--zf-accent-sat`).trim()||`90%`}return`hsla(${r}, ${i}, ${t}%, ${n})`}var n={text:`rgba(255, 255, 255, 0.85)`,textSoft:`rgba(255, 255, 255, 0.6)`,gameOver:e};function r(e,t,r,i,a){t.font=`bold 12px "DM Sans", monospace`,t.textAlign=`left`,t.fillStyle=n.textSoft,t.fillText(`HI`,10,22),t.fillStyle=a,t.fillText(String(i).padStart(4,`0`),30,22),t.textAlign=`right`,t.fillStyle=n.text,t.fillText(String(r).padStart(4,`0`),e.width-10,22)}export{t as n,r,n as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{n as t,r as n}from"./liveline-BV-xqAVq.js";import{M as r}from"./hooks-CLLchjg6.js";import{a as i,f as a,s as o}from"./format-DWMrfgke.js";import{t as s}from"./ui-CYz5SGgR.js";import{t as c}from"./mini-line-chart-B0Ixv2kC.js";import{D as l,T as u,d,v as f,x as p,y as m}from"./metals-shared-CN6-LtS3.js";import{Ri as h,wt as g}from"./index-9oCCAb1t.js";var _=e(n(),1),v=t();g.schema;var y=e=>e.toFixed(1);function b(e){return e>=85?`silver historically cheap vs gold`:e>=60?`silver on the cheap side`:e>40?`mid-range — neither leg stretched`:e>15?`silver on the dear side`:`silver historically dear vs gold`}function x({config:e}){let{histories:t,isLoading:n}=r([`XAU`,`XAG`]),h=(0,_.useMemo)(()=>{let n=t.find(e=>e.symbol===`XAU`)?.points??[],r=t.find(e=>e.symbol===`XAG`)?.points??[],i=p(u(n,e.years),u(r,e.years));if(i.length===0)return null;let a=1/0,o=-1/0,s=[];for(let e of i)s.push(e.value),e.value<a&&(a=e.value),e.value>o&&(o=e.value);let c=s[s.length-1];return{current:c,low:a,high:o,changePct:f(s[0],c),percentile:m(s,c),spark:l(d(i,240))}},[t,e.years]);return n?(0,v.jsx)(s,{loading:!0,children:`loading gold & silver fixes…`}):h?(0,v.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col justify-center gap-3`,children:[(0,v.jsxs)(`div`,{className:`flex items-end justify-between gap-3`,children:[(0,v.jsxs)(`div`,{className:`min-w-0`,children:[(0,v.jsx)(`div`,{className:`caption text-soft uppercase`,children:`gold / silver`}),(0,v.jsx)(`div`,{className:`metric-xl text-strong leading-none`,children:y(h.current)}),(0,v.jsx)(`div`,{className:`caption text-soft mt-1`,children:`oz of silver per oz of gold`})]}),(0,v.jsxs)(`div`,{className:`shrink-0 text-right`,children:[(0,v.jsx)(`div`,{className:`body-md font-bold tabular-nums`,style:{color:i(h.changePct)},children:o(h.changePct)}),(0,v.jsxs)(`div`,{className:`caption text-soft`,children:[e.years,`y change`]})]})]}),h.spark.length>1&&(0,v.jsx)(c,{data:h.spark,width:320,height:48,color:`hsl(var(--zf-accent-hue, 242) 85% 72%)`}),e.showPercentile&&(0,v.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-white/[0.08] pt-2`,children:[(0,v.jsxs)(`div`,{className:`min-w-0`,children:[(0,v.jsxs)(`div`,{className:`body-sm text-normal font-bold tabular-nums`,children:[a(h.percentile,0),` of `,e.years,`y range`]}),(0,v.jsx)(`div`,{className:`caption text-soft truncate`,children:b(h.percentile)})]}),(0,v.jsxs)(`div`,{className:`caption text-soft shrink-0 text-right tabular-nums`,children:[`low `,y(h.low),(0,v.jsx)(`br`,{}),`high `,y(h.high)]})]})]}):(0,v.jsx)(s,{children:`no overlapping gold & silver fixes yet`})}var S=h({...g,component:x});export{S as goldSilverRatioFrame};
|