@stackone/malachite 2.21.0 → 2.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (778) hide show
  1. package/dist/ShadowRootWrapper.js +83 -0
  2. package/dist/ShadowRootWrapper.js.map +1 -0
  3. package/dist/assets/icons/account.svg.js +6 -0
  4. package/dist/assets/icons/account.svg.js.map +1 -0
  5. package/dist/assets/icons/accounts.svg.js +6 -0
  6. package/dist/assets/icons/accounts.svg.js.map +1 -0
  7. package/dist/assets/icons/add.svg.js +6 -0
  8. package/dist/assets/icons/add.svg.js.map +1 -0
  9. package/dist/assets/icons/advanced_logs.svg.js +6 -0
  10. package/dist/assets/icons/advanced_logs.svg.js.map +1 -0
  11. package/dist/assets/icons/api_keys.svg.js +6 -0
  12. package/dist/assets/icons/api_keys.svg.js.map +1 -0
  13. package/dist/assets/icons/archive.svg.js +6 -0
  14. package/dist/assets/icons/archive.svg.js.map +1 -0
  15. package/dist/assets/icons/arrow_left.svg.js +6 -0
  16. package/dist/assets/icons/arrow_left.svg.js.map +1 -0
  17. package/dist/assets/icons/arrow_up.svg.js +6 -0
  18. package/dist/assets/icons/arrow_up.svg.js.map +1 -0
  19. package/dist/assets/icons/arrow_up_right.svg.js +6 -0
  20. package/dist/assets/icons/arrow_up_right.svg.js.map +1 -0
  21. package/dist/assets/icons/authentication.svg.js +6 -0
  22. package/dist/assets/icons/authentication.svg.js.map +1 -0
  23. package/dist/assets/icons/bell.svg.js +6 -0
  24. package/dist/assets/icons/bell.svg.js.map +1 -0
  25. package/dist/assets/icons/bell_slash.svg.js +6 -0
  26. package/dist/assets/icons/bell_slash.svg.js.map +1 -0
  27. package/dist/assets/icons/bi_directional_arrows.svg.js +6 -0
  28. package/dist/assets/icons/bi_directional_arrows.svg.js.map +1 -0
  29. package/dist/assets/icons/card.svg.js +6 -0
  30. package/dist/assets/icons/card.svg.js.map +1 -0
  31. package/dist/assets/icons/caret_down.svg.js +6 -0
  32. package/dist/assets/icons/caret_down.svg.js.map +1 -0
  33. package/dist/assets/icons/caret_left.svg.js +6 -0
  34. package/dist/assets/icons/caret_left.svg.js.map +1 -0
  35. package/dist/assets/icons/caret_right.svg.js +6 -0
  36. package/dist/assets/icons/caret_right.svg.js.map +1 -0
  37. package/dist/assets/icons/caret_up.svg.js +6 -0
  38. package/dist/assets/icons/caret_up.svg.js.map +1 -0
  39. package/dist/assets/icons/change_password.svg.js +6 -0
  40. package/dist/assets/icons/change_password.svg.js.map +1 -0
  41. package/dist/assets/icons/check.svg.js +6 -0
  42. package/dist/assets/icons/check.svg.js.map +1 -0
  43. package/dist/assets/icons/check_circle_filled.svg.js +6 -0
  44. package/dist/assets/icons/check_circle_filled.svg.js.map +1 -0
  45. package/dist/assets/icons/checkmark.svg.js +6 -0
  46. package/dist/assets/icons/checkmark.svg.js.map +1 -0
  47. package/dist/assets/icons/clear.svg.js +6 -0
  48. package/dist/assets/icons/clear.svg.js.map +1 -0
  49. package/dist/assets/icons/close.svg.js +6 -0
  50. package/dist/assets/icons/close.svg.js.map +1 -0
  51. package/dist/assets/icons/code.svg.js +6 -0
  52. package/dist/assets/icons/code.svg.js.map +1 -0
  53. package/dist/assets/icons/command_key.svg.js +6 -0
  54. package/dist/assets/icons/command_key.svg.js.map +1 -0
  55. package/dist/assets/icons/copy.svg.js +6 -0
  56. package/dist/assets/icons/copy.svg.js.map +1 -0
  57. package/dist/assets/icons/csv.svg.js +6 -0
  58. package/dist/assets/icons/csv.svg.js.map +1 -0
  59. package/dist/assets/icons/custom_field.svg.js +6 -0
  60. package/dist/assets/icons/custom_field.svg.js.map +1 -0
  61. package/dist/assets/icons/dashboard.svg.js +6 -0
  62. package/dist/assets/icons/dashboard.svg.js.map +1 -0
  63. package/dist/assets/icons/date.svg.js +6 -0
  64. package/dist/assets/icons/date.svg.js.map +1 -0
  65. package/dist/assets/icons/disable.svg.js +6 -0
  66. package/dist/assets/icons/disable.svg.js.map +1 -0
  67. package/dist/assets/icons/disabled.svg.js +6 -0
  68. package/dist/assets/icons/disabled.svg.js.map +1 -0
  69. package/dist/assets/icons/dismiss.svg.js +6 -0
  70. package/dist/assets/icons/dismiss.svg.js.map +1 -0
  71. package/dist/assets/icons/doc.svg.js +6 -0
  72. package/dist/assets/icons/doc.svg.js.map +1 -0
  73. package/dist/assets/icons/double_check.svg.js +6 -0
  74. package/dist/assets/icons/double_check.svg.js.map +1 -0
  75. package/dist/assets/icons/download.svg.js +6 -0
  76. package/dist/assets/icons/download.svg.js.map +1 -0
  77. package/dist/assets/icons/edit.svg.js +6 -0
  78. package/dist/assets/icons/edit.svg.js.map +1 -0
  79. package/dist/assets/icons/enable.svg.js +6 -0
  80. package/dist/assets/icons/enable.svg.js.map +1 -0
  81. package/dist/assets/icons/enum.svg.js +6 -0
  82. package/dist/assets/icons/enum.svg.js.map +1 -0
  83. package/dist/assets/icons/error_circle_filled.svg.js +6 -0
  84. package/dist/assets/icons/error_circle_filled.svg.js.map +1 -0
  85. package/dist/assets/icons/expand.svg.js +6 -0
  86. package/dist/assets/icons/expand.svg.js.map +1 -0
  87. package/dist/assets/icons/eye-closed.svg.js +6 -0
  88. package/dist/assets/icons/eye-closed.svg.js.map +1 -0
  89. package/dist/assets/icons/eye.svg.js +6 -0
  90. package/dist/assets/icons/eye.svg.js.map +1 -0
  91. package/dist/assets/icons/field_mapping.svg.js +6 -0
  92. package/dist/assets/icons/field_mapping.svg.js.map +1 -0
  93. package/dist/assets/icons/filled_caret_down.svg.js +6 -0
  94. package/dist/assets/icons/filled_caret_down.svg.js.map +1 -0
  95. package/dist/assets/icons/filled_caret_right.svg.js +6 -0
  96. package/dist/assets/icons/filled_caret_right.svg.js.map +1 -0
  97. package/dist/assets/icons/filter.svg.js +6 -0
  98. package/dist/assets/icons/filter.svg.js.map +1 -0
  99. package/dist/assets/icons/forbidden.svg.js +6 -0
  100. package/dist/assets/icons/forbidden.svg.js.map +1 -0
  101. package/dist/assets/icons/forward_arrow.svg.js +6 -0
  102. package/dist/assets/icons/forward_arrow.svg.js.map +1 -0
  103. package/dist/assets/icons/globe.svg.js +6 -0
  104. package/dist/assets/icons/globe.svg.js.map +1 -0
  105. package/dist/assets/icons/inbox.svg.js +6 -0
  106. package/dist/assets/icons/inbox.svg.js.map +1 -0
  107. package/dist/assets/icons/info.svg.js +6 -0
  108. package/dist/assets/icons/info.svg.js.map +1 -0
  109. package/dist/assets/icons/info_circle_filled.svg.js +6 -0
  110. package/dist/assets/icons/info_circle_filled.svg.js.map +1 -0
  111. package/dist/assets/icons/info_filled.svg.js +6 -0
  112. package/dist/assets/icons/info_filled.svg.js.map +1 -0
  113. package/dist/assets/icons/integrations.svg.js +6 -0
  114. package/dist/assets/icons/integrations.svg.js.map +1 -0
  115. package/dist/assets/icons/key.svg.js +6 -0
  116. package/dist/assets/icons/key.svg.js.map +1 -0
  117. package/dist/assets/icons/library.svg.js +6 -0
  118. package/dist/assets/icons/library.svg.js.map +1 -0
  119. package/dist/assets/icons/logs.svg.js +6 -0
  120. package/dist/assets/icons/logs.svg.js.map +1 -0
  121. package/dist/assets/icons/magic_wand.svg.js +6 -0
  122. package/dist/assets/icons/magic_wand.svg.js.map +1 -0
  123. package/dist/assets/icons/manage_team.svg.js +6 -0
  124. package/dist/assets/icons/manage_team.svg.js.map +1 -0
  125. package/dist/assets/icons/manual_native_webhook.svg.js +6 -0
  126. package/dist/assets/icons/manual_native_webhook.svg.js.map +1 -0
  127. package/dist/assets/icons/mark_read.svg.js +6 -0
  128. package/dist/assets/icons/mark_read.svg.js.map +1 -0
  129. package/dist/assets/icons/mark_unread.svg.js +6 -0
  130. package/dist/assets/icons/mark_unread.svg.js.map +1 -0
  131. package/dist/assets/icons/members.svg.js +6 -0
  132. package/dist/assets/icons/members.svg.js.map +1 -0
  133. package/dist/assets/icons/modal.svg.js +6 -0
  134. package/dist/assets/icons/modal.svg.js.map +1 -0
  135. package/dist/assets/icons/more_horizontal.svg.js +6 -0
  136. package/dist/assets/icons/more_horizontal.svg.js.map +1 -0
  137. package/dist/assets/icons/more_vertical.svg.js +6 -0
  138. package/dist/assets/icons/more_vertical.svg.js.map +1 -0
  139. package/dist/assets/icons/navbar_collapse.svg.js +6 -0
  140. package/dist/assets/icons/navbar_collapse.svg.js.map +1 -0
  141. package/dist/assets/icons/navbar_expand.svg.js +6 -0
  142. package/dist/assets/icons/navbar_expand.svg.js.map +1 -0
  143. package/dist/assets/icons/not_found.svg.js +6 -0
  144. package/dist/assets/icons/not_found.svg.js.map +1 -0
  145. package/dist/assets/icons/organization.svg.js +6 -0
  146. package/dist/assets/icons/organization.svg.js.map +1 -0
  147. package/dist/assets/icons/pin.svg.js +6 -0
  148. package/dist/assets/icons/pin.svg.js.map +1 -0
  149. package/dist/assets/icons/plus.svg.js +6 -0
  150. package/dist/assets/icons/plus.svg.js.map +1 -0
  151. package/dist/assets/icons/preview.svg.js +6 -0
  152. package/dist/assets/icons/preview.svg.js.map +1 -0
  153. package/dist/assets/icons/programmatic_native_webhook.svg.js +6 -0
  154. package/dist/assets/icons/programmatic_native_webhook.svg.js.map +1 -0
  155. package/dist/assets/icons/pulse.svg.js +6 -0
  156. package/dist/assets/icons/pulse.svg.js.map +1 -0
  157. package/dist/assets/icons/refresh.svg.js +6 -0
  158. package/dist/assets/icons/refresh.svg.js.map +1 -0
  159. package/dist/assets/icons/reject.svg.js +6 -0
  160. package/dist/assets/icons/reject.svg.js.map +1 -0
  161. package/dist/assets/icons/reload.svg.js +6 -0
  162. package/dist/assets/icons/reload.svg.js.map +1 -0
  163. package/dist/assets/icons/reply.svg.js +6 -0
  164. package/dist/assets/icons/reply.svg.js.map +1 -0
  165. package/dist/assets/icons/required_field_indicator.svg.js +6 -0
  166. package/dist/assets/icons/required_field_indicator.svg.js.map +1 -0
  167. package/dist/assets/icons/search.svg.js +6 -0
  168. package/dist/assets/icons/search.svg.js.map +1 -0
  169. package/dist/assets/icons/security.svg.js +6 -0
  170. package/dist/assets/icons/security.svg.js.map +1 -0
  171. package/dist/assets/icons/send.svg.js +6 -0
  172. package/dist/assets/icons/send.svg.js.map +1 -0
  173. package/dist/assets/icons/settings.svg.js +6 -0
  174. package/dist/assets/icons/settings.svg.js.map +1 -0
  175. package/dist/assets/icons/sign_out.svg.js +6 -0
  176. package/dist/assets/icons/sign_out.svg.js.map +1 -0
  177. package/dist/assets/icons/slider.svg.js +6 -0
  178. package/dist/assets/icons/slider.svg.js.map +1 -0
  179. package/dist/assets/icons/sort.svg.js +6 -0
  180. package/dist/assets/icons/sort.svg.js.map +1 -0
  181. package/dist/assets/icons/source.svg.js +6 -0
  182. package/dist/assets/icons/source.svg.js.map +1 -0
  183. package/dist/assets/icons/sparkle.svg.js +6 -0
  184. package/dist/assets/icons/sparkle.svg.js.map +1 -0
  185. package/dist/assets/icons/star.svg.js +6 -0
  186. package/dist/assets/icons/star.svg.js.map +1 -0
  187. package/dist/assets/icons/step_current.svg.js +6 -0
  188. package/dist/assets/icons/step_current.svg.js.map +1 -0
  189. package/dist/assets/icons/step_upcoming.svg.js +6 -0
  190. package/dist/assets/icons/step_upcoming.svg.js.map +1 -0
  191. package/dist/assets/icons/synthetic_webhook.svg.js +6 -0
  192. package/dist/assets/icons/synthetic_webhook.svg.js.map +1 -0
  193. package/dist/assets/icons/thumbs_down.svg.js +6 -0
  194. package/dist/assets/icons/thumbs_down.svg.js.map +1 -0
  195. package/dist/assets/icons/thumbs_up.svg.js +6 -0
  196. package/dist/assets/icons/thumbs_up.svg.js.map +1 -0
  197. package/dist/assets/icons/trash.svg.js +6 -0
  198. package/dist/assets/icons/trash.svg.js.map +1 -0
  199. package/dist/assets/icons/triangle_down.svg.js +6 -0
  200. package/dist/assets/icons/triangle_down.svg.js.map +1 -0
  201. package/dist/assets/icons/triangle_right.svg.js +6 -0
  202. package/dist/assets/icons/triangle_right.svg.js.map +1 -0
  203. package/dist/assets/icons/unarchive.svg.js +6 -0
  204. package/dist/assets/icons/unarchive.svg.js.map +1 -0
  205. package/dist/assets/icons/upload.svg.js +6 -0
  206. package/dist/assets/icons/upload.svg.js.map +1 -0
  207. package/dist/assets/icons/warning_circle_filled.svg.js +6 -0
  208. package/dist/assets/icons/warning_circle_filled.svg.js.map +1 -0
  209. package/dist/assets/icons/warning_triangle.svg.js +6 -0
  210. package/dist/assets/icons/warning_triangle.svg.js.map +1 -0
  211. package/dist/assets/icons/webhook-events.svg.js +6 -0
  212. package/dist/assets/icons/webhook-events.svg.js.map +1 -0
  213. package/dist/assets/icons/webhook.svg.js +6 -0
  214. package/dist/assets/icons/webhook.svg.js.map +1 -0
  215. package/dist/assets/icons/webhook_signing_secret.svg.js +6 -0
  216. package/dist/assets/icons/webhook_signing_secret.svg.js.map +1 -0
  217. package/dist/assets/logo-stackone-desaturated.png.js +5 -0
  218. package/dist/assets/logo-stackone-desaturated.png.js.map +1 -0
  219. package/dist/components/Accordion.js +105 -0
  220. package/dist/components/Accordion.js.map +1 -0
  221. package/dist/components/ActionBar.js +66 -0
  222. package/dist/components/ActionBar.js.map +1 -0
  223. package/dist/components/ActionMenu.js +174 -0
  224. package/dist/components/ActionMenu.js.map +1 -0
  225. package/dist/components/Alert.js +136 -0
  226. package/dist/components/Alert.js.map +1 -0
  227. package/dist/components/AppLogo.js +43 -0
  228. package/dist/components/AppLogo.js.map +1 -0
  229. package/dist/components/Avatar.js +61 -0
  230. package/dist/components/Avatar.js.map +1 -0
  231. package/dist/components/BaseFormComponent.js +116 -0
  232. package/dist/components/BaseFormComponent.js.map +1 -0
  233. package/dist/components/Breadcrumbs.js +106 -0
  234. package/dist/components/Breadcrumbs.js.map +1 -0
  235. package/dist/components/Button.js +227 -0
  236. package/dist/components/Button.js.map +1 -0
  237. package/dist/components/ButtonList.js +40 -0
  238. package/dist/components/ButtonList.js.map +1 -0
  239. package/dist/components/Card.js +109 -0
  240. package/dist/components/Card.js.map +1 -0
  241. package/dist/components/CardStrip.js +454 -0
  242. package/dist/components/CardStrip.js.map +1 -0
  243. package/dist/components/ChangeReview/ChangeReviewItem.js +129 -0
  244. package/dist/components/ChangeReview/ChangeReviewItem.js.map +1 -0
  245. package/dist/components/ChangeReview/ChangeReviewJump.js +27 -0
  246. package/dist/components/ChangeReview/ChangeReviewJump.js.map +1 -0
  247. package/dist/components/ChangeReview/ChangeReviewRemoved.js +37 -0
  248. package/dist/components/ChangeReview/ChangeReviewRemoved.js.map +1 -0
  249. package/dist/components/ChangeReview/ChangeReviewSummary.js +56 -0
  250. package/dist/components/ChangeReview/ChangeReviewSummary.js.map +1 -0
  251. package/dist/components/ChangeReview/index.js +15 -0
  252. package/dist/components/ChangeReview/index.js.map +1 -0
  253. package/dist/components/Chat/ChatComposer.js +100 -0
  254. package/dist/components/Chat/ChatComposer.js.map +1 -0
  255. package/dist/components/Chat/ChatComposerChip.js +28 -0
  256. package/dist/components/Chat/ChatComposerChip.js.map +1 -0
  257. package/dist/components/Chat/ChatContext.js +55 -0
  258. package/dist/components/Chat/ChatContext.js.map +1 -0
  259. package/dist/components/Chat/ChatContextMeter.js +30 -0
  260. package/dist/components/Chat/ChatContextMeter.js.map +1 -0
  261. package/dist/components/Chat/ChatHeader.js +44 -0
  262. package/dist/components/Chat/ChatHeader.js.map +1 -0
  263. package/dist/components/Chat/ChatMessage.js +127 -0
  264. package/dist/components/Chat/ChatMessage.js.map +1 -0
  265. package/dist/components/Chat/ChatModelPicker.js +207 -0
  266. package/dist/components/Chat/ChatModelPicker.js.map +1 -0
  267. package/dist/components/Chat/ChatRoot.js +6 -0
  268. package/dist/components/Chat/ChatRoot.js.map +1 -0
  269. package/dist/components/Chat/ChatSuggestion.js +22 -0
  270. package/dist/components/Chat/ChatSuggestion.js.map +1 -0
  271. package/dist/components/Chat/ChatThinking.js +20 -0
  272. package/dist/components/Chat/ChatThinking.js.map +1 -0
  273. package/dist/components/Chat/ChatThread.js +68 -0
  274. package/dist/components/Chat/ChatThread.js.map +1 -0
  275. package/dist/components/Chat/ChatToolCall.js +59 -0
  276. package/dist/components/Chat/ChatToolCall.js.map +1 -0
  277. package/dist/components/Chat/index.js +29 -0
  278. package/dist/components/Chat/index.js.map +1 -0
  279. package/dist/components/Chat/stickToBottom.js +29 -0
  280. package/dist/components/Chat/stickToBottom.js.map +1 -0
  281. package/dist/components/Chat/tokenText.js +6 -0
  282. package/dist/components/Chat/tokenText.js.map +1 -0
  283. package/dist/components/Checkbox.js +79 -0
  284. package/dist/components/Checkbox.js.map +1 -0
  285. package/dist/components/ClampText.js +30 -0
  286. package/dist/components/ClampText.js.map +1 -0
  287. package/dist/components/CodeBlock.js +223 -0
  288. package/dist/components/CodeBlock.js.map +1 -0
  289. package/dist/components/CodeBlockHighlighter.js +103 -0
  290. package/dist/components/CodeBlockHighlighter.js.map +1 -0
  291. package/dist/components/CollapsibleSection.js +40 -0
  292. package/dist/components/CollapsibleSection.js.map +1 -0
  293. package/dist/components/Confetti.js +56 -0
  294. package/dist/components/Confetti.js.map +1 -0
  295. package/dist/components/ConfirmationDialog.js +234 -0
  296. package/dist/components/ConfirmationDialog.js.map +1 -0
  297. package/dist/components/ConnectionHeader.js +47 -0
  298. package/dist/components/ConnectionHeader.js.map +1 -0
  299. package/dist/components/CustomIcons/AccountIcon.js +28 -0
  300. package/dist/components/CustomIcons/AccountIcon.js.map +1 -0
  301. package/dist/components/CustomIcons/AccountsIcon.js +28 -0
  302. package/dist/components/CustomIcons/AccountsIcon.js.map +1 -0
  303. package/dist/components/CustomIcons/AddIcon.js +28 -0
  304. package/dist/components/CustomIcons/AddIcon.js.map +1 -0
  305. package/dist/components/CustomIcons/AdvancedLogsIcon.js +21 -0
  306. package/dist/components/CustomIcons/AdvancedLogsIcon.js.map +1 -0
  307. package/dist/components/CustomIcons/ApiKeysIcon.js +16 -0
  308. package/dist/components/CustomIcons/ApiKeysIcon.js.map +1 -0
  309. package/dist/components/CustomIcons/ArchiveIcon.js +16 -0
  310. package/dist/components/CustomIcons/ArchiveIcon.js.map +1 -0
  311. package/dist/components/CustomIcons/ArrowLeftIcon.js +16 -0
  312. package/dist/components/CustomIcons/ArrowLeftIcon.js.map +1 -0
  313. package/dist/components/CustomIcons/ArrowUpIcon.js +28 -0
  314. package/dist/components/CustomIcons/ArrowUpIcon.js.map +1 -0
  315. package/dist/components/CustomIcons/ArrowUpRightIcon.js +20 -0
  316. package/dist/components/CustomIcons/ArrowUpRightIcon.js.map +1 -0
  317. package/dist/components/CustomIcons/AuthenticationIcon.js +28 -0
  318. package/dist/components/CustomIcons/AuthenticationIcon.js.map +1 -0
  319. package/dist/components/CustomIcons/BellIcon.js +16 -0
  320. package/dist/components/CustomIcons/BellIcon.js.map +1 -0
  321. package/dist/components/CustomIcons/BellSlashIcon.js +16 -0
  322. package/dist/components/CustomIcons/BellSlashIcon.js.map +1 -0
  323. package/dist/components/CustomIcons/BiDirectionalArrowsIcon.js +21 -0
  324. package/dist/components/CustomIcons/BiDirectionalArrowsIcon.js.map +1 -0
  325. package/dist/components/CustomIcons/CardIcon.js +16 -0
  326. package/dist/components/CustomIcons/CardIcon.js.map +1 -0
  327. package/dist/components/CustomIcons/CaretDownIcon.js +16 -0
  328. package/dist/components/CustomIcons/CaretDownIcon.js.map +1 -0
  329. package/dist/components/CustomIcons/CaretLeftIcon.js +16 -0
  330. package/dist/components/CustomIcons/CaretLeftIcon.js.map +1 -0
  331. package/dist/components/CustomIcons/CaretRightIcon.js +21 -0
  332. package/dist/components/CustomIcons/CaretRightIcon.js.map +1 -0
  333. package/dist/components/CustomIcons/CaretUpIcon.js +16 -0
  334. package/dist/components/CustomIcons/CaretUpIcon.js.map +1 -0
  335. package/dist/components/CustomIcons/ChangePasswordIcon.js +21 -0
  336. package/dist/components/CustomIcons/ChangePasswordIcon.js.map +1 -0
  337. package/dist/components/CustomIcons/CheckCircleFilled.js +21 -0
  338. package/dist/components/CustomIcons/CheckCircleFilled.js.map +1 -0
  339. package/dist/components/CustomIcons/CheckIcon.js +28 -0
  340. package/dist/components/CustomIcons/CheckIcon.js.map +1 -0
  341. package/dist/components/CustomIcons/CheckmarkIcon.js +16 -0
  342. package/dist/components/CustomIcons/CheckmarkIcon.js.map +1 -0
  343. package/dist/components/CustomIcons/ClearIcon.js +28 -0
  344. package/dist/components/CustomIcons/ClearIcon.js.map +1 -0
  345. package/dist/components/CustomIcons/CloseIcon.js +28 -0
  346. package/dist/components/CustomIcons/CloseIcon.js.map +1 -0
  347. package/dist/components/CustomIcons/CodeIcon.js +16 -0
  348. package/dist/components/CustomIcons/CodeIcon.js.map +1 -0
  349. package/dist/components/CustomIcons/CommandKeyIcon.js +21 -0
  350. package/dist/components/CustomIcons/CommandKeyIcon.js.map +1 -0
  351. package/dist/components/CustomIcons/CopyIcon.js +28 -0
  352. package/dist/components/CustomIcons/CopyIcon.js.map +1 -0
  353. package/dist/components/CustomIcons/CsvIcon.js +28 -0
  354. package/dist/components/CustomIcons/CsvIcon.js.map +1 -0
  355. package/dist/components/CustomIcons/CustomFieldIcon.js +21 -0
  356. package/dist/components/CustomIcons/CustomFieldIcon.js.map +1 -0
  357. package/dist/components/CustomIcons/DashboardIcon.js +28 -0
  358. package/dist/components/CustomIcons/DashboardIcon.js.map +1 -0
  359. package/dist/components/CustomIcons/DateIcon.js +28 -0
  360. package/dist/components/CustomIcons/DateIcon.js.map +1 -0
  361. package/dist/components/CustomIcons/DisableIcon.js +28 -0
  362. package/dist/components/CustomIcons/DisableIcon.js.map +1 -0
  363. package/dist/components/CustomIcons/DisabledIcon.js +28 -0
  364. package/dist/components/CustomIcons/DisabledIcon.js.map +1 -0
  365. package/dist/components/CustomIcons/DismissIcon.js +15 -0
  366. package/dist/components/CustomIcons/DismissIcon.js.map +1 -0
  367. package/dist/components/CustomIcons/DocIcon.js +28 -0
  368. package/dist/components/CustomIcons/DocIcon.js.map +1 -0
  369. package/dist/components/CustomIcons/DoubleCheckIcon.js +21 -0
  370. package/dist/components/CustomIcons/DoubleCheckIcon.js.map +1 -0
  371. package/dist/components/CustomIcons/DownloadIcon.js +28 -0
  372. package/dist/components/CustomIcons/DownloadIcon.js.map +1 -0
  373. package/dist/components/CustomIcons/EditIcon.js +28 -0
  374. package/dist/components/CustomIcons/EditIcon.js.map +1 -0
  375. package/dist/components/CustomIcons/EnableIcon.js +28 -0
  376. package/dist/components/CustomIcons/EnableIcon.js.map +1 -0
  377. package/dist/components/CustomIcons/EnumIcon.js +28 -0
  378. package/dist/components/CustomIcons/EnumIcon.js.map +1 -0
  379. package/dist/components/CustomIcons/ErrorCircleFilled.js +21 -0
  380. package/dist/components/CustomIcons/ErrorCircleFilled.js.map +1 -0
  381. package/dist/components/CustomIcons/ExpandIcon.js +28 -0
  382. package/dist/components/CustomIcons/ExpandIcon.js.map +1 -0
  383. package/dist/components/CustomIcons/EyeClosedIcon.js +16 -0
  384. package/dist/components/CustomIcons/EyeClosedIcon.js.map +1 -0
  385. package/dist/components/CustomIcons/EyeIcon.js +16 -0
  386. package/dist/components/CustomIcons/EyeIcon.js.map +1 -0
  387. package/dist/components/CustomIcons/FieldMappingIcon.js +21 -0
  388. package/dist/components/CustomIcons/FieldMappingIcon.js.map +1 -0
  389. package/dist/components/CustomIcons/FilledCaretDownIcon.js +21 -0
  390. package/dist/components/CustomIcons/FilledCaretDownIcon.js.map +1 -0
  391. package/dist/components/CustomIcons/FilledCaretRightIcon.js +21 -0
  392. package/dist/components/CustomIcons/FilledCaretRightIcon.js.map +1 -0
  393. package/dist/components/CustomIcons/FilterIcon.js +28 -0
  394. package/dist/components/CustomIcons/FilterIcon.js.map +1 -0
  395. package/dist/components/CustomIcons/ForbiddenIcon.js +28 -0
  396. package/dist/components/CustomIcons/ForbiddenIcon.js.map +1 -0
  397. package/dist/components/CustomIcons/ForwardArrowIcon.js +21 -0
  398. package/dist/components/CustomIcons/ForwardArrowIcon.js.map +1 -0
  399. package/dist/components/CustomIcons/GlobeIcon.js +16 -0
  400. package/dist/components/CustomIcons/GlobeIcon.js.map +1 -0
  401. package/dist/components/CustomIcons/InboxIcon.js +16 -0
  402. package/dist/components/CustomIcons/InboxIcon.js.map +1 -0
  403. package/dist/components/CustomIcons/InfoCircleFilled.js +21 -0
  404. package/dist/components/CustomIcons/InfoCircleFilled.js.map +1 -0
  405. package/dist/components/CustomIcons/InfoFilledIcon.js +21 -0
  406. package/dist/components/CustomIcons/InfoFilledIcon.js.map +1 -0
  407. package/dist/components/CustomIcons/InfoIcon.js +28 -0
  408. package/dist/components/CustomIcons/InfoIcon.js.map +1 -0
  409. package/dist/components/CustomIcons/IntegrationsIcon.js +28 -0
  410. package/dist/components/CustomIcons/IntegrationsIcon.js.map +1 -0
  411. package/dist/components/CustomIcons/KeyIcon.js +28 -0
  412. package/dist/components/CustomIcons/KeyIcon.js.map +1 -0
  413. package/dist/components/CustomIcons/LibraryIcon.js +16 -0
  414. package/dist/components/CustomIcons/LibraryIcon.js.map +1 -0
  415. package/dist/components/CustomIcons/LogsIcon.js +28 -0
  416. package/dist/components/CustomIcons/LogsIcon.js.map +1 -0
  417. package/dist/components/CustomIcons/MagicWandIcon.js +16 -0
  418. package/dist/components/CustomIcons/MagicWandIcon.js.map +1 -0
  419. package/dist/components/CustomIcons/ManageTeamIcon.js +21 -0
  420. package/dist/components/CustomIcons/ManageTeamIcon.js.map +1 -0
  421. package/dist/components/CustomIcons/ManualWebhookIcon.js +21 -0
  422. package/dist/components/CustomIcons/ManualWebhookIcon.js.map +1 -0
  423. package/dist/components/CustomIcons/MarkReadIcon.js +16 -0
  424. package/dist/components/CustomIcons/MarkReadIcon.js.map +1 -0
  425. package/dist/components/CustomIcons/MarkUnreadIcon.js +21 -0
  426. package/dist/components/CustomIcons/MarkUnreadIcon.js.map +1 -0
  427. package/dist/components/CustomIcons/MembersIcon.js +28 -0
  428. package/dist/components/CustomIcons/MembersIcon.js.map +1 -0
  429. package/dist/components/CustomIcons/ModalIcon.js +28 -0
  430. package/dist/components/CustomIcons/ModalIcon.js.map +1 -0
  431. package/dist/components/CustomIcons/MoreHorizontalIcon.js +21 -0
  432. package/dist/components/CustomIcons/MoreHorizontalIcon.js.map +1 -0
  433. package/dist/components/CustomIcons/MoreVerticalIcon.js +21 -0
  434. package/dist/components/CustomIcons/MoreVerticalIcon.js.map +1 -0
  435. package/dist/components/CustomIcons/NavbarCollapseIcon.js +21 -0
  436. package/dist/components/CustomIcons/NavbarCollapseIcon.js.map +1 -0
  437. package/dist/components/CustomIcons/NavbarExpandIcon.js +21 -0
  438. package/dist/components/CustomIcons/NavbarExpandIcon.js.map +1 -0
  439. package/dist/components/CustomIcons/NotFoundIcon.js +16 -0
  440. package/dist/components/CustomIcons/NotFoundIcon.js.map +1 -0
  441. package/dist/components/CustomIcons/OrganizationIcon.js +21 -0
  442. package/dist/components/CustomIcons/OrganizationIcon.js.map +1 -0
  443. package/dist/components/CustomIcons/PinIcon.js +16 -0
  444. package/dist/components/CustomIcons/PinIcon.js.map +1 -0
  445. package/dist/components/CustomIcons/PlusIcon.js +28 -0
  446. package/dist/components/CustomIcons/PlusIcon.js.map +1 -0
  447. package/dist/components/CustomIcons/PreviewIcon.js +28 -0
  448. package/dist/components/CustomIcons/PreviewIcon.js.map +1 -0
  449. package/dist/components/CustomIcons/ProgrammaticWebhookIcon.js +21 -0
  450. package/dist/components/CustomIcons/ProgrammaticWebhookIcon.js.map +1 -0
  451. package/dist/components/CustomIcons/PulseIcon.js +28 -0
  452. package/dist/components/CustomIcons/PulseIcon.js.map +1 -0
  453. package/dist/components/CustomIcons/RefreshIcon.js +28 -0
  454. package/dist/components/CustomIcons/RefreshIcon.js.map +1 -0
  455. package/dist/components/CustomIcons/RejectIcon.js +28 -0
  456. package/dist/components/CustomIcons/RejectIcon.js.map +1 -0
  457. package/dist/components/CustomIcons/ReloadIcon.js +28 -0
  458. package/dist/components/CustomIcons/ReloadIcon.js.map +1 -0
  459. package/dist/components/CustomIcons/ReplyIcon.js +16 -0
  460. package/dist/components/CustomIcons/ReplyIcon.js.map +1 -0
  461. package/dist/components/CustomIcons/RequiredFieldIndicatorIcon.js +21 -0
  462. package/dist/components/CustomIcons/RequiredFieldIndicatorIcon.js.map +1 -0
  463. package/dist/components/CustomIcons/SearchIcon.js +15 -0
  464. package/dist/components/CustomIcons/SearchIcon.js.map +1 -0
  465. package/dist/components/CustomIcons/SecurityIcon.js +28 -0
  466. package/dist/components/CustomIcons/SecurityIcon.js.map +1 -0
  467. package/dist/components/CustomIcons/SendIcon.js +16 -0
  468. package/dist/components/CustomIcons/SendIcon.js.map +1 -0
  469. package/dist/components/CustomIcons/SettingsIcon.js +28 -0
  470. package/dist/components/CustomIcons/SettingsIcon.js.map +1 -0
  471. package/dist/components/CustomIcons/SignOutIcon.js +16 -0
  472. package/dist/components/CustomIcons/SignOutIcon.js.map +1 -0
  473. package/dist/components/CustomIcons/SliderIcon.js +28 -0
  474. package/dist/components/CustomIcons/SliderIcon.js.map +1 -0
  475. package/dist/components/CustomIcons/SortIcon.js +28 -0
  476. package/dist/components/CustomIcons/SortIcon.js.map +1 -0
  477. package/dist/components/CustomIcons/SourceIcon.js +28 -0
  478. package/dist/components/CustomIcons/SourceIcon.js.map +1 -0
  479. package/dist/components/CustomIcons/SparkleIcon.js +16 -0
  480. package/dist/components/CustomIcons/SparkleIcon.js.map +1 -0
  481. package/dist/components/CustomIcons/StarIcon.js +16 -0
  482. package/dist/components/CustomIcons/StarIcon.js.map +1 -0
  483. package/dist/components/CustomIcons/StepCurrentIcon.js +21 -0
  484. package/dist/components/CustomIcons/StepCurrentIcon.js.map +1 -0
  485. package/dist/components/CustomIcons/StepUpcomingIcon.js +21 -0
  486. package/dist/components/CustomIcons/StepUpcomingIcon.js.map +1 -0
  487. package/dist/components/CustomIcons/SyntheticWebhookIcon.js +21 -0
  488. package/dist/components/CustomIcons/SyntheticWebhookIcon.js.map +1 -0
  489. package/dist/components/CustomIcons/ThumbsDownIcon.js +21 -0
  490. package/dist/components/CustomIcons/ThumbsDownIcon.js.map +1 -0
  491. package/dist/components/CustomIcons/ThumbsUpIcon.js +16 -0
  492. package/dist/components/CustomIcons/ThumbsUpIcon.js.map +1 -0
  493. package/dist/components/CustomIcons/TrashIcon.js +28 -0
  494. package/dist/components/CustomIcons/TrashIcon.js.map +1 -0
  495. package/dist/components/CustomIcons/TriangleDownIcon.js +21 -0
  496. package/dist/components/CustomIcons/TriangleDownIcon.js.map +1 -0
  497. package/dist/components/CustomIcons/TriangleRightIcon.js +21 -0
  498. package/dist/components/CustomIcons/TriangleRightIcon.js.map +1 -0
  499. package/dist/components/CustomIcons/UnarchiveIcon.js +16 -0
  500. package/dist/components/CustomIcons/UnarchiveIcon.js.map +1 -0
  501. package/dist/components/CustomIcons/UploadIcon.js +28 -0
  502. package/dist/components/CustomIcons/UploadIcon.js.map +1 -0
  503. package/dist/components/CustomIcons/WarningCircleFilled.js +21 -0
  504. package/dist/components/CustomIcons/WarningCircleFilled.js.map +1 -0
  505. package/dist/components/CustomIcons/WarningTriangleIcon.js +21 -0
  506. package/dist/components/CustomIcons/WarningTriangleIcon.js.map +1 -0
  507. package/dist/components/CustomIcons/WebhookEventsIcon.js +28 -0
  508. package/dist/components/CustomIcons/WebhookEventsIcon.js.map +1 -0
  509. package/dist/components/CustomIcons/WebhookIcon.js +28 -0
  510. package/dist/components/CustomIcons/WebhookIcon.js.map +1 -0
  511. package/dist/components/CustomIcons/WebhookSigningSecretIcon.js +21 -0
  512. package/dist/components/CustomIcons/WebhookSigningSecretIcon.js.map +1 -0
  513. package/dist/components/CustomIcons/index.js +328 -0
  514. package/dist/components/CustomIcons/index.js.map +1 -0
  515. package/dist/components/DefinitionRow.js +15 -0
  516. package/dist/components/DefinitionRow.js.map +1 -0
  517. package/dist/components/DisclosureArrow.js +20 -0
  518. package/dist/components/DisclosureArrow.js.map +1 -0
  519. package/dist/components/Divider.js +59 -0
  520. package/dist/components/Divider.js.map +1 -0
  521. package/dist/components/Dropdown.js +849 -0
  522. package/dist/components/Dropdown.js.map +1 -0
  523. package/dist/components/FieldBlock.js +25 -0
  524. package/dist/components/FieldBlock.js.map +1 -0
  525. package/dist/components/FieldGroup.js +23 -0
  526. package/dist/components/FieldGroup.js.map +1 -0
  527. package/dist/components/FieldMessage.js +15 -0
  528. package/dist/components/FieldMessage.js.map +1 -0
  529. package/dist/components/Flex.js +45 -0
  530. package/dist/components/Flex.js.map +1 -0
  531. package/dist/components/FooterLinks.js +88 -0
  532. package/dist/components/FooterLinks.js.map +1 -0
  533. package/dist/components/FooterNav.js +19 -0
  534. package/dist/components/FooterNav.js.map +1 -0
  535. package/dist/components/Form.js +26 -0
  536. package/dist/components/Form.js.map +1 -0
  537. package/dist/components/FormItem.js +32 -0
  538. package/dist/components/FormItem.js.map +1 -0
  539. package/dist/components/FormSectionHeading.js +20 -0
  540. package/dist/components/FormSectionHeading.js.map +1 -0
  541. package/dist/components/InlineConfirm.js +129 -0
  542. package/dist/components/InlineConfirm.js.map +1 -0
  543. package/dist/components/Input/Input.js +302 -0
  544. package/dist/components/Input/Input.js.map +1 -0
  545. package/dist/components/KeyValueList.js +26 -0
  546. package/dist/components/KeyValueList.js.map +1 -0
  547. package/dist/components/Link.js +47 -0
  548. package/dist/components/Link.js.map +1 -0
  549. package/dist/components/LoadingBar.js +85 -0
  550. package/dist/components/LoadingBar.js.map +1 -0
  551. package/dist/components/LoadingInput.js +29 -0
  552. package/dist/components/LoadingInput.js.map +1 -0
  553. package/dist/components/MalachiteContext.js +18 -0
  554. package/dist/components/MalachiteContext.js.map +1 -0
  555. package/dist/components/Modal.js +212 -0
  556. package/dist/components/Modal.js.map +1 -0
  557. package/dist/components/MultiSelect.js +645 -0
  558. package/dist/components/MultiSelect.js.map +1 -0
  559. package/dist/components/NumberTag.js +22 -0
  560. package/dist/components/NumberTag.js.map +1 -0
  561. package/dist/components/OverflowRow.js +153 -0
  562. package/dist/components/OverflowRow.js.map +1 -0
  563. package/dist/components/Padded.js +39 -0
  564. package/dist/components/Padded.js.map +1 -0
  565. package/dist/components/PageLayout/constants.js +12 -0
  566. package/dist/components/PageLayout/constants.js.map +1 -0
  567. package/dist/components/PageLayout/emptyLayout.js +61 -0
  568. package/dist/components/PageLayout/emptyLayout.js.map +1 -0
  569. package/dist/components/PageLayout/index.js +10 -0
  570. package/dist/components/PageLayout/index.js.map +1 -0
  571. package/dist/components/PageLayout/regularLayout.js +177 -0
  572. package/dist/components/PageLayout/regularLayout.js.map +1 -0
  573. package/dist/components/PillButton.js +70 -0
  574. package/dist/components/PillButton.js.map +1 -0
  575. package/dist/components/PreviewTree.js +49 -0
  576. package/dist/components/PreviewTree.js.map +1 -0
  577. package/dist/components/Progress.js +69 -0
  578. package/dist/components/Progress.js.map +1 -0
  579. package/dist/components/QueryInput.js +370 -0
  580. package/dist/components/QueryInput.js.map +1 -0
  581. package/dist/components/Radio.js +63 -0
  582. package/dist/components/Radio.js.map +1 -0
  583. package/dist/components/Search.js +54 -0
  584. package/dist/components/Search.js.map +1 -0
  585. package/dist/components/SegmentedControl.js +107 -0
  586. package/dist/components/SegmentedControl.js.map +1 -0
  587. package/dist/components/SelectableCard.js +364 -0
  588. package/dist/components/SelectableCard.js.map +1 -0
  589. package/dist/components/SelectionBar.js +103 -0
  590. package/dist/components/SelectionBar.js.map +1 -0
  591. package/dist/components/SettingRow.js +40 -0
  592. package/dist/components/SettingRow.js.map +1 -0
  593. package/dist/components/ShadowEscape.js +166 -0
  594. package/dist/components/ShadowEscape.js.map +1 -0
  595. package/dist/components/SidePanel.js +140 -0
  596. package/dist/components/SidePanel.js.map +1 -0
  597. package/dist/components/SidePanelNavFooter.js +46 -0
  598. package/dist/components/SidePanelNavFooter.js.map +1 -0
  599. package/dist/components/Skeleton.js +106 -0
  600. package/dist/components/Skeleton.js.map +1 -0
  601. package/dist/components/Spacer.js +63 -0
  602. package/dist/components/Spacer.js.map +1 -0
  603. package/dist/components/Spinner.js +86 -0
  604. package/dist/components/Spinner.js.map +1 -0
  605. package/dist/components/SplitScreenLayout.js +51 -0
  606. package/dist/components/SplitScreenLayout.js.map +1 -0
  607. package/dist/components/StatBadge.js +10 -0
  608. package/dist/components/StatBadge.js.map +1 -0
  609. package/dist/components/Statistic.js +48 -0
  610. package/dist/components/Statistic.js.map +1 -0
  611. package/dist/components/StatusBadge.js +56 -0
  612. package/dist/components/StatusBadge.js.map +1 -0
  613. package/dist/components/StepTabs.js +52 -0
  614. package/dist/components/StepTabs.js.map +1 -0
  615. package/dist/components/Stepper.js +40 -0
  616. package/dist/components/Stepper.js.map +1 -0
  617. package/dist/components/Surface.js +143 -0
  618. package/dist/components/Surface.js.map +1 -0
  619. package/dist/components/Swatch.js +44 -0
  620. package/dist/components/Swatch.js.map +1 -0
  621. package/dist/components/Table/Table.js +1007 -0
  622. package/dist/components/Table/Table.js.map +1 -0
  623. package/dist/components/Table/TablePagination.js +205 -0
  624. package/dist/components/Table/TablePagination.js.map +1 -0
  625. package/dist/components/Tabs.js +35 -0
  626. package/dist/components/Tabs.js.map +1 -0
  627. package/dist/components/Tag.js +154 -0
  628. package/dist/components/Tag.js.map +1 -0
  629. package/dist/components/TextArea/TextArea.js +289 -0
  630. package/dist/components/TextArea/TextArea.js.map +1 -0
  631. package/dist/components/ThemeScope.js +14 -0
  632. package/dist/components/ThemeScope.js.map +1 -0
  633. package/dist/components/Toggle.js +115 -0
  634. package/dist/components/Toggle.js.map +1 -0
  635. package/dist/components/Toolbar.js +25 -0
  636. package/dist/components/Toolbar.js.map +1 -0
  637. package/dist/components/Tooltip.js +181 -0
  638. package/dist/components/Tooltip.js.map +1 -0
  639. package/dist/components/TruncatedTooltip.js +38 -0
  640. package/dist/components/TruncatedTooltip.js.map +1 -0
  641. package/dist/components/Typography/CodeText.js +49 -0
  642. package/dist/components/Typography/CodeText.js.map +1 -0
  643. package/dist/components/Typography/EllipsisText.js +27 -0
  644. package/dist/components/Typography/EllipsisText.js.map +1 -0
  645. package/dist/components/Typography/FormSectionTitle.js +21 -0
  646. package/dist/components/Typography/FormSectionTitle.js.map +1 -0
  647. package/dist/components/Typography/LinkText.js +32 -0
  648. package/dist/components/Typography/LinkText.js.map +1 -0
  649. package/dist/components/Typography/MarkdownBlock.js +304 -0
  650. package/dist/components/Typography/MarkdownBlock.js.map +1 -0
  651. package/dist/components/Typography/PageTitle.js +21 -0
  652. package/dist/components/Typography/PageTitle.js.map +1 -0
  653. package/dist/components/Typography/SecondaryText.js +51 -0
  654. package/dist/components/Typography/SecondaryText.js.map +1 -0
  655. package/dist/components/Typography/SectionTitle.js +16 -0
  656. package/dist/components/Typography/SectionTitle.js.map +1 -0
  657. package/dist/components/Typography/StatisticLabel.js +22 -0
  658. package/dist/components/Typography/StatisticLabel.js.map +1 -0
  659. package/dist/components/Typography/StatisticValue.js +21 -0
  660. package/dist/components/Typography/StatisticValue.js.map +1 -0
  661. package/dist/components/Typography/TerminalText.js +45 -0
  662. package/dist/components/Typography/TerminalText.js.map +1 -0
  663. package/dist/components/Typography/Text.js +31 -0
  664. package/dist/components/Typography/Text.js.map +1 -0
  665. package/dist/components/Typography/index.js +31 -0
  666. package/dist/components/Typography/index.js.map +1 -0
  667. package/dist/components/Typography/textStyles.js +66 -0
  668. package/dist/components/Typography/textStyles.js.map +1 -0
  669. package/dist/components/WizardLayout.js +113 -0
  670. package/dist/components/WizardLayout.js.map +1 -0
  671. package/dist/components/actionBarMenuItems.js +16 -0
  672. package/dist/components/actionBarMenuItems.js.map +1 -0
  673. package/dist/components/activeElement.js +11 -0
  674. package/dist/components/activeElement.js.map +1 -0
  675. package/dist/components/breadcrumbsNav.js +5 -0
  676. package/dist/components/breadcrumbsNav.js.map +1 -0
  677. package/dist/components/cardStripSlot.js +9 -0
  678. package/dist/components/cardStripSlot.js.map +1 -0
  679. package/dist/components/codeBlockDiff.js +78 -0
  680. package/dist/components/codeBlockDiff.js.map +1 -0
  681. package/dist/components/codeBlockLine.js +90 -0
  682. package/dist/components/codeBlockLine.js.map +1 -0
  683. package/dist/components/codeBlockStyles.js +20 -0
  684. package/dist/components/codeBlockStyles.js.map +1 -0
  685. package/dist/components/confirmationDialogVariants.js +30 -0
  686. package/dist/components/confirmationDialogVariants.js.map +1 -0
  687. package/dist/components/controlTextSize.js +14 -0
  688. package/dist/components/controlTextSize.js.map +1 -0
  689. package/dist/components/devWarning.js +22 -0
  690. package/dist/components/devWarning.js.map +1 -0
  691. package/dist/components/dividerTypes.js +7 -0
  692. package/dist/components/dividerTypes.js.map +1 -0
  693. package/dist/components/dropdownPanelPosition.js +38 -0
  694. package/dist/components/dropdownPanelPosition.js.map +1 -0
  695. package/dist/components/dropdownTriggerStyle.js +36 -0
  696. package/dist/components/dropdownTriggerStyle.js.map +1 -0
  697. package/dist/components/escapeLayers.js +13 -0
  698. package/dist/components/escapeLayers.js.map +1 -0
  699. package/dist/components/flexTypes.js +8 -0
  700. package/dist/components/flexTypes.js.map +1 -0
  701. package/dist/components/focusRing.js +9 -0
  702. package/dist/components/focusRing.js.map +1 -0
  703. package/dist/components/formItemState.js +12 -0
  704. package/dist/components/formItemState.js.map +1 -0
  705. package/dist/components/glassSurface.js +10 -0
  706. package/dist/components/glassSurface.js.map +1 -0
  707. package/dist/components/injectStyleSheet.js +33 -0
  708. package/dist/components/injectStyleSheet.js.map +1 -0
  709. package/dist/components/inlineConfirmPosition.js +27 -0
  710. package/dist/components/inlineConfirmPosition.js.map +1 -0
  711. package/dist/components/keyboardActivation.js +14 -0
  712. package/dist/components/keyboardActivation.js.map +1 -0
  713. package/dist/components/modalTray.js +16 -0
  714. package/dist/components/modalTray.js.map +1 -0
  715. package/dist/components/optionRowStyles.js +27 -0
  716. package/dist/components/optionRowStyles.js.map +1 -0
  717. package/dist/components/overlayBehaviour.js +118 -0
  718. package/dist/components/overlayBehaviour.js.map +1 -0
  719. package/dist/components/portalOverlay.js +35 -0
  720. package/dist/components/portalOverlay.js.map +1 -0
  721. package/dist/components/prismCedar.js +27 -0
  722. package/dist/components/prismCedar.js.map +1 -0
  723. package/dist/components/queryInputGeometry.js +24 -0
  724. package/dist/components/queryInputGeometry.js.map +1 -0
  725. package/dist/components/renderableNode.js +6 -0
  726. package/dist/components/renderableNode.js.map +1 -0
  727. package/dist/components/safeHref.js +11 -0
  728. package/dist/components/safeHref.js.map +1 -0
  729. package/dist/components/scrollLock.js +19 -0
  730. package/dist/components/scrollLock.js.map +1 -0
  731. package/dist/components/selectedRow.js +14 -0
  732. package/dist/components/selectedRow.js.map +1 -0
  733. package/dist/components/selectionBarChrome.js +63 -0
  734. package/dist/components/selectionBarChrome.js.map +1 -0
  735. package/dist/components/topLayer.js +29 -0
  736. package/dist/components/topLayer.js.map +1 -0
  737. package/dist/components/useAdoptedStyleSheet.js +41 -0
  738. package/dist/components/useAdoptedStyleSheet.js.map +1 -0
  739. package/dist/geist-font.js +23 -0
  740. package/dist/geist-font.js.map +1 -0
  741. package/dist/index.d.ts +1056 -86
  742. package/dist/index.js +403 -104
  743. package/dist/index.js.map +1 -1
  744. package/dist/inter-font.js +35 -0
  745. package/dist/inter-font.js.map +1 -0
  746. package/dist/stack-sans-font.js +17 -0
  747. package/dist/stack-sans-font.js.map +1 -0
  748. package/dist/tailwind.css.js +5 -0
  749. package/dist/tailwind.css.js.map +1 -0
  750. package/dist/theme.js +1959 -0
  751. package/dist/theme.js.map +1 -0
  752. package/dist/vendor/@fontsource/geist-sans/files/geist-sans-latin-400-normal.woff2.js +5 -0
  753. package/dist/vendor/@fontsource/geist-sans/files/geist-sans-latin-400-normal.woff2.js.map +1 -0
  754. package/dist/vendor/@fontsource/geist-sans/files/geist-sans-latin-500-normal.woff2.js +5 -0
  755. package/dist/vendor/@fontsource/geist-sans/files/geist-sans-latin-500-normal.woff2.js.map +1 -0
  756. package/dist/vendor/@fontsource/inter/files/inter-latin-400-normal.woff2.js +5 -0
  757. package/dist/vendor/@fontsource/inter/files/inter-latin-400-normal.woff2.js.map +1 -0
  758. package/dist/vendor/@fontsource/inter/files/inter-latin-500-normal.woff2.js +5 -0
  759. package/dist/vendor/@fontsource/inter/files/inter-latin-500-normal.woff2.js.map +1 -0
  760. package/dist/vendor/@fontsource/inter/files/inter-latin-600-normal.woff2.js +5 -0
  761. package/dist/vendor/@fontsource/inter/files/inter-latin-600-normal.woff2.js.map +1 -0
  762. package/dist/vendor/@fontsource/inter/files/inter-latin-700-normal.woff2.js +5 -0
  763. package/dist/vendor/@fontsource/inter/files/inter-latin-700-normal.woff2.js.map +1 -0
  764. package/dist/vendor/@fontsource/inter/files/inter-latin-ext-400-normal.woff2.js +5 -0
  765. package/dist/vendor/@fontsource/inter/files/inter-latin-ext-400-normal.woff2.js.map +1 -0
  766. package/dist/vendor/@fontsource/inter/files/inter-latin-ext-500-normal.woff2.js +5 -0
  767. package/dist/vendor/@fontsource/inter/files/inter-latin-ext-500-normal.woff2.js.map +1 -0
  768. package/dist/vendor/@fontsource/inter/files/inter-latin-ext-600-normal.woff2.js +5 -0
  769. package/dist/vendor/@fontsource/inter/files/inter-latin-ext-600-normal.woff2.js.map +1 -0
  770. package/dist/vendor/@fontsource/inter/files/inter-latin-ext-700-normal.woff2.js +5 -0
  771. package/dist/vendor/@fontsource/inter/files/inter-latin-ext-700-normal.woff2.js.map +1 -0
  772. package/dist/vendor/@fontsource-variable/stack-sans-text/files/stack-sans-text-latin-wght-normal.woff2.js +5 -0
  773. package/dist/vendor/@fontsource-variable/stack-sans-text/files/stack-sans-text-latin-wght-normal.woff2.js.map +1 -0
  774. package/package.json +6 -1
  775. package/dist/CodeBlockHighlighter-BJeE32YS.js +0 -2791
  776. package/dist/CodeBlockHighlighter-BJeE32YS.js.map +0 -1
  777. package/dist/index-P2H4or4t.js +0 -19528
  778. package/dist/index-P2H4or4t.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppLogo.js","sources":["../../src/components/AppLogo.tsx"],"sourcesContent":["import React from 'react';\nimport Avatar from './Avatar';\nimport Tag from './Tag';\nimport Typography from './Typography';\nimport { getFontSize, getFontWeight } from './Typography/textStyles';\nimport type { FontSize, FontWeight } from './Typography/Text';\n\nexport interface AppLogoProps {\n /** Connector logo URL. Falls back to a coloured initial tile when missing or broken. */\n src?: string;\n /** Connector name — the accessible label, the fallback initial, and the visible text. */\n name: string;\n /** Renders the name beside the mark. Omit for a bare logo (e.g. inside a dense row). */\n showName?: boolean;\n /** Pixel size of the square mark. */\n size?: number;\n nameSize?: FontSize;\n /** Defaults to `normal`. Raise it when the logo doubles as a page title. */\n nameWeight?: FontWeight;\n /** Rendered as a tag after the name, e.g. `v1.2.0` or `Legacy`. */\n version?: string;\n /** Truncates a long name with an ellipsis and reveals the full value on hover. */\n truncate?: boolean;\n className?: string;\n}\n\nconst AppLogo: React.FC<AppLogoProps> = ({\n src,\n name,\n showName = true,\n size = 24,\n nameSize = 'medium',\n nameWeight = 'normal',\n version,\n truncate = false,\n className = '',\n}) => {\n const gap = size <= 18 ? 'gap-2' : 'gap-3';\n\n if (!showName) {\n return <Avatar src={src} name={name} size={size} shape=\"square\" className={className} />;\n }\n\n return (\n // `max-w-full` is what makes `truncate` work — without it the box is floored at the name's min-content width.\n <span className={`inline-flex items-center ${gap} max-w-full ${className}`.trim()}>\n <Avatar src={src} name={name} size={size} shape=\"square\" className=\"shrink-0\" />\n <span className=\"inline-flex items-center gap-2 min-w-0\">\n {truncate ? (\n <Typography.EllipsisText\n maxWidth=\"100%\"\n tooltip={name}\n style={{\n fontSize: getFontSize(nameSize),\n fontWeight: getFontWeight(nameWeight),\n }}\n >\n {name}\n </Typography.EllipsisText>\n ) : (\n <Typography.Text size={nameSize} fontWeight={nameWeight}>\n {name}\n </Typography.Text>\n )}\n {version ? (\n <span className=\"shrink-0\">\n <Tag value={version} textTransform=\"none\" paddingSize=\"compact\" />\n </span>\n ) : null}\n </span>\n </span>\n );\n};\n\nexport default AppLogo;\n"],"names":["AppLogo","src","name","showName","size","nameSize","nameWeight","version","truncate","className","gap","jsxs","jsx","Avatar","Typography","getFontSize","getFontWeight","Tag"],"mappings":";;;;;AA0BA,MAAMA,IAAkC,CAAC;AAAA,EACrC,KAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,MAAAC,IAAO;AAAA,EACP,UAAAC,IAAW;AAAA,EACX,YAAAC,IAAa;AAAA,EACb,SAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAChB,MAAM;AACF,QAAMC,IAAMN,KAAQ,KAAK,UAAU;AAEnC,SAAKD;AAAA;AAAA,IAMD,gBAAAQ,EAAC,UAAK,WAAW,4BAA4BD,CAAG,eAAeD,CAAS,GAAG,KAAA,GACvE,UAAA;AAAA,MAAA,gBAAAG,EAACC,KAAO,KAAAZ,GAAU,MAAAC,GAAY,MAAAE,GAAY,OAAM,UAAS,WAAU,YAAW;AAAA,MAC9E,gBAAAO,EAAC,QAAA,EAAK,WAAU,0CACX,UAAA;AAAA,QAAAH,IACG,gBAAAI;AAAA,UAACE,EAAW;AAAA,UAAX;AAAA,YACG,UAAS;AAAA,YACT,SAASZ;AAAA,YACT,OAAO;AAAA,cACH,UAAUa,EAAYV,CAAQ;AAAA,cAC9B,YAAYW,EAAcV,CAAU;AAAA,YAAA;AAAA,YAGvC,UAAAJ;AAAA,UAAA;AAAA,QAAA,sBAGJY,EAAW,MAAX,EAAgB,MAAMT,GAAU,YAAYC,GACxC,UAAAJ,GACL;AAAA,QAEHK,IACG,gBAAAK,EAAC,QAAA,EAAK,WAAU,YACZ,UAAA,gBAAAA,EAACK,GAAA,EAAI,OAAOV,GAAS,eAAc,QAAO,aAAY,UAAA,CAAU,GACpE,IACA;AAAA,MAAA,EAAA,CACR;AAAA,IAAA,EAAA,CACJ;AAAA,wBA9BQM,GAAA,EAAO,KAAAZ,GAAU,MAAAC,GAAY,MAAAE,GAAY,OAAM,UAAS,WAAAK,GAAsB;AAgC9F;"}
