@luxfi/ui 8.0.0 → 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 (744) hide show
  1. package/dist/3d-button.cjs +298 -0
  2. package/dist/3d-button.d.ts +52 -0
  3. package/dist/3d-button.d.ts.map +1 -0
  4. package/dist/3d-button.js +273 -0
  5. package/dist/3d-card.cjs +236 -0
  6. package/dist/3d-card.d.ts +29 -0
  7. package/dist/3d-card.d.ts.map +1 -0
  8. package/dist/3d-card.js +209 -0
  9. package/dist/3d-carousel.cjs +375 -0
  10. package/dist/3d-carousel.d.ts +26 -0
  11. package/dist/3d-carousel.d.ts.map +1 -0
  12. package/dist/3d-carousel.js +348 -0
  13. package/dist/3d-grid.cjs +360 -0
  14. package/dist/3d-grid.d.ts +49 -0
  15. package/dist/3d-grid.d.ts.map +1 -0
  16. package/dist/3d-grid.js +335 -0
  17. package/dist/3d-marquee.cjs +8669 -0
  18. package/dist/3d-marquee.d.ts +65 -0
  19. package/dist/3d-marquee.d.ts.map +1 -0
  20. package/dist/3d-marquee.js +8645 -0
  21. package/dist/3d-model-viewer.cjs +909 -0
  22. package/dist/3d-model-viewer.d.ts +45 -0
  23. package/dist/3d-model-viewer.d.ts.map +1 -0
  24. package/dist/3d-model-viewer.js +886 -0
  25. package/dist/3d-pin.cjs +46 -0
  26. package/dist/3d-pin.d.ts +8 -0
  27. package/dist/3d-pin.d.ts.map +1 -0
  28. package/dist/3d-pin.js +24 -0
  29. package/dist/3d-scene.cjs +439 -0
  30. package/dist/3d-scene.d.ts +76 -0
  31. package/dist/3d-scene.d.ts.map +1 -0
  32. package/dist/3d-scene.js +407 -0
  33. package/dist/3d-text.cjs +367 -0
  34. package/dist/3d-text.d.ts +62 -0
  35. package/dist/3d-text.d.ts.map +1 -0
  36. package/dist/3d-text.js +341 -0
  37. package/dist/advanced-chart.cjs +53 -0
  38. package/dist/advanced-chart.d.ts +6 -0
  39. package/dist/advanced-chart.d.ts.map +1 -0
  40. package/dist/advanced-chart.js +51 -0
  41. package/dist/advanced-navigation-bar.cjs +459 -0
  42. package/dist/advanced-navigation-bar.d.ts +14 -0
  43. package/dist/advanced-navigation-bar.d.ts.map +1 -0
  44. package/dist/advanced-navigation-bar.js +437 -0
  45. package/dist/ai-actions.cjs +57 -0
  46. package/dist/ai-actions.d.ts +14 -0
  47. package/dist/ai-actions.d.ts.map +1 -0
  48. package/dist/ai-actions.js +35 -0
  49. package/dist/ai-agents.cjs +1764 -0
  50. package/dist/ai-agents.d.ts +56 -0
  51. package/dist/ai-agents.d.ts.map +1 -0
  52. package/dist/ai-agents.js +1740 -0
  53. package/dist/ai-assistant.cjs +907 -0
  54. package/dist/ai-assistant.d.ts +28 -0
  55. package/dist/ai-assistant.d.ts.map +1 -0
  56. package/dist/ai-assistant.js +886 -0
  57. package/dist/ai-chat.cjs +1165 -0
  58. package/dist/ai-chat.d.ts +56 -0
  59. package/dist/ai-chat.d.ts.map +1 -0
  60. package/dist/ai-chat.js +1141 -0
  61. package/dist/ai-code.cjs +1866 -0
  62. package/dist/ai-code.d.ts +58 -0
  63. package/dist/ai-code.d.ts.map +1 -0
  64. package/dist/ai-code.js +1841 -0
  65. package/dist/ai-model-selector-navigation-bar.cjs +59 -0
  66. package/dist/ai-model-selector-navigation-bar.d.ts +15 -0
  67. package/dist/ai-model-selector-navigation-bar.d.ts.map +1 -0
  68. package/dist/ai-model-selector-navigation-bar.js +37 -0
  69. package/dist/ai-models.cjs +41 -0
  70. package/dist/ai-models.d.ts +15 -0
  71. package/dist/ai-models.d.ts.map +1 -0
  72. package/dist/ai-models.js +19 -0
  73. package/dist/ai-playground.cjs +1110 -0
  74. package/dist/ai-playground.d.ts +66 -0
  75. package/dist/ai-playground.d.ts.map +1 -0
  76. package/dist/ai-playground.js +1088 -0
  77. package/dist/ai-tools.cjs +1043 -0
  78. package/dist/ai-tools.d.ts +23 -0
  79. package/dist/ai-tools.d.ts.map +1 -0
  80. package/dist/ai-tools.js +1022 -0
  81. package/dist/ai-vision.cjs +1831 -0
  82. package/dist/ai-vision.d.ts +74 -0
  83. package/dist/ai-vision.d.ts.map +1 -0
  84. package/dist/ai-vision.js +1810 -0
  85. package/dist/ai-voice-settings.cjs +1511 -0
  86. package/dist/ai-voice-settings.d.ts +100 -0
  87. package/dist/ai-voice-settings.d.ts.map +1 -0
  88. package/dist/ai-voice-settings.js +1478 -0
  89. package/dist/ai-voice.cjs +1522 -0
  90. package/dist/ai-voice.d.ts +72 -0
  91. package/dist/ai-voice.d.ts.map +1 -0
  92. package/dist/ai-voice.js +1501 -0
  93. package/dist/alert.cjs +13 -142
  94. package/dist/alert.js +14 -143
  95. package/dist/android.cjs +127 -0
  96. package/dist/android.d.ts +19 -0
  97. package/dist/android.d.ts.map +1 -0
  98. package/dist/android.js +104 -0
  99. package/dist/animated-background.cjs +8830 -0
  100. package/dist/animated-background.d.ts +103 -0
  101. package/dist/animated-background.d.ts.map +1 -0
  102. package/dist/animated-background.js +8824 -0
  103. package/dist/animated-beam.cjs +8438 -0
  104. package/dist/animated-beam.d.ts +15 -0
  105. package/dist/animated-beam.d.ts.map +1 -0
  106. package/dist/animated-beam.js +8417 -0
  107. package/dist/animated-cursor.cjs +269 -0
  108. package/dist/animated-cursor.d.ts +70 -0
  109. package/dist/animated-cursor.d.ts.map +1 -0
  110. package/dist/animated-cursor.js +264 -0
  111. package/dist/animated-icon.cjs +8927 -0
  112. package/dist/animated-icon.d.ts +119 -0
  113. package/dist/animated-icon.d.ts.map +1 -0
  114. package/dist/animated-icon.js +8902 -0
  115. package/dist/animated-list.cjs +9226 -0
  116. package/dist/animated-list.d.ts +126 -0
  117. package/dist/animated-list.d.ts.map +1 -0
  118. package/dist/animated-list.js +9201 -0
  119. package/dist/animated-number.cjs +8773 -0
  120. package/dist/animated-number.d.ts +127 -0
  121. package/dist/animated-number.d.ts.map +1 -0
  122. package/dist/animated-number.js +8767 -0
  123. package/dist/animated-testimonials.cjs +8653 -0
  124. package/dist/animated-testimonials.d.ts +17 -0
  125. package/dist/animated-testimonials.d.ts.map +1 -0
  126. package/dist/animated-testimonials.js +8632 -0
  127. package/dist/animated-text.cjs +8914 -0
  128. package/dist/animated-text.d.ts +65 -0
  129. package/dist/animated-text.d.ts.map +1 -0
  130. package/dist/animated-text.js +8890 -0
  131. package/dist/animated-tooltip.cjs +8624 -0
  132. package/dist/animated-tooltip.d.ts +9 -0
  133. package/dist/animated-tooltip.d.ts.map +1 -0
  134. package/dist/animated-tooltip.js +8603 -0
  135. package/dist/announcement.cjs +465 -0
  136. package/dist/announcement.d.ts +9 -0
  137. package/dist/announcement.d.ts.map +1 -0
  138. package/dist/announcement.js +443 -0
  139. package/dist/app-switcher-navigation-bar.cjs +470 -0
  140. package/dist/app-switcher-navigation-bar.d.ts +15 -0
  141. package/dist/app-switcher-navigation-bar.d.ts.map +1 -0
  142. package/dist/app-switcher-navigation-bar.js +448 -0
  143. package/dist/apple-cards-carousel.cjs +9356 -0
  144. package/dist/apple-cards-carousel.d.ts +36 -0
  145. package/dist/apple-cards-carousel.d.ts.map +1 -0
  146. package/dist/apple-cards-carousel.js +9334 -0
  147. package/dist/apple-hello-effect.cjs +8380 -0
  148. package/dist/apple-hello-effect.d.ts +8 -0
  149. package/dist/apple-hello-effect.d.ts.map +1 -0
  150. package/dist/apple-hello-effect.js +8359 -0
  151. package/dist/auth.cjs +6 -5
  152. package/dist/auth.d.ts.map +1 -1
  153. package/dist/auth.js +6 -5
  154. package/dist/badge.cjs +28 -164
  155. package/dist/badge.d.ts +2 -5
  156. package/dist/badge.d.ts.map +1 -1
  157. package/dist/badge.js +29 -165
  158. package/dist/bank.d.ts +6 -6
  159. package/dist/banner.cjs +78 -0
  160. package/dist/banner.d.ts +20 -0
  161. package/dist/banner.d.ts.map +1 -0
  162. package/dist/banner.js +55 -0
  163. package/dist/breadcrumb-and-filters-navigation-bar.cjs +51 -0
  164. package/dist/breadcrumb-and-filters-navigation-bar.d.ts +10 -0
  165. package/dist/breadcrumb-and-filters-navigation-bar.d.ts.map +1 -0
  166. package/dist/breadcrumb-and-filters-navigation-bar.js +29 -0
  167. package/dist/breadcrumb-navigation-bar.cjs +37 -0
  168. package/dist/breadcrumb-navigation-bar.d.ts +10 -0
  169. package/dist/breadcrumb-navigation-bar.d.ts.map +1 -0
  170. package/dist/breadcrumb-navigation-bar.js +15 -0
  171. package/dist/button.cjs +21 -150
  172. package/dist/button.d.ts +1 -1
  173. package/dist/button.d.ts.map +1 -1
  174. package/dist/button.js +21 -150
  175. package/dist/calendar.cjs +55 -0
  176. package/dist/calendar.d.ts +9 -0
  177. package/dist/calendar.d.ts.map +1 -0
  178. package/dist/calendar.js +53 -0
  179. package/dist/centered-logo-navigation-bar.cjs +37 -0
  180. package/dist/centered-logo-navigation-bar.d.ts +15 -0
  181. package/dist/centered-logo-navigation-bar.d.ts.map +1 -0
  182. package/dist/centered-logo-navigation-bar.js +15 -0
  183. package/dist/chart.cjs +266 -0
  184. package/dist/chart.d.ts +52 -0
  185. package/dist/chart.d.ts.map +1 -0
  186. package/dist/chart.js +238 -0
  187. package/dist/choicebox.cjs +77 -0
  188. package/dist/choicebox.d.ts +15 -0
  189. package/dist/choicebox.d.ts.map +1 -0
  190. package/dist/choicebox.js +55 -0
  191. package/dist/chrome.cjs +36 -30
  192. package/dist/chrome.d.ts.map +1 -1
  193. package/dist/chrome.js +37 -31
  194. package/dist/code-block.cjs +871 -0
  195. package/dist/code-block.d.ts +38 -0
  196. package/dist/code-block.d.ts.map +1 -0
  197. package/dist/code-block.js +849 -0
  198. package/dist/code-compare.cjs +1714 -0
  199. package/dist/code-compare.d.ts +46 -0
  200. package/dist/code-compare.d.ts.map +1 -0
  201. package/dist/code-compare.js +1692 -0
  202. package/dist/code-diff.cjs +1073 -0
  203. package/dist/code-diff.d.ts +42 -0
  204. package/dist/code-diff.d.ts.map +1 -0
  205. package/dist/code-diff.js +1051 -0
  206. package/dist/code-editor.cjs +641 -0
  207. package/dist/code-editor.d.ts +23 -0
  208. package/dist/code-editor.d.ts.map +1 -0
  209. package/dist/code-editor.js +616 -0
  210. package/dist/code-explorer.cjs +729 -0
  211. package/dist/code-explorer.d.ts +41 -0
  212. package/dist/code-explorer.d.ts.map +1 -0
  213. package/dist/code-explorer.js +707 -0
  214. package/dist/code-preview.cjs +1349 -0
  215. package/dist/code-preview.d.ts +38 -0
  216. package/dist/code-preview.d.ts.map +1 -0
  217. package/dist/code-preview.js +1327 -0
  218. package/dist/code-snippet.cjs +920 -0
  219. package/dist/code-snippet.d.ts +48 -0
  220. package/dist/code-snippet.d.ts.map +1 -0
  221. package/dist/code-snippet.js +897 -0
  222. package/dist/code-tabs.cjs +76 -0
  223. package/dist/code-tabs.d.ts +12 -0
  224. package/dist/code-tabs.d.ts.map +1 -0
  225. package/dist/code-tabs.js +54 -0
  226. package/dist/code-terminal.cjs +894 -0
  227. package/dist/code-terminal.d.ts +48 -0
  228. package/dist/code-terminal.d.ts.map +1 -0
  229. package/dist/code-terminal.js +872 -0
  230. package/dist/collaboration-navigation-bar.cjs +49 -0
  231. package/dist/collaboration-navigation-bar.d.ts +11 -0
  232. package/dist/collaboration-navigation-bar.d.ts.map +1 -0
  233. package/dist/collaboration-navigation-bar.js +27 -0
  234. package/dist/collapsible.cjs +34 -155
  235. package/dist/collapsible.d.ts.map +1 -1
  236. package/dist/collapsible.js +34 -155
  237. package/dist/color-picker.cjs +516 -0
  238. package/dist/color-picker.d.ts +10 -0
  239. package/dist/color-picker.d.ts.map +1 -0
  240. package/dist/color-picker.js +495 -0
  241. package/dist/combobox.cjs +488 -0
  242. package/dist/combobox.d.ts +13 -0
  243. package/dist/combobox.d.ts.map +1 -0
  244. package/dist/combobox.js +466 -0
  245. package/dist/communication-navigation-bar.cjs +438 -0
  246. package/dist/communication-navigation-bar.d.ts +7 -0
  247. package/dist/communication-navigation-bar.d.ts.map +1 -0
  248. package/dist/communication-navigation-bar.js +416 -0
  249. package/dist/company-profile.cjs +46 -0
  250. package/dist/company-profile.d.ts +10 -0
  251. package/dist/company-profile.d.ts.map +1 -0
  252. package/dist/company-profile.js +44 -0
  253. package/dist/comparison.cjs +60 -0
  254. package/dist/comparison.d.ts +16 -0
  255. package/dist/comparison.d.ts.map +1 -0
  256. package/dist/comparison.js +38 -0
  257. package/dist/context-switcher-navigation-bar.cjs +51 -0
  258. package/dist/context-switcher-navigation-bar.d.ts +10 -0
  259. package/dist/context-switcher-navigation-bar.d.ts.map +1 -0
  260. package/dist/context-switcher-navigation-bar.js +29 -0
  261. package/dist/credit-card.cjs +77 -0
  262. package/dist/credit-card.d.ts +11 -0
  263. package/dist/credit-card.d.ts.map +1 -0
  264. package/dist/credit-card.js +55 -0
  265. package/dist/crypto-screener.cjs +43 -0
  266. package/dist/crypto-screener.d.ts +4 -0
  267. package/dist/crypto-screener.d.ts.map +1 -0
  268. package/dist/crypto-screener.js +41 -0
  269. package/dist/cursor.cjs +71 -0
  270. package/dist/cursor.d.ts +9 -0
  271. package/dist/cursor.d.ts.map +1 -0
  272. package/dist/cursor.js +49 -0
  273. package/dist/dashboard-navigation-bar.cjs +441 -0
  274. package/dist/dashboard-navigation-bar.d.ts +11 -0
  275. package/dist/dashboard-navigation-bar.d.ts.map +1 -0
  276. package/dist/dashboard-navigation-bar.js +419 -0
  277. package/dist/dialog-stack.cjs +460 -0
  278. package/dist/dialog-stack.d.ts +13 -0
  279. package/dist/dialog-stack.d.ts.map +1 -0
  280. package/dist/dialog-stack.js +438 -0
  281. package/dist/dialog.cjs +12 -11
  282. package/dist/dialog.d.ts +1 -1
  283. package/dist/dialog.d.ts.map +1 -1
  284. package/dist/dialog.js +12 -11
  285. package/dist/direction.cjs +26 -0
  286. package/dist/direction.d.ts +20 -0
  287. package/dist/direction.d.ts.map +1 -0
  288. package/dist/direction.js +23 -0
  289. package/dist/dock.cjs +8675 -0
  290. package/dist/dock.d.ts +20 -0
  291. package/dist/dock.d.ts.map +1 -0
  292. package/dist/dock.js +8653 -0
  293. package/dist/dropzone.cjs +116 -0
  294. package/dist/dropzone.d.ts +11 -0
  295. package/dist/dropzone.d.ts.map +1 -0
  296. package/dist/dropzone.js +94 -0
  297. package/dist/e-commerce-navigation-bar.cjs +442 -0
  298. package/dist/e-commerce-navigation-bar.d.ts +12 -0
  299. package/dist/e-commerce-navigation-bar.d.ts.map +1 -0
  300. package/dist/e-commerce-navigation-bar.js +420 -0
  301. package/dist/editor.cjs +497 -0
  302. package/dist/editor.d.ts +9 -0
  303. package/dist/editor.d.ts.map +1 -0
  304. package/dist/editor.js +475 -0
  305. package/dist/empty.cjs +117 -0
  306. package/dist/empty.d.ts +18 -0
  307. package/dist/empty.d.ts.map +1 -0
  308. package/dist/empty.js +110 -0
  309. package/dist/engine.cjs +91 -0
  310. package/dist/engine.js +86 -0
  311. package/dist/field.cjs +2 -1
  312. package/dist/field.d.ts.map +1 -1
  313. package/dist/field.js +3 -2
  314. package/dist/financials.cjs +66 -0
  315. package/dist/financials.d.ts +12 -0
  316. package/dist/financials.d.ts.map +1 -0
  317. package/dist/financials.js +64 -0
  318. package/dist/forex-screener.cjs +44 -0
  319. package/dist/forex-screener.d.ts +4 -0
  320. package/dist/forex-screener.d.ts.map +1 -0
  321. package/dist/forex-screener.js +42 -0
  322. package/dist/gantt.cjs +65 -0
  323. package/dist/gantt.d.ts +13 -0
  324. package/dist/gantt.d.ts.map +1 -0
  325. package/dist/gantt.js +43 -0
  326. package/dist/grid-pattern.cjs +327 -0
  327. package/dist/grid-pattern.d.ts +111 -0
  328. package/dist/grid-pattern.d.ts.map +1 -0
  329. package/dist/grid-pattern.js +304 -0
  330. package/dist/hooks/use-mobile.d.ts +3 -0
  331. package/dist/hooks/use-mobile.d.ts.map +1 -0
  332. package/dist/icon-button.cjs +13 -142
  333. package/dist/icon-button.js +14 -143
  334. package/dist/icon-navigation-bar.cjs +48 -0
  335. package/dist/icon-navigation-bar.d.ts +11 -0
  336. package/dist/icon-navigation-bar.d.ts.map +1 -0
  337. package/dist/icon-navigation-bar.js +26 -0
  338. package/dist/image-crop.cjs +482 -0
  339. package/dist/image-crop.d.ts +9 -0
  340. package/dist/image-crop.d.ts.map +1 -0
  341. package/dist/image-crop.js +460 -0
  342. package/dist/image-zoom.cjs +77 -0
  343. package/dist/image-zoom.d.ts +7 -0
  344. package/dist/image-zoom.d.ts.map +1 -0
  345. package/dist/image-zoom.js +55 -0
  346. package/dist/image.cjs +15 -143
  347. package/dist/image.d.ts.map +1 -1
  348. package/dist/image.js +16 -144
  349. package/dist/index.cjs +30274 -1201
  350. package/dist/index.d.ts +121 -0
  351. package/dist/index.d.ts.map +1 -1
  352. package/dist/index.js +30006 -1220
  353. package/dist/ink.cjs +17 -0
  354. package/dist/ink.js +15 -0
  355. package/dist/input-otp.cjs +72 -0
  356. package/dist/input-otp.d.ts +35 -0
  357. package/dist/input-otp.d.ts.map +1 -0
  358. package/dist/input-otp.js +47 -0
  359. package/dist/iphone-15-pro.cjs +61 -0
  360. package/dist/iphone-15-pro.d.ts +9 -0
  361. package/dist/iphone-15-pro.d.ts.map +1 -0
  362. package/dist/iphone-15-pro.js +39 -0
  363. package/dist/item.cjs +215 -0
  364. package/dist/item.d.ts +41 -0
  365. package/dist/item.d.ts.map +1 -0
  366. package/dist/item.js +200 -0
  367. package/dist/kanban.cjs +1354 -0
  368. package/dist/kanban.d.ts +36 -0
  369. package/dist/kanban.d.ts.map +1 -0
  370. package/dist/kanban.js +1330 -0
  371. package/dist/kbd.cjs +40 -0
  372. package/dist/kbd.d.ts +4 -0
  373. package/dist/kbd.d.ts.map +1 -0
  374. package/dist/kbd.js +37 -0
  375. package/dist/limelight-nav-navigation-bar.cjs +51 -0
  376. package/dist/limelight-nav-navigation-bar.d.ts +10 -0
  377. package/dist/limelight-nav-navigation-bar.d.ts.map +1 -0
  378. package/dist/limelight-nav-navigation-bar.js +29 -0
  379. package/dist/limelight-nav.cjs +570 -0
  380. package/dist/limelight-nav.d.ts +10 -0
  381. package/dist/limelight-nav.d.ts.map +1 -0
  382. package/dist/limelight-nav.js +549 -0
  383. package/dist/link.cjs +29 -152
  384. package/dist/link.js +30 -153
  385. package/dist/list.cjs +35 -0
  386. package/dist/list.d.ts +5 -0
  387. package/dist/list.d.ts.map +1 -0
  388. package/dist/list.js +12 -0
  389. package/dist/magnetic.cjs +63 -0
  390. package/dist/magnetic.d.ts +8 -0
  391. package/dist/magnetic.d.ts.map +1 -0
  392. package/dist/magnetic.js +41 -0
  393. package/dist/market-overview.cjs +102 -0
  394. package/dist/market-overview.d.ts +4 -0
  395. package/dist/market-overview.d.ts.map +1 -0
  396. package/dist/market-overview.js +100 -0
  397. package/dist/marquee.cjs +67 -0
  398. package/dist/marquee.d.ts +10 -0
  399. package/dist/marquee.d.ts.map +1 -0
  400. package/dist/marquee.js +45 -0
  401. package/dist/menu-dock.cjs +64 -0
  402. package/dist/menu-dock.d.ts +14 -0
  403. package/dist/menu-dock.d.ts.map +1 -0
  404. package/dist/menu-dock.js +42 -0
  405. package/dist/menubar.cjs +116 -0
  406. package/dist/menubar.d.ts +30 -0
  407. package/dist/menubar.d.ts.map +1 -0
  408. package/dist/menubar.js +61 -0
  409. package/dist/message-dock.cjs +480 -0
  410. package/dist/message-dock.d.ts +15 -0
  411. package/dist/message-dock.d.ts.map +1 -0
  412. package/dist/message-dock.js +458 -0
  413. package/dist/mini-calendar.cjs +505 -0
  414. package/dist/mini-calendar.d.ts +10 -0
  415. package/dist/mini-calendar.d.ts.map +1 -0
  416. package/dist/mini-calendar.js +483 -0
  417. package/dist/minimal-tiptap.cjs +48 -0
  418. package/dist/minimal-tiptap.d.ts +8 -0
  419. package/dist/minimal-tiptap.d.ts.map +1 -0
  420. package/dist/minimal-tiptap.js +26 -0
  421. package/dist/motion-highlight.cjs +71 -0
  422. package/dist/motion-highlight.d.ts +7 -0
  423. package/dist/motion-highlight.d.ts.map +1 -0
  424. package/dist/motion-highlight.js +49 -0
  425. package/dist/music-player.cjs +810 -0
  426. package/dist/music-player.d.ts +18 -0
  427. package/dist/music-player.d.ts.map +1 -0
  428. package/dist/music-player.js +788 -0
  429. package/dist/native-select.cjs +82 -0
  430. package/dist/native-select.d.ts +9 -0
  431. package/dist/native-select.d.ts.map +1 -0
  432. package/dist/native-select.js +58 -0
  433. package/dist/news-timeline.cjs +42 -0
  434. package/dist/news-timeline.d.ts +4 -0
  435. package/dist/news-timeline.d.ts.map +1 -0
  436. package/dist/news-timeline.js +40 -0
  437. package/dist/order-entry.cjs +141 -0
  438. package/dist/order-entry.d.ts +15 -0
  439. package/dist/order-entry.d.ts.map +1 -0
  440. package/dist/order-entry.js +136 -0
  441. package/dist/orders-history.cjs +83 -0
  442. package/dist/orders-history.d.ts +18 -0
  443. package/dist/orders-history.d.ts.map +1 -0
  444. package/dist/orders-history.js +78 -0
  445. package/dist/pagination.cjs +132 -0
  446. package/dist/pagination.d.ts +29 -0
  447. package/dist/pagination.d.ts.map +1 -0
  448. package/dist/pagination.js +104 -0
  449. package/dist/particles-background.cjs +159 -0
  450. package/dist/particles-background.d.ts +18 -0
  451. package/dist/particles-background.d.ts.map +1 -0
  452. package/dist/particles-background.js +157 -0
  453. package/dist/pill.cjs +80 -0
  454. package/dist/pill.d.ts +21 -0
  455. package/dist/pill.d.ts.map +1 -0
  456. package/dist/pill.js +57 -0
  457. package/dist/pixel-image.cjs +71 -0
  458. package/dist/pixel-image.d.ts +8 -0
  459. package/dist/pixel-image.d.ts.map +1 -0
  460. package/dist/pixel-image.js +49 -0
  461. package/dist/popover.cjs +11 -9
  462. package/dist/popover.d.ts.map +1 -1
  463. package/dist/popover.js +11 -9
  464. package/dist/positions-list.cjs +98 -0
  465. package/dist/positions-list.d.ts +13 -0
  466. package/dist/positions-list.d.ts.map +1 -0
  467. package/dist/positions-list.js +93 -0
  468. package/dist/progress-circle.cjs +2 -1
  469. package/dist/progress-circle.d.ts.map +1 -1
  470. package/dist/progress-circle.js +2 -1
  471. package/dist/pulse-animation.cjs +8741 -0
  472. package/dist/pulse-animation.d.ts +155 -0
  473. package/dist/pulse-animation.d.ts.map +1 -0
  474. package/dist/pulse-animation.js +8732 -0
  475. package/dist/qr-code.cjs +65 -0
  476. package/dist/qr-code.d.ts +21 -0
  477. package/dist/qr-code.d.ts.map +1 -0
  478. package/dist/qr-code.js +43 -0
  479. package/dist/relative-time.cjs +88 -0
  480. package/dist/relative-time.d.ts +9 -0
  481. package/dist/relative-time.d.ts.map +1 -0
  482. package/dist/relative-time.js +66 -0
  483. package/dist/resizable.cjs +61 -0
  484. package/dist/resizable.d.ts +24 -0
  485. package/dist/resizable.d.ts.map +1 -0
  486. package/dist/resizable.js +37 -0
  487. package/dist/reveal-animation.cjs +8791 -0
  488. package/dist/reveal-animation.d.ts +134 -0
  489. package/dist/reveal-animation.d.ts.map +1 -0
  490. package/dist/reveal-animation.js +8779 -0
  491. package/dist/safari.cjs +90 -0
  492. package/dist/safari.d.ts +9 -0
  493. package/dist/safari.d.ts.map +1 -0
  494. package/dist/safari.js +68 -0
  495. package/dist/sandbox.cjs +94 -0
  496. package/dist/sandbox.d.ts +9 -0
  497. package/dist/sandbox.d.ts.map +1 -0
  498. package/dist/sandbox.js +72 -0
  499. package/dist/search-and-toggle-navigation-bar.cjs +51 -0
  500. package/dist/search-and-toggle-navigation-bar.d.ts +10 -0
  501. package/dist/search-and-toggle-navigation-bar.d.ts.map +1 -0
  502. package/dist/search-and-toggle-navigation-bar.js +29 -0
  503. package/dist/select.cjs +34 -160
  504. package/dist/select.d.ts.map +1 -1
  505. package/dist/select.js +34 -160
  506. package/dist/sidebar.cjs +1134 -0
  507. package/dist/sidebar.d.ts +80 -0
  508. package/dist/sidebar.d.ts.map +1 -0
  509. package/dist/sidebar.js +1090 -0
  510. package/dist/simple-navigation-bar.cjs +45 -0
  511. package/dist/simple-navigation-bar.d.ts +11 -0
  512. package/dist/simple-navigation-bar.d.ts.map +1 -0
  513. package/dist/simple-navigation-bar.js +23 -0
  514. package/dist/skeleton.cjs +14 -143
  515. package/dist/skeleton.d.ts +2 -41
  516. package/dist/skeleton.d.ts.map +1 -1
  517. package/dist/skeleton.js +15 -144
  518. package/dist/slider.d.ts +1 -0
  519. package/dist/slider.d.ts.map +1 -1
  520. package/dist/status-dashboard-navigation-bar.cjs +51 -0
  521. package/dist/status-dashboard-navigation-bar.d.ts +10 -0
  522. package/dist/status-dashboard-navigation-bar.d.ts.map +1 -0
  523. package/dist/status-dashboard-navigation-bar.js +29 -0
  524. package/dist/status.cjs +85 -0
  525. package/dist/status.d.ts +23 -0
  526. package/dist/status.d.ts.map +1 -0
  527. package/dist/status.js +62 -0
  528. package/dist/stock-screener.cjs +44 -0
  529. package/dist/stock-screener.d.ts +4 -0
  530. package/dist/stock-screener.d.ts.map +1 -0
  531. package/dist/stock-screener.js +42 -0
  532. package/dist/switch.cjs +1 -1
  533. package/dist/switch.d.ts +1 -3
  534. package/dist/switch.d.ts.map +1 -1
  535. package/dist/switch.js +1 -1
  536. package/dist/symbol-info.cjs +44 -0
  537. package/dist/symbol-info.d.ts +9 -0
  538. package/dist/symbol-info.d.ts.map +1 -0
  539. package/dist/symbol-info.js +42 -0
  540. package/dist/table.cjs +53 -167
  541. package/dist/table.d.ts.map +1 -1
  542. package/dist/table.js +53 -167
  543. package/dist/tag.cjs +13 -142
  544. package/dist/tag.js +14 -143
  545. package/dist/tags.cjs +385 -0
  546. package/dist/tags.d.ts +13 -0
  547. package/dist/tags.d.ts.map +1 -0
  548. package/dist/tags.js +364 -0
  549. package/dist/team-switcher-navigation-bar.cjs +51 -0
  550. package/dist/team-switcher-navigation-bar.d.ts +10 -0
  551. package/dist/team-switcher-navigation-bar.d.ts.map +1 -0
  552. package/dist/team-switcher-navigation-bar.js +29 -0
  553. package/dist/technical-analysis.cjs +69 -0
  554. package/dist/technical-analysis.d.ts +13 -0
  555. package/dist/technical-analysis.d.ts.map +1 -0
  556. package/dist/technical-analysis.js +67 -0
  557. package/dist/terminal.cjs +372 -0
  558. package/dist/terminal.d.ts +21 -0
  559. package/dist/terminal.d.ts.map +1 -0
  560. package/dist/terminal.js +350 -0
  561. package/dist/ticker-tape.cjs +54 -0
  562. package/dist/ticker-tape.d.ts +4 -0
  563. package/dist/ticker-tape.d.ts.map +1 -0
  564. package/dist/ticker-tape.js +52 -0
  565. package/dist/ticker.cjs +66 -0
  566. package/dist/ticker.d.ts +10 -0
  567. package/dist/ticker.d.ts.map +1 -0
  568. package/dist/ticker.js +44 -0
  569. package/dist/timeline.cjs +317 -0
  570. package/dist/timeline.d.ts +20 -0
  571. package/dist/timeline.d.ts.map +1 -0
  572. package/dist/timeline.js +295 -0
  573. package/dist/toggle.cjs +62 -0
  574. package/dist/toggle.d.ts +26 -0
  575. package/dist/toggle.d.ts.map +1 -0
  576. package/dist/toggle.js +57 -0
  577. package/dist/trading-panel.cjs +212 -0
  578. package/dist/trading-panel.d.ts +7 -0
  579. package/dist/trading-panel.d.ts.map +1 -0
  580. package/dist/trading-panel.js +207 -0
  581. package/dist/two-tier-navigation-bar.cjs +51 -0
  582. package/dist/two-tier-navigation-bar.d.ts +10 -0
  583. package/dist/two-tier-navigation-bar.d.ts.map +1 -0
  584. package/dist/two-tier-navigation-bar.js +29 -0
  585. package/dist/underline-navigation-bar.cjs +51 -0
  586. package/dist/underline-navigation-bar.d.ts +10 -0
  587. package/dist/underline-navigation-bar.d.ts.map +1 -0
  588. package/dist/underline-navigation-bar.js +29 -0
  589. package/dist/youtube-pip-player.cjs +489 -0
  590. package/dist/youtube-pip-player.d.ts +41 -0
  591. package/dist/youtube-pip-player.d.ts.map +1 -0
  592. package/dist/youtube-pip-player.js +466 -0
  593. package/package.json +755 -54
  594. package/src/3d-button.tsx +346 -0
  595. package/src/3d-card.tsx +271 -0
  596. package/src/3d-carousel.tsx +444 -0
  597. package/src/3d-grid.tsx +448 -0
  598. package/src/3d-marquee.tsx +422 -0
  599. package/src/3d-model-viewer.tsx +659 -0
  600. package/src/3d-pin.tsx +37 -0
  601. package/src/3d-scene.tsx +629 -0
  602. package/src/3d-text.tsx +442 -0
  603. package/src/advanced-chart.tsx +63 -0
  604. package/src/advanced-navigation-bar.tsx +83 -0
  605. package/src/ai-actions.tsx +60 -0
  606. package/src/ai-agents.tsx +1174 -0
  607. package/src/ai-assistant.tsx +227 -0
  608. package/src/ai-chat.tsx +554 -0
  609. package/src/ai-code.tsx +1331 -0
  610. package/src/ai-model-selector-navigation-bar.tsx +78 -0
  611. package/src/ai-models.tsx +58 -0
  612. package/src/ai-playground.tsx +429 -0
  613. package/src/ai-tools.tsx +383 -0
  614. package/src/ai-vision.tsx +1220 -0
  615. package/src/ai-voice-settings.tsx +726 -0
  616. package/src/ai-voice.tsx +735 -0
  617. package/src/android.tsx +92 -0
  618. package/src/animated-background.tsx +625 -0
  619. package/src/animated-beam.tsx +110 -0
  620. package/src/animated-cursor.tsx +406 -0
  621. package/src/animated-icon.tsx +520 -0
  622. package/src/animated-list.tsx +508 -0
  623. package/src/animated-number.tsx +485 -0
  624. package/src/animated-testimonials.tsx +119 -0
  625. package/src/animated-text.tsx +481 -0
  626. package/src/animated-tooltip.tsx +54 -0
  627. package/src/announcement.tsx +55 -0
  628. package/src/app-switcher-navigation-bar.tsx +76 -0
  629. package/src/apple-cards-carousel.tsx +349 -0
  630. package/src/apple-hello-effect.tsx +50 -0
  631. package/src/auth.tsx +9 -8
  632. package/src/avatar.tsx +1 -1
  633. package/src/badge.tsx +27 -30
  634. package/src/banner.tsx +62 -0
  635. package/src/breadcrumb-and-filters-navigation-bar.tsx +40 -0
  636. package/src/breadcrumb-navigation-bar.tsx +43 -0
  637. package/src/button.tsx +10 -9
  638. package/src/calendar.tsx +62 -0
  639. package/src/centered-logo-navigation-bar.tsx +43 -0
  640. package/src/chart.tsx +372 -0
  641. package/src/choicebox.tsx +89 -0
  642. package/src/chrome.tsx +41 -40
  643. package/src/code-block.tsx +278 -0
  644. package/src/code-compare.tsx +551 -0
  645. package/src/code-diff.tsx +573 -0
  646. package/src/code-editor.tsx +250 -0
  647. package/src/code-explorer.tsx +403 -0
  648. package/src/code-preview.tsx +488 -0
  649. package/src/code-snippet.tsx +336 -0
  650. package/src/code-tabs.tsx +78 -0
  651. package/src/code-terminal.tsx +530 -0
  652. package/src/collaboration-navigation-bar.tsx +50 -0
  653. package/src/collapsible.tsx +3 -2
  654. package/src/color-picker.tsx +68 -0
  655. package/src/combobox.tsx +87 -0
  656. package/src/communication-navigation-bar.tsx +42 -0
  657. package/src/company-profile.tsx +67 -0
  658. package/src/comparison.tsx +68 -0
  659. package/src/context-switcher-navigation-bar.tsx +39 -0
  660. package/src/credit-card.tsx +72 -0
  661. package/src/crypto-screener.tsx +57 -0
  662. package/src/cursor.tsx +61 -0
  663. package/src/dashboard-navigation-bar.tsx +49 -0
  664. package/src/dialog-stack.tsx +55 -0
  665. package/src/dialog.tsx +16 -15
  666. package/src/direction.tsx +40 -0
  667. package/src/dock.tsx +172 -0
  668. package/src/dropzone.tsx +106 -0
  669. package/src/e-commerce-navigation-bar.tsx +54 -0
  670. package/src/editor.tsx +85 -0
  671. package/src/empty.tsx +117 -0
  672. package/src/field.tsx +2 -1
  673. package/src/financials.tsx +85 -0
  674. package/src/forex-screener.tsx +58 -0
  675. package/src/gantt.tsx +68 -0
  676. package/src/grid-pattern.tsx +353 -0
  677. package/src/hooks/use-mobile.ts +29 -0
  678. package/src/icon-navigation-bar.tsx +36 -0
  679. package/src/image-crop.tsx +67 -0
  680. package/src/image-zoom.tsx +64 -0
  681. package/src/image.tsx +2 -1
  682. package/src/index.ts +123 -0
  683. package/src/input-otp.tsx +72 -0
  684. package/src/iphone-15-pro.tsx +69 -0
  685. package/src/item.tsx +193 -0
  686. package/src/kanban.tsx +772 -0
  687. package/src/kbd.tsx +32 -0
  688. package/src/limelight-nav-navigation-bar.tsx +39 -0
  689. package/src/limelight-nav.tsx +101 -0
  690. package/src/link.tsx +18 -18
  691. package/src/list.tsx +22 -0
  692. package/src/magnetic.tsx +54 -0
  693. package/src/market-overview.tsx +116 -0
  694. package/src/marquee.tsx +62 -0
  695. package/src/menu-dock.tsx +56 -0
  696. package/src/menubar.tsx +149 -0
  697. package/src/message-dock.tsx +89 -0
  698. package/src/mini-calendar.tsx +121 -0
  699. package/src/minimal-tiptap.tsx +32 -0
  700. package/src/motion-highlight.tsx +55 -0
  701. package/src/music-player.tsx +413 -0
  702. package/src/native-select.tsx +63 -0
  703. package/src/news-timeline.tsx +56 -0
  704. package/src/order-entry.tsx +162 -0
  705. package/src/orders-history.tsx +115 -0
  706. package/src/pagination.tsx +118 -0
  707. package/src/particles-background.tsx +225 -0
  708. package/src/pill.tsx +61 -0
  709. package/src/pixel-image.tsx +64 -0
  710. package/src/popover.tsx +10 -9
  711. package/src/positions-list.tsx +108 -0
  712. package/src/progress-circle.tsx +2 -1
  713. package/src/pulse-animation.tsx +606 -0
  714. package/src/qr-code.tsx +64 -0
  715. package/src/relative-time.tsx +84 -0
  716. package/src/resizable.tsx +46 -0
  717. package/src/reveal-animation.tsx +532 -0
  718. package/src/safari.tsx +115 -0
  719. package/src/sandbox.tsx +83 -0
  720. package/src/search-and-toggle-navigation-bar.tsx +39 -0
  721. package/src/select.tsx +31 -30
  722. package/src/sidebar.tsx +723 -0
  723. package/src/simple-navigation-bar.tsx +39 -0
  724. package/src/skeleton.tsx +20 -168
  725. package/src/slider.tsx +1 -0
  726. package/src/status-dashboard-navigation-bar.tsx +39 -0
  727. package/src/status.tsx +63 -0
  728. package/src/stock-screener.tsx +58 -0
  729. package/src/switch.tsx +2 -2
  730. package/src/symbol-info.tsx +64 -0
  731. package/src/table.tsx +26 -25
  732. package/src/tags.tsx +62 -0
  733. package/src/team-switcher-navigation-bar.tsx +39 -0
  734. package/src/technical-analysis.tsx +99 -0
  735. package/src/terminal.tsx +399 -0
  736. package/src/ticker-tape.tsx +68 -0
  737. package/src/ticker.tsx +52 -0
  738. package/src/timeline.tsx +412 -0
  739. package/src/toggle.tsx +84 -0
  740. package/src/trading-panel.tsx +262 -0
  741. package/src/two-tier-navigation-bar.tsx +39 -0
  742. package/src/underline-navigation-bar.tsx +39 -0
  743. package/src/youtube-pip-player.tsx +606 -0
  744. package/tokens.css +11 -0
@@ -0,0 +1,349 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { Box, css, sx } from '@hanzo/ui'
5
+ import { ChevronLeft, ChevronRight } from "lucide-react"
6
+ import {
7
+ AnimatePresence,
8
+ motion,
9
+ PanInfo,
10
+ useMotionValue,
11
+ useTransform,
12
+ } from "motion/react"
13
+
14
+ import { cn } from "./utils"
15
+
16
+ import { Button } from "./button"
17
+ import { Card } from "@hanzo/ui"
18
+
19
+ export interface CarouselCard {
20
+ id: string
21
+ title: string
22
+ subtitle?: string
23
+ description?: string
24
+ image?: string
25
+ gradient?: string
26
+ content?: React.ReactNode
27
+ }
28
+
29
+ interface AppleCardsCarouselProps {
30
+ cards: CarouselCard[]
31
+ autoPlay?: boolean
32
+ autoPlayInterval?: number
33
+ className?: string
34
+ cardClassName?: string
35
+ showArrows?: boolean
36
+ showDots?: boolean
37
+ parallaxOffset?: number
38
+ stackOffset?: number
39
+ stackScale?: number
40
+ swipeThreshold?: number
41
+ }
42
+
43
+ export function AppleCardsCarousel({
44
+ cards,
45
+ autoPlay = false,
46
+ autoPlayInterval = 5000,
47
+ className,
48
+ cardClassName,
49
+ showArrows = true,
50
+ showDots = true,
51
+ parallaxOffset = 50,
52
+ stackOffset = 10,
53
+ stackScale = 0.95,
54
+ swipeThreshold = 50,
55
+ }: AppleCardsCarouselProps) {
56
+ const [currentIndex, setCurrentIndex] = React.useState(0)
57
+ const [isAutoPlaying, setIsAutoPlaying] = React.useState(autoPlay)
58
+ const containerRef = React.useRef<HTMLDivElement>(null)
59
+ const dragX = useMotionValue(0)
60
+
61
+ // Calculate card positions
62
+ const getCardStyle = (index: number) => {
63
+ const offset = index - currentIndex
64
+ const absOffset = Math.abs(offset)
65
+ const sign = Math.sign(offset)
66
+
67
+ // Only show 3 cards at a time for performance
68
+ if (absOffset > 2) {
69
+ return {
70
+ display: "none",
71
+ x: 0,
72
+ scale: 1,
73
+ opacity: 0,
74
+ zIndex: 0,
75
+ }
76
+ }
77
+
78
+ const baseX = offset * stackOffset
79
+ const scale = Math.pow(stackScale, absOffset)
80
+ const opacity = Math.max(0, 1 - absOffset * 0.3)
81
+ const zIndex = cards.length - absOffset
82
+
83
+ return {
84
+ display: "block",
85
+ x: baseX,
86
+ scale,
87
+ opacity,
88
+ zIndex,
89
+ }
90
+ }
91
+
92
+ // Navigate to next card
93
+ const goToNext = React.useCallback(() => {
94
+ setCurrentIndex((prev) => (prev + 1) % cards.length)
95
+ }, [cards.length])
96
+
97
+ // Navigate to previous card
98
+ const goToPrevious = React.useCallback(() => {
99
+ setCurrentIndex((prev) => (prev - 1 + cards.length) % cards.length)
100
+ }, [cards.length])
101
+
102
+ // Navigate to specific card
103
+ const goToCard = React.useCallback((index: number) => {
104
+ setCurrentIndex(index)
105
+ }, [])
106
+
107
+ // Handle drag end
108
+ const handleDragEnd = React.useCallback(
109
+ (event: MouseEvent | TouchEvent | PointerEvent, info: PanInfo) => {
110
+ const { offset, velocity } = info
111
+
112
+ // Determine if we should navigate based on drag distance and velocity
113
+ if (Math.abs(offset.x) > swipeThreshold || Math.abs(velocity.x) > 500) {
114
+ if (offset.x > 0) {
115
+ goToPrevious()
116
+ } else {
117
+ goToNext()
118
+ }
119
+ }
120
+ },
121
+ [goToNext, goToPrevious, swipeThreshold]
122
+ )
123
+
124
+ // Auto-play functionality
125
+ React.useEffect(() => {
126
+ if (!isAutoPlaying) return
127
+
128
+ const interval = setInterval(goToNext, autoPlayInterval)
129
+
130
+ return () => clearInterval(interval)
131
+ }, [isAutoPlaying, goToNext, autoPlayInterval])
132
+
133
+ // Pause auto-play on hover
134
+ const handleMouseEnter = React.useCallback(() => {
135
+ if (autoPlay) {
136
+ setIsAutoPlaying(false)
137
+ }
138
+ }, [autoPlay])
139
+
140
+ const handleMouseLeave = React.useCallback(() => {
141
+ if (autoPlay) {
142
+ setIsAutoPlaying(true)
143
+ }
144
+ }, [autoPlay])
145
+
146
+ // Keyboard navigation
147
+ React.useEffect(() => {
148
+ const handleKeyDown = (e: KeyboardEvent) => {
149
+ if (e.key === "ArrowLeft") {
150
+ goToPrevious()
151
+ } else if (e.key === "ArrowRight") {
152
+ goToNext()
153
+ }
154
+ }
155
+
156
+ window.addEventListener("keydown", handleKeyDown)
157
+
158
+ return () => window.removeEventListener("keydown", handleKeyDown)
159
+ }, [goToNext, goToPrevious])
160
+
161
+ return (
162
+ <Box
163
+ ref={containerRef}
164
+ className={cn("relative w-full max-w-6xl mx-auto px-4 py-8", className)}
165
+ onMouseEnter={handleMouseEnter}
166
+ onMouseLeave={handleMouseLeave}
167
+ >
168
+ {/* Cards Container */}
169
+ <Box className="relative h-[400px] md:h-[500px] lg:h-[600px] flex items-center justify-center">
170
+ <AnimatePresence mode="popLayout">
171
+ {cards.map((card, index) => {
172
+ const style = getCardStyle(index)
173
+ const isActive = index === currentIndex
174
+
175
+ return (
176
+ <motion.div
177
+ key={card.id}
178
+ className={cn(
179
+ "absolute inset-0 w-full h-full",
180
+ !isActive && "pointer-events-none"
181
+ )}
182
+ initial={false}
183
+ animate={{
184
+ x: style.x,
185
+ scale: style.scale,
186
+ opacity: style.opacity,
187
+ zIndex: style.zIndex,
188
+ }}
189
+ transition={{
190
+ type: "spring",
191
+ stiffness: 300,
192
+ damping: 30,
193
+ }}
194
+ drag={isActive ? "x" : false}
195
+ dragSnapToOrigin
196
+ dragElastic={0.2}
197
+ onDragEnd={handleDragEnd}
198
+ whileDrag={{ cursor: "grabbing" }}
199
+ style={{
200
+ x: dragX,
201
+ display: style.display,
202
+ }}
203
+ >
204
+ <Card
205
+ className={cn(
206
+ "relative w-full h-full overflow-hidden cursor-grab",
207
+ "bg-gradient-to-br from-white to-[var(--color-border-divider)] dark:from-[var(--color-border-divider)] dark:to-[var(--color-border-divider)]",
208
+ "shadow-2xl hover:shadow-3xl transition-shadow duration-300",
209
+ cardClassName
210
+ )}
211
+ style={{
212
+ background: card.gradient,
213
+ }}
214
+ >
215
+ {/* Parallax Background Image */}
216
+ {card.image && (
217
+ <motion.div
218
+ className="absolute inset-0 w-full h-full"
219
+ style={{
220
+ x: useTransform(
221
+ dragX,
222
+ [-200, 0, 200],
223
+ [parallaxOffset, 0, -parallaxOffset]
224
+ ),
225
+ }}
226
+ >
227
+ <Box tag="img"
228
+ src={card.image}
229
+ alt={card.title}
230
+ className="w-full h-full object-cover"
231
+ />
232
+ <Box className="absolute inset-0 bg-gradient-to-t from-black/60 via-black/20 to-transparent" />
233
+ </motion.div>
234
+ )}
235
+
236
+ {/* Card Content */}
237
+ <Box className="relative z-10 flex flex-col justify-end h-full p-8 md:p-12">
238
+ {card.content ? (
239
+ card.content
240
+ ) : (
241
+ <>
242
+ <motion.h3
243
+ className="text-3xl md:text-4xl lg:text-5xl font-bold text-white mb-2"
244
+ initial={{ opacity: 0, y: 20 }}
245
+ animate={{ opacity: isActive ? 1 : 0.7, y: 0 }}
246
+ transition={{ delay: 0.1 }}
247
+ >
248
+ {card.title}
249
+ </motion.h3>
250
+
251
+ {card.subtitle && (
252
+ <motion.p
253
+ className="text-xl md:text-2xl text-white/80 mb-4"
254
+ initial={{ opacity: 0, y: 20 }}
255
+ animate={{ opacity: isActive ? 1 : 0.7, y: 0 }}
256
+ transition={{ delay: 0.2 }}
257
+ >
258
+ {card.subtitle}
259
+ </motion.p>
260
+ )}
261
+
262
+ {card.description && (
263
+ <motion.p
264
+ className="text-base md:text-lg text-white/70 max-w-2xl"
265
+ initial={{ opacity: 0, y: 20 }}
266
+ animate={{ opacity: isActive ? 1 : 0.7, y: 0 }}
267
+ transition={{ delay: 0.3 }}
268
+ >
269
+ {card.description}
270
+ </motion.p>
271
+ )}
272
+ </>
273
+ )}
274
+ </Box>
275
+ </Card>
276
+ </motion.div>
277
+ )
278
+ })}
279
+ </AnimatePresence>
280
+ </Box>
281
+
282
+ {/* Navigation Arrows */}
283
+ {showArrows && (
284
+ <>
285
+ <Button
286
+ variant="ghost"
287
+ size="icon"
288
+ {...sx(cn(
289
+ "absolute left-4 top-1/2 -translate-y-1/2 z-20",
290
+ "bg-white/10 backdrop-blur-md hover:bg-white/20",
291
+ "text-white border border-white/20",
292
+ "hidden md:flex"
293
+ ))}
294
+ onClick={goToPrevious}
295
+ >
296
+ <ChevronLeft style={css('h-6 w-6')} />
297
+ <Box tag="span" className="sr-only">Previous card</Box>
298
+ </Button>
299
+
300
+ <Button
301
+ variant="ghost"
302
+ size="icon"
303
+ {...sx(cn(
304
+ "absolute right-4 top-1/2 -translate-y-1/2 z-20",
305
+ "bg-white/10 backdrop-blur-md hover:bg-white/20",
306
+ "text-white border border-white/20",
307
+ "hidden md:flex"
308
+ ))}
309
+ onClick={goToNext}
310
+ >
311
+ <ChevronRight style={css('h-6 w-6')} />
312
+ <Box tag="span" className="sr-only">Next card</Box>
313
+ </Button>
314
+ </>
315
+ )}
316
+
317
+ {/* Dot Indicators */}
318
+ {showDots && (
319
+ <Box className="absolute bottom-4 left-1/2 -translate-x-1/2 z-20 flex gap-2">
320
+ {cards.map((_, index) => (
321
+ <Box tag="button"
322
+ key={index}
323
+ className={cn(
324
+ "w-2 h-2 rounded-full transition-all duration-300",
325
+ "bg-white/40 hover:bg-white/60",
326
+ index === currentIndex && "w-8 bg-white"
327
+ )}
328
+ onClick={() => goToCard(index)}
329
+ >
330
+ <Box tag="span" className="sr-only">Go to card {index + 1}</Box>
331
+ </Box>
332
+ ))}
333
+ </Box>
334
+ )}
335
+ </Box>
336
+ )
337
+ }
338
+
339
+ // Preset gradients for demo purposes
340
+ export const gradientPresets = {
341
+ sunset: "linear-gradient(135deg, #667eea 0%, #764ba2 100%)",
342
+ ocean: "linear-gradient(135deg, #667eea 0%, #4ca1af 100%)",
343
+ fire: "linear-gradient(135deg, #f093fb 0%, #f5576c 100%)",
344
+ forest: "linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)",
345
+ galaxy: "linear-gradient(135deg, #7303c0 0%, #ec38bc 50%, #fdeff9 100%)",
346
+ aurora: "linear-gradient(135deg, #89f7fe 0%, #66a6ff 100%)",
347
+ peach: "linear-gradient(135deg, #ffecd2 0%, #fcb69f 100%)",
348
+ lavender: "linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)",
349
+ }
@@ -0,0 +1,50 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { Box } from '@hanzo/ui'
5
+ import { motion } from "motion/react"
6
+
7
+ import { cn } from "./utils"
8
+
9
+ interface AppleHelloEffectProps extends React.HTMLAttributes<HTMLDivElement> {
10
+ text?: string
11
+ duration?: number
12
+ }
13
+
14
+ const AppleHelloEffect = React.forwardRef<
15
+ HTMLDivElement,
16
+ AppleHelloEffectProps
17
+ >(({ className, text = "Hello", duration = 2, ...props }, ref) => {
18
+ const letters = text.split("")
19
+
20
+ return (
21
+ <Box
22
+ ref={ref}
23
+ className={cn(
24
+ "relative flex items-center justify-center text-6xl font-bold",
25
+ className
26
+ )}
27
+ {...props}
28
+ >
29
+ {letters.map((letter, index) => (
30
+ <motion.span
31
+ key={index}
32
+ initial={{ opacity: 0, y: 50 }}
33
+ animate={{ opacity: 1, y: 0 }}
34
+ transition={{
35
+ duration: duration,
36
+ delay: index * 0.1,
37
+ ease: [0.215, 0.61, 0.355, 1],
38
+ }}
39
+ className="inline-block"
40
+ >
41
+ {letter}
42
+ </motion.span>
43
+ ))}
44
+ </Box>
45
+ )
46
+ })
47
+
48
+ AppleHelloEffect.displayName = "AppleHelloEffect"
49
+
50
+ export { AppleHelloEffect }
package/src/auth.tsx CHANGED
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { configureIam, handleCallback, logout, startLogin } from '@hanzo/iam/browser';
4
+ import { Box } from '@hanzo/ui'
4
5
  import * as React from 'react';
5
6
 
6
7
  import { IdentityProvider, type IdentityAuth } from './identity';
@@ -181,18 +182,18 @@ export const AuthCallback = ({
181
182
  }, []);
182
183
 
183
184
  return (
184
- <div className="flex min-h-[50vh] items-center justify-center px-4">
185
- <div className="w-full max-w-sm text-center">
185
+ <Box className="flex min-h-[50vh] items-center justify-center px-4">
186
+ <Box className="w-full max-w-sm text-center">
186
187
  { error ? (
187
188
  <>
188
- <p className="mb-2 text-lg font-semibold text-[var(--color-text-error)]">Sign-in failed</p>
189
- <p className="mb-6 text-sm text-[var(--color-text-secondary)]">{ error }</p>
190
- <a href={ retryPath } className="text-sm underline underline-offset-4">Try again</a>
189
+ <Box tag="p" className="mb-2 text-lg font-semibold text-[var(--color-text-error)]">Sign-in failed</Box>
190
+ <Box tag="p" className="mb-6 text-sm text-[var(--color-text-secondary)]">{ error }</Box>
191
+ <Box tag="a" href={ retryPath } className="text-sm underline underline-offset-4">Try again</Box>
191
192
  </>
192
193
  ) : (
193
- <p className="text-sm text-[var(--color-text-secondary)]">Completing sign in…</p>
194
+ <Box tag="p" className="text-sm text-[var(--color-text-secondary)]">Completing sign in…</Box>
194
195
  ) }
195
- </div>
196
- </div>
196
+ </Box>
197
+ </Box>
197
198
  );
198
199
  };
package/src/avatar.tsx CHANGED
@@ -23,7 +23,7 @@ const SIZE: Record<AvatarSize, { width: number; height: number; fontSize: number
23
23
 
24
24
  // The ring colour matches the page ground rather than staying a fixed white,
25
25
  // so a stack of overlapping avatars reads as cut out of the page in both
26
- // themes — the same job `ring-white dark:ring-gray-900` did.
26
+ // themes — the same job `ring-white dark:ring-[var(--color-border-divider)]` did.
27
27
  const RING = 'var(--color-bg-body)' as never;
28
28
 
29
29
  const VARIANT: Record<AvatarVariant, Record<string, unknown>> = {
package/src/badge.tsx CHANGED
@@ -61,6 +61,27 @@ const COLOR_PALETTE: Record<ColorPalette, { bg: string; fg: string }> = {
61
61
  bright_pink: { bg: 'var(--color-badge-bright-pink-bg)', fg: 'var(--color-badge-bright-pink-fg)' },
62
62
  };
63
63
 
64
+ export type BadgeVariant = 'subtle' | 'solid' | 'outline';
65
+
66
+ /**
67
+ * How much of the palette the chip shows.
68
+ *
69
+ * `subtle` tints the ground and keeps the palette's own foreground; `solid`
70
+ * inverts that, so the chip is the colour and the label reads on it; `outline`
71
+ * spends the colour on a border and leaves the ground alone, for a chip that has
72
+ * to sit on a surface it must not compete with.
73
+ */
74
+ const TONE: Record<BadgeVariant, (p: { bg: string; fg: string }) => Record<string, unknown>> = {
75
+ subtle: (p) => ({ backgroundColor: p.bg, color: p.fg, borderWidth: 0 }),
76
+ solid: (p) => ({ backgroundColor: p.fg, color: p.bg, borderWidth: 0 }),
77
+ outline: (p) => ({
78
+ backgroundColor: 'transparent',
79
+ color: p.fg,
80
+ borderWidth: 1,
81
+ borderColor: p.fg,
82
+ }),
83
+ };
84
+
64
85
  export interface BadgeProps
65
86
  extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'color'> {
66
87
  readonly loading?: boolean;
@@ -68,17 +89,10 @@ export interface BadgeProps
68
89
  readonly endElement?: React.ReactNode;
69
90
  readonly truncated?: boolean;
70
91
  readonly colorPalette?: ColorPalette;
71
- readonly variant?: 'subtle' | 'solid';
92
+ readonly variant?: BadgeVariant;
72
93
  readonly size?: 'sm' | 'md' | 'lg';
73
- // Legacy Chakra style-prop shims
74
- readonly flexShrink?: number;
75
- readonly gap?: number | string;
76
- readonly ml?: number | string | Record<string, number>;
77
- readonly mr?: number | string;
78
94
  }
79
95
 
80
- const S = 4; // Chakra spacing scale
81
-
82
96
  export const Badge = React.forwardRef<HTMLDivElement, BadgeProps>(
83
97
  function Badge(props, ref) {
84
98
  const {
@@ -87,33 +101,16 @@ export const Badge = React.forwardRef<HTMLDivElement, BadgeProps>(
87
101
  children,
88
102
  truncated = false,
89
103
  endElement,
90
- variant: _variant,
104
+ variant = 'subtle',
91
105
  size = 'md',
92
106
  colorPalette = 'gray',
93
107
  className,
94
- flexShrink: _flexShrink,
95
- gap: _gap,
96
- ml: _ml,
97
- mr: _mr,
98
- style: styleProp,
108
+ style: badgeStyle,
99
109
  ...rest
100
110
  } = props;
101
111
 
102
- const shimStyle: React.CSSProperties = { ...styleProp };
103
- if (_flexShrink !== undefined) shimStyle.flexShrink = _flexShrink;
104
- if (_gap !== undefined) shimStyle.gap = typeof _gap === 'number' ? `${ _gap * S }px` : _gap;
105
- if (_ml !== undefined) {
106
- if (typeof _ml === 'object') {
107
- const obj = _ml as Record<string, number>;
108
- shimStyle.marginLeft = `${ (obj.base ?? obj.lg ?? 0) * S }px`;
109
- } else {
110
- shimStyle.marginLeft = typeof _ml === 'number' ? `${ _ml * S }px` : _ml;
111
- }
112
- }
113
- if (_mr !== undefined) shimStyle.marginRight = typeof _mr === 'number' ? `${ _mr * S }px` : _mr;
114
- const badgeStyle = Object.keys(shimStyle).length > 0 ? shimStyle : undefined;
115
-
116
112
  const palette = COLOR_PALETTE[colorPalette];
113
+ const tone = TONE[variant](palette);
117
114
 
118
115
  const child = children ? (
119
116
  // `ellipsis` is gui Text's own built-in variant for single-line
@@ -121,7 +118,7 @@ export const Badge = React.forwardRef<HTMLDivElement, BadgeProps>(
121
118
  // white-space/max-width rule Tailwind's `text-ellipsis` did, but
122
119
  // through the component's own variants (guaranteed to compile),
123
120
  // rather than naming each longhand as a separate style prop.
124
- <Text ellipsis { ...SIZE_TEXT[size] } color={ palette.fg as never }>
121
+ <Text ellipsis { ...SIZE_TEXT[size] } color={ tone.color as never }>
125
122
  { children }
126
123
  </Text>
127
124
  ) : null;
@@ -144,7 +141,7 @@ export const Badge = React.forwardRef<HTMLDivElement, BadgeProps>(
144
141
  maxWidth="100%"
145
142
  userSelect="text"
146
143
  { ...SIZE[size] }
147
- backgroundColor={ palette.bg as never }
144
+ { ...tone }
148
145
  className={ className }
149
146
  style={ badgeStyle }
150
147
  { ...(rest as object) }
package/src/banner.tsx ADDED
@@ -0,0 +1,62 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { Box, VariantProps, css, variants } from '@hanzo/ui'
5
+ import { X } from "lucide-react"
6
+
7
+ import { cn } from "./utils"
8
+
9
+ const bannerVariants = variants(
10
+ "relative w-full border-b px-4 py-3 text-sm [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",
11
+ {
12
+ variants: {
13
+ variant: {
14
+ default: "bg-background text-foreground",
15
+ info: "border-[var(--color-link-primary)]/50 bg-[var(--color-link-primary)] text-[var(--color-link-primary)] dark:bg-[var(--color-link-primary)] dark:text-[var(--color-link-primary)] [&>svg]:text-[var(--color-link-primary)] dark:[&>svg]:text-[var(--color-link-primary)]",
16
+ success:
17
+ "border-[var(--lux-state-success)]/50 bg-[var(--lux-state-success)] text-[var(--lux-state-success)] dark:bg-[var(--lux-state-success)] dark:text-[var(--lux-state-success)] [&>svg]:text-[var(--lux-state-success)] dark:[&>svg]:text-[var(--lux-state-success)]",
18
+ warning:
19
+ "border-[var(--lux-state-notice)]/50 bg-[var(--lux-state-notice)] text-[var(--lux-state-notice)] dark:bg-[var(--lux-state-notice)] dark:text-[var(--lux-state-notice)] [&>svg]:text-[var(--lux-state-notice)] dark:[&>svg]:text-[var(--lux-state-notice)]",
20
+ error:
21
+ "border-[var(--lux-state-error)]/50 bg-[var(--lux-state-error)] text-[var(--lux-state-error)] dark:bg-[var(--lux-state-error)] dark:text-[var(--lux-state-error)] [&>svg]:text-[var(--lux-state-error)] dark:[&>svg]:text-[var(--lux-state-error)]",
22
+ },
23
+ },
24
+ defaultVariants: {
25
+ variant: "default",
26
+ },
27
+ }
28
+ )
29
+
30
+ export interface BannerProps
31
+ extends React.HTMLAttributes<HTMLDivElement>,
32
+ VariantProps<typeof bannerVariants> {
33
+ onClose?: () => void
34
+ }
35
+
36
+ const Banner = React.forwardRef<HTMLDivElement, BannerProps>(
37
+ ({ className, variant, onClose, children, ...props }, ref) => {
38
+ return (
39
+ <Box
40
+ ref={ref}
41
+ role="alert"
42
+ className={cn(bannerVariants({ variant }), className)}
43
+ {...props}
44
+ >
45
+ {children}
46
+ {onClose && (
47
+ <Box tag="button"
48
+ type="button"
49
+ onClick={onClose}
50
+ className="absolute right-4 top-3 rounded-md p-1 hover:bg-black/5 dark:hover:bg-white/5"
51
+ >
52
+ <X style={css('h-4 w-4')} />
53
+ <Box tag="span" className="sr-only">Close</Box>
54
+ </Box>
55
+ )}
56
+ </Box>
57
+ )
58
+ }
59
+ )
60
+ Banner.displayName = "Banner"
61
+
62
+ export { Banner, bannerVariants }
@@ -0,0 +1,40 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { Box } from '@hanzo/ui'
5
+
6
+ import { cn } from "./utils"
7
+
8
+ export interface BreadcrumbAndFiltersNavigationBarProps
9
+ extends React.HTMLAttributes<HTMLElement> {
10
+ items?: Array<{ label: string; href: string }>
11
+ }
12
+
13
+ const BreadcrumbAndFiltersNavigationBar = React.forwardRef<
14
+ HTMLElement,
15
+ BreadcrumbAndFiltersNavigationBarProps
16
+ >(({ className, items = [], ...props }, ref) => {
17
+ return (
18
+ <Box tag="nav"
19
+ ref={ref}
20
+ className={cn("border-b bg-background", className)}
21
+ {...props}
22
+ >
23
+ <Box className="container flex h-16 items-center gap-6">
24
+ {items.map((item) => (
25
+ <Box tag="a"
26
+ key={item.href}
27
+ href={item.href}
28
+ className="text-sm font-medium transition-colors hover:text-primary"
29
+ >
30
+ {item.label}
31
+ </Box>
32
+ ))}
33
+ </Box>
34
+ </Box>
35
+ )
36
+ })
37
+ BreadcrumbAndFiltersNavigationBar.displayName =
38
+ "BreadcrumbAndFiltersNavigationBar"
39
+
40
+ export { BreadcrumbAndFiltersNavigationBar }
@@ -0,0 +1,43 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { Box, css } from '@hanzo/ui'
5
+ import { ChevronRight } from "lucide-react"
6
+
7
+ import { cn } from "./utils"
8
+
9
+ export interface BreadcrumbNavigationBarProps
10
+ extends React.HTMLAttributes<HTMLElement> {
11
+ items?: Array<{ label: string; href?: string }>
12
+ }
13
+
14
+ const BreadcrumbNavigationBar = React.forwardRef<
15
+ HTMLElement,
16
+ BreadcrumbNavigationBarProps
17
+ >(({ className, items = [], ...props }, ref) => {
18
+ return (
19
+ <Box tag="nav" ref={ref} className={cn("border-b", className)} {...props}>
20
+ <Box className="container flex h-12 items-center">
21
+ <Box tag="ol" className="flex items-center gap-2 text-sm">
22
+ {items.map((item, index) => (
23
+ <Box tag="li" key={index} className="flex items-center gap-2">
24
+ {index > 0 && (
25
+ <ChevronRight style={css('h-4 w-4 text-muted-foreground')} />
26
+ )}
27
+ {item.href ? (
28
+ <Box tag="a" href={item.href} className="hover:text-primary">
29
+ {item.label}
30
+ </Box>
31
+ ) : (
32
+ <Box tag="span" className="text-muted-foreground">{item.label}</Box>
33
+ )}
34
+ </Box>
35
+ ))}
36
+ </Box>
37
+ </Box>
38
+ </Box>
39
+ )
40
+ })
41
+ BreadcrumbNavigationBar.displayName = "BreadcrumbNavigationBar"
42
+
43
+ export { BreadcrumbNavigationBar }