@hanzo/ui 8.29.45 → 8.30.3

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 (954) hide show
  1. package/dist/agents/Attachments.cjs +13 -3
  2. package/dist/agents/Attachments.d.ts +1 -1
  3. package/dist/agents/Attachments.d.ts.map +1 -1
  4. package/dist/agents/Attachments.js +13 -3
  5. package/dist/agents/Attachments.js.map +1 -1
  6. package/dist/agents/Board.cjs +9 -5
  7. package/dist/agents/Board.d.ts.map +1 -1
  8. package/dist/agents/Board.js +9 -5
  9. package/dist/agents/Board.js.map +1 -1
  10. package/dist/agents/ChannelMembers.cjs +66 -1
  11. package/dist/agents/ChannelMembers.d.ts.map +1 -1
  12. package/dist/agents/ChannelMembers.js +66 -1
  13. package/dist/agents/ChannelMembers.js.map +1 -1
  14. package/dist/agents/ChannelNotes.cjs +38 -2
  15. package/dist/agents/ChannelNotes.d.ts.map +1 -1
  16. package/dist/agents/ChannelNotes.js +38 -2
  17. package/dist/agents/ChannelNotes.js.map +1 -1
  18. package/dist/agents/Choice.cjs +7 -4
  19. package/dist/agents/Choice.d.ts.map +1 -1
  20. package/dist/agents/Choice.js +7 -4
  21. package/dist/agents/Choice.js.map +1 -1
  22. package/dist/agents/Console.cjs +15 -8
  23. package/dist/agents/Console.d.ts +1 -1
  24. package/dist/agents/Console.d.ts.map +1 -1
  25. package/dist/agents/Console.js +15 -8
  26. package/dist/agents/Console.js.map +1 -1
  27. package/dist/agents/DiffViewer.cjs +52 -4
  28. package/dist/agents/DiffViewer.d.ts.map +1 -1
  29. package/dist/agents/DiffViewer.js +52 -4
  30. package/dist/agents/DiffViewer.js.map +1 -1
  31. package/dist/agents/DirectoryModal.cjs +37 -15
  32. package/dist/agents/DirectoryModal.d.ts.map +1 -1
  33. package/dist/agents/DirectoryModal.js +37 -15
  34. package/dist/agents/DirectoryModal.js.map +1 -1
  35. package/dist/agents/DriveViewer.cjs +19 -4
  36. package/dist/agents/DriveViewer.d.ts.map +1 -1
  37. package/dist/agents/DriveViewer.js +20 -5
  38. package/dist/agents/DriveViewer.js.map +1 -1
  39. package/dist/agents/Feedback.cjs +10 -2
  40. package/dist/agents/Feedback.d.ts.map +1 -1
  41. package/dist/agents/Feedback.js +10 -2
  42. package/dist/agents/Feedback.js.map +1 -1
  43. package/dist/agents/FileTabs.cjs +17 -10
  44. package/dist/agents/FileTabs.d.ts.map +1 -1
  45. package/dist/agents/FileTabs.js +17 -10
  46. package/dist/agents/FileTabs.js.map +1 -1
  47. package/dist/agents/FileTree.cjs +9 -6
  48. package/dist/agents/FileTree.d.ts.map +1 -1
  49. package/dist/agents/FileTree.js +9 -6
  50. package/dist/agents/FileTree.js.map +1 -1
  51. package/dist/agents/LiveVoiceCall.cjs +66 -16
  52. package/dist/agents/LiveVoiceCall.d.ts.map +1 -1
  53. package/dist/agents/LiveVoiceCall.js +66 -16
  54. package/dist/agents/LiveVoiceCall.js.map +1 -1
  55. package/dist/agents/MCPHub.cjs +48 -3
  56. package/dist/agents/MCPHub.d.ts.map +1 -1
  57. package/dist/agents/MCPHub.js +48 -3
  58. package/dist/agents/MCPHub.js.map +1 -1
  59. package/dist/agents/Pane.cjs +15 -9
  60. package/dist/agents/Pane.d.ts +1 -1
  61. package/dist/agents/Pane.d.ts.map +1 -1
  62. package/dist/agents/Pane.js +15 -9
  63. package/dist/agents/Pane.js.map +1 -1
  64. package/dist/agents/PreviewFrame.cjs +6 -4
  65. package/dist/agents/PreviewFrame.d.ts.map +1 -1
  66. package/dist/agents/PreviewFrame.js +6 -4
  67. package/dist/agents/PreviewFrame.js.map +1 -1
  68. package/dist/agents/Progress.cjs +4 -2
  69. package/dist/agents/Progress.d.ts.map +1 -1
  70. package/dist/agents/Progress.js +4 -2
  71. package/dist/agents/Progress.js.map +1 -1
  72. package/dist/agents/Screen.cjs +18 -10
  73. package/dist/agents/Screen.d.ts.map +1 -1
  74. package/dist/agents/Screen.js +18 -10
  75. package/dist/agents/Screen.js.map +1 -1
  76. package/dist/agents/ShortcutsSheet.cjs +66 -11
  77. package/dist/agents/ShortcutsSheet.d.ts.map +1 -1
  78. package/dist/agents/ShortcutsSheet.js +66 -11
  79. package/dist/agents/ShortcutsSheet.js.map +1 -1
  80. package/dist/agents/Steer.cjs +7 -4
  81. package/dist/agents/Steer.d.ts.map +1 -1
  82. package/dist/agents/Steer.js +7 -4
  83. package/dist/agents/Steer.js.map +1 -1
  84. package/dist/agents/Suggestions.cjs +5 -2
  85. package/dist/agents/Suggestions.d.ts +1 -1
  86. package/dist/agents/Suggestions.d.ts.map +1 -1
  87. package/dist/agents/Suggestions.js +5 -2
  88. package/dist/agents/Suggestions.js.map +1 -1
  89. package/dist/agents/SwarmBar.cjs +9 -2
  90. package/dist/agents/SwarmBar.d.ts.map +1 -1
  91. package/dist/agents/SwarmBar.js +9 -2
  92. package/dist/agents/SwarmBar.js.map +1 -1
  93. package/dist/agents/TerminalViewer.cjs +74 -6
  94. package/dist/agents/TerminalViewer.d.ts.map +1 -1
  95. package/dist/agents/TerminalViewer.js +74 -6
  96. package/dist/agents/TerminalViewer.js.map +1 -1
  97. package/dist/agents/Transcript.cjs +3 -1
  98. package/dist/agents/Transcript.d.ts.map +1 -1
  99. package/dist/agents/Transcript.js +3 -1
  100. package/dist/agents/Transcript.js.map +1 -1
  101. package/dist/agents/Workspace.cjs +15 -10
  102. package/dist/agents/Workspace.d.ts.map +1 -1
  103. package/dist/agents/Workspace.js +15 -10
  104. package/dist/agents/Workspace.js.map +1 -1
  105. package/dist/auth/SignIn.cjs +17 -8
  106. package/dist/auth/SignIn.d.ts.map +1 -1
  107. package/dist/auth/SignIn.js +15 -6
  108. package/dist/auth/SignIn.js.map +1 -1
  109. package/dist/backdrop/scene.cjs +4 -28
  110. package/dist/backdrop/scene.d.ts +2 -1
  111. package/dist/backdrop/scene.d.ts.map +1 -1
  112. package/dist/backdrop/scene.js +4 -28
  113. package/dist/backdrop/scene.js.map +1 -1
  114. package/dist/backends/gui/advanced-chart.cjs +3 -1
  115. package/dist/backends/gui/advanced-chart.d.ts.map +1 -1
  116. package/dist/backends/gui/advanced-chart.js +3 -1
  117. package/dist/backends/gui/advanced-chart.js.map +1 -1
  118. package/dist/backends/gui/alert.cjs +4 -2
  119. package/dist/backends/gui/alert.d.ts.map +1 -1
  120. package/dist/backends/gui/alert.js +4 -2
  121. package/dist/backends/gui/alert.js.map +1 -1
  122. package/dist/backends/gui/animated-testimonials.cjs +3 -1
  123. package/dist/backends/gui/animated-testimonials.d.ts.map +1 -1
  124. package/dist/backends/gui/animated-testimonials.js +3 -1
  125. package/dist/backends/gui/animated-testimonials.js.map +1 -1
  126. package/dist/backends/gui/announcement.cjs +4 -2
  127. package/dist/backends/gui/announcement.d.ts +0 -13
  128. package/dist/backends/gui/announcement.d.ts.map +1 -1
  129. package/dist/backends/gui/announcement.js +4 -2
  130. package/dist/backends/gui/announcement.js.map +1 -1
  131. package/dist/backends/gui/apple-cards-carousel.cjs +31 -12
  132. package/dist/backends/gui/apple-cards-carousel.d.ts +1 -1
  133. package/dist/backends/gui/apple-cards-carousel.d.ts.map +1 -1
  134. package/dist/backends/gui/apple-cards-carousel.js +31 -12
  135. package/dist/backends/gui/apple-cards-carousel.js.map +1 -1
  136. package/dist/backends/gui/apple-hello-effect.cjs +5 -2
  137. package/dist/backends/gui/apple-hello-effect.d.ts.map +1 -1
  138. package/dist/backends/gui/apple-hello-effect.js +5 -2
  139. package/dist/backends/gui/apple-hello-effect.js.map +1 -1
  140. package/dist/backends/gui/banner.cjs +7 -4
  141. package/dist/backends/gui/banner.d.ts +0 -30
  142. package/dist/backends/gui/banner.d.ts.map +1 -1
  143. package/dist/backends/gui/banner.js +7 -4
  144. package/dist/backends/gui/banner.js.map +1 -1
  145. package/dist/backends/gui/breadcrumb.cjs +5 -1
  146. package/dist/backends/gui/breadcrumb.d.ts +1 -1
  147. package/dist/backends/gui/breadcrumb.d.ts.map +1 -1
  148. package/dist/backends/gui/breadcrumb.js +5 -1
  149. package/dist/backends/gui/breadcrumb.js.map +1 -1
  150. package/dist/backends/gui/calendar.cjs +10 -21
  151. package/dist/backends/gui/calendar.d.ts.map +1 -1
  152. package/dist/backends/gui/calendar.js +10 -21
  153. package/dist/backends/gui/calendar.js.map +1 -1
  154. package/dist/backends/gui/carousel.cjs +25 -7
  155. package/dist/backends/gui/carousel.d.ts.map +1 -1
  156. package/dist/backends/gui/carousel.js +25 -7
  157. package/dist/backends/gui/carousel.js.map +1 -1
  158. package/dist/backends/gui/code-block.cjs +37 -16
  159. package/dist/backends/gui/code-block.d.ts.map +1 -1
  160. package/dist/backends/gui/code-block.js +37 -16
  161. package/dist/backends/gui/code-block.js.map +1 -1
  162. package/dist/backends/gui/code-editor.cjs +92 -75
  163. package/dist/backends/gui/code-editor.d.ts +2 -2
  164. package/dist/backends/gui/code-editor.d.ts.map +1 -1
  165. package/dist/backends/gui/code-editor.js +94 -77
  166. package/dist/backends/gui/code-editor.js.map +1 -1
  167. package/dist/backends/gui/code-tabs.cjs +3 -1
  168. package/dist/backends/gui/code-tabs.d.ts.map +1 -1
  169. package/dist/backends/gui/code-tabs.js +3 -1
  170. package/dist/backends/gui/code-tabs.js.map +1 -1
  171. package/dist/backends/gui/combobox.cjs +7 -4
  172. package/dist/backends/gui/combobox.d.ts.map +1 -1
  173. package/dist/backends/gui/combobox.js +7 -4
  174. package/dist/backends/gui/combobox.js.map +1 -1
  175. package/dist/backends/gui/command.cjs +6 -2
  176. package/dist/backends/gui/command.d.ts.map +1 -1
  177. package/dist/backends/gui/command.js +6 -2
  178. package/dist/backends/gui/command.js.map +1 -1
  179. package/dist/backends/gui/company-profile.cjs +3 -1
  180. package/dist/backends/gui/company-profile.d.ts.map +1 -1
  181. package/dist/backends/gui/company-profile.js +3 -1
  182. package/dist/backends/gui/company-profile.js.map +1 -1
  183. package/dist/backends/gui/country-select.cjs +4 -1
  184. package/dist/backends/gui/country-select.d.ts +1 -1
  185. package/dist/backends/gui/country-select.d.ts.map +1 -1
  186. package/dist/backends/gui/country-select.js +4 -1
  187. package/dist/backends/gui/country-select.js.map +1 -1
  188. package/dist/backends/gui/credit-card.cjs +4 -2
  189. package/dist/backends/gui/credit-card.d.ts.map +1 -1
  190. package/dist/backends/gui/credit-card.js +4 -2
  191. package/dist/backends/gui/credit-card.js.map +1 -1
  192. package/dist/backends/gui/crypto-market.cjs +5 -3
  193. package/dist/backends/gui/crypto-market.d.ts.map +1 -1
  194. package/dist/backends/gui/crypto-market.js +5 -3
  195. package/dist/backends/gui/crypto-market.js.map +1 -1
  196. package/dist/backends/gui/crypto-screener.cjs +3 -1
  197. package/dist/backends/gui/crypto-screener.d.ts.map +1 -1
  198. package/dist/backends/gui/crypto-screener.js +3 -1
  199. package/dist/backends/gui/crypto-screener.js.map +1 -1
  200. package/dist/backends/gui/currency-picker.cjs +6 -3
  201. package/dist/backends/gui/currency-picker.d.ts +1 -1
  202. package/dist/backends/gui/currency-picker.d.ts.map +1 -1
  203. package/dist/backends/gui/currency-picker.js +6 -3
  204. package/dist/backends/gui/currency-picker.js.map +1 -1
  205. package/dist/backends/gui/data-table.cjs +46 -17
  206. package/dist/backends/gui/data-table.d.ts.map +1 -1
  207. package/dist/backends/gui/data-table.js +47 -18
  208. package/dist/backends/gui/data-table.js.map +1 -1
  209. package/dist/backends/gui/date-picker.cjs +8 -17
  210. package/dist/backends/gui/date-picker.d.ts.map +1 -1
  211. package/dist/backends/gui/date-picker.js +8 -17
  212. package/dist/backends/gui/date-picker.js.map +1 -1
  213. package/dist/backends/gui/desktop-spotlight.cjs +7 -3
  214. package/dist/backends/gui/desktop-spotlight.d.ts +1 -1
  215. package/dist/backends/gui/desktop-spotlight.d.ts.map +1 -1
  216. package/dist/backends/gui/desktop-spotlight.js +7 -3
  217. package/dist/backends/gui/desktop-spotlight.js.map +1 -1
  218. package/dist/backends/gui/desktop-window.cjs +7 -5
  219. package/dist/backends/gui/desktop-window.d.ts +1 -1
  220. package/dist/backends/gui/desktop-window.d.ts.map +1 -1
  221. package/dist/backends/gui/desktop-window.js +7 -5
  222. package/dist/backends/gui/desktop-window.js.map +1 -1
  223. package/dist/backends/gui/dialog-stack.cjs +4 -2
  224. package/dist/backends/gui/dialog-stack.d.ts +1 -1
  225. package/dist/backends/gui/dialog-stack.d.ts.map +1 -1
  226. package/dist/backends/gui/dialog-stack.js +4 -2
  227. package/dist/backends/gui/dialog-stack.js.map +1 -1
  228. package/dist/backends/gui/dialog.cjs +18 -7
  229. package/dist/backends/gui/dialog.d.ts +2 -2
  230. package/dist/backends/gui/dialog.d.ts.map +1 -1
  231. package/dist/backends/gui/dialog.js +19 -8
  232. package/dist/backends/gui/dialog.js.map +1 -1
  233. package/dist/backends/gui/drawer.cjs +12 -7
  234. package/dist/backends/gui/drawer.d.ts +1 -1
  235. package/dist/backends/gui/drawer.d.ts.map +1 -1
  236. package/dist/backends/gui/drawer.js +12 -7
  237. package/dist/backends/gui/drawer.js.map +1 -1
  238. package/dist/backends/gui/dropdown-menu.cjs +84 -59
  239. package/dist/backends/gui/dropdown-menu.d.ts +13 -13
  240. package/dist/backends/gui/dropdown-menu.d.ts.map +1 -1
  241. package/dist/backends/gui/dropdown-menu.js +87 -62
  242. package/dist/backends/gui/dropdown-menu.js.map +1 -1
  243. package/dist/backends/gui/dropzone.cjs +6 -4
  244. package/dist/backends/gui/dropzone.d.ts.map +1 -1
  245. package/dist/backends/gui/dropzone.js +6 -4
  246. package/dist/backends/gui/dropzone.js.map +1 -1
  247. package/dist/backends/gui/editor.cjs +4 -2
  248. package/dist/backends/gui/editor.d.ts.map +1 -1
  249. package/dist/backends/gui/editor.js +4 -2
  250. package/dist/backends/gui/editor.js.map +1 -1
  251. package/dist/backends/gui/financials.cjs +3 -1
  252. package/dist/backends/gui/financials.d.ts.map +1 -1
  253. package/dist/backends/gui/financials.js +3 -1
  254. package/dist/backends/gui/financials.js.map +1 -1
  255. package/dist/backends/gui/forex-screener.cjs +3 -1
  256. package/dist/backends/gui/forex-screener.d.ts.map +1 -1
  257. package/dist/backends/gui/forex-screener.js +3 -1
  258. package/dist/backends/gui/forex-screener.js.map +1 -1
  259. package/dist/backends/gui/gantt.cjs +16 -2
  260. package/dist/backends/gui/gantt.d.ts.map +1 -1
  261. package/dist/backends/gui/gantt.js +16 -2
  262. package/dist/backends/gui/gantt.js.map +1 -1
  263. package/dist/backends/gui/icon-picker.cjs +7 -3
  264. package/dist/backends/gui/icon-picker.d.ts +1 -1
  265. package/dist/backends/gui/icon-picker.d.ts.map +1 -1
  266. package/dist/backends/gui/icon-picker.js +7 -3
  267. package/dist/backends/gui/icon-picker.js.map +1 -1
  268. package/dist/backends/gui/image-crop.cjs +5 -3
  269. package/dist/backends/gui/image-crop.d.ts.map +1 -1
  270. package/dist/backends/gui/image-crop.js +5 -3
  271. package/dist/backends/gui/image-crop.js.map +1 -1
  272. package/dist/backends/gui/image-input.cjs +7 -3
  273. package/dist/backends/gui/image-input.d.ts +1 -1
  274. package/dist/backends/gui/image-input.d.ts.map +1 -1
  275. package/dist/backends/gui/image-input.js +7 -3
  276. package/dist/backends/gui/image-input.js.map +1 -1
  277. package/dist/backends/gui/input.cjs +10 -5
  278. package/dist/backends/gui/input.d.ts +1 -1
  279. package/dist/backends/gui/input.d.ts.map +1 -1
  280. package/dist/backends/gui/input.js +10 -5
  281. package/dist/backends/gui/input.js.map +1 -1
  282. package/dist/backends/gui/json-tree.cjs +51 -24
  283. package/dist/backends/gui/json-tree.d.ts +1 -1
  284. package/dist/backends/gui/json-tree.d.ts.map +1 -1
  285. package/dist/backends/gui/json-tree.js +51 -24
  286. package/dist/backends/gui/json-tree.js.map +1 -1
  287. package/dist/backends/gui/kanban.cjs +65 -15
  288. package/dist/backends/gui/kanban.d.ts.map +1 -1
  289. package/dist/backends/gui/kanban.js +67 -17
  290. package/dist/backends/gui/kanban.js.map +1 -1
  291. package/dist/backends/gui/limelight-nav.cjs +3 -1
  292. package/dist/backends/gui/limelight-nav.d.ts.map +1 -1
  293. package/dist/backends/gui/limelight-nav.js +3 -1
  294. package/dist/backends/gui/limelight-nav.js.map +1 -1
  295. package/dist/backends/gui/message-dock.cjs +5 -3
  296. package/dist/backends/gui/message-dock.d.ts.map +1 -1
  297. package/dist/backends/gui/message-dock.js +6 -4
  298. package/dist/backends/gui/message-dock.js.map +1 -1
  299. package/dist/backends/gui/nav-items.cjs +8 -4
  300. package/dist/backends/gui/nav-items.d.ts.map +1 -1
  301. package/dist/backends/gui/nav-items.js +8 -4
  302. package/dist/backends/gui/nav-items.js.map +1 -1
  303. package/dist/backends/gui/navigation-bar.cjs +16 -5
  304. package/dist/backends/gui/navigation-bar.d.ts.map +1 -1
  305. package/dist/backends/gui/navigation-bar.js +16 -5
  306. package/dist/backends/gui/navigation-bar.js.map +1 -1
  307. package/dist/backends/gui/navigation-menu.cjs +17 -5
  308. package/dist/backends/gui/navigation-menu.d.ts.map +1 -1
  309. package/dist/backends/gui/navigation-menu.js +17 -5
  310. package/dist/backends/gui/navigation-menu.js.map +1 -1
  311. package/dist/backends/gui/news-timeline.cjs +3 -1
  312. package/dist/backends/gui/news-timeline.d.ts.map +1 -1
  313. package/dist/backends/gui/news-timeline.js +3 -1
  314. package/dist/backends/gui/news-timeline.js.map +1 -1
  315. package/dist/backends/gui/number-field.cjs +24 -5
  316. package/dist/backends/gui/number-field.d.ts.map +1 -1
  317. package/dist/backends/gui/number-field.js +24 -5
  318. package/dist/backends/gui/number-field.js.map +1 -1
  319. package/dist/backends/gui/order-entry.cjs +3 -1
  320. package/dist/backends/gui/order-entry.d.ts.map +1 -1
  321. package/dist/backends/gui/order-entry.js +3 -1
  322. package/dist/backends/gui/order-entry.js.map +1 -1
  323. package/dist/backends/gui/orders-history.cjs +23 -5
  324. package/dist/backends/gui/orders-history.d.ts.map +1 -1
  325. package/dist/backends/gui/orders-history.js +23 -5
  326. package/dist/backends/gui/orders-history.js.map +1 -1
  327. package/dist/backends/gui/overflowing-list.cjs +4 -2
  328. package/dist/backends/gui/overflowing-list.d.ts.map +1 -1
  329. package/dist/backends/gui/overflowing-list.js +4 -2
  330. package/dist/backends/gui/overflowing-list.js.map +1 -1
  331. package/dist/backends/gui/pagination.cjs +32 -7
  332. package/dist/backends/gui/pagination.d.ts +0 -12
  333. package/dist/backends/gui/pagination.d.ts.map +1 -1
  334. package/dist/backends/gui/pagination.js +32 -7
  335. package/dist/backends/gui/pagination.js.map +1 -1
  336. package/dist/backends/gui/phone-country-picker.cjs +6 -3
  337. package/dist/backends/gui/phone-country-picker.d.ts +1 -1
  338. package/dist/backends/gui/phone-country-picker.d.ts.map +1 -1
  339. package/dist/backends/gui/phone-country-picker.js +6 -3
  340. package/dist/backends/gui/phone-country-picker.js.map +1 -1
  341. package/dist/backends/gui/pill.cjs +4 -2
  342. package/dist/backends/gui/pill.d.ts.map +1 -1
  343. package/dist/backends/gui/pill.js +5 -3
  344. package/dist/backends/gui/pill.js.map +1 -1
  345. package/dist/backends/gui/pin-list.cjs +3 -1
  346. package/dist/backends/gui/pin-list.d.ts.map +1 -1
  347. package/dist/backends/gui/pin-list.js +3 -1
  348. package/dist/backends/gui/pin-list.js.map +1 -1
  349. package/dist/backends/gui/positions-list.cjs +7 -4
  350. package/dist/backends/gui/positions-list.d.ts.map +1 -1
  351. package/dist/backends/gui/positions-list.js +7 -4
  352. package/dist/backends/gui/positions-list.js.map +1 -1
  353. package/dist/backends/gui/relative-time.cjs +51 -43
  354. package/dist/backends/gui/relative-time.d.ts +7 -0
  355. package/dist/backends/gui/relative-time.d.ts.map +1 -1
  356. package/dist/backends/gui/relative-time.js +51 -43
  357. package/dist/backends/gui/relative-time.js.map +1 -1
  358. package/dist/backends/gui/safari.cjs +7 -4
  359. package/dist/backends/gui/safari.d.ts.map +1 -1
  360. package/dist/backends/gui/safari.js +7 -4
  361. package/dist/backends/gui/safari.js.map +1 -1
  362. package/dist/backends/gui/search-list.cjs +5 -2
  363. package/dist/backends/gui/search-list.d.ts.map +1 -1
  364. package/dist/backends/gui/search-list.js +5 -2
  365. package/dist/backends/gui/search-list.js.map +1 -1
  366. package/dist/backends/gui/select.cjs +8 -2
  367. package/dist/backends/gui/select.d.ts +7 -0
  368. package/dist/backends/gui/select.d.ts.map +1 -1
  369. package/dist/backends/gui/select.js +8 -2
  370. package/dist/backends/gui/select.js.map +1 -1
  371. package/dist/backends/gui/shortcut.cjs +4 -1
  372. package/dist/backends/gui/shortcut.d.ts +1 -1
  373. package/dist/backends/gui/shortcut.d.ts.map +1 -1
  374. package/dist/backends/gui/shortcut.js +4 -1
  375. package/dist/backends/gui/shortcut.js.map +1 -1
  376. package/dist/backends/gui/snippet.cjs +37 -15
  377. package/dist/backends/gui/snippet.d.ts.map +1 -1
  378. package/dist/backends/gui/snippet.js +37 -15
  379. package/dist/backends/gui/snippet.js.map +1 -1
  380. package/dist/backends/gui/stars-scrolling-wheel.cjs +4 -1
  381. package/dist/backends/gui/stars-scrolling-wheel.d.ts +1 -1
  382. package/dist/backends/gui/stars-scrolling-wheel.d.ts.map +1 -1
  383. package/dist/backends/gui/stars-scrolling-wheel.js +4 -1
  384. package/dist/backends/gui/stars-scrolling-wheel.js.map +1 -1
  385. package/dist/backends/gui/stepper.cjs +4 -2
  386. package/dist/backends/gui/stepper.d.ts.map +1 -1
  387. package/dist/backends/gui/stepper.js +4 -2
  388. package/dist/backends/gui/stepper.js.map +1 -1
  389. package/dist/backends/gui/stock-screener.cjs +3 -1
  390. package/dist/backends/gui/stock-screener.d.ts.map +1 -1
  391. package/dist/backends/gui/stock-screener.js +3 -1
  392. package/dist/backends/gui/stock-screener.js.map +1 -1
  393. package/dist/backends/gui/symbol-info.cjs +3 -1
  394. package/dist/backends/gui/symbol-info.d.ts.map +1 -1
  395. package/dist/backends/gui/symbol-info.js +3 -1
  396. package/dist/backends/gui/symbol-info.js.map +1 -1
  397. package/dist/backends/gui/tags.cjs +3 -1
  398. package/dist/backends/gui/tags.d.ts.map +1 -1
  399. package/dist/backends/gui/tags.js +3 -1
  400. package/dist/backends/gui/tags.js.map +1 -1
  401. package/dist/backends/gui/technical-analysis.cjs +3 -1
  402. package/dist/backends/gui/technical-analysis.d.ts.map +1 -1
  403. package/dist/backends/gui/technical-analysis.js +3 -1
  404. package/dist/backends/gui/technical-analysis.js.map +1 -1
  405. package/dist/backends/gui/terminal.cjs +16 -7
  406. package/dist/backends/gui/terminal.d.ts.map +1 -1
  407. package/dist/backends/gui/terminal.js +17 -8
  408. package/dist/backends/gui/terminal.js.map +1 -1
  409. package/dist/backends/gui/toaster.cjs +19 -6
  410. package/dist/backends/gui/toaster.d.ts.map +1 -1
  411. package/dist/backends/gui/toaster.js +20 -7
  412. package/dist/backends/gui/toaster.js.map +1 -1
  413. package/dist/backends/gui/video-player.cjs +6 -14
  414. package/dist/backends/gui/video-player.d.ts.map +1 -1
  415. package/dist/backends/gui/video-player.js +6 -14
  416. package/dist/backends/gui/video-player.js.map +1 -1
  417. package/dist/backends/gui/video.cjs +4 -2
  418. package/dist/backends/gui/video.d.ts.map +1 -1
  419. package/dist/backends/gui/video.js +4 -2
  420. package/dist/backends/gui/video.js.map +1 -1
  421. package/dist/catalog/Shelf.cjs +6 -3
  422. package/dist/catalog/Shelf.d.ts.map +1 -1
  423. package/dist/catalog/Shelf.js +6 -3
  424. package/dist/catalog/Shelf.js.map +1 -1
  425. package/dist/catalog/Tile.cjs +4 -1
  426. package/dist/catalog/Tile.d.ts +1 -1
  427. package/dist/catalog/Tile.d.ts.map +1 -1
  428. package/dist/catalog/Tile.js +4 -1
  429. package/dist/catalog/Tile.js.map +1 -1
  430. package/dist/chat/Chat.cjs +6 -4
  431. package/dist/chat/Chat.d.ts.map +1 -1
  432. package/dist/chat/Chat.js +3 -1
  433. package/dist/chat/Chat.js.map +1 -1
  434. package/dist/chat/Composer.cjs +19 -15
  435. package/dist/chat/Composer.d.ts +2 -2
  436. package/dist/chat/Composer.d.ts.map +1 -1
  437. package/dist/chat/Composer.js +10 -6
  438. package/dist/chat/Composer.js.map +1 -1
  439. package/dist/chat/Dial.cjs +110 -0
  440. package/dist/chat/Dial.d.ts +13 -0
  441. package/dist/chat/Dial.d.ts.map +1 -0
  442. package/dist/chat/Dial.js +108 -0
  443. package/dist/chat/Dial.js.map +1 -0
  444. package/dist/chat/Dictation.cjs +22 -15
  445. package/dist/chat/Dictation.d.ts.map +1 -1
  446. package/dist/chat/Dictation.js +13 -6
  447. package/dist/chat/Dictation.js.map +1 -1
  448. package/dist/chat/EmptyPrompt.cjs +7 -4
  449. package/dist/chat/EmptyPrompt.d.ts +2 -2
  450. package/dist/chat/EmptyPrompt.d.ts.map +1 -1
  451. package/dist/chat/EmptyPrompt.js +7 -4
  452. package/dist/chat/EmptyPrompt.js.map +1 -1
  453. package/dist/chat/Failure.cjs +4 -13
  454. package/dist/chat/Failure.d.ts +2 -1
  455. package/dist/chat/Failure.d.ts.map +1 -1
  456. package/dist/chat/Failure.js +4 -13
  457. package/dist/chat/Failure.js.map +1 -1
  458. package/dist/chat/Families.cjs +14 -7
  459. package/dist/chat/Families.d.ts.map +1 -1
  460. package/dist/chat/Families.js +11 -4
  461. package/dist/chat/Families.js.map +1 -1
  462. package/dist/chat/Header.cjs +9 -5
  463. package/dist/chat/Header.d.ts +2 -0
  464. package/dist/chat/Header.d.ts.map +1 -1
  465. package/dist/chat/Header.js +9 -5
  466. package/dist/chat/Header.js.map +1 -1
  467. package/dist/chat/Home.cjs +4 -2
  468. package/dist/chat/Home.d.ts.map +1 -1
  469. package/dist/chat/Home.js +4 -2
  470. package/dist/chat/Home.js.map +1 -1
  471. package/dist/chat/Inspector.cjs +4 -2
  472. package/dist/chat/Inspector.d.ts +0 -24
  473. package/dist/chat/Inspector.d.ts.map +1 -1
  474. package/dist/chat/Inspector.js +4 -2
  475. package/dist/chat/Inspector.js.map +1 -1
  476. package/dist/chat/Mention.cjs +13 -2
  477. package/dist/chat/Mention.d.ts.map +1 -1
  478. package/dist/chat/Mention.js +13 -2
  479. package/dist/chat/Mention.js.map +1 -1
  480. package/dist/chat/Plus.cjs +46 -31
  481. package/dist/chat/Plus.d.ts +12 -0
  482. package/dist/chat/Plus.d.ts.map +1 -1
  483. package/dist/chat/Plus.js +47 -32
  484. package/dist/chat/Plus.js.map +1 -1
  485. package/dist/chat/Preview.cjs +3 -1
  486. package/dist/chat/Preview.d.ts.map +1 -1
  487. package/dist/chat/Preview.js +3 -1
  488. package/dist/chat/Preview.js.map +1 -1
  489. package/dist/chat/SessionRail.cjs +34 -18
  490. package/dist/chat/SessionRail.d.ts +2 -2
  491. package/dist/chat/SessionRail.d.ts.map +1 -1
  492. package/dist/chat/SessionRail.js +25 -9
  493. package/dist/chat/SessionRail.js.map +1 -1
  494. package/dist/chat/Sidebar.cjs +10 -6
  495. package/dist/chat/Sidebar.d.ts +1 -0
  496. package/dist/chat/Sidebar.d.ts.map +1 -1
  497. package/dist/chat/Sidebar.js +8 -4
  498. package/dist/chat/Sidebar.js.map +1 -1
  499. package/dist/chat/Sources.cjs +4 -2
  500. package/dist/chat/Sources.d.ts.map +1 -1
  501. package/dist/chat/Sources.js +4 -2
  502. package/dist/chat/Sources.js.map +1 -1
  503. package/dist/chat/Tune.cjs +5 -1
  504. package/dist/chat/Tune.d.ts +11 -1
  505. package/dist/chat/Tune.d.ts.map +1 -1
  506. package/dist/chat/Tune.js +5 -1
  507. package/dist/chat/Tune.js.map +1 -1
  508. package/dist/chat/ways.cjs +7 -2
  509. package/dist/chat/ways.d.ts +7 -2
  510. package/dist/chat/ways.d.ts.map +1 -1
  511. package/dist/chat/ways.js +7 -2
  512. package/dist/chat/ways.js.map +1 -1
  513. package/dist/consent/Consent.cjs +65 -31
  514. package/dist/consent/Consent.d.ts.map +1 -1
  515. package/dist/consent/Consent.js +65 -31
  516. package/dist/consent/Consent.js.map +1 -1
  517. package/dist/core/english.cjs +4 -0
  518. package/dist/core/english.d.ts +18 -0
  519. package/dist/core/english.d.ts.map +1 -0
  520. package/dist/core/english.js +2 -0
  521. package/dist/core/english.js.map +1 -0
  522. package/dist/corner/Corner.cjs +35 -27
  523. package/dist/corner/Corner.d.ts +5 -2
  524. package/dist/corner/Corner.d.ts.map +1 -1
  525. package/dist/corner/Corner.js +17 -9
  526. package/dist/corner/Corner.js.map +1 -1
  527. package/dist/corner/index.cjs +2 -2
  528. package/dist/corner/index.d.ts +1 -1
  529. package/dist/corner/index.d.ts.map +1 -1
  530. package/dist/corner/index.js +1 -1
  531. package/dist/corner/index.js.map +1 -1
  532. package/dist/corner/logic.cjs +31 -27
  533. package/dist/corner/logic.d.ts +9 -7
  534. package/dist/corner/logic.d.ts.map +1 -1
  535. package/dist/corner/logic.js +27 -23
  536. package/dist/corner/logic.js.map +1 -1
  537. package/dist/framework/CollectionBuilder.cjs +7 -5
  538. package/dist/framework/CollectionBuilder.d.ts.map +1 -1
  539. package/dist/framework/CollectionBuilder.js +7 -5
  540. package/dist/framework/CollectionBuilder.js.map +1 -1
  541. package/dist/framework/CollectionsBrowser.cjs +10 -8
  542. package/dist/framework/CollectionsBrowser.d.ts.map +1 -1
  543. package/dist/framework/CollectionsBrowser.js +10 -8
  544. package/dist/framework/CollectionsBrowser.js.map +1 -1
  545. package/dist/framework/DocTypeDetail.cjs +9 -7
  546. package/dist/framework/DocTypeDetail.d.ts.map +1 -1
  547. package/dist/framework/DocTypeDetail.js +9 -7
  548. package/dist/framework/DocTypeDetail.js.map +1 -1
  549. package/dist/framework/DocTypeRecords.cjs +4 -2
  550. package/dist/framework/DocTypeRecords.d.ts.map +1 -1
  551. package/dist/framework/DocTypeRecords.js +4 -2
  552. package/dist/framework/DocTypeRecords.js.map +1 -1
  553. package/dist/framework/MediaGrid.cjs +12 -5
  554. package/dist/framework/MediaGrid.d.ts.map +1 -1
  555. package/dist/framework/MediaGrid.js +12 -5
  556. package/dist/framework/MediaGrid.js.map +1 -1
  557. package/dist/framework/RecordCards.cjs +17 -13
  558. package/dist/framework/RecordCards.d.ts +1 -1
  559. package/dist/framework/RecordCards.d.ts.map +1 -1
  560. package/dist/framework/RecordCards.js +17 -13
  561. package/dist/framework/RecordCards.js.map +1 -1
  562. package/dist/framework/builder-logic.cjs +41 -26
  563. package/dist/framework/builder-logic.d.ts +8 -16
  564. package/dist/framework/builder-logic.d.ts.map +1 -1
  565. package/dist/framework/builder-logic.js +41 -26
  566. package/dist/framework/builder-logic.js.map +1 -1
  567. package/dist/framework/fields.cjs +3 -2
  568. package/dist/framework/fields.d.ts +2 -1
  569. package/dist/framework/fields.d.ts.map +1 -1
  570. package/dist/framework/fields.js +3 -2
  571. package/dist/framework/fields.js.map +1 -1
  572. package/dist/gallery.html +12 -61
  573. package/dist/glass.css +10 -59
  574. package/dist/i18n/catalogs/ar.json +261 -0
  575. package/dist/i18n/catalogs/de-DE.json +261 -0
  576. package/dist/i18n/catalogs/es-ES.json +261 -0
  577. package/dist/i18n/catalogs/fr-FR.json +261 -0
  578. package/dist/i18n/catalogs/hi-IN.json +261 -0
  579. package/dist/i18n/catalogs/id-ID.json +261 -0
  580. package/dist/i18n/catalogs/it-IT.json +261 -0
  581. package/dist/i18n/catalogs/ja-JP.json +261 -0
  582. package/dist/i18n/catalogs/ko-KR.json +261 -0
  583. package/dist/i18n/catalogs/pt-BR.json +261 -0
  584. package/dist/i18n/catalogs/ru.json +261 -0
  585. package/dist/i18n/catalogs/th.json +261 -0
  586. package/dist/i18n/catalogs/tr.json +261 -0
  587. package/dist/i18n/catalogs/vi.json +261 -0
  588. package/dist/i18n/catalogs/zh-Hans.json +261 -0
  589. package/dist/i18n/catalogs/zh-Hant.json +261 -0
  590. package/dist/i18n/catalogs.cjs +44 -0
  591. package/dist/i18n/catalogs.d.ts +14 -0
  592. package/dist/i18n/catalogs.d.ts.map +1 -0
  593. package/dist/i18n/catalogs.js +38 -0
  594. package/dist/i18n/catalogs.js.map +1 -0
  595. package/dist/i18n/index.cjs +30 -0
  596. package/dist/i18n/index.d.ts +14 -0
  597. package/dist/i18n/index.d.ts.map +1 -0
  598. package/dist/i18n/index.js +14 -0
  599. package/dist/i18n/index.js.map +1 -0
  600. package/dist/i18n/locales.cjs +70 -0
  601. package/dist/i18n/locales.d.ts +17 -0
  602. package/dist/i18n/locales.d.ts.map +1 -0
  603. package/dist/i18n/locales.js +64 -0
  604. package/dist/i18n/locales.js.map +1 -0
  605. package/dist/i18n/provider.cjs +48 -0
  606. package/dist/i18n/provider.d.ts +31 -0
  607. package/dist/i18n/provider.d.ts.map +1 -0
  608. package/dist/i18n/provider.js +46 -0
  609. package/dist/i18n/provider.js.map +1 -0
  610. package/dist/i18n/react.cjs +81 -0
  611. package/dist/i18n/react.d.ts +48 -0
  612. package/dist/i18n/react.d.ts.map +1 -0
  613. package/dist/i18n/react.js +74 -0
  614. package/dist/i18n/react.js.map +1 -0
  615. package/dist/i18n/source.cjs +275 -0
  616. package/dist/i18n/source.d.ts +15 -0
  617. package/dist/i18n/source.d.ts.map +1 -0
  618. package/dist/i18n/source.js +273 -0
  619. package/dist/i18n/source.js.map +1 -0
  620. package/dist/index.cjs +10 -1
  621. package/dist/index.d.ts +9 -8
  622. package/dist/index.d.ts.map +1 -1
  623. package/dist/index.js +8 -7
  624. package/dist/index.js.map +1 -1
  625. package/dist/index.node.cjs +10 -1
  626. package/dist/index.node.js +8 -7
  627. package/dist/marketing/ClosingCta.cjs +7 -2
  628. package/dist/marketing/ClosingCta.d.ts +2 -1
  629. package/dist/marketing/ClosingCta.d.ts.map +1 -1
  630. package/dist/marketing/ClosingCta.js +7 -2
  631. package/dist/marketing/ClosingCta.js.map +1 -1
  632. package/dist/marketing/Faq.cjs +5 -1
  633. package/dist/marketing/Faq.d.ts +1 -0
  634. package/dist/marketing/Faq.d.ts.map +1 -1
  635. package/dist/marketing/Faq.js +5 -1
  636. package/dist/marketing/Faq.js.map +1 -1
  637. package/dist/marketing/Footer.cjs +66 -31
  638. package/dist/marketing/Footer.d.ts +16 -4
  639. package/dist/marketing/Footer.d.ts.map +1 -1
  640. package/dist/marketing/Footer.js +65 -31
  641. package/dist/marketing/Footer.js.map +1 -1
  642. package/dist/marketing/PageLoading.cjs +5 -1
  643. package/dist/marketing/PageLoading.d.ts +1 -1
  644. package/dist/marketing/PageLoading.d.ts.map +1 -1
  645. package/dist/marketing/PageLoading.js +5 -1
  646. package/dist/marketing/PageLoading.js.map +1 -1
  647. package/dist/marketing/Plans.cjs +26 -10
  648. package/dist/marketing/Plans.d.ts +2 -1
  649. package/dist/marketing/Plans.d.ts.map +1 -1
  650. package/dist/marketing/Plans.js +26 -10
  651. package/dist/marketing/Plans.js.map +1 -1
  652. package/dist/marketing/blocks.cjs +5 -1
  653. package/dist/marketing/blocks.d.ts.map +1 -1
  654. package/dist/marketing/blocks.js +5 -1
  655. package/dist/marketing/blocks.js.map +1 -1
  656. package/dist/marketing/index.cjs +3 -2
  657. package/dist/marketing/index.d.ts +1 -1
  658. package/dist/marketing/index.d.ts.map +1 -1
  659. package/dist/marketing/index.js +1 -1
  660. package/dist/marketing/index.js.map +1 -1
  661. package/dist/marketing/pager.cjs +9 -4
  662. package/dist/marketing/pager.d.ts +1 -1
  663. package/dist/marketing/pager.d.ts.map +1 -1
  664. package/dist/marketing/pager.js +9 -4
  665. package/dist/marketing/pager.js.map +1 -1
  666. package/dist/masthead/Masthead.cjs +108 -20
  667. package/dist/masthead/Masthead.d.ts +1 -1
  668. package/dist/masthead/Masthead.d.ts.map +1 -1
  669. package/dist/masthead/Masthead.js +109 -21
  670. package/dist/masthead/Masthead.js.map +1 -1
  671. package/dist/masthead/nav.cjs +275 -247
  672. package/dist/masthead/nav.d.ts +7 -0
  673. package/dist/masthead/nav.d.ts.map +1 -1
  674. package/dist/masthead/nav.js +274 -246
  675. package/dist/masthead/nav.js.map +1 -1
  676. package/dist/models/ModelPicker.cjs +22 -16
  677. package/dist/models/ModelPicker.d.ts +14 -2
  678. package/dist/models/ModelPicker.d.ts.map +1 -1
  679. package/dist/models/ModelPicker.js +11 -5
  680. package/dist/models/ModelPicker.js.map +1 -1
  681. package/dist/models/ModelPickerMenu.cjs +65 -25
  682. package/dist/models/ModelPickerMenu.d.ts +6 -0
  683. package/dist/models/ModelPickerMenu.d.ts.map +1 -1
  684. package/dist/models/ModelPickerMenu.js +68 -28
  685. package/dist/models/ModelPickerMenu.js.map +1 -1
  686. package/dist/models/catalog.cjs +109 -29
  687. package/dist/models/catalog.d.ts +37 -21
  688. package/dist/models/catalog.d.ts.map +1 -1
  689. package/dist/models/catalog.js +105 -28
  690. package/dist/models/catalog.js.map +1 -1
  691. package/dist/models/picker.logic.cjs +38 -6
  692. package/dist/models/picker.logic.d.ts +26 -5
  693. package/dist/models/picker.logic.d.ts.map +1 -1
  694. package/dist/models/picker.logic.js +37 -6
  695. package/dist/models/picker.logic.js.map +1 -1
  696. package/dist/models/research.cjs +8 -1
  697. package/dist/models/research.d.ts +0 -5
  698. package/dist/models/research.d.ts.map +1 -1
  699. package/dist/models/research.js +8 -1
  700. package/dist/models/research.js.map +1 -1
  701. package/dist/onboarding/ChatOnboarding.cjs +15 -10
  702. package/dist/onboarding/ChatOnboarding.d.ts +3 -1
  703. package/dist/onboarding/ChatOnboarding.d.ts.map +1 -1
  704. package/dist/onboarding/ChatOnboarding.js +15 -10
  705. package/dist/onboarding/ChatOnboarding.js.map +1 -1
  706. package/dist/onboarding/Checkout.cjs +115 -32
  707. package/dist/onboarding/Checkout.d.ts +3 -0
  708. package/dist/onboarding/Checkout.d.ts.map +1 -1
  709. package/dist/onboarding/Checkout.js +116 -33
  710. package/dist/onboarding/Checkout.js.map +1 -1
  711. package/dist/onboarding/Onboarding.cjs +11 -9
  712. package/dist/onboarding/Onboarding.d.ts.map +1 -1
  713. package/dist/onboarding/Onboarding.js +11 -9
  714. package/dist/onboarding/Onboarding.js.map +1 -1
  715. package/dist/onboarding/account.cjs +8 -2
  716. package/dist/onboarding/account.d.ts.map +1 -1
  717. package/dist/onboarding/account.js +8 -2
  718. package/dist/onboarding/account.js.map +1 -1
  719. package/dist/onboarding/api.cjs +8 -2
  720. package/dist/onboarding/api.d.ts +5 -0
  721. package/dist/onboarding/api.d.ts.map +1 -1
  722. package/dist/onboarding/api.js +8 -2
  723. package/dist/onboarding/api.js.map +1 -1
  724. package/dist/onboarding/frame.cjs +6 -3
  725. package/dist/onboarding/frame.d.ts.map +1 -1
  726. package/dist/onboarding/frame.js +6 -3
  727. package/dist/onboarding/frame.js.map +1 -1
  728. package/dist/onboarding/hooks.cjs +2 -1
  729. package/dist/onboarding/hooks.d.ts.map +1 -1
  730. package/dist/onboarding/hooks.js +2 -1
  731. package/dist/onboarding/hooks.js.map +1 -1
  732. package/dist/onboarding/roles.cjs +149 -144
  733. package/dist/onboarding/roles.d.ts +4 -5
  734. package/dist/onboarding/roles.d.ts.map +1 -1
  735. package/dist/onboarding/roles.js +149 -144
  736. package/dist/onboarding/roles.js.map +1 -1
  737. package/dist/onboarding/screens.cjs +35 -14
  738. package/dist/onboarding/screens.d.ts.map +1 -1
  739. package/dist/onboarding/screens.js +36 -15
  740. package/dist/onboarding/screens.js.map +1 -1
  741. package/dist/product/AppHeader.cjs +8 -6
  742. package/dist/product/AppHeader.d.ts +1 -1
  743. package/dist/product/AppHeader.d.ts.map +1 -1
  744. package/dist/product/AppHeader.js +8 -6
  745. package/dist/product/AppHeader.js.map +1 -1
  746. package/dist/product/BackendState.cjs +16 -13
  747. package/dist/product/BackendState.d.ts.map +1 -1
  748. package/dist/product/BackendState.js +16 -13
  749. package/dist/product/BackendState.js.map +1 -1
  750. package/dist/product/BranchSelect.cjs +13 -4
  751. package/dist/product/BranchSelect.d.ts.map +1 -1
  752. package/dist/product/BranchSelect.js +13 -4
  753. package/dist/product/BranchSelect.js.map +1 -1
  754. package/dist/product/ChipSelect.cjs +12 -7
  755. package/dist/product/ChipSelect.d.ts +1 -1
  756. package/dist/product/ChipSelect.d.ts.map +1 -1
  757. package/dist/product/ChipSelect.js +12 -7
  758. package/dist/product/ChipSelect.js.map +1 -1
  759. package/dist/product/ComboBox.cjs +13 -6
  760. package/dist/product/ComboBox.d.ts.map +1 -1
  761. package/dist/product/ComboBox.js +13 -6
  762. package/dist/product/ComboBox.js.map +1 -1
  763. package/dist/product/CommandMenu.cjs +27 -8
  764. package/dist/product/CommandMenu.d.ts +1 -1
  765. package/dist/product/CommandMenu.d.ts.map +1 -1
  766. package/dist/product/CommandMenu.js +27 -8
  767. package/dist/product/CommandMenu.js.map +1 -1
  768. package/dist/product/CommerceResource.cjs +3 -1
  769. package/dist/product/CommerceResource.d.ts.map +1 -1
  770. package/dist/product/CommerceResource.js +3 -1
  771. package/dist/product/CommerceResource.js.map +1 -1
  772. package/dist/product/ConfirmDelete.cjs +5 -3
  773. package/dist/product/ConfirmDelete.d.ts.map +1 -1
  774. package/dist/product/ConfirmDelete.js +5 -3
  775. package/dist/product/ConfirmDelete.js.map +1 -1
  776. package/dist/product/ConnectionBadge.cjs +3 -1
  777. package/dist/product/ConnectionBadge.d.ts.map +1 -1
  778. package/dist/product/ConnectionBadge.js +3 -1
  779. package/dist/product/ConnectionBadge.js.map +1 -1
  780. package/dist/product/CopyButton.cjs +4 -2
  781. package/dist/product/CopyButton.d.ts.map +1 -1
  782. package/dist/product/CopyButton.js +4 -2
  783. package/dist/product/CopyButton.js.map +1 -1
  784. package/dist/product/DataTable.cjs +5 -3
  785. package/dist/product/DataTable.d.ts.map +1 -1
  786. package/dist/product/DataTable.js +5 -3
  787. package/dist/product/DataTable.js.map +1 -1
  788. package/dist/product/DetailPane.cjs +21 -13
  789. package/dist/product/DetailPane.d.ts.map +1 -1
  790. package/dist/product/DetailPane.js +23 -15
  791. package/dist/product/DetailPane.js.map +1 -1
  792. package/dist/product/DialogTemplate.cjs +4 -2
  793. package/dist/product/DialogTemplate.d.ts.map +1 -1
  794. package/dist/product/DialogTemplate.js +4 -2
  795. package/dist/product/DialogTemplate.js.map +1 -1
  796. package/dist/product/Donut.cjs +4 -2
  797. package/dist/product/Donut.d.ts.map +1 -1
  798. package/dist/product/Donut.js +4 -2
  799. package/dist/product/Donut.js.map +1 -1
  800. package/dist/product/Field.cjs +4 -1
  801. package/dist/product/Field.d.ts +1 -1
  802. package/dist/product/Field.d.ts.map +1 -1
  803. package/dist/product/Field.js +4 -1
  804. package/dist/product/Field.js.map +1 -1
  805. package/dist/product/LimitedBanner.cjs +3 -1
  806. package/dist/product/LimitedBanner.d.ts.map +1 -1
  807. package/dist/product/LimitedBanner.js +3 -1
  808. package/dist/product/LimitedBanner.js.map +1 -1
  809. package/dist/product/MenuRow.cjs +2 -2
  810. package/dist/product/MenuRow.js +2 -2
  811. package/dist/product/MenuRow.js.map +1 -1
  812. package/dist/product/Metric.cjs +5 -2
  813. package/dist/product/Metric.d.ts.map +1 -1
  814. package/dist/product/Metric.js +5 -2
  815. package/dist/product/Metric.js.map +1 -1
  816. package/dist/product/OrgSwitcher.cjs +19 -9
  817. package/dist/product/OrgSwitcher.d.ts +1 -1
  818. package/dist/product/OrgSwitcher.d.ts.map +1 -1
  819. package/dist/product/OrgSwitcher.js +19 -9
  820. package/dist/product/OrgSwitcher.js.map +1 -1
  821. package/dist/product/Pagination.cjs +4 -2
  822. package/dist/product/Pagination.d.ts.map +1 -1
  823. package/dist/product/Pagination.js +4 -2
  824. package/dist/product/Pagination.js.map +1 -1
  825. package/dist/product/Palette.cjs +7 -2
  826. package/dist/product/Palette.d.ts +1 -1
  827. package/dist/product/Palette.d.ts.map +1 -1
  828. package/dist/product/Palette.js +8 -3
  829. package/dist/product/Palette.js.map +1 -1
  830. package/dist/product/PlanUsage.cjs +28 -15
  831. package/dist/product/PlanUsage.d.ts +4 -4
  832. package/dist/product/PlanUsage.d.ts.map +1 -1
  833. package/dist/product/PlanUsage.js +28 -15
  834. package/dist/product/PlanUsage.js.map +1 -1
  835. package/dist/product/ProjectThumb.cjs +3 -1
  836. package/dist/product/ProjectThumb.d.ts.map +1 -1
  837. package/dist/product/ProjectThumb.js +3 -1
  838. package/dist/product/ProjectThumb.js.map +1 -1
  839. package/dist/product/RepoSelect.cjs +7 -4
  840. package/dist/product/RepoSelect.d.ts +1 -1
  841. package/dist/product/RepoSelect.d.ts.map +1 -1
  842. package/dist/product/RepoSelect.js +7 -4
  843. package/dist/product/RepoSelect.js.map +1 -1
  844. package/dist/product/SecretInput.cjs +3 -1
  845. package/dist/product/SecretInput.d.ts.map +1 -1
  846. package/dist/product/SecretInput.js +3 -1
  847. package/dist/product/SecretInput.js.map +1 -1
  848. package/dist/product/SelectMenu.cjs +4 -1
  849. package/dist/product/SelectMenu.d.ts +1 -1
  850. package/dist/product/SelectMenu.d.ts.map +1 -1
  851. package/dist/product/SelectMenu.js +4 -1
  852. package/dist/product/SelectMenu.js.map +1 -1
  853. package/dist/product/SiteNav.cjs +9 -5
  854. package/dist/product/SiteNav.d.ts.map +1 -1
  855. package/dist/product/SiteNav.js +9 -5
  856. package/dist/product/SiteNav.js.map +1 -1
  857. package/dist/product/SlideOver.cjs +11 -11
  858. package/dist/product/SlideOver.d.ts +1 -1
  859. package/dist/product/SlideOver.d.ts.map +1 -1
  860. package/dist/product/SlideOver.js +11 -11
  861. package/dist/product/SlideOver.js.map +1 -1
  862. package/dist/product/StatusTag.cjs +4 -1
  863. package/dist/product/StatusTag.d.ts.map +1 -1
  864. package/dist/product/StatusTag.js +4 -1
  865. package/dist/product/StatusTag.js.map +1 -1
  866. package/dist/product/ThemeToggle.cjs +3 -1
  867. package/dist/product/ThemeToggle.d.ts.map +1 -1
  868. package/dist/product/ThemeToggle.js +3 -1
  869. package/dist/product/ThemeToggle.js.map +1 -1
  870. package/dist/product/Toast.cjs +25 -4
  871. package/dist/product/Toast.d.ts.map +1 -1
  872. package/dist/product/Toast.js +25 -4
  873. package/dist/product/Toast.js.map +1 -1
  874. package/dist/product/UsageMeter.cjs +10 -6
  875. package/dist/product/UsageMeter.d.ts.map +1 -1
  876. package/dist/product/UsageMeter.js +11 -7
  877. package/dist/product/UsageMeter.js.map +1 -1
  878. package/dist/product/UserMenu.cjs +5 -3
  879. package/dist/product/UserMenu.d.ts.map +1 -1
  880. package/dist/product/UserMenu.js +5 -3
  881. package/dist/product/UserMenu.js.map +1 -1
  882. package/dist/product/Workbench.cjs +5 -3
  883. package/dist/product/Workbench.d.ts.map +1 -1
  884. package/dist/product/Workbench.js +5 -3
  885. package/dist/product/Workbench.js.map +1 -1
  886. package/dist/product/account.cjs +4 -2
  887. package/dist/product/account.d.ts.map +1 -1
  888. package/dist/product/account.js +4 -2
  889. package/dist/product/account.js.map +1 -1
  890. package/dist/product/limits.cjs +61 -24
  891. package/dist/product/limits.d.ts +4 -3
  892. package/dist/product/limits.d.ts.map +1 -1
  893. package/dist/product/limits.js +61 -24
  894. package/dist/product/limits.js.map +1 -1
  895. package/dist/product/match.cjs +2 -1
  896. package/dist/product/match.d.ts +1 -1
  897. package/dist/product/match.d.ts.map +1 -1
  898. package/dist/product/match.js +2 -1
  899. package/dist/product/match.js.map +1 -1
  900. package/dist/product/social/CampaignCard.cjs +3 -1
  901. package/dist/product/social/CampaignCard.d.ts.map +1 -1
  902. package/dist/product/social/CampaignCard.js +3 -1
  903. package/dist/product/social/CampaignCard.js.map +1 -1
  904. package/dist/product/social/PostAgenda.cjs +3 -1
  905. package/dist/product/social/PostAgenda.d.ts.map +1 -1
  906. package/dist/product/social/PostAgenda.js +3 -1
  907. package/dist/product/social/PostAgenda.js.map +1 -1
  908. package/dist/product/social/PostCard.cjs +3 -1
  909. package/dist/product/social/PostCard.d.ts.map +1 -1
  910. package/dist/product/social/PostCard.js +3 -1
  911. package/dist/product/social/PostCard.js.map +1 -1
  912. package/dist/product/social/PostComposer.cjs +12 -6
  913. package/dist/product/social/PostComposer.d.ts.map +1 -1
  914. package/dist/product/social/PostComposer.js +12 -6
  915. package/dist/product/social/PostComposer.js.map +1 -1
  916. package/dist/product/social/ProviderReadinessList.cjs +3 -1
  917. package/dist/product/social/ProviderReadinessList.d.ts.map +1 -1
  918. package/dist/product/social/ProviderReadinessList.js +3 -1
  919. package/dist/product/social/ProviderReadinessList.js.map +1 -1
  920. package/dist/product/social/SocialResource.cjs +25 -16
  921. package/dist/product/social/SocialResource.d.ts.map +1 -1
  922. package/dist/product/social/SocialResource.js +26 -17
  923. package/dist/product/social/SocialResource.js.map +1 -1
  924. package/dist/product/social/SocialSummaryBar.cjs +6 -4
  925. package/dist/product/social/SocialSummaryBar.d.ts.map +1 -1
  926. package/dist/product/social/SocialSummaryBar.js +6 -4
  927. package/dist/product/social/SocialSummaryBar.js.map +1 -1
  928. package/dist/product/social/ViewToggle.cjs +6 -3
  929. package/dist/product/social/ViewToggle.d.ts.map +1 -1
  930. package/dist/product/social/ViewToggle.js +6 -3
  931. package/dist/product/social/ViewToggle.js.map +1 -1
  932. package/dist/product/useLimits.cjs +4 -2
  933. package/dist/product/useLimits.d.ts.map +1 -1
  934. package/dist/product/useLimits.js +4 -2
  935. package/dist/product/useLimits.js.map +1 -1
  936. package/dist/root.cjs +6 -4
  937. package/dist/root.d.ts +52 -2
  938. package/dist/root.d.ts.map +1 -1
  939. package/dist/root.js +6 -4
  940. package/dist/root.js.map +1 -1
  941. package/dist/root.node.cjs +6 -4
  942. package/dist/root.node.js +6 -4
  943. package/dist/settings/Section.cjs +4 -2
  944. package/dist/settings/Section.d.ts.map +1 -1
  945. package/dist/settings/Section.js +4 -2
  946. package/dist/settings/Section.js.map +1 -1
  947. package/dist/settings/Settings.cjs +4 -1
  948. package/dist/settings/Settings.d.ts +1 -1
  949. package/dist/settings/Settings.d.ts.map +1 -1
  950. package/dist/settings/Settings.js +4 -1
  951. package/dist/settings/Settings.js.map +1 -1
  952. package/dist/styles.css +10 -59
  953. package/dist/theme.css +10 -59
  954. package/package.json +11 -2