@@ -0,0 +1,61 @@
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import { useState as f } from "react";
3
+ const c = (e) => {
4
+ let r = 0;
5
+ for (let t = 0; t < e.length; t += 1)
6
+ r = e.charCodeAt(t) + ((r << 5) - r);
7
+ return `hsl(${Math.abs(r) % 360}, 55%, 52%)`;
8
+ }, g = ({
9
+ src: e,
10
+ name: r,
11
+ size: t = 24,
12
+ shape: l = "square",
13
+ className: i = ""
14
+ }) => {
15
+ const [d, h] = f(void 0), o = (r == null ? void 0 : r.trim()) ?? "", n = l === "circle" ? "50%" : `${Math.round(t * 0.25)}px`;
16
+ return e && d !== e ? /* @__PURE__ */ a(
17
+ "img",
18
+ {
19
+ src: e,
20
+ alt: o,
21
+ loading: "lazy",
22
+ decoding: "async",
23
+ onError: () => h(e),
24
+ className: i,
25
+ style: {
26
+ width: `${t}px`,
27
+ height: `${t}px`,
28
+ borderRadius: n,
29
+ objectFit: "contain",
30
+ flexShrink: 0
31
+ }
32
+ }
33
+ ) : /* @__PURE__ */ a(
34
+ "div",
35
+ {
36
+ ...o ? { role: "img", "aria-label": o } : { "aria-hidden": !0 },
37
+ className: i,
38
+ style: {
39
+ width: `${t}px`,
40
+ height: `${t}px`,
41
+ flexShrink: 0,
42
+ borderRadius: n,
43
+ display: "flex",
44
+ alignItems: "center",
45
+ justifyContent: "center",
46
+ background: c(o),
47
+ color: "#ffffff",
48
+ fontWeight: 600,
49
+ fontSize: `${Math.round(t * 0.45)}px`,
50
+ lineHeight: 1,
51
+ textTransform: "uppercase"
52
+ },
53
+ children: o.charAt(0) || "?"
54
+ }
55
+ );
56
+ };
57
+ export {
58
+ g as Avatar,
59
+ g as default
60
+ };
61
+ //# sourceMappingURL=Avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.js","sources":["../../src/components/Avatar.tsx"],"sourcesContent":["import React, { useState } from 'react';\n\nexport type AvatarShape = 'square' | 'circle';\n\nexport interface AvatarProps {\n /** Image URL (logo/photo). Falls back to the initial of `name` when missing or it fails to load. */\n src?: string;\n /** Used for the initial fallback and as the image alt / accessible label. */\n name?: string;\n /** Pixel size of the (square) avatar. */\n size?: number;\n shape?: AvatarShape;\n className?: string;\n}\n\n// Deterministic, evenly-distributed hue from the label so the same entity always gets\n// the same colour. Saturation/lightness are fixed for a consistent, on-brand feel.\n// NOTE: avatar identity colours (this hue and the white text below) are intentionally\n// NOT theme tokens — they are a generated identity palette, an explicit exception to\n// the \"colours come from theme tokens\" rule (there is no avatar-colour token group).\nconst backgroundFor = (seed: string): string => {\n let hash = 0;\n for (let index = 0; index < seed.length; index += 1) {\n hash = seed.charCodeAt(index) + ((hash << 5) - hash);\n }\n return `hsl(${Math.abs(hash) % 360}, 55%, 52%)`;\n};\n\n/**\n * A logo/initial avatar. Renders `src` when available, otherwise a coloured tile\n * with the first letter of `name`. Encapsulates the fallback colour so consumers\n * never hand-roll it.\n */\nconst Avatar: React.FC<AvatarProps> = ({\n src,\n name,\n size = 24,\n shape = 'square',\n className = '',\n}) => {\n // Track which src failed (not a boolean) so switching `src` to a new URL retries the\n // image instead of staying stuck on the fallback.\n const [failedSrc, setFailedSrc] = useState<string | undefined>(undefined);\n const label = name?.trim() ?? '';\n const borderRadius = shape === 'circle' ? '50%' : `${Math.round(size * 0.25)}px`;\n\n if (src && failedSrc !== src) {\n return (\n <img\n src={src}\n alt={label}\n loading=\"lazy\"\n decoding=\"async\"\n onError={() => setFailedSrc(src)}\n className={className}\n style={{\n width: `${size}px`,\n height: `${size}px`,\n borderRadius,\n objectFit: 'contain',\n flexShrink: 0,\n }}\n />\n );\n }\n\n // With a label the tile is an image with an accessible name; without one it carries\n // no information, so mark it decorative (aria-hidden, no role) to avoid an unnamed\n // image in the accessibility tree.\n return (\n <div\n {...(label ? { role: 'img', 'aria-label': label } : { 'aria-hidden': true })}\n className={className}\n style={{\n width: `${size}px`,\n height: `${size}px`,\n flexShrink: 0,\n borderRadius,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: backgroundFor(label),\n color: '#ffffff',\n fontWeight: 600,\n fontSize: `${Math.round(size * 0.45)}px`,\n lineHeight: 1,\n textTransform: 'uppercase',\n }}\n >\n {label.charAt(0) || '?'}\n </div>\n );\n};\n\nexport default Avatar;\nexport { Avatar };\n"],"names":["backgroundFor","seed","hash","index","Avatar","src","name","size","shape","className","failedSrc","setFailedSrc","useState","label","borderRadius","jsx"],"mappings":";;AAoBA,MAAMA,IAAgB,CAACC,MAAyB;AAC5C,MAAIC,IAAO;AACX,WAASC,IAAQ,GAAGA,IAAQF,EAAK,QAAQE,KAAS;AAC9C,IAAAD,IAAOD,EAAK,WAAWE,CAAK,MAAMD,KAAQ,KAAKA;AAEnD,SAAO,OAAO,KAAK,IAAIA,CAAI,IAAI,GAAG;AACtC,GAOME,IAAgC,CAAC;AAAA,EACnC,KAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,WAAAC,IAAY;AAChB,MAAM;AAGF,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAA6B,MAAS,GAClEC,KAAQP,KAAA,gBAAAA,EAAM,WAAU,IACxBQ,IAAeN,MAAU,WAAW,QAAQ,GAAG,KAAK,MAAMD,IAAO,IAAI,CAAC;AAE5E,SAAIF,KAAOK,MAAcL,IAEjB,gBAAAU;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,KAAAV;AAAA,MACA,KAAKQ;AAAA,MACL,SAAQ;AAAA,MACR,UAAS;AAAA,MACT,SAAS,MAAMF,EAAaN,CAAG;AAAA,MAC/B,WAAAI;AAAA,MACA,OAAO;AAAA,QACH,OAAO,GAAGF,CAAI;AAAA,QACd,QAAQ,GAAGA,CAAI;AAAA,QACf,cAAAO;AAAA,QACA,WAAW;AAAA,QACX,YAAY;AAAA,MAAA;AAAA,IAChB;AAAA,EAAA,IASR,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAIF,IAAQ,EAAE,MAAM,OAAO,cAAcA,EAAA,IAAU,EAAE,eAAe,GAAA;AAAA,MACrE,WAAAJ;AAAA,MACA,OAAO;AAAA,QACH,OAAO,GAAGF,CAAI;AAAA,QACd,QAAQ,GAAGA,CAAI;AAAA,QACf,YAAY;AAAA,QACZ,cAAAO;AAAA,QACA,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,YAAYd,EAAca,CAAK;AAAA,QAC/B,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,UAAU,GAAG,KAAK,MAAMN,IAAO,IAAI,CAAC;AAAA,QACpC,YAAY;AAAA,QACZ,eAAe;AAAA,MAAA;AAAA,MAGlB,UAAAM,EAAM,OAAO,CAAC,KAAK;AAAA,IAAA;AAAA,EAAA;AAGhC;"}
@@ -0,0 +1,116 @@
1
+ import { jsx as e, jsxs as s } from "react/jsx-runtime";
2
+ import { useId as z } from "react";
3
+ import F from "./CustomIcons/ArrowUpRightIcon.js";
4
+ import $ from "./CustomIcons/InfoFilledIcon.js";
5
+ import { FormItem as w } from "./FormItem.js";
6
+ import { Link as O } from "./Link.js";
7
+ import { safeHref as _ } from "./safeHref.js";
8
+ import x from "./Spacer.js";
9
+ import k from "./Tooltip.js";
10
+ import H from "./Typography/MarkdownBlock.js";
11
+ import h from "./Typography/Text.js";
12
+ import { FOCUS_RING as R } from "./focusRing.js";
13
+ import { renderFormItemChildren as y, NO_FIELD_ERROR as L } from "./formItemState.js";
14
+ const T = 0.5, q = ({
15
+ id: t,
16
+ label: r,
17
+ description: i,
18
+ hint: l,
19
+ helperText: a = !1
20
+ }) => {
21
+ const o = `mal-${z().replace(/[^a-zA-Z0-9_-]/g, "")}-`, p = t ?? `${o}control`, f = r ? `${o}label` : void 0, n = i ? `${o}description` : void 0, m = l ? `${o}hint` : void 0, c = a ? `${o}helper` : void 0, d = [n, m, c].filter(Boolean).join(" ") || void 0;
22
+ return { controlId: p, labelId: f, descriptionId: n, hintId: m, helperTextId: c, describedBy: d };
23
+ }, ee = ({
24
+ label: t,
25
+ hint: r,
26
+ rightSideContent: i,
27
+ tooltip: l,
28
+ name: a,
29
+ description: o,
30
+ required: p = !1,
31
+ requiredIndicator: f = "optional-suffix",
32
+ loading: n = !1,
33
+ formControl: m,
34
+ loadingComponent: c,
35
+ children: d,
36
+ controlId: u,
37
+ labelId: v,
38
+ descriptionId: I,
39
+ hintId: N,
40
+ fullWidth: b = !1
41
+ }) => {
42
+ const g = m ? /* @__PURE__ */ e(w, { control: m, name: a, children: d }) : y(d, L);
43
+ return /* @__PURE__ */ s(x, { direction: "vertical", size: 6, align: "stretch", fullWidth: b, children: [
44
+ (t || r || o || i) && /* @__PURE__ */ s(x, { direction: "vertical", size: 4, align: "stretch", children: [
45
+ /* @__PURE__ */ s("div", { className: "flex justify-between items-start", children: [
46
+ /* @__PURE__ */ e(
47
+ E,
48
+ {
49
+ text: t,
50
+ required: p,
51
+ requiredIndicator: f,
52
+ tooltip: l,
53
+ id: v,
54
+ htmlFor: n ? void 0 : u
55
+ }
56
+ ),
57
+ (r || i) && /* @__PURE__ */ s("div", { className: "flex items-start gap-2", children: [
58
+ r && /* @__PURE__ */ e(B, { text: r, id: N }),
59
+ i && /* @__PURE__ */ e(j, { ...i })
60
+ ] })
61
+ ] }),
62
+ o && /* @__PURE__ */ e(D, { text: o, id: I })
63
+ ] }),
64
+ n ? c : g
65
+ ] });
66
+ }, j = (t) => {
67
+ const r = _(t.href);
68
+ return r ? /* @__PURE__ */ s(
69
+ O,
70
+ {
71
+ href: r,
72
+ target: "_blank",
73
+ rel: "noopener noreferrer",
74
+ color: "dimmed",
75
+ size: "xsmall",
76
+ underline: !1,
77
+ className: "shrink-0 whitespace-nowrap inline-flex items-center gap-1 relative top-[3px]",
78
+ children: [
79
+ t.text,
80
+ /* @__PURE__ */ e(F, { size: 13 })
81
+ ]
82
+ }
83
+ ) : null;
84
+ }, B = ({ text: t, id: r }) => /* @__PURE__ */ e("span", { id: r, children: /* @__PURE__ */ e(h, { size: "xsmall", color: "dimmed", className: "pr-2 relative top-[3px]", children: t }) }), D = ({ text: t, id: r }) => /* @__PURE__ */ e("div", { className: "pl-2 text-left", id: r, children: /* @__PURE__ */ e(H, { color: "dimmed", size: "small", text: t ?? "", omitMargin: !0 }) }), E = ({
85
+ text: t,
86
+ required: r,
87
+ requiredIndicator: i,
88
+ tooltip: l,
89
+ id: a,
90
+ htmlFor: o
91
+ }) => t ? /* @__PURE__ */ s("div", { className: "flex items-center", children: [
92
+ /* @__PURE__ */ e("label", { id: a, htmlFor: o, children: /* @__PURE__ */ e(h, { size: "xsmall", color: "primary", fontWeight: "semi-bold", className: "pl-2", children: t }) }),
93
+ i === "optional-suffix" && !r && /* @__PURE__ */ e("span", { "aria-hidden": "true", children: /* @__PURE__ */ e(h, { size: "xsmall", color: "dimmed", className: "ml-1", children: "(Optional)" }) }),
94
+ i === "asterisk" && r && /* @__PURE__ */ e(
95
+ "span",
96
+ {
97
+ "aria-hidden": "true",
98
+ className: "ml-1 text-[var(--malachite-destructive-foreground,rgb(196,62,62))]",
99
+ children: "*"
100
+ }
101
+ ),
102
+ l && /* @__PURE__ */ e(k, { text: l, placement: "right", delay: T, children: /* @__PURE__ */ e(
103
+ "button",
104
+ {
105
+ type: "button",
106
+ "aria-label": `More information about ${t}`,
107
+ className: `ml-1 -mt-[2px] inline-flex items-center text-[var(--malachite-text-dimmed)] cursor-help ${R}`,
108
+ children: /* @__PURE__ */ e($, { size: 14 })
109
+ }
110
+ ) })
111
+ ] }) : /* @__PURE__ */ e("div", {});
112
+ export {
113
+ ee as default,
114
+ q as useFormFieldIds
115
+ };
116
+ //# sourceMappingURL=BaseFormComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseFormComponent.js","sources":["../../src/components/BaseFormComponent.tsx"],"sourcesContent":["import React, { useId } from 'react';\nimport type { Control, FieldPath, FieldValues } from 'react-hook-form';\nimport ArrowUpRightIcon from './CustomIcons/ArrowUpRightIcon';\nimport InfoFilledIcon from './CustomIcons/InfoFilledIcon';\nimport FormItem from './FormItem';\nimport Link from './Link';\nimport { safeHref } from './safeHref';\nimport Spacer from './Spacer';\nimport Tooltip from './Tooltip';\nimport MarkdownBlock from './Typography/MarkdownBlock';\nimport Text from './Typography/Text';\nimport { FOCUS_RING } from './focusRing';\nimport { type FormItemChildren, NO_FIELD_ERROR, renderFormItemChildren } from './formItemState';\n\n/** Tooltip's own default of 1s reads as broken; 0.5 matches the rest of the library. */\nconst TOOLTIP_DELAY_SECONDS = 0.5;\n\n/** The ids that wire a form field's label / description / hint to its control. */\nexport interface FormFieldIds {\n controlId: string;\n labelId?: string;\n descriptionId?: string;\n hintId?: string;\n helperTextId?: string;\n describedBy?: string;\n}\n\ninterface FormFieldIdOptions {\n /** A caller-supplied id always wins, so consumers can label the control themselves. */\n id?: string;\n label?: string;\n description?: string;\n hint?: string;\n helperText?: boolean;\n}\n\n/**\n * Generates the stable ids a form field needs to be announced correctly. Shared by\n * `Input`, `TextArea`, `Dropdown` and `MultiSelect` so all four wire up identically.\n */\nexport const useFormFieldIds = ({\n id,\n label,\n description,\n hint,\n helperText = false,\n}: FormFieldIdOptions): FormFieldIds => {\n // useId() emits \":r0:\", and a colon is invalid in a CSS id selector, so a consumer's\n // querySelector(`#${id}`) throws. Stripping only the delimiters keeps ids unique.\n const generatedId = `mal-${useId().replace(/[^a-zA-Z0-9_-]/g, '')}-`;\n const controlId = id ?? `${generatedId}control`;\n const labelId = label ? `${generatedId}label` : undefined;\n const descriptionId = description ? `${generatedId}description` : undefined;\n const hintId = hint ? `${generatedId}hint` : undefined;\n const helperTextId = helperText ? `${generatedId}helper` : undefined;\n const describedBy =\n [descriptionId, hintId, helperTextId].filter(Boolean).join(' ') || undefined;\n\n return { controlId, labelId, descriptionId, hintId, helperTextId, describedBy };\n};\n\ninterface BaseFormComponentProps {\n label?: string;\n description?: string;\n hint?: string;\n rightSideContent?: RightSideContent;\n tooltip?: string;\n required?: boolean;\n requiredIndicator?: RequiredIndicator;\n name: FieldPath<FieldValues>;\n defaultValue?: string;\n loading?: boolean;\n formControl?: Control<FieldValues, unknown>;\n loadingComponent: React.ReactNode;\n children?: FormItemChildren;\n /** Accessibility wiring, from `useFormFieldIds` — see `FormFieldIds`. */\n controlId?: string;\n labelId?: string;\n descriptionId?: string;\n hintId?: string;\n fullWidth?: boolean;\n}\n\nconst BaseFormComponent: React.FC<BaseFormComponentProps> = ({\n label,\n hint,\n rightSideContent,\n tooltip,\n name,\n description,\n required = false,\n requiredIndicator = 'optional-suffix',\n loading = false,\n formControl,\n loadingComponent,\n children,\n controlId,\n labelId,\n descriptionId,\n hintId,\n fullWidth = false,\n}) => {\n const finalComponent = formControl ? (\n <FormItem control={formControl} name={name}>\n {children}\n </FormItem>\n ) : (\n renderFormItemChildren(children, NO_FIELD_ERROR)\n );\n\n const topHeader = () => (\n <Spacer direction=\"vertical\" size={4} align=\"stretch\">\n <div className=\"flex justify-between items-start\">\n <Label\n text={label}\n required={required}\n requiredIndicator={requiredIndicator}\n tooltip={tooltip}\n id={labelId}\n // No control is rendered while loading, so an htmlFor would be an orphan.\n htmlFor={loading ? undefined : controlId}\n />\n {(hint || rightSideContent) && (\n <div className=\"flex items-start gap-2\">\n {hint && <Hint text={hint} id={hintId} />}\n {rightSideContent && <RightSide {...rightSideContent} />}\n </div>\n )}\n </div>\n {description && <Description text={description} id={descriptionId} />}\n </Spacer>\n );\n\n const showHeader = label || hint || description || rightSideContent;\n\n return (\n <Spacer direction=\"vertical\" size={6} align=\"stretch\" fullWidth={fullWidth}>\n {showHeader && topHeader()}\n {!loading ? finalComponent : loadingComponent}\n </Spacer>\n );\n};\n\n/**\n * What sits at the far end of a field's label row. Data rather than a node, so nothing\n * arbitrary reaches the row; discriminated so a further kind is additive. Plain text is\n * already `hint`.\n */\nexport type RightSideContent = {\n type?: 'link';\n text: string;\n href: string;\n};\n\nconst RightSide = (content: RightSideContent) => {\n const safe = safeHref(content.href);\n\n if (!safe) {\n return null;\n }\n\n return (\n <Link\n href={safe}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n color=\"dimmed\"\n size=\"xsmall\"\n underline={false}\n className=\"shrink-0 whitespace-nowrap inline-flex items-center gap-1 relative top-[3px]\"\n >\n {content.text}\n <ArrowUpRightIcon size={13} />\n </Link>\n );\n};\n\nconst Hint = ({ text, id }: { text?: string; id?: string }) => {\n return (\n <span id={id}>\n <Text size=\"xsmall\" color=\"dimmed\" className=\"pr-2 relative top-[3px]\">\n {text}\n </Text>\n </span>\n );\n};\n\nconst Description = ({ text, id }: { text?: string; id?: string }) => {\n return (\n <div className=\"pl-2 text-left\" id={id}>\n <MarkdownBlock color=\"dimmed\" size=\"small\" text={text ?? ''} omitMargin={true} />\n </div>\n );\n};\n\nexport type RequiredIndicator = 'optional-suffix' | 'asterisk' | 'none';\n\nconst Label = ({\n text,\n required,\n requiredIndicator,\n tooltip,\n id,\n htmlFor,\n}: {\n text?: string;\n required: boolean;\n requiredIndicator: RequiredIndicator;\n tooltip?: string;\n id?: string;\n htmlFor?: string;\n}) => {\n return text ? (\n <div className=\"flex items-center\">\n <label id={id} htmlFor={htmlFor}>\n <Text size=\"xsmall\" color=\"primary\" fontWeight=\"semi-bold\" className=\"pl-2\">\n {text}\n </Text>\n </label>\n {/* Sibling of the <label>, not a child: Testing Library's getByLabelText matches\n on textContent, so a marker inside it breaks getByLabelText('<label>'). */}\n {requiredIndicator === 'optional-suffix' && !required && (\n <span aria-hidden=\"true\">\n <Text size=\"xsmall\" color=\"dimmed\" className=\"ml-1\">\n (Optional)\n </Text>\n </span>\n )}\n {requiredIndicator === 'asterisk' && required && (\n <span\n aria-hidden=\"true\"\n className=\"ml-1 text-[var(--malachite-destructive-foreground,rgb(196,62,62))]\"\n >\n *\n </span>\n )}\n {tooltip && (\n <Tooltip text={tooltip} placement=\"right\" delay={TOOLTIP_DELAY_SECONDS}>\n <button\n type=\"button\"\n aria-label={`More information about ${text}`}\n className={`ml-1 -mt-[2px] inline-flex items-center text-[var(--malachite-text-dimmed)] cursor-help ${FOCUS_RING}`}\n >\n <InfoFilledIcon size={14} />\n </button>\n </Tooltip>\n )}\n </div>\n ) : (\n <div />\n );\n};\n\nexport default BaseFormComponent;\n"],"names":["TOOLTIP_DELAY_SECONDS","useFormFieldIds","id","label","description","hint","helperText","generatedId","useId","controlId","labelId","descriptionId","hintId","helperTextId","describedBy","BaseFormComponent","rightSideContent","tooltip","name","required","requiredIndicator","loading","formControl","loadingComponent","children","fullWidth","finalComponent","jsx","FormItem","renderFormItemChildren","NO_FIELD_ERROR","jsxs","Spacer","Label","Hint","RightSide","Description","content","safe","safeHref","Link","ArrowUpRightIcon","text","Text","MarkdownBlock","htmlFor","Tooltip","FOCUS_RING","InfoFilledIcon"],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ import { jsxs as u, jsx as a } from "react/jsx-runtime";
2
+ import { Button as v } from "./Button.js";
3
+ import N from "./CustomIcons/ArrowLeftIcon.js";
4
+ import b from "./CustomIcons/CaretRightIcon.js";
5
+ import B from "./Typography/Text.js";
6
+ import { hasBackButton as $ } from "./breadcrumbsNav.js";
7
+ import { FOCUS_RING as x } from "./focusRing.js";
8
+ import { isSafeHref as y, safeHref as S } from "./safeHref.js";
9
+ const A = `no-underline rounded-xs cursor-pointer transition-colors duration-200 ease-in-out hover:text-[var(--malachite-accent-foreground)] ${x}`, C = `flex h-6 w-6 shrink-0 items-center justify-center rounded-[var(--malachite-radius-10,10px)] no-underline bg-[var(--malachite-number-tag-background)] text-[var(--malachite-text-primary)] transition-colors duration-200 ease-in-out hover:bg-[var(--malachite-number-tag-emphasis-background)] ${x}`, g = (e, r) => y(e.href) ? r ? r(e) : /* @__PURE__ */ a("a", { ...e }) : e.children, f = (e, r) => typeof e == "string" ? /* @__PURE__ */ a(B, { size: "medium", fontWeight: "semi-bold", color: r, children: e }) : e, _ = ({
10
+ label: e,
11
+ onClick: r,
12
+ disabled: m,
13
+ variant: s,
14
+ icon: d,
15
+ href: h,
16
+ target: t,
17
+ tooltip: l,
18
+ tooltipPlacement: c
19
+ }, i) => {
20
+ const n = S(h);
21
+ return /* @__PURE__ */ a(
22
+ v,
23
+ {
24
+ size: "small",
25
+ variant: s ?? "outline",
26
+ disabled: m,
27
+ icon: d,
28
+ tooltip: l,
29
+ tooltipPlacement: c,
30
+ href: n,
31
+ target: n ? t ?? "_blank" : void 0,
32
+ onClick: n ? void 0 : r,
33
+ children: e
34
+ },
35
+ `${i}-${e}`
36
+ );
37
+ }, E = ({
38
+ links: e,
39
+ actions: r,
40
+ renderLink: m,
41
+ className: s = "",
42
+ style: d
43
+ }) => {
44
+ if (e.length === 0 && !(r != null && r.length))
45
+ return null;
46
+ const h = e.length === 1 && !!e[0].isRoot, t = $(e) ? e[e.length - 2] : void 0, l = t == null ? void 0 : t.name, c = !!(r != null && r.length);
47
+ return /* @__PURE__ */ u(
48
+ "div",
49
+ {
50
+ className: `flex items-center ${c ? "justify-between" : ""} ${s}`,
51
+ style: d,
52
+ children: [
53
+ h ? f(e[0].name, "primary") : /* @__PURE__ */ u("div", { className: "flex items-center gap-4", children: [
54
+ (t == null ? void 0 : t.url) && g(
55
+ {
56
+ href: t.url,
57
+ "aria-label": typeof l == "string" ? `Back to ${l}` : "Go back",
58
+ className: C,
59
+ children: /* @__PURE__ */ a(N, { size: 12 })
60
+ },
61
+ m
62
+ ),
63
+ e.length > 0 && /* @__PURE__ */ a("nav", { "aria-label": "Breadcrumb", children: /* @__PURE__ */ a("ol", { className: "flex flex-wrap items-center gap-2 m-0 p-0 list-none", children: e.map((i, n) => {
64
+ const o = n === e.length - 1, p = o ? "primary" : "muted";
65
+ return /* @__PURE__ */ u(
66
+ "li",
67
+ {
68
+ className: "flex items-center gap-2",
69
+ "aria-current": o && !i.url ? "page" : void 0,
70
+ children: [
71
+ i.url ? g(
72
+ {
73
+ href: i.url,
74
+ "aria-current": o ? "page" : void 0,
75
+ className: `${A} ${o ? "text-[var(--malachite-text-primary)]" : "text-[var(--malachite-text-muted)]"}`,
76
+ children: f(
77
+ i.name,
78
+ "inherit"
79
+ )
80
+ },
81
+ m
82
+ ) : f(i.name, p),
83
+ !o && /* @__PURE__ */ a(
84
+ "span",
85
+ {
86
+ "aria-hidden": "true",
87
+ className: "flex items-center text-[var(--malachite-text-dimmed)]",
88
+ children: /* @__PURE__ */ a(b, { size: 13 })
89
+ }
90
+ )
91
+ ]
92
+ },
93
+ `${i.url ?? ""}-${n}`
94
+ );
95
+ }) }) })
96
+ ] }),
97
+ c && /* @__PURE__ */ a("div", { className: "flex items-center gap-2", children: r == null ? void 0 : r.map(_) })
98
+ ]
99
+ }
100
+ );
101
+ };
102
+ export {
103
+ E as Breadcrumbs,
104
+ E as default
105
+ };
106
+ //# sourceMappingURL=Breadcrumbs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Breadcrumbs.js","sources":["../../src/components/Breadcrumbs.tsx"],"sourcesContent":["import React from 'react';\nimport Button from './Button';\nimport ArrowLeftIcon from './CustomIcons/ArrowLeftIcon';\nimport CaretRightIcon from './CustomIcons/CaretRightIcon';\nimport type { BreadcrumbLink, PageAction, RenderBreadcrumbLink } from './PageLayout/types';\nimport Text, { type TextColor } from './Typography/Text';\nimport { hasBackButton } from './breadcrumbsNav';\nimport { FOCUS_RING } from './focusRing';\nimport { isSafeHref, safeHref } from './safeHref';\n\nexport interface BreadcrumbsProps {\n links: BreadcrumbLink[];\n actions?: PageAction[];\n renderLink?: RenderBreadcrumbLink;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst CRUMB_LINK_CLASSES = `no-underline rounded-xs cursor-pointer transition-colors duration-200 ease-in-out hover:text-[var(--malachite-accent-foreground)] ${FOCUS_RING}`;\n\nconst BACK_BUTTON_CLASSES = `flex h-6 w-6 shrink-0 items-center justify-center rounded-[var(--malachite-radius-10,10px)] no-underline bg-[var(--malachite-number-tag-background)] text-[var(--malachite-text-primary)] transition-colors duration-200 ease-in-out hover:bg-[var(--malachite-number-tag-emphasis-background)] ${FOCUS_RING}`;\n\ntype LinkProps = Parameters<RenderBreadcrumbLink>[0];\n\nconst renderCrumbLink = (props: LinkProps, renderLink?: RenderBreadcrumbLink): React.ReactNode => {\n // An unsafe url degrades to plain text rather than a link that could run a script.\n if (!isSafeHref(props.href)) {\n return props.children;\n }\n return renderLink ? renderLink(props) : <a {...props} />;\n};\n\nconst renderCrumbName = (name: React.ReactNode, color: TextColor): React.ReactNode =>\n typeof name === 'string' ? (\n <Text size=\"medium\" fontWeight=\"semi-bold\" color={color}>\n {name}\n </Text>\n ) : (\n name\n );\n\nconst renderAction = (\n {\n label,\n onClick,\n disabled,\n variant,\n icon,\n href,\n target,\n tooltip,\n tooltipPlacement,\n }: PageAction,\n index: number,\n) => {\n const safe = safeHref(href);\n return (\n <Button\n key={`${index}-${label}`}\n size=\"small\"\n variant={variant ?? 'outline'}\n disabled={disabled}\n icon={icon}\n tooltip={tooltip}\n tooltipPlacement={tooltipPlacement}\n href={safe}\n target={safe ? (target ?? '_blank') : undefined}\n onClick={safe ? undefined : onClick}\n >\n {label}\n </Button>\n );\n};\n\nconst Breadcrumbs: React.FC<BreadcrumbsProps> = ({\n links,\n actions,\n renderLink,\n className = '',\n style,\n}) => {\n // PageLayout mounts this unconditionally, so returning markup would leave an empty\n // navigation landmark on every page without crumbs.\n if (links.length === 0 && !actions?.length) {\n return null;\n }\n\n const isTitle = links.length === 1 && Boolean(links[0].isRoot);\n const parentCrumb = hasBackButton(links) ? links[links.length - 2] : undefined;\n const parentName = parentCrumb?.name;\n const hasActions = Boolean(actions?.length);\n\n return (\n <div\n className={`flex items-center ${hasActions ? 'justify-between' : ''} ${className}`}\n style={style}\n >\n {isTitle ? (\n renderCrumbName(links[0].name, 'primary')\n ) : (\n <div className=\"flex items-center gap-4\">\n {parentCrumb?.url &&\n renderCrumbLink(\n {\n href: parentCrumb.url,\n 'aria-label':\n typeof parentName === 'string'\n ? `Back to ${parentName}`\n : 'Go back',\n className: BACK_BUTTON_CLASSES,\n children: <ArrowLeftIcon size={12} />,\n },\n renderLink,\n )}\n {links.length > 0 && (\n <nav aria-label=\"Breadcrumb\">\n <ol className=\"flex flex-wrap items-center gap-2 m-0 p-0 list-none\">\n {links.map((link, index) => {\n const isLast = index === links.length - 1;\n const color: TextColor = isLast ? 'primary' : 'muted';\n\n return (\n <li\n key={`${link.url ?? ''}-${index}`}\n className=\"flex items-center gap-2\"\n aria-current={isLast && !link.url ? 'page' : undefined}\n >\n {link.url\n ? renderCrumbLink(\n {\n href: link.url,\n 'aria-current': isLast\n ? 'page'\n : undefined,\n className: `${CRUMB_LINK_CLASSES} ${\n isLast\n ? 'text-[var(--malachite-text-primary)]'\n : 'text-[var(--malachite-text-muted)]'\n }`,\n children: renderCrumbName(\n link.name,\n 'inherit',\n ),\n },\n renderLink,\n )\n : renderCrumbName(link.name, color)}\n {!isLast && (\n <span\n aria-hidden=\"true\"\n className=\"flex items-center text-[var(--malachite-text-dimmed)]\"\n >\n <CaretRightIcon size={13} />\n </span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n )}\n </div>\n )}\n {hasActions && (\n <div className=\"flex items-center gap-2\">{actions?.map(renderAction)}</div>\n )}\n </div>\n );\n};\n\nexport { Breadcrumbs };\nexport default Breadcrumbs;\n"],"names":["CRUMB_LINK_CLASSES","FOCUS_RING","BACK_BUTTON_CLASSES","renderCrumbLink","props","renderLink","isSafeHref","jsx","renderCrumbName","name","color","Text","renderAction","label","onClick","disabled","variant","icon","href","target","tooltip","tooltipPlacement","index","safe","safeHref","Button","Breadcrumbs","links","actions","className","style","isTitle","parentCrumb","hasBackButton","parentName","hasActions","jsxs","ArrowLeftIcon","link","isLast","CaretRightIcon"],"mappings":"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"}
@@ -0,0 +1,227 @@
1
+ import { jsx as r, jsxs as c, Fragment as h } from "react/jsx-runtime";
2
+ import { forwardRef as B } from "react";
3
+ import I from "./Tooltip.js";
4
+ const R = (t) => {
5
+ switch (t) {
6
+ // Figma has no text X-Small button, only the icon-only square — nothing to align to.
7
+ case "xsmall":
8
+ return "px-2 py-1 text-xs";
9
+ case "small":
10
+ return "min-h-[var(--malachite-control-height-small,28px)] px-[10px] text-[length:var(--malachite-font-size-small,13px)] leading-[16px] whitespace-nowrap";
11
+ case "medium":
12
+ return "min-h-[var(--malachite-control-height-medium,32px)] px-[10px] text-[length:var(--malachite-font-size-small,13px)] leading-[16px] whitespace-nowrap";
13
+ case "large":
14
+ return "min-h-[var(--malachite-control-height-large,42px)] px-[12px] text-[length:var(--malachite-font-size-15,15px)] leading-[18px] whitespace-nowrap";
15
+ default:
16
+ return "min-h-[var(--malachite-control-height-large,42px)] px-[12px] text-[length:var(--malachite-font-size-15,15px)] leading-[18px] whitespace-nowrap";
17
+ }
18
+ }, F = (t) => {
19
+ switch (t) {
20
+ case "xsmall":
21
+ return "size-[20px] shrink-0";
22
+ case "small":
23
+ return "size-[28px] shrink-0";
24
+ case "medium":
25
+ return "size-[32px] shrink-0";
26
+ default:
27
+ return "size-[42px] shrink-0";
28
+ }
29
+ }, L = (t, s) => {
30
+ switch (t) {
31
+ // Only the square rounds at 8px — text buttons at this size keep their 6px corner.
32
+ case "xsmall":
33
+ return s ? "rounded-lg" : "rounded-md";
34
+ case "small":
35
+ return "rounded-[var(--malachite-radius-10,10px)]";
36
+ case "medium":
37
+ return "rounded-xl";
38
+ case "large":
39
+ return "rounded-[var(--malachite-radius-xxl,14px)]";
40
+ default:
41
+ return "rounded-[var(--malachite-radius-xxl,14px)]";
42
+ }
43
+ }, z = (t, s) => {
44
+ const e = s === "start";
45
+ switch (t) {
46
+ case "small":
47
+ case "medium":
48
+ return e ? "mr-[6px]" : "ml-[6px]";
49
+ default:
50
+ return e ? "mr-2" : "ml-2";
51
+ }
52
+ }, O = (t) => {
53
+ switch (t) {
54
+ case "xsmall":
55
+ return "[&_svg]:size-[var(--malachite-icon-size-xsmall)]!";
56
+ case "small":
57
+ return "[&_svg]:size-[var(--malachite-icon-size-small)]!";
58
+ case "medium":
59
+ return "[&_svg]:size-[var(--malachite-icon-size-medium)]!";
60
+ case "large":
61
+ return "[&_svg]:size-[var(--malachite-icon-size-large)]!";
62
+ default:
63
+ return "[&_svg]:size-[var(--malachite-icon-size-large)]!";
64
+ }
65
+ }, T = (t) => {
66
+ switch (t) {
67
+ case "md":
68
+ return "rounded-md";
69
+ case "lg":
70
+ return "rounded-lg";
71
+ case "xl":
72
+ return "rounded-xl";
73
+ default:
74
+ return "rounded-xl";
75
+ }
76
+ }, U = (t, s) => {
77
+ if (s !== "_blank") return t;
78
+ const e = new Set(t == null ? void 0 : t.split(/\s+/).filter(Boolean));
79
+ return e.add("noopener"), e.add("noreferrer"), [...e].join(" ");
80
+ }, a = {
81
+ neutral: "focus-visible:[outline:2px_solid_var(--malachite-text-primary)]",
82
+ destructive: "focus-visible:[outline:2px_solid_var(--malachite-text-destructive)]",
83
+ success: "focus-visible:[outline:2px_solid_var(--malachite-text-success)]",
84
+ warning: "focus-visible:[outline:2px_solid_var(--malachite-text-warning)]",
85
+ error: "focus-visible:[outline:2px_solid_var(--malachite-text-error)]",
86
+ assistant: "focus-visible:[outline:2px_solid_var(--malachite-assistant-foreground)]"
87
+ }, V = (t, s) => {
88
+ const e = `font-medium transition-[color,background-color,border-color,opacity,box-shadow] duration-200 ease-in-out outline-none focus-visible:outline-offset-2 border border-solid ${s} cursor-pointer`;
89
+ switch (t) {
90
+ case "filled":
91
+ return `${e} ${a.neutral} btn-filled shadow-default`;
92
+ case "outline":
93
+ return `${e} ${a.neutral} btn-outline shadow-default`;
94
+ case "surface":
95
+ return `${e} ${a.neutral} btn-surface shadow-default`;
96
+ case "assistant":
97
+ return `${e} ${a.assistant} btn-assistant shadow-default`;
98
+ case "destructive":
99
+ return `${e} ${a.destructive} btn-destructive`;
100
+ case "success":
101
+ return `${e} ${a.success} btn-glass-success`;
102
+ case "warning":
103
+ return `${e} ${a.warning} btn-glass-warning`;
104
+ case "error":
105
+ return `${e} ${a.error} btn-glass-error`;
106
+ case "ghost":
107
+ return `${e} ${a.neutral} btn-ghost`;
108
+ case "no-style":
109
+ return `${e} ${a.neutral} btn-no-style border-none`;
110
+ default:
111
+ return `${e} ${a.neutral} btn-filled shadow-default`;
112
+ }
113
+ }, W = () => /* @__PURE__ */ c(
114
+ "svg",
115
+ {
116
+ className: "animate-spin -ml-1 mr-2 h-4 w-4",
117
+ xmlns: "http://www.w3.org/2000/svg",
118
+ fill: "none",
119
+ viewBox: "0 0 24 24",
120
+ children: [
121
+ /* @__PURE__ */ r(
122
+ "circle",
123
+ {
124
+ className: "opacity-25",
125
+ cx: "12",
126
+ cy: "12",
127
+ r: "10",
128
+ stroke: "currentColor",
129
+ strokeWidth: "4"
130
+ }
131
+ ),
132
+ /* @__PURE__ */ r(
133
+ "path",
134
+ {
135
+ className: "opacity-75",
136
+ fill: "currentColor",
137
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
138
+ }
139
+ )
140
+ ]
141
+ }
142
+ ), A = B(
143
+ ({
144
+ variant: t,
145
+ size: s = "large",
146
+ radius: e,
147
+ loading: x = !1,
148
+ disabled: C = !1,
149
+ icon: i,
150
+ iconPosition: p = "start",
151
+ flexGrow: o = !1,
152
+ fill: k = !1,
153
+ tooltip: u,
154
+ tooltipPlacement: y = "top",
155
+ iconOnly: f = !1,
156
+ children: n,
157
+ className: N = "",
158
+ href: g,
159
+ target: v,
160
+ rel: S,
161
+ ...w
162
+ }, $) => {
163
+ const j = e ? T(e) : L(s, f), l = C || x, b = [
164
+ "flex items-center justify-center",
165
+ f ? `p-0 ${F(s)}` : R(s),
166
+ V(t, j),
167
+ o ? "w-full" : "",
168
+ k ? "max-w-full" : "",
169
+ l ? "cursor-not-allowed" : "",
170
+ u && l ? "pointer-events-none" : "",
171
+ N
172
+ ].filter(Boolean).join(" "), _ = () => {
173
+ if (x)
174
+ return /* @__PURE__ */ c(h, { children: [
175
+ /* @__PURE__ */ r(W, {}),
176
+ n
177
+ ] });
178
+ const m = `inline-flex items-center shrink-0 ${O(s)}`;
179
+ return i && p === "start" ? /* @__PURE__ */ c(h, { children: [
180
+ /* @__PURE__ */ r(
181
+ "span",
182
+ {
183
+ className: `${m}${n ? ` ${z(s, "start")}` : ""}`,
184
+ children: i
185
+ }
186
+ ),
187
+ n
188
+ ] }) : i && p === "end" ? /* @__PURE__ */ c(h, { children: [
189
+ n,
190
+ /* @__PURE__ */ r(
191
+ "span",
192
+ {
193
+ className: `${m}${n ? ` ${z(s, "end")}` : ""}`,
194
+ children: i
195
+ }
196
+ )
197
+ ] }) : n;
198
+ }, d = g && !l ? /* @__PURE__ */ r(
199
+ "a",
200
+ {
201
+ ref: $,
202
+ href: g,
203
+ target: v,
204
+ rel: U(S, v),
205
+ className: b,
206
+ ...w,
207
+ children: _()
208
+ }
209
+ ) : /* @__PURE__ */ r(
210
+ "button",
211
+ {
212
+ ref: $,
213
+ disabled: l,
214
+ className: b,
215
+ ...w,
216
+ children: _()
217
+ }
218
+ );
219
+ return u ? /* @__PURE__ */ r(I, { text: u, placement: y, fill: o, children: l ? /* @__PURE__ */ r("span", { className: `inline-flex cursor-not-allowed${o ? " w-full" : ""}`, children: d }) : d }) : d;
220
+ }
221
+ );
222
+ A.displayName = "Button";
223
+ export {
224
+ A as Button,
225
+ A as default
226
+ };
227
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.js","sources":["../../src/components/Button.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport Tooltip from './Tooltip';\n\n// Button variant types matching the old component\nexport type ButtonVariant =\n | 'filled'\n | 'outline'\n /**\n * `outline`'s geometry on a ground of its own. For a button sitting on a tinted or\n * patterned surface, where `outline`'s transparent background lets that surface through\n * and the control stops reading as a button.\n */\n | 'surface'\n /**\n * The violet the assistant is named in elsewhere — for a control that hands work to it, or\n * acts on what it produced. Provenance, not a severity: it says who is being asked, not\n * that anything is wrong.\n */\n | 'assistant'\n | 'destructive'\n | 'success'\n | 'warning'\n | 'error'\n | 'ghost'\n | 'no-style';\n\nexport type ButtonSize = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport type ButtonRadius = 'md' | 'lg' | 'xl';\n\ninterface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant: ButtonVariant;\n size?: ButtonSize;\n radius?: ButtonRadius;\n loading?: boolean;\n disabled?: boolean;\n icon?: React.ReactNode;\n iconPosition?: 'start' | 'end';\n flexGrow?: boolean;\n fill?: boolean;\n tooltip?: string;\n tooltipPlacement?: 'top' | 'bottom' | 'left' | 'right';\n iconOnly?: boolean;\n children?: React.ReactNode;\n onClick?: React.MouseEventHandler<HTMLButtonElement & HTMLAnchorElement>;\n /** Renders the button as a real anchor, so a link action is never an <a> nested in a <button>. */\n href?: string;\n target?: React.HTMLAttributeAnchorTarget;\n rel?: string;\n}\n\n// Geometry from the Figma component library, which is variant-independent.\n// `min-h` not `h`: Tailwind emits `h-*` after `min-h-*`, so a hard height would beat a\n// consumer's own `h-*`. Paired with `whitespace-nowrap` (as Figma has it) so a long label\n// cannot wrap into a line the height would clip.\nconst getSizeClasses = (size: ButtonSize) => {\n switch (size) {\n // Figma has no text X-Small button, only the icon-only square — nothing to align to.\n case 'xsmall':\n return 'px-2 py-1 text-xs';\n case 'small':\n return 'min-h-[var(--malachite-control-height-small,28px)] px-[10px] text-[length:var(--malachite-font-size-small,13px)] leading-[16px] whitespace-nowrap';\n case 'medium':\n return 'min-h-[var(--malachite-control-height-medium,32px)] px-[10px] text-[length:var(--malachite-font-size-small,13px)] leading-[16px] whitespace-nowrap';\n case 'large':\n return 'min-h-[var(--malachite-control-height-large,42px)] px-[12px] text-[length:var(--malachite-font-size-15,15px)] leading-[18px] whitespace-nowrap';\n default:\n return 'min-h-[var(--malachite-control-height-large,42px)] px-[12px] text-[length:var(--malachite-font-size-15,15px)] leading-[18px] whitespace-nowrap';\n }\n};\n\n/** An icon-only button is a square on the control ladder; without this it collapses to the\n * glyph plus its border. */\nconst getIconOnlySizeClasses = (size: ButtonSize): string => {\n switch (size) {\n case 'xsmall':\n return 'size-[20px] shrink-0';\n case 'small':\n return 'size-[28px] shrink-0';\n case 'medium':\n return 'size-[32px] shrink-0';\n default:\n return 'size-[42px] shrink-0';\n }\n};\n\n// `rounded-*` reads the malachite radius tokens via `@theme`, so these follow the theme.\n// An explicit `radius` prop still wins, via getRadiusClass.\nconst getDefaultRadiusClass = (size: ButtonSize, iconOnly: boolean): string => {\n switch (size) {\n // Only the square rounds at 8px — text buttons at this size keep their 6px corner.\n case 'xsmall':\n return iconOnly ? 'rounded-lg' : 'rounded-md';\n case 'small':\n return 'rounded-[var(--malachite-radius-10,10px)]';\n case 'medium':\n return 'rounded-xl';\n case 'large':\n return 'rounded-[var(--malachite-radius-xxl,14px)]';\n default:\n return 'rounded-[var(--malachite-radius-xxl,14px)]';\n }\n};\n\n// Figma pairs a 6px icon gap with the 13px tiers and 8px with the 15px tier.\nconst getIconGapClass = (size: ButtonSize, position: 'start' | 'end'): string => {\n const start = position === 'start';\n switch (size) {\n case 'small':\n case 'medium':\n return start ? 'mr-[6px]' : 'ml-[6px]';\n default:\n return start ? 'mr-2' : 'ml-2';\n }\n};\n\nconst getIconSizeClass = (size: ButtonSize): string => {\n switch (size) {\n case 'xsmall':\n return '[&_svg]:size-[var(--malachite-icon-size-xsmall)]!';\n case 'small':\n return '[&_svg]:size-[var(--malachite-icon-size-small)]!';\n case 'medium':\n return '[&_svg]:size-[var(--malachite-icon-size-medium)]!';\n case 'large':\n return '[&_svg]:size-[var(--malachite-icon-size-large)]!';\n default:\n return '[&_svg]:size-[var(--malachite-icon-size-large)]!';\n }\n};\n\nconst getRadiusClass = (radius: ButtonRadius): string => {\n switch (radius) {\n case 'md':\n return 'rounded-md';\n case 'lg':\n return 'rounded-lg';\n case 'xl':\n return 'rounded-xl';\n default:\n return 'rounded-xl';\n }\n};\n\n// Merged, never replaced: a caller's own `rel` must not drop `_blank`'s noopener/noreferrer.\nconst resolveRel = (\n rel: string | undefined,\n target: React.HTMLAttributeAnchorTarget | undefined,\n): string | undefined => {\n if (target !== '_blank') return rel;\n\n const tokens = new Set(rel?.split(/\\s+/).filter(Boolean));\n tokens.add('noopener');\n tokens.add('noreferrer');\n return [...tokens].join(' ');\n};\n\n// Focus ring: a `focus-visible` outline (keyboard only), coloured to match the variant.\n// Uses `outline` rather than Tailwind's `ring-*` because ring composes `--tw-ring-*`\n// custom properties via box-shadow that rely on document-level @property registration\n// and silently don't paint inside a shadow root (same class of issue as transform\n// utilities). The classes are full literals so Tailwind's JIT can generate them.\nconst FOCUS_OUTLINE = {\n neutral: 'focus-visible:[outline:2px_solid_var(--malachite-text-primary)]',\n destructive: 'focus-visible:[outline:2px_solid_var(--malachite-text-destructive)]',\n success: 'focus-visible:[outline:2px_solid_var(--malachite-text-success)]',\n warning: 'focus-visible:[outline:2px_solid_var(--malachite-text-warning)]',\n error: 'focus-visible:[outline:2px_solid_var(--malachite-text-error)]',\n assistant: 'focus-visible:[outline:2px_solid_var(--malachite-assistant-foreground)]',\n};\n\nconst getVariantClasses = (variant: ButtonVariant, radiusClass: string): string => {\n const baseClasses = `font-medium transition-[color,background-color,border-color,opacity,box-shadow] duration-200 ease-in-out outline-none focus-visible:outline-offset-2 border border-solid ${radiusClass} cursor-pointer`;\n\n switch (variant) {\n case 'filled':\n return `${baseClasses} ${FOCUS_OUTLINE.neutral} btn-filled shadow-default`;\n\n case 'outline':\n return `${baseClasses} ${FOCUS_OUTLINE.neutral} btn-outline shadow-default`;\n\n case 'surface':\n return `${baseClasses} ${FOCUS_OUTLINE.neutral} btn-surface shadow-default`;\n\n case 'assistant':\n return `${baseClasses} ${FOCUS_OUTLINE.assistant} btn-assistant shadow-default`;\n\n case 'destructive':\n return `${baseClasses} ${FOCUS_OUTLINE.destructive} btn-destructive`;\n\n case 'success':\n return `${baseClasses} ${FOCUS_OUTLINE.success} btn-glass-success`;\n\n case 'warning':\n return `${baseClasses} ${FOCUS_OUTLINE.warning} btn-glass-warning`;\n\n case 'error':\n return `${baseClasses} ${FOCUS_OUTLINE.error} btn-glass-error`;\n\n case 'ghost':\n return `${baseClasses} ${FOCUS_OUTLINE.neutral} btn-ghost`;\n\n case 'no-style':\n return `${baseClasses} ${FOCUS_OUTLINE.neutral} btn-no-style border-none`;\n\n default:\n return `${baseClasses} ${FOCUS_OUTLINE.neutral} btn-filled shadow-default`;\n }\n};\n\nconst LoadingSpinner = () => (\n <svg\n className=\"animate-spin -ml-1 mr-2 h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n);\n\nexport const Button = forwardRef<HTMLButtonElement | HTMLAnchorElement, ButtonProps>(\n (\n {\n variant,\n size = 'large',\n radius,\n loading = false,\n disabled = false,\n icon,\n iconPosition = 'start',\n flexGrow = false,\n fill = false,\n tooltip,\n tooltipPlacement = 'top',\n iconOnly = false,\n children,\n className = '',\n href,\n target,\n rel,\n ...props\n },\n ref,\n ) => {\n const radiusClass = radius ? getRadiusClass(radius) : getDefaultRadiusClass(size, iconOnly);\n const isInactive = disabled || loading;\n const baseClasses = [\n 'flex items-center justify-center',\n iconOnly ? `p-0 ${getIconOnlySizeClasses(size)}` : getSizeClasses(size),\n getVariantClasses(variant, radiusClass),\n flexGrow ? 'w-full' : '',\n fill ? 'max-w-full' : '',\n isInactive ? 'cursor-not-allowed' : '',\n tooltip && isInactive ? 'pointer-events-none' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const renderContent = () => {\n if (loading) {\n return (\n <>\n <LoadingSpinner />\n {children}\n </>\n );\n }\n\n const iconWrapperClasses = `inline-flex items-center shrink-0 ${getIconSizeClass(size)}`;\n\n if (icon && iconPosition === 'start') {\n return (\n <>\n <span\n className={`${iconWrapperClasses}${children ? ` ${getIconGapClass(size, 'start')}` : ''}`}\n >\n {icon}\n </span>\n {children}\n </>\n );\n }\n\n if (icon && iconPosition === 'end') {\n return (\n <>\n {children}\n <span\n className={`${iconWrapperClasses}${children ? ` ${getIconGapClass(size, 'end')}` : ''}`}\n >\n {icon}\n </span>\n </>\n );\n }\n\n return children;\n };\n\n // An anchor cannot be disabled, so an inactive link still renders as a <button>.\n const button =\n href && !isInactive ? (\n <a\n ref={ref as React.Ref<HTMLAnchorElement>}\n href={href}\n target={target}\n rel={resolveRel(rel, target)}\n className={baseClasses}\n {...(props as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\n >\n {renderContent()}\n </a>\n ) : (\n <button\n ref={ref as React.Ref<HTMLButtonElement>}\n disabled={isInactive}\n className={baseClasses}\n {...props}\n >\n {renderContent()}\n </button>\n );\n\n if (tooltip) {\n const trigger = isInactive ? (\n <span className={`inline-flex cursor-not-allowed${flexGrow ? ' w-full' : ''}`}>\n {button}\n </span>\n ) : (\n button\n );\n return (\n <Tooltip text={tooltip} placement={tooltipPlacement} fill={flexGrow}>\n {trigger}\n </Tooltip>\n );\n }\n\n return button;\n },\n);\n\nButton.displayName = 'Button';\n\nexport default Button;\n"],"names":["getSizeClasses","size","getIconOnlySizeClasses","getDefaultRadiusClass","iconOnly","getIconGapClass","position","start","getIconSizeClass","getRadiusClass","radius","resolveRel","rel","target","tokens","FOCUS_OUTLINE","getVariantClasses","variant","radiusClass","baseClasses","LoadingSpinner","jsxs","jsx","Button","forwardRef","loading","disabled","icon","iconPosition","flexGrow","fill","tooltip","tooltipPlacement","children","className","href","props","ref","isInactive","renderContent","Fragment","iconWrapperClasses","button","Tooltip"],"mappings":"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"}