@luxfi/ui 7.4.15 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (910) hide show
  1. package/LICENSE.md +21 -0
  2. package/dist/3d-button.cjs +298 -0
  3. package/dist/3d-button.d.ts +52 -0
  4. package/dist/3d-button.d.ts.map +1 -0
  5. package/dist/3d-button.js +273 -0
  6. package/dist/3d-card.cjs +236 -0
  7. package/dist/3d-card.d.ts +29 -0
  8. package/dist/3d-card.d.ts.map +1 -0
  9. package/dist/3d-card.js +209 -0
  10. package/dist/3d-carousel.cjs +375 -0
  11. package/dist/3d-carousel.d.ts +26 -0
  12. package/dist/3d-carousel.d.ts.map +1 -0
  13. package/dist/3d-carousel.js +348 -0
  14. package/dist/3d-grid.cjs +360 -0
  15. package/dist/3d-grid.d.ts +49 -0
  16. package/dist/3d-grid.d.ts.map +1 -0
  17. package/dist/3d-grid.js +335 -0
  18. package/dist/3d-marquee.cjs +8669 -0
  19. package/dist/3d-marquee.d.ts +65 -0
  20. package/dist/3d-marquee.d.ts.map +1 -0
  21. package/dist/3d-marquee.js +8645 -0
  22. package/dist/3d-model-viewer.cjs +909 -0
  23. package/dist/3d-model-viewer.d.ts +45 -0
  24. package/dist/3d-model-viewer.d.ts.map +1 -0
  25. package/dist/3d-model-viewer.js +886 -0
  26. package/dist/3d-pin.cjs +46 -0
  27. package/dist/3d-pin.d.ts +8 -0
  28. package/dist/3d-pin.d.ts.map +1 -0
  29. package/dist/3d-pin.js +24 -0
  30. package/dist/3d-scene.cjs +439 -0
  31. package/dist/3d-scene.d.ts +76 -0
  32. package/dist/3d-scene.d.ts.map +1 -0
  33. package/dist/3d-scene.js +407 -0
  34. package/dist/3d-text.cjs +367 -0
  35. package/dist/3d-text.d.ts +62 -0
  36. package/dist/3d-text.d.ts.map +1 -0
  37. package/dist/3d-text.js +341 -0
  38. package/dist/accordion.d.ts +10 -12
  39. package/dist/accordion.d.ts.map +1 -0
  40. package/dist/advanced-chart.cjs +53 -0
  41. package/dist/advanced-chart.d.ts +6 -0
  42. package/dist/advanced-chart.d.ts.map +1 -0
  43. package/dist/advanced-chart.js +51 -0
  44. package/dist/advanced-navigation-bar.cjs +459 -0
  45. package/dist/advanced-navigation-bar.d.ts +14 -0
  46. package/dist/advanced-navigation-bar.d.ts.map +1 -0
  47. package/dist/advanced-navigation-bar.js +437 -0
  48. package/dist/ai-actions.cjs +57 -0
  49. package/dist/ai-actions.d.ts +14 -0
  50. package/dist/ai-actions.d.ts.map +1 -0
  51. package/dist/ai-actions.js +35 -0
  52. package/dist/ai-agents.cjs +1764 -0
  53. package/dist/ai-agents.d.ts +56 -0
  54. package/dist/ai-agents.d.ts.map +1 -0
  55. package/dist/ai-agents.js +1740 -0
  56. package/dist/ai-assistant.cjs +907 -0
  57. package/dist/ai-assistant.d.ts +28 -0
  58. package/dist/ai-assistant.d.ts.map +1 -0
  59. package/dist/ai-assistant.js +886 -0
  60. package/dist/ai-chat.cjs +1165 -0
  61. package/dist/ai-chat.d.ts +56 -0
  62. package/dist/ai-chat.d.ts.map +1 -0
  63. package/dist/ai-chat.js +1141 -0
  64. package/dist/ai-code.cjs +1866 -0
  65. package/dist/ai-code.d.ts +58 -0
  66. package/dist/ai-code.d.ts.map +1 -0
  67. package/dist/ai-code.js +1841 -0
  68. package/dist/ai-model-selector-navigation-bar.cjs +59 -0
  69. package/dist/ai-model-selector-navigation-bar.d.ts +15 -0
  70. package/dist/ai-model-selector-navigation-bar.d.ts.map +1 -0
  71. package/dist/ai-model-selector-navigation-bar.js +37 -0
  72. package/dist/ai-models.cjs +41 -0
  73. package/dist/ai-models.d.ts +15 -0
  74. package/dist/ai-models.d.ts.map +1 -0
  75. package/dist/ai-models.js +19 -0
  76. package/dist/ai-playground.cjs +1110 -0
  77. package/dist/ai-playground.d.ts +66 -0
  78. package/dist/ai-playground.d.ts.map +1 -0
  79. package/dist/ai-playground.js +1088 -0
  80. package/dist/ai-tools.cjs +1043 -0
  81. package/dist/ai-tools.d.ts +23 -0
  82. package/dist/ai-tools.d.ts.map +1 -0
  83. package/dist/ai-tools.js +1022 -0
  84. package/dist/ai-vision.cjs +1831 -0
  85. package/dist/ai-vision.d.ts +74 -0
  86. package/dist/ai-vision.d.ts.map +1 -0
  87. package/dist/ai-vision.js +1810 -0
  88. package/dist/ai-voice-settings.cjs +1511 -0
  89. package/dist/ai-voice-settings.d.ts +100 -0
  90. package/dist/ai-voice-settings.d.ts.map +1 -0
  91. package/dist/ai-voice-settings.js +1478 -0
  92. package/dist/ai-voice.cjs +1522 -0
  93. package/dist/ai-voice.d.ts +72 -0
  94. package/dist/ai-voice.d.ts.map +1 -0
  95. package/dist/ai-voice.js +1501 -0
  96. package/dist/alert.cjs +14 -147
  97. package/dist/alert.d.ts +4 -5
  98. package/dist/alert.d.ts.map +1 -0
  99. package/dist/alert.js +14 -147
  100. package/dist/android.cjs +127 -0
  101. package/dist/android.d.ts +19 -0
  102. package/dist/android.d.ts.map +1 -0
  103. package/dist/android.js +104 -0
  104. package/dist/animated-background.cjs +8830 -0
  105. package/dist/animated-background.d.ts +103 -0
  106. package/dist/animated-background.d.ts.map +1 -0
  107. package/dist/animated-background.js +8824 -0
  108. package/dist/animated-beam.cjs +8438 -0
  109. package/dist/animated-beam.d.ts +15 -0
  110. package/dist/animated-beam.d.ts.map +1 -0
  111. package/dist/animated-beam.js +8417 -0
  112. package/dist/animated-cursor.cjs +269 -0
  113. package/dist/animated-cursor.d.ts +70 -0
  114. package/dist/animated-cursor.d.ts.map +1 -0
  115. package/dist/animated-cursor.js +264 -0
  116. package/dist/animated-icon.cjs +8927 -0
  117. package/dist/animated-icon.d.ts +119 -0
  118. package/dist/animated-icon.d.ts.map +1 -0
  119. package/dist/animated-icon.js +8902 -0
  120. package/dist/animated-list.cjs +9226 -0
  121. package/dist/animated-list.d.ts +126 -0
  122. package/dist/animated-list.d.ts.map +1 -0
  123. package/dist/animated-list.js +9201 -0
  124. package/dist/animated-number.cjs +8773 -0
  125. package/dist/animated-number.d.ts +127 -0
  126. package/dist/animated-number.d.ts.map +1 -0
  127. package/dist/animated-number.js +8767 -0
  128. package/dist/animated-testimonials.cjs +8653 -0
  129. package/dist/animated-testimonials.d.ts +17 -0
  130. package/dist/animated-testimonials.d.ts.map +1 -0
  131. package/dist/animated-testimonials.js +8632 -0
  132. package/dist/animated-text.cjs +8914 -0
  133. package/dist/animated-text.d.ts +65 -0
  134. package/dist/animated-text.d.ts.map +1 -0
  135. package/dist/animated-text.js +8890 -0
  136. package/dist/animated-tooltip.cjs +8624 -0
  137. package/dist/animated-tooltip.d.ts +9 -0
  138. package/dist/animated-tooltip.d.ts.map +1 -0
  139. package/dist/animated-tooltip.js +8603 -0
  140. package/dist/announcement.cjs +465 -0
  141. package/dist/announcement.d.ts +9 -0
  142. package/dist/announcement.d.ts.map +1 -0
  143. package/dist/announcement.js +443 -0
  144. package/dist/app-switcher-navigation-bar.cjs +470 -0
  145. package/dist/app-switcher-navigation-bar.d.ts +15 -0
  146. package/dist/app-switcher-navigation-bar.d.ts.map +1 -0
  147. package/dist/app-switcher-navigation-bar.js +448 -0
  148. package/dist/apple-cards-carousel.cjs +9356 -0
  149. package/dist/apple-cards-carousel.d.ts +36 -0
  150. package/dist/apple-cards-carousel.d.ts.map +1 -0
  151. package/dist/apple-cards-carousel.js +9334 -0
  152. package/dist/apple-hello-effect.cjs +8380 -0
  153. package/dist/apple-hello-effect.d.ts +8 -0
  154. package/dist/apple-hello-effect.d.ts.map +1 -0
  155. package/dist/apple-hello-effect.js +8359 -0
  156. package/dist/auth.cjs +6 -5
  157. package/dist/auth.d.ts +11 -13
  158. package/dist/auth.d.ts.map +1 -0
  159. package/dist/auth.js +6 -5
  160. package/dist/avatar.d.ts +5 -6
  161. package/dist/avatar.d.ts.map +1 -0
  162. package/dist/badge.cjs +29 -169
  163. package/dist/badge.d.ts +9 -13
  164. package/dist/badge.d.ts.map +1 -0
  165. package/dist/badge.js +29 -169
  166. package/dist/bank.d.ts +42 -47
  167. package/dist/bank.d.ts.map +1 -0
  168. package/dist/banner.cjs +78 -0
  169. package/dist/banner.d.ts +20 -0
  170. package/dist/banner.d.ts.map +1 -0
  171. package/dist/banner.js +55 -0
  172. package/dist/breadcrumb-and-filters-navigation-bar.cjs +51 -0
  173. package/dist/breadcrumb-and-filters-navigation-bar.d.ts +10 -0
  174. package/dist/breadcrumb-and-filters-navigation-bar.d.ts.map +1 -0
  175. package/dist/breadcrumb-and-filters-navigation-bar.js +29 -0
  176. package/dist/breadcrumb-navigation-bar.cjs +37 -0
  177. package/dist/breadcrumb-navigation-bar.d.ts +10 -0
  178. package/dist/breadcrumb-navigation-bar.d.ts.map +1 -0
  179. package/dist/breadcrumb-navigation-bar.js +15 -0
  180. package/dist/button.cjs +21 -154
  181. package/dist/button.d.ts +9 -10
  182. package/dist/button.d.ts.map +1 -0
  183. package/dist/button.js +21 -154
  184. package/dist/calendar.cjs +55 -0
  185. package/dist/calendar.d.ts +9 -0
  186. package/dist/calendar.d.ts.map +1 -0
  187. package/dist/calendar.js +53 -0
  188. package/dist/centered-logo-navigation-bar.cjs +37 -0
  189. package/dist/centered-logo-navigation-bar.d.ts +15 -0
  190. package/dist/centered-logo-navigation-bar.d.ts.map +1 -0
  191. package/dist/centered-logo-navigation-bar.js +15 -0
  192. package/dist/chart.cjs +266 -0
  193. package/dist/chart.d.ts +52 -0
  194. package/dist/chart.d.ts.map +1 -0
  195. package/dist/chart.js +238 -0
  196. package/dist/checkbox.d.ts +6 -7
  197. package/dist/checkbox.d.ts.map +1 -0
  198. package/dist/choicebox.cjs +77 -0
  199. package/dist/choicebox.d.ts +15 -0
  200. package/dist/choicebox.d.ts.map +1 -0
  201. package/dist/choicebox.js +55 -0
  202. package/dist/chrome.cjs +39 -37
  203. package/dist/chrome.d.ts +15 -19
  204. package/dist/chrome.d.ts.map +1 -0
  205. package/dist/chrome.js +37 -35
  206. package/dist/close-button.d.ts +3 -5
  207. package/dist/close-button.d.ts.map +1 -0
  208. package/dist/code-block.cjs +871 -0
  209. package/dist/code-block.d.ts +38 -0
  210. package/dist/code-block.d.ts.map +1 -0
  211. package/dist/code-block.js +849 -0
  212. package/dist/code-compare.cjs +1714 -0
  213. package/dist/code-compare.d.ts +46 -0
  214. package/dist/code-compare.d.ts.map +1 -0
  215. package/dist/code-compare.js +1692 -0
  216. package/dist/code-diff.cjs +1073 -0
  217. package/dist/code-diff.d.ts +42 -0
  218. package/dist/code-diff.d.ts.map +1 -0
  219. package/dist/code-diff.js +1051 -0
  220. package/dist/code-editor.cjs +641 -0
  221. package/dist/code-editor.d.ts +23 -0
  222. package/dist/code-editor.d.ts.map +1 -0
  223. package/dist/code-editor.js +616 -0
  224. package/dist/code-explorer.cjs +729 -0
  225. package/dist/code-explorer.d.ts +41 -0
  226. package/dist/code-explorer.d.ts.map +1 -0
  227. package/dist/code-explorer.js +707 -0
  228. package/dist/code-preview.cjs +1349 -0
  229. package/dist/code-preview.d.ts +38 -0
  230. package/dist/code-preview.d.ts.map +1 -0
  231. package/dist/code-preview.js +1327 -0
  232. package/dist/code-snippet.cjs +920 -0
  233. package/dist/code-snippet.d.ts +48 -0
  234. package/dist/code-snippet.d.ts.map +1 -0
  235. package/dist/code-snippet.js +897 -0
  236. package/dist/code-tabs.cjs +76 -0
  237. package/dist/code-tabs.d.ts +12 -0
  238. package/dist/code-tabs.d.ts.map +1 -0
  239. package/dist/code-tabs.js +54 -0
  240. package/dist/code-terminal.cjs +894 -0
  241. package/dist/code-terminal.d.ts +48 -0
  242. package/dist/code-terminal.d.ts.map +1 -0
  243. package/dist/code-terminal.js +872 -0
  244. package/dist/collaboration-navigation-bar.cjs +49 -0
  245. package/dist/collaboration-navigation-bar.d.ts +11 -0
  246. package/dist/collaboration-navigation-bar.d.ts.map +1 -0
  247. package/dist/collaboration-navigation-bar.js +27 -0
  248. package/dist/collapsible.cjs +45 -170
  249. package/dist/collapsible.d.ts +11 -13
  250. package/dist/collapsible.d.ts.map +1 -0
  251. package/dist/collapsible.js +34 -159
  252. package/dist/color-mode.d.ts +7 -9
  253. package/dist/color-mode.d.ts.map +1 -0
  254. package/dist/color-picker.cjs +516 -0
  255. package/dist/color-picker.d.ts +10 -0
  256. package/dist/color-picker.d.ts.map +1 -0
  257. package/dist/color-picker.js +495 -0
  258. package/dist/combobox.cjs +488 -0
  259. package/dist/combobox.d.ts +13 -0
  260. package/dist/combobox.d.ts.map +1 -0
  261. package/dist/combobox.js +466 -0
  262. package/dist/communication-navigation-bar.cjs +438 -0
  263. package/dist/communication-navigation-bar.d.ts +7 -0
  264. package/dist/communication-navigation-bar.d.ts.map +1 -0
  265. package/dist/communication-navigation-bar.js +416 -0
  266. package/dist/company-profile.cjs +46 -0
  267. package/dist/company-profile.d.ts +10 -0
  268. package/dist/company-profile.d.ts.map +1 -0
  269. package/dist/company-profile.js +44 -0
  270. package/dist/comparison.cjs +60 -0
  271. package/dist/comparison.d.ts +16 -0
  272. package/dist/comparison.d.ts.map +1 -0
  273. package/dist/comparison.js +38 -0
  274. package/dist/context-switcher-navigation-bar.cjs +51 -0
  275. package/dist/context-switcher-navigation-bar.d.ts +10 -0
  276. package/dist/context-switcher-navigation-bar.d.ts.map +1 -0
  277. package/dist/context-switcher-navigation-bar.js +29 -0
  278. package/dist/credit-card.cjs +77 -0
  279. package/dist/credit-card.d.ts +11 -0
  280. package/dist/credit-card.d.ts.map +1 -0
  281. package/dist/credit-card.js +55 -0
  282. package/dist/crypto-screener.cjs +43 -0
  283. package/dist/crypto-screener.d.ts +4 -0
  284. package/dist/crypto-screener.d.ts.map +1 -0
  285. package/dist/crypto-screener.js +41 -0
  286. package/dist/cursor.cjs +71 -0
  287. package/dist/cursor.d.ts +9 -0
  288. package/dist/cursor.d.ts.map +1 -0
  289. package/dist/cursor.js +49 -0
  290. package/dist/dashboard-navigation-bar.cjs +441 -0
  291. package/dist/dashboard-navigation-bar.d.ts +11 -0
  292. package/dist/dashboard-navigation-bar.d.ts.map +1 -0
  293. package/dist/dashboard-navigation-bar.js +419 -0
  294. package/dist/dialog-stack.cjs +460 -0
  295. package/dist/dialog-stack.d.ts +13 -0
  296. package/dist/dialog-stack.d.ts.map +1 -0
  297. package/dist/dialog-stack.js +438 -0
  298. package/dist/dialog.cjs +16 -19
  299. package/dist/dialog.d.ts +49 -53
  300. package/dist/dialog.d.ts.map +1 -0
  301. package/dist/dialog.js +12 -15
  302. package/dist/direction.cjs +26 -0
  303. package/dist/direction.d.ts +20 -0
  304. package/dist/direction.d.ts.map +1 -0
  305. package/dist/direction.js +23 -0
  306. package/dist/dock.cjs +8675 -0
  307. package/dist/dock.d.ts +20 -0
  308. package/dist/dock.d.ts.map +1 -0
  309. package/dist/dock.js +8653 -0
  310. package/dist/drawer.d.ts +33 -38
  311. package/dist/drawer.d.ts.map +1 -0
  312. package/dist/dropzone.cjs +116 -0
  313. package/dist/dropzone.d.ts +11 -0
  314. package/dist/dropzone.d.ts.map +1 -0
  315. package/dist/dropzone.js +94 -0
  316. package/dist/e-commerce-navigation-bar.cjs +442 -0
  317. package/dist/e-commerce-navigation-bar.d.ts +12 -0
  318. package/dist/e-commerce-navigation-bar.d.ts.map +1 -0
  319. package/dist/e-commerce-navigation-bar.js +420 -0
  320. package/dist/editor.cjs +497 -0
  321. package/dist/editor.d.ts +9 -0
  322. package/dist/editor.d.ts.map +1 -0
  323. package/dist/editor.js +475 -0
  324. package/dist/empty-state.d.ts +4 -6
  325. package/dist/empty-state.d.ts.map +1 -0
  326. package/dist/empty.cjs +117 -0
  327. package/dist/empty.d.ts +18 -0
  328. package/dist/empty.d.ts.map +1 -0
  329. package/dist/empty.js +110 -0
  330. package/dist/engine.cjs +91 -0
  331. package/dist/engine.d.ts +35 -0
  332. package/dist/engine.d.ts.map +1 -0
  333. package/dist/engine.js +86 -0
  334. package/dist/expiration-selector.d.ts +4 -6
  335. package/dist/expiration-selector.d.ts.map +1 -0
  336. package/dist/field.cjs +2 -1
  337. package/dist/field.d.ts +5 -7
  338. package/dist/field.d.ts.map +1 -0
  339. package/dist/field.js +3 -2
  340. package/dist/financials.cjs +66 -0
  341. package/dist/financials.d.ts +12 -0
  342. package/dist/financials.d.ts.map +1 -0
  343. package/dist/financials.js +64 -0
  344. package/dist/forex-screener.cjs +44 -0
  345. package/dist/forex-screener.d.ts +4 -0
  346. package/dist/forex-screener.d.ts.map +1 -0
  347. package/dist/forex-screener.js +42 -0
  348. package/dist/gantt.cjs +65 -0
  349. package/dist/gantt.d.ts +13 -0
  350. package/dist/gantt.d.ts.map +1 -0
  351. package/dist/gantt.js +43 -0
  352. package/dist/greeks-display.d.ts +3 -5
  353. package/dist/greeks-display.d.ts.map +1 -0
  354. package/dist/grid-pattern.cjs +327 -0
  355. package/dist/grid-pattern.d.ts +111 -0
  356. package/dist/grid-pattern.d.ts.map +1 -0
  357. package/dist/grid-pattern.js +304 -0
  358. package/dist/gui.d.ts +1 -1
  359. package/dist/gui.d.ts.map +1 -0
  360. package/dist/heading.d.ts +4 -6
  361. package/dist/heading.d.ts.map +1 -0
  362. package/dist/hooks/use-mobile.d.ts +3 -0
  363. package/dist/hooks/use-mobile.d.ts.map +1 -0
  364. package/dist/iam.d.ts +10 -12
  365. package/dist/iam.d.ts.map +1 -0
  366. package/dist/icon-button.cjs +14 -147
  367. package/dist/icon-button.d.ts +4 -5
  368. package/dist/icon-button.d.ts.map +1 -0
  369. package/dist/icon-button.js +14 -147
  370. package/dist/icon-navigation-bar.cjs +48 -0
  371. package/dist/icon-navigation-bar.d.ts +11 -0
  372. package/dist/icon-navigation-bar.d.ts.map +1 -0
  373. package/dist/icon-navigation-bar.js +26 -0
  374. package/dist/icons.d.ts +1 -0
  375. package/dist/icons.d.ts.map +1 -0
  376. package/dist/identity.d.ts +9 -11
  377. package/dist/identity.d.ts.map +1 -0
  378. package/dist/image-crop.cjs +482 -0
  379. package/dist/image-crop.d.ts +9 -0
  380. package/dist/image-crop.d.ts.map +1 -0
  381. package/dist/image-crop.js +460 -0
  382. package/dist/image-zoom.cjs +77 -0
  383. package/dist/image-zoom.d.ts +7 -0
  384. package/dist/image-zoom.d.ts.map +1 -0
  385. package/dist/image-zoom.js +55 -0
  386. package/dist/image.cjs +17 -149
  387. package/dist/image.d.ts +10 -11
  388. package/dist/image.d.ts.map +1 -0
  389. package/dist/image.js +16 -148
  390. package/dist/index.cjs +30299 -1227
  391. package/dist/index.d.ts +207 -60
  392. package/dist/index.d.ts.map +1 -0
  393. package/dist/index.js +30009 -1226
  394. package/dist/ink.cjs +17 -0
  395. package/dist/ink.d.ts +14 -0
  396. package/dist/ink.d.ts.map +1 -0
  397. package/dist/ink.js +15 -0
  398. package/dist/input-group.d.ts +4 -6
  399. package/dist/input-group.d.ts.map +1 -0
  400. package/dist/input-otp.cjs +72 -0
  401. package/dist/input-otp.d.ts +35 -0
  402. package/dist/input-otp.d.ts.map +1 -0
  403. package/dist/input-otp.js +47 -0
  404. package/dist/input.d.ts +8 -9
  405. package/dist/input.d.ts.map +1 -0
  406. package/dist/iphone-15-pro.cjs +61 -0
  407. package/dist/iphone-15-pro.d.ts +9 -0
  408. package/dist/iphone-15-pro.d.ts.map +1 -0
  409. package/dist/iphone-15-pro.js +39 -0
  410. package/dist/item.cjs +215 -0
  411. package/dist/item.d.ts +41 -0
  412. package/dist/item.d.ts.map +1 -0
  413. package/dist/item.js +200 -0
  414. package/dist/kanban.cjs +1354 -0
  415. package/dist/kanban.d.ts +36 -0
  416. package/dist/kanban.d.ts.map +1 -0
  417. package/dist/kanban.js +1330 -0
  418. package/dist/kbd.cjs +40 -0
  419. package/dist/kbd.d.ts +4 -0
  420. package/dist/kbd.d.ts.map +1 -0
  421. package/dist/kbd.js +37 -0
  422. package/dist/limelight-nav-navigation-bar.cjs +51 -0
  423. package/dist/limelight-nav-navigation-bar.d.ts +10 -0
  424. package/dist/limelight-nav-navigation-bar.d.ts.map +1 -0
  425. package/dist/limelight-nav-navigation-bar.js +29 -0
  426. package/dist/limelight-nav.cjs +570 -0
  427. package/dist/limelight-nav.d.ts +10 -0
  428. package/dist/limelight-nav.d.ts.map +1 -0
  429. package/dist/limelight-nav.js +549 -0
  430. package/dist/link.cjs +41 -168
  431. package/dist/link.d.ts +9 -11
  432. package/dist/link.d.ts.map +1 -0
  433. package/dist/link.js +30 -157
  434. package/dist/list.cjs +35 -0
  435. package/dist/list.d.ts +5 -0
  436. package/dist/list.d.ts.map +1 -0
  437. package/dist/list.js +12 -0
  438. package/dist/lux.config.d.ts +521 -524
  439. package/dist/lux.config.d.ts.map +1 -0
  440. package/dist/magnetic.cjs +63 -0
  441. package/dist/magnetic.d.ts +8 -0
  442. package/dist/magnetic.d.ts.map +1 -0
  443. package/dist/magnetic.js +41 -0
  444. package/dist/market-overview.cjs +102 -0
  445. package/dist/market-overview.d.ts +4 -0
  446. package/dist/market-overview.d.ts.map +1 -0
  447. package/dist/market-overview.js +100 -0
  448. package/dist/marquee.cjs +67 -0
  449. package/dist/marquee.d.ts +10 -0
  450. package/dist/marquee.d.ts.map +1 -0
  451. package/dist/marquee.js +45 -0
  452. package/dist/menu-dock.cjs +64 -0
  453. package/dist/menu-dock.d.ts +14 -0
  454. package/dist/menu-dock.d.ts.map +1 -0
  455. package/dist/menu-dock.js +42 -0
  456. package/dist/menu.d.ts +30 -31
  457. package/dist/menu.d.ts.map +1 -0
  458. package/dist/menubar.cjs +116 -0
  459. package/dist/menubar.d.ts +30 -0
  460. package/dist/menubar.d.ts.map +1 -0
  461. package/dist/menubar.js +61 -0
  462. package/dist/message-dock.cjs +480 -0
  463. package/dist/message-dock.d.ts +15 -0
  464. package/dist/message-dock.d.ts.map +1 -0
  465. package/dist/message-dock.js +458 -0
  466. package/dist/mini-calendar.cjs +505 -0
  467. package/dist/mini-calendar.d.ts +10 -0
  468. package/dist/mini-calendar.d.ts.map +1 -0
  469. package/dist/mini-calendar.js +483 -0
  470. package/dist/minimal-tiptap.cjs +48 -0
  471. package/dist/minimal-tiptap.d.ts +8 -0
  472. package/dist/minimal-tiptap.d.ts.map +1 -0
  473. package/dist/minimal-tiptap.js +26 -0
  474. package/dist/motion-highlight.cjs +71 -0
  475. package/dist/motion-highlight.d.ts +7 -0
  476. package/dist/motion-highlight.d.ts.map +1 -0
  477. package/dist/motion-highlight.js +49 -0
  478. package/dist/music-player.cjs +810 -0
  479. package/dist/music-player.d.ts +18 -0
  480. package/dist/music-player.d.ts.map +1 -0
  481. package/dist/music-player.js +788 -0
  482. package/dist/native-select.cjs +82 -0
  483. package/dist/native-select.d.ts +9 -0
  484. package/dist/native-select.d.ts.map +1 -0
  485. package/dist/native-select.js +58 -0
  486. package/dist/news-timeline.cjs +42 -0
  487. package/dist/news-timeline.d.ts +4 -0
  488. package/dist/news-timeline.d.ts.map +1 -0
  489. package/dist/news-timeline.js +40 -0
  490. package/dist/next.d.ts +5 -7
  491. package/dist/next.d.ts.map +1 -0
  492. package/dist/option-chain.d.ts +6 -8
  493. package/dist/option-chain.d.ts.map +1 -0
  494. package/dist/option-position.d.ts +4 -6
  495. package/dist/option-position.d.ts.map +1 -0
  496. package/dist/order-entry.cjs +141 -0
  497. package/dist/order-entry.d.ts +15 -0
  498. package/dist/order-entry.d.ts.map +1 -0
  499. package/dist/order-entry.js +136 -0
  500. package/dist/orders-history.cjs +83 -0
  501. package/dist/orders-history.d.ts +18 -0
  502. package/dist/orders-history.d.ts.map +1 -0
  503. package/dist/orders-history.js +78 -0
  504. package/dist/pagination.cjs +132 -0
  505. package/dist/pagination.d.ts +29 -0
  506. package/dist/pagination.d.ts.map +1 -0
  507. package/dist/pagination.js +104 -0
  508. package/dist/particles-background.cjs +159 -0
  509. package/dist/particles-background.d.ts +18 -0
  510. package/dist/particles-background.d.ts.map +1 -0
  511. package/dist/particles-background.js +157 -0
  512. package/dist/pill.cjs +80 -0
  513. package/dist/pill.d.ts +21 -0
  514. package/dist/pill.d.ts.map +1 -0
  515. package/dist/pill.js +57 -0
  516. package/dist/pin-input.cjs +1 -1
  517. package/dist/pin-input.d.ts +3 -5
  518. package/dist/pin-input.d.ts.map +1 -0
  519. package/dist/pin-input.js +1 -1
  520. package/dist/pixel-image.cjs +71 -0
  521. package/dist/pixel-image.d.ts +8 -0
  522. package/dist/pixel-image.d.ts.map +1 -0
  523. package/dist/pixel-image.js +49 -0
  524. package/dist/pnl-diagram.d.ts +5 -6
  525. package/dist/pnl-diagram.d.ts.map +1 -0
  526. package/dist/popover.cjs +16 -18
  527. package/dist/popover.d.ts +24 -25
  528. package/dist/popover.d.ts.map +1 -0
  529. package/dist/popover.js +11 -13
  530. package/dist/positions-list.cjs +98 -0
  531. package/dist/positions-list.d.ts +13 -0
  532. package/dist/positions-list.d.ts.map +1 -0
  533. package/dist/positions-list.js +93 -0
  534. package/dist/progress-circle.cjs +3 -6
  535. package/dist/progress-circle.d.ts +8 -9
  536. package/dist/progress-circle.d.ts.map +1 -0
  537. package/dist/progress-circle.js +2 -5
  538. package/dist/progress.d.ts +3 -4
  539. package/dist/progress.d.ts.map +1 -0
  540. package/dist/provider.d.ts +8 -10
  541. package/dist/provider.d.ts.map +1 -0
  542. package/dist/pulse-animation.cjs +8741 -0
  543. package/dist/pulse-animation.d.ts +155 -0
  544. package/dist/pulse-animation.d.ts.map +1 -0
  545. package/dist/pulse-animation.js +8732 -0
  546. package/dist/qr-code.cjs +65 -0
  547. package/dist/qr-code.d.ts +21 -0
  548. package/dist/qr-code.d.ts.map +1 -0
  549. package/dist/qr-code.js +43 -0
  550. package/dist/radio.d.ts +6 -7
  551. package/dist/radio.d.ts.map +1 -0
  552. package/dist/rating.d.ts +3 -5
  553. package/dist/rating.d.ts.map +1 -0
  554. package/dist/relative-time.cjs +88 -0
  555. package/dist/relative-time.d.ts +9 -0
  556. package/dist/relative-time.d.ts.map +1 -0
  557. package/dist/relative-time.js +66 -0
  558. package/dist/resizable.cjs +61 -0
  559. package/dist/resizable.d.ts +24 -0
  560. package/dist/resizable.d.ts.map +1 -0
  561. package/dist/resizable.js +37 -0
  562. package/dist/reveal-animation.cjs +8791 -0
  563. package/dist/reveal-animation.d.ts +134 -0
  564. package/dist/reveal-animation.d.ts.map +1 -0
  565. package/dist/reveal-animation.js +8779 -0
  566. package/dist/safari.cjs +90 -0
  567. package/dist/safari.d.ts +9 -0
  568. package/dist/safari.d.ts.map +1 -0
  569. package/dist/safari.js +68 -0
  570. package/dist/sandbox.cjs +94 -0
  571. package/dist/sandbox.d.ts +9 -0
  572. package/dist/sandbox.d.ts.map +1 -0
  573. package/dist/sandbox.js +72 -0
  574. package/dist/search-and-toggle-navigation-bar.cjs +51 -0
  575. package/dist/search-and-toggle-navigation-bar.d.ts +10 -0
  576. package/dist/search-and-toggle-navigation-bar.d.ts.map +1 -0
  577. package/dist/search-and-toggle-navigation-bar.js +29 -0
  578. package/dist/select.cjs +38 -168
  579. package/dist/select.d.ts +38 -41
  580. package/dist/select.d.ts.map +1 -0
  581. package/dist/select.js +34 -164
  582. package/dist/separator.d.ts +5 -6
  583. package/dist/separator.d.ts.map +1 -0
  584. package/dist/sidebar.cjs +1134 -0
  585. package/dist/sidebar.d.ts +80 -0
  586. package/dist/sidebar.d.ts.map +1 -0
  587. package/dist/sidebar.js +1090 -0
  588. package/dist/simple-navigation-bar.cjs +45 -0
  589. package/dist/simple-navigation-bar.d.ts +11 -0
  590. package/dist/simple-navigation-bar.d.ts.map +1 -0
  591. package/dist/simple-navigation-bar.js +23 -0
  592. package/dist/skeleton.cjs +15 -148
  593. package/dist/skeleton.d.ts +11 -53
  594. package/dist/skeleton.d.ts.map +1 -0
  595. package/dist/skeleton.js +15 -148
  596. package/dist/slider.cjs +1 -1
  597. package/dist/slider.d.ts +4 -5
  598. package/dist/slider.d.ts.map +1 -0
  599. package/dist/slider.js +1 -1
  600. package/dist/status-dashboard-navigation-bar.cjs +51 -0
  601. package/dist/status-dashboard-navigation-bar.d.ts +10 -0
  602. package/dist/status-dashboard-navigation-bar.d.ts.map +1 -0
  603. package/dist/status-dashboard-navigation-bar.js +29 -0
  604. package/dist/status.cjs +85 -0
  605. package/dist/status.d.ts +23 -0
  606. package/dist/status.d.ts.map +1 -0
  607. package/dist/status.js +62 -0
  608. package/dist/stock-screener.cjs +44 -0
  609. package/dist/stock-screener.d.ts +4 -0
  610. package/dist/stock-screener.d.ts.map +1 -0
  611. package/dist/stock-screener.js +42 -0
  612. package/dist/strategy-builder.d.ts +6 -8
  613. package/dist/strategy-builder.d.ts.map +1 -0
  614. package/dist/switch.cjs +2 -2
  615. package/dist/switch.d.ts +4 -8
  616. package/dist/switch.d.ts.map +1 -0
  617. package/dist/switch.js +2 -2
  618. package/dist/symbol-info.cjs +44 -0
  619. package/dist/symbol-info.d.ts +9 -0
  620. package/dist/symbol-info.d.ts.map +1 -0
  621. package/dist/symbol-info.js +42 -0
  622. package/dist/table.cjs +74 -192
  623. package/dist/table.d.ts +23 -25
  624. package/dist/table.d.ts.map +1 -0
  625. package/dist/table.js +53 -171
  626. package/dist/tabs.d.ts +12 -13
  627. package/dist/tabs.d.ts.map +1 -0
  628. package/dist/tag.cjs +14 -147
  629. package/dist/tag.d.ts +4 -5
  630. package/dist/tag.d.ts.map +1 -0
  631. package/dist/tag.js +14 -147
  632. package/dist/tags.cjs +385 -0
  633. package/dist/tags.d.ts +13 -0
  634. package/dist/tags.d.ts.map +1 -0
  635. package/dist/tags.js +364 -0
  636. package/dist/team-switcher-navigation-bar.cjs +51 -0
  637. package/dist/team-switcher-navigation-bar.d.ts +10 -0
  638. package/dist/team-switcher-navigation-bar.d.ts.map +1 -0
  639. package/dist/team-switcher-navigation-bar.js +29 -0
  640. package/dist/technical-analysis.cjs +69 -0
  641. package/dist/technical-analysis.d.ts +13 -0
  642. package/dist/technical-analysis.d.ts.map +1 -0
  643. package/dist/technical-analysis.js +67 -0
  644. package/dist/terminal.cjs +372 -0
  645. package/dist/terminal.d.ts +21 -0
  646. package/dist/terminal.d.ts.map +1 -0
  647. package/dist/terminal.js +350 -0
  648. package/dist/textarea.d.ts +5 -6
  649. package/dist/textarea.d.ts.map +1 -0
  650. package/dist/ticker-tape.cjs +54 -0
  651. package/dist/ticker-tape.d.ts +4 -0
  652. package/dist/ticker-tape.d.ts.map +1 -0
  653. package/dist/ticker-tape.js +52 -0
  654. package/dist/ticker.cjs +66 -0
  655. package/dist/ticker.d.ts +10 -0
  656. package/dist/ticker.d.ts.map +1 -0
  657. package/dist/ticker.js +44 -0
  658. package/dist/timeline.cjs +317 -0
  659. package/dist/timeline.d.ts +20 -0
  660. package/dist/timeline.d.ts.map +1 -0
  661. package/dist/timeline.js +295 -0
  662. package/dist/toaster.d.ts +4 -5
  663. package/dist/toaster.d.ts.map +1 -0
  664. package/dist/toggle.cjs +62 -0
  665. package/dist/toggle.d.ts +26 -0
  666. package/dist/toggle.d.ts.map +1 -0
  667. package/dist/toggle.js +57 -0
  668. package/dist/tooltip.d.ts +3 -5
  669. package/dist/tooltip.d.ts.map +1 -0
  670. package/dist/trading-panel.cjs +212 -0
  671. package/dist/trading-panel.d.ts +7 -0
  672. package/dist/trading-panel.d.ts.map +1 -0
  673. package/dist/trading-panel.js +207 -0
  674. package/dist/two-tier-navigation-bar.cjs +51 -0
  675. package/dist/two-tier-navigation-bar.d.ts +10 -0
  676. package/dist/two-tier-navigation-bar.d.ts.map +1 -0
  677. package/dist/two-tier-navigation-bar.js +29 -0
  678. package/dist/underline-navigation-bar.cjs +51 -0
  679. package/dist/underline-navigation-bar.d.ts +10 -0
  680. package/dist/underline-navigation-bar.d.ts.map +1 -0
  681. package/dist/underline-navigation-bar.js +29 -0
  682. package/dist/use-narrow.d.ts +6 -7
  683. package/dist/use-narrow.d.ts.map +1 -0
  684. package/dist/utils/cn.d.ts +2 -0
  685. package/dist/utils/cn.d.ts.map +1 -0
  686. package/dist/utils.cjs +6 -7
  687. package/dist/utils.d.ts +13 -5
  688. package/dist/utils.d.ts.map +1 -0
  689. package/dist/utils.js +1 -9
  690. package/dist/vite.d.ts +3 -3
  691. package/dist/vite.d.ts.map +1 -0
  692. package/dist/white-label.d.ts +12 -12
  693. package/dist/white-label.d.ts.map +1 -0
  694. package/dist/youtube-pip-player.cjs +489 -0
  695. package/dist/youtube-pip-player.d.ts +41 -0
  696. package/dist/youtube-pip-player.d.ts.map +1 -0
  697. package/dist/youtube-pip-player.js +466 -0
  698. package/package.json +769 -66
  699. package/src/3d-button.tsx +346 -0
  700. package/src/3d-card.tsx +271 -0
  701. package/src/3d-carousel.tsx +444 -0
  702. package/src/3d-grid.tsx +448 -0
  703. package/src/3d-marquee.tsx +422 -0
  704. package/src/3d-model-viewer.tsx +659 -0
  705. package/src/3d-pin.tsx +37 -0
  706. package/src/3d-scene.tsx +629 -0
  707. package/src/3d-text.tsx +442 -0
  708. package/src/advanced-chart.tsx +63 -0
  709. package/src/advanced-navigation-bar.tsx +83 -0
  710. package/src/ai-actions.tsx +60 -0
  711. package/src/ai-agents.tsx +1174 -0
  712. package/src/ai-assistant.tsx +227 -0
  713. package/src/ai-chat.tsx +554 -0
  714. package/src/ai-code.tsx +1331 -0
  715. package/src/ai-model-selector-navigation-bar.tsx +78 -0
  716. package/src/ai-models.tsx +58 -0
  717. package/src/ai-playground.tsx +429 -0
  718. package/src/ai-tools.tsx +383 -0
  719. package/src/ai-vision.tsx +1220 -0
  720. package/src/ai-voice-settings.tsx +726 -0
  721. package/src/ai-voice.tsx +735 -0
  722. package/src/android.tsx +92 -0
  723. package/src/animated-background.tsx +625 -0
  724. package/src/animated-beam.tsx +110 -0
  725. package/src/animated-cursor.tsx +406 -0
  726. package/src/animated-icon.tsx +520 -0
  727. package/src/animated-list.tsx +508 -0
  728. package/src/animated-number.tsx +485 -0
  729. package/src/animated-testimonials.tsx +119 -0
  730. package/src/animated-text.tsx +481 -0
  731. package/src/animated-tooltip.tsx +54 -0
  732. package/src/announcement.tsx +55 -0
  733. package/src/app-switcher-navigation-bar.tsx +76 -0
  734. package/src/apple-cards-carousel.tsx +349 -0
  735. package/src/apple-hello-effect.tsx +50 -0
  736. package/src/auth.tsx +9 -8
  737. package/src/avatar.tsx +1 -1
  738. package/src/badge.tsx +27 -30
  739. package/src/banner.tsx +62 -0
  740. package/src/breadcrumb-and-filters-navigation-bar.tsx +40 -0
  741. package/src/breadcrumb-navigation-bar.tsx +43 -0
  742. package/src/button.tsx +10 -9
  743. package/src/calendar.tsx +62 -0
  744. package/src/centered-logo-navigation-bar.tsx +43 -0
  745. package/src/chart.tsx +372 -0
  746. package/src/choicebox.tsx +89 -0
  747. package/src/chrome.tsx +41 -40
  748. package/src/code-block.tsx +278 -0
  749. package/src/code-compare.tsx +551 -0
  750. package/src/code-diff.tsx +573 -0
  751. package/src/code-editor.tsx +250 -0
  752. package/src/code-explorer.tsx +403 -0
  753. package/src/code-preview.tsx +488 -0
  754. package/src/code-snippet.tsx +336 -0
  755. package/src/code-tabs.tsx +78 -0
  756. package/src/code-terminal.tsx +530 -0
  757. package/src/collaboration-navigation-bar.tsx +50 -0
  758. package/src/collapsible.tsx +3 -2
  759. package/src/color-picker.tsx +68 -0
  760. package/src/combobox.tsx +87 -0
  761. package/src/communication-navigation-bar.tsx +42 -0
  762. package/src/company-profile.tsx +67 -0
  763. package/src/comparison.tsx +68 -0
  764. package/src/context-switcher-navigation-bar.tsx +39 -0
  765. package/src/credit-card.tsx +72 -0
  766. package/src/crypto-screener.tsx +57 -0
  767. package/src/cursor.tsx +61 -0
  768. package/src/dashboard-navigation-bar.tsx +49 -0
  769. package/src/dialog-stack.tsx +55 -0
  770. package/src/dialog.tsx +16 -15
  771. package/src/direction.tsx +40 -0
  772. package/src/dock.tsx +172 -0
  773. package/src/dropzone.tsx +106 -0
  774. package/src/e-commerce-navigation-bar.tsx +54 -0
  775. package/src/editor.tsx +85 -0
  776. package/src/empty.tsx +117 -0
  777. package/src/field.tsx +2 -1
  778. package/src/financials.tsx +85 -0
  779. package/src/forex-screener.tsx +58 -0
  780. package/src/gantt.tsx +68 -0
  781. package/src/grid-pattern.tsx +353 -0
  782. package/src/hooks/use-mobile.ts +29 -0
  783. package/src/icon-navigation-bar.tsx +36 -0
  784. package/src/image-crop.tsx +67 -0
  785. package/src/image-zoom.tsx +64 -0
  786. package/src/image.tsx +2 -1
  787. package/src/index.ts +123 -0
  788. package/src/input-otp.tsx +72 -0
  789. package/src/iphone-15-pro.tsx +69 -0
  790. package/src/item.tsx +193 -0
  791. package/src/kanban.tsx +772 -0
  792. package/src/kbd.tsx +32 -0
  793. package/src/limelight-nav-navigation-bar.tsx +39 -0
  794. package/src/limelight-nav.tsx +101 -0
  795. package/src/link.tsx +18 -18
  796. package/src/list.tsx +22 -0
  797. package/src/magnetic.tsx +54 -0
  798. package/src/market-overview.tsx +116 -0
  799. package/src/marquee.tsx +62 -0
  800. package/src/menu-dock.tsx +56 -0
  801. package/src/menubar.tsx +149 -0
  802. package/src/message-dock.tsx +89 -0
  803. package/src/mini-calendar.tsx +121 -0
  804. package/src/minimal-tiptap.tsx +32 -0
  805. package/src/motion-highlight.tsx +55 -0
  806. package/src/music-player.tsx +413 -0
  807. package/src/native-select.tsx +63 -0
  808. package/src/news-timeline.tsx +56 -0
  809. package/src/order-entry.tsx +162 -0
  810. package/src/orders-history.tsx +115 -0
  811. package/src/pagination.tsx +118 -0
  812. package/src/particles-background.tsx +225 -0
  813. package/src/pill.tsx +61 -0
  814. package/src/pin-input.tsx +1 -1
  815. package/src/pixel-image.tsx +64 -0
  816. package/src/popover.tsx +10 -9
  817. package/src/positions-list.tsx +108 -0
  818. package/src/progress-circle.tsx +2 -1
  819. package/src/pulse-animation.tsx +606 -0
  820. package/src/qr-code.tsx +64 -0
  821. package/src/relative-time.tsx +84 -0
  822. package/src/resizable.tsx +46 -0
  823. package/src/reveal-animation.tsx +532 -0
  824. package/src/safari.tsx +115 -0
  825. package/src/sandbox.tsx +83 -0
  826. package/src/search-and-toggle-navigation-bar.tsx +39 -0
  827. package/src/select.tsx +31 -30
  828. package/src/sidebar.tsx +723 -0
  829. package/src/simple-navigation-bar.tsx +39 -0
  830. package/src/skeleton.tsx +20 -168
  831. package/src/slider.tsx +2 -1
  832. package/src/status-dashboard-navigation-bar.tsx +39 -0
  833. package/src/status.tsx +63 -0
  834. package/src/stock-screener.tsx +58 -0
  835. package/src/switch.tsx +3 -3
  836. package/src/symbol-info.tsx +64 -0
  837. package/src/table.tsx +26 -25
  838. package/src/tags.tsx +62 -0
  839. package/src/team-switcher-navigation-bar.tsx +39 -0
  840. package/src/technical-analysis.tsx +99 -0
  841. package/src/terminal.tsx +399 -0
  842. package/src/ticker-tape.tsx +68 -0
  843. package/src/ticker.tsx +52 -0
  844. package/src/timeline.tsx +412 -0
  845. package/src/toggle.tsx +84 -0
  846. package/src/trading-panel.tsx +262 -0
  847. package/src/two-tier-navigation-bar.tsx +39 -0
  848. package/src/underline-navigation-bar.tsx +39 -0
  849. package/src/utils/cn.ts +3 -7
  850. package/src/utils.ts +12 -6
  851. package/src/youtube-pip-player.tsx +606 -0
  852. package/tokens.css +22 -0
  853. package/dist/accordion.d.cts +0 -41
  854. package/dist/alert.d.cts +0 -30
  855. package/dist/auth.d.cts +0 -80
  856. package/dist/avatar.d.cts +0 -25
  857. package/dist/badge.d.cts +0 -19
  858. package/dist/bank.d.cts +0 -83
  859. package/dist/button.d.cts +0 -51
  860. package/dist/checkbox.d.cts +0 -32
  861. package/dist/chrome.d.cts +0 -93
  862. package/dist/close-button.d.cts +0 -9
  863. package/dist/collapsible.d.cts +0 -24
  864. package/dist/color-mode.d.cts +0 -25
  865. package/dist/dialog.d.cts +0 -118
  866. package/dist/drawer.d.cts +0 -69
  867. package/dist/empty-state.d.cts +0 -13
  868. package/dist/expiration-selector.d.cts +0 -16
  869. package/dist/field.d.cts +0 -23
  870. package/dist/greeks-display.d.cts +0 -14
  871. package/dist/gui.d.cts +0 -2
  872. package/dist/heading.d.cts +0 -8
  873. package/dist/iam.d.cts +0 -65
  874. package/dist/icon-button.d.cts +0 -37
  875. package/dist/icons.d.cts +0 -1
  876. package/dist/identity.d.cts +0 -64
  877. package/dist/image.d.cts +0 -57
  878. package/dist/index.d.cts +0 -60
  879. package/dist/input-group.d.cts +0 -17
  880. package/dist/input.d.cts +0 -37
  881. package/dist/link.d.cts +0 -37
  882. package/dist/lux.config.d.cts +0 -981
  883. package/dist/menu.d.cts +0 -68
  884. package/dist/next.d.cts +0 -32
  885. package/dist/option-chain.d.cts +0 -37
  886. package/dist/option-position.d.cts +0 -29
  887. package/dist/pin-input.d.cts +0 -25
  888. package/dist/pnl-diagram.d.cts +0 -11
  889. package/dist/popover.d.cts +0 -73
  890. package/dist/progress-circle.d.cts +0 -47
  891. package/dist/progress.d.cts +0 -28
  892. package/dist/provider.d.cts +0 -25
  893. package/dist/radio.d.cts +0 -53
  894. package/dist/rating.d.cts +0 -14
  895. package/dist/select.d.cts +0 -161
  896. package/dist/separator.d.cts +0 -13
  897. package/dist/skeleton.d.cts +0 -76
  898. package/dist/slider.d.cts +0 -24
  899. package/dist/strategy-builder.d.cts +0 -26
  900. package/dist/switch.d.cts +0 -27
  901. package/dist/table.d.cts +0 -107
  902. package/dist/tabs.d.cts +0 -34
  903. package/dist/tag.d.cts +0 -21
  904. package/dist/textarea.d.cts +0 -13
  905. package/dist/toaster.d.cts +0 -28
  906. package/dist/tooltip.d.cts +0 -38
  907. package/dist/use-narrow.d.cts +0 -12
  908. package/dist/utils.d.cts +0 -5
  909. package/dist/vite.d.cts +0 -29
  910. package/dist/white-label.d.cts +0 -59