@@ -2,42 +2,77 @@
2
2
  'use client';
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.Footer = void 0;
5
+ exports.HanzoFooterSignature = HanzoFooterSignature;
5
6
  const jsx_runtime_1 = require("react/jsx-runtime");
6
- /**
7
- * Footer — the foot of a marketing page: a place to ask, the doors, the legal line.
8
- *
9
- * It shares the header's edges: the same side gutter, so the wordmark and the
10
- * columns stand under the header's wordmark and nav with nothing between them
11
- * to shift. `gutter` is that one number; a site passes the value its header uses.
12
- *
13
- * ask a slot above the columns for the site's composer, so it lives
14
- * where a page ends and never floats over one.
15
- * columns titled lists of links; a title may itself be a link.
16
- * wordmark a slot at the far end of the last row; the copyright and the
17
- * legal line share that row's start.
18
- * after a slot under that row, inside the footer, for the site's own
19
- * last line (its social links).
20
- *
21
- * It stands on the panel's ground ($panel), a step off the page's, so the page
22
- * visibly ends where the footer begins.
23
- *
24
- * Plain anchors. A link that leaves the site opens a new tab and is marked with
25
- * ↗ by the host's own data (`out`).
26
- */
7
+ const react_1 = require("react");
27
8
  const gui_1 = require("@hanzo/gui");
