@stackone/malachite 2.21.0 → 2.22.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 +91 -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 +847 -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 +643 -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 +1045 -89
  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,370 @@
1
+ import { jsxs as S, jsx as d } from "react/jsx-runtime";
2
+ import { useId as xt, useState as E, useRef as g, useLayoutEffect as T, useCallback as et, useEffect as bt, useInsertionEffect as wt } from "react";
3
+ import { createPortal as vt } from "react-dom";
4
+ import yt from "./Spinner.js";
5
+ import { CONTROL_TEXT_SIZE as _, CONTROL_TEXT_SIZE_CLASS as rt } from "./controlTextSize.js";
6
+ import { pushEscapeLayer as St } from "./escapeLayers.js";
7
+ import { ensureMultiSelectPanelStyles as Et } from "./optionRowStyles.js";
8
+ import { overlayIdentity as Tt } from "./portalOverlay.js";
9
+ import { computeCaretMenuGeometry as kt } from "./queryInputGeometry.js";
10
+ const Mt = {
11
+ small: "h-[var(--malachite-control-height-small,28px)] px-[10px] rounded-[var(--malachite-radius-10,10px)]",
12
+ medium: "h-[var(--malachite-control-height-medium,32px)] px-[10px] rounded-xl",
13
+ large: "h-[var(--malachite-control-height-large,42px)] px-[12px] rounded-[var(--malachite-radius-xxl,14px)]"
14
+ }, Lt = {
15
+ key: "var(--malachite-codeblock-keyword, rgb(12, 88, 174))",
16
+ value: "var(--malachite-codeblock-string, rgb(2, 122, 66))",
17
+ operator: "var(--malachite-codeblock-type, rgb(12, 88, 174))",
18
+ negation: "var(--malachite-text-destructive, rgb(237, 53, 54))",
19
+ punctuation: "var(--malachite-codeblock-foreground, rgb(10, 10, 10))",
20
+ error: "var(--malachite-text-error, rgb(237, 53, 54))",
21
+ plain: "var(--malachite-text-primary, rgb(10, 10, 10))"
22
+ }, It = {
23
+ small: {
24
+ fontFamily: "inherit",
25
+ fontSize: _.small,
26
+ fontWeight: 500,
27
+ letterSpacing: "normal",
28
+ lineHeight: "normal",
29
+ padding: 0
30
+ },
31
+ medium: {
32
+ fontFamily: "inherit",
33
+ fontSize: _.medium,
34
+ fontWeight: 500,
35
+ letterSpacing: "normal",
36
+ lineHeight: "normal",
37
+ padding: 0
38
+ },
39
+ large: {
40
+ fontFamily: "inherit",
41
+ fontSize: _.large,
42
+ fontWeight: 500,
43
+ letterSpacing: "normal",
44
+ lineHeight: "normal",
45
+ padding: 0
46
+ }
47
+ }, F = 220, nt = 360, ot = {
48
+ display: "flex",
49
+ alignItems: "center",
50
+ justifyContent: "center",
51
+ gap: 8,
52
+ padding: "10px 12px",
53
+ color: "var(--malachite-text-dimmed, rgb(161, 161, 161))",
54
+ whiteSpace: "nowrap"
55
+ }, Rt = (r) => {
56
+ r.preventDefault();
57
+ }, Dt = (r, f) => {
58
+ const a = [...f.filter(
59
+ (n) => n.start >= 0 && n.end <= r.length && n.start < n.end
60
+ )].sort((n, k) => n.start - k.start), s = [];
61
+ let u = 0;
62
+ for (const n of a)
63
+ n.start < u || (s.push(n), u = n.end);
64
+ return s;
65
+ }, _t = (r, f) => {
66
+ const h = [];
67
+ let a = 0;
68
+ for (const s of Dt(r, f))
69
+ s.start > a && h.push({ start: a, end: s.start, kind: "plain" }), h.push(s), a = s.end;
70
+ return a < r.length && h.push({ start: a, end: r.length, kind: "plain" }), h;
71
+ }, jt = ({
72
+ value: r,
73
+ onChange: f,
74
+ tokens: h = [],
75
+ suggestions: a,
76
+ activeRange: s,
77
+ onAccept: u,
78
+ onQueryContextChange: n,
79
+ onSubmit: k,
80
+ placeholder: B,
81
+ size: x = "large",
82
+ disabled: M = !1,
83
+ loading: L = !1,
84
+ emptyMessage: H,
85
+ className: it = "",
86
+ style: at,
87
+ "aria-label": lt,
88
+ "aria-labelledby": K
89
+ }) => {
90
+ const W = `${xt()}-listbox`, U = (t) => `${W}-option-${t}`, [N, j] = E(!1), [Y, O] = E(() => r.length), [st, $] = E(0), [ct, A] = E(!1), [i, Z] = E(null), b = g(null), C = g(null), G = g(null), I = g(null), P = g([]), z = g(null), dt = Array.isArray(a), w = a ?? [], v = w.length > 0, l = N && (L || v || dt && !v && !!H) && !ct && !M, y = l && v && !L, c = v ? Math.min(st, w.length - 1) : -1;
91
+ T(() => {
92
+ O((t) => Math.min(t, r.length));
93
+ }, [r]);
94
+ const R = et(() => {
95
+ const t = b.current, e = C.current;
96
+ t && e && (e.style.transform = `translateX(${-t.scrollLeft}px)`);
97
+ }, []);
98
+ T(() => {
99
+ R();
100
+ }, [r, R]);
101
+ const m = et(() => {
102
+ var o, p, D;
103
+ const t = b.current;
104
+ if (!t)
105
+ return;
106
+ const e = (((o = G.current) == null ? void 0 : o.offsetWidth) ?? 0) - t.scrollLeft;
107
+ Z(
108
+ kt({
109
+ inputRect: t.getBoundingClientRect(),
110
+ caretOffsetPx: e,
111
+ menuWidth: ((p = I.current) == null ? void 0 : p.offsetWidth) ?? F,
112
+ menuHeight: ((D = I.current) == null ? void 0 : D.offsetHeight) ?? 0,
113
+ viewportWidth: window.innerWidth,
114
+ viewportHeight: window.innerHeight
115
+ })
116
+ );
117
+ }, []);
118
+ T(() => {
119
+ l ? m() : Z(null);
120
+ }, [l, r, Y, a, L, m]), bt(() => {
121
+ if (!l)
122
+ return;
123
+ const t = () => m();
124
+ window.addEventListener("scroll", t, !0), window.addEventListener("resize", t);
125
+ const e = St(() => A(!0));
126
+ return () => {
127
+ window.removeEventListener("scroll", t, !0), window.removeEventListener("resize", t), e();
128
+ };
129
+ }, [l, m]), T(() => {
130
+ const t = z.current;
131
+ if (t === null)
132
+ return;
133
+ z.current = null;
134
+ const e = b.current;
135
+ !e || t.value !== r || (e.setSelectionRange(t.caret, t.caret), O(t.caret), n == null || n({ value: r, caret: t.caret }), R(), m());
136
+ }, [r]), T(() => {
137
+ if (!y)
138
+ return;
139
+ const t = P.current[c], e = I.current;
140
+ if (!t || !e)
141
+ return;
142
+ const o = t.offsetTop + t.offsetHeight;
143
+ o > e.scrollTop + e.clientHeight ? e.scrollTop = o - e.clientHeight : t.offsetTop < e.scrollTop && (e.scrollTop = t.offsetTop);
144
+ }, [c, y]), wt(() => {
145
+ l && Et();
146
+ }, [l]);
147
+ const V = (t, e) => {
148
+ O(e), n == null || n({ value: t, caret: e });
149
+ }, pt = (t) => {
150
+ const e = t.target.value;
151
+ A(!1), $(0), f(e), V(e, t.target.selectionStart ?? e.length);
152
+ }, ht = (t) => {
153
+ const e = t.currentTarget;
154
+ V(e.value, e.selectionStart ?? e.value.length);
155
+ }, X = (t) => {
156
+ var tt;
157
+ const e = ((tt = b.current) == null ? void 0 : tt.selectionStart) ?? r.length, o = s ?? { start: e, end: e }, p = Math.max(0, Math.min(o.start, r.length)), D = Math.max(p, Math.min(o.end, r.length)), J = t.insertText ?? t.label, Q = r.slice(0, p) + J + r.slice(D);
158
+ z.current = { value: Q, caret: p + J.length }, f(Q), u == null || u(t);
159
+ }, ft = (t) => {
160
+ if (y && (t.key === "ArrowDown" || t.key === "ArrowUp")) {
161
+ t.preventDefault();
162
+ const o = w.length;
163
+ $(
164
+ t.key === "ArrowDown" ? (c + 1) % o : (c - 1 + o) % o
165
+ );
166
+ return;
167
+ }
168
+ const e = y && c >= 0 ? w[c] : void 0;
169
+ if (t.key === "Enter") {
170
+ if (e) {
171
+ t.preventDefault(), X(e);
172
+ return;
173
+ }
174
+ k && (t.preventDefault(), k(r));
175
+ return;
176
+ }
177
+ t.key === "Tab" && e && (t.preventDefault(), X(e));
178
+ }, ut = _t(r, h), q = It[x], mt = L ? (
179
+ // `role="listbox"` admits only option/group children.
180
+ /* @__PURE__ */ S("div", { role: "presentation", style: ot, children: [
181
+ /* @__PURE__ */ d(yt, { size: "xxxsmall" }),
182
+ /* @__PURE__ */ d("span", { children: "Loading…" })
183
+ ] })
184
+ ) : v ? w.map((t, e) => {
185
+ const o = e === c;
186
+ return /* @__PURE__ */ S(
187
+ "button",
188
+ {
189
+ ref: (p) => {
190
+ P.current[e] = p;
191
+ },
192
+ type: "button",
193
+ id: U(e),
194
+ role: "option",
195
+ "aria-selected": o,
196
+ tabIndex: -1,
197
+ onClick: () => X(t),
198
+ onMouseEnter: () => $(e),
199
+ className: "malachite-multiselect-option",
200
+ "data-highlighted": o,
201
+ style: {
202
+ display: "flex",
203
+ alignItems: "center",
204
+ gap: 12,
205
+ width: "100%",
206
+ flexShrink: 0,
207
+ border: "none",
208
+ textAlign: "left",
209
+ borderRadius: 8,
210
+ padding: "8px 10px",
211
+ font: "inherit",
212
+ cursor: "pointer",
213
+ color: "var(--malachite-text-primary, rgb(10, 10, 10))"
214
+ },
215
+ children: [
216
+ /* @__PURE__ */ d(
217
+ "span",
218
+ {
219
+ style: {
220
+ flex: 1,
221
+ minWidth: 0,
222
+ overflow: "hidden",
223
+ textOverflow: "ellipsis",
224
+ whiteSpace: "nowrap"
225
+ },
226
+ children: t.label
227
+ }
228
+ ),
229
+ t.detail && /* @__PURE__ */ d(
230
+ "span",
231
+ {
232
+ style: {
233
+ flexShrink: 0,
234
+ fontSize: "var(--malachite-font-size-xsmall, 11px)",
235
+ color: "var(--malachite-text-secondary, rgb(123, 123, 123))"
236
+ },
237
+ children: t.detail
238
+ }
239
+ )
240
+ ]
241
+ },
242
+ t.id
243
+ );
244
+ }) : H ? /* @__PURE__ */ d("div", { role: "presentation", style: ot, children: H }) : null, gt = M ? "" : "hover:border-[var(--malachite-text-placeholder)]";
245
+ return /* @__PURE__ */ S(
246
+ "div",
247
+ {
248
+ className: `relative w-full ${Mt[x]} bg-[var(--malachite-card-background)] border border-solid border-[var(--malachite-card-border)] ${gt} transition-colors flex items-center ${M ? "opacity-60 cursor-not-allowed" : ""} ${it}`,
249
+ style: {
250
+ boxShadow: N ? "var(--malachite-shadow-accent, 0px 1px 0px 0px rgba(0, 175, 102, 0.15))" : "0px 1px 1px 0px rgba(0, 0, 0, 0.15)",
251
+ borderColor: N ? "var(--malachite-control-border-hover, rgba(0, 175, 102, 0.4))" : void 0,
252
+ ...at
253
+ },
254
+ children: [
255
+ /* @__PURE__ */ S("div", { className: "relative flex-1 h-full min-w-0 overflow-hidden", children: [
256
+ /* @__PURE__ */ S(
257
+ "div",
258
+ {
259
+ ref: C,
260
+ "aria-hidden": "true",
261
+ className: `absolute inset-0 flex items-center pointer-events-none ${rt[x]}`,
262
+ style: { ...q, whiteSpace: "pre" },
263
+ children: [
264
+ ut.map((t) => /* @__PURE__ */ d(
265
+ "span",
266
+ {
267
+ style: {
268
+ color: Lt[t.kind],
269
+ ...t.kind === "error" ? { textDecoration: "underline wavy" } : {}
270
+ },
271
+ children: r.slice(t.start, t.end)
272
+ },
273
+ t.start
274
+ )),
275
+ /* @__PURE__ */ d(
276
+ "span",
277
+ {
278
+ ref: G,
279
+ style: { position: "absolute", top: 0, left: 0, visibility: "hidden" },
280
+ children: r.slice(0, Y)
281
+ }
282
+ )
283
+ ]
284
+ }
285
+ ),
286
+ /* @__PURE__ */ d(
287
+ "input",
288
+ {
289
+ ref: b,
290
+ type: "text",
291
+ role: "combobox",
292
+ "aria-expanded": l,
293
+ "aria-controls": l ? W : void 0,
294
+ "aria-activedescendant": y && c >= 0 ? U(c) : void 0,
295
+ "aria-autocomplete": "list",
296
+ autoComplete: "off",
297
+ spellCheck: !1,
298
+ "aria-labelledby": K,
299
+ "aria-label": K ? void 0 : lt ?? B,
300
+ value: r,
301
+ onChange: pt,
302
+ onSelect: ht,
303
+ onScroll: () => {
304
+ R(), l && m();
305
+ },
306
+ onKeyDown: ft,
307
+ onFocus: () => {
308
+ j(!0), A(!1);
309
+ },
310
+ onBlur: () => j(!1),
311
+ placeholder: B,
312
+ disabled: M,
313
+ className: `absolute inset-0 w-full h-full bg-transparent border-none outline-none ${rt[x]} placeholder:text-[var(--malachite-text-placeholder)] placeholder:font-medium disabled:cursor-not-allowed`,
314
+ style: {
315
+ ...q,
316
+ color: "transparent",
317
+ caretColor: "var(--malachite-text-primary, rgb(10, 10, 10))"
318
+ }
319
+ }
320
+ )
321
+ ] }),
322
+ l && vt(
323
+ /* @__PURE__ */ d(
324
+ "div",
325
+ {
326
+ ref: I,
327
+ id: W,
328
+ role: "listbox",
329
+ ...Tt("dropdown"),
330
+ onMouseDown: Rt,
331
+ style: {
332
+ position: "fixed",
333
+ top: (i == null ? void 0 : i.top) ?? 0,
334
+ left: (i == null ? void 0 : i.left) ?? 0,
335
+ minWidth: Math.min(
336
+ F,
337
+ (i == null ? void 0 : i.width) ?? F
338
+ ),
339
+ maxWidth: Math.min(
340
+ nt,
341
+ (i == null ? void 0 : i.width) ?? nt
342
+ ),
343
+ background: "var(--malachite-card-background, rgb(255, 255, 255))",
344
+ border: "1px solid var(--malachite-card-border, rgb(232, 232, 232))",
345
+ borderRadius: 12,
346
+ boxShadow: "0px 2px 5px 0px rgba(0, 0, 0, 0.1)",
347
+ padding: 4,
348
+ display: "flex",
349
+ flexDirection: "column",
350
+ gap: 2,
351
+ maxHeight: 320,
352
+ overflowY: "auto",
353
+ fontSize: _[x],
354
+ visibility: i ? "visible" : "hidden",
355
+ opacity: i ? 1 : 0
356
+ },
357
+ children: mt
358
+ }
359
+ ),
360
+ document.body
361
+ )
362
+ ]
363
+ }
364
+ );
365
+ };
366
+ export {
367
+ jt as QueryInput,
368
+ jt as default
369
+ };
370
+ //# sourceMappingURL=QueryInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryInput.js","sources":["../../src/components/QueryInput.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useId,\n useInsertionEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport Spinner from './Spinner';\nimport { CONTROL_TEXT_SIZE, CONTROL_TEXT_SIZE_CLASS } from './controlTextSize';\nimport { pushEscapeLayer } from './escapeLayers';\nimport { ensureMultiSelectPanelStyles } from './optionRowStyles';\nimport { overlayIdentity } from './portalOverlay';\nimport { type CaretMenuGeometry, computeCaretMenuGeometry } from './queryInputGeometry';\n\nexport type QueryTokenKind =\n | 'key'\n | 'value'\n | 'operator'\n | 'negation'\n | 'punctuation'\n | 'error'\n | 'plain';\n\nexport interface QueryToken {\n /** Index into `value`. */\n start: number;\n /** Exclusive. */\n end: number;\n kind: QueryTokenKind;\n}\n\nexport interface QuerySuggestion {\n id: string;\n label: string;\n /** Secondary text, right-aligned in the row. */\n detail?: string;\n /** What replaces `activeRange` when accepted. Defaults to `label`. */\n insertText?: string;\n}\n\nexport type QueryInputSize = 'small' | 'medium' | 'large';\n\nexport interface QueryInputProps {\n value: string;\n onChange: (value: string) => void;\n /** Ranges to colour. Tokens that are out of range, reversed or overlapping are ignored. */\n tokens?: QueryToken[];\n /** Rows for the caret menu. Empty or undefined means the menu stays closed. */\n suggestions?: QuerySuggestion[];\n /** The span an accepted suggestion replaces. Defaults to a zero-width span at the caret. */\n activeRange?: { start: number; end: number };\n onAccept?: (suggestion: QuerySuggestion) => void;\n /** Every value change AND every caret move, so the consumer can recompute tokens/suggestions. */\n onQueryContextChange?: (context: { value: string; caret: number }) => void;\n /** Enter with nothing highlighted in the menu. */\n onSubmit?: (value: string) => void;\n placeholder?: string;\n size?: QueryInputSize;\n disabled?: boolean;\n /** Suggestions are being fetched: the menu shows a loading row instead of the empty message. */\n loading?: boolean;\n emptyMessage?: string;\n className?: string;\n style?: React.CSSProperties;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n}\n\n// Same 28/32/42 ladder as Search, minus the icon gap this component has no icon to space.\nconst SIZE_CLASSES: Record<QueryInputSize, string> = {\n small: 'h-[var(--malachite-control-height-small,28px)] px-[10px] rounded-[var(--malachite-radius-10,10px)]',\n medium: 'h-[var(--malachite-control-height-medium,32px)] px-[10px] rounded-xl',\n large: 'h-[var(--malachite-control-height-large,42px)] px-[12px] rounded-[var(--malachite-radius-xxl,14px)]',\n};\n\nconst TOKEN_COLORS: Record<QueryTokenKind, string> = {\n key: 'var(--malachite-codeblock-keyword, rgb(12, 88, 174))',\n value: 'var(--malachite-codeblock-string, rgb(2, 122, 66))',\n operator: 'var(--malachite-codeblock-type, rgb(12, 88, 174))',\n negation: 'var(--malachite-text-destructive, rgb(237, 53, 54))',\n punctuation: 'var(--malachite-codeblock-foreground, rgb(10, 10, 10))',\n error: 'var(--malachite-text-error, rgb(237, 53, 54))',\n plain: 'var(--malachite-text-primary, rgb(10, 10, 10))',\n};\n\n// The one place the mirror and the input agree on typography: diverge here and the coloured\n// text drifts out from under the caret it's supposed to sit beneath.\nconst TEXT_STYLE: Record<QueryInputSize, React.CSSProperties> = {\n small: {\n fontFamily: 'inherit',\n fontSize: CONTROL_TEXT_SIZE.small,\n fontWeight: 500,\n letterSpacing: 'normal',\n lineHeight: 'normal',\n padding: 0,\n },\n medium: {\n fontFamily: 'inherit',\n fontSize: CONTROL_TEXT_SIZE.medium,\n fontWeight: 500,\n letterSpacing: 'normal',\n lineHeight: 'normal',\n padding: 0,\n },\n large: {\n fontFamily: 'inherit',\n fontSize: CONTROL_TEXT_SIZE.large,\n fontWeight: 500,\n letterSpacing: 'normal',\n lineHeight: 'normal',\n padding: 0,\n },\n};\n\n/** Before layout the portal hasn't painted yet, so the first geometry pass needs a width. */\nconst MENU_FALLBACK_WIDTH_PX = 220;\n\nconst MENU_MAX_WIDTH_PX = 360;\n\nconst MENU_MESSAGE_STYLE: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 8,\n padding: '10px 12px',\n color: 'var(--malachite-text-dimmed, rgb(161, 161, 161))',\n whiteSpace: 'nowrap',\n};\n\n/** Keeps focus (and the caret) on the input so a row click never blurs it first. */\nconst handleMenuMouseDown = (event: React.MouseEvent) => {\n event.preventDefault();\n};\n\ninterface QuerySegment {\n start: number;\n end: number;\n kind: QueryTokenKind;\n}\n\n/** Drops tokens the consumer got wrong rather than letting them corrupt the render. */\nconst sanitizeTokens = (value: string, tokens: QueryToken[]): QueryToken[] => {\n const inRange = tokens.filter(\n (token) => token.start >= 0 && token.end <= value.length && token.start < token.end,\n );\n const sorted = [...inRange].sort((a, b) => a.start - b.start);\n const accepted: QueryToken[] = [];\n let cursor = 0;\n for (const token of sorted) {\n if (token.start < cursor) {\n continue;\n }\n accepted.push(token);\n cursor = token.end;\n }\n return accepted;\n};\n\n/** Fills the gaps between tokens with 'plain' segments so the mirror's text always equals `value`. */\nconst buildSegments = (value: string, tokens: QueryToken[]): QuerySegment[] => {\n const segments: QuerySegment[] = [];\n let cursor = 0;\n for (const token of sanitizeTokens(value, tokens)) {\n if (token.start > cursor) {\n segments.push({ start: cursor, end: token.start, kind: 'plain' });\n }\n segments.push(token);\n cursor = token.end;\n }\n if (cursor < value.length) {\n segments.push({ start: cursor, end: value.length, kind: 'plain' });\n }\n return segments;\n};\n\nconst QueryInput: React.FC<QueryInputProps> = ({\n value,\n onChange,\n tokens = [],\n suggestions,\n activeRange,\n onAccept,\n onQueryContextChange,\n onSubmit,\n placeholder,\n size = 'large',\n disabled = false,\n loading = false,\n emptyMessage,\n className = '',\n style,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n}) => {\n const instanceId = useId();\n const listboxId = `${instanceId}-listbox`;\n const getRowId = (index: number) => `${listboxId}-option-${index}`;\n\n const [focused, setFocused] = useState(false);\n const [caret, setCaret] = useState(() => value.length);\n const [rawHighlightedIndex, setHighlightedIndex] = useState(0);\n // Escape closes the menu whatever `suggestions` and `loading` say. Lifted by an edit or a\n // refocus, so navigating a dismissed query does not pop it back open.\n const [dismissed, setDismissed] = useState(false);\n const [menuPosition, setMenuPosition] = useState<CaretMenuGeometry | null>(null);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const mirrorRef = useRef<HTMLDivElement>(null);\n const measureRef = useRef<HTMLSpanElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const rowRefs = useRef<(HTMLButtonElement | null)[]>([]);\n // Caret restore after an accepted suggestion. Carries the string it was computed against:\n // nothing obliges a controlled consumer to apply the value handed to `onChange`, and a\n // caret from a rejected or rewritten suggestion must not land on a later unrelated edit.\n const pendingSelectionRef = useRef<{ value: string; caret: number } | null>(null);\n\n const suggestionsProvided = Array.isArray(suggestions);\n const suggestionList = suggestions ?? [];\n const hasSuggestions = suggestionList.length > 0;\n const isEmptyList = suggestionsProvided && !hasSuggestions;\n const wantsMenu = loading || hasSuggestions || (isEmptyList && !!emptyMessage);\n const isMenuOpen = focused && wantsMenu && !dismissed && !disabled;\n // `loading` paints the spinner over any rows the consumer is still holding, so nothing is\n // on screen to arrow through, accept, or point `aria-activedescendant` at.\n const rowsVisible = isMenuOpen && hasSuggestions && !loading;\n\n // A consumer's `suggestions` array is commonly rebuilt inline, so its identity changes on\n // any parent re-render and cannot stand in for \"the candidates changed\". Clamping during\n // render keeps the row the user arrowed to, and keeps the highlight inside a shrunken list.\n const highlightedIndex = hasSuggestions\n ? Math.min(rawHighlightedIndex, suggestionList.length - 1)\n : -1;\n\n useLayoutEffect(() => {\n setCaret((current) => Math.min(current, value.length));\n }, [value]);\n\n const syncMirrorScroll = useCallback(() => {\n const input = inputRef.current;\n const mirror = mirrorRef.current;\n if (input && mirror) {\n mirror.style.transform = `translateX(${-input.scrollLeft}px)`;\n }\n }, []);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: re-syncs on every value change, not on value itself\n useLayoutEffect(() => {\n syncMirrorScroll();\n }, [value, syncMirrorScroll]);\n\n const updateMenuPosition = useCallback(() => {\n const input = inputRef.current;\n if (!input) {\n return;\n }\n const caretOffsetPx = (measureRef.current?.offsetWidth ?? 0) - input.scrollLeft;\n setMenuPosition(\n computeCaretMenuGeometry({\n inputRect: input.getBoundingClientRect(),\n caretOffsetPx,\n menuWidth: menuRef.current?.offsetWidth ?? MENU_FALLBACK_WIDTH_PX,\n menuHeight: menuRef.current?.offsetHeight ?? 0,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n }),\n );\n }, []);\n\n // Depends on `caret` as well as `value`: the measuring span is sliced at the caret, so an\n // arrow-key move with no edit still changes where the menu belongs.\n // biome-ignore lint/correctness/useExhaustiveDependencies: repositions on every keystroke, not on value itself\n useLayoutEffect(() => {\n if (isMenuOpen) {\n updateMenuPosition();\n } else {\n setMenuPosition(null);\n }\n // `suggestions` and `loading` are here because they change the menu's own size: rows\n // arriving after a fetch resize it while the query and caret sit still, and a stale\n // measurement would leave `openUp` and the caret-aligned `left` computed for the old box.\n }, [isMenuOpen, value, caret, suggestions, loading, updateMenuPosition]);\n\n useEffect(() => {\n if (!isMenuOpen) {\n return undefined;\n }\n const handleScrollOrResize = () => updateMenuPosition();\n window.addEventListener('scroll', handleScrollOrResize, true);\n window.addEventListener('resize', handleScrollOrResize);\n const popEscapeLayer = pushEscapeLayer(() => setDismissed(true));\n return () => {\n window.removeEventListener('scroll', handleScrollOrResize, true);\n window.removeEventListener('resize', handleScrollOrResize);\n popEscapeLayer();\n };\n }, [isMenuOpen, updateMenuPosition]);\n\n // Restore the caret placed by the last accepted suggestion once the new `value` has\n // actually rendered. Guarded on the ref so an externally-driven value change never gets\n // its selection clobbered.\n // biome-ignore lint/correctness/useExhaustiveDependencies: intentionally re-reads latest closures via pendingSelectionRef's gate\n useLayoutEffect(() => {\n const pending = pendingSelectionRef.current;\n if (pending === null) {\n return;\n }\n pendingSelectionRef.current = null;\n const input = inputRef.current;\n // Dropped unless the consumer applied exactly the string this caret was measured\n // against. A rejected or rewritten suggestion leaves the caret where the user put it.\n if (!input || pending.value !== value) {\n return;\n }\n input.setSelectionRange(pending.caret, pending.caret);\n setCaret(pending.caret);\n onQueryContextChange?.({ value, caret: pending.caret });\n syncMirrorScroll();\n updateMenuPosition();\n }, [value]);\n\n // Scrolled by hand rather than with `scrollIntoView`, which would also scroll the page and\n // carry the field itself out of view. Same reason MultiSelect does it this way.\n useLayoutEffect(() => {\n if (!rowsVisible) {\n return;\n }\n const row = rowRefs.current[highlightedIndex];\n const container = menuRef.current;\n if (!row || !container) {\n return;\n }\n const rowBottom = row.offsetTop + row.offsetHeight;\n if (rowBottom > container.scrollTop + container.clientHeight) {\n container.scrollTop = rowBottom - container.clientHeight;\n } else if (row.offsetTop < container.scrollTop) {\n container.scrollTop = row.offsetTop;\n }\n }, [highlightedIndex, rowsVisible]);\n\n // useInsertionEffect, not layout: the rules have to land before the rows paint.\n useInsertionEffect(() => {\n if (isMenuOpen) {\n ensureMultiSelectPanelStyles();\n }\n }, [isMenuOpen]);\n\n const reportCaret = (nextValue: string, nextCaret: number) => {\n setCaret(nextCaret);\n onQueryContextChange?.({ value: nextValue, caret: nextCaret });\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const next = event.target.value;\n // Editing is the user asking again, so it lifts an earlier Escape. Moving the caret is\n // not, and neither is a new `suggestions` array: that identity changes on any parent\n // re-render, which would undo the dismissal with nothing having been asked.\n setDismissed(false);\n setHighlightedIndex(0);\n onChange(next);\n reportCaret(next, event.target.selectionStart ?? next.length);\n };\n\n const handleSelect = (event: React.SyntheticEvent<HTMLInputElement>) => {\n const target = event.currentTarget;\n reportCaret(target.value, target.selectionStart ?? target.value.length);\n };\n\n const acceptSuggestion = (suggestion: QuerySuggestion) => {\n const fallbackCaret = inputRef.current?.selectionStart ?? value.length;\n const range = activeRange ?? { start: fallbackCaret, end: fallbackCaret };\n // Clamped for the same reason `sanitizeTokens` drops a bad range, except this one\n // writes: `slice` reads a negative index from the end of the string, so an unchecked\n // `start` of -1 silently rewrites the tail instead of doing nothing.\n const start = Math.max(0, Math.min(range.start, value.length));\n const end = Math.max(start, Math.min(range.end, value.length));\n const insertText = suggestion.insertText ?? suggestion.label;\n const next = value.slice(0, start) + insertText + value.slice(end);\n pendingSelectionRef.current = { value: next, caret: start + insertText.length };\n onChange(next);\n onAccept?.(suggestion);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (rowsVisible && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {\n event.preventDefault();\n const count = suggestionList.length;\n // Steps from the clamped index, so a list that shrank moves from the row on screen\n // rather than from a raw index the user can no longer see.\n setHighlightedIndex(\n event.key === 'ArrowDown'\n ? (highlightedIndex + 1) % count\n : (highlightedIndex - 1 + count) % count,\n );\n return;\n }\n\n const highlighted =\n rowsVisible && highlightedIndex >= 0 ? suggestionList[highlightedIndex] : undefined;\n\n if (event.key === 'Enter') {\n if (highlighted) {\n event.preventDefault();\n acceptSuggestion(highlighted);\n return;\n }\n if (onSubmit) {\n // Otherwise a surrounding <form> submits too and the query is sent twice.\n // Without the prop the native submit is left alone, which is the useful default.\n event.preventDefault();\n onSubmit(value);\n }\n return;\n }\n\n if (event.key === 'Tab' && highlighted) {\n // Tab completes the term and stays put, the way an editor or a search bar does.\n // Letting focus move on would hand the next keystroke to another field.\n event.preventDefault();\n acceptSuggestion(highlighted);\n }\n };\n\n const segments = buildSegments(value, tokens);\n const textStyle = TEXT_STYLE[size];\n\n const menuContent = (() => {\n if (loading) {\n return (\n // `role=\"listbox\"` admits only option/group children.\n <div role=\"presentation\" style={MENU_MESSAGE_STYLE}>\n <Spinner size=\"xxxsmall\" />\n <span>Loading…</span>\n </div>\n );\n }\n if (hasSuggestions) {\n return suggestionList.map((suggestion, index) => {\n const highlighted = index === highlightedIndex;\n return (\n <button\n key={suggestion.id}\n ref={(element) => {\n rowRefs.current[index] = element;\n }}\n type=\"button\"\n id={getRowId(index)}\n role=\"option\"\n aria-selected={highlighted}\n // Focus stays on the input under the activedescendant model, so a row\n // must not become its own tab stop.\n tabIndex={-1}\n onClick={() => acceptSuggestion(suggestion)}\n onMouseEnter={() => setHighlightedIndex(index)}\n className=\"malachite-multiselect-option\"\n data-highlighted={highlighted}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 12,\n width: '100%',\n flexShrink: 0,\n border: 'none',\n textAlign: 'left',\n borderRadius: 8,\n padding: '8px 10px',\n font: 'inherit',\n cursor: 'pointer',\n color: 'var(--malachite-text-primary, rgb(10, 10, 10))',\n }}\n >\n <span\n style={{\n flex: 1,\n minWidth: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {suggestion.label}\n </span>\n {suggestion.detail && (\n <span\n style={{\n flexShrink: 0,\n fontSize: 'var(--malachite-font-size-xsmall, 11px)',\n color: 'var(--malachite-text-secondary, rgb(123, 123, 123))',\n }}\n >\n {suggestion.detail}\n </span>\n )}\n </button>\n );\n });\n }\n if (emptyMessage) {\n // `role=\"listbox\"` admits only option/group children.\n return (\n <div role=\"presentation\" style={MENU_MESSAGE_STYLE}>\n {emptyMessage}\n </div>\n );\n }\n return null;\n })();\n\n const hoverBorderClass = disabled ? '' : 'hover:border-[var(--malachite-text-placeholder)]';\n\n return (\n <div\n className={`relative w-full ${SIZE_CLASSES[size]} bg-[var(--malachite-card-background)] border border-solid border-[var(--malachite-card-border)] ${hoverBorderClass} transition-colors flex items-center ${disabled ? 'opacity-60 cursor-not-allowed' : ''} ${className}`}\n style={{\n boxShadow: focused\n ? 'var(--malachite-shadow-accent, 0px 1px 0px 0px rgba(0, 175, 102, 0.15))'\n : '0px 1px 1px 0px rgba(0, 0, 0, 0.15)',\n borderColor: focused\n ? 'var(--malachite-control-border-hover, rgba(0, 175, 102, 0.4))'\n : undefined,\n ...style,\n }}\n >\n {/* Clips here, not on the mirror: the mirror is what translates, and a transform\n carries the element's own clip rect with it, so the window onto the text would\n slide out of the field by exactly `scrollLeft`. */}\n <div className=\"relative flex-1 h-full min-w-0 overflow-hidden\">\n {/* aria-hidden: purely decorative, the input carries the accessible value. */}\n <div\n ref={mirrorRef}\n aria-hidden=\"true\"\n className={`absolute inset-0 flex items-center pointer-events-none ${CONTROL_TEXT_SIZE_CLASS[size]}`}\n style={{ ...textStyle, whiteSpace: 'pre' }}\n >\n {segments.map((segment) => (\n <span\n key={segment.start}\n style={{\n color: TOKEN_COLORS[segment.kind],\n ...(segment.kind === 'error'\n ? { textDecoration: 'underline wavy' }\n : {}),\n }}\n >\n {value.slice(segment.start, segment.end)}\n </span>\n ))}\n <span\n ref={measureRef}\n style={{ position: 'absolute', top: 0, left: 0, visibility: 'hidden' }}\n >\n {value.slice(0, caret)}\n </span>\n </div>\n <input\n ref={inputRef}\n type=\"text\"\n role=\"combobox\"\n aria-expanded={isMenuOpen}\n aria-controls={isMenuOpen ? listboxId : undefined}\n aria-activedescendant={\n rowsVisible && highlightedIndex >= 0\n ? getRowId(highlightedIndex)\n : undefined\n }\n aria-autocomplete=\"list\"\n autoComplete=\"off\"\n spellCheck={false}\n aria-labelledby={ariaLabelledBy}\n // A visible label outranks it, so the fallback only applies without one.\n aria-label={ariaLabelledBy ? undefined : (ariaLabel ?? placeholder)}\n value={value}\n onChange={handleChange}\n onSelect={handleSelect}\n onScroll={() => {\n syncMirrorScroll();\n if (isMenuOpen) {\n updateMenuPosition();\n }\n }}\n onKeyDown={handleKeyDown}\n onFocus={() => {\n setFocused(true);\n setDismissed(false);\n }}\n onBlur={() => setFocused(false)}\n placeholder={placeholder}\n disabled={disabled}\n className={`absolute inset-0 w-full h-full bg-transparent border-none outline-none ${CONTROL_TEXT_SIZE_CLASS[size]} placeholder:text-[var(--malachite-text-placeholder)] placeholder:font-medium disabled:cursor-not-allowed`}\n style={{\n ...textStyle,\n color: 'transparent',\n caretColor: 'var(--malachite-text-primary, rgb(10, 10, 10))',\n }}\n />\n </div>\n {isMenuOpen &&\n createPortal(\n <div\n ref={menuRef}\n id={listboxId}\n role=\"listbox\"\n // Rides the dropdown overlay band, but borrows the multiselect option\n // rows below: their highlight follows `data-highlighted`, which is the\n // keyboard cursor this menu has, rather than a bare `:hover`.\n {...overlayIdentity('dropdown')}\n onMouseDown={handleMenuMouseDown}\n style={{\n position: 'fixed',\n top: menuPosition?.top ?? 0,\n left: menuPosition?.left ?? 0,\n minWidth: Math.min(\n MENU_FALLBACK_WIDTH_PX,\n menuPosition?.width ?? MENU_FALLBACK_WIDTH_PX,\n ),\n maxWidth: Math.min(\n MENU_MAX_WIDTH_PX,\n menuPosition?.width ?? MENU_MAX_WIDTH_PX,\n ),\n background: 'var(--malachite-card-background, rgb(255, 255, 255))',\n border: '1px solid var(--malachite-card-border, rgb(232, 232, 232))',\n borderRadius: 12,\n boxShadow: '0px 2px 5px 0px rgba(0, 0, 0, 0.1)',\n padding: 4,\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n maxHeight: 320,\n overflowY: 'auto',\n fontSize: CONTROL_TEXT_SIZE[size],\n visibility: menuPosition ? 'visible' : 'hidden',\n opacity: menuPosition ? 1 : 0,\n }}\n >\n {menuContent}\n </div>,\n document.body,\n )}\n </div>\n );\n};\n\nexport default QueryInput;\nexport { QueryInput };\n"],"names":["SIZE_CLASSES","TOKEN_COLORS","TEXT_STYLE","CONTROL_TEXT_SIZE","MENU_FALLBACK_WIDTH_PX","MENU_MAX_WIDTH_PX","MENU_MESSAGE_STYLE","handleMenuMouseDown","event","sanitizeTokens","value","tokens","sorted","token","a","b","accepted","cursor","buildSegments","segments","QueryInput","onChange","suggestions","activeRange","onAccept","onQueryContextChange","onSubmit","placeholder","size","disabled","loading","emptyMessage","className","style","ariaLabel","ariaLabelledBy","listboxId","useId","getRowId","index","focused","setFocused","useState","caret","setCaret","rawHighlightedIndex","setHighlightedIndex","dismissed","setDismissed","menuPosition","setMenuPosition","inputRef","useRef","mirrorRef","measureRef","menuRef","rowRefs","pendingSelectionRef","suggestionsProvided","suggestionList","hasSuggestions","isMenuOpen","rowsVisible","highlightedIndex","useLayoutEffect","current","syncMirrorScroll","useCallback","input","mirror","updateMenuPosition","caretOffsetPx","_a","computeCaretMenuGeometry","_b","_c","useEffect","handleScrollOrResize","popEscapeLayer","pushEscapeLayer","pending","row","container","rowBottom","useInsertionEffect","ensureMultiSelectPanelStyles","reportCaret","nextValue","nextCaret","handleChange","next","handleSelect","target","acceptSuggestion","suggestion","fallbackCaret","range","start","end","insertText","handleKeyDown","count","highlighted","textStyle","menuContent","jsxs","jsx","Spinner","element","hoverBorderClass","CONTROL_TEXT_SIZE_CLASS","segment","createPortal","overlayIdentity"],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import { FOCUS_RING as h } from "./focusRing.js";
3
+ const x = ({
4
+ checked: r,
5
+ onChange: t,
6
+ disabled: o = !1,
7
+ size: e = 14,
8
+ presentational: l = !1,
9
+ "aria-label": u,
10
+ "aria-labelledby": b,
11
+ className: i = "",
12
+ id: p
13
+ }) => {
14
+ const n = 2 * Math.round(e * 0.5 / 2), s = r ? "border-[color:var(--malachite-accent-foreground)]" : `border-[color:var(--malachite-text-placeholder)]${o || l ? "" : " hover:border-[color:var(--malachite-text-secondary)]"}`, c = {
15
+ position: "relative",
16
+ flexShrink: 0,
17
+ display: "inline-flex",
18
+ alignItems: "center",
19
+ justifyContent: "center",
20
+ width: `${e}px`,
21
+ height: `${e}px`,
22
+ padding: 0,
23
+ borderRadius: "50%",
24
+ borderWidth: "1px",
25
+ borderStyle: "solid",
26
+ backgroundColor: "transparent",
27
+ opacity: o ? 0.5 : 1,
28
+ transition: "border-color 150ms ease-in-out"
29
+ }, d = r ? /* @__PURE__ */ a(
30
+ "span",
31
+ {
32
+ style: {
33
+ width: `${n}px`,
34
+ height: `${n}px`,
35
+ borderRadius: "50%",
36
+ backgroundColor: "var(--malachite-accent-foreground, rgb(2, 122, 66))"
37
+ }
38
+ }
39
+ ) : null;
40
+ return l ? /* @__PURE__ */ a("span", { "aria-hidden": "true", className: `${s} ${i}`, style: c, children: d }) : /* @__PURE__ */ a(
41
+ "button",
42
+ {
43
+ type: "button",
44
+ role: "radio",
45
+ id: p,
46
+ "aria-checked": r,
47
+ "aria-label": u,
48
+ "aria-labelledby": b,
49
+ disabled: o,
50
+ onClick: () => {
51
+ r || t == null || t(!0);
52
+ },
53
+ className: `${h} ${s} ${i}`,
54
+ style: { ...c, cursor: o ? "not-allowed" : "pointer" },
55
+ children: d
56
+ }
57
+ );
58
+ };
59
+ export {
60
+ x as Radio,
61
+ x as default
62
+ };
63
+ //# sourceMappingURL=Radio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Radio.js","sources":["../../src/components/Radio.tsx"],"sourcesContent":["import React from 'react';\nimport { FOCUS_RING } from './focusRing';\n\ninterface RadioProps {\n checked: boolean;\n /** Optional when `presentational` — a presentational radio is a visual indicator only. */\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n size?: number;\n /**\n * Render a visual-only indicator (a non-interactive, non-focusable `<span>`,\n * `aria-hidden`) instead of an interactive radio. Use this inside a clickable\n * row/card whose wrapper is the real control, so there's a single tab stop.\n */\n presentational?: boolean;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n className?: string;\n id?: string;\n}\n\nconst Radio: React.FC<RadioProps> = ({\n checked,\n onChange,\n disabled = false,\n size = 14,\n presentational = false,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n className = '',\n id,\n}) => {\n // Keep the dot an even number of pixels so the leftover space (size - dot) is even\n // and the flex-centred dot lands on whole pixels. An odd dot leaves a half-pixel per\n // side, which renders visibly off-centre on 1x / fractionally-scaled displays\n // (e.g. Windows at 125%/150%).\n const dot = 2 * Math.round((size * 0.5) / 2);\n\n // Border colour lives in Tailwind classes (not inline) so the hover variant can\n // override it — inline styles would always win over a `:hover` rule. A\n // presentational indicator has no interactive hover (the row owns hover).\n const hoverClass =\n disabled || presentational ? '' : ' hover:border-[color:var(--malachite-text-secondary)]';\n const borderClass = checked\n ? 'border-[color:var(--malachite-accent-foreground)]'\n : `border-[color:var(--malachite-text-placeholder)]${hoverClass}`;\n\n const circleStyle: React.CSSProperties = {\n position: 'relative',\n flexShrink: 0,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: `${size}px`,\n height: `${size}px`,\n padding: 0,\n borderRadius: '50%',\n borderWidth: '1px',\n borderStyle: 'solid',\n backgroundColor: 'transparent',\n opacity: disabled ? 0.5 : 1,\n transition: 'border-color 150ms ease-in-out',\n };\n\n const innerDot = checked ? (\n <span\n style={{\n width: `${dot}px`,\n height: `${dot}px`,\n borderRadius: '50%',\n backgroundColor: 'var(--malachite-accent-foreground, rgb(2, 122, 66))',\n }}\n />\n ) : null;\n\n if (presentational) {\n return (\n <span aria-hidden=\"true\" className={`${borderClass} ${className}`} style={circleStyle}>\n {innerDot}\n </span>\n );\n }\n\n return (\n <button\n type=\"button\"\n role=\"radio\"\n id={id}\n aria-checked={checked}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n disabled={disabled}\n onClick={() => {\n // Radios don't toggle off on re-click; the parent manages the group.\n if (!checked) onChange?.(true);\n }}\n className={`${FOCUS_RING} ${borderClass} ${className}`}\n style={{ ...circleStyle, cursor: disabled ? 'not-allowed' : 'pointer' }}\n >\n {innerDot}\n </button>\n );\n};\n\nexport default Radio;\nexport { Radio };\nexport type { RadioProps };\n"],"names":["Radio","checked","onChange","disabled","size","presentational","ariaLabel","ariaLabelledBy","className","id","dot","borderClass","circleStyle","innerDot","jsx","FOCUS_RING"],"mappings":";;AAqBA,MAAMA,IAA8B,CAAC;AAAA,EACjC,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,MAAAC,IAAO;AAAA,EACP,gBAAAC,IAAiB;AAAA,EACjB,cAAcC;AAAA,EACd,mBAAmBC;AAAA,EACnB,WAAAC,IAAY;AAAA,EACZ,IAAAC;AACJ,MAAM;AAKF,QAAMC,IAAM,IAAI,KAAK,MAAON,IAAO,MAAO,CAAC,GAOrCO,IAAcV,IACd,sDACA,mDAHFE,KAAYE,IAAiB,KAAK,uDAG6B,IAE7DO,IAAmC;AAAA,IACrC,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,OAAO,GAAGR,CAAI;AAAA,IACd,QAAQ,GAAGA,CAAI;AAAA,IACf,SAAS;AAAA,IACT,cAAc;AAAA,IACd,aAAa;AAAA,IACb,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,SAASD,IAAW,MAAM;AAAA,IAC1B,YAAY;AAAA,EAAA,GAGVU,IAAWZ,IACb,gBAAAa;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,OAAO;AAAA,QACH,OAAO,GAAGJ,CAAG;AAAA,QACb,QAAQ,GAAGA,CAAG;AAAA,QACd,cAAc;AAAA,QACd,iBAAiB;AAAA,MAAA;AAAA,IACrB;AAAA,EAAA,IAEJ;AAEJ,SAAIL,IAEI,gBAAAS,EAAC,QAAA,EAAK,eAAY,QAAO,WAAW,GAAGH,CAAW,IAAIH,CAAS,IAAI,OAAOI,GACrE,UAAAC,GACL,IAKJ,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,MAAK;AAAA,MACL,MAAK;AAAA,MACL,IAAAL;AAAA,MACA,gBAAcR;AAAA,MACd,cAAYK;AAAA,MACZ,mBAAiBC;AAAA,MACjB,UAAAJ;AAAA,MACA,SAAS,MAAM;AAEX,QAAKF,KAASC,KAAA,QAAAA,EAAW;AAAA,MAC7B;AAAA,MACA,WAAW,GAAGa,CAAU,IAAIJ,CAAW,IAAIH,CAAS;AAAA,MACpD,OAAO,EAAE,GAAGI,GAAa,QAAQT,IAAW,gBAAgB,UAAA;AAAA,MAE3D,UAAAU;AAAA,IAAA;AAAA,EAAA;AAGb;"}
@@ -0,0 +1,54 @@
1
+ import { jsxs as C, jsx as c } from "react/jsx-runtime";
2
+ import { useState as S } from "react";
3
+ import $ from "./CustomIcons/SearchIcon.js";
4
+ import { CONTROL_TEXT_SIZE_CLASS as w } from "./controlTextSize.js";
5
+ const y = {
6
+ small: "h-[var(--malachite-control-height-small,28px)] gap-[6px] px-[10px] rounded-[var(--malachite-radius-10,10px)]",
7
+ medium: "h-[var(--malachite-control-height-medium,32px)] gap-[10px] px-[10px] rounded-xl",
8
+ large: "h-[var(--malachite-control-height-large,42px)] gap-[12px] px-[12px] rounded-[var(--malachite-radius-xxl,14px)]"
9
+ }, E = 15, L = ({
10
+ value: s,
11
+ onChange: n,
12
+ placeholder: r,
13
+ size: t = "large",
14
+ variant: d = "default",
15
+ disabled: a = !1,
16
+ autoFocus: i = !1,
17
+ className: x = "",
18
+ style: h
19
+ }) => {
20
+ const [o, l] = S(!1), e = d === "muted", p = e ? "bg-[var(--malachite-card-border)]" : "bg-[var(--malachite-card-background)]", m = e ? "border-transparent" : "border-[var(--malachite-card-border)]", u = a ? "" : "hover:border-[var(--malachite-text-placeholder)]", v = e ? "text-[var(--malachite-text-secondary)]" : "text-[var(--malachite-text-placeholder)]", g = e ? "placeholder:text-[var(--malachite-text-secondary)]" : "placeholder:text-[var(--malachite-text-placeholder)]", b = e ? "none" : o ? "var(--malachite-shadow-accent, 0px 1px 0px 0px rgba(0, 175, 102, 0.15))" : "0px 1px 1px 0px rgba(0, 0, 0, 0.15)";
21
+ return /* @__PURE__ */ C(
22
+ "div",
23
+ {
24
+ className: `w-full ${p} border border-solid ${m} ${u} transition-colors flex items-center ${y[t]} ${a ? "opacity-60 cursor-not-allowed" : ""} ${x}`,
25
+ style: {
26
+ boxShadow: b,
27
+ borderColor: o ? "var(--malachite-control-border-hover, rgba(0, 175, 102, 0.4))" : void 0,
28
+ ...h
29
+ },
30
+ children: [
31
+ /* @__PURE__ */ c($, { size: E, className: `${v} shrink-0` }),
32
+ /* @__PURE__ */ c(
33
+ "input",
34
+ {
35
+ type: "text",
36
+ value: s,
37
+ onChange: (f) => n(f.target.value),
38
+ onFocus: () => l(!0),
39
+ onBlur: () => l(!1),
40
+ placeholder: r,
41
+ "aria-label": r ?? "Search",
42
+ disabled: a,
43
+ autoFocus: i,
44
+ className: `flex-1 bg-transparent border-none outline-none ${w[t]} font-medium text-[var(--malachite-text-primary)] ${g} placeholder:font-medium disabled:cursor-not-allowed min-w-0`
45
+ }
46
+ )
47
+ ]
48
+ }
49
+ );
50
+ };
51
+ export {
52
+ L as default
53
+ };
54
+ //# sourceMappingURL=Search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Search.js","sources":["../../src/components/Search.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport SearchIcon from './CustomIcons/SearchIcon';\nimport { CONTROL_TEXT_SIZE_CLASS } from './controlTextSize';\n\nexport type SearchSize = 'small' | 'medium' | 'large';\nexport type SearchVariant = 'default' | 'muted';\n\n// Figma \"Search Element - Standard\": Small 28px, Medium 32px, Large 42px, with the radius\n// tracking the tier (10/12/14) and the icon staying 15px throughout.\nconst SIZE_CLASSES: Record<SearchSize, string> = {\n small: 'h-[var(--malachite-control-height-small,28px)] gap-[6px] px-[10px] rounded-[var(--malachite-radius-10,10px)]',\n medium: 'h-[var(--malachite-control-height-medium,32px)] gap-[10px] px-[10px] rounded-xl',\n large: 'h-[var(--malachite-control-height-large,42px)] gap-[12px] px-[12px] rounded-[var(--malachite-radius-xxl,14px)]',\n};\n\nconst ICON_SIZE = 15;\n\nexport interface SearchProps {\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n /** 'large' (42px) for form inputs; 'medium' (32px) for toolbars; 'small' (28px) in a table. */\n size?: SearchSize;\n variant?: SearchVariant;\n disabled?: boolean;\n autoFocus?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst Search: React.FC<SearchProps> = ({\n value,\n onChange,\n placeholder,\n size = 'large',\n variant = 'default',\n disabled = false,\n autoFocus = false,\n className = '',\n style,\n}) => {\n const [focused, setFocused] = useState(false);\n const isMuted = variant === 'muted';\n\n // Muted variant: a borderless search that sits on a surface (no shadow). Default:\n // white field with border + subtle shadow. Both keep a visible focus border.\n // The fill is the Border colour by design; the dimmed grey vanishes on a sunken page.\n const bgClass = isMuted\n ? 'bg-[var(--malachite-card-border)]'\n : 'bg-[var(--malachite-card-background)]';\n const restingBorderClass = isMuted\n ? 'border-transparent'\n : 'border-[var(--malachite-card-border)]';\n // Hover darkens the border; focus (inline below) takes precedence.\n const hoverBorderClass = disabled ? '' : 'hover:border-[var(--malachite-text-placeholder)]';\n const iconColorClass = isMuted\n ? 'text-[var(--malachite-text-secondary)]'\n : 'text-[var(--malachite-text-placeholder)]';\n const placeholderColorClass = isMuted\n ? 'placeholder:text-[var(--malachite-text-secondary)]'\n : 'placeholder:text-[var(--malachite-text-placeholder)]';\n const boxShadow = isMuted\n ? 'none'\n : focused\n ? 'var(--malachite-shadow-accent, 0px 1px 0px 0px rgba(0, 175, 102, 0.15))'\n : '0px 1px 1px 0px rgba(0, 0, 0, 0.15)';\n\n return (\n <div\n className={`w-full ${bgClass} border border-solid ${restingBorderClass} ${hoverBorderClass} transition-colors flex items-center ${SIZE_CLASSES[size]} ${disabled ? 'opacity-60 cursor-not-allowed' : ''} ${className}`}\n style={{\n boxShadow,\n borderColor: focused\n ? 'var(--malachite-control-border-hover, rgba(0, 175, 102, 0.4))'\n : undefined,\n ...style,\n }}\n >\n <SearchIcon size={ICON_SIZE} className={`${iconColorClass} shrink-0`} />\n <input\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n placeholder={placeholder}\n aria-label={placeholder ?? 'Search'}\n disabled={disabled}\n autoFocus={autoFocus}\n className={`flex-1 bg-transparent border-none outline-none ${CONTROL_TEXT_SIZE_CLASS[size]} font-medium text-[var(--malachite-text-primary)] ${placeholderColorClass} placeholder:font-medium disabled:cursor-not-allowed min-w-0`}\n />\n </div>\n );\n};\n\nexport default Search;\n"],"names":["SIZE_CLASSES","ICON_SIZE","Search","value","onChange","placeholder","size","variant","disabled","autoFocus","className","style","focused","setFocused","useState","isMuted","bgClass","restingBorderClass","hoverBorderClass","iconColorClass","placeholderColorClass","boxShadow","jsxs","jsx","SearchIcon","e","CONTROL_TEXT_SIZE_CLASS"],"mappings":";;;;AASA,MAAMA,IAA2C;AAAA,EAC7C,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACX,GAEMC,IAAY,IAeZC,IAAgC,CAAC;AAAA,EACnC,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,WAAAC,IAAY;AAAA,EACZ,OAAAC;AACJ,MAAM;AACF,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAS,EAAK,GACtCC,IAAUR,MAAY,SAKtBS,IAAUD,IACV,sCACA,yCACAE,IAAqBF,IACrB,uBACA,yCAEAG,IAAmBV,IAAW,KAAK,oDACnCW,IAAiBJ,IACjB,2CACA,4CACAK,IAAwBL,IACxB,uDACA,wDACAM,IAAYN,IACZ,SACAH,IACE,4EACA;AAER,SACI,gBAAAU;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAW,UAAUN,CAAO,wBAAwBC,CAAkB,IAAIC,CAAgB,wCAAwClB,EAAaM,CAAI,CAAC,IAAIE,IAAW,kCAAkC,EAAE,IAAIE,CAAS;AAAA,MACpN,OAAO;AAAA,QACH,WAAAW;AAAA,QACA,aAAaT,IACP,kEACA;AAAA,QACN,GAAGD;AAAA,MAAA;AAAA,MAGP,UAAA;AAAA,QAAA,gBAAAY,EAACC,KAAW,MAAMvB,GAAW,WAAW,GAAGkB,CAAc,aAAa;AAAA,QACtE,gBAAAI;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,MAAK;AAAA,YACL,OAAApB;AAAA,YACA,UAAU,CAACsB,MAAMrB,EAASqB,EAAE,OAAO,KAAK;AAAA,YACxC,SAAS,MAAMZ,EAAW,EAAI;AAAA,YAC9B,QAAQ,MAAMA,EAAW,EAAK;AAAA,YAC9B,aAAAR;AAAA,YACA,cAAYA,KAAe;AAAA,YAC3B,UAAAG;AAAA,YACA,WAAAC;AAAA,YACA,WAAW,kDAAkDiB,EAAwBpB,CAAI,CAAC,qDAAqDc,CAAqB;AAAA,UAAA;AAAA,QAAA;AAAA,MACxK;AAAA,IAAA;AAAA,EAAA;AAGZ;"}