@hanzo/ui 8.27.9 → 8.27.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (474) hide show
  1. package/dist/backends/gui/3d-card.cjs +100 -0
  2. package/dist/backends/gui/3d-card.d.ts +59 -0
  3. package/dist/backends/gui/3d-card.d.ts.map +1 -0
  4. package/dist/backends/gui/3d-card.js +92 -0
  5. package/dist/backends/gui/3d-card.js.map +1 -0
  6. package/dist/backends/gui/3d-marquee.cjs +225 -0
  7. package/dist/backends/gui/3d-marquee.d.ts +114 -0
  8. package/dist/backends/gui/3d-marquee.d.ts.map +1 -0
  9. package/dist/backends/gui/3d-marquee.js +190 -0
  10. package/dist/backends/gui/3d-marquee.js.map +1 -0
  11. package/dist/backends/gui/3d-pin.cjs +51 -0
  12. package/dist/backends/gui/3d-pin.d.ts +14 -0
  13. package/dist/backends/gui/3d-pin.d.ts.map +1 -0
  14. package/dist/backends/gui/3d-pin.js +49 -0
  15. package/dist/backends/gui/3d-pin.js.map +1 -0
  16. package/dist/backends/gui/advanced-chart.cjs +61 -0
  17. package/dist/backends/gui/advanced-chart.d.ts +38 -0
  18. package/dist/backends/gui/advanced-chart.d.ts.map +1 -0
  19. package/dist/backends/gui/advanced-chart.js +59 -0
  20. package/dist/backends/gui/advanced-chart.js.map +1 -0
  21. package/dist/backends/gui/alert.cjs +106 -0
  22. package/dist/backends/gui/alert.d.ts +39 -0
  23. package/dist/backends/gui/alert.d.ts.map +1 -0
  24. package/dist/backends/gui/alert.js +102 -0
  25. package/dist/backends/gui/alert.js.map +1 -0
  26. package/dist/backends/gui/android.cjs +52 -0
  27. package/dist/backends/gui/android.d.ts +16 -0
  28. package/dist/backends/gui/android.d.ts.map +1 -0
  29. package/dist/backends/gui/android.js +50 -0
  30. package/dist/backends/gui/android.js.map +1 -0
  31. package/dist/backends/gui/animated-beam.cjs +97 -0
  32. package/dist/backends/gui/animated-beam.d.ts +57 -0
  33. package/dist/backends/gui/animated-beam.d.ts.map +1 -0
  34. package/dist/backends/gui/animated-beam.js +62 -0
  35. package/dist/backends/gui/animated-beam.js.map +1 -0
  36. package/dist/backends/gui/animated-cursor.cjs +183 -0
  37. package/dist/backends/gui/animated-cursor.d.ts +42 -0
  38. package/dist/backends/gui/animated-cursor.d.ts.map +1 -0
  39. package/dist/backends/gui/animated-cursor.js +181 -0
  40. package/dist/backends/gui/animated-cursor.js.map +1 -0
  41. package/dist/backends/gui/animated-testimonials.cjs +109 -0
  42. package/dist/backends/gui/animated-testimonials.d.ts +23 -0
  43. package/dist/backends/gui/animated-testimonials.d.ts.map +1 -0
  44. package/dist/backends/gui/animated-testimonials.js +74 -0
  45. package/dist/backends/gui/animated-testimonials.js.map +1 -0
  46. package/dist/backends/gui/animated-tooltip.cjs +100 -0
  47. package/dist/backends/gui/animated-tooltip.d.ts +15 -0
  48. package/dist/backends/gui/animated-tooltip.d.ts.map +1 -0
  49. package/dist/backends/gui/animated-tooltip.js +65 -0
  50. package/dist/backends/gui/animated-tooltip.js.map +1 -0
  51. package/dist/backends/gui/announcement.cjs +54 -0
  52. package/dist/backends/gui/announcement.d.ts +26 -0
  53. package/dist/backends/gui/announcement.d.ts.map +1 -0
  54. package/dist/backends/gui/announcement.js +52 -0
  55. package/dist/backends/gui/announcement.js.map +1 -0
  56. package/dist/backends/gui/apple-cards-carousel.cjs +198 -0
  57. package/dist/backends/gui/apple-cards-carousel.d.ts +45 -0
  58. package/dist/backends/gui/apple-cards-carousel.d.ts.map +1 -0
  59. package/dist/backends/gui/apple-cards-carousel.js +162 -0
  60. package/dist/backends/gui/apple-cards-carousel.js.map +1 -0
  61. package/dist/backends/gui/apple-hello-effect.cjs +38 -0
  62. package/dist/backends/gui/apple-hello-effect.d.ts +9 -0
  63. package/dist/backends/gui/apple-hello-effect.d.ts.map +1 -0
  64. package/dist/backends/gui/apple-hello-effect.js +36 -0
  65. package/dist/backends/gui/apple-hello-effect.js.map +1 -0
  66. package/dist/backends/gui/banner.cjs +108 -0
  67. package/dist/backends/gui/banner.d.ts +33 -0
  68. package/dist/backends/gui/banner.d.ts.map +1 -0
  69. package/dist/backends/gui/banner.js +106 -0
  70. package/dist/backends/gui/banner.js.map +1 -0
  71. package/dist/backends/gui/calendar.cjs +152 -0
  72. package/dist/backends/gui/calendar.d.ts +41 -0
  73. package/dist/backends/gui/calendar.d.ts.map +1 -0
  74. package/dist/backends/gui/calendar.js +151 -0
  75. package/dist/backends/gui/calendar.js.map +1 -0
  76. package/dist/backends/gui/choicebox.cjs +50 -0
  77. package/dist/backends/gui/choicebox.d.ts +33 -0
  78. package/dist/backends/gui/choicebox.d.ts.map +1 -0
  79. package/dist/backends/gui/choicebox.js +49 -0
  80. package/dist/backends/gui/choicebox.js.map +1 -0
  81. package/dist/backends/gui/code-block.cjs +120 -0
  82. package/dist/backends/gui/code-block.d.ts +22 -0
  83. package/dist/backends/gui/code-block.d.ts.map +1 -0
  84. package/dist/backends/gui/code-block.js +118 -0
  85. package/dist/backends/gui/code-block.js.map +1 -0
  86. package/dist/backends/gui/code-editor.cjs +195 -0
  87. package/dist/backends/gui/code-editor.d.ts +43 -0
  88. package/dist/backends/gui/code-editor.d.ts.map +1 -0
  89. package/dist/backends/gui/code-editor.js +160 -0
  90. package/dist/backends/gui/code-editor.js.map +1 -0
  91. package/dist/backends/gui/code-tabs.cjs +21 -0
  92. package/dist/backends/gui/code-tabs.d.ts +22 -0
  93. package/dist/backends/gui/code-tabs.d.ts.map +1 -0
  94. package/dist/backends/gui/code-tabs.js +19 -0
  95. package/dist/backends/gui/code-tabs.js.map +1 -0
  96. package/dist/backends/gui/color-picker.cjs +141 -0
  97. package/dist/backends/gui/color-picker.d.ts +25 -0
  98. package/dist/backends/gui/color-picker.d.ts.map +1 -0
  99. package/dist/backends/gui/color-picker.js +139 -0
  100. package/dist/backends/gui/color-picker.js.map +1 -0
  101. package/dist/backends/gui/combobox.cjs +42 -0
  102. package/dist/backends/gui/combobox.d.ts +39 -0
  103. package/dist/backends/gui/combobox.d.ts.map +1 -0
  104. package/dist/backends/gui/combobox.js +40 -0
  105. package/dist/backends/gui/combobox.js.map +1 -0
  106. package/dist/backends/gui/company-profile.cjs +43 -0
  107. package/dist/backends/gui/company-profile.d.ts +33 -0
  108. package/dist/backends/gui/company-profile.d.ts.map +1 -0
  109. package/dist/backends/gui/company-profile.js +41 -0
  110. package/dist/backends/gui/company-profile.js.map +1 -0
  111. package/dist/backends/gui/comparison.cjs +39 -0
  112. package/dist/backends/gui/comparison.d.ts +15 -0
  113. package/dist/backends/gui/comparison.d.ts.map +1 -0
  114. package/dist/backends/gui/comparison.js +37 -0
  115. package/dist/backends/gui/comparison.js.map +1 -0
  116. package/dist/backends/gui/credit-card.cjs +80 -0
  117. package/dist/backends/gui/credit-card.d.ts +21 -0
  118. package/dist/backends/gui/credit-card.d.ts.map +1 -0
  119. package/dist/backends/gui/credit-card.js +78 -0
  120. package/dist/backends/gui/credit-card.js.map +1 -0
  121. package/dist/backends/gui/crypto-market.cjs +128 -0
  122. package/dist/backends/gui/crypto-market.d.ts +52 -0
  123. package/dist/backends/gui/crypto-market.d.ts.map +1 -0
  124. package/dist/backends/gui/crypto-market.js +126 -0
  125. package/dist/backends/gui/crypto-market.js.map +1 -0
  126. package/dist/backends/gui/crypto-screener.cjs +45 -0
  127. package/dist/backends/gui/crypto-screener.d.ts +38 -0
  128. package/dist/backends/gui/crypto-screener.d.ts.map +1 -0
  129. package/dist/backends/gui/crypto-screener.js +43 -0
  130. package/dist/backends/gui/crypto-screener.js.map +1 -0
  131. package/dist/backends/gui/cursor.cjs +37 -0
  132. package/dist/backends/gui/cursor.d.ts +17 -0
  133. package/dist/backends/gui/cursor.d.ts.map +1 -0
  134. package/dist/backends/gui/cursor.js +35 -0
  135. package/dist/backends/gui/cursor.js.map +1 -0
  136. package/dist/backends/gui/data-table.cjs +171 -0
  137. package/dist/backends/gui/data-table.d.ts +91 -0
  138. package/dist/backends/gui/data-table.d.ts.map +1 -0
  139. package/dist/backends/gui/data-table.js +169 -0
  140. package/dist/backends/gui/data-table.js.map +1 -0
  141. package/dist/backends/gui/date-picker.cjs +66 -0
  142. package/dist/backends/gui/date-picker.d.ts +29 -0
  143. package/dist/backends/gui/date-picker.d.ts.map +1 -0
  144. package/dist/backends/gui/date-picker.js +64 -0
  145. package/dist/backends/gui/date-picker.js.map +1 -0
  146. package/dist/backends/gui/desktop-spotlight.cjs +46 -0
  147. package/dist/backends/gui/desktop-spotlight.d.ts +34 -0
  148. package/dist/backends/gui/desktop-spotlight.d.ts.map +1 -0
  149. package/dist/backends/gui/desktop-spotlight.js +44 -0
  150. package/dist/backends/gui/desktop-spotlight.js.map +1 -0
  151. package/dist/backends/gui/desktop-window.cjs +180 -0
  152. package/dist/backends/gui/desktop-window.d.ts +51 -0
  153. package/dist/backends/gui/desktop-window.d.ts.map +1 -0
  154. package/dist/backends/gui/desktop-window.js +177 -0
  155. package/dist/backends/gui/desktop-window.js.map +1 -0
  156. package/dist/backends/gui/desktop.cjs +238 -0
  157. package/dist/backends/gui/desktop.d.ts +109 -0
  158. package/dist/backends/gui/desktop.d.ts.map +1 -0
  159. package/dist/backends/gui/desktop.js +199 -0
  160. package/dist/backends/gui/desktop.js.map +1 -0
  161. package/dist/backends/gui/dialog-stack.cjs +26 -0
  162. package/dist/backends/gui/dialog-stack.d.ts +23 -0
  163. package/dist/backends/gui/dialog-stack.d.ts.map +1 -0
  164. package/dist/backends/gui/dialog-stack.js +24 -0
  165. package/dist/backends/gui/dialog-stack.js.map +1 -0
  166. package/dist/backends/gui/dock.cjs +99 -0
  167. package/dist/backends/gui/dock.d.ts +41 -0
  168. package/dist/backends/gui/dock.d.ts.map +1 -0
  169. package/dist/backends/gui/dock.js +96 -0
  170. package/dist/backends/gui/dock.js.map +1 -0
  171. package/dist/backends/gui/dropzone.cjs +142 -0
  172. package/dist/backends/gui/dropzone.d.ts +12 -0
  173. package/dist/backends/gui/dropzone.d.ts.map +1 -0
  174. package/dist/backends/gui/dropzone.js +140 -0
  175. package/dist/backends/gui/dropzone.js.map +1 -0
  176. package/dist/backends/gui/editor.cjs +84 -0
  177. package/dist/backends/gui/editor.d.ts +23 -0
  178. package/dist/backends/gui/editor.d.ts.map +1 -0
  179. package/dist/backends/gui/editor.js +49 -0
  180. package/dist/backends/gui/editor.js.map +1 -0
  181. package/dist/backends/gui/empty.cjs +71 -0
  182. package/dist/backends/gui/empty.d.ts +43 -0
  183. package/dist/backends/gui/empty.d.ts.map +1 -0
  184. package/dist/backends/gui/empty.js +63 -0
  185. package/dist/backends/gui/empty.js.map +1 -0
  186. package/dist/backends/gui/field.cjs +132 -0
  187. package/dist/backends/gui/field.d.ts +74 -0
  188. package/dist/backends/gui/field.d.ts.map +1 -0
  189. package/dist/backends/gui/field.js +121 -0
  190. package/dist/backends/gui/field.js.map +1 -0
  191. package/dist/backends/gui/financials.cjs +45 -0
  192. package/dist/backends/gui/financials.d.ts +36 -0
  193. package/dist/backends/gui/financials.d.ts.map +1 -0
  194. package/dist/backends/gui/financials.js +43 -0
  195. package/dist/backends/gui/financials.js.map +1 -0
  196. package/dist/backends/gui/forex-market.cjs +21 -0
  197. package/dist/backends/gui/forex-market.d.ts +17 -0
  198. package/dist/backends/gui/forex-market.d.ts.map +1 -0
  199. package/dist/backends/gui/forex-market.js +19 -0
  200. package/dist/backends/gui/forex-market.js.map +1 -0
  201. package/dist/backends/gui/forex-screener.cjs +57 -0
  202. package/dist/backends/gui/forex-screener.d.ts +45 -0
  203. package/dist/backends/gui/forex-screener.d.ts.map +1 -0
  204. package/dist/backends/gui/forex-screener.js +55 -0
  205. package/dist/backends/gui/forex-screener.js.map +1 -0
  206. package/dist/backends/gui/gantt.cjs +48 -0
  207. package/dist/backends/gui/gantt.d.ts +18 -0
  208. package/dist/backends/gui/gantt.d.ts.map +1 -0
  209. package/dist/backends/gui/gantt.js +46 -0
  210. package/dist/backends/gui/gantt.js.map +1 -0
  211. package/dist/backends/gui/glimpse.cjs +88 -0
  212. package/dist/backends/gui/glimpse.d.ts +57 -0
  213. package/dist/backends/gui/glimpse.d.ts.map +1 -0
  214. package/dist/backends/gui/glimpse.js +81 -0
  215. package/dist/backends/gui/glimpse.js.map +1 -0
  216. package/dist/backends/gui/grid-pattern.cjs +119 -0
  217. package/dist/backends/gui/grid-pattern.d.ts +96 -0
  218. package/dist/backends/gui/grid-pattern.d.ts.map +1 -0
  219. package/dist/backends/gui/grid-pattern.js +84 -0
  220. package/dist/backends/gui/grid-pattern.js.map +1 -0
  221. package/dist/backends/gui/image-crop.cjs +35 -0
  222. package/dist/backends/gui/image-crop.d.ts +20 -0
  223. package/dist/backends/gui/image-crop.d.ts.map +1 -0
  224. package/dist/backends/gui/image-crop.js +33 -0
  225. package/dist/backends/gui/image-crop.js.map +1 -0
  226. package/dist/backends/gui/image-zoom.cjs +58 -0
  227. package/dist/backends/gui/image-zoom.d.ts +16 -0
  228. package/dist/backends/gui/image-zoom.d.ts.map +1 -0
  229. package/dist/backends/gui/image-zoom.js +56 -0
  230. package/dist/backends/gui/image-zoom.js.map +1 -0
  231. package/dist/backends/gui/index.cjs +266 -1
  232. package/dist/backends/gui/index.d.ts +90 -0
  233. package/dist/backends/gui/index.d.ts.map +1 -1
  234. package/dist/backends/gui/index.js +90 -0
  235. package/dist/backends/gui/index.js.map +1 -1
  236. package/dist/backends/gui/interactive-grid-pattern.cjs +61 -0
  237. package/dist/backends/gui/interactive-grid-pattern.d.ts +28 -0
  238. package/dist/backends/gui/interactive-grid-pattern.d.ts.map +1 -0
  239. package/dist/backends/gui/interactive-grid-pattern.js +26 -0
  240. package/dist/backends/gui/interactive-grid-pattern.js.map +1 -0
  241. package/dist/backends/gui/iphone-15-pro.cjs +83 -0
  242. package/dist/backends/gui/iphone-15-pro.d.ts +16 -0
  243. package/dist/backends/gui/iphone-15-pro.d.ts.map +1 -0
  244. package/dist/backends/gui/iphone-15-pro.js +81 -0
  245. package/dist/backends/gui/iphone-15-pro.js.map +1 -0
  246. package/dist/backends/gui/item.cjs +154 -0
  247. package/dist/backends/gui/item.d.ts +72 -0
  248. package/dist/backends/gui/item.d.ts.map +1 -0
  249. package/dist/backends/gui/item.js +143 -0
  250. package/dist/backends/gui/item.js.map +1 -0
  251. package/dist/backends/gui/kanban.cjs +247 -0
  252. package/dist/backends/gui/kanban.d.ts +37 -0
  253. package/dist/backends/gui/kanban.d.ts.map +1 -0
  254. package/dist/backends/gui/kanban.js +212 -0
  255. package/dist/backends/gui/kanban.js.map +1 -0
  256. package/dist/backends/gui/kbd.cjs +45 -0
  257. package/dist/backends/gui/kbd.d.ts +8 -0
  258. package/dist/backends/gui/kbd.d.ts.map +1 -0
  259. package/dist/backends/gui/kbd.js +42 -0
  260. package/dist/backends/gui/kbd.js.map +1 -0
  261. package/dist/backends/gui/limelight-nav.cjs +201 -0
  262. package/dist/backends/gui/limelight-nav.d.ts +20 -0
  263. package/dist/backends/gui/limelight-nav.d.ts.map +1 -0
  264. package/dist/backends/gui/limelight-nav.js +166 -0
  265. package/dist/backends/gui/limelight-nav.js.map +1 -0
  266. package/dist/backends/gui/list.cjs +26 -0
  267. package/dist/backends/gui/list.d.ts +15 -0
  268. package/dist/backends/gui/list.d.ts.map +1 -0
  269. package/dist/backends/gui/list.js +23 -0
  270. package/dist/backends/gui/list.js.map +1 -0
  271. package/dist/backends/gui/macos-dock.cjs +84 -0
  272. package/dist/backends/gui/macos-dock.d.ts +30 -0
  273. package/dist/backends/gui/macos-dock.d.ts.map +1 -0
  274. package/dist/backends/gui/macos-dock.js +82 -0
  275. package/dist/backends/gui/macos-dock.js.map +1 -0
  276. package/dist/backends/gui/magnetic.cjs +40 -0
  277. package/dist/backends/gui/magnetic.d.ts +12 -0
  278. package/dist/backends/gui/magnetic.d.ts.map +1 -0
  279. package/dist/backends/gui/magnetic.js +38 -0
  280. package/dist/backends/gui/magnetic.js.map +1 -0
  281. package/dist/backends/gui/marquee.cjs +110 -0
  282. package/dist/backends/gui/marquee.d.ts +44 -0
  283. package/dist/backends/gui/marquee.d.ts.map +1 -0
  284. package/dist/backends/gui/marquee.js +75 -0
  285. package/dist/backends/gui/marquee.js.map +1 -0
  286. package/dist/backends/gui/menu-dock.cjs +64 -0
  287. package/dist/backends/gui/menu-dock.d.ts +21 -0
  288. package/dist/backends/gui/menu-dock.d.ts.map +1 -0
  289. package/dist/backends/gui/menu-dock.js +62 -0
  290. package/dist/backends/gui/menu-dock.js.map +1 -0
  291. package/dist/backends/gui/menubar.cjs +227 -0
  292. package/dist/backends/gui/menubar.d.ts +106 -0
  293. package/dist/backends/gui/menubar.d.ts.map +1 -0
  294. package/dist/backends/gui/menubar.js +177 -0
  295. package/dist/backends/gui/menubar.js.map +1 -0
  296. package/dist/backends/gui/message-dock.cjs +111 -0
  297. package/dist/backends/gui/message-dock.d.ts +22 -0
  298. package/dist/backends/gui/message-dock.d.ts.map +1 -0
  299. package/dist/backends/gui/message-dock.js +110 -0
  300. package/dist/backends/gui/message-dock.js.map +1 -0
  301. package/dist/backends/gui/mini-calendar.cjs +25 -0
  302. package/dist/backends/gui/mini-calendar.d.ts +22 -0
  303. package/dist/backends/gui/mini-calendar.d.ts.map +1 -0
  304. package/dist/backends/gui/mini-calendar.js +24 -0
  305. package/dist/backends/gui/mini-calendar.js.map +1 -0
  306. package/dist/backends/gui/minimal-tiptap.cjs +56 -0
  307. package/dist/backends/gui/minimal-tiptap.d.ts +20 -0
  308. package/dist/backends/gui/minimal-tiptap.d.ts.map +1 -0
  309. package/dist/backends/gui/minimal-tiptap.js +21 -0
  310. package/dist/backends/gui/minimal-tiptap.js.map +1 -0
  311. package/dist/backends/gui/motion-highlight.cjs +83 -0
  312. package/dist/backends/gui/motion-highlight.d.ts +27 -0
  313. package/dist/backends/gui/motion-highlight.d.ts.map +1 -0
  314. package/dist/backends/gui/motion-highlight.js +48 -0
  315. package/dist/backends/gui/motion-highlight.js.map +1 -0
  316. package/dist/backends/gui/navigation-bar.cjs +47 -0
  317. package/dist/backends/gui/navigation-bar.d.ts +48 -0
  318. package/dist/backends/gui/navigation-bar.d.ts.map +1 -0
  319. package/dist/backends/gui/navigation-bar.js +45 -0
  320. package/dist/backends/gui/navigation-bar.js.map +1 -0
  321. package/dist/backends/gui/news-timeline.cjs +47 -0
  322. package/dist/backends/gui/news-timeline.d.ts +39 -0
  323. package/dist/backends/gui/news-timeline.d.ts.map +1 -0
  324. package/dist/backends/gui/news-timeline.js +45 -0
  325. package/dist/backends/gui/news-timeline.js.map +1 -0
  326. package/dist/backends/gui/order-entry.cjs +53 -0
  327. package/dist/backends/gui/order-entry.d.ts +21 -0
  328. package/dist/backends/gui/order-entry.d.ts.map +1 -0
  329. package/dist/backends/gui/order-entry.js +52 -0
  330. package/dist/backends/gui/order-entry.js.map +1 -0
  331. package/dist/backends/gui/orders-history.cjs +102 -0
  332. package/dist/backends/gui/orders-history.d.ts +24 -0
  333. package/dist/backends/gui/orders-history.d.ts.map +1 -0
  334. package/dist/backends/gui/orders-history.js +67 -0
  335. package/dist/backends/gui/orders-history.js.map +1 -0
  336. package/dist/backends/gui/pagination.cjs +51 -0
  337. package/dist/backends/gui/pagination.d.ts +52 -0
  338. package/dist/backends/gui/pagination.d.ts.map +1 -0
  339. package/dist/backends/gui/pagination.js +42 -0
  340. package/dist/backends/gui/pagination.js.map +1 -0
  341. package/dist/backends/gui/particles-background.cjs +135 -0
  342. package/dist/backends/gui/particles-background.d.ts +24 -0
  343. package/dist/backends/gui/particles-background.d.ts.map +1 -0
  344. package/dist/backends/gui/particles-background.js +133 -0
  345. package/dist/backends/gui/particles-background.js.map +1 -0
  346. package/dist/backends/gui/particles.cjs +145 -0
  347. package/dist/backends/gui/particles.d.ts +25 -0
  348. package/dist/backends/gui/particles.d.ts.map +1 -0
  349. package/dist/backends/gui/particles.js +143 -0
  350. package/dist/backends/gui/particles.js.map +1 -0
  351. package/dist/backends/gui/pill.cjs +82 -0
  352. package/dist/backends/gui/pill.d.ts +12 -0
  353. package/dist/backends/gui/pill.d.ts.map +1 -0
  354. package/dist/backends/gui/pill.js +78 -0
  355. package/dist/backends/gui/pill.js.map +1 -0
  356. package/dist/backends/gui/pin-list.cjs +82 -0
  357. package/dist/backends/gui/pin-list.d.ts +42 -0
  358. package/dist/backends/gui/pin-list.d.ts.map +1 -0
  359. package/dist/backends/gui/pin-list.js +80 -0
  360. package/dist/backends/gui/pin-list.js.map +1 -0
  361. package/dist/backends/gui/pixel-image.cjs +63 -0
  362. package/dist/backends/gui/pixel-image.d.ts +21 -0
  363. package/dist/backends/gui/pixel-image.d.ts.map +1 -0
  364. package/dist/backends/gui/pixel-image.js +61 -0
  365. package/dist/backends/gui/pixel-image.js.map +1 -0
  366. package/dist/backends/gui/positions-list.cjs +60 -0
  367. package/dist/backends/gui/positions-list.d.ts +14 -0
  368. package/dist/backends/gui/positions-list.d.ts.map +1 -0
  369. package/dist/backends/gui/positions-list.js +58 -0
  370. package/dist/backends/gui/positions-list.js.map +1 -0
  371. package/dist/backends/gui/qr-code.cjs +438 -0
  372. package/dist/backends/gui/qr-code.d.ts +42 -0
  373. package/dist/backends/gui/qr-code.d.ts.map +1 -0
  374. package/dist/backends/gui/qr-code.js +402 -0
  375. package/dist/backends/gui/qr-code.js.map +1 -0
  376. package/dist/backends/gui/relative-time.cjs +167 -0
  377. package/dist/backends/gui/relative-time.d.ts +10 -0
  378. package/dist/backends/gui/relative-time.d.ts.map +1 -0
  379. package/dist/backends/gui/relative-time.js +132 -0
  380. package/dist/backends/gui/relative-time.js.map +1 -0
  381. package/dist/backends/gui/safari.cjs +65 -0
  382. package/dist/backends/gui/safari.d.ts +23 -0
  383. package/dist/backends/gui/safari.d.ts.map +1 -0
  384. package/dist/backends/gui/safari.js +63 -0
  385. package/dist/backends/gui/safari.js.map +1 -0
  386. package/dist/backends/gui/snippet.cjs +144 -0
  387. package/dist/backends/gui/snippet.d.ts +38 -0
  388. package/dist/backends/gui/snippet.d.ts.map +1 -0
  389. package/dist/backends/gui/snippet.js +141 -0
  390. package/dist/backends/gui/snippet.js.map +1 -0
  391. package/dist/backends/gui/stars-scrolling-wheel.cjs +106 -0
  392. package/dist/backends/gui/stars-scrolling-wheel.d.ts +24 -0
  393. package/dist/backends/gui/stars-scrolling-wheel.d.ts.map +1 -0
  394. package/dist/backends/gui/stars-scrolling-wheel.js +104 -0
  395. package/dist/backends/gui/stars-scrolling-wheel.js.map +1 -0
  396. package/dist/backends/gui/status.cjs +79 -0
  397. package/dist/backends/gui/status.d.ts +15 -0
  398. package/dist/backends/gui/status.d.ts.map +1 -0
  399. package/dist/backends/gui/status.js +77 -0
  400. package/dist/backends/gui/status.js.map +1 -0
  401. package/dist/backends/gui/stock-market.cjs +21 -0
  402. package/dist/backends/gui/stock-market.d.ts +17 -0
  403. package/dist/backends/gui/stock-market.d.ts.map +1 -0
  404. package/dist/backends/gui/stock-market.js +19 -0
  405. package/dist/backends/gui/stock-market.js.map +1 -0
  406. package/dist/backends/gui/stock-screener.cjs +55 -0
  407. package/dist/backends/gui/stock-screener.d.ts +41 -0
  408. package/dist/backends/gui/stock-screener.d.ts.map +1 -0
  409. package/dist/backends/gui/stock-screener.js +53 -0
  410. package/dist/backends/gui/stock-screener.js.map +1 -0
  411. package/dist/backends/gui/symbol-info.cjs +46 -0
  412. package/dist/backends/gui/symbol-info.d.ts +36 -0
  413. package/dist/backends/gui/symbol-info.d.ts.map +1 -0
  414. package/dist/backends/gui/symbol-info.js +44 -0
  415. package/dist/backends/gui/symbol-info.js.map +1 -0
  416. package/dist/backends/gui/table.cjs +104 -0
  417. package/dist/backends/gui/table.d.ts +57 -0
  418. package/dist/backends/gui/table.d.ts.map +1 -0
  419. package/dist/backends/gui/table.js +95 -0
  420. package/dist/backends/gui/table.js.map +1 -0
  421. package/dist/backends/gui/tags.cjs +22 -0
  422. package/dist/backends/gui/tags.d.ts +22 -0
  423. package/dist/backends/gui/tags.d.ts.map +1 -0
  424. package/dist/backends/gui/tags.js +20 -0
  425. package/dist/backends/gui/tags.js.map +1 -0
  426. package/dist/backends/gui/technical-analysis.cjs +58 -0
  427. package/dist/backends/gui/technical-analysis.d.ts +41 -0
  428. package/dist/backends/gui/technical-analysis.d.ts.map +1 -0
  429. package/dist/backends/gui/technical-analysis.js +56 -0
  430. package/dist/backends/gui/technical-analysis.js.map +1 -0
  431. package/dist/backends/gui/terminal.cjs +266 -0
  432. package/dist/backends/gui/terminal.d.ts +38 -0
  433. package/dist/backends/gui/terminal.d.ts.map +1 -0
  434. package/dist/backends/gui/terminal.js +231 -0
  435. package/dist/backends/gui/terminal.js.map +1 -0
  436. package/dist/backends/gui/ticker.cjs +79 -0
  437. package/dist/backends/gui/ticker.d.ts +19 -0
  438. package/dist/backends/gui/ticker.d.ts.map +1 -0
  439. package/dist/backends/gui/ticker.js +44 -0
  440. package/dist/backends/gui/ticker.js.map +1 -0
  441. package/dist/backends/gui/timeline.cjs +154 -0
  442. package/dist/backends/gui/timeline.d.ts +42 -0
  443. package/dist/backends/gui/timeline.d.ts.map +1 -0
  444. package/dist/backends/gui/timeline.js +118 -0
  445. package/dist/backends/gui/timeline.js.map +1 -0
  446. package/dist/backends/gui/toggle.cjs +96 -0
  447. package/dist/backends/gui/toggle.d.ts +29 -0
  448. package/dist/backends/gui/toggle.d.ts.map +1 -0
  449. package/dist/backends/gui/toggle.js +95 -0
  450. package/dist/backends/gui/toggle.js.map +1 -0
  451. package/dist/backends/gui/video-player.cjs +383 -0
  452. package/dist/backends/gui/video-player.d.ts +54 -0
  453. package/dist/backends/gui/video-player.d.ts.map +1 -0
  454. package/dist/backends/gui/video-player.js +348 -0
  455. package/dist/backends/gui/video-player.js.map +1 -0
  456. package/dist/chat/Composer.cjs +10 -10
  457. package/dist/chat/Composer.d.ts +16 -17
  458. package/dist/chat/Composer.d.ts.map +1 -1
  459. package/dist/chat/Composer.js +11 -11
  460. package/dist/chat/Composer.js.map +1 -1
  461. package/dist/gallery.cjs +180 -1
  462. package/dist/gallery.d.ts.map +1 -1
  463. package/dist/gallery.html +391 -3
  464. package/dist/gallery.js +181 -2
  465. package/dist/gallery.js.map +1 -1
  466. package/dist/index.cjs +179 -1
  467. package/dist/index.d.ts +1 -0
  468. package/dist/index.d.ts.map +1 -1
  469. package/dist/index.js +3 -0
  470. package/dist/index.js.map +1 -1
  471. package/dist/index.node.cjs +179 -1
  472. package/dist/index.node.js +3 -0
  473. package/dist/styles.css +356 -0
  474. package/package.json +1 -1