9
+ const logo_1 = require("@hanzo/logo");
10
+ const react_2 = require("@hanzo/i18n/react");
28
11
  const slot_1 = require("../backends/gui/slot.cjs");
29
- const type_1 = require("./type.cjs");
30
12
  const icon_1 = require("../consent/icon.cjs");
31
- const open = (out) => (out ? { target: '_blank', rel: 'noreferrer' } : {});
13
+ const type_1 = require("./type.cjs");
14
+ const nav_1 = require("../masthead/nav.cjs");
32
15
  /**
33
- * A legal link's box. @hanzo/design gives every link a 24px floor, taller than
34
- * the line, and a plain block anchor sets its words at the top of it, 3px above
35
- * the box's middle; the copyright beside them, and the consent sheet's link
36
- * (`#choices`, its words beside California's privacy options icon), sat on the
37
- * middle. Every link centres its words in the floor, so the row shares one
38
- * centre line.
16
+ * The enormous closing signature. "hanzo" is real, selectable Zen typography,
17
+ * NOT a raster or outlined wordmark. Its punctuation is the canonical seven-path
18
+ * H from @hanzo/logo, held in the same baseline-relative flex lockup.
19
+ *
20
+ * This is opt-in: the marketing Footer is also used by non-Hanzo brands.
39
21
  */
22
+ function HanzoFooterSignature() {
23
+ const [highlight, setHighlight] = (0, react_1.useState)(false);
24
+ const openCompanyMenu = (e) => {
25
+ // Modifier-click retains the usual home link behavior.
26
+ if (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey)
27
+ return;
28
+ // Masthead cancels the event when it opens the real Company menu.
29
+ // On a page with no Masthead, the link still goes to hanzo.ai.
30
+ if (!window.dispatchEvent(new Event(nav_1.COMPANY_MENU_EVENT, { cancelable: true }))) {
31
+ e.preventDefault();
32
+ }
33
+ };
34
+ return ((0, jsx_runtime_1.jsxs)("a", { href: "https://hanzo.ai", "aria-label": "Open Hanzo company menu", onClick: openCompanyMenu, onPointerEnter: () => setHighlight(true), onPointerLeave: () => setHighlight(false), onFocus: () => setHighlight(true), onBlur: () => setHighlight(false), style: {
35
+ display: 'flex',
36
+ alignItems: 'flex-end',
37
+ justifyContent: 'flex-start',
38
+ gap: 'clamp(4px, 0.5vw, 10px)',
39
+ width: 'max-content',
40
+ maxWidth: '100%',
41
+ // Glyphs must stay visible: the site may position this lockup at the
42
+ // bottom edge of a long footer and clipped ascenders look like a bar.
43
+ overflow: 'visible',
44
+ textDecoration: 'none',
45
+ fontFamily: 'var(--font-sans, ui-sans-serif, system-ui, sans-serif)',
46
+ // Preserve the giant signature without allowing 5 letters + H to
47
+ // overrun narrow viewports or small split-screen browser windows.
48
+ fontSize: 'clamp(64px, 23vw, 410px)',
49
+ fontWeight: 750,
50
+ letterSpacing: '-0.085em',
51
+ lineHeight: 1,
52
+ paddingTop: '0.025em',
53
+ paddingBottom: '0.04em',
54
+ color: 'var(--foreground)',
55
+ opacity: highlight ? 0.35 : 0.18,
56
+ transition: 'opacity 160ms ease',
57
+ }, children: [(0, jsx_runtime_1.jsx)("span", { "aria-hidden": "true", style: { whiteSpace: 'nowrap', paddingInlineEnd: '0.04em' }, children: "hanzo" }), (0, jsx_runtime_1.jsx)("span", { "aria-hidden": "true", style: {
58
+ display: 'block',
59
+ flex: '0 0 auto',
60
+ width: '0.225em',
61
+ height: '0.225em',
62
+ marginBottom: '0.14em',
63
+ lineHeight: 0,
64
+ letterSpacing: 'normal',
65
+ }, children: (0, jsx_runtime_1.jsxs)("svg", { width: "100%", height: "100%", viewBox: logo_1.MARK_VIEWBOX, fill: "currentColor", focusable: "false", "aria-hidden": "true", style: { display: 'block', width: '100%', height: '100%' }, children: [logo_1.MARK_BLOCKS.map((d) => (0, jsx_runtime_1.jsx)("path", { d: d }, d)), logo_1.MARK_SHADE.map((d) => (0, jsx_runtime_1.jsx)("path", { d: d }, d))] }) })] }));
66
+ }
67
+ const open = (out) => (out ? { target: '_blank', rel: 'noopener noreferrer' } : {});
40
68
  const LEGAL = { display: 'inline-flex', alignItems: 'center', gap: 6 };
41
- const Door = ({ link }) => ((0, jsx_runtime_1.jsxs)(gui_1.Anchor, { href: link.href, ...open(link.out), color: "$soft", fontSize: "$2", lineHeight: "$2", py: 3, textDecorationLine: "none", hoverStyle: { color: '$ink' }, children: [link.label, link.out ? ' ↗' : ''] }));
42
- const Footer = ({ columns, ask, wordmark, copyright, legal = [], gutter = 'clamp(20px, 4vw, 72px)', after }) => ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('footer'), render: "footer", width: "100%", bg: "$panel", borderTopWidth: 1, borderColor: "$edge", pt: 48, pb: 32, gap: 40, style: { paddingInline: gutter }, children: [ask ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { width: "100%", items: "center", children: ask })) : null, (0, jsx_runtime_1.jsx)(gui_1.XStack, { flexWrap: "wrap", gap: 28, $sm: { gap: 40 }, children: columns.map((c) => ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { render: "nav", "aria-label": c.title, flexBasis: "100%", flexGrow: 1, minW: 140, $sm: { flexBasis: 150 }, gap: 2, children: [c.href ? ((0, jsx_runtime_1.jsxs)(gui_1.Anchor, { href: c.href, ...open(c.out), color: "$ink", fontSize: "$2", lineHeight: "$2", fontWeight: "600", pb: 10, textDecorationLine: "none", children: [c.title, c.out ? ' ↗' : ''] })) : ((0, jsx_runtime_1.jsx)(type_1.Line, { size: "sm", weight: "600", pb: 10, children: c.title })), (0, jsx_runtime_1.jsx)(gui_1.YStack, { display: "grid", gridTemplateColumns: "repeat(2, minmax(0, 1fr))", columnGap: 16, $sm: { display: 'flex', flexDirection: 'column' }, children: c.links.map((l) => ((0, jsx_runtime_1.jsx)(Door, { link: l }, l.label))) })] }, c.id))) }), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { flexWrap: "wrap", items: "center", gap: 20, rowGap: 12, children: [copyright ? ((0, jsx_runtime_1.jsx)(type_1.Line, { size: "sm", tone: "dim", children: copyright })) : null, (0, jsx_runtime_1.jsx)(gui_1.XStack, { render: "nav", "aria-label": "Terms & Policies", flexWrap: "wrap", gap: 16, rowGap: 8, shrink: 1, minW: 0, children: legal.map((l) => ((0, jsx_runtime_1.jsxs)(gui_1.Anchor, { href: l.href, ...open(l.out), color: "$faint", fontSize: "$2", lineHeight: "$2", textDecorationLine: "none", hoverStyle: { color: '$ink' }, ...LEGAL, children: [l.href.endsWith('#choices') ? (0, jsx_runtime_1.jsx)(icon_1.PrivacyChoicesIcon, {}) : null, l.label] }, l.label))) }), wordmark ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { marginInlineStart: "auto", items: "center", shrink: 1, minW: 0, maxW: "100%", children: wordmark })) : null] }), after] }));
69
+ const Door = ({ link }) => {
70
+ const { t } = (0, react_2.useI18n)();
71
+ return ((0, jsx_runtime_1.jsxs)(gui_1.Anchor, { href: link.href, ...open(link.out), color: "$soft", fontSize: "$2", lineHeight: "$2", py: 3, textDecorationLine: "none", hoverStyle: { color: '$ink' }, children: [t(link.label), link.out ? ' ↗' : ''] }));
72
+ };
73
+ const Footer = ({ columns, ask, wordmark, signature, copyright, legal = [], social = [], gutter = 'clamp(20px, 4vw, 72px)', after, }) => {
74
+ const { t } = (0, react_2.useI18n)();
75
+ const closing = signature ?? wordmark;
76
+ return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('footer'), render: "footer", width: "100%", bg: "$panel", borderTopWidth: 1, borderColor: "$edge", pt: 48, pb: 16, gap: 28, style: { paddingInline: gutter }, children: [ask ? (0, jsx_runtime_1.jsx)(gui_1.YStack, { width: "100%", items: "center", children: ask }) : null, (0, jsx_runtime_1.jsx)(gui_1.XStack, { display: "grid", width: "100%", gridTemplateColumns: "repeat(2, minmax(0, 1fr))", columnGap: 22, rowGap: 32, $sm: { gridTemplateColumns: 'repeat(3, minmax(0, 1fr))' }, $lg: { gridTemplateColumns: 'repeat(6, minmax(0, 1fr))' }, children: columns.map((c) => ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { render: "nav", "aria-label": t(c.title), minW: 0, gap: 2, children: [c.href ? ((0, jsx_runtime_1.jsxs)(gui_1.Anchor, { href: c.href, ...open(c.out), color: "$ink", fontSize: "$2", lineHeight: "$2", fontWeight: "600", pb: 10, textDecorationLine: "none", children: [t(c.title), c.out ? ' ↗' : ''] })) : ((0, jsx_runtime_1.jsx)(type_1.Line, { size: "sm", weight: "600", pb: 10, children: t(c.title) })), (0, jsx_runtime_1.jsx)(gui_1.YStack, { children: c.links.map((l) => (0, jsx_runtime_1.jsx)(Door, { link: l }, l.href + l.label)) })] }, c.id))) }), (social.length > 0 || after) ? ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { borderTopWidth: 1, borderColor: "$edge", pt: 18, gap: 8, children: [social.length > 0 ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { render: "nav", "aria-label": t('Social links'), flexWrap: "wrap", gap: 18, rowGap: 6, children: social.map((l) => (0, jsx_runtime_1.jsx)(Door, { link: l }, l.href + l.label)) })) : null, after] })) : null, (0, jsx_runtime_1.jsxs)(gui_1.XStack, { borderTopWidth: 1, borderColor: "$edge", pt: 16, flexWrap: "wrap", items: "center", gap: 16, rowGap: 8, children: [copyright ? (0, jsx_runtime_1.jsx)(type_1.Line, { size: "sm", tone: "dim", children: copyright }) : null, (0, jsx_runtime_1.jsx)(gui_1.XStack, { render: "nav", "aria-label": t('Terms & Policies'), flexWrap: "wrap", gap: 16, rowGap: 8, shrink: 1, minW: 0, children: legal.map((l) => ((0, jsx_runtime_1.jsxs)(gui_1.Anchor, { href: l.href, ...open(l.out), color: "$faint", fontSize: "$2", lineHeight: "$2", textDecorationLine: "none", hoverStyle: { color: '$ink' }, ...LEGAL, children: [l.href.endsWith('#choices') ? (0, jsx_runtime_1.jsx)(icon_1.PrivacyChoicesIcon, {}) : null, t(l.label)] }, l.href + l.label))) })] }), closing ? (0, jsx_runtime_1.jsx)(gui_1.YStack, { width: "100%", pt: 4, minW: 0, children: closing }) : null] }));
77
+ };
43
78
  exports.Footer = Footer;
@@ -1,4 +1,12 @@
1
- import type { ReactNode } from 'react';
1
+ import { type ReactNode } from 'react';
2
+ /**
3
+ * The enormous closing signature. "hanzo" is real, selectable Zen typography,
4
+ * NOT a raster or outlined wordmark. Its punctuation is the canonical seven-path
5
+ * H from @hanzo/logo, held in the same baseline-relative flex lockup.
6
+ *
7
+ * This is opt-in: the marketing Footer is also used by non-Hanzo brands.
8
+ */
9
+ export declare function HanzoFooterSignature(): import("react").JSX.Element;
2
10
  export type FooterLink = {
3
11
  label: string;
4
12
  href: string;
@@ -14,14 +22,18 @@ export type FooterColumn = {
14
22
  export type FooterProps = {
15
23
  columns: readonly FooterColumn[];
16
24
  ask?: ReactNode;
25
+ /** Backwards-compatible closing lockup slot; render this AFTER legal/social. */
17
26
  wordmark?: ReactNode;
27
+ /** Explicit closing signature; takes precedence over wordmark when supplied. */
28
+ signature?: ReactNode;
18
29
  copyright?: ReactNode;
19
30
  legal?: readonly FooterLink[];
20
- /** The side gutter, shared with the header. */
31
+ /** Social destinations are separate from legal links. Only pass verified URLs. */
32
+ social?: readonly FooterLink[];
21
33
  gutter?: string;
22
- /** A last line inside the footer, under the legal row: the site's social links. */
34
+ /** Legacy custom social content. Rendered above legal and signature. */
23
35
  after?: ReactNode;
24
36
  };
25
- declare const Footer: ({ columns, ask, wordmark, copyright, legal, gutter, after }: FooterProps) => import("react").JSX.Element;
37
+ declare const Footer: ({ columns, ask, wordmark, signature, copyright, legal, social, gutter, after, }: FooterProps) => import("react").JSX.Element;
26
38
  export { Footer };
27
39
  //# sourceMappingURL=Footer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../src/marketing/Footer.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtC,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AACvE,MAAM,MAAM,YAAY,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,CAAA;AAEpH,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,SAAS,YAAY,EAAE,CAAA;IAChC,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAA;IAC7B,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mFAAmF;IACnF,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AA8BD,QAAA,MAAM,MAAM,gEAAiG,WAAW,gCAoFvH,CAAA;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
1
+ {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../src/marketing/Footer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAUjE;;;;;;GAMG;AACH,wBAAgB,oBAAoB,gCA4EnC;AAED,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AACvE,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,SAAS,UAAU,EAAE,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,SAAS,YAAY,EAAE,CAAA;IAChC,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,gFAAgF;IAChF,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,gFAAgF;IAChF,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAA;IAC7B,kFAAkF;IAClF,MAAM,CAAC,EAAE,SAAS,UAAU,EAAE,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wEAAwE;IACxE,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAwBD,QAAA,MAAM,MAAM,oFAGT,WAAW,gCA0Fb,CAAA;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -1,41 +1,75 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- /**
4
- * Footer — the foot of a marketing page: a place to ask, the doors, the legal line.
5
- *
6
- * It shares the header's edges: the same side gutter, so the wordmark and the
7
- * columns stand under the header's wordmark and nav with nothing between them
8
- * to shift. `gutter` is that one number; a site passes the value its header uses.
9
- *
10
- * ask a slot above the columns for the site's composer, so it lives
11
- * where a page ends and never floats over one.
12
- * columns titled lists of links; a title may itself be a link.
13
- * wordmark a slot at the far end of the last row; the copyright and the
14
- * legal line share that row's start.
15
- * after a slot under that row, inside the footer, for the site's own
16
- * last line (its social links).
17
- *
18
- * It stands on the panel's ground ($panel), a step off the page's, so the page
19
- * visibly ends where the footer begins.
20
- *
21
- * Plain anchors. A link that leaves the site opens a new tab and is marked with
22
- * ↗ by the host's own data (`out`).
23
- */
3
+ import { useState } from 'react';
24
4
  import { Anchor, XStack, YStack } from '@hanzo/gui';
5
+ import { MARK_BLOCKS, MARK_SHADE, MARK_VIEWBOX } from '@hanzo/logo';
6
+ import { useI18n } from '@hanzo/i18n/react';
25
7
  import { slot } from '../backends/gui/slot.js';
26
- import { Line } from './type.js';
27
8
  import { PrivacyChoicesIcon } from '../consent/icon.js';
28
- const open = (out) => (out ? { target: '_blank', rel: 'noreferrer' } : {});
9
+ import { Line } from './type.js';
10
+ import { COMPANY_MENU_EVENT } from '../masthead/nav.js';
29
11
  /**
30
- * A legal link's box. @hanzo/design gives every link a 24px floor, taller than
31
- * the line, and a plain block anchor sets its words at the top of it, 3px above
32
- * the box's middle; the copyright beside them, and the consent sheet's link
33
- * (`#choices`, its words beside California's privacy options icon), sat on the
34
- * middle. Every link centres its words in the floor, so the row shares one
35
- * centre line.
12
+ * The enormous closing signature. "hanzo" is real, selectable Zen typography,
13
+ * NOT a raster or outlined wordmark. Its punctuation is the canonical seven-path
14
+ * H from @hanzo/logo, held in the same baseline-relative flex lockup.
15
+ *
16
+ * This is opt-in: the marketing Footer is also used by non-Hanzo brands.
36
17
  */
18
+ export function HanzoFooterSignature() {
19
+ const [highlight, setHighlight] = useState(false);
20
+ const openCompanyMenu = (e) => {
21
+ // Modifier-click retains the usual home link behavior.
22
+ if (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey)
23
+ return;
24
+ // Masthead cancels the event when it opens the real Company menu.
25
+ // On a page with no Masthead, the link still goes to hanzo.ai.
26
+ if (!window.dispatchEvent(new Event(COMPANY_MENU_EVENT, { cancelable: true }))) {
27
+ e.preventDefault();
28
+ }
29
+ };
30
+ return (_jsxs("a", { href: "https://hanzo.ai", "aria-label": "Open Hanzo company menu", onClick: openCompanyMenu, onPointerEnter: () => setHighlight(true), onPointerLeave: () => setHighlight(false), onFocus: () => setHighlight(true), onBlur: () => setHighlight(false), style: {
31
+ display: 'flex',
32
+ alignItems: 'flex-end',
33
+ justifyContent: 'flex-start',
34
+ gap: 'clamp(4px, 0.5vw, 10px)',
35
+ width: 'max-content',
36
+ maxWidth: '100%',
37
+ // Glyphs must stay visible: the site may position this lockup at the
38
+ // bottom edge of a long footer and clipped ascenders look like a bar.
39
+ overflow: 'visible',
40
+ textDecoration: 'none',
41
+ fontFamily: 'var(--font-sans, ui-sans-serif, system-ui, sans-serif)',
42
+ // Preserve the giant signature without allowing 5 letters + H to
43
+ // overrun narrow viewports or small split-screen browser windows.
44
+ fontSize: 'clamp(64px, 23vw, 410px)',
45
+ fontWeight: 750,
46
+ letterSpacing: '-0.085em',
47
+ lineHeight: 1,
48
+ paddingTop: '0.025em',
49
+ paddingBottom: '0.04em',
50
+ color: 'var(--foreground)',
51
+ opacity: highlight ? 0.35 : 0.18,
52
+ transition: 'opacity 160ms ease',
53
+ }, children: [_jsx("span", { "aria-hidden": "true", style: { whiteSpace: 'nowrap', paddingInlineEnd: '0.04em' }, children: "hanzo" }), _jsx("span", { "aria-hidden": "true", style: {
54
+ display: 'block',
55
+ flex: '0 0 auto',
56
+ width: '0.225em',
57
+ height: '0.225em',
58
+ marginBottom: '0.14em',
59
+ lineHeight: 0,
60
+ letterSpacing: 'normal',
61
+ }, children: _jsxs("svg", { width: "100%", height: "100%", viewBox: MARK_VIEWBOX, fill: "currentColor", focusable: "false", "aria-hidden": "true", style: { display: 'block', width: '100%', height: '100%' }, children: [MARK_BLOCKS.map((d) => _jsx("path", { d: d }, d)), MARK_SHADE.map((d) => _jsx("path", { d: d }, d))] }) })] }));
62
+ }
63
+ const open = (out) => (out ? { target: '_blank', rel: 'noopener noreferrer' } : {});
37
64
  const LEGAL = { display: 'inline-flex', alignItems: 'center', gap: 6 };
38
- const Door = ({ link }) => (_jsxs(Anchor, { href: link.href, ...open(link.out), color: "$soft", fontSize: "$2", lineHeight: "$2", py: 3, textDecorationLine: "none", hoverStyle: { color: '$ink' }, children: [link.label, link.out ? ' ↗' : ''] }));
39
- const Footer = ({ columns, ask, wordmark, copyright, legal = [], gutter = 'clamp(20px, 4vw, 72px)', after }) => (_jsxs(YStack, { ...slot('footer'), render: "footer", width: "100%", bg: "$panel", borderTopWidth: 1, borderColor: "$edge", pt: 48, pb: 32, gap: 40, style: { paddingInline: gutter }, children: [ask ? (_jsx(YStack, { width: "100%", items: "center", children: ask })) : null, _jsx(XStack, { flexWrap: "wrap", gap: 28, $sm: { gap: 40 }, children: columns.map((c) => (_jsxs(YStack, { render: "nav", "aria-label": c.title, flexBasis: "100%", flexGrow: 1, minW: 140, $sm: { flexBasis: 150 }, gap: 2, children: [c.href ? (_jsxs(Anchor, { href: c.href, ...open(c.out), color: "$ink", fontSize: "$2", lineHeight: "$2", fontWeight: "600", pb: 10, textDecorationLine: "none", children: [c.title, c.out ? ' ↗' : ''] })) : (_jsx(Line, { size: "sm", weight: "600", pb: 10, children: c.title })), _jsx(YStack, { display: "grid", gridTemplateColumns: "repeat(2, minmax(0, 1fr))", columnGap: 16, $sm: { display: 'flex', flexDirection: 'column' }, children: c.links.map((l) => (_jsx(Door, { link: l }, l.label))) })] }, c.id))) }), _jsxs(XStack, { flexWrap: "wrap", items: "center", gap: 20, rowGap: 12, children: [copyright ? (_jsx(Line, { size: "sm", tone: "dim", children: copyright })) : null, _jsx(XStack, { render: "nav", "aria-label": "Terms & Policies", flexWrap: "wrap", gap: 16, rowGap: 8, shrink: 1, minW: 0, children: legal.map((l) => (_jsxs(Anchor, { href: l.href, ...open(l.out), color: "$faint", fontSize: "$2", lineHeight: "$2", textDecorationLine: "none", hoverStyle: { color: '$ink' }, ...LEGAL, children: [l.href.endsWith('#choices') ? _jsx(PrivacyChoicesIcon, {}) : null, l.label] }, l.label))) }), wordmark ? (_jsx(XStack, { marginInlineStart: "auto", items: "center", shrink: 1, minW: 0, maxW: "100%", children: wordmark })) : null] }), after] }));
65
+ const Door = ({ link }) => {
66
+ const { t } = useI18n();
67
+ return (_jsxs(Anchor, { href: link.href, ...open(link.out), color: "$soft", fontSize: "$2", lineHeight: "$2", py: 3, textDecorationLine: "none", hoverStyle: { color: '$ink' }, children: [t(link.label), link.out ? ' ↗' : ''] }));
68
+ };
69
+ const Footer = ({ columns, ask, wordmark, signature, copyright, legal = [], social = [], gutter = 'clamp(20px, 4vw, 72px)', after, }) => {
70
+ const { t } = useI18n();
71
+ const closing = signature ?? wordmark;
72
+ return (_jsxs(YStack, { ...slot('footer'), render: "footer", width: "100%", bg: "$panel", borderTopWidth: 1, borderColor: "$edge", pt: 48, pb: 16, gap: 28, style: { paddingInline: gutter }, children: [ask ? _jsx(YStack, { width: "100%", items: "center", children: ask }) : null, _jsx(XStack, { display: "grid", width: "100%", gridTemplateColumns: "repeat(2, minmax(0, 1fr))", columnGap: 22, rowGap: 32, $sm: { gridTemplateColumns: 'repeat(3, minmax(0, 1fr))' }, $lg: { gridTemplateColumns: 'repeat(6, minmax(0, 1fr))' }, children: columns.map((c) => (_jsxs(YStack, { render: "nav", "aria-label": t(c.title), minW: 0, gap: 2, children: [c.href ? (_jsxs(Anchor, { href: c.href, ...open(c.out), color: "$ink", fontSize: "$2", lineHeight: "$2", fontWeight: "600", pb: 10, textDecorationLine: "none", children: [t(c.title), c.out ? ' ↗' : ''] })) : (_jsx(Line, { size: "sm", weight: "600", pb: 10, children: t(c.title) })), _jsx(YStack, { children: c.links.map((l) => _jsx(Door, { link: l }, l.href + l.label)) })] }, c.id))) }), (social.length > 0 || after) ? (_jsxs(YStack, { borderTopWidth: 1, borderColor: "$edge", pt: 18, gap: 8, children: [social.length > 0 ? (_jsx(XStack, { render: "nav", "aria-label": t('Social links'), flexWrap: "wrap", gap: 18, rowGap: 6, children: social.map((l) => _jsx(Door, { link: l }, l.href + l.label)) })) : null, after] })) : null, _jsxs(XStack, { borderTopWidth: 1, borderColor: "$edge", pt: 16, flexWrap: "wrap", items: "center", gap: 16, rowGap: 8, children: [copyright ? _jsx(Line, { size: "sm", tone: "dim", children: copyright }) : null, _jsx(XStack, { render: "nav", "aria-label": t('Terms & Policies'), flexWrap: "wrap", gap: 16, rowGap: 8, shrink: 1, minW: 0, children: legal.map((l) => (_jsxs(Anchor, { href: l.href, ...open(l.out), color: "$faint", fontSize: "$2", lineHeight: "$2", textDecorationLine: "none", hoverStyle: { color: '$ink' }, ...LEGAL, children: [l.href.endsWith('#choices') ? _jsx(PrivacyChoicesIcon, {}) : null, t(l.label)] }, l.href + l.label))) })] }), closing ? _jsx(YStack, { width: "100%", pt: 4, minW: 0, children: closing }) : null] }));
73
+ };
40
74
  export { Footer };
41
75
  //# sourceMappingURL=Footer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../src/marketing/Footer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../src/marketing/Footer.tsx"],"names":[],"mappings":"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"}
@@ -15,7 +15,11 @@ const jsx_runtime_1 = require("react/jsx-runtime");
15
15
  * `role="status"` with a label, because the spinner itself is `aria-hidden`.
16
16
  */
17
17
  const gui_1 = require("@hanzo/gui");
18
+ const react_1 = require("@hanzo/i18n/react");
18
19
  const slot_1 = require("../backends/gui/slot.cjs");
19
20
  const spinner_1 = require("../backends/gui/spinner.cjs");
20
- const PageLoading = ({ label = 'Loading', ...p }) => ((0, jsx_runtime_1.jsx)(gui_1.YStack, { ...(0, slot_1.slot)('page-loading'), role: "status", "aria-label": label, width: "100%", minH: "100dvh", items: "center", justify: "center", ...p, children: (0, jsx_runtime_1.jsx)(spinner_1.Spinner, { size: 28, color: "var(--quiet, currentColor)" }) }));
21
+ const PageLoading = ({ label, ...p }) => {
22
+ const { t } = (0, react_1.useI18n)();
23
+ return ((0, jsx_runtime_1.jsx)(gui_1.YStack, { ...(0, slot_1.slot)('page-loading'), role: "status", "aria-label": label ?? t('Loading'), width: "100%", minH: "100dvh", items: "center", justify: "center", ...p, children: (0, jsx_runtime_1.jsx)(spinner_1.Spinner, { size: 28, color: "var(--quiet, currentColor)" }) }));
24
+ };
21
25
  exports.PageLoading = PageLoading;
@@ -12,7 +12,7 @@
12
12
  import { YStack } from '@hanzo/gui';
13
13
  import type { ComponentProps } from 'react';
14
14
  export type PageLoadingProps = Omit<ComponentProps<typeof YStack>, 'children'> & {
15
- /** What assistive tech hears. */
15
+ /** What assistive tech hears; absent, "Loading" in the reader's language. */
16
16
  label?: string;
17
17
  };
18
18
  declare const PageLoading: ({ label, ...p }: PageLoadingProps) => import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"PageLoading.d.ts","sourceRoot":"","sources":["../../src/marketing/PageLoading.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAK3C,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IAC/E,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,QAAA,MAAM,WAAW,oBAAiC,gBAAgB,gCAajE,CAAA;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"PageLoading.d.ts","sourceRoot":"","sources":["../../src/marketing/PageLoading.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAK3C,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IAC/E,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,QAAA,MAAM,WAAW,oBAAqB,gBAAgB,gCAgBrD,CAAA;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -12,8 +12,12 @@ import { jsx as _jsx } from "react/jsx-runtime";
12
12
  * `role="status"` with a label, because the spinner itself is `aria-hidden`.
13
13
  */
14
14
  import { YStack } from '@hanzo/gui';
15
+ import { useI18n } from '@hanzo/i18n/react';
15
16
  import { slot } from '../backends/gui/slot.js';
16
17
  import { Spinner } from '../backends/gui/spinner.js';
17
- const PageLoading = ({ label = 'Loading', ...p }) => (_jsx(YStack, { ...slot('page-loading'), role: "status", "aria-label": label, width: "100%", minH: "100dvh", items: "center", justify: "center", ...p, children: _jsx(Spinner, { size: 28, color: "var(--quiet, currentColor)" }) }));
18
+ const PageLoading = ({ label, ...p }) => {
19
+ const { t } = useI18n();
20
+ return (_jsx(YStack, { ...slot('page-loading'), role: "status", "aria-label": label ?? t('Loading'), width: "100%", minH: "100dvh", items: "center", justify: "center", ...p, children: _jsx(Spinner, { size: 28, color: "var(--quiet, currentColor)" }) }));
21
+ };
18
22
  export { PageLoading };
19
23
  //# sourceMappingURL=PageLoading.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageLoading.js","sourceRoot":"","sources":["../../src/marketing/PageLoading.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;GAUG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAGnC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAOjD,MAAM,WAAW,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,GAAG,CAAC,EAAoB,EAAE,EAAE,CAAC,CACrE,KAAC,MAAM,OACD,IAAI,CAAC,cAAc,CAAC,EACxB,IAAI,EAAC,QAAQ,gBACD,KAAK,EACjB,KAAK,EAAC,MAAM,EACZ,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,QAAQ,EACd,OAAO,EAAC,QAAQ,KACX,CAAY,YAEjB,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAC,4BAA4B,GAAG,GACjD,CACV,CAAA;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"PageLoading.js","sourceRoot":"","sources":["../../src/marketing/PageLoading.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;GAUG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAG3C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAOjD,MAAM,WAAW,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,EAAoB,EAAE,EAAE;IACxD,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAA;IACvB,OAAO,CACP,KAAC,MAAM,OACD,IAAI,CAAC,cAAc,CAAC,EACxB,IAAI,EAAC,QAAQ,gBACD,KAAK,IAAI,CAAC,CAAC,SAAS,CAAC,EACjC,KAAK,EAAC,MAAM,EACZ,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,QAAQ,EACd,OAAO,EAAC,QAAQ,KACX,CAAY,YAEjB,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAC,4BAA4B,GAAG,GACjD,CACR,CAAA;AACH,CAAC,CAAA;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.Plans = void 0;
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
6
7
  /**
7
8
  * Plans — one card per plan on the chosen tab, each with its own way in.
8
9
  *
@@ -21,8 +22,9 @@ const jsx_runtime_1 = require("react/jsx-runtime");
21
22
  * a card's button is pressed.
22
23
  */
23
24
  const gui_1 = require("@hanzo/gui");
25
+ const i18n_1 = require("@hanzo/i18n");
26
+ const react_2 = require("@hanzo/i18n/react");
24
27
  const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
25
- const react_1 = require("react");
26
28
  const slot_1 = require("../backends/gui/slot.cjs");
27
29
  const switch_1 = require("../backends/gui/switch.cjs");
28
30
  const toggle_group_1 = require("../backends/gui/toggle-group.cjs");
@@ -32,12 +34,13 @@ const rows_1 = require("./rows.cjs");
32
34
  const type_1 = require("./type.cjs");
33
35
  const TIGHT = { letterSpacing: '-0.012em', textWrap: 'balance' };
34
36
  const TABS = [
35
- ['individual', 'Individual'],
36
- ['team', 'Team & Enterprise'],
37
+ ['individual', (0, i18n_1.phrase)('Individual')],
38
+ ['team', (0, i18n_1.phrase)('Team & Enterprise')],
37
39
  ];
38
40
  /** The plan families the ladder sells. */
39
41
  const FAMILIES = new Set(['personal', 'team', 'enterprise']);
40
- const Plans = ({ plans, heading = 'h1', title = 'Plans that grow with you', checkout, signIn = '/login', cta = 'Try Hanzo', contactHref = '/contact-sales', onView, onChoose, footnote, }) => {
42
+ const Plans = ({ plans, heading = 'h1', title, checkout, signIn = '/login', cta, contactHref = '/contact-sales', onView, onChoose, footnote, }) => {
43
+ const { t } = (0, react_2.useI18n)();
41
44
  const all = (0, react_1.useMemo)(() => plans.filter((p) => FAMILIES.has(p.category)), [plans]);
42
45
  const tabs = TABS.filter(([a]) => all.some((p) => (0, rows_1.audience)(p) === a));
43
46
  const [picked, setPicked] = (0, react_1.useState)('individual');
@@ -46,7 +49,7 @@ const Plans = ({ plans, heading = 'h1', title = 'Plans that grow with you', chec
46
49
  const { plans: here, from } = (0, react_1.useMemo)(() => (0, rows_1.merged)(all.filter((p) => (0, rows_1.audience)(p) === tab)), [all, tab]);
47
50
  const savings = here.map(rows_1.saving).filter((n) => n !== null);
48
51
  const most = savings.length ? Math.max(...savings) : 0;
49
- const label = savings.every((n) => n === most) ? `Save ${most}% with annual` : `Save up to ${most}% with annual`;
52
+ const label = savings.every((n) => n === most) ? t('Save {n}% with annual', { n: most }) : t('Save up to {n}% with annual', { n: most });
50
53
  // One view per tab a reader looks at; a repaint of the same rows is not a new view.
51
54
  const shown = here.map((p) => p.id).join();
52
55
  (0, react_1.useEffect)(() => {
@@ -60,21 +63,34 @@ const Plans = ({ plans, heading = 'h1', title = 'Plans that grow with you', chec
60
63
  ? `${signIn}?next=${encodeURIComponent(checkout(p, (0, rows_1.termOf)(p, yearly)).replace(/^https:\/\/hanzo\.ai(?=\/)/, ''))}`
61
64
  : (0, rows_1.way)(p) === 'free'
62
65
  ? signIn
63
- : contactHref, cta: cta, onPress: (cta) => onChoose?.({ plan: p, interval: (0, rows_1.termOf)(p, yearly), tab, cta, way: (0, rows_1.way)(p) }) }, p.id));
64
- return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('plans'), render: "section", width: "100%", maxW: 1280, mx: "auto", gap: "$8", items: "center", px: "$6", children: [(0, jsx_runtime_1.jsxs)(gui_1.YStack, { items: "center", gap: "$3", maxW: 768, children: [(0, jsx_runtime_1.jsx)(type_1.Line, { render: heading, m: 0, align: "center", fontFamily: "$heading", fontSize: "$9", lineHeight: "$9", fontWeight: 500, $md: { fontSize: '$11', lineHeight: '$11' }, style: TIGHT, children: title }), (0, jsx_runtime_1.jsx)(type_1.Line, { render: "p", m: 0, size: "lg", tone: "muted", align: "center", children: "You are charged exactly the price shown. Past a plan\u2019s included usage, agents are metered at the rates below." })] }), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { flexWrap: "wrap", items: "center", justify: "center", gap: "$4", children: [tabs.length > 1 ? ((0, jsx_runtime_1.jsx)(toggle_group_1.ToggleGroup, { type: "single", value: tab, onValueChange: (v) => {
66
+ : contactHref, cta: cta ?? t('Try Hanzo'), onPress: (cta) => onChoose?.({ plan: p, interval: (0, rows_1.termOf)(p, yearly), tab, cta, way: (0, rows_1.way)(p) }) }, p.id));
67
+ return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('plans'), render: "section", width: "100%", maxW: 1280, mx: "auto", gap: "$8", items: "center", px: "$6", children: [(0, jsx_runtime_1.jsxs)(gui_1.YStack, { items: "center", gap: "$3", maxW: 768, children: [(0, jsx_runtime_1.jsx)(type_1.Line, { render: heading, m: 0, align: "center", fontFamily: "$heading", fontSize: "$9", lineHeight: "$9", fontWeight: 500, $md: { fontSize: '$11', lineHeight: '$11' }, style: TIGHT, children: title ?? t('Plans that grow with you') }), (0, jsx_runtime_1.jsx)(type_1.Line, { render: "p", m: 0, size: "lg", tone: "muted", align: "center", children: `${t('You are charged exactly the price shown.')} ${t('Past a plan’s included usage, agents are metered at the rates below.')}` })] }), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { flexWrap: "wrap", items: "center", justify: "center", gap: "$4", children: [tabs.length > 1 ? ((0, jsx_runtime_1.jsx)(toggle_group_1.ToggleGroup, { type: "single", value: tab, onValueChange: (v) => {
65
68
  if (v)
66
69
  setPicked(v);
67
- }, disableDeactivation: true, "aria-label": "Who this is for", style: { padding: 4, borderRadius: 9999, background: 'var(--surface-2)' }, children: tabs.map(([a, name]) => ((0, jsx_runtime_1.jsx)(toggle_group_1.ToggleGroupItem, { value: a, variant: "outline", rounded: "$10", borderColor: "transparent", px: "$4", children: name }, a))) })) : null, most > 0 ? ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { render: "label", items: "center", gap: "$3", paddingInlineStart: "$5", paddingInlineEnd: "$3", py: "$2", rounded: 9999, borderWidth: 1, borderColor: "$edge", bg: "$panel", cursor: "pointer", children: [(0, jsx_runtime_1.jsx)(type_1.Line, { size: "sm", tone: "muted", children: label }), (0, jsx_runtime_1.jsx)(switch_1.Switch, { checked: yearly, onCheckedChange: setYearly, "aria-label": "Bill yearly" })] })) : null] }), here.length > 1 ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { width: "100%", children: (0, jsx_runtime_1.jsx)(grid_1.Grid, { columns: { min: 250, max: 4 }, gap: 24, children: here.map(card) }) })) : here[0] ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { width: "100%", maxW: 440, children: card(here[0]) })) : null, footnote ? ((0, jsx_runtime_1.jsx)(type_1.Line, { render: "p", m: 0, size: "xs", tone: "muted", align: "center", maxW: 620, children: footnote })) : null] }));
70
+ }, disableDeactivation: true, "aria-label": t('Who this is for'), style: { padding: 4, borderRadius: 9999, background: 'var(--surface-2)' }, children: tabs.map(([a, name]) => ((0, jsx_runtime_1.jsx)(toggle_group_1.ToggleGroupItem, { value: a, variant: "outline", rounded: "$10", borderColor: "transparent", px: "$4", children: t(name) }, a))) })) : null, most > 0 ? ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { render: "label", items: "center", gap: "$3", paddingInlineStart: "$5", paddingInlineEnd: "$3", py: "$2", rounded: 9999, borderWidth: 1, borderColor: "$edge", bg: "$panel", cursor: "pointer", children: [(0, jsx_runtime_1.jsx)(type_1.Line, { size: "sm", tone: "muted", children: label }), (0, jsx_runtime_1.jsx)(switch_1.Switch, { checked: yearly, onCheckedChange: setYearly, "aria-label": t('Bill yearly') })] })) : null] }), here.length > 1 ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { width: "100%", children: (0, jsx_runtime_1.jsx)(grid_1.Grid, { columns: { min: 250, max: 4 }, gap: 24, children: here.map(card) }) })) : here[0] ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { width: "100%", maxW: 440, children: card(here[0]) })) : null, footnote ? ((0, jsx_runtime_1.jsx)(type_1.Line, { render: "p", m: 0, size: "xs", tone: "muted", align: "center", maxW: 620, children: footnote })) : null] }));
68
71
  };
69
72
  exports.Plans = Plans;
70
73
  /** One plan: its name, its price for the term, the way in, and what it includes. */
71
74
  function Card({ plan, every, href, cta: label, from, team, onPress, }) {
75
+ const { t } = (0, react_2.useI18n)();
72
76
  const how = (0, rows_1.way)(plan);
73
77
  const year = (0, rows_1.charge)(plan, 'year');
74
78
  // A year is headlined as the month it works out to, with the whole year under it.
75
79
  const headline = every === 'year' && year ? Math.round((year / 12) * 100) / 100 : (plan.priceMonthly ?? 0);
76
80
  const floor = (0, rows_1.seats)(plan);
77
81
  // Team and Enterprise name the plan; everyone else is one button.
78
- const cta = team ? `Get ${plan.name} plan` : label;
79
- return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('plan'), render: "section", "aria-label": plan.name, height: "100%", gap: "$5", p: "$5", $sm: { p: '$6' }, rounded: "var(--radius-xl)", borderWidth: 1, borderColor: plan.popular ? '$bound' : '$edge', bg: plan.popular ? '$hover' : '$panel', children: [(0, jsx_runtime_1.jsxs)(gui_1.YStack, { gap: "$2", children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", justify: "space-between", gap: "$3", children: [(0, jsx_runtime_1.jsx)(type_1.Line, { render: "h3", m: 0, size: "xl", weight: "600", children: plan.name }), plan.popular ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('plan-badge'), display: "inline-flex", self: "flex-start", items: "center", px: "$2", py: 2, rounded: 9999, borderWidth: 1, borderColor: "$edge", bg: "$raised", children: (0, jsx_runtime_1.jsx)(type_1.Line, { fontSize: 10, px: 10, tone: "soft", weight: "700", style: { textTransform: 'uppercase', letterSpacing: '0.05em' }, children: "Most popular" }) })) : null] }), plan.description ? ((0, jsx_runtime_1.jsx)(type_1.Line, { render: "p", m: 0, size: "sm", tone: "muted", children: plan.description })) : null] }), (0, jsx_runtime_1.jsx)(gui_1.YStack, { gap: "$1", children: how === 'card' ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(gui_1.YStack, { display: "block", children: [from ? ((0, jsx_runtime_1.jsxs)(type_1.Line, { size: "sm", tone: "muted", children: ["From", ' '] })) : null, (0, jsx_runtime_1.jsx)(type_1.Line, { size: "x4", weight: "600", children: (0, rows_1.money)(headline) }), ' ', (0, jsx_runtime_1.jsx)(type_1.Line, { size: "sm", tone: "muted", children: plan.pricePerUser ? 'USD/seat/month' : 'USD/month' })] }), (0, jsx_runtime_1.jsxs)(type_1.Line, { render: "p", m: 0, size: "sm", tone: "muted", children: [every === 'year' && year ? `Billed ${(0, rows_1.money)(year)}${plan.pricePerUser ? ' per seat' : ''} yearly` : 'Billed monthly', floor > 1 ? ` · from ${floor} seats` : ''] })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(type_1.Line, { size: "x4", weight: "600", children: how === 'free' ? 'Free' : 'Custom' }), (0, jsx_runtime_1.jsx)(type_1.Line, { render: "p", m: 0, size: "sm", tone: "muted", children: how === 'free' ? 'No card needed' : 'Priced with our team' })] })) }), (0, jsx_runtime_1.jsx)(Cta_1.Cta, { href: href, "data-ga": true, onPress: () => onPress(cta), children: cta }), how === 'card' ? ((0, jsx_runtime_1.jsx)(type_1.Line, { render: "p", m: 0, size: "xs", tone: "muted", align: "center", mt: -12, children: "No commitment \u00B7 Cancel anytime" })) : null, plan.features.length ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { render: "ul", gap: "$3", m: 0, p: 0, style: { listStyle: 'none' }, children: plan.features.map((f) => ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { render: "li", items: "flex-start", gap: "$3", children: [(0, jsx_runtime_1.jsx)(gui_1.YStack, { shrink: 0, mt: 3, "aria-hidden": true, children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Check, { size: 16, color: "var(--primary)" }) }), (0, jsx_runtime_1.jsx)(type_1.Line, { size: "sm", tone: "muted", children: f })] }, f))) })) : null] }));
82
+ const cta = team ? t('Get {plan} plan', { plan: plan.name }) : label;
83
+ return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('plan'), render: "section", "aria-label": plan.name, height: "100%", gap: "$5", p: "$5", $sm: { p: '$6' }, rounded: "var(--radius-xl)", borderWidth: 1, borderColor: plan.popular ? '$bound' : '$edge', bg: plan.popular ? '$hover' : '$panel', children: [(0, jsx_runtime_1.jsxs)(gui_1.YStack, { gap: "$2", children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", justify: "space-between", gap: "$3", children: [(0, jsx_runtime_1.jsx)(type_1.Line, { render: "h3", m: 0, size: "xl", weight: "600", children: plan.name }), plan.popular ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('plan-badge'), display: "inline-flex", self: "flex-start", items: "center", px: "$2", py: 2, rounded: 9999, borderWidth: 1, borderColor: "$edge", bg: "$raised", children: (0, jsx_runtime_1.jsx)(type_1.Line, { fontSize: 10, px: 10, tone: "soft", weight: "700", style: { textTransform: 'uppercase', letterSpacing: '0.05em' }, children: t('Most popular') }) })) : null] }), plan.description ? ((0, jsx_runtime_1.jsx)(type_1.Line, { render: "p", m: 0, size: "sm", tone: "muted", children: plan.description })) : null] }), (0, jsx_runtime_1.jsx)(gui_1.YStack, { gap: "$1", children: how === 'card' ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(gui_1.YStack, { display: "block", children: (0, jsx_runtime_1.jsx)(type_1.Line, { size: "sm", tone: "muted", children: t(from
84
+ ? plan.pricePerUser
85
+ ? 'From {price} USD/seat/month'
86
+ : 'From {price} USD/month'
87
+ : plan.pricePerUser
88
+ ? '{price} USD/seat/month'
89
+ : '{price} USD/month', {
90
+ price: ((0, jsx_runtime_1.jsx)(type_1.Line, { size: "x4", weight: "600", children: (0, rows_1.money)(headline) })),
91
+ }) }) }), (0, jsx_runtime_1.jsxs)(type_1.Line, { render: "p", m: 0, size: "sm", tone: "muted", children: [every === 'year' && year
92
+ ? plan.pricePerUser
93
+ ? t('Billed {price} per seat yearly', { price: (0, rows_1.money)(year) })
94
+ : t('Billed {price} yearly', { price: (0, rows_1.money)(year) })
95
+ : t('Billed monthly'), floor > 1 ? ` · ${t('from {n} seats', { n: floor })}` : ''] })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(type_1.Line, { size: "x4", weight: "600", children: how === 'free' ? t('Free') : t('Custom') }), (0, jsx_runtime_1.jsx)(type_1.Line, { render: "p", m: 0, size: "sm", tone: "muted", children: how === 'free' ? t('No card needed') : t('Priced with our team') })] })) }), (0, jsx_runtime_1.jsx)(Cta_1.Cta, { href: href, "data-ga": true, onPress: () => onPress(cta), children: cta }), how === 'card' ? ((0, jsx_runtime_1.jsx)(type_1.Line, { render: "p", m: 0, size: "xs", tone: "muted", align: "center", mt: -12, children: t('No commitment · Cancel anytime') })) : null, plan.features.length ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { render: "ul", gap: "$3", m: 0, p: 0, style: { listStyle: 'none' }, children: plan.features.map((f) => ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { render: "li", items: "flex-start", gap: "$3", children: [(0, jsx_runtime_1.jsx)(gui_1.YStack, { shrink: 0, mt: 3, "aria-hidden": true, children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Check, { size: 16, color: "var(--primary)" }) }), (0, jsx_runtime_1.jsx)(type_1.Line, { size: "sm", tone: "muted", children: f })] }, f))) })) : null] }));
80
96
  }
@@ -11,12 +11,13 @@ export type PlansProps = {
11
11
  plans: readonly PlanRow[];
12
12
  /** The level the title is drawn at: `h1` alone on a page, `h2` inside one. */
13
13
  heading?: 'h1' | 'h2';
14
+ /** The heading; absent, "Plans that grow with you" in the reader's language. */
14
15
  title?: string;
15
16
  /** The address a paid plan's button opens, for the term on the card. */
16
17
  checkout: (plan: PlanRow, interval: Interval) => string;
17
18
  /** Where every card starts: sign-in first, payment second. A paid card opens it with `?next=<checkout>`. */
18
19
  signIn?: string;
19
- /** What every way in says. */
20
+ /** What every way in says; absent, "Try Hanzo" in the reader's language. */
20
21
  cta?: string;
21
22
  contactHref?: string;
22
23
  onView?: (tab: Audience, shown: readonly {
@@ -1 +1 @@
1
- {"version":3,"file":"Plans.d.ts","sourceRoot":"","sources":["../../src/marketing/Plans.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAOpE,OAAO,EAA+D,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAA;AAahI,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,CAAA;AAE1H,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,SAAS,OAAO,EAAE,CAAA;IACzB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,KAAK,MAAM,CAAA;IACvD,4GAA4G;IAC5G,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8BAA8B;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,EAAE,KAAK,IAAI,CAAA;IACzF,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;IACvC,sCAAsC;IACtC,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,QAAA,MAAM,KAAK,+FAWR,UAAU,gCAyHZ,CAAA;AAuID,OAAO,EAAE,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"Plans.d.ts","sourceRoot":"","sources":["../../src/marketing/Plans.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AA4BpE,OAAO,EAA+D,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAA;AAahI,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,QAAQ,CAAA;IAClB,GAAG,EAAE,QAAQ,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,SAAS,OAAO,EAAE,CAAA;IACzB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IACrB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,KAAK,MAAM,CAAA;IACvD,4GAA4G;IAC5G,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,EAAE,KAAK,IAAI,CAAA;IACzF,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;IACvC,sCAAsC;IACtC,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,QAAA,MAAM,KAAK,+FAWR,UAAU,gCAiHZ,CAAA;AA6HD,OAAO,EAAE,KAAK,EAAE,CAAA"}