@databiosphere/findable-ui 49.0.0 → 49.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/CHANGELOG.md +12 -0
  3. package/lib/common/ai/config/types.d.ts +22 -0
  4. package/lib/common/ai/config/types.js +1 -0
  5. package/lib/common/ai/constants.d.ts +3 -0
  6. package/lib/common/ai/constants.js +3 -0
  7. package/lib/components/Filter/components/FilterLabel/filterLabel.js +1 -1
  8. package/lib/components/Filter/components/FilterLabel/filterLabel.stories.d.ts +3 -0
  9. package/lib/components/Filter/components/FilterLabel/filterLabel.stories.js +5 -0
  10. package/lib/components/Filter/components/Filters/stories/constants.js +21 -1
  11. package/lib/components/Filter/components/SearchAllFilters/searchAllFilters.styles.js +2 -0
  12. package/lib/components/Layout/components/Sidebar/components/SidebarTools/sidebarTools.styles.d.ts +4 -0
  13. package/lib/components/Layout/components/Sidebar/components/SidebarTools/sidebarTools.styles.js +4 -0
  14. package/lib/components/common/Chip/components/Beta/beta.d.ts +10 -0
  15. package/lib/components/common/Chip/components/Beta/beta.js +12 -0
  16. package/lib/components/common/Chip/components/Beta/beta.styles.d.ts +3 -0
  17. package/lib/components/common/Chip/components/Beta/beta.styles.js +14 -0
  18. package/lib/components/common/Chip/components/Beta/stories/beta.stories.d.ts +6 -0
  19. package/lib/components/common/Chip/components/Beta/stories/beta.stories.js +6 -0
  20. package/lib/components/common/CustomIcon/components/UpArrowIcon/upArrowIcon.d.ts +6 -0
  21. package/lib/components/common/CustomIcon/components/UpArrowIcon/upArrowIcon.js +8 -0
  22. package/lib/components/common/Tabs/tabs.js +1 -1
  23. package/lib/components/common/ToggleButtonGroup/provider/context.d.ts +2 -0
  24. package/lib/components/common/ToggleButtonGroup/provider/context.js +5 -0
  25. package/lib/components/common/ToggleButtonGroup/provider/hook.d.ts +7 -0
  26. package/lib/components/common/ToggleButtonGroup/provider/hook.js +9 -0
  27. package/lib/components/common/ToggleButtonGroup/provider/provider.d.ts +12 -0
  28. package/lib/components/common/ToggleButtonGroup/provider/provider.js +22 -0
  29. package/lib/components/common/ToggleButtonGroup/provider/types.d.ts +9 -0
  30. package/lib/components/common/ToggleButtonGroup/provider/types.js +1 -0
  31. package/lib/config/entities.d.ts +2 -0
  32. package/lib/hooks/ai/useAiRoutes/hook.d.ts +6 -0
  33. package/lib/hooks/ai/useAiRoutes/hook.js +18 -0
  34. package/lib/styles/common/mui/drawer.d.ts +9 -0
  35. package/lib/styles/common/mui/drawer.js +15 -0
  36. package/lib/styles/common/mui/inputBase.d.ts +13 -0
  37. package/lib/styles/common/mui/inputBase.js +25 -0
  38. package/lib/styles/common/mui/stack.d.ts +11 -0
  39. package/lib/styles/common/mui/stack.js +22 -0
  40. package/lib/tests/testIds.d.ts +3 -0
  41. package/lib/tests/testIds.js +3 -0
  42. package/lib/views/ExploreView/entityList/filters/components/ToggleButtonGroup/toggleButtonGroup.d.ts +7 -0
  43. package/lib/views/ExploreView/entityList/filters/components/ToggleButtonGroup/toggleButtonGroup.js +18 -0
  44. package/lib/views/ExploreView/entityList/filters/components/ToggleButtonGroup/toggleButtonGroup.styles.d.ts +6 -0
  45. package/lib/views/ExploreView/entityList/filters/components/ToggleButtonGroup/toggleButtonGroup.styles.js +23 -0
  46. package/lib/views/ExploreView/entityList/filters/filters.styles.d.ts +7 -0
  47. package/lib/views/ExploreView/entityList/filters/filters.styles.js +17 -0
  48. package/lib/views/ExploreView/exploreView.js +3 -2
  49. package/lib/views/ResearchView/adapter/useAdapter.d.ts +6 -0
  50. package/lib/views/ResearchView/adapter/useAdapter.js +15 -0
  51. package/lib/views/ResearchView/assistant/assistant.d.ts +6 -0
  52. package/lib/views/ResearchView/assistant/assistant.js +18 -0
  53. package/lib/views/ResearchView/assistant/components/Drawer/drawer.d.ts +9 -0
  54. package/lib/views/ResearchView/assistant/components/Drawer/drawer.js +15 -0
  55. package/lib/views/ResearchView/assistant/components/Drawer/drawer.styles.d.ts +4 -0
  56. package/lib/views/ResearchView/assistant/components/Drawer/drawer.styles.js +21 -0
  57. package/lib/views/ResearchView/assistant/components/Drawer/types.d.ts +4 -0
  58. package/lib/views/ResearchView/assistant/components/Drawer/types.js +1 -0
  59. package/lib/views/ResearchView/assistant/components/Form/constants.d.ts +3 -0
  60. package/lib/views/ResearchView/assistant/components/Form/constants.js +3 -0
  61. package/lib/views/ResearchView/assistant/components/Form/form.d.ts +12 -0
  62. package/lib/views/ResearchView/assistant/components/Form/form.js +40 -0
  63. package/lib/views/ResearchView/assistant/components/Form/form.styles.d.ts +4 -0
  64. package/lib/views/ResearchView/assistant/components/Form/form.styles.js +7 -0
  65. package/lib/views/ResearchView/assistant/components/Form/types.d.ts +4 -0
  66. package/lib/views/ResearchView/assistant/components/Form/types.js +1 -0
  67. package/lib/views/ResearchView/assistant/components/Form/utils.d.ts +16 -0
  68. package/lib/views/ResearchView/assistant/components/Form/utils.js +41 -0
  69. package/lib/views/ResearchView/assistant/components/Input/constants.d.ts +2 -0
  70. package/lib/views/ResearchView/assistant/components/Input/constants.js +14 -0
  71. package/lib/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/constants.d.ts +7 -0
  72. package/lib/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/constants.js +7 -0
  73. package/lib/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/hook.d.ts +6 -0
  74. package/lib/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/hook.js +32 -0
  75. package/lib/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/types.d.ts +8 -0
  76. package/lib/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/types.js +1 -0
  77. package/lib/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/utils.d.ts +32 -0
  78. package/lib/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/utils.js +74 -0
  79. package/lib/views/ResearchView/assistant/components/Input/input.d.ts +9 -0
  80. package/lib/views/ResearchView/assistant/components/Input/input.js +19 -0
  81. package/lib/views/ResearchView/assistant/components/Input/input.styles.d.ts +8 -0
  82. package/lib/views/ResearchView/assistant/components/Input/input.styles.js +19 -0
  83. package/lib/views/ResearchView/assistant/components/Input/stories/input.stories.d.ts +6 -0
  84. package/lib/views/ResearchView/assistant/components/Input/stories/input.stories.js +11 -0
  85. package/lib/views/ResearchView/assistant/components/Input/types.d.ts +2 -0
  86. package/lib/views/ResearchView/assistant/components/Input/types.js +1 -0
  87. package/lib/views/ResearchView/assistant/components/Input/utils.d.ts +9 -0
  88. package/lib/views/ResearchView/assistant/components/Input/utils.js +25 -0
  89. package/lib/views/ResearchView/assistant/components/Messages/components/AssistantMessage/assistantMessage.d.ts +9 -0
  90. package/lib/views/ResearchView/assistant/components/Messages/components/AssistantMessage/assistantMessage.js +15 -0
  91. package/lib/views/ResearchView/assistant/components/Messages/components/AssistantMessage/types.d.ts +4 -0
  92. package/lib/views/ResearchView/assistant/components/Messages/components/AssistantMessage/types.js +1 -0
  93. package/lib/views/ResearchView/assistant/components/Messages/components/AssistantMessage/utils.d.ts +13 -0
  94. package/lib/views/ResearchView/assistant/components/Messages/components/AssistantMessage/utils.js +25 -0
  95. package/lib/views/ResearchView/assistant/components/Messages/components/ErrorMessage/errorMessage.d.ts +9 -0
  96. package/lib/views/ResearchView/assistant/components/Messages/components/ErrorMessage/errorMessage.js +12 -0
  97. package/lib/views/ResearchView/assistant/components/Messages/components/ErrorMessage/types.d.ts +4 -0
  98. package/lib/views/ResearchView/assistant/components/Messages/components/ErrorMessage/types.js +1 -0
  99. package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/chips.d.ts +3 -0
  100. package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/chips.js +10 -0
  101. package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/chips.styles.d.ts +3 -0
  102. package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/chips.styles.js +26 -0
  103. package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/types.d.ts +5 -0
  104. package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/types.js +1 -0
  105. package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/promptMessage.d.ts +10 -0
  106. package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/promptMessage.js +14 -0
  107. package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/types.d.ts +5 -0
  108. package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/types.js +1 -0
  109. package/lib/views/ResearchView/assistant/components/Messages/components/UserMessage/types.d.ts +4 -0
  110. package/lib/views/ResearchView/assistant/components/Messages/components/UserMessage/types.js +1 -0
  111. package/lib/views/ResearchView/assistant/components/Messages/components/UserMessage/useMessage.styles.d.ts +5 -0
  112. package/lib/views/ResearchView/assistant/components/Messages/components/UserMessage/useMessage.styles.js +10 -0
  113. package/lib/views/ResearchView/assistant/components/Messages/components/UserMessage/userMessage.d.ts +9 -0
  114. package/lib/views/ResearchView/assistant/components/Messages/components/UserMessage/userMessage.js +13 -0
  115. package/lib/views/ResearchView/assistant/components/Messages/hooks/UseScroll/hook.d.ts +7 -0
  116. package/lib/views/ResearchView/assistant/components/Messages/hooks/UseScroll/hook.js +17 -0
  117. package/lib/views/ResearchView/assistant/components/Messages/messages.d.ts +9 -0
  118. package/lib/views/ResearchView/assistant/components/Messages/messages.js +16 -0
  119. package/lib/views/ResearchView/assistant/components/Messages/messages.styles.d.ts +3 -0
  120. package/lib/views/ResearchView/assistant/components/Messages/messages.styles.js +9 -0
  121. package/lib/views/ResearchView/assistant/components/Messages/selector/messageSelector.d.ts +17 -0
  122. package/lib/views/ResearchView/assistant/components/Messages/selector/messageSelector.js +32 -0
  123. package/lib/views/ResearchView/assistant/components/Messages/selector/types.d.ts +5 -0
  124. package/lib/views/ResearchView/assistant/components/Messages/selector/types.js +1 -0
  125. package/lib/views/ResearchView/assistant/components/Messages/stories/args.d.ts +3 -0
  126. package/lib/views/ResearchView/assistant/components/Messages/stories/args.js +109 -0
  127. package/lib/views/ResearchView/assistant/components/Messages/stories/messages.stories.d.ts +6 -0
  128. package/lib/views/ResearchView/assistant/components/Messages/stories/messages.stories.js +14 -0
  129. package/lib/views/ResearchView/assistant/components/Messages/types.d.ts +4 -0
  130. package/lib/views/ResearchView/assistant/components/Messages/types.js +1 -0
  131. package/lib/views/ResearchView/assistant/components/ToggleButtonGroup/stories/toggleButtonGroup.stories.d.ts +6 -0
  132. package/lib/views/ResearchView/assistant/components/ToggleButtonGroup/stories/toggleButtonGroup.stories.js +12 -0
  133. package/lib/views/ResearchView/assistant/components/ToggleButtonGroup/toggleButtonGroup.d.ts +7 -0
  134. package/lib/views/ResearchView/assistant/components/ToggleButtonGroup/toggleButtonGroup.js +17 -0
  135. package/lib/views/ResearchView/assistant/components/ToggleButtonGroup/toggleButtonGroup.styles.d.ts +6 -0
  136. package/lib/views/ResearchView/assistant/components/ToggleButtonGroup/toggleButtonGroup.styles.js +20 -0
  137. package/lib/views/ResearchView/assistant/stories/args.d.ts +4 -0
  138. package/lib/views/ResearchView/assistant/stories/args.js +30 -0
  139. package/lib/views/ResearchView/assistant/stories/assistant.stories.d.ts +6 -0
  140. package/lib/views/ResearchView/assistant/stories/assistant.stories.js +23 -0
  141. package/lib/views/ResearchView/query/constants.d.ts +5 -0
  142. package/lib/views/ResearchView/query/constants.js +5 -0
  143. package/lib/views/ResearchView/query/fetch.d.ts +17 -0
  144. package/lib/views/ResearchView/query/fetch.js +44 -0
  145. package/lib/views/ResearchView/query/types.d.ts +31 -0
  146. package/lib/views/ResearchView/query/types.js +1 -0
  147. package/lib/views/ResearchView/query/useQuery.d.ts +7 -0
  148. package/lib/views/ResearchView/query/useQuery.js +44 -0
  149. package/lib/views/ResearchView/researchView.d.ts +10 -0
  150. package/lib/views/ResearchView/researchView.js +13 -0
  151. package/lib/views/ResearchView/state/actions/setError/action.d.ts +10 -0
  152. package/lib/views/ResearchView/state/actions/setError/action.js +17 -0
  153. package/lib/views/ResearchView/state/actions/setError/dispatch.d.ts +7 -0
  154. package/lib/views/ResearchView/state/actions/setError/dispatch.js +12 -0
  155. package/lib/views/ResearchView/state/actions/setError/types.d.ts +14 -0
  156. package/lib/views/ResearchView/state/actions/setError/types.js +1 -0
  157. package/lib/views/ResearchView/state/actions/setMessage/action.d.ts +10 -0
  158. package/lib/views/ResearchView/state/actions/setMessage/action.js +21 -0
  159. package/lib/views/ResearchView/state/actions/setMessage/dispatch.d.ts +7 -0
  160. package/lib/views/ResearchView/state/actions/setMessage/dispatch.js +12 -0
  161. package/lib/views/ResearchView/state/actions/setMessage/types.d.ts +15 -0
  162. package/lib/views/ResearchView/state/actions/setMessage/types.js +1 -0
  163. package/lib/views/ResearchView/state/actions/setQuery/action.d.ts +10 -0
  164. package/lib/views/ResearchView/state/actions/setQuery/action.js +17 -0
  165. package/lib/views/ResearchView/state/actions/setQuery/dispatch.d.ts +7 -0
  166. package/lib/views/ResearchView/state/actions/setQuery/dispatch.js +12 -0
  167. package/lib/views/ResearchView/state/actions/setQuery/types.d.ts +14 -0
  168. package/lib/views/ResearchView/state/actions/setQuery/types.js +1 -0
  169. package/lib/views/ResearchView/state/actions/setStatus/action.d.ts +10 -0
  170. package/lib/views/ResearchView/state/actions/setStatus/action.js +13 -0
  171. package/lib/views/ResearchView/state/actions/setStatus/dispatch.d.ts +7 -0
  172. package/lib/views/ResearchView/state/actions/setStatus/dispatch.js +12 -0
  173. package/lib/views/ResearchView/state/actions/setStatus/types.d.ts +14 -0
  174. package/lib/views/ResearchView/state/actions/setStatus/types.js +1 -0
  175. package/lib/views/ResearchView/state/actions/types.d.ts +17 -0
  176. package/lib/views/ResearchView/state/actions/types.js +10 -0
  177. package/lib/views/ResearchView/state/constants.d.ts +5 -0
  178. package/lib/views/ResearchView/state/constants.js +7 -0
  179. package/lib/views/ResearchView/state/context.d.ts +5 -0
  180. package/lib/views/ResearchView/state/context.js +9 -0
  181. package/lib/views/ResearchView/state/guards/guards.d.ts +33 -0
  182. package/lib/views/ResearchView/state/guards/guards.js +41 -0
  183. package/lib/views/ResearchView/state/hooks/UseChatDispatch/hook.d.ts +6 -0
  184. package/lib/views/ResearchView/state/hooks/UseChatDispatch/hook.js +26 -0
  185. package/lib/views/ResearchView/state/hooks/UseChatDispatch/types.d.ts +10 -0
  186. package/lib/views/ResearchView/state/hooks/UseChatDispatch/types.js +1 -0
  187. package/lib/views/ResearchView/state/hooks/UseChatReducer/hook.d.ts +8 -0
  188. package/lib/views/ResearchView/state/hooks/UseChatReducer/hook.js +12 -0
  189. package/lib/views/ResearchView/state/hooks/UseChatState/hook.d.ts +7 -0
  190. package/lib/views/ResearchView/state/hooks/UseChatState/hook.js +11 -0
  191. package/lib/views/ResearchView/state/initializer/initializer.d.ts +8 -0
  192. package/lib/views/ResearchView/state/initializer/initializer.js +22 -0
  193. package/lib/views/ResearchView/state/initializer/types.d.ts +2 -0
  194. package/lib/views/ResearchView/state/initializer/types.js +1 -0
  195. package/lib/views/ResearchView/state/provider.d.ts +16 -0
  196. package/lib/views/ResearchView/state/provider.js +17 -0
  197. package/lib/views/ResearchView/state/reducer.d.ts +10 -0
  198. package/lib/views/ResearchView/state/reducer.js +32 -0
  199. package/lib/views/ResearchView/state/types.d.ts +125 -0
  200. package/lib/views/ResearchView/state/types.js +22 -0
  201. package/package.json +1 -1
  202. package/src/common/ai/config/types.ts +25 -0
  203. package/src/common/ai/constants.ts +3 -0
  204. package/src/components/Filter/components/FilterLabel/filterLabel.stories.tsx +6 -0
  205. package/src/components/Filter/components/FilterLabel/filterLabel.tsx +6 -1
  206. package/src/components/Filter/components/Filters/stories/constants.ts +25 -1
  207. package/src/components/Filter/components/SearchAllFilters/searchAllFilters.styles.ts +2 -0
  208. package/src/components/Layout/components/Sidebar/components/SidebarTools/sidebarTools.styles.ts +4 -0
  209. package/src/components/common/Chip/components/Beta/beta.styles.ts +15 -0
  210. package/src/components/common/Chip/components/Beta/beta.tsx +25 -0
  211. package/src/components/common/Chip/components/Beta/stories/beta.stories.tsx +12 -0
  212. package/src/components/common/CustomIcon/components/UpArrowIcon/upArrowIcon.tsx +21 -0
  213. package/src/components/common/Tabs/tabs.tsx +5 -1
  214. package/src/components/common/ToggleButtonGroup/provider/context.ts +9 -0
  215. package/src/components/common/ToggleButtonGroup/provider/hook.ts +16 -0
  216. package/src/components/common/ToggleButtonGroup/provider/provider.tsx +37 -0
  217. package/src/components/common/ToggleButtonGroup/provider/types.ts +17 -0
  218. package/src/config/entities.ts +2 -0
  219. package/src/hooks/ai/useAiRoutes/hook.ts +22 -0
  220. package/src/styles/common/mui/drawer.ts +24 -0
  221. package/src/styles/common/mui/inputBase.ts +38 -0
  222. package/src/styles/common/mui/stack.ts +33 -0
  223. package/src/tests/testIds.ts +3 -0
  224. package/src/views/ExploreView/entityList/filters/components/ToggleButtonGroup/toggleButtonGroup.styles.ts +25 -0
  225. package/src/views/ExploreView/entityList/filters/components/ToggleButtonGroup/toggleButtonGroup.tsx +31 -0
  226. package/src/views/ExploreView/entityList/filters/filters.styles.ts +19 -0
  227. package/src/views/ExploreView/exploreView.tsx +16 -12
  228. package/src/views/ResearchView/adapter/useAdapter.ts +19 -0
  229. package/src/views/ResearchView/assistant/assistant.tsx +30 -0
  230. package/src/views/ResearchView/assistant/components/Drawer/drawer.styles.ts +24 -0
  231. package/src/views/ResearchView/assistant/components/Drawer/drawer.tsx +26 -0
  232. package/src/views/ResearchView/assistant/components/Drawer/types.ts +5 -0
  233. package/src/views/ResearchView/assistant/components/Form/constants.ts +3 -0
  234. package/src/views/ResearchView/assistant/components/Form/form.styles.ts +8 -0
  235. package/src/views/ResearchView/assistant/components/Form/form.tsx +55 -0
  236. package/src/views/ResearchView/assistant/components/Form/types.ts +11 -0
  237. package/src/views/ResearchView/assistant/components/Form/utils.ts +51 -0
  238. package/src/views/ResearchView/assistant/components/Input/constants.ts +16 -0
  239. package/src/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/constants.ts +7 -0
  240. package/src/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/hook.ts +45 -0
  241. package/src/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/types.ts +10 -0
  242. package/src/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/utils.ts +93 -0
  243. package/src/views/ResearchView/assistant/components/Input/input.styles.ts +21 -0
  244. package/src/views/ResearchView/assistant/components/Input/input.tsx +37 -0
  245. package/src/views/ResearchView/assistant/components/Input/stories/input.stories.tsx +21 -0
  246. package/src/views/ResearchView/assistant/components/Input/types.ts +3 -0
  247. package/src/views/ResearchView/assistant/components/Input/utils.ts +34 -0
  248. package/src/views/ResearchView/assistant/components/Messages/components/AssistantMessage/assistantMessage.tsx +49 -0
  249. package/src/views/ResearchView/assistant/components/Messages/components/AssistantMessage/types.ts +5 -0
  250. package/src/views/ResearchView/assistant/components/Messages/components/AssistantMessage/utils.ts +31 -0
  251. package/src/views/ResearchView/assistant/components/Messages/components/ErrorMessage/errorMessage.tsx +21 -0
  252. package/src/views/ResearchView/assistant/components/Messages/components/ErrorMessage/types.ts +5 -0
  253. package/src/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/chips.styles.ts +27 -0
  254. package/src/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/chips.tsx +31 -0
  255. package/src/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/types.ts +6 -0
  256. package/src/views/ResearchView/assistant/components/Messages/components/PromptMessage/promptMessage.tsx +26 -0
  257. package/src/views/ResearchView/assistant/components/Messages/components/PromptMessage/types.ts +6 -0
  258. package/src/views/ResearchView/assistant/components/Messages/components/UserMessage/types.ts +5 -0
  259. package/src/views/ResearchView/assistant/components/Messages/components/UserMessage/useMessage.styles.ts +11 -0
  260. package/src/views/ResearchView/assistant/components/Messages/components/UserMessage/userMessage.tsx +21 -0
  261. package/src/views/ResearchView/assistant/components/Messages/hooks/UseScroll/hook.ts +22 -0
  262. package/src/views/ResearchView/assistant/components/Messages/messages.styles.ts +10 -0
  263. package/src/views/ResearchView/assistant/components/Messages/messages.tsx +29 -0
  264. package/src/views/ResearchView/assistant/components/Messages/selector/messageSelector.tsx +37 -0
  265. package/src/views/ResearchView/assistant/components/Messages/selector/types.ts +6 -0
  266. package/src/views/ResearchView/assistant/components/Messages/stories/args.ts +115 -0
  267. package/src/views/ResearchView/assistant/components/Messages/stories/messages.stories.tsx +24 -0
  268. package/src/views/ResearchView/assistant/components/Messages/types.ts +5 -0
  269. package/src/views/ResearchView/assistant/components/ToggleButtonGroup/stories/toggleButtonGroup.stories.tsx +22 -0
  270. package/src/views/ResearchView/assistant/components/ToggleButtonGroup/toggleButtonGroup.styles.ts +22 -0
  271. package/src/views/ResearchView/assistant/components/ToggleButtonGroup/toggleButtonGroup.tsx +30 -0
  272. package/src/views/ResearchView/assistant/stories/args.ts +36 -0
  273. package/src/views/ResearchView/assistant/stories/assistant.stories.tsx +39 -0
  274. package/src/views/ResearchView/query/constants.ts +5 -0
  275. package/src/views/ResearchView/query/fetch.ts +58 -0
  276. package/src/views/ResearchView/query/types.ts +37 -0
  277. package/src/views/ResearchView/query/useQuery.ts +60 -0
  278. package/src/views/ResearchView/researchView.tsx +19 -0
  279. package/src/views/ResearchView/state/actions/setError/action.ts +22 -0
  280. package/src/views/ResearchView/state/actions/setError/dispatch.ts +14 -0
  281. package/src/views/ResearchView/state/actions/setError/types.ts +16 -0
  282. package/src/views/ResearchView/state/actions/setMessage/action.ts +26 -0
  283. package/src/views/ResearchView/state/actions/setMessage/dispatch.ts +14 -0
  284. package/src/views/ResearchView/state/actions/setMessage/types.ts +19 -0
  285. package/src/views/ResearchView/state/actions/setQuery/action.ts +22 -0
  286. package/src/views/ResearchView/state/actions/setQuery/dispatch.ts +14 -0
  287. package/src/views/ResearchView/state/actions/setQuery/types.ts +16 -0
  288. package/src/views/ResearchView/state/actions/setStatus/action.ts +19 -0
  289. package/src/views/ResearchView/state/actions/setStatus/dispatch.ts +14 -0
  290. package/src/views/ResearchView/state/actions/setStatus/types.ts +16 -0
  291. package/src/views/ResearchView/state/actions/types.ts +23 -0
  292. package/src/views/ResearchView/state/constants.ts +9 -0
  293. package/src/views/ResearchView/state/context.ts +11 -0
  294. package/src/views/ResearchView/state/guards/guards.ts +58 -0
  295. package/src/views/ResearchView/state/hooks/UseChatDispatch/hook.ts +46 -0
  296. package/src/views/ResearchView/state/hooks/UseChatDispatch/types.ts +11 -0
  297. package/src/views/ResearchView/state/hooks/UseChatReducer/hook.ts +15 -0
  298. package/src/views/ResearchView/state/hooks/UseChatState/hook.ts +14 -0
  299. package/src/views/ResearchView/state/initializer/initializer.ts +23 -0
  300. package/src/views/ResearchView/state/initializer/types.ts +3 -0
  301. package/src/views/ResearchView/state/provider.tsx +27 -0
  302. package/src/views/ResearchView/state/reducer.ts +34 -0
  303. package/src/views/ResearchView/state/types.ts +149 -0
  304. package/tests/research.assistantMessageUtils.test.ts +149 -0
  305. package/tests/research.chatState.test.ts +463 -0
  306. package/tests/research.fetchResponse.test.ts +164 -0
  307. package/tests/research.useKeyShortCuts.test.ts +254 -0
  308. package/tests/research.useQuery.test.ts +165 -0
  309. package/tests/toggleButtonGroupProvider.test.tsx +125 -0
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "49.0.0"
2
+ ".": "49.1.0"
3
3
  }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [49.1.0](https://github.com/DataBiosphere/findable-ui/compare/v49.0.0...v49.1.0) (2026-02-28)
4
+
5
+
6
+ ### Features
7
+
8
+ * add research mode with chat-driven dataset discovery ([#778](https://github.com/DataBiosphere/findable-ui/issues/778)) ([#800](https://github.com/DataBiosphere/findable-ui/issues/800)) ([a844aaf](https://github.com/DataBiosphere/findable-ui/commit/a844aaf2927c76e80e97aa2b9dd7d1929da9bdfa))
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * improve tooltip ux with delay and better placement ([#775](https://github.com/DataBiosphere/findable-ui/issues/775)) ([#776](https://github.com/DataBiosphere/findable-ui/issues/776)) ([2d60b92](https://github.com/DataBiosphere/findable-ui/commit/2d60b927f91d28eabc8177ac81aa8fb8c8107db2))
14
+
3
15
  ## [49.0.0](https://github.com/DataBiosphere/findable-ui/compare/v48.1.0...v49.0.0) (2026-02-17)
4
16
 
5
17
 
@@ -0,0 +1,22 @@
1
+ /**
2
+ * AI configuration.
3
+ */
4
+ export interface AiConfig {
5
+ enabled: boolean;
6
+ prompt?: AiPrompt;
7
+ routes: {
8
+ research: string;
9
+ search: string;
10
+ };
11
+ url: string;
12
+ }
13
+ export interface AiPrompt {
14
+ inputPlaceholder?: string;
15
+ suggestions?: AiSuggestions[];
16
+ text: string;
17
+ }
18
+ export interface AiSuggestions {
19
+ label: string;
20
+ query: string;
21
+ variant: "CHIP";
22
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare const FEATURE_FLAG: {
2
+ readonly CHAT: "chat";
3
+ };
@@ -0,0 +1,3 @@
1
+ export const FEATURE_FLAG = {
2
+ CHAT: "chat",
3
+ };
@@ -4,5 +4,5 @@ import { Tooltip } from "../../../DataDictionary/components/Tooltip/tooltip";
4
4
  import { StyledButton } from "./filterLabel.styles";
5
5
  export const FilterLabel = ({ annotation, count, disabled = false, isOpen, label, onClick, surfaceType, }) => {
6
6
  const filterLabel = count ? `${label}\xa0(${count})` : label; // When the count is present, a non-breaking space is used to prevent it from being on its own line
7
- return (_jsx(Tooltip, { description: annotation?.description, title: annotation?.label, children: _jsx(StyledButton, { color: "inherit", disabled: disabled, endIcon: _jsx(ArrowDropDownRounded, { fontSize: "small" }), fullWidth: true, isOpen: isOpen, onClick: onClick, surfaceType: surfaceType, children: filterLabel }) }));
7
+ return (_jsx(Tooltip, { description: annotation?.description, enterDelay: 300, placement: "right", title: annotation?.label, children: _jsx(StyledButton, { color: "inherit", disabled: disabled, endIcon: _jsx(ArrowDropDownRounded, { fontSize: "small" }), fullWidth: true, isOpen: isOpen, onClick: onClick, surfaceType: surfaceType, children: filterLabel }) }));
8
8
  };
@@ -3,6 +3,9 @@ import { JSX } from "react";
3
3
  import { SURFACE_TYPE } from "../surfaces/types";
4
4
  declare const meta: {
5
5
  argTypes: {
6
+ annotation: {
7
+ control: "object";
8
+ };
6
9
  count: {
7
10
  control: "number";
8
11
  };
@@ -3,6 +3,7 @@ import { SURFACE_TYPE } from "../surfaces/types";
3
3
  import { FilterLabel } from "./filterLabel";
4
4
  const meta = {
5
5
  argTypes: {
6
+ annotation: { control: "object" },
6
7
  count: { control: "number" },
7
8
  disabled: { control: "boolean" },
8
9
  isOpen: { control: "boolean" },
@@ -17,6 +18,10 @@ const meta = {
17
18
  export default meta;
18
19
  export const FilterLabelStory = {
19
20
  args: {
21
+ annotation: {
22
+ description: "This is a description of the filter label that provides additional context to the user.",
23
+ label: "Label",
24
+ },
20
25
  count: 123,
21
26
  disabled: false,
22
27
  isOpen: false,
@@ -92,6 +92,10 @@ const PROCESSED = {
92
92
  * Biological Sex select category view
93
93
  */
94
94
  export const BIOLOGICAL_SEX = {
95
+ annotation: {
96
+ description: "The biological sex of the donor organism, typically determined by chromosomal composition.",
97
+ label: "Biological Sex",
98
+ },
95
99
  key: "biologicalSex",
96
100
  label: "Biological Sex",
97
101
  values: [MALE, FEMALE],
@@ -100,6 +104,10 @@ export const BIOLOGICAL_SEX = {
100
104
  * Genus Species select category view
101
105
  */
102
106
  export const GENUS_SPECIES = {
107
+ annotation: {
108
+ description: "The scientific name of the organism from which the sample was derived.",
109
+ label: "Genus Species",
110
+ },
103
111
  key: "genusSpecies",
104
112
  label: "Genus Species",
105
113
  values: [HOMO_SAPIENS, MUS_MUSCLES],
@@ -108,7 +116,11 @@ export const GENUS_SPECIES = {
108
116
  * Donor Count range category view
109
117
  */
110
118
  export const DONOR_COUNT = {
111
- key: "Donor Count",
119
+ annotation: {
120
+ description: "The number of unique donors contributing to the dataset.",
121
+ label: "Donor Count",
122
+ },
123
+ key: "donorCount",
112
124
  label: "Donor Count",
113
125
  max: 200,
114
126
  min: 10,
@@ -119,6 +131,10 @@ export const DONOR_COUNT = {
119
131
  * File Format select category view
120
132
  */
121
133
  export const FILE_FORMAT = {
134
+ annotation: {
135
+ description: "The format of the file, such as BAM, CSV, FASTQ, or TSV, indicating how the data is structured.",
136
+ label: "File Format",
137
+ },
122
138
  key: "fileFormat",
123
139
  label: "File Format",
124
140
  values: [BAM, CSV, FASTQ, TSV],
@@ -127,6 +143,10 @@ export const FILE_FORMAT = {
127
143
  * File Type select category view
128
144
  */
129
145
  export const FILE_TYPE = {
146
+ annotation: {
147
+ description: "The type of file, indicating whether the data is raw or has been processed.",
148
+ label: "File Type",
149
+ },
130
150
  isDisabled: true,
131
151
  key: "fileType",
132
152
  label: "File Type",
@@ -2,6 +2,8 @@ import styled from "@emotion/styled";
2
2
  import { Autocomplete } from "@mui/material";
3
3
  export const StyledAutocomplete = styled(Autocomplete) `
4
4
  &.MuiAutocomplete-root {
5
+ grid-column: 1 / -1;
6
+
5
7
  .MuiOutlinedInput-root {
6
8
  padding: 0 12px;
7
9
 
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Container for sidebar tools, including the mode toggle and filter controls.
3
+ * @deprecated - This styled component is deprecated and will be removed in a future release.
4
+ */
1
5
  export declare const SidebarTools: import("@emotion/styled").StyledComponent<{
2
6
  theme?: import("@emotion/react").Theme;
3
7
  as?: React.ElementType;
@@ -1,5 +1,9 @@
1
1
  import styled from "@emotion/styled";
2
2
  import { bpUpMd } from "../../../../../../styles/common/mixins/breakpoints";
3
+ /**
4
+ * Container for sidebar tools, including the mode toggle and filter controls.
5
+ * @deprecated - This styled component is deprecated and will be removed in a future release.
6
+ */
3
7
  export const SidebarTools = styled.div `
4
8
  display: grid;
5
9
  gap: 8px 0;
@@ -0,0 +1,10 @@
1
+ import { ChipProps } from "@mui/material";
2
+ import { JSX } from "react";
3
+ import { BaseComponentProps } from "../../../../types";
4
+ /**
5
+ * Beta chip component to indicate features that are in beta.
6
+ * @param props - Component props.
7
+ * @param props.className - Classname.
8
+ * @returns Beta chip JSX element.
9
+ */
10
+ export declare const Beta: ({ className, ...props }: BaseComponentProps & ChipProps) => JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { CHIP_PROPS } from "../../../../../styles/common/mui/chip";
3
+ import { StyledChip } from "./beta.styles";
4
+ /**
5
+ * Beta chip component to indicate features that are in beta.
6
+ * @param props - Component props.
7
+ * @param props.className - Classname.
8
+ * @returns Beta chip JSX element.
9
+ */
10
+ export const Beta = ({ className, ...props }) => {
11
+ return (_jsx(StyledChip, { className: className, label: "Beta", size: CHIP_PROPS.SIZE.SMALL, ...props }));
12
+ };
@@ -0,0 +1,3 @@
1
+ export declare const StyledChip: import("@emotion/styled").StyledComponent<import("@mui/material").ChipOwnProps & import("@mui/material").ChipSlotsAndSlotProps & import("@mui/material/OverridableComponent").CommonProps & Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "size" | "label" | "style" | "className" | "classes" | "children" | "disabled" | "sx" | "tabIndex" | "color" | "variant" | "slots" | "slotProps" | "icon" | "avatar" | "clickable" | "deleteIcon" | "onDelete" | "skipFocusWhenDisabled"> & {
2
+ theme?: import("@emotion/react").Theme;
3
+ }, {}, {}>;
@@ -0,0 +1,14 @@
1
+ import styled from "@emotion/styled";
2
+ import { Chip } from "@mui/material";
3
+ import { PALETTE } from "../../../../../styles/common/constants/palette";
4
+ import { FONT } from "../../../../../styles/common/constants/font";
5
+ export const StyledChip = styled(Chip) `
6
+ background-color: ${PALETTE.PRIMARY_LIGHTEST};
7
+ border-radius: 4px;
8
+ color: ${PALETTE.PRIMARY_MAIN};
9
+
10
+ .MuiChip-label {
11
+ font: ${FONT.BODY_SMALL_500};
12
+ padding: 0 5px;
13
+ }
14
+ `;
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from "@storybook/nextjs-vite";
2
+ import { Beta } from "../beta";
3
+ declare const meta: Meta<typeof Beta>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const DEFAULT: Story;
@@ -0,0 +1,6 @@
1
+ import { Beta } from "../beta";
2
+ const meta = {
3
+ component: Beta,
4
+ };
5
+ export default meta;
6
+ export const DEFAULT = {};
@@ -0,0 +1,6 @@
1
+ import { SvgIconProps } from "@mui/material";
2
+ import { JSX } from "react";
3
+ /**
4
+ * Custom up arrow icon.
5
+ */
6
+ export declare const UpArrowIcon: ({ fontSize, viewBox, ...props }: SvgIconProps) => JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { SvgIcon } from "@mui/material";
3
+ /**
4
+ * Custom up arrow icon.
5
+ */
6
+ export const UpArrowIcon = ({ fontSize = "xsmall", viewBox = "0 0 18 18", ...props /* SvgIconProps */ }) => {
7
+ return (_jsx(SvgIcon, { fontSize: fontSize, viewBox: viewBox, ...props, children: _jsx("path", { d: "M8.24985 6.60005L6.07485 8.77505C5.93735 8.91255 5.76235 8.9813 5.54985 8.9813C5.33735 8.9813 5.16235 8.91255 5.02485 8.77505C4.88735 8.63755 4.8186 8.46255 4.8186 8.25005C4.8186 8.03755 4.88735 7.86255 5.02485 7.72505L8.47485 4.27505C8.62485 4.12505 8.79985 4.05005 8.99985 4.05005C9.19985 4.05005 9.37485 4.12505 9.52485 4.27505L12.9749 7.72505C13.1124 7.86255 13.1811 8.03755 13.1811 8.25005C13.1811 8.46255 13.1124 8.63755 12.9749 8.77505C12.8374 8.91255 12.6624 8.9813 12.4499 8.9813C12.2374 8.9813 12.0624 8.91255 11.9249 8.77505L9.74985 6.60005V12.75C9.74985 12.9625 9.67798 13.1407 9.53423 13.2844C9.39048 13.4282 9.21235 13.5 8.99985 13.5C8.78735 13.5 8.60923 13.4282 8.46548 13.2844C8.32173 13.1407 8.24985 12.9625 8.24985 12.75V6.60005Z", fill: "currentColor" }) }));
8
+ };
@@ -14,5 +14,5 @@ export const Tabs = ({ className, onTabChange, tabs, value, }) => {
14
14
  * @returns Tab label with optional count and tooltip.
15
15
  */
16
16
  function buildTabLabel(label, count, annotation) {
17
- return (_jsx(Tooltip, { description: annotation?.description, title: annotation?.label, children: _jsx("span", { children: count ? `${label} (${count})` : label }) }));
17
+ return (_jsx(Tooltip, { description: annotation?.description, enterDelay: 300, title: annotation?.label, children: _jsx("span", { children: count ? `${label} (${count})` : label }) }));
18
18
  }
@@ -0,0 +1,2 @@
1
+ import { ToggleButtonGroupContextProps } from "./types";
2
+ export declare const ToggleButtonGroupContext: import("react").Context<ToggleButtonGroupContextProps<unknown>>;
@@ -0,0 +1,5 @@
1
+ import { createContext } from "react";
2
+ export const ToggleButtonGroupContext = createContext({
3
+ onChange: undefined,
4
+ value: null,
5
+ });
@@ -0,0 +1,7 @@
1
+ import { ToggleButtonGroupProps } from "@mui/material";
2
+ import { ToggleButtonGroupContextProps } from "./types";
3
+ /**
4
+ * Returns the toggle button group context.
5
+ * @returns toggle button group context.
6
+ */
7
+ export declare const useToggleButtonGroup: <T extends ToggleButtonGroupProps["value"]>() => ToggleButtonGroupContextProps<T>;
@@ -0,0 +1,9 @@
1
+ import { useContext } from "react";
2
+ import { ToggleButtonGroupContext } from "./context";
3
+ /**
4
+ * Returns the toggle button group context.
5
+ * @returns toggle button group context.
6
+ */
7
+ export const useToggleButtonGroup = () => {
8
+ return useContext(ToggleButtonGroupContext);
9
+ };
@@ -0,0 +1,12 @@
1
+ import { ToggleButtonGroupProps } from "@mui/material";
2
+ import { JSX } from "react";
3
+ import { ToggleButtonGroupProviderProps } from "./types";
4
+ /**
5
+ * ToggleButtonGroup provider component.
6
+ * Manages toggle button group state for child components.
7
+ * @param props - Component props.
8
+ * @param props.children - Child elements to render.
9
+ * @param props.initialValue - Initial value for the toggle button group.
10
+ * @returns ToggleButtonGroup provider component.
11
+ */
12
+ export declare function ToggleButtonGroupProvider<T extends ToggleButtonGroupProps["value"]>({ children, initialValue, }: ToggleButtonGroupProviderProps<T>): JSX.Element;
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback, useState } from "react";
3
+ import { ToggleButtonGroupContext } from "./context";
4
+ /**
5
+ * ToggleButtonGroup provider component.
6
+ * Manages toggle button group state for child components.
7
+ * @param props - Component props.
8
+ * @param props.children - Child elements to render.
9
+ * @param props.initialValue - Initial value for the toggle button group.
10
+ * @returns ToggleButtonGroup provider component.
11
+ */
12
+ export function ToggleButtonGroupProvider({ children, initialValue = null, }) {
13
+ const [value, setValue] = useState(initialValue);
14
+ const onChange = useCallback((_, value) => {
15
+ if (value === null)
16
+ return;
17
+ setValue(value);
18
+ }, []);
19
+ return (_jsx(ToggleButtonGroupContext.Provider, { value: { onChange, value }, children: typeof children === "function"
20
+ ? children({ onChange, value })
21
+ : children }));
22
+ }
@@ -0,0 +1,9 @@
1
+ import { ToggleButtonGroupProps } from "@mui/material";
2
+ import { ReactNode } from "react";
3
+ export type ToggleButtonGroupContextProps<T extends ToggleButtonGroupProps["value"]> = Pick<ToggleButtonGroupProps, "onChange"> & {
4
+ value: T | null;
5
+ };
6
+ export type ToggleButtonGroupProviderProps<T extends ToggleButtonGroupProps["value"]> = {
7
+ children: ReactNode | ((props: ToggleButtonGroupContextProps<T>) => ReactNode);
8
+ initialValue?: T | null;
9
+ };
@@ -14,6 +14,7 @@ import { ProviderId } from "../providers/authentication/common/types";
14
14
  import { ExploreState } from "../providers/exploreState";
15
15
  import { FileManifestState } from "../providers/fileManifestState";
16
16
  import { SystemStatus, SystemStatusResponse } from "../providers/systemStatus";
17
+ import { AiConfig } from "../common/ai/config/types";
17
18
  /**
18
19
  * Interface to define the analytics configuration for a given site.
19
20
  */
@@ -291,6 +292,7 @@ interface TrackingConfig {
291
292
  * Interface that will hold the whole configuration for a given site.
292
293
  */
293
294
  export interface SiteConfig {
295
+ ai?: AiConfig;
294
296
  analytics?: AnalyticsConfig;
295
297
  appTitle: string;
296
298
  authentication?: AuthenticationConfig;
@@ -0,0 +1,6 @@
1
+ import { AiConfig } from "../../../common/ai/config/types";
2
+ /**
3
+ * Returns AI route configuration when the AI feature is enabled.
4
+ * @returns AI routes, or undefined if AI is not configured or enabled.
5
+ */
6
+ export declare const useAiRoutes: () => Pick<AiConfig, "routes"> | undefined;
@@ -0,0 +1,18 @@
1
+ import { FEATURE_FLAG } from "../../../common/ai/constants";
2
+ import { useConfig } from "../../useConfig";
3
+ import { useFeatureFlag } from "../../useFeatureFlag/useFeatureFlag";
4
+ /**
5
+ * Returns AI route configuration when the AI feature is enabled.
6
+ * @returns AI routes, or undefined if AI is not configured or enabled.
7
+ */
8
+ export const useAiRoutes = () => {
9
+ const flagEnabled = useFeatureFlag(FEATURE_FLAG.CHAT);
10
+ const { config } = useConfig();
11
+ const { ai } = config;
12
+ if (!ai)
13
+ return;
14
+ const { enabled, routes } = ai;
15
+ if (enabled || flagEnabled) {
16
+ return { routes };
17
+ }
18
+ };
@@ -0,0 +1,9 @@
1
+ import { DrawerProps } from "@mui/material";
2
+ type DrawerPropsOptions = {
3
+ ANCHOR: typeof ANCHOR;
4
+ VARIANT: typeof VARIANT;
5
+ };
6
+ declare const ANCHOR: Record<string, DrawerProps["anchor"]>;
7
+ declare const VARIANT: Record<string, DrawerProps["variant"]>;
8
+ export declare const DRAWER_PROPS: DrawerPropsOptions;
9
+ export {};
@@ -0,0 +1,15 @@
1
+ const ANCHOR = {
2
+ BOTTOM: "bottom",
3
+ LEFT: "left",
4
+ RIGHT: "right",
5
+ TOP: "top",
6
+ };
7
+ const VARIANT = {
8
+ PERMANENT: "permanent",
9
+ PERSISTENT: "persistent",
10
+ TEMPORARY: "temporary",
11
+ };
12
+ export const DRAWER_PROPS = {
13
+ ANCHOR,
14
+ VARIANT,
15
+ };
@@ -0,0 +1,13 @@
1
+ import { InputBaseProps } from "@mui/material";
2
+ type InputBasePropsOptions = {
3
+ COLOR: typeof COLOR;
4
+ MARGIN: typeof MARGIN;
5
+ SIZE: typeof SIZE;
6
+ TYPE: typeof TYPE;
7
+ };
8
+ declare const COLOR: Record<string, InputBaseProps["color"]>;
9
+ declare const MARGIN: Record<string, InputBaseProps["margin"]>;
10
+ declare const SIZE: Record<string, InputBaseProps["size"]>;
11
+ declare const TYPE: Record<string, InputBaseProps["type"]>;
12
+ export declare const INPUT_BASE_PROPS: InputBasePropsOptions;
13
+ export {};
@@ -0,0 +1,25 @@
1
+ const COLOR = {
2
+ ERROR: "error",
3
+ INFO: "info",
4
+ PRIMARY: "primary",
5
+ SECONDARY: "secondary",
6
+ SUCCESS: "success",
7
+ WARNING: "warning",
8
+ };
9
+ const MARGIN = {
10
+ DENSE: "dense",
11
+ NONE: "none",
12
+ };
13
+ const SIZE = {
14
+ MEDIUM: "medium",
15
+ SMALL: "small",
16
+ };
17
+ const TYPE = {
18
+ TEXT: "text",
19
+ };
20
+ export const INPUT_BASE_PROPS = {
21
+ COLOR,
22
+ MARGIN,
23
+ SIZE,
24
+ TYPE,
25
+ };
@@ -0,0 +1,11 @@
1
+ import { StackProps } from "@mui/material";
2
+ type StackPropsOptions = {
3
+ ALIGN_ITEMS: typeof ALIGN_ITEMS;
4
+ DIRECTION: typeof DIRECTION;
5
+ FLEX_WRAP: typeof FLEX_WRAP;
6
+ };
7
+ declare const ALIGN_ITEMS: Record<string, StackProps["alignItems"]>;
8
+ declare const DIRECTION: Record<string, StackProps["direction"]>;
9
+ declare const FLEX_WRAP: Record<string, StackProps["flexWrap"]>;
10
+ export declare const STACK_PROPS: StackPropsOptions;
11
+ export {};
@@ -0,0 +1,22 @@
1
+ const ALIGN_ITEMS = {
2
+ BASELINE: "baseline",
3
+ CENTER: "center",
4
+ FLEX_END: "flex-end",
5
+ FLEX_START: "flex-start",
6
+ STRETCH: "stretch",
7
+ };
8
+ const DIRECTION = {
9
+ COLUMN: "column",
10
+ COLUMN_REVERSE: "column-reverse",
11
+ ROW: "row",
12
+ ROW_REVERSE: "row-reverse",
13
+ };
14
+ const FLEX_WRAP = {
15
+ WRAP: "wrap",
16
+ WRAP_REVERSE: "wrap-reverse",
17
+ };
18
+ export const STACK_PROPS = {
19
+ ALIGN_ITEMS,
20
+ DIRECTION,
21
+ FLEX_WRAP,
22
+ };
@@ -12,7 +12,10 @@ export declare const TEST_IDS: {
12
12
  FILTER_SORT_BUTTON: string;
13
13
  FILTER_SORT_MENU: string;
14
14
  FILTER_TERM: string;
15
+ RESEARCH_FORM: string;
16
+ RESEARCH_PANEL: string;
15
17
  SEARCH_ALL_FILTERS: string;
18
+ SEARCH_PANEL: string;
16
19
  SIDEBAR: string;
17
20
  SIDEBAR_DRAWER: string;
18
21
  TABLE_FIRST_CELL: string;
@@ -12,7 +12,10 @@ export const TEST_IDS = {
12
12
  FILTER_SORT_BUTTON: "filter-sort-button",
13
13
  FILTER_SORT_MENU: "filter-sort-menu",
14
14
  FILTER_TERM: "filter-term",
15
+ RESEARCH_FORM: "research-form",
16
+ RESEARCH_PANEL: "research-panel",
15
17
  SEARCH_ALL_FILTERS: "search-all-filters",
18
+ SEARCH_PANEL: "search-panel",
16
19
  SIDEBAR: "sidebar",
17
20
  SIDEBAR_DRAWER: "sidebar-drawer",
18
21
  TABLE_FIRST_CELL: "table-first-cell",
@@ -0,0 +1,7 @@
1
+ import { JSX } from "react";
2
+ /**
3
+ * ToggleButtonGroup component for navigating to ResearchView.
4
+ * Only navigates to ResearchView when the "Research" button is clicked, otherwise remains on ExploreView.
5
+ * @returns ToggleButtonGroup JSX element.
6
+ */
7
+ export declare const ToggleButtonGroup: () => JSX.Element | null;
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ToggleButton } from "@mui/material";
3
+ import { StyledBox } from "./toggleButtonGroup.styles";
4
+ import Link from "next/link";
5
+ import { useAiRoutes } from "../../../../../../hooks/ai/useAiRoutes/hook";
6
+ import { StyledToggleButtonGroup } from "./toggleButtonGroup.styles";
7
+ import { Beta } from "../../../../../../components/common/Chip/components/Beta/beta";
8
+ /**
9
+ * ToggleButtonGroup component for navigating to ResearchView.
10
+ * Only navigates to ResearchView when the "Research" button is clicked, otherwise remains on ExploreView.
11
+ * @returns ToggleButtonGroup JSX element.
12
+ */
13
+ export const ToggleButtonGroup = () => {
14
+ const { routes } = useAiRoutes() || {};
15
+ if (!routes)
16
+ return null;
17
+ return (_jsx(StyledBox, { children: _jsxs(StyledToggleButtonGroup, { exclusive: true, children: [_jsxs(ToggleButton, { component: Link, href: routes.research, value: "research", children: ["Research ", _jsx(Beta, {})] }), _jsx(ToggleButton, { selected: true, value: "search", children: "Search" })] }) }));
18
+ };
@@ -0,0 +1,6 @@
1
+ export declare const StyledBox: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & {
2
+ theme?: import("@emotion/react").Theme;
3
+ }, {}, {}>;
4
+ export declare const StyledToggleButtonGroup: import("@emotion/styled").StyledComponent<import("@mui/material").ToggleButtonGroupProps & {
5
+ theme?: import("@emotion/react").Theme;
6
+ }, {}, {}>;
@@ -0,0 +1,23 @@
1
+ import styled from "@emotion/styled";
2
+ import { Box, ToggleButtonGroup } from "@mui/material";
3
+ import { bpDownMd } from "../../../../../../styles/common/mixins/breakpoints";
4
+ import { PALETTE } from "../../../../../../styles/common/constants/palette";
5
+ export const StyledBox = styled(Box) `
6
+ margin-bottom: -16px;
7
+ padding: 16px;
8
+
9
+ ${bpDownMd} {
10
+ margin-bottom: 0;
11
+ }
12
+ `;
13
+ export const StyledToggleButtonGroup = styled(ToggleButtonGroup) `
14
+ .MuiToggleButton-root {
15
+ gap: 4px;
16
+ padding: 6px 16px;
17
+ text-transform: none;
18
+
19
+ &.Mui-disabled {
20
+ color: ${PALETTE.INK_LIGHT};
21
+ }
22
+ }
23
+ `;
@@ -0,0 +1,7 @@
1
+ export declare const StyledStack: import("@emotion/styled").StyledComponent<import("@mui/material").StackOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import("@mui/material/OverridableComponent").CommonProps | keyof import("@mui/material").StackOwnProps> & {
2
+ theme?: import("@emotion/react").Theme;
3
+ }, {}, {}>;
4
+ export declare const StyledGrid: import("@emotion/styled").StyledComponent<{
5
+ theme?: import("@emotion/react").Theme;
6
+ as?: React.ElementType;
7
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
@@ -0,0 +1,17 @@
1
+ import styled from "@emotion/styled";
2
+ import { Stack } from "@mui/material";
3
+ import { bpDownMd } from "../../../../styles/common/mixins/breakpoints";
4
+ export const StyledStack = styled(Stack) `
5
+ gap: 8px;
6
+ margin: 16px 0;
7
+ padding: 0 16px;
8
+
9
+ ${bpDownMd} {
10
+ margin: 8px 0;
11
+ }
12
+ `;
13
+ export const StyledGrid = styled.div `
14
+ display: grid;
15
+ gap: 16px;
16
+ grid-template-columns: 1fr auto;
17
+ `;