magnaui 0.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 (512) hide show
  1. package/LICENSE +38 -0
  2. package/LICENSES/Apache-2.0.txt +202 -0
  3. package/LICENSES/Libraries.dev-MIT.txt +21 -0
  4. package/LICENSES/Tiptap-MIT.txt +21 -0
  5. package/LICENSES/metal-fx-NOTICE.txt +22 -0
  6. package/LICENSES/three-MIT.txt +21 -0
  7. package/README.md +73 -0
  8. package/THIRD_PARTY_NOTICES.md +72 -0
  9. package/dist/assets/agent-studio.png +0 -0
  10. package/dist/assets/api-studio.png +0 -0
  11. package/dist/assets/app-store.png +0 -0
  12. package/dist/assets/approvals.png +0 -0
  13. package/dist/assets/assistant.png +0 -0
  14. package/dist/assets/brain.png +0 -0
  15. package/dist/assets/browser.png +0 -0
  16. package/dist/assets/checkbox/check.svg +3 -0
  17. package/dist/assets/checkbox/indeterminate.svg +3 -0
  18. package/dist/assets/code.png +0 -0
  19. package/dist/assets/connect-ai.png +0 -0
  20. package/dist/assets/connections.png +0 -0
  21. package/dist/assets/database.png +0 -0
  22. package/dist/assets/display/06153.svg +5 -0
  23. package/dist/assets/display/106a6.svg +22 -0
  24. package/dist/assets/display/16525.svg +5 -0
  25. package/dist/assets/display/18a45.svg +5 -0
  26. package/dist/assets/display/1c133.svg +5 -0
  27. package/dist/assets/display/1c6fa.svg +5 -0
  28. package/dist/assets/display/1db47.svg +5 -0
  29. package/dist/assets/display/237a6.svg +5 -0
  30. package/dist/assets/display/27ca8.svg +5 -0
  31. package/dist/assets/display/347ef.svg +22 -0
  32. package/dist/assets/display/35edd.svg +5 -0
  33. package/dist/assets/display/38def.svg +5 -0
  34. package/dist/assets/display/3a834.svg +5 -0
  35. package/dist/assets/display/3e51d.svg +5 -0
  36. package/dist/assets/display/3f95e.svg +5 -0
  37. package/dist/assets/display/400d1.svg +5 -0
  38. package/dist/assets/display/4239a.svg +5 -0
  39. package/dist/assets/display/4477e.svg +22 -0
  40. package/dist/assets/display/46574.svg +5 -0
  41. package/dist/assets/display/469e4.svg +5 -0
  42. package/dist/assets/display/48559.svg +22 -0
  43. package/dist/assets/display/4e103.svg +22 -0
  44. package/dist/assets/display/4ef80.svg +5 -0
  45. package/dist/assets/display/51b32.svg +22 -0
  46. package/dist/assets/display/5320a.svg +5 -0
  47. package/dist/assets/display/56a7a.svg +22 -0
  48. package/dist/assets/display/56cab.svg +5 -0
  49. package/dist/assets/display/5fc70.svg +22 -0
  50. package/dist/assets/display/60ab5.svg +22 -0
  51. package/dist/assets/display/60c44.svg +5 -0
  52. package/dist/assets/display/61721.svg +5 -0
  53. package/dist/assets/display/648b1.svg +5 -0
  54. package/dist/assets/display/65aad.svg +5 -0
  55. package/dist/assets/display/665bc.svg +5 -0
  56. package/dist/assets/display/691ac.svg +22 -0
  57. package/dist/assets/display/6a48e.svg +5 -0
  58. package/dist/assets/display/6af80.svg +22 -0
  59. package/dist/assets/display/6c384.svg +5 -0
  60. package/dist/assets/display/6c7fb.svg +5 -0
  61. package/dist/assets/display/6ce08.svg +22 -0
  62. package/dist/assets/display/76be1.svg +5 -0
  63. package/dist/assets/display/79287.svg +5 -0
  64. package/dist/assets/display/7ea85.svg +5 -0
  65. package/dist/assets/display/7eeaf.svg +5 -0
  66. package/dist/assets/display/82602.svg +5 -0
  67. package/dist/assets/display/8a43e.svg +5 -0
  68. package/dist/assets/display/8bdb8.svg +22 -0
  69. package/dist/assets/display/8d235.svg +5 -0
  70. package/dist/assets/display/90498.svg +22 -0
  71. package/dist/assets/display/908e9.svg +5 -0
  72. package/dist/assets/display/90942.svg +5 -0
  73. package/dist/assets/display/943fb.svg +5 -0
  74. package/dist/assets/display/96ddd.svg +22 -0
  75. package/dist/assets/display/9e5a0.svg +22 -0
  76. package/dist/assets/display/9e9ac.svg +5 -0
  77. package/dist/assets/display/a35a7.svg +22 -0
  78. package/dist/assets/display/af15f.svg +5 -0
  79. package/dist/assets/display/b04fe.svg +5 -0
  80. package/dist/assets/display/b0925.svg +5 -0
  81. package/dist/assets/display/b464b.svg +5 -0
  82. package/dist/assets/display/b8efe.svg +5 -0
  83. package/dist/assets/display/bbddb.svg +5 -0
  84. package/dist/assets/display/bd61c.svg +5 -0
  85. package/dist/assets/display/be577.svg +5 -0
  86. package/dist/assets/display/bf02d.svg +5 -0
  87. package/dist/assets/display/bf1dc.svg +5 -0
  88. package/dist/assets/display/c70b6.svg +5 -0
  89. package/dist/assets/display/c8a01.svg +5 -0
  90. package/dist/assets/display/cb00b.svg +22 -0
  91. package/dist/assets/display/cecfd.svg +5 -0
  92. package/dist/assets/display/d2cc2.svg +5 -0
  93. package/dist/assets/display/d428d.svg +22 -0
  94. package/dist/assets/display/d71e2.svg +22 -0
  95. package/dist/assets/display/d8f1d.svg +22 -0
  96. package/dist/assets/display/d92e5.svg +5 -0
  97. package/dist/assets/display/d9698.svg +5 -0
  98. package/dist/assets/display/e542b.svg +5 -0
  99. package/dist/assets/display/e59af.svg +5 -0
  100. package/dist/assets/display/e5a41.svg +5 -0
  101. package/dist/assets/display/e894a.svg +5 -0
  102. package/dist/assets/display/ea9e5.svg +5 -0
  103. package/dist/assets/display/eac01.svg +5 -0
  104. package/dist/assets/display/ec734.svg +5 -0
  105. package/dist/assets/display/edb55.svg +5 -0
  106. package/dist/assets/display/ee164.svg +5 -0
  107. package/dist/assets/display/f01d5.svg +5 -0
  108. package/dist/assets/display/f479a.svg +22 -0
  109. package/dist/assets/display/f8ebb.svg +22 -0
  110. package/dist/assets/display/fb8ab.svg +5 -0
  111. package/dist/assets/display/fbdce.svg +5 -0
  112. package/dist/assets/docs.png +0 -0
  113. package/dist/assets/editor/align-left.svg +5 -0
  114. package/dist/assets/editor/arrow-down.svg +5 -0
  115. package/dist/assets/editor/arrow-up.svg +5 -0
  116. package/dist/assets/editor/at.svg +5 -0
  117. package/dist/assets/editor/bold-active.svg +5 -0
  118. package/dist/assets/editor/bold-strong.svg +5 -0
  119. package/dist/assets/editor/bold.svg +5 -0
  120. package/dist/assets/editor/comment.svg +5 -0
  121. package/dist/assets/editor/divider-more.svg +5 -0
  122. package/dist/assets/editor/divider.svg +5 -0
  123. package/dist/assets/editor/duration-check.svg +3 -0
  124. package/dist/assets/editor/italic.svg +5 -0
  125. package/dist/assets/editor/link.svg +5 -0
  126. package/dist/assets/editor/more.svg +5 -0
  127. package/dist/assets/editor/status-available.svg +5 -0
  128. package/dist/assets/editor/status-busy.svg +5 -0
  129. package/dist/assets/editor/status-disabled.svg +5 -0
  130. package/dist/assets/editor/status-in-meeting.svg +5 -0
  131. package/dist/assets/editor/status-offline.svg +5 -0
  132. package/dist/assets/editor/strike.svg +5 -0
  133. package/dist/assets/editor/time-check.svg +3 -0
  134. package/dist/assets/editor/underline.svg +5 -0
  135. package/dist/assets/expenses.png +0 -0
  136. package/dist/assets/feeds/activity-more.svg +5 -0
  137. package/dist/assets/feeds/activity-user.svg +5 -0
  138. package/dist/assets/feeds/attachment.svg +5 -0
  139. package/dist/assets/feeds/calendar.svg +5 -0
  140. package/dist/assets/feeds/comment.svg +5 -0
  141. package/dist/assets/feeds/download-hover.svg +5 -0
  142. package/dist/assets/feeds/download.svg +5 -0
  143. package/dist/assets/feeds/filter.svg +5 -0
  144. package/dist/assets/feeds/header-calendar.svg +5 -0
  145. package/dist/assets/feeds/notification-attachment.svg +5 -0
  146. package/dist/assets/feeds/notification-company.svg +17 -0
  147. package/dist/assets/feeds/notification-filter.svg +5 -0
  148. package/dist/assets/feeds/notification-more.svg +5 -0
  149. package/dist/assets/feeds/search.svg +5 -0
  150. package/dist/assets/feeds/selected-filter-active.svg +5 -0
  151. package/dist/assets/feeds/selected-filter.svg +5 -0
  152. package/dist/assets/feeds/settings.svg +5 -0
  153. package/dist/assets/feeds/sort.svg +5 -0
  154. package/dist/assets/feeds/status-error.svg +5 -0
  155. package/dist/assets/feeds/status-pending.svg +5 -0
  156. package/dist/assets/feeds/status-success.svg +5 -0
  157. package/dist/assets/feeds/status-warning.svg +5 -0
  158. package/dist/assets/feeds/upload-avatar-empty56.svg +13 -0
  159. package/dist/assets/feeds/upload-avatar-empty64.svg +13 -0
  160. package/dist/assets/feeds/upload-cancel.svg +5 -0
  161. package/dist/assets/feeds/upload-company-empty.svg +42 -0
  162. package/dist/assets/feeds/upload-company.svg +17 -0
  163. package/dist/assets/feeds/upload-delete-error.svg +5 -0
  164. package/dist/assets/feeds/upload-delete.svg +5 -0
  165. package/dist/assets/feeds/upload-error.svg +5 -0
  166. package/dist/assets/feeds/upload-loading.svg +5 -0
  167. package/dist/assets/feeds/upload-success.svg +5 -0
  168. package/dist/assets/feeds/vertical-arrow.svg +5 -0
  169. package/dist/assets/feeds/vertical-calendar-active.svg +5 -0
  170. package/dist/assets/feeds/vertical-calendar-hover.svg +5 -0
  171. package/dist/assets/feeds/vertical-calendar.svg +5 -0
  172. package/dist/assets/file.png +0 -0
  173. package/dist/assets/folder.png +0 -0
  174. package/dist/assets/forms/07b3a.png +0 -0
  175. package/dist/assets/forms/09fe0.svg +5 -0
  176. package/dist/assets/forms/11a76.svg +5 -0
  177. package/dist/assets/forms/185ae.svg +5 -0
  178. package/dist/assets/forms/1f174.svg +5 -0
  179. package/dist/assets/forms/29541.svg +5 -0
  180. package/dist/assets/forms/2b6f8.svg +5 -0
  181. package/dist/assets/forms/36c22.svg +5 -0
  182. package/dist/assets/forms/4cb9a.svg +5 -0
  183. package/dist/assets/forms/4ff30.png +0 -0
  184. package/dist/assets/forms/537d2.svg +5 -0
  185. package/dist/assets/forms/60456.svg +5 -0
  186. package/dist/assets/forms/657e1.svg +5 -0
  187. package/dist/assets/forms/73539.svg +5 -0
  188. package/dist/assets/forms/76214.svg +5 -0
  189. package/dist/assets/forms/7bd9a.svg +5 -0
  190. package/dist/assets/forms/7c034.svg +5 -0
  191. package/dist/assets/forms/86e36.svg +5 -0
  192. package/dist/assets/forms/8d97b.svg +5 -0
  193. package/dist/assets/forms/90a18.svg +5 -0
  194. package/dist/assets/forms/939c2.png +0 -0
  195. package/dist/assets/forms/95ae4.svg +5 -0
  196. package/dist/assets/forms/970af.svg +5 -0
  197. package/dist/assets/forms/a119e.svg +5 -0
  198. package/dist/assets/forms/a521c.svg +5 -0
  199. package/dist/assets/forms/a74b0.svg +5 -0
  200. package/dist/assets/forms/baff4.svg +5 -0
  201. package/dist/assets/forms/c64ff.svg +5 -0
  202. package/dist/assets/forms/ca66f.svg +5 -0
  203. package/dist/assets/forms/e0344.svg +5 -0
  204. package/dist/assets/forms/e5b24.png +0 -0
  205. package/dist/assets/forms/e687f.svg +5 -0
  206. package/dist/assets/forms/eceaf.svg +5 -0
  207. package/dist/assets/forms/eed5c.png +0 -0
  208. package/dist/assets/forms/f26ce.svg +5 -0
  209. package/dist/assets/forms/f79d5.svg +5 -0
  210. package/dist/assets/habits.png +0 -0
  211. package/dist/assets/hackify.png +0 -0
  212. package/dist/assets/icons/add.svg +5 -0
  213. package/dist/assets/icons/apps.svg +5 -0
  214. package/dist/assets/icons/book.svg +5 -0
  215. package/dist/assets/icons/chat.svg +5 -0
  216. package/dist/assets/icons/folder.svg +5 -0
  217. package/dist/assets/icons/mic.svg +5 -0
  218. package/dist/assets/icons/notifications.svg +5 -0
  219. package/dist/assets/icons/shield.svg +5 -0
  220. package/dist/assets/icons/store.svg +5 -0
  221. package/dist/assets/icons/voice.svg +5 -0
  222. package/dist/assets/ledger.png +0 -0
  223. package/dist/assets/logos/glyph-black.svg +3 -0
  224. package/dist/assets/logos/glyph-color.svg +26 -0
  225. package/dist/assets/logos/glyph-white.svg +3 -0
  226. package/dist/assets/logos/horizontal-black.svg +5 -0
  227. package/dist/assets/logos/horizontal-color-black.svg +28 -0
  228. package/dist/assets/logos/horizontal-color-white.svg +28 -0
  229. package/dist/assets/logos/horizontal-white.svg +5 -0
  230. package/dist/assets/logos/stacked-black.svg +5 -0
  231. package/dist/assets/logos/stacked-color-black.svg +28 -0
  232. package/dist/assets/logos/stacked-color-white.svg +28 -0
  233. package/dist/assets/logos/stacked-white.svg +5 -0
  234. package/dist/assets/logos/tagline-horizontal-black.svg +6 -0
  235. package/dist/assets/logos/tagline-horizontal-color-black.svg +29 -0
  236. package/dist/assets/logos/tagline-horizontal-color-white.svg +29 -0
  237. package/dist/assets/logos/tagline-horizontal-white.svg +6 -0
  238. package/dist/assets/logos/tagline-inline-black.svg +7 -0
  239. package/dist/assets/logos/tagline-inline-color-black.svg +30 -0
  240. package/dist/assets/logos/tagline-inline-color-white-alt.svg +30 -0
  241. package/dist/assets/logos/tagline-inline-color-white.svg +30 -0
  242. package/dist/assets/logos/tagline-inline-white.svg +7 -0
  243. package/dist/assets/logos/tagline-stacked-black.svg +6 -0
  244. package/dist/assets/logos/tagline-stacked-color-black.svg +29 -0
  245. package/dist/assets/logos/tagline-stacked-color-white.svg +29 -0
  246. package/dist/assets/logos/tagline-stacked-white.svg +6 -0
  247. package/dist/assets/magna-brief.png +0 -0
  248. package/dist/assets/magna-ide.png +0 -0
  249. package/dist/assets/magna-logo-dark.svg +5 -0
  250. package/dist/assets/magna-logo-stacked.svg +29 -0
  251. package/dist/assets/magna-logo.svg +3 -0
  252. package/dist/assets/magna-music.png +0 -0
  253. package/dist/assets/magna-studio.png +0 -0
  254. package/dist/assets/magna-voice.png +0 -0
  255. package/dist/assets/mail.png +0 -0
  256. package/dist/assets/models.png +0 -0
  257. package/dist/assets/notes.png +0 -0
  258. package/dist/assets/notifications.png +0 -0
  259. package/dist/assets/salis-verify.png +0 -0
  260. package/dist/assets/salis.png +0 -0
  261. package/dist/assets/settings.png +0 -0
  262. package/dist/assets/sheets.png +0 -0
  263. package/dist/assets/sledes.png +0 -0
  264. package/dist/assets/spaces.png +0 -0
  265. package/dist/assets/task-manager.png +0 -0
  266. package/dist/assets/tasks.png +0 -0
  267. package/dist/assets/terminal.png +0 -0
  268. package/dist/assets/today.png +0 -0
  269. package/dist/assets/trajectory.png +0 -0
  270. package/dist/assets/vault.png +0 -0
  271. package/dist/assets/wafir.png +0 -0
  272. package/dist/assets/what-can-i-do.png +0 -0
  273. package/dist/assets/workflow.png +0 -0
  274. package/dist/components/interactions/border-beam.d.ts +5 -0
  275. package/dist/components/interactions/border-beam.js +15 -0
  276. package/dist/components/interactions/bot-avatar.d.ts +5 -0
  277. package/dist/components/interactions/bot-avatar.js +10 -0
  278. package/dist/components/interactions/image-generation.d.ts +58 -0
  279. package/dist/components/interactions/image-generation.js +86 -0
  280. package/dist/components/interactions/index.d.ts +7 -0
  281. package/dist/components/interactions/index.js +7 -0
  282. package/dist/components/interactions/liquid.d.ts +8 -0
  283. package/dist/components/interactions/liquid.js +19 -0
  284. package/dist/components/interactions/metal-fx.d.ts +6 -0
  285. package/dist/components/interactions/metal-fx.js +51 -0
  286. package/dist/components/interactions/preferences.d.ts +5 -0
  287. package/dist/components/interactions/preferences.js +55 -0
  288. package/dist/components/interactions/thinking-orb.d.ts +4 -0
  289. package/dist/components/interactions/thinking-orb.js +9 -0
  290. package/dist/components/interactions/voice-beam.d.ts +5 -0
  291. package/dist/components/interactions/voice-beam.js +33 -0
  292. package/dist/components/magna/app-icon.d.ts +13 -0
  293. package/dist/components/magna/app-icon.js +15 -0
  294. package/dist/components/magna/apps.d.ts +202 -0
  295. package/dist/components/magna/apps.js +243 -0
  296. package/dist/components/magna/chat-activity.d.ts +12 -0
  297. package/dist/components/magna/chat-activity.js +29 -0
  298. package/dist/components/magna/chat-composer.d.ts +31 -0
  299. package/dist/components/magna/chat-composer.js +122 -0
  300. package/dist/components/magna/chat-composer.module.css +36 -0
  301. package/dist/components/magna/desktop-button.d.ts +8 -0
  302. package/dist/components/magna/desktop-button.js +10 -0
  303. package/dist/components/magna/desktop-switch.d.ts +4 -0
  304. package/dist/components/magna/desktop-switch.js +8 -0
  305. package/dist/components/magna/file-tile.d.ts +9 -0
  306. package/dist/components/magna/file-tile.js +11 -0
  307. package/dist/components/magna/index.d.ts +11 -0
  308. package/dist/components/magna/index.js +11 -0
  309. package/dist/components/magna/logo-variants.d.ts +243 -0
  310. package/dist/components/magna/logo-variants.js +268 -0
  311. package/dist/components/magna/logo.d.ts +11 -0
  312. package/dist/components/magna/logo.js +42 -0
  313. package/dist/components/magna/navigation.d.ts +15 -0
  314. package/dist/components/magna/navigation.js +16 -0
  315. package/dist/components/magna/project-context.d.ts +11 -0
  316. package/dist/components/magna/project-context.js +8 -0
  317. package/dist/components/magna/voice-orb.d.ts +7 -0
  318. package/dist/components/magna/voice-orb.js +49 -0
  319. package/dist/components/magna/voice-orb.module.css +146 -0
  320. package/dist/components/theme-switch.d.ts +1 -0
  321. package/dist/components/theme-switch.js +14 -0
  322. package/dist/components/ui/accordion.d.ts +13 -0
  323. package/dist/components/ui/accordion.js +24 -0
  324. package/dist/components/ui/activity-feed.d.ts +64 -0
  325. package/dist/components/ui/activity-feed.js +40 -0
  326. package/dist/components/ui/alert.d.ts +31 -0
  327. package/dist/components/ui/alert.js +73 -0
  328. package/dist/components/ui/avatar-empty-icons.d.ts +3 -0
  329. package/dist/components/ui/avatar-empty-icons.js +14 -0
  330. package/dist/components/ui/avatar-group-compact.d.ts +140 -0
  331. package/dist/components/ui/avatar-group-compact.js +41 -0
  332. package/dist/components/ui/avatar-group.d.ts +237 -0
  333. package/dist/components/ui/avatar-group.js +37 -0
  334. package/dist/components/ui/avatar.d.ts +420 -0
  335. package/dist/components/ui/avatar.js +107 -0
  336. package/dist/components/ui/badge.d.ts +29 -0
  337. package/dist/components/ui/badge.js +67 -0
  338. package/dist/components/ui/banner.d.ts +26 -0
  339. package/dist/components/ui/banner.js +41 -0
  340. package/dist/components/ui/breadcrumb.d.ts +14 -0
  341. package/dist/components/ui/breadcrumb.js +23 -0
  342. package/dist/components/ui/button-group.d.ts +23 -0
  343. package/dist/components/ui/button-group.js +39 -0
  344. package/dist/components/ui/button.d.ts +22 -0
  345. package/dist/components/ui/button.js +62 -0
  346. package/dist/components/ui/chart-legend.d.ts +21 -0
  347. package/dist/components/ui/chart-legend.js +14 -0
  348. package/dist/components/ui/checkbox.d.ts +41 -0
  349. package/dist/components/ui/checkbox.js +42 -0
  350. package/dist/components/ui/color-picker.d.ts +13 -0
  351. package/dist/components/ui/color-picker.js +65 -0
  352. package/dist/components/ui/command-menu.d.ts +55 -0
  353. package/dist/components/ui/command-menu.js +33 -0
  354. package/dist/components/ui/compact-button.d.ts +22 -0
  355. package/dist/components/ui/compact-button.js +39 -0
  356. package/dist/components/ui/content-card.d.ts +22 -0
  357. package/dist/components/ui/content-card.js +11 -0
  358. package/dist/components/ui/content-label.d.ts +22 -0
  359. package/dist/components/ui/content-label.js +9 -0
  360. package/dist/components/ui/counter-input.d.ts +26 -0
  361. package/dist/components/ui/counter-input.js +47 -0
  362. package/dist/components/ui/datepicker.d.ts +9 -0
  363. package/dist/components/ui/datepicker.js +48 -0
  364. package/dist/components/ui/digit-input.d.ts +11 -0
  365. package/dist/components/ui/digit-input.js +98 -0
  366. package/dist/components/ui/display-asset.d.ts +3 -0
  367. package/dist/components/ui/display-asset.js +9 -0
  368. package/dist/components/ui/display-assets.d.ts +193 -0
  369. package/dist/components/ui/display-assets.js +195 -0
  370. package/dist/components/ui/divider.d.ts +13 -0
  371. package/dist/components/ui/divider.js +22 -0
  372. package/dist/components/ui/dot-stepper.d.ts +96 -0
  373. package/dist/components/ui/dot-stepper.js +29 -0
  374. package/dist/components/ui/drawer.d.ts +12 -0
  375. package/dist/components/ui/drawer.js +25 -0
  376. package/dist/components/ui/dropdown.d.ts +29 -0
  377. package/dist/components/ui/dropdown.js +74 -0
  378. package/dist/components/ui/fancy-button.d.ts +21 -0
  379. package/dist/components/ui/fancy-button.js +43 -0
  380. package/dist/components/ui/file-format-icon.d.ts +19 -0
  381. package/dist/components/ui/file-format-icon.js +48 -0
  382. package/dist/components/ui/file-upload-compositions.d.ts +32 -0
  383. package/dist/components/ui/file-upload-compositions.js +88 -0
  384. package/dist/components/ui/file-upload.d.ts +11 -0
  385. package/dist/components/ui/file-upload.js +20 -0
  386. package/dist/components/ui/filter.d.ts +53 -0
  387. package/dist/components/ui/filter.js +90 -0
  388. package/dist/components/ui/form-asset.d.ts +5 -0
  389. package/dist/components/ui/form-asset.js +10 -0
  390. package/dist/components/ui/hint.d.ts +22 -0
  391. package/dist/components/ui/hint.js +33 -0
  392. package/dist/components/ui/horizontal-stepper.d.ts +16 -0
  393. package/dist/components/ui/horizontal-stepper.js +28 -0
  394. package/dist/components/ui/inline-input.d.ts +24 -0
  395. package/dist/components/ui/inline-input.js +60 -0
  396. package/dist/components/ui/input.d.ts +205 -0
  397. package/dist/components/ui/input.js +69 -0
  398. package/dist/components/ui/kbd.d.ts +5 -0
  399. package/dist/components/ui/kbd.js +6 -0
  400. package/dist/components/ui/key-icon.d.ts +14 -0
  401. package/dist/components/ui/key-icon.js +35 -0
  402. package/dist/components/ui/label.d.ts +7 -0
  403. package/dist/components/ui/label.js +15 -0
  404. package/dist/components/ui/link-button.d.ts +22 -0
  405. package/dist/components/ui/link-button.js +38 -0
  406. package/dist/components/ui/magna-recipe.d.ts +83 -0
  407. package/dist/components/ui/magna-recipe.js +99 -0
  408. package/dist/components/ui/modal.d.ts +21 -0
  409. package/dist/components/ui/modal.js +35 -0
  410. package/dist/components/ui/notification-feed.d.ts +63 -0
  411. package/dist/components/ui/notification-feed.js +31 -0
  412. package/dist/components/ui/notification-provider.d.ts +1 -0
  413. package/dist/components/ui/notification-provider.js +13 -0
  414. package/dist/components/ui/notification.d.ts +24 -0
  415. package/dist/components/ui/notification.js +23 -0
  416. package/dist/components/ui/pagination.d.ts +19 -0
  417. package/dist/components/ui/pagination.js +38 -0
  418. package/dist/components/ui/password-strength.d.ts +16 -0
  419. package/dist/components/ui/password-strength.js +27 -0
  420. package/dist/components/ui/payment-icon.d.ts +11 -0
  421. package/dist/components/ui/payment-icon.js +19 -0
  422. package/dist/components/ui/popover.d.ts +36 -0
  423. package/dist/components/ui/popover.js +27 -0
  424. package/dist/components/ui/progress-bar.d.ts +35 -0
  425. package/dist/components/ui/progress-bar.js +32 -0
  426. package/dist/components/ui/progress-circle.d.ts +16 -0
  427. package/dist/components/ui/progress-circle.js +29 -0
  428. package/dist/components/ui/radio.d.ts +37 -0
  429. package/dist/components/ui/radio.js +39 -0
  430. package/dist/components/ui/rating.d.ts +62 -0
  431. package/dist/components/ui/rating.js +65 -0
  432. package/dist/components/ui/rich-editor.d.ts +77 -0
  433. package/dist/components/ui/rich-editor.js +248 -0
  434. package/dist/components/ui/rich-editor.module.css +58 -0
  435. package/dist/components/ui/scroll-area.d.ts +14 -0
  436. package/dist/components/ui/scroll-area.js +34 -0
  437. package/dist/components/ui/segmented-control.d.ts +8 -0
  438. package/dist/components/ui/segmented-control.js +30 -0
  439. package/dist/components/ui/select.d.ts +212 -0
  440. package/dist/components/ui/select.js +129 -0
  441. package/dist/components/ui/slider.d.ts +5 -0
  442. package/dist/components/ui/slider.js +16 -0
  443. package/dist/components/ui/social-button.d.ts +22 -0
  444. package/dist/components/ui/social-button.js +47 -0
  445. package/dist/components/ui/status-badge.d.ts +25 -0
  446. package/dist/components/ui/status-badge.js +51 -0
  447. package/dist/components/ui/status-modal.d.ts +26 -0
  448. package/dist/components/ui/status-modal.js +21 -0
  449. package/dist/components/ui/svg-rating-icons.d.ts +11 -0
  450. package/dist/components/ui/svg-rating-icons.js +33 -0
  451. package/dist/components/ui/switch-compositions.d.ts +46 -0
  452. package/dist/components/ui/switch-compositions.js +51 -0
  453. package/dist/components/ui/switch.d.ts +14 -0
  454. package/dist/components/ui/switch.js +17 -0
  455. package/dist/components/ui/tab-menu-horizontal.d.ts +11 -0
  456. package/dist/components/ui/tab-menu-horizontal.js +49 -0
  457. package/dist/components/ui/tab-menu-vertical.d.ts +9 -0
  458. package/dist/components/ui/tab-menu-vertical.js +23 -0
  459. package/dist/components/ui/table.d.ts +23 -0
  460. package/dist/components/ui/table.js +46 -0
  461. package/dist/components/ui/tag-input.d.ts +18 -0
  462. package/dist/components/ui/tag-input.js +57 -0
  463. package/dist/components/ui/tag.d.ts +28 -0
  464. package/dist/components/ui/tag.js +67 -0
  465. package/dist/components/ui/textarea.d.ts +21 -0
  466. package/dist/components/ui/textarea.js +32 -0
  467. package/dist/components/ui/time-picker.d.ts +35 -0
  468. package/dist/components/ui/time-picker.js +46 -0
  469. package/dist/components/ui/tooltip.d.ts +318 -0
  470. package/dist/components/ui/tooltip.js +56 -0
  471. package/dist/components/ui/vertical-stepper.d.ts +16 -0
  472. package/dist/components/ui/vertical-stepper.js +30 -0
  473. package/dist/design/figma-styles.d.ts +2 -0
  474. package/dist/design/figma-styles.js +2106 -0
  475. package/dist/design/theme.d.ts +18 -0
  476. package/dist/design/theme.js +185 -0
  477. package/dist/fonts/DM-Mono-OFL.txt +93 -0
  478. package/dist/fonts/Inter-OFL.txt +93 -0
  479. package/dist/fonts/README.md +23 -0
  480. package/dist/fonts/SHA256SUMS +11 -0
  481. package/dist/fonts/dm-mono-400-latin-ext.woff2 +0 -0
  482. package/dist/fonts/dm-mono-400-latin.woff2 +0 -0
  483. package/dist/fonts/dm-mono-500-latin-ext.woff2 +0 -0
  484. package/dist/fonts/dm-mono-500-latin.woff2 +0 -0
  485. package/dist/fonts/inter-cyrillic-ext.woff2 +0 -0
  486. package/dist/fonts/inter-cyrillic.woff2 +0 -0
  487. package/dist/fonts/inter-greek-ext.woff2 +0 -0
  488. package/dist/fonts/inter-greek.woff2 +0 -0
  489. package/dist/fonts/inter-latin-ext.woff2 +0 -0
  490. package/dist/fonts/inter-latin.woff2 +0 -0
  491. package/dist/fonts/inter-vietnamese.woff2 +0 -0
  492. package/dist/hooks/use-notification.d.ts +36 -0
  493. package/dist/hooks/use-notification.js +86 -0
  494. package/dist/hooks/use-tab-observer.d.ts +8 -0
  495. package/dist/hooks/use-tab-observer.js +72 -0
  496. package/dist/magna-assets.d.ts +2 -0
  497. package/dist/magna-assets.js +273 -0
  498. package/dist/magnaui.d.ts +77 -0
  499. package/dist/magnaui.js +77 -0
  500. package/dist/styles.css +2665 -0
  501. package/dist/utils/cn.d.ts +18 -0
  502. package/dist/utils/cn.js +14 -0
  503. package/dist/utils/polymorphic.d.ts +10 -0
  504. package/dist/utils/polymorphic.js +1 -0
  505. package/dist/utils/tv.d.ts +18 -0
  506. package/dist/utils/tv.js +5 -0
  507. package/dist/vendor/tailwind-variants/LICENSE +21 -0
  508. package/dist/vendor/tailwind-variants/config.d.ts +38 -0
  509. package/dist/vendor/tailwind-variants/generated.d.ts +3 -0
  510. package/dist/vendor/tailwind-variants/index.d.ts +370 -0
  511. package/docs/implementation-provenance.md +96 -0
  512. package/package.json +108 -0
@@ -0,0 +1,202 @@
1
+ export declare const magnaApps: readonly [{
2
+ readonly name: "Today";
3
+ readonly id: "today";
4
+ readonly src: string;
5
+ readonly figmaNodeId: "199745:174634";
6
+ }, {
7
+ readonly name: "workflow";
8
+ readonly id: "workflow";
9
+ readonly src: string;
10
+ readonly figmaNodeId: "199745:174631";
11
+ }, {
12
+ readonly name: "what can i do ?";
13
+ readonly id: "what-can-i-do";
14
+ readonly src: string;
15
+ readonly figmaNodeId: "199745:174621";
16
+ }, {
17
+ readonly name: "wafir";
18
+ readonly id: "wafir";
19
+ readonly src: string;
20
+ readonly figmaNodeId: "199745:174624";
21
+ }, {
22
+ readonly name: "vault";
23
+ readonly id: "vault";
24
+ readonly src: string;
25
+ readonly figmaNodeId: "199745:174625";
26
+ }, {
27
+ readonly name: "Trajectory";
28
+ readonly id: "trajectory";
29
+ readonly src: string;
30
+ readonly figmaNodeId: "199745:174620";
31
+ }, {
32
+ readonly name: "Terminal";
33
+ readonly id: "terminal";
34
+ readonly src: string;
35
+ readonly figmaNodeId: "199745:174608";
36
+ }, {
37
+ readonly name: "Spaces";
38
+ readonly id: "spaces";
39
+ readonly src: string;
40
+ readonly figmaNodeId: "199745:174633";
41
+ }, {
42
+ readonly name: "Notes";
43
+ readonly id: "notes";
44
+ readonly src: string;
45
+ readonly figmaNodeId: "199745:174626";
46
+ }, {
47
+ readonly name: "Settings";
48
+ readonly id: "settings";
49
+ readonly src: string;
50
+ readonly figmaNodeId: "199745:174617";
51
+ }, {
52
+ readonly name: "Sheets";
53
+ readonly id: "sheets";
54
+ readonly src: string;
55
+ readonly figmaNodeId: "199745:174628";
56
+ }, {
57
+ readonly name: "Salis Verify";
58
+ readonly id: "salis-verify";
59
+ readonly src: string;
60
+ readonly figmaNodeId: "199745:174623";
61
+ }, {
62
+ readonly name: "Salis";
63
+ readonly id: "salis";
64
+ readonly src: string;
65
+ readonly figmaNodeId: "199745:174622";
66
+ }, {
67
+ readonly name: "Notifications";
68
+ readonly id: "notifications";
69
+ readonly src: string;
70
+ readonly figmaNodeId: "199745:174614";
71
+ }, {
72
+ readonly name: "Sledes";
73
+ readonly id: "sledes";
74
+ readonly src: string;
75
+ readonly figmaNodeId: "199745:174609";
76
+ }, {
77
+ readonly name: "Magna IDE";
78
+ readonly id: "magna-ide";
79
+ readonly src: string;
80
+ readonly figmaNodeId: "199745:174616";
81
+ }, {
82
+ readonly name: "Tasks";
83
+ readonly id: "tasks";
84
+ readonly src: string;
85
+ readonly figmaNodeId: "199745:174630";
86
+ }, {
87
+ readonly name: "Connect Ai";
88
+ readonly id: "connect-ai";
89
+ readonly src: string;
90
+ readonly figmaNodeId: "199745:174627";
91
+ }, {
92
+ readonly name: "Database";
93
+ readonly id: "database";
94
+ readonly src: string;
95
+ readonly figmaNodeId: "199745:174613";
96
+ }, {
97
+ readonly name: "Docs";
98
+ readonly id: "docs";
99
+ readonly src: string;
100
+ readonly figmaNodeId: "199745:174619";
101
+ }, {
102
+ readonly name: "Expenses";
103
+ readonly id: "expenses";
104
+ readonly src: string;
105
+ readonly figmaNodeId: "199745:174629";
106
+ }, {
107
+ readonly name: "Habits";
108
+ readonly id: "habits";
109
+ readonly src: string;
110
+ readonly figmaNodeId: "199745:174611";
111
+ }, {
112
+ readonly name: "Magna music";
113
+ readonly id: "magna-music";
114
+ readonly src: string;
115
+ readonly figmaNodeId: "199745:174610";
116
+ }, {
117
+ readonly name: "Magna Brief";
118
+ readonly id: "magna-brief";
119
+ readonly src: string;
120
+ readonly figmaNodeId: "199745:174607";
121
+ }, {
122
+ readonly name: "Ledger";
123
+ readonly id: "ledger";
124
+ readonly src: string;
125
+ readonly figmaNodeId: "199745:174605";
126
+ }, {
127
+ readonly name: "Hackify";
128
+ readonly id: "hackify";
129
+ readonly src: string;
130
+ readonly figmaNodeId: "199745:174612";
131
+ }, {
132
+ readonly name: "Code";
133
+ readonly id: "code";
134
+ readonly src: string;
135
+ readonly figmaNodeId: "199745:174618";
136
+ }, {
137
+ readonly name: "Connections";
138
+ readonly id: "connections";
139
+ readonly src: string;
140
+ readonly figmaNodeId: "199745:174604";
141
+ }, {
142
+ readonly name: "Brain";
143
+ readonly id: "brain";
144
+ readonly src: string;
145
+ readonly figmaNodeId: "199745:174603";
146
+ }, {
147
+ readonly name: "API Studio";
148
+ readonly id: "api-studio";
149
+ readonly src: string;
150
+ readonly figmaNodeId: "199745:174615";
151
+ }, {
152
+ readonly name: "Approvals";
153
+ readonly id: "approvals";
154
+ readonly src: string;
155
+ readonly figmaNodeId: "199745:174602";
156
+ }, {
157
+ readonly name: "App Store";
158
+ readonly id: "app-store";
159
+ readonly src: string;
160
+ readonly figmaNodeId: "199745:174601";
161
+ }, {
162
+ readonly name: "Magna Voice";
163
+ readonly id: "magna-voice";
164
+ readonly src: string;
165
+ readonly figmaNodeId: "199745:174600";
166
+ }, {
167
+ readonly name: "Mail";
168
+ readonly id: "mail";
169
+ readonly src: string;
170
+ readonly figmaNodeId: "199745:174598";
171
+ }, {
172
+ readonly name: "Models";
173
+ readonly id: "models";
174
+ readonly src: string;
175
+ readonly figmaNodeId: "199745:174597";
176
+ }, {
177
+ readonly name: "Magna studio";
178
+ readonly id: "magna-studio";
179
+ readonly src: string;
180
+ readonly figmaNodeId: "199745:174596";
181
+ }, {
182
+ readonly name: "Assistant";
183
+ readonly id: "assistant";
184
+ readonly src: string;
185
+ readonly figmaNodeId: "199745:174595";
186
+ }, {
187
+ readonly name: "Browser";
188
+ readonly id: "browser";
189
+ readonly src: string;
190
+ readonly figmaNodeId: "199745:174606";
191
+ }, {
192
+ readonly name: "Agent Studio";
193
+ readonly id: "agent-studio";
194
+ readonly src: string;
195
+ readonly figmaNodeId: "199745:174632";
196
+ }, {
197
+ readonly name: "Task Manager";
198
+ readonly id: "task-manager";
199
+ readonly src: string;
200
+ readonly figmaNodeId: "199745:174599";
201
+ }];
202
+ export type MagnaAppId = (typeof magnaApps)[number]['id'];
@@ -0,0 +1,243 @@
1
+ import { resolveMagnaAsset as __resolveMagnaAsset_1 } from "../../magna-assets.js";
2
+ export const magnaApps = [
3
+ {
4
+ name: 'Today',
5
+ id: 'today',
6
+ src: __resolveMagnaAsset_1('/magna/today.png'),
7
+ figmaNodeId: '199745:174634',
8
+ },
9
+ {
10
+ name: 'workflow',
11
+ id: 'workflow',
12
+ src: __resolveMagnaAsset_1('/magna/workflow.png'),
13
+ figmaNodeId: '199745:174631',
14
+ },
15
+ {
16
+ name: 'what can i do ?',
17
+ id: 'what-can-i-do',
18
+ src: __resolveMagnaAsset_1('/magna/what-can-i-do.png'),
19
+ figmaNodeId: '199745:174621',
20
+ },
21
+ {
22
+ name: 'wafir',
23
+ id: 'wafir',
24
+ src: __resolveMagnaAsset_1('/magna/wafir.png'),
25
+ figmaNodeId: '199745:174624',
26
+ },
27
+ {
28
+ name: 'vault',
29
+ id: 'vault',
30
+ src: __resolveMagnaAsset_1('/magna/vault.png'),
31
+ figmaNodeId: '199745:174625',
32
+ },
33
+ {
34
+ name: 'Trajectory',
35
+ id: 'trajectory',
36
+ src: __resolveMagnaAsset_1('/magna/trajectory.png'),
37
+ figmaNodeId: '199745:174620',
38
+ },
39
+ {
40
+ name: 'Terminal',
41
+ id: 'terminal',
42
+ src: __resolveMagnaAsset_1('/magna/terminal.png'),
43
+ figmaNodeId: '199745:174608',
44
+ },
45
+ {
46
+ name: 'Spaces',
47
+ id: 'spaces',
48
+ src: __resolveMagnaAsset_1('/magna/spaces.png'),
49
+ figmaNodeId: '199745:174633',
50
+ },
51
+ {
52
+ name: 'Notes',
53
+ id: 'notes',
54
+ src: __resolveMagnaAsset_1('/magna/notes.png'),
55
+ figmaNodeId: '199745:174626',
56
+ },
57
+ {
58
+ name: 'Settings',
59
+ id: 'settings',
60
+ src: __resolveMagnaAsset_1('/magna/settings.png'),
61
+ figmaNodeId: '199745:174617',
62
+ },
63
+ {
64
+ name: 'Sheets',
65
+ id: 'sheets',
66
+ src: __resolveMagnaAsset_1('/magna/sheets.png'),
67
+ figmaNodeId: '199745:174628',
68
+ },
69
+ {
70
+ name: 'Salis Verify',
71
+ id: 'salis-verify',
72
+ src: __resolveMagnaAsset_1('/magna/salis-verify.png'),
73
+ figmaNodeId: '199745:174623',
74
+ },
75
+ {
76
+ name: 'Salis',
77
+ id: 'salis',
78
+ src: __resolveMagnaAsset_1('/magna/salis.png'),
79
+ figmaNodeId: '199745:174622',
80
+ },
81
+ {
82
+ name: 'Notifications',
83
+ id: 'notifications',
84
+ src: __resolveMagnaAsset_1('/magna/notifications.png'),
85
+ figmaNodeId: '199745:174614',
86
+ },
87
+ {
88
+ name: 'Sledes',
89
+ id: 'sledes',
90
+ src: __resolveMagnaAsset_1('/magna/sledes.png'),
91
+ figmaNodeId: '199745:174609',
92
+ },
93
+ {
94
+ name: 'Magna IDE',
95
+ id: 'magna-ide',
96
+ src: __resolveMagnaAsset_1('/magna/magna-ide.png'),
97
+ figmaNodeId: '199745:174616',
98
+ },
99
+ {
100
+ name: 'Tasks',
101
+ id: 'tasks',
102
+ src: __resolveMagnaAsset_1('/magna/tasks.png'),
103
+ figmaNodeId: '199745:174630',
104
+ },
105
+ {
106
+ name: 'Connect Ai',
107
+ id: 'connect-ai',
108
+ src: __resolveMagnaAsset_1('/magna/connect-ai.png'),
109
+ figmaNodeId: '199745:174627',
110
+ },
111
+ {
112
+ name: 'Database',
113
+ id: 'database',
114
+ src: __resolveMagnaAsset_1('/magna/database.png'),
115
+ figmaNodeId: '199745:174613',
116
+ },
117
+ {
118
+ name: 'Docs',
119
+ id: 'docs',
120
+ src: __resolveMagnaAsset_1('/magna/docs.png'),
121
+ figmaNodeId: '199745:174619',
122
+ },
123
+ {
124
+ name: 'Expenses',
125
+ id: 'expenses',
126
+ src: __resolveMagnaAsset_1('/magna/expenses.png'),
127
+ figmaNodeId: '199745:174629',
128
+ },
129
+ {
130
+ name: 'Habits',
131
+ id: 'habits',
132
+ src: __resolveMagnaAsset_1('/magna/habits.png'),
133
+ figmaNodeId: '199745:174611',
134
+ },
135
+ {
136
+ name: 'Magna music',
137
+ id: 'magna-music',
138
+ src: __resolveMagnaAsset_1('/magna/magna-music.png'),
139
+ figmaNodeId: '199745:174610',
140
+ },
141
+ {
142
+ name: 'Magna Brief',
143
+ id: 'magna-brief',
144
+ src: __resolveMagnaAsset_1('/magna/magna-brief.png'),
145
+ figmaNodeId: '199745:174607',
146
+ },
147
+ {
148
+ name: 'Ledger',
149
+ id: 'ledger',
150
+ src: __resolveMagnaAsset_1('/magna/ledger.png'),
151
+ figmaNodeId: '199745:174605',
152
+ },
153
+ {
154
+ name: 'Hackify',
155
+ id: 'hackify',
156
+ src: __resolveMagnaAsset_1('/magna/hackify.png'),
157
+ figmaNodeId: '199745:174612',
158
+ },
159
+ {
160
+ name: 'Code',
161
+ id: 'code',
162
+ src: __resolveMagnaAsset_1('/magna/code.png'),
163
+ figmaNodeId: '199745:174618',
164
+ },
165
+ {
166
+ name: 'Connections',
167
+ id: 'connections',
168
+ src: __resolveMagnaAsset_1('/magna/connections.png'),
169
+ figmaNodeId: '199745:174604',
170
+ },
171
+ {
172
+ name: 'Brain',
173
+ id: 'brain',
174
+ src: __resolveMagnaAsset_1('/magna/brain.png'),
175
+ figmaNodeId: '199745:174603',
176
+ },
177
+ {
178
+ name: 'API Studio',
179
+ id: 'api-studio',
180
+ src: __resolveMagnaAsset_1('/magna/api-studio.png'),
181
+ figmaNodeId: '199745:174615',
182
+ },
183
+ {
184
+ name: 'Approvals',
185
+ id: 'approvals',
186
+ src: __resolveMagnaAsset_1('/magna/approvals.png'),
187
+ figmaNodeId: '199745:174602',
188
+ },
189
+ {
190
+ name: 'App Store',
191
+ id: 'app-store',
192
+ src: __resolveMagnaAsset_1('/magna/app-store.png'),
193
+ figmaNodeId: '199745:174601',
194
+ },
195
+ {
196
+ name: 'Magna Voice',
197
+ id: 'magna-voice',
198
+ src: __resolveMagnaAsset_1('/magna/magna-voice.png'),
199
+ figmaNodeId: '199745:174600',
200
+ },
201
+ {
202
+ name: 'Mail',
203
+ id: 'mail',
204
+ src: __resolveMagnaAsset_1('/magna/mail.png'),
205
+ figmaNodeId: '199745:174598',
206
+ },
207
+ {
208
+ name: 'Models',
209
+ id: 'models',
210
+ src: __resolveMagnaAsset_1('/magna/models.png'),
211
+ figmaNodeId: '199745:174597',
212
+ },
213
+ {
214
+ name: 'Magna studio',
215
+ id: 'magna-studio',
216
+ src: __resolveMagnaAsset_1('/magna/magna-studio.png'),
217
+ figmaNodeId: '199745:174596',
218
+ },
219
+ {
220
+ name: 'Assistant',
221
+ id: 'assistant',
222
+ src: __resolveMagnaAsset_1('/magna/assistant.png'),
223
+ figmaNodeId: '199745:174595',
224
+ },
225
+ {
226
+ name: 'Browser',
227
+ id: 'browser',
228
+ src: __resolveMagnaAsset_1('/magna/browser.png'),
229
+ figmaNodeId: '199745:174606',
230
+ },
231
+ {
232
+ name: 'Agent Studio',
233
+ id: 'agent-studio',
234
+ src: __resolveMagnaAsset_1('/magna/agent-studio.png'),
235
+ figmaNodeId: '199745:174632',
236
+ },
237
+ {
238
+ name: 'Task Manager',
239
+ id: 'task-manager',
240
+ src: __resolveMagnaAsset_1('/magna/task-manager.png'),
241
+ figmaNodeId: '199745:174599',
242
+ },
243
+ ];
@@ -0,0 +1,12 @@
1
+ import type { ChatComposerStatus } from "./chat-composer.js";
2
+ export interface ChatActivityProps {
3
+ status?: ChatComposerStatus;
4
+ voiceLevel?: number | (() => number);
5
+ recordingSeconds?: number;
6
+ interactions?: boolean;
7
+ disabled?: boolean;
8
+ dir?: 'ltr' | 'rtl';
9
+ className?: string;
10
+ }
11
+ /** Render in the message area, separately from the persistent ChatComposer. */
12
+ export declare function ChatActivity({ status, voiceLevel, recordingSeconds, interactions, disabled, dir, className, }: ChatActivityProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,29 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { ThinkingOrb } from "../interactions/thinking-orb.js";
4
+ import { cn } from "../../utils/cn.js";
5
+ import { VoiceOrb } from "./voice-orb.js";
6
+ import styles from "./chat-composer.module.css";
7
+ /** Render in the message area, separately from the persistent ChatComposer. */
8
+ export function ChatActivity({ status = 'idle', voiceLevel = 0, recordingSeconds = 0, interactions = true, disabled = false, dir = 'ltr', className, }) {
9
+ if (status === 'idle')
10
+ return null;
11
+ const voice = status === 'listening' || status === 'speaking';
12
+ const label = status === 'thinking'
13
+ ? 'Magna is thinking'
14
+ : status === 'recording'
15
+ ? 'Recording message'
16
+ : status === 'listening'
17
+ ? 'Listening'
18
+ : 'Magna is speaking';
19
+ const seconds = Math.max(0, Math.floor(Number.isFinite(recordingSeconds) ? recordingSeconds : 0));
20
+ const elapsed = `${Math.floor(seconds / 60)
21
+ .toString()
22
+ .padStart(2, '0')}:${(seconds % 60).toString().padStart(2, '0')}`;
23
+ return (_jsxs("div", { role: 'group', "aria-label": 'Message activity', dir: dir, className: cn('w-full text-text-sub-600', voice
24
+ ? 'flex flex-col items-center gap-4 py-6 text-center'
25
+ : 'space-y-3 py-2', className), children: [voice && interactions && (_jsx(VoiceOrb, { state: status, level: voiceLevel, paused: disabled })), _jsxs("div", { className: 'flex items-center gap-2 text-label-sm', children: [status === 'thinking' && interactions && (_jsx("span", { "aria-hidden": 'true', className: 'shrink-0', children: _jsx(ThinkingOrb, { state: 'weaving', size: 20, paused: disabled }) })), _jsx("span", { children: label })] }), status === 'recording' && (_jsxs("div", { className: 'flex max-w-[280px] items-center gap-4', children: [interactions && (_jsx("span", { "aria-hidden": 'true', className: cn(styles.waveform, 'min-w-0 flex-1 text-success-base'), "data-paused": disabled || undefined, children: [
26
+ 8, 14, 23, 17, 28, 20, 12, 24, 32, 18, 27, 15, 22, 10, 18, 26,
27
+ 12,
28
+ ].map((height, index) => (_jsx("span", { style: { height, animationDelay: `${index * -0.11}s` } }, index))) })), _jsx("time", { dateTime: `PT${seconds}S`, "aria-label": `Recording duration ${Math.floor(seconds / 60)} minutes ${seconds % 60} seconds`, "aria-live": 'off', dir: 'ltr', className: 'shrink-0 font-mono text-label-sm tabular-nums', children: elapsed })] }))] }));
29
+ }
@@ -0,0 +1,31 @@
1
+ import * as React from "react";
2
+ export type ChatComposerStatus = 'idle' | 'thinking' | 'recording' | 'listening' | 'speaking';
3
+ export interface ChatComposerProps {
4
+ onSend: (message: string) => void;
5
+ onAttach?: () => void;
6
+ onMicrophone?: () => void;
7
+ onVoice?: () => void;
8
+ models?: string[];
9
+ model?: string;
10
+ onModelChange?: (model: string) => void;
11
+ /** Controlled draft; omit to keep the draft inside the composer. */
12
+ value?: string;
13
+ onValueChange?: (value: string) => void;
14
+ /** Controlled activity state. The consuming app supplies voice and AI services. */
15
+ status?: ChatComposerStatus;
16
+ /** A manual audio level from 0 to 1, or a getter sampled by the voice effect. */
17
+ voiceLevel?: number | (() => number);
18
+ onStop?: () => void;
19
+ /** Elapsed time for the confirm action title; show the visible timer in ChatActivity. */
20
+ recordingSeconds?: number;
21
+ /** Confirm dictation; the app can transcribe it into the controlled draft. */
22
+ onRecordingConfirm?: () => void;
23
+ onRecordingCancel?: () => void;
24
+ /** Show decorative composer effects; action controls and accessible status remain. */
25
+ interactions?: boolean;
26
+ disabled?: boolean;
27
+ dir?: 'ltr' | 'rtl';
28
+ className?: string;
29
+ }
30
+ /** Figma Chat Area 199714:167265. Services are supplied by the consuming app. */
31
+ export declare const ChatComposer: React.ForwardRefExoticComponent<ChatComposerProps & React.RefAttributes<HTMLTextAreaElement>>;
@@ -0,0 +1,122 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { resolveMagnaAsset as __resolveMagnaAsset_1 } from "../../magna-assets.js";
4
+ import * as React from "react";
5
+ import { BorderBeam } from "../interactions/border-beam.js";
6
+ import { VoiceBeam } from "../interactions/voice-beam.js";
7
+ import * as Select from "../ui/select.js";
8
+ import { cn } from "../../utils/cn.js";
9
+ function Action({ label, icon, onClick, disabled, filled = false, }) {
10
+ return (_jsx("button", { type: 'button', "aria-label": label, title: label, onClick: onClick, disabled: disabled || !onClick, className: cn('flex size-[34px] shrink-0 items-center justify-center rounded-full transition hover:bg-bg-soft-200 focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary-base disabled:opacity-40', filled && 'bg-bg-strong-950 hover:opacity-80'), children: _jsx("img", { src: __resolveMagnaAsset_1(`/magna/icons/${icon}.svg`), width: 18, height: 18, alt: '', className: cn('size-[18px]', 'dark:invert') }) }));
11
+ }
12
+ /** Figma Chat Area 199714:167265. Services are supplied by the consuming app. */
13
+ export const ChatComposer = React.forwardRef(({ onSend, onAttach, onMicrophone, onVoice, models = ['Magna 1.1'], model, onModelChange, value, onValueChange, status = 'idle', voiceLevel = 0, onStop, recordingSeconds = 0, onRecordingConfirm, onRecordingCancel, interactions = true, disabled, dir = 'ltr', className, }, ref) => {
14
+ const textareaRef = React.useRef(null);
15
+ const setTextareaRef = React.useCallback((node) => {
16
+ textareaRef.current = node;
17
+ if (typeof ref === 'function')
18
+ ref(node);
19
+ else if (ref)
20
+ ref.current = node;
21
+ }, [ref]);
22
+ const [draft, setDraft] = React.useState('');
23
+ const message = value ?? draft;
24
+ const updateMessage = (next) => {
25
+ if (value === undefined)
26
+ setDraft(next);
27
+ onValueChange?.(next);
28
+ };
29
+ const [selectedModel, setSelectedModel] = React.useState(models[0]);
30
+ const busy = status !== 'idle';
31
+ const recording = status === 'recording';
32
+ const voiceActive = status === 'listening' || status === 'speaking';
33
+ const finishActivity = (event, callback) => {
34
+ // A controlled callback can turn this same element into a submit button.
35
+ event.preventDefault();
36
+ if (disabled || !callback)
37
+ return;
38
+ textareaRef.current?.focus();
39
+ callback();
40
+ };
41
+ const elapsedSeconds = Math.max(0, Math.floor(Number.isFinite(recordingSeconds) ? recordingSeconds : 0));
42
+ const elapsed = `${Math.floor(elapsedSeconds / 60)
43
+ .toString()
44
+ .padStart(2, '0')}:${(elapsedSeconds % 60).toString().padStart(2, '0')}`;
45
+ const statusText = status === 'thinking'
46
+ ? 'Magna is thinking'
47
+ : recording
48
+ ? 'Recording message'
49
+ : status === 'listening'
50
+ ? 'Listening'
51
+ : status === 'speaking'
52
+ ? 'Magna is speaking'
53
+ : '';
54
+ const availableModels = Array.from(new Set(models.filter((m) => m.trim())));
55
+ const requestedModel = model ?? selectedModel;
56
+ const currentModel = availableModels.includes(requestedModel)
57
+ ? requestedModel
58
+ : (availableModels[0] ?? '');
59
+ const submit = () => {
60
+ if (disabled || busy || !message.trim())
61
+ return;
62
+ onSend(message.trim());
63
+ updateMessage('');
64
+ };
65
+ return (_jsxs("form", { dir: dir, "aria-label": 'Magna chat composer', onSubmit: (e) => {
66
+ e.preventDefault();
67
+ submit();
68
+ }, className: cn('relative isolate w-full max-w-[700px] rounded-[36px] border border-bg-soft-200 bg-bg-soft-200 p-2.5', className), children: [interactions && (_jsxs("div", { "aria-hidden": 'true', className: 'pointer-events-none absolute inset-0 z-10 overflow-hidden rounded-[36px]', style: { contain: 'paint' }, children: [_jsx(BorderBeam, { active: !disabled && status === 'thinking', colorVariant: 'forest', staticColors: true, borderRadius: 36, strength: 0.85, style: { position: 'absolute', inset: 0 }, children: _jsx("div", { className: 'h-full w-full rounded-[36px]' }) }), _jsx(VoiceBeam, { active: !disabled && (voiceActive || recording), paused: disabled, level: voiceLevel, colorVariant: 'forest', staticColors: true, bandColors: {
69
+ core: '#effff6',
70
+ above: '#18a86c',
71
+ mid: '#70dda5',
72
+ below: '#079662',
73
+ }, borderRadius: 36, strength: 0.65, scale: 0.7, style: {
74
+ position: 'absolute',
75
+ inset: 0,
76
+ maskImage: 'linear-gradient(to top, black 0, black 10px, transparent 30px)',
77
+ WebkitMaskImage: 'linear-gradient(to top, black 0, black 10px, transparent 30px)',
78
+ }, children: _jsx("div", { className: 'h-full w-full rounded-[36px]' }) })] })), _jsxs("div", { className: 'relative z-0 rounded-[28px] bg-bg-white-0 px-3 pb-3 pt-3.5 shadow-regular-sm', children: [_jsx("div", { role: 'status', "aria-atomic": 'true', className: 'sr-only', children: statusText }), _jsxs("div", { children: [_jsx("textarea", { ref: setTextareaRef, "aria-label": 'Message Magna', placeholder: 'New chat with Magna', value: message, onChange: (e) => updateMessage(e.target.value), disabled: disabled, rows: 1, onKeyDown: (e) => {
79
+ if (e.key === 'Enter' &&
80
+ !e.shiftKey &&
81
+ !e.nativeEvent.isComposing) {
82
+ e.preventDefault();
83
+ submit();
84
+ }
85
+ }, className: 'mb-[25px] block min-h-6 w-full resize-none border-0 bg-transparent px-1 text-paragraph-md text-text-strong-950 outline-none placeholder:text-text-soft-400 disabled:opacity-50' }), _jsxs("div", { className: 'flex flex-nowrap items-center gap-2 sm:flex-wrap', children: [_jsxs("div", { className: 'flex min-w-0 shrink-0 items-center gap-1 sm:flex-1', children: [_jsx(Action, { label: 'Attach file', icon: 'add', onClick: onAttach, disabled: disabled || busy }), _jsxs("span", { title: 'Private Sovereignty', className: 'flex items-center gap-1 whitespace-nowrap text-[13px] font-medium text-text-soft-400', children: [_jsx("img", { src: __resolveMagnaAsset_1("/magna/icons/shield.svg"), alt: '', width: 16, height: 16, className: 'size-4' }), _jsx("span", { className: 'sr-only sm:not-sr-only', children: "Private Sovereignty" })] })] }), _jsxs("div", { className: 'flex min-w-0 flex-1 items-center justify-end gap-1.5 sm:flex-none', children: [_jsxs(Select.Root, { variant: 'compact', size: 'xsmall', dir: dir, value: currentModel, disabled: disabled || busy || availableModels.length === 0, onValueChange: (nextModel) => {
86
+ if (!availableModels.includes(nextModel))
87
+ return;
88
+ setSelectedModel(nextModel);
89
+ onModelChange?.(nextModel);
90
+ }, children: [_jsx(Select.Trigger, { "aria-label": 'Chat model', className: 'h-[34px] max-w-36 shrink text-start text-label-sm', children: _jsx("span", { className: 'min-w-0 truncate', children: _jsx(Select.Value, { placeholder: 'Select model' }) }) }), _jsx(Select.Content, { align: 'end', className: 'min-w-[180px]', children: availableModels.map((m) => (_jsx(Select.Item, { value: m, children: m }, m))) })] }), _jsx("button", { type: 'button', "aria-label": recording ? 'Cancel recording' : 'Record message', title: recording ? 'Cancel recording' : 'Record message', onClick: recording
91
+ ? (event) => finishActivity(event, onRecordingCancel)
92
+ : onMicrophone, disabled: disabled ||
93
+ (recording ? !onRecordingCancel : busy || !onMicrophone), className: 'flex size-[34px] shrink-0 items-center justify-center rounded-full text-text-sub-600 transition hover:bg-bg-soft-200 focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary-base disabled:opacity-40', children: recording ? (_jsx("svg", { width: '18', height: '18', viewBox: '0 0 24 24', fill: 'none', "aria-hidden": 'true', children: _jsx("path", { d: 'm6 6 12 12M18 6 6 18', stroke: 'currentColor', strokeWidth: '2', strokeLinecap: 'round' }) })) : (
94
+ // eslint-disable-next-line @next/next/no-img-element
95
+ _jsx("img", { src: __resolveMagnaAsset_1("/magna/icons/mic.svg"), width: 18, height: 18, alt: '', className: 'size-[18px] dark:invert' })) }), _jsx("button", { type: busy || !message.trim() ? 'button' : 'submit', "aria-label": recording
96
+ ? 'Use recording'
97
+ : voiceActive
98
+ ? 'End voice chat'
99
+ : status === 'thinking'
100
+ ? 'Stop response'
101
+ : message.trim()
102
+ ? 'Send message'
103
+ : 'Start voice chat', title: recording
104
+ ? `Use recording (${elapsed})`
105
+ : voiceActive
106
+ ? 'End voice chat'
107
+ : status === 'thinking'
108
+ ? 'Stop response'
109
+ : message.trim()
110
+ ? 'Send message'
111
+ : 'Start voice chat', onClick: busy
112
+ ? (event) => finishActivity(event, recording ? onRecordingConfirm : onStop)
113
+ : message.trim()
114
+ ? undefined
115
+ : onVoice, disabled: disabled ||
116
+ (busy
117
+ ? !(recording ? onRecordingConfirm : onStop)
118
+ : !message.trim() && !onVoice), className: 'flex size-[34px] shrink-0 items-center justify-center rounded-full bg-bg-strong-950 text-text-white-0 transition hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary-base disabled:opacity-40', children: recording ? (_jsx("svg", { width: '18', height: '18', viewBox: '0 0 24 24', fill: 'none', "aria-hidden": 'true', children: _jsx("path", { d: 'm5 12 4 4L19 6', stroke: 'currentColor', strokeWidth: '2', strokeLinecap: 'round', strokeLinejoin: 'round' }) })) : busy ? (_jsx("span", { "aria-hidden": 'true', className: 'size-3 rounded-sm bg-current' })) : message.trim() ? (_jsx("svg", { width: '18', height: '18', viewBox: '0 0 24 24', fill: 'none', "aria-hidden": 'true', children: _jsx("path", { d: 'M12 19V5m-6 6 6-6 6 6', stroke: 'currentColor', strokeWidth: '2', strokeLinecap: 'round', strokeLinejoin: 'round' }) })) : (
119
+ // eslint-disable-next-line @next/next/no-img-element
120
+ _jsx("img", { src: __resolveMagnaAsset_1("/magna/icons/voice.svg"), width: 18, height: 18, alt: '', className: 'size-[18px] dark:invert' })) })] })] })] })] })] }));
121
+ });
122
+ ChatComposer.displayName = 'ChatComposer';