@@ -0,0 +1,128 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.MarketOverview = void 0;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ /**
7
+ * MarketOverview — a TradingView multi-tab market table, in a gui frame.
8
+ *
9
+ * The rows are TradingView's, drawn inside TradingView's own document, so the
10
+ * table is an `<iframe>` and nothing here draws a pixel of it. What this owns
11
+ * is the frame around it and the settings the table opens with — which tabs,
12
+ * which symbols fill each one, the date range, the theme — written into the
13
+ * iframe's address the way TradingView's own embed script writes them:
14
+ * `/embed-widget/market-overview/?locale=…#<settings as JSON>`. Nothing is
15
+ * fetched or injected at mount, so the markup is the same on the server and in
16
+ * the browser, and the frame has its height before the table arrives.
17
+ *
18
+ * A tab is named by one of the built-in symbol groups (`crypto`, `indices`,
19
+ * `futures`, `bonds`, `forex`) or spelled out in full as a `{ title, symbols }`
20
+ * pair, so a caller reaches for `tabs={['crypto']}` most of the time and for a
21
+ * custom group only when the built-ins don't cover it.
22
+ *
23
+ * The iframe is keyed on that address. A browser treats a `src` that differs
24
+ * only in its fragment as a same-document navigation and does not reload, so
25
+ * without the key a changed `tabs` would leave the old table on screen.
26
+ */
27
+ const gui_1 = require("@hanzo/gui");
28
+ const slot_1 = require("./slot.cjs");
29
+ const PRESETS = {
30
+ crypto: {
31
+ title: 'Crypto',
32
+ symbols: [
33
+ { s: 'BINANCE:BTCUSDT', d: 'Bitcoin' },
34
+ { s: 'BINANCE:ETHUSDT', d: 'Ethereum' },
35
+ { s: 'BINANCE:SOLUSDT', d: 'Solana' },
36
+ { s: 'BINANCE:BNBUSDT', d: 'BNB' },
37
+ { s: 'BINANCE:XRPUSDT', d: 'XRP' },
38
+ { s: 'BINANCE:ADAUSDT', d: 'Cardano' },
39
+ ],
40
+ },
41
+ indices: {
42
+ title: 'Indices',
43
+ symbols: [
44
+ { s: 'FOREXCOM:SPXUSD', d: 'S&P 500 Index' },
45
+ { s: 'FOREXCOM:NSXUSD', d: 'US 100 Cash CFD' },
46
+ { s: 'FOREXCOM:DJI', d: 'Dow Jones Industrial Average Index' },
47
+ { s: 'INDEX:NKY', d: 'Japan 225' },
48
+ { s: 'INDEX:DEU40', d: 'DAX Index' },
49
+ { s: 'FOREXCOM:UKXGBP', d: 'FTSE 100 Index' },
50
+ ],
51
+ },
52
+ futures: {
53
+ title: 'Futures',
54
+ symbols: [
55
+ { s: 'BMFBOVESPA:ISP1!', d: 'S&P 500' },
56
+ { s: 'BMFBOVESPA:EUR1!', d: 'Euro' },
57
+ { s: 'CMCMARKETS:GOLD', d: 'Gold' },
58
+ { s: 'PYTH:WTI3!', d: 'WTI Crude Oil' },
59
+ { s: 'BMFBOVESPA:CCM1!', d: 'Corn' },
60
+ ],
61
+ },
62
+ bonds: {
63
+ title: 'Bonds',
64
+ symbols: [
65
+ { s: 'EUREX:FGBL1!', d: 'Euro Bund' },
66
+ { s: 'EUREX:FBTP1!', d: 'Euro BTP' },
67
+ { s: 'EUREX:FGBM1!', d: 'Euro BOBL' },
68
+ ],
69
+ },
70
+ forex: {
71
+ title: 'Forex',
72
+ symbols: [
73
+ { s: 'FX:EURUSD', d: 'EUR to USD' },
74
+ { s: 'FX:GBPUSD', d: 'GBP to USD' },
75
+ { s: 'FX:USDJPY', d: 'USD to JPY' },
76
+ { s: 'FX:USDCHF', d: 'USD to CHF' },
77
+ { s: 'FX:AUDUSD', d: 'AUD to USD' },
78
+ { s: 'FX:USDCAD', d: 'USD to CAD' },
79
+ ],
80
+ },
81
+ };
82
+ const resolveTab = (tab) => typeof tab === 'string' ? PRESETS[tab] : tab;
83
+ const EMBED = 'https://www.tradingview-widget.com/embed-widget/market-overview/?locale=';
84
+ /** The settings TradingView reads, with the documented defaults filled in. */
85
+ const settings = ({ tabs = ['crypto'], colorTheme = 'dark', dateRange = '12M', locale = 'en', isTransparent = false, showFloatingTooltip = false, showSymbolLogo = true, showChart = true, width = '100%', height = 550, }) => ({
86
+ colorTheme,
87
+ dateRange,
88
+ locale,
89
+ isTransparent,
90
+ showFloatingTooltip,
91
+ plotLineColorGrowing: 'rgba(41, 98, 255, 1)',
92
+ plotLineColorFalling: 'rgba(41, 98, 255, 1)',
93
+ gridLineColor: 'rgba(240, 243, 250, 0)',
94
+ scaleFontColor: colorTheme === 'dark' ? '#DBDBDB' : '#333333',
95
+ belowLineFillColorGrowing: 'rgba(41, 98, 255, 0.12)',
96
+ belowLineFillColorFalling: 'rgba(41, 98, 255, 0.12)',
97
+ belowLineFillColorGrowingBottom: 'rgba(41, 98, 255, 0)',
98
+ belowLineFillColorFallingBottom: 'rgba(41, 98, 255, 0)',
99
+ symbolActiveColor: 'rgba(41, 98, 255, 0.12)',
100
+ tabs: tabs.map(resolveTab),
101
+ support_host: 'https://www.tradingview.com',
102
+ backgroundColor: colorTheme === 'dark' ? '#0f0f0f' : '#ffffff',
103
+ width,
104
+ height,
105
+ showSymbolLogo,
106
+ showChart,
107
+ });
108
+ const MarketOverview = ({ tabs, colorTheme, dateRange, locale, isTransparent, showFloatingTooltip, showSymbolLogo, showChart, width, height, ...props }) => {
109
+ const s = settings({
110
+ tabs,
111
+ colorTheme,
112
+ dateRange,
113
+ locale,
114
+ isTransparent,
115
+ showFloatingTooltip,
116
+ showSymbolLogo,
117
+ showChart,
118
+ width,
119
+ height,
120
+ });
121
+ const src = `${EMBED}${s.locale}#${encodeURIComponent(JSON.stringify(s))}`;
122
+ const titles = s.tabs.map((t) => t.title).join(', ');
123
+ return ((0, jsx_runtime_1.jsx)(gui_1.YStack, { ...(0, slot_1.slot)('market-overview'), "data-tabs": s.tabs.map((t) => t.title).join(','), "data-color-theme": s.colorTheme,
124
+ // The documented size is TradingView's — a number or a percent string —
125
+ // and gui declares a narrower one; on web both reach CSS as written.
126
+ width: s.width, height: s.height, overflow: "hidden", position: "relative", bg: "$panel", ...props, children: gui_1.isWeb && ((0, jsx_runtime_1.jsx)("iframe", { src: src, title: `${titles} market overview`, loading: "lazy", scrolling: "no", style: { display: 'block', width: '100%', height: '100%', border: 0 } }, src)) }));
127
+ };
128
+ exports.MarketOverview = MarketOverview;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * MarketOverview — a TradingView multi-tab market table, in a gui frame.
3
+ *
4
+ * The rows are TradingView's, drawn inside TradingView's own document, so the
5
+ * table is an `<iframe>` and nothing here draws a pixel of it. What this owns
6
+ * is the frame around it and the settings the table opens with — which tabs,
7
+ * which symbols fill each one, the date range, the theme — written into the
8
+ * iframe's address the way TradingView's own embed script writes them:
9
+ * `/embed-widget/market-overview/?locale=…#<settings as JSON>`. Nothing is
10
+ * fetched or injected at mount, so the markup is the same on the server and in
11
+ * the browser, and the frame has its height before the table arrives.
12
+ *
13
+ * A tab is named by one of the built-in symbol groups (`crypto`, `indices`,
14
+ * `futures`, `bonds`, `forex`) or spelled out in full as a `{ title, symbols }`
15
+ * pair, so a caller reaches for `tabs={['crypto']}` most of the time and for a
16
+ * custom group only when the built-ins don't cover it.
17
+ *
18
+ * The iframe is keyed on that address. A browser treats a `src` that differs
19
+ * only in its fragment as a same-document navigation and does not reload, so
20
+ * without the key a changed `tabs` would leave the old table on screen.
21
+ */
22
+ import { type YStackProps } from '@hanzo/gui';
23
+ export interface MarketOverviewSymbol {
24
+ /** Exchange-qualified ticker, e.g. `BINANCE:BTCUSDT`. */
25
+ s: string;
26
+ /** The label shown in the row. */
27
+ d: string;
28
+ }
29
+ export interface MarketOverviewTab {
30
+ title: string;
31
+ symbols: MarketOverviewSymbol[];
32
+ }
33
+ export type MarketOverviewPreset = 'crypto' | 'indices' | 'futures' | 'bonds' | 'forex';
34
+ export type MarketOverviewTheme = 'light' | 'dark';
35
+ export interface MarketOverviewProps extends Omit<YStackProps, 'width' | 'height' | 'theme'> {
36
+ /** Which tabs the table opens with, a preset name or a spelled-out group. */
37
+ tabs?: (MarketOverviewPreset | MarketOverviewTab)[];
38
+ /** The table's own palette; independent of the surrounding gui theme. */
39
+ colorTheme?: MarketOverviewTheme;
40
+ /** How far back the sparkline in each row reaches. */
41
+ dateRange?: string;
42
+ locale?: string;
43
+ isTransparent?: boolean;
44
+ showFloatingTooltip?: boolean;
45
+ showSymbolLogo?: boolean;
46
+ showChart?: boolean;
47
+ width?: string | number;
48
+ height?: string | number;
49
+ }
50
+ declare const MarketOverview: ({ tabs, colorTheme, dateRange, locale, isTransparent, showFloatingTooltip, showSymbolLogo, showChart, width, height, ...props }: MarketOverviewProps) => import("react").JSX.Element;
51
+ export { MarketOverview };
52
+ //# sourceMappingURL=crypto-market.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-market.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/crypto-market.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAG5D,MAAM,WAAW,oBAAoB;IACnC,yDAAyD;IACzD,CAAC,EAAE,MAAM,CAAA;IACT,kCAAkC;IAClC,CAAC,EAAE,MAAM,CAAA;CACV;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,oBAAoB,EAAE,CAAA;CAChC;AAED,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAA;AAEvF,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,MAAM,CAAA;AA2DlD,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1F,6EAA6E;IAC7E,IAAI,CAAC,EAAE,CAAC,oBAAoB,GAAG,iBAAiB,CAAC,EAAE,CAAA;IACnD,yEAAyE;IACzE,UAAU,CAAC,EAAE,mBAAmB,CAAA;IAChC,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACzB;AAwCD,QAAA,MAAM,cAAc,oIAYjB,mBAAmB,gCAyCrB,CAAA;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,126 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ /**
4
+ * MarketOverview — a TradingView multi-tab market table, in a gui frame.
5
+ *
6
+ * The rows are TradingView's, drawn inside TradingView's own document, so the
7
+ * table is an `<iframe>` and nothing here draws a pixel of it. What this owns
8
+ * is the frame around it and the settings the table opens with — which tabs,
9
+ * which symbols fill each one, the date range, the theme — written into the
10
+ * iframe's address the way TradingView's own embed script writes them:
11
+ * `/embed-widget/market-overview/?locale=…#<settings as JSON>`. Nothing is
12
+ * fetched or injected at mount, so the markup is the same on the server and in
13
+ * the browser, and the frame has its height before the table arrives.
14
+ *
15
+ * A tab is named by one of the built-in symbol groups (`crypto`, `indices`,
16
+ * `futures`, `bonds`, `forex`) or spelled out in full as a `{ title, symbols }`
17
+ * pair, so a caller reaches for `tabs={['crypto']}` most of the time and for a
18
+ * custom group only when the built-ins don't cover it.
19
+ *
20
+ * The iframe is keyed on that address. A browser treats a `src` that differs
21
+ * only in its fragment as a same-document navigation and does not reload, so
22
+ * without the key a changed `tabs` would leave the old table on screen.
23
+ */
24
+ import { YStack, isWeb } from '@hanzo/gui';
25
+ import { slot } from './slot.js';
26
+ const PRESETS = {
27
+ crypto: {
28
+ title: 'Crypto',
29
+ symbols: [
30
+ { s: 'BINANCE:BTCUSDT', d: 'Bitcoin' },
31
+ { s: 'BINANCE:ETHUSDT', d: 'Ethereum' },
32
+ { s: 'BINANCE:SOLUSDT', d: 'Solana' },
33
+ { s: 'BINANCE:BNBUSDT', d: 'BNB' },
34
+ { s: 'BINANCE:XRPUSDT', d: 'XRP' },
35
+ { s: 'BINANCE:ADAUSDT', d: 'Cardano' },
36
+ ],
37
+ },
38
+ indices: {
39
+ title: 'Indices',
40
+ symbols: [
41
+ { s: 'FOREXCOM:SPXUSD', d: 'S&P 500 Index' },
42
+ { s: 'FOREXCOM:NSXUSD', d: 'US 100 Cash CFD' },
43
+ { s: 'FOREXCOM:DJI', d: 'Dow Jones Industrial Average Index' },
44
+ { s: 'INDEX:NKY', d: 'Japan 225' },
45
+ { s: 'INDEX:DEU40', d: 'DAX Index' },
46
+ { s: 'FOREXCOM:UKXGBP', d: 'FTSE 100 Index' },
47
+ ],
48
+ },
49
+ futures: {
50
+ title: 'Futures',
51
+ symbols: [
52
+ { s: 'BMFBOVESPA:ISP1!', d: 'S&P 500' },
53
+ { s: 'BMFBOVESPA:EUR1!', d: 'Euro' },
54
+ { s: 'CMCMARKETS:GOLD', d: 'Gold' },
55
+ { s: 'PYTH:WTI3!', d: 'WTI Crude Oil' },
56
+ { s: 'BMFBOVESPA:CCM1!', d: 'Corn' },
57
+ ],
58
+ },
59
+ bonds: {
60
+ title: 'Bonds',
61
+ symbols: [
62
+ { s: 'EUREX:FGBL1!', d: 'Euro Bund' },
63
+ { s: 'EUREX:FBTP1!', d: 'Euro BTP' },
64
+ { s: 'EUREX:FGBM1!', d: 'Euro BOBL' },
65
+ ],
66
+ },
67
+ forex: {
68
+ title: 'Forex',
69
+ symbols: [
70
+ { s: 'FX:EURUSD', d: 'EUR to USD' },
71
+ { s: 'FX:GBPUSD', d: 'GBP to USD' },
72
+ { s: 'FX:USDJPY', d: 'USD to JPY' },
73
+ { s: 'FX:USDCHF', d: 'USD to CHF' },
74
+ { s: 'FX:AUDUSD', d: 'AUD to USD' },
75
+ { s: 'FX:USDCAD', d: 'USD to CAD' },
76
+ ],
77
+ },
78
+ };
79
+ const resolveTab = (tab) => typeof tab === 'string' ? PRESETS[tab] : tab;
80
+ const EMBED = 'https://www.tradingview-widget.com/embed-widget/market-overview/?locale=';
81
+ /** The settings TradingView reads, with the documented defaults filled in. */
82
+ const settings = ({ tabs = ['crypto'], colorTheme = 'dark', dateRange = '12M', locale = 'en', isTransparent = false, showFloatingTooltip = false, showSymbolLogo = true, showChart = true, width = '100%', height = 550, }) => ({
83
+ colorTheme,
84
+ dateRange,
85
+ locale,
86
+ isTransparent,
87
+ showFloatingTooltip,
88
+ plotLineColorGrowing: 'rgba(41, 98, 255, 1)',
89
+ plotLineColorFalling: 'rgba(41, 98, 255, 1)',
90
+ gridLineColor: 'rgba(240, 243, 250, 0)',
91
+ scaleFontColor: colorTheme === 'dark' ? '#DBDBDB' : '#333333',
92
+ belowLineFillColorGrowing: 'rgba(41, 98, 255, 0.12)',
93
+ belowLineFillColorFalling: 'rgba(41, 98, 255, 0.12)',
94
+ belowLineFillColorGrowingBottom: 'rgba(41, 98, 255, 0)',
95
+ belowLineFillColorFallingBottom: 'rgba(41, 98, 255, 0)',
96
+ symbolActiveColor: 'rgba(41, 98, 255, 0.12)',
97
+ tabs: tabs.map(resolveTab),
98
+ support_host: 'https://www.tradingview.com',
99
+ backgroundColor: colorTheme === 'dark' ? '#0f0f0f' : '#ffffff',
100
+ width,
101
+ height,
102
+ showSymbolLogo,
103
+ showChart,
104
+ });
105
+ const MarketOverview = ({ tabs, colorTheme, dateRange, locale, isTransparent, showFloatingTooltip, showSymbolLogo, showChart, width, height, ...props }) => {
106
+ const s = settings({
107
+ tabs,
108
+ colorTheme,
109
+ dateRange,
110
+ locale,
111
+ isTransparent,
112
+ showFloatingTooltip,
113
+ showSymbolLogo,
114
+ showChart,
115
+ width,
116
+ height,
117
+ });
118
+ const src = `${EMBED}${s.locale}#${encodeURIComponent(JSON.stringify(s))}`;
119
+ const titles = s.tabs.map((t) => t.title).join(', ');
120
+ return (_jsx(YStack, { ...slot('market-overview'), "data-tabs": s.tabs.map((t) => t.title).join(','), "data-color-theme": s.colorTheme,
121
+ // The documented size is TradingView's — a number or a percent string —
122
+ // and gui declares a narrower one; on web both reach CSS as written.
123
+ width: s.width, height: s.height, overflow: "hidden", position: "relative", bg: "$panel", ...props, children: isWeb && (_jsx("iframe", { src: src, title: `${titles} market overview`, loading: "lazy", scrolling: "no", style: { display: 'block', width: '100%', height: '100%', border: 0 } }, src)) }));
124
+ };
125
+ export { MarketOverview };
126
+ //# sourceMappingURL=crypto-market.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-market.js","sourceRoot":"","sources":["../../../src/backends/gui/crypto-market.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.CryptoScreener = void 0;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ /**
7
+ * CryptoScreener — TradingView's crypto market screener, in a gui frame.
8
+ *
9
+ * The table is TradingView's own document, so it is an `<iframe>` and nothing
10
+ * here draws a row of it. What this owns is the frame around it and the
11
+ * settings the screener opens with — the column set, the display currency,
12
+ * the theme — written into the iframe's address the way TradingView's own
13
+ * embed script writes them:
14
+ * `/embed-widget/screener/?locale=…#<settings as JSON>`. Nothing is fetched or
15
+ * injected at mount, so the markup is the same on the server and in the
16
+ * browser, and the frame has its height before the table arrives.
17
+ *
18
+ * The iframe is keyed on that address, because a browser treats a `src` that
19
+ * differs only in its fragment as a same-document navigation and does not
20
+ * reload — without the key a new `defaultColumn` would change the URL and
21
+ * leave the old table on screen.
22
+ */
23
+ const gui_1 = require("@hanzo/gui");
24
+ const slot_1 = require("./slot.cjs");
25
+ const EMBED = 'https://www.tradingview-widget.com/embed-widget/screener/?locale=en#';
26
+ /** The settings TradingView reads, with the documented defaults filled in. */
27
+ const settings = ({ defaultColumn = 'overview', displayCurrency = 'USD', colorTheme = 'dark', isTransparent = false, locale = 'en', width = '100%', height = 550, }) => ({
28
+ defaultColumn,
29
+ screener_type: 'crypto_mkt',
30
+ displayCurrency,
31
+ colorTheme,
32
+ isTransparent,
33
+ locale,
34
+ width,
35
+ height,
36
+ });
37
+ const CryptoScreener = ({ market: _market, defaultColumn, displayCurrency, colorTheme, isTransparent, locale, width, height, ...props }) => {
38
+ const s = settings({ defaultColumn, displayCurrency, colorTheme, isTransparent, locale, width, height });
39
+ const src = EMBED + encodeURIComponent(JSON.stringify(s));
40
+ return ((0, jsx_runtime_1.jsx)(gui_1.YStack, { ...(0, slot_1.slot)('crypto-screener'), "data-column": s.defaultColumn, "data-color-theme": s.colorTheme,
41
+ // The documented size is TradingView's — a number or a percent string —
42
+ // and gui declares a narrower one; on web both reach CSS as written.
43
+ width: s.width, height: s.height, overflow: "hidden", position: "relative", bg: "$panel", ...props, children: gui_1.isWeb && ((0, jsx_runtime_1.jsx)("iframe", { src: src, title: "Crypto screener", loading: "lazy", scrolling: "no", style: { display: 'block', width: '100%', height: '100%', border: 0 } }, src)) }));
44
+ };
45
+ exports.CryptoScreener = CryptoScreener;
@@ -0,0 +1,38 @@
1
+ /**
2
+ * CryptoScreener — TradingView's crypto market screener, in a gui frame.
3
+ *
4
+ * The table is TradingView's own document, so it is an `<iframe>` and nothing
5
+ * here draws a row of it. What this owns is the frame around it and the
6
+ * settings the screener opens with — the column set, the display currency,
7
+ * the theme — written into the iframe's address the way TradingView's own
8
+ * embed script writes them:
9
+ * `/embed-widget/screener/?locale=…#<settings as JSON>`. Nothing is fetched or
10
+ * injected at mount, so the markup is the same on the server and in the
11
+ * browser, and the frame has its height before the table arrives.
12
+ *
13
+ * The iframe is keyed on that address, because a browser treats a `src` that
14
+ * differs only in its fragment as a same-document navigation and does not
15
+ * reload — without the key a new `defaultColumn` would change the URL and
16
+ * leave the old table on screen.
17
+ */
18
+ import { type YStackProps } from '@hanzo/gui';
19
+ export type CryptoScreenerColumn = 'overview' | 'performance' | 'oscillators' | 'moving_averages';
20
+ export type CryptoScreenerTheme = 'light' | 'dark';
21
+ export type CryptoScreenerMarket = 'crypto';
22
+ export interface CryptoScreenerProps extends Omit<YStackProps, 'width' | 'height' | 'theme'> {
23
+ /** The market the screener lists; TradingView's crypto table. */
24
+ market?: CryptoScreenerMarket;
25
+ /** Which column set opens first; the toolbar still switches it live. */
26
+ defaultColumn?: CryptoScreenerColumn;
27
+ /** The currency prices and market caps are shown in. */
28
+ displayCurrency?: string;
29
+ /** The screener's own palette; independent of the surrounding gui theme. */
30
+ colorTheme?: CryptoScreenerTheme;
31
+ isTransparent?: boolean;
32
+ locale?: string;
33
+ width?: string | number;
34
+ height?: string | number;
35
+ }
36
+ declare const CryptoScreener: ({ market: _market, defaultColumn, displayCurrency, colorTheme, isTransparent, locale, width, height, ...props }: CryptoScreenerProps) => import("react").JSX.Element;
37
+ export { CryptoScreener };
38
+ //# sourceMappingURL=crypto-screener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-screener.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/crypto-screener.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAG5D,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,aAAa,GAAG,aAAa,GAAG,iBAAiB,CAAA;AACjG,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,MAAM,CAAA;AAClD,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAA;AAE3C,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1F,iEAAiE;IACjE,MAAM,CAAC,EAAE,oBAAoB,CAAA;IAC7B,wEAAwE;IACxE,aAAa,CAAC,EAAE,oBAAoB,CAAA;IACpC,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,mBAAmB,CAAA;IAChC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACzB;AAwBD,QAAA,MAAM,cAAc,oHAUjB,mBAAmB,gCA6BrB,CAAA;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,43 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ /**
4
+ * CryptoScreener — TradingView's crypto market screener, in a gui frame.
5
+ *
6
+ * The table is TradingView's own document, so it is an `<iframe>` and nothing
7
+ * here draws a row of it. What this owns is the frame around it and the
8
+ * settings the screener opens with — the column set, the display currency,
9
+ * the theme — written into the iframe's address the way TradingView's own
10
+ * embed script writes them:
11
+ * `/embed-widget/screener/?locale=…#<settings as JSON>`. Nothing is fetched or
12
+ * injected at mount, so the markup is the same on the server and in the
13
+ * browser, and the frame has its height before the table arrives.
14
+ *
15
+ * The iframe is keyed on that address, because a browser treats a `src` that
16
+ * differs only in its fragment as a same-document navigation and does not
17
+ * reload — without the key a new `defaultColumn` would change the URL and
18
+ * leave the old table on screen.
19
+ */
20
+ import { YStack, isWeb } from '@hanzo/gui';
21
+ import { slot } from './slot.js';
22
+ const EMBED = 'https://www.tradingview-widget.com/embed-widget/screener/?locale=en#';
23
+ /** The settings TradingView reads, with the documented defaults filled in. */
24
+ const settings = ({ defaultColumn = 'overview', displayCurrency = 'USD', colorTheme = 'dark', isTransparent = false, locale = 'en', width = '100%', height = 550, }) => ({
25
+ defaultColumn,
26
+ screener_type: 'crypto_mkt',
27
+ displayCurrency,
28
+ colorTheme,
29
+ isTransparent,
30
+ locale,
31
+ width,
32
+ height,
33
+ });
34
+ const CryptoScreener = ({ market: _market, defaultColumn, displayCurrency, colorTheme, isTransparent, locale, width, height, ...props }) => {
35
+ const s = settings({ defaultColumn, displayCurrency, colorTheme, isTransparent, locale, width, height });
36
+ const src = EMBED + encodeURIComponent(JSON.stringify(s));
37
+ return (_jsx(YStack, { ...slot('crypto-screener'), "data-column": s.defaultColumn, "data-color-theme": s.colorTheme,
38
+ // The documented size is TradingView's — a number or a percent string —
39
+ // and gui declares a narrower one; on web both reach CSS as written.
40
+ width: s.width, height: s.height, overflow: "hidden", position: "relative", bg: "$panel", ...props, children: isWeb && (_jsx("iframe", { src: src, title: "Crypto screener", loading: "lazy", scrolling: "no", style: { display: 'block', width: '100%', height: '100%', border: 0 } }, src)) }));
41
+ };
42
+ export { CryptoScreener };
43
+ //# sourceMappingURL=crypto-screener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-screener.js","sourceRoot":"","sources":["../../../src/backends/gui/crypto-screener.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAoB,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAqB7B,MAAM,KAAK,GAAG,sEAAsE,CAAA;AAEpF,8EAA8E;AAC9E,MAAM,QAAQ,GAAG,CAAC,EAChB,aAAa,GAAG,UAAU,EAC1B,eAAe,GAAG,KAAK,EACvB,UAAU,GAAG,MAAM,EACnB,aAAa,GAAG,KAAK,EACrB,MAAM,GAAG,IAAI,EACb,KAAK,GAAG,MAAM,EACd,MAAM,GAAG,GAAG,GACQ,EAAE,EAAE,CAAC,CAAC;IAC1B,aAAa;IACb,aAAa,EAAE,YAAY;IAC3B,eAAe;IACf,UAAU;IACV,aAAa;IACb,MAAM;IACN,KAAK;IACL,MAAM;CACP,CAAC,CAAA;AAEF,MAAM,cAAc,GAAG,CAAC,EACtB,MAAM,EAAE,OAAO,EACf,aAAa,EACb,eAAe,EACf,UAAU,EACV,aAAa,EACb,MAAM,EACN,KAAK,EACL,MAAM,EACN,GAAG,KAAK,EACY,EAAE,EAAE;IACxB,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IACxG,MAAM,GAAG,GAAG,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IACzD,OAAO,CACL,KAAC,MAAM,OACD,IAAI,CAAC,iBAAiB,CAAC,iBACd,CAAC,CAAC,aAAa,sBACV,CAAC,CAAC,UAAU;QAC9B,wEAAwE;QACxE,qEAAqE;QACrE,KAAK,EAAE,CAAC,CAAC,KAA6B,EACtC,MAAM,EAAE,CAAC,CAAC,MAA+B,EACzC,QAAQ,EAAC,QAAQ,EACjB,QAAQ,EAAC,UAAU,EACnB,EAAE,EAAC,QAAQ,KACP,KAAK,YAER,KAAK,IAAI,CACR,iBAEE,GAAG,EAAE,GAAG,EACR,KAAK,EAAC,iBAAiB,EACvB,OAAO,EAAC,MAAM,EACd,SAAS,EAAC,IAAI,EACd,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,IALhE,GAAG,CAMR,CACH,GACM,CACV,CAAA;AACH,CAAC,CAAA;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,37 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Cursor = Cursor;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ /**
7
+ * Cursor — a container that replaces the pointer with a small round follower
8
+ * while the pointer sits over it.
9
+ *
10
+ * A `mousemove` on the frame turns the client point into a position relative
11
+ * to the frame's own box (`getBoundingClientRect`), so the follower is placed
12
+ * with plain `left`/`top` inside a `position: relative` parent — no fixed
13
+ * positioning, no document listener, and nothing rendered before the pointer
14
+ * has actually entered. `cursorText` draws a label inside the dot; leaving it
15
+ * unset draws a bare dot. The frame hides the native cursor for its own box
16
+ * only (`cursor: none`), so the effect is local to whatever the caller wraps,
17
+ * unlike a page-wide replacement.
18
+ */
19
+ const gui_1 = require("@hanzo/gui");
20
+ const react_1 = require("react");
21
+ const sx_1 = require("../../sx.cjs");
22
+ const slot_1 = require("./slot.cjs");
23
+ function Cursor({ children, cursorText, cursorSize = 20, className }) {
24
+ const [position, setPosition] = (0, react_1.useState)({ x: 0, y: 0 });
25
+ const [isHovered, setIsHovered] = (0, react_1.useState)(false);
26
+ return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('cursor'), position: "relative", style: gui_1.isWeb ? { cursor: 'none' } : undefined, ...(0, sx_1.sx)(className), onMouseMove: (e) => {
27
+ const rect = e.currentTarget.getBoundingClientRect();
28
+ setPosition({ x: e.clientX - rect.left, y: e.clientY - rect.top });
29
+ }, onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: [children, isHovered && ((0, jsx_runtime_1.jsx)(gui_1.YStack, { ...(0, slot_1.slot)('cursor-dot'), position: "absolute", items: "center", justify: "center", rounded: 9999, bg: "$color6", pointerEvents: "none", style: {
30
+ left: position.x,
31
+ top: position.y,
32
+ width: cursorSize,
33
+ height: cursorSize,
34
+ transform: 'translate(-50%, -50%)',
35
+ zIndex: 50,
36
+ }, children: cursorText && ((0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$1", fontWeight: "500", color: "$color", children: cursorText })) }))] }));
37
+ }
@@ -0,0 +1,17 @@
1
+ import { type ReactNode } from 'react';
2
+ export type CursorPosition = {
3
+ x: number;
4
+ y: number;
5
+ };
6
+ export type CursorProps = {
7
+ /** Content the cursor effect plays over. */
8
+ children: ReactNode;
9
+ /** Label drawn inside the follower dot; omit for a bare dot. */
10
+ cursorText?: string;
11
+ /** Diameter of the follower dot, in px. */
12
+ cursorSize?: number;
13
+ /** Class notation, converted to style props on the frame. */
14
+ className?: string;
15
+ };
16
+ export declare function Cursor({ children, cursorText, cursorSize, className }: CursorProps): import("react").JSX.Element;
17
+ //# sourceMappingURL=cursor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/cursor.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAIhD,MAAM,MAAM,cAAc,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAErD,MAAM,MAAM,WAAW,GAAG;IACxB,4CAA4C;IAC5C,QAAQ,EAAE,SAAS,CAAA;IACnB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAe,EAAE,SAAS,EAAE,EAAE,WAAW,+BA6CvF"}
@@ -0,0 +1,35 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * Cursor — a container that replaces the pointer with a small round follower
5
+ * while the pointer sits over it.
6
+ *
7
+ * A `mousemove` on the frame turns the client point into a position relative
8
+ * to the frame's own box (`getBoundingClientRect`), so the follower is placed
9
+ * with plain `left`/`top` inside a `position: relative` parent — no fixed
10
+ * positioning, no document listener, and nothing rendered before the pointer
11
+ * has actually entered. `cursorText` draws a label inside the dot; leaving it
12
+ * unset draws a bare dot. The frame hides the native cursor for its own box
13
+ * only (`cursor: none`), so the effect is local to whatever the caller wraps,
14
+ * unlike a page-wide replacement.
15
+ */
16
+ import { SizableText, YStack, isWeb } from '@hanzo/gui';
17
+ import { useState } from 'react';
18
+ import { sx } from '../../sx.js';
19
+ import { slot } from './slot.js';
20
+ export function Cursor({ children, cursorText, cursorSize = 20, className }) {
21
+ const [position, setPosition] = useState({ x: 0, y: 0 });
22
+ const [isHovered, setIsHovered] = useState(false);
23
+ return (_jsxs(YStack, { ...slot('cursor'), position: "relative", style: isWeb ? { cursor: 'none' } : undefined, ...sx(className), onMouseMove: (e) => {
24
+ const rect = e.currentTarget.getBoundingClientRect();
25
+ setPosition({ x: e.clientX - rect.left, y: e.clientY - rect.top });
26
+ }, onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: [children, isHovered && (_jsx(YStack, { ...slot('cursor-dot'), position: "absolute", items: "center", justify: "center", rounded: 9999, bg: "$color6", pointerEvents: "none", style: {
27
+ left: position.x,
28
+ top: position.y,
29
+ width: cursorSize,
30
+ height: cursorSize,
31
+ transform: 'translate(-50%, -50%)',
32
+ zIndex: 50,
33
+ }, children: cursorText && (_jsx(SizableText, { size: "$1", fontWeight: "500", color: "$color", children: cursorText })) }))] }));
34
+ }
35
+ //# sourceMappingURL=cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../src/backends/gui/cursor.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAe7B,MAAM,UAAU,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,GAAG,EAAE,EAAE,SAAS,EAAe;IACtF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACxE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEjD,OAAO,CACL,MAAC,MAAM,OACD,IAAI,CAAC,QAAQ,CAAC,EAClB,QAAQ,EAAC,UAAU,EACnB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,KACzC,EAAE,CAAC,SAAS,CAAC,EACjB,WAAW,EAAE,CAAC,CAAgC,EAAE,EAAE;YAChD,MAAM,IAAI,GAAI,CAAC,CAAC,aAA6B,CAAC,qBAAqB,EAAE,CAAA;YACrE,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QACpE,CAAC,EACD,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EACtC,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,aAEtC,QAAQ,EACR,SAAS,IAAI,CACZ,KAAC,MAAM,OACD,IAAI,CAAC,YAAY,CAAC,EACtB,QAAQ,EAAC,UAAU,EACnB,KAAK,EAAC,QAAQ,EACd,OAAO,EAAC,QAAQ,EAChB,OAAO,EAAE,IAAI,EACb,EAAE,EAAC,SAAS,EACZ,aAAa,EAAC,MAAM,EACpB,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ,CAAC,CAAC;oBAChB,GAAG,EAAE,QAAQ,CAAC,CAAC;oBACf,KAAK,EAAE,UAAU;oBACjB,MAAM,EAAE,UAAU;oBAClB,SAAS,EAAE,uBAAuB;oBAClC,MAAM,EAAE,EAAE;iBACX,YAEA,UAAU,IAAI,CACb,KAAC,WAAW,IAAC,IAAI,EAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAC,KAAK,EAAC,QAAQ,YACnD,UAAU,GACC,CACf,GACM,CACV,IACM,CACV,CAAA;AACH,CAAC"}