@@ -0,0 +1,606 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { Box, VariantProps, css, variants } from '@hanzo/ui'
5
+ import {
6
+ Maximize,
7
+ Maximize2,
8
+ Minimize2,
9
+ Play,
10
+ Volume2,
11
+ VolumeX,
12
+ X,
13
+ } from "lucide-react"
14
+
15
+ import { cn } from "./utils"
16
+
17
+ // Types
18
+ export interface YouTubePipPlayerProps
19
+ extends Omit<React.HTMLAttributes<HTMLDivElement>, "onPlay" | "onPause"> {
20
+ /** YouTube video ID or array of IDs for rotation */
21
+ videoId: string | string[]
22
+ /** Auto-rotate videos every N seconds (default: 30) */
23
+ rotationInterval?: number
24
+ /** Enable scroll-based PIP mode */
25
+ enablePip?: boolean
26
+ /** Initial muted state (default: true) */
27
+ defaultMuted?: boolean
28
+ /** Show live indicator */
29
+ showLiveIndicator?: boolean
30
+ /** Enable TV-style visual effects */
31
+ enableTvEffects?: boolean
32
+ /** PIP position (default: bottom-right) */
33
+ pipPosition?: "bottom-right" | "bottom-left" | "top-right" | "top-left"
34
+ /** Callbacks */
35
+ onPlay?: () => void
36
+ onPause?: () => void
37
+ onPipEnter?: () => void
38
+ onPipExit?: () => void
39
+ onMuteChange?: (muted: boolean) => void
40
+ }
41
+
42
+ const pipPositionStyles = {
43
+ "bottom-right": {
44
+ defaultX: (w: number, pipW: number) => w - pipW - 24,
45
+ defaultY: (h: number, pipH: number) => h - pipH - 24,
46
+ },
47
+ "bottom-left": {
48
+ defaultX: () => 24,
49
+ defaultY: (h: number, pipH: number) => h - pipH - 24,
50
+ },
51
+ "top-right": {
52
+ defaultX: (w: number, pipW: number) => w - pipW - 24,
53
+ defaultY: () => 24,
54
+ },
55
+ "top-left": { defaultX: () => 24, defaultY: () => 24 },
56
+ }
57
+
58
+ const youtubePipPlayerVariants = variants(
59
+ "relative bg-black rounded-[30px] overflow-hidden",
60
+ {
61
+ variants: {
62
+ size: {
63
+ sm: "aspect-video max-w-md",
64
+ md: "aspect-video max-w-2xl",
65
+ lg: "aspect-video max-w-4xl",
66
+ full: "w-full aspect-video",
67
+ hero: "w-full max-h-[calc(100vh-160px)]",
68
+ },
69
+ },
70
+ defaultVariants: {
71
+ size: "hero",
72
+ },
73
+ }
74
+ )
75
+
76
+ export interface YouTubePipPlayerVariantProps
77
+ extends VariantProps<typeof youtubePipPlayerVariants> {}
78
+
79
+ const YouTubePipPlayer = React.forwardRef<
80
+ HTMLDivElement,
81
+ YouTubePipPlayerProps & YouTubePipPlayerVariantProps
82
+ >(
83
+ (
84
+ {
85
+ className,
86
+ size,
87
+ videoId,
88
+ rotationInterval = 30000,
89
+ enablePip = true,
90
+ defaultMuted = true,
91
+ showLiveIndicator = true,
92
+ enableTvEffects = true,
93
+ pipPosition = "bottom-right",
94
+ onPlay,
95
+ onPause,
96
+ onPipEnter,
97
+ onPipExit,
98
+ onMuteChange,
99
+ ...props
100
+ },
101
+ ref
102
+ ) => {
103
+ // Normalize videoIds to array
104
+ const videoIds = React.useMemo(
105
+ () => (Array.isArray(videoId) ? videoId : [videoId]),
106
+ [videoId]
107
+ )
108
+
109
+ // State
110
+ const [currentVideoIndex, setCurrentVideoIndex] = React.useState(0)
111
+ const [isMuted, setIsMuted] = React.useState(defaultMuted)
112
+ const [isPip, setIsPip] = React.useState(false)
113
+ const [showPip, setShowPip] = React.useState(true)
114
+ const [pipSize, setPipSize] = React.useState<
115
+ "normal" | "double" | "fullscreen"
116
+ >("normal")
117
+ const [isMobile, setIsMobile] = React.useState(false)
118
+ const [isHovered, setIsHovered] = React.useState(false)
119
+ const [isPipHovered, setIsPipHovered] = React.useState(false)
120
+ const [showStatic, setShowStatic] = React.useState(false)
121
+
122
+ // Dragging state
123
+ const [pipPos, setPipPos] = React.useState({ x: 0, y: 0 })
124
+ const [isDragging, setIsDragging] = React.useState(false)
125
+ const [dragStart, setDragStart] = React.useState({ x: 0, y: 0 })
126
+ const [hasDragged, setHasDragged] = React.useState(false)
127
+
128
+ // Refs
129
+ const containerRef = React.useRef<HTMLDivElement>(null)
130
+ const pipContainerRef = React.useRef<HTMLDivElement>(null)
131
+
132
+ // Constants
133
+ const PIP_WIDTH_BASE = 384
134
+ const PIP_MARGIN = 24
135
+
136
+ // Calculate current PIP width
137
+ const getCurrentPipWidth = React.useCallback(() => {
138
+ return pipSize === "double" ? PIP_WIDTH_BASE * 2 : PIP_WIDTH_BASE
139
+ }, [pipSize])
140
+
141
+ // Get YouTube embed URL
142
+ const getYouTubeEmbedUrl = React.useCallback(
143
+ (forPip = false) => {
144
+ const currentId = videoIds[currentVideoIndex]
145
+ const muteParam =
146
+ forPip && isPip ? (isMuted ? "1" : "0") : isMuted ? "1" : "0"
147
+ return `https://www.youtube.com/embed/${currentId}?autoplay=1&mute=${muteParam}&controls=0&showinfo=0&rel=0&modestbranding=1&playsinline=1`
148
+ },
149
+ [videoIds, currentVideoIndex, isMuted, isPip]
150
+ )
151
+
152
+ // Mobile detection
153
+ React.useEffect(() => {
154
+ const checkMobile = () => setIsMobile(window.innerWidth < 768)
155
+ checkMobile()
156
+ window.addEventListener("resize", checkMobile)
157
+ return () => window.removeEventListener("resize", checkMobile)
158
+ }, [])
159
+
160
+ // Video rotation
161
+ React.useEffect(() => {
162
+ if (videoIds.length <= 1) return
163
+ const interval = setInterval(() => {
164
+ setCurrentVideoIndex((prev) => (prev + 1) % videoIds.length)
165
+ }, rotationInterval)
166
+ return () => clearInterval(interval)
167
+ }, [videoIds.length, rotationInterval])
168
+
169
+ // TV static effect
170
+ React.useEffect(() => {
171
+ if (!enableTvEffects) return
172
+ const interval = setInterval(() => {
173
+ setShowStatic(true)
174
+ setTimeout(() => setShowStatic(false), 200)
175
+ }, 30000)
176
+ return () => clearInterval(interval)
177
+ }, [enableTvEffects])
178
+
179
+ // Scroll-based PIP activation
180
+ React.useEffect(() => {
181
+ if (!enablePip) return
182
+
183
+ const handleScroll = () => {
184
+ if (!containerRef.current) return
185
+ const rect = containerRef.current.getBoundingClientRect()
186
+ const shouldShowPip = rect.bottom < 100
187
+ const wasInPip = isPip
188
+
189
+ setIsPip(shouldShowPip)
190
+
191
+ if (shouldShowPip !== wasInPip) {
192
+ if (shouldShowPip) {
193
+ onPipEnter?.()
194
+ } else {
195
+ onPipExit?.()
196
+ }
197
+ }
198
+ }
199
+
200
+ window.addEventListener("scroll", handleScroll)
201
+ return () => window.removeEventListener("scroll", handleScroll)
202
+ }, [enablePip, isPip, onPipEnter, onPipExit])
203
+
204
+ // Initialize PIP position
205
+ React.useEffect(() => {
206
+ if (typeof window === "undefined") return
207
+ const pipWidth = getCurrentPipWidth()
208
+ const pipHeight = (pipWidth * 9) / 16
209
+ const pos = pipPositionStyles[pipPosition]
210
+ setPipPos({
211
+ x: pos.defaultX(window.innerWidth, pipWidth),
212
+ y: pos.defaultY(window.innerHeight, pipHeight),
213
+ })
214
+ }, [getCurrentPipWidth, pipPosition])
215
+
216
+ // Update position when size changes
217
+ React.useEffect(() => {
218
+ if (pipSize === "fullscreen" || typeof window === "undefined") return
219
+ const pipWidth = getCurrentPipWidth()
220
+ const pipHeight = (pipWidth * 9) / 16
221
+ const pos = pipPositionStyles[pipPosition]
222
+ setPipPos({
223
+ x: pos.defaultX(window.innerWidth, pipWidth),
224
+ y: pos.defaultY(window.innerHeight, pipHeight),
225
+ })
226
+ }, [pipSize, getCurrentPipWidth, pipPosition])
227
+
228
+ // Dragging handlers
229
+ const handleMouseDown = React.useCallback(
230
+ (e: React.MouseEvent) => {
231
+ if (pipSize === "fullscreen") return
232
+ setIsDragging(true)
233
+ setHasDragged(false)
234
+ setDragStart({
235
+ x: e.clientX - pipPos.x,
236
+ y: e.clientY - pipPos.y,
237
+ })
238
+ },
239
+ [pipSize, pipPos]
240
+ )
241
+
242
+ const handleMouseMove = React.useCallback(
243
+ (e: MouseEvent) => {
244
+ if (!isDragging || pipSize === "fullscreen") return
245
+
246
+ const newX = e.clientX - dragStart.x
247
+ const newY = e.clientY - dragStart.y
248
+
249
+ const distanceMoved = Math.sqrt(
250
+ Math.pow(newX - pipPos.x, 2) + Math.pow(newY - pipPos.y, 2)
251
+ )
252
+ if (distanceMoved > 5) setHasDragged(true)
253
+
254
+ const pipWidth = getCurrentPipWidth()
255
+ const maxX = window.innerWidth - pipWidth - PIP_MARGIN
256
+ const maxY = window.innerHeight - (pipWidth * 9) / 16 - PIP_MARGIN
257
+
258
+ setPipPos({
259
+ x: Math.max(PIP_MARGIN, Math.min(newX, maxX)),
260
+ y: Math.max(PIP_MARGIN, Math.min(newY, maxY)),
261
+ })
262
+ },
263
+ [isDragging, pipSize, dragStart, pipPos, getCurrentPipWidth]
264
+ )
265
+
266
+ const handleMouseUp = React.useCallback(() => {
267
+ if (isDragging && hasDragged) {
268
+ // Snap to corner
269
+ const pipWidth = getCurrentPipWidth()
270
+ const pipHeight = (pipWidth * 9) / 16
271
+ const pos = pipPositionStyles[pipPosition]
272
+ setPipPos({
273
+ x: pos.defaultX(window.innerWidth, pipWidth),
274
+ y: pos.defaultY(window.innerHeight, pipHeight),
275
+ })
276
+ }
277
+ setIsDragging(false)
278
+ setHasDragged(false)
279
+ }, [isDragging, hasDragged, getCurrentPipWidth, pipPosition])
280
+
281
+ // Mouse event listeners for dragging
282
+ React.useEffect(() => {
283
+ if (!isDragging) return
284
+ window.addEventListener("mousemove", handleMouseMove)
285
+ window.addEventListener("mouseup", handleMouseUp)
286
+ return () => {
287
+ window.removeEventListener("mousemove", handleMouseMove)
288
+ window.removeEventListener("mouseup", handleMouseUp)
289
+ }
290
+ }, [isDragging, handleMouseMove, handleMouseUp])
291
+
292
+ // Toggle mute
293
+ const toggleMute = React.useCallback(
294
+ (e: React.MouseEvent) => {
295
+ e.stopPropagation()
296
+ const newMuted = !isMuted
297
+ setIsMuted(newMuted)
298
+ onMuteChange?.(newMuted)
299
+ },
300
+ [isMuted, onMuteChange]
301
+ )
302
+
303
+ // Cycle PIP size
304
+ const cyclePipSize = React.useCallback((e: React.MouseEvent) => {
305
+ e.stopPropagation()
306
+ setPipSize((prev) => {
307
+ if (prev === "normal") return "double"
308
+ if (prev === "double") return "fullscreen"
309
+ return "normal"
310
+ })
311
+ }, [])
312
+
313
+ // Close PIP
314
+ const closePip = React.useCallback((e: React.MouseEvent) => {
315
+ e.stopPropagation()
316
+ setShowPip(false)
317
+ }, [])
318
+
319
+ // Request fullscreen for hero video
320
+ const requestFullscreen = React.useCallback((e: React.MouseEvent) => {
321
+ e.stopPropagation()
322
+ if (!containerRef.current) return
323
+ if (document.fullscreenElement) {
324
+ document.exitFullscreen()
325
+ } else {
326
+ containerRef.current.requestFullscreen()
327
+ }
328
+ }, [])
329
+
330
+ return (
331
+ <>
332
+ {/* Hero Video Container */}
333
+ <Box
334
+ ref={containerRef as never}
335
+ className={cn(
336
+ youtubePipPlayerVariants({ size }),
337
+ "group transition-all duration-500",
338
+ className
339
+ )}
340
+ onMouseEnter={() => setIsHovered(true)}
341
+ onMouseLeave={() => setIsHovered(false)}
342
+ {...props}
343
+ >
344
+ {/* TV Effects - Glow */}
345
+ {enableTvEffects && (
346
+ <>
347
+ <Box className="absolute -inset-24 bg-gradient-radial from-white/40 via-white/20 to-transparent blur-[100px] opacity-80 pointer-events-none" />
348
+ <Box className="absolute -inset-12 bg-gradient-radial from-white/30 via-white/15 to-transparent blur-[60px] opacity-70 pointer-events-none" />
349
+ <Box className="absolute -inset-2 rounded-[30px] bg-gradient-to-r from-white/80 via-white/60 to-white/80 opacity-100 blur-2xl animate-pulse pointer-events-none" />
350
+ <Box className="absolute inset-0 rounded-[30px] border-2 border-white/30 shadow-[0_0_60px_rgba(255,255,255,0.5)] pointer-events-none" />
351
+ </>
352
+ )}
353
+
354
+ {/* Inner frame glass effect */}
355
+ <Box className="absolute inset-0 pointer-events-none z-10">
356
+ <Box
357
+ className="absolute inset-0 rounded-[30px] border-2 border-white/10 bg-gradient-to-b from-white/5 to-transparent"
358
+ style={{
359
+ boxShadow: "var(--shadow-bezel)",
360
+ }}
361
+ />
362
+ </Box>
363
+
364
+ {/* Cinematic Vignette */}
365
+ {enableTvEffects && (
366
+ <Box
367
+ className="absolute inset-0 z-20 pointer-events-none"
368
+ style={{ boxShadow: "var(--shadow-vignette)" }}
369
+ />
370
+ )}
371
+
372
+ {/* Static Effect */}
373
+ {showStatic && enableTvEffects && (
374
+ <Box className="absolute inset-0 z-40 pointer-events-none">
375
+ <Box className="h-full w-full bg-white/3 animate-pulse" />
376
+ <Box
377
+ className="absolute inset-0 opacity-20"
378
+ style={{
379
+ backgroundImage: `url("data:image/svg+xml,%3Csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' /%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.4'/%3E%3C/svg%3E")`,
380
+ }}
381
+ />
382
+ </Box>
383
+ )}
384
+
385
+ {/* YouTube Video */}
386
+ <Box tag="iframe"
387
+ className="absolute inset-0 w-full h-full"
388
+ src={getYouTubeEmbedUrl()}
389
+ title="Video"
390
+ frameBorder="0"
391
+ allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
392
+ allowFullScreen
393
+ />
394
+
395
+ {/* Film Grain */}
396
+ {enableTvEffects && (
397
+ <Box className="absolute inset-0 pointer-events-none opacity-[0.02] z-10">
398
+ <Box
399
+ className="h-full w-full"
400
+ style={{
401
+ backgroundImage:
402
+ "repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(255,255,255,0.05) 2px, rgba(255,255,255,0.05) 4px)",
403
+ }}
404
+ />
405
+ </Box>
406
+ )}
407
+
408
+ {/* Controls - Fade in on hover */}
409
+ <Box
410
+ className={cn(
411
+ "absolute bottom-6 left-6 flex items-center gap-3 z-30 transition-opacity duration-300",
412
+ isHovered ? "opacity-100" : "opacity-0"
413
+ )}
414
+ >
415
+ <Box tag="button"
416
+ onClick={toggleMute}
417
+ className="flex items-center gap-2 bg-black/80 backdrop-blur-md px-4 py-2 rounded-full hover:bg-black transition-all duration-300 border border-white/10"
418
+ >
419
+ {isMuted ? (
420
+ <VolumeX style={css('h-4 w-4 text-white')} />
421
+ ) : (
422
+ <Volume2 style={css('h-4 w-4 text-white')} />
423
+ )}
424
+ <Box tag="span" className="text-xs text-white/90 font-medium tracking-wider uppercase">
425
+ {isMuted ? "Unmute" : "Mute"}
426
+ </Box>
427
+ </Box>
428
+
429
+ <Box tag="button"
430
+ onClick={requestFullscreen}
431
+ className="flex items-center gap-2 bg-black/80 backdrop-blur-md px-4 py-2 rounded-full hover:bg-black transition-all duration-300 border border-white/10"
432
+ >
433
+ <Maximize style={css('h-4 w-4 text-white')} />
434
+ <Box tag="span" className="text-xs text-white/90 font-medium tracking-wider uppercase">
435
+ Fullscreen
436
+ </Box>
437
+ </Box>
438
+ </Box>
439
+
440
+ {/* Live Indicator */}
441
+ {showLiveIndicator && (
442
+ <Box className="absolute top-6 left-6 flex items-center gap-2 bg-black/80 backdrop-blur-md px-4 py-2 rounded-full border border-white/10 z-30">
443
+ <Box className="w-2 h-2 bg-[var(--lux-state-error)] rounded-full animate-pulse shadow-[0_0_10px_rgba(220,38,38,0.8)]" />
444
+ <Box tag="span" className="text-xs text-white/90 font-medium tracking-widest uppercase">
445
+ Live
446
+ </Box>
447
+ </Box>
448
+ )}
449
+ </Box>
450
+
451
+ {/* PIP Window */}
452
+ {enablePip && isPip && showPip && !isMobile && (
453
+ <Box
454
+ ref={pipContainerRef as never}
455
+ className={cn(
456
+ "fixed z-50 transition-all ease-out group",
457
+ pipSize === "fullscreen"
458
+ ? "inset-0 bg-black/98 backdrop-blur-xl duration-500"
459
+ : isDragging
460
+ ? "duration-75"
461
+ : "duration-300",
462
+ isDragging
463
+ ? "cursor-grabbing scale-105 shadow-2xl"
464
+ : pipSize === "fullscreen"
465
+ ? ""
466
+ : "cursor-grab hover:scale-105"
467
+ )}
468
+ style={
469
+ pipSize !== "fullscreen"
470
+ ? {
471
+ left: `${pipPos.x}px`,
472
+ top: `${pipPos.y}px`,
473
+ filter: isDragging
474
+ ? "brightness(1.1) drop-shadow(0 20px 40px rgba(0,0,0,0.5))"
475
+ : "brightness(1)",
476
+ }
477
+ : {}
478
+ }
479
+ onMouseDown={handleMouseDown}
480
+ onMouseEnter={() => setIsPipHovered(true)}
481
+ onMouseLeave={() => setIsPipHovered(false)}
482
+ >
483
+ <Box
484
+ className={cn(
485
+ "relative bg-black overflow-hidden transition-all duration-500",
486
+ pipSize === "fullscreen"
487
+ ? "w-full h-full"
488
+ : pipSize === "double"
489
+ ? "aspect-video rounded-2xl"
490
+ : "w-96 aspect-video rounded-2xl"
491
+ )}
492
+ style={pipSize === "double" ? { width: "768px" } : {}}
493
+ >
494
+ {/* PIP TV Effects */}
495
+ {enableTvEffects && pipSize !== "fullscreen" && (
496
+ <>
497
+ <Box className="absolute -inset-12 rounded-full bg-gradient-radial from-white/30 via-white/10 to-transparent blur-3xl opacity-60 pointer-events-none" />
498
+ <Box className="absolute -inset-1 rounded-2xl bg-gradient-to-r from-white/40 via-white/20 to-white/40 opacity-75 blur-xl animate-pulse pointer-events-none" />
499
+ <Box className="absolute inset-0 pointer-events-none z-10">
500
+ <Box
501
+ className="absolute inset-0 rounded-2xl border-2 border-white/10 bg-gradient-to-b from-white/5 to-transparent"
502
+ style={{
503
+ boxShadow: "var(--shadow-bezel)",
504
+ }}
505
+ />
506
+ </Box>
507
+ <Box className="absolute inset-0 pointer-events-none z-10 opacity-10">
508
+ <Box
509
+ className="h-full w-full animate-scan"
510
+ style={{
511
+ backgroundImage:
512
+ "repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(255,255,255,0.03) 2px, rgba(255,255,255,0.03) 4px)",
513
+ }}
514
+ />
515
+ </Box>
516
+ </>
517
+ )}
518
+
519
+ {/* PIP YouTube Video */}
520
+ <Box className="absolute inset-0 overflow-hidden">
521
+ <Box tag="iframe"
522
+ className={cn(
523
+ "absolute top-0 left-0 w-full h-full object-cover",
524
+ pipSize !== "fullscreen" && "rounded-2xl"
525
+ )}
526
+ style={{ aspectRatio: "16 / 9", pointerEvents: "none" }}
527
+ src={getYouTubeEmbedUrl(true)}
528
+ title="Video PiP"
529
+ frameBorder="0"
530
+ allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
531
+ allowFullScreen
532
+ />
533
+ <Box className="absolute inset-0 z-5" />
534
+ </Box>
535
+
536
+ {/* PIP Controls */}
537
+ <Box
538
+ className={cn(
539
+ "absolute flex items-center gap-2 z-30 transition-opacity duration-300",
540
+ pipSize === "fullscreen"
541
+ ? "bottom-10 right-10"
542
+ : "bottom-3 right-3",
543
+ isPipHovered ? "opacity-100" : "opacity-0"
544
+ )}
545
+ >
546
+ <Box tag="button"
547
+ onClick={toggleMute}
548
+ className="relative p-2.5 bg-black/90 backdrop-blur-md rounded-full hover:bg-black transition-all duration-300 shadow-lg hover:scale-110 border border-white/10"
549
+ title={isMuted ? "Unmute" : "Mute"}
550
+ >
551
+ {isMuted ? (
552
+ <VolumeX style={css('h-4 w-4 text-white')} />
553
+ ) : (
554
+ <Volume2 style={css('h-4 w-4 text-white')} />
555
+ )}
556
+ </Box>
557
+
558
+ <Box tag="button"
559
+ onClick={cyclePipSize}
560
+ className="relative p-2.5 bg-black/90 backdrop-blur-md rounded-full hover:bg-black transition-all duration-300 shadow-lg hover:scale-110 border border-white/10"
561
+ title={
562
+ pipSize === "fullscreen"
563
+ ? "Normal Size"
564
+ : pipSize === "double"
565
+ ? "Fullscreen"
566
+ : "Double Size"
567
+ }
568
+ >
569
+ {pipSize === "fullscreen" ? (
570
+ <Minimize2 style={css('h-4 w-4 text-white')} />
571
+ ) : (
572
+ <Maximize2 style={css('h-4 w-4 text-white')} />
573
+ )}
574
+ </Box>
575
+
576
+ <Box tag="button"
577
+ onClick={closePip}
578
+ className="relative p-2.5 bg-black/90 backdrop-blur-md rounded-full hover:bg-[var(--lux-state-error)] transition-all duration-300 shadow-lg hover:scale-110 border border-white/10"
579
+ title="Close"
580
+ >
581
+ <X style={css('h-4 w-4 text-white')} />
582
+ </Box>
583
+ </Box>
584
+
585
+ {/* PIP Live Indicator */}
586
+ {showLiveIndicator && pipSize !== "fullscreen" && (
587
+ <Box className="absolute top-3 right-3 z-20">
588
+ <Box className="flex items-center gap-2 bg-black/80 backdrop-blur-md px-3 py-1.5 rounded-full border border-white/10">
589
+ <Box className="w-2 h-2 bg-[var(--lux-state-error)] rounded-full animate-pulse shadow-[0_0_10px_rgba(220,38,38,0.8)]" />
590
+ <Box tag="span" className="text-[10px] text-white/80 font-medium tracking-widest uppercase">
591
+ Live
592
+ </Box>
593
+ </Box>
594
+ </Box>
595
+ )}
596
+ </Box>
597
+ </Box>
598
+ )}
599
+ </>
600
+ )
601
+ }
602
+ )
603
+
604
+ YouTubePipPlayer.displayName = "YouTubePipPlayer"
605
+
606
+ export { YouTubePipPlayer, youtubePipPlayerVariants }
package/tokens.css CHANGED
@@ -155,6 +155,9 @@
155
155
  --color-button-hero-fg-hover: var(--lux-n-0);
156
156
  --color-button-hero-bg-selected: var(--lux-paper-06);
157
157
  --color-button-hero-fg-selected: var(--lux-ink-80);
158
+ --color-button-danger-bg: var(--lux-state-error);
159
+ --color-button-danger-bg-hover: #DC2626;
160
+ --color-button-danger-fg: var(--lux-n-0);
158
161
  --color-button-segmented-fg: var(--lux-ink-80);
159
162
  --color-button-icon-bg: var(--lux-ink-04);
160
163
 
@@ -427,7 +430,18 @@
427
430
  --chakra-colors-whiteAlpha-100: var(--color-whiteAlpha-100);
428
431
 
429
432
  /* --- Shadows --- */
433
+ /* The two elevation steps small controls need — a switch thumb, a slider
434
+ handle, a focused pin cell. They were inlined at their LIGHT values in
435
+ three components, so those rendered a barely-visible black shadow on a
436
+ black canvas. A shadow is a theme value like any colour. */
437
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
438
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
430
439
  --shadow-action-bar: 0 4px 4px -4px rgb(0 0 0 / 10%), 0 2px 4px -4px rgb(0 0 0 / 6%);
440
+ /* The lit top edge and dark bottom edge that make a surface read as raised
441
+ glass rather than as a flat panel. */
442
+ --shadow-bezel: inset 0 2px 20px rgba(255, 255, 255, 0.1), inset 0 -2px 20px rgba(0, 0, 0, 0.5);
443
+ /* A soft darkening at the frame's edge, to hold the eye in the middle. */
444
+ --shadow-vignette: inset 0 0 120px 60px rgba(0, 0, 0, 0.8);
431
445
  --shadow-popover: 0px 15px 50px -12px rgba(0, 0, 0, 0.25);
432
446
  --shadow-drawer: 0px 4px 6px -2px rgba(0, 0, 0, 0.05), 0px 10px 15px -3px rgba(0, 0, 0, 0.1);
433
447
 
@@ -561,6 +575,9 @@
561
575
  --color-button-hero-fg-hover: var(--lux-n-900);
562
576
  --color-button-hero-bg-selected: var(--lux-paper-06);
563
577
  --color-button-hero-fg-selected: var(--lux-paper-80);
578
+ --color-button-danger-bg: var(--lux-state-error);
579
+ --color-button-danger-bg-hover: #F87171;
580
+ --color-button-danger-fg: var(--lux-n-900);
564
581
  --color-button-segmented-fg: var(--lux-paper-80);
565
582
  --color-button-icon-bg: var(--lux-paper-04);
566
583
 
@@ -692,6 +709,11 @@
692
709
  --color-graph-line: var(--lux-paper-48);
693
710
  --color-graph-gradient-start: rgba(255, 255, 255, 0.15);
694
711
  --color-graph-gradient-stop: rgba(255, 255, 255, 0);
712
+ /* On a dark canvas a 5%-black shadow is invisible, so the small steps carry
713
+ a hairline rim as well as depth — the rim is what actually separates a
714
+ control from the surface behind it. */
715
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(255, 255, 255, 0.06);
716
+ --shadow-md: 0 4px 8px -1px rgba(0, 0, 0, 0.7), 0 0 0 1px rgba(255, 255, 255, 0.08);
695
717
  --shadow-drawer: 0px 15px 40px 0px rgba(0, 0, 0, 0.4), 0px 5px 10px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 1px rgba(0, 0, 0, 0.1);
696
718
 
697
719
  /* --- Skeleton --- */
@@ -1,41 +0,0 @@
1
- import { Accordion } from '@hanzo/gui';
2
- import * as React from 'react';
3
-
4
- interface AccordionRootProps extends Omit<React.ComponentProps<typeof Accordion>, 'type' | 'value' | 'defaultValue' | 'onValueChange' | 'size'> {
5
- /** Controlled open items. */
6
- readonly value?: Array<string>;
7
- /** Uncontrolled initial open items. */
8
- readonly defaultValue?: Array<string>;
9
- /** Fires with the full set of open items. */
10
- readonly onValueChange?: (details: {
11
- value: Array<string>;
12
- }) => void;
13
- readonly variant?: 'outline' | 'faq';
14
- readonly size?: 'sm' | 'md';
15
- }
16
- declare const AccordionRoot: ({ value, defaultValue, onValueChange, variant, size, children, ...rest }: AccordionRootProps) => React.ReactElement;
17
- type AccordionItemProps = React.ComponentProps<typeof Accordion.Item>;
18
- declare const AccordionItem: (props: AccordionItemProps) => React.ReactElement;
19
- type AccordionItemTriggerProps = React.ComponentProps<typeof Accordion.Trigger> & {
20
- readonly indicatorPlacement?: 'start' | 'end';
21
- readonly noIndicator?: boolean;
22
- readonly variant?: 'outline' | 'faq';
23
- readonly headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;
24
- /** The DOM button type — see (3) above. Defaults to `button`, not submit. */
25
- readonly type?: 'button' | 'submit' | 'reset';
26
- };
27
- declare const AccordionItemTrigger: ({ children, indicatorPlacement: placementProp, variant: variantProp, noIndicator, headingLevel, ...rest }: AccordionItemTriggerProps) => React.ReactElement;
28
- type AccordionItemContentProps = React.ComponentProps<typeof Accordion.Content>;
29
- declare const AccordionItemContent: ({ children, ...rest }: AccordionItemContentProps) => React.ReactElement;
30
- /** Open state for an accordion whose items are addressable by URL fragment. */
31
- declare function useAccordion(items: Array<{
32
- id: string;
33
- }>): {
34
- value: string[];
35
- onValueChange: ({ value: next }: {
36
- value: Array<string>;
37
- }) => void;
38
- scrollToItemFromUrl: () => void;
39
- };
40
-
41
- export { AccordionItem, AccordionItemContent, type AccordionItemContentProps, type AccordionItemProps, AccordionItemTrigger, type AccordionItemTriggerProps, AccordionRoot, type AccordionRootProps, useAccordion };