@databiosphere/findable-ui 48.1.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.
- package/.github/workflows/release-please.yml +0 -22
- package/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +39 -0
- package/backend/main.py +0 -1
- package/lib/common/ai/config/types.d.ts +22 -0
- package/lib/common/ai/config/types.js +1 -0
- package/lib/common/ai/constants.d.ts +3 -0
- package/lib/common/ai/constants.js +3 -0
- package/lib/common/categories/config/types.d.ts +2 -1
- package/lib/common/chart/sort/constants.d.ts +5 -0
- package/lib/common/chart/sort/constants.js +9 -0
- package/lib/common/chart/sort/types.d.ts +16 -0
- package/lib/common/chart/sort/types.js +8 -0
- package/lib/common/chart/sort/utils.d.ts +7 -0
- package/lib/common/chart/sort/utils.js +19 -0
- package/lib/common/chart/types.d.ts +5 -0
- package/lib/common/chart/types.js +1 -0
- package/lib/common/entities.d.ts +2 -1
- package/lib/components/Export/components/DownloadCurlCommand/downloadCurlCommand.d.ts +0 -2
- package/lib/components/Export/components/ExportToTerra/exportToTerra.d.ts +0 -2
- package/lib/components/Export/components/ManifestDownload/components/ManifestDownloadEntity/manifestDownloadEntity.d.ts +0 -2
- package/lib/components/Export/components/ManifestDownload/manifestDownload.d.ts +0 -2
- package/lib/components/Filter/components/FilterLabel/filterLabel.js +1 -1
- package/lib/components/Filter/components/FilterLabel/filterLabel.stories.d.ts +3 -0
- package/lib/components/Filter/components/FilterLabel/filterLabel.stories.js +5 -0
- package/lib/components/Filter/components/Filters/stories/constants.js +21 -1
- package/lib/components/Filter/components/SearchAllFilters/searchAllFilters.styles.js +2 -0
- package/lib/components/Filter/components/adapters/tanstack/ColumnFiltersAdapter/utils.js +1 -1
- package/lib/components/Index/components/EntityView/components/views/ChartView/chartView.js +2 -1
- package/lib/components/Index/components/EntityView/components/views/ChartView/components/Chart/hooks/UsePlotOptions/hook.js +2 -7
- package/lib/components/Index/components/EntityView/components/views/ChartView/components/Chart/stories/args.js +12 -12
- package/lib/components/Index/components/EntityView/components/views/ChartView/stories/args.js +3 -3
- package/lib/components/Index/components/EntityView/components/views/ChartView/utils.js +1 -1
- package/lib/components/Layout/components/Sidebar/components/SidebarTools/sidebarTools.styles.d.ts +4 -0
- package/lib/components/Layout/components/Sidebar/components/SidebarTools/sidebarTools.styles.js +4 -0
- package/lib/components/common/Chip/components/Beta/beta.d.ts +10 -0
- package/lib/components/common/Chip/components/Beta/beta.js +12 -0
- package/lib/components/common/Chip/components/Beta/beta.styles.d.ts +3 -0
- package/lib/components/common/Chip/components/Beta/beta.styles.js +14 -0
- package/lib/components/common/Chip/components/Beta/stories/beta.stories.d.ts +6 -0
- package/lib/components/common/Chip/components/Beta/stories/beta.stories.js +6 -0
- package/lib/components/common/CustomIcon/components/UpArrowIcon/upArrowIcon.d.ts +6 -0
- package/lib/components/common/CustomIcon/components/UpArrowIcon/upArrowIcon.js +8 -0
- package/lib/components/common/Tabs/tabs.js +1 -1
- package/lib/components/common/ToggleButtonGroup/provider/context.d.ts +2 -0
- package/lib/components/common/ToggleButtonGroup/provider/context.js +5 -0
- package/lib/components/common/ToggleButtonGroup/provider/hook.d.ts +7 -0
- package/lib/components/common/ToggleButtonGroup/provider/hook.js +9 -0
- package/lib/components/common/ToggleButtonGroup/provider/provider.d.ts +12 -0
- package/lib/components/common/ToggleButtonGroup/provider/provider.js +22 -0
- package/lib/components/common/ToggleButtonGroup/provider/types.d.ts +9 -0
- package/lib/components/common/ToggleButtonGroup/provider/types.js +1 -0
- package/lib/config/entities.d.ts +2 -0
- package/lib/hooks/ai/useAiRoutes/hook.d.ts +6 -0
- package/lib/hooks/ai/useAiRoutes/hook.js +18 -0
- package/lib/hooks/useCategoryFilter.js +1 -1
- package/lib/hooks/useFileManifest/common/entities.d.ts +0 -9
- package/lib/hooks/useFileManifest/common/entities.js +1 -9
- package/lib/styles/common/mui/drawer.d.ts +9 -0
- package/lib/styles/common/mui/drawer.js +15 -0
- package/lib/styles/common/mui/inputBase.d.ts +13 -0
- package/lib/styles/common/mui/inputBase.js +25 -0
- package/lib/styles/common/mui/stack.d.ts +11 -0
- package/lib/styles/common/mui/stack.js +22 -0
- package/lib/tests/testIds.d.ts +3 -0
- package/lib/tests/testIds.js +3 -0
- package/lib/views/EntityDetailView/entityDetailView.js +2 -2
- package/lib/views/ExploreView/entityList/filters/components/ToggleButtonGroup/toggleButtonGroup.d.ts +7 -0
- package/lib/views/ExploreView/entityList/filters/components/ToggleButtonGroup/toggleButtonGroup.js +18 -0
- package/lib/views/ExploreView/entityList/filters/components/ToggleButtonGroup/toggleButtonGroup.styles.d.ts +6 -0
- package/lib/views/ExploreView/entityList/filters/components/ToggleButtonGroup/toggleButtonGroup.styles.js +23 -0
- package/lib/views/ExploreView/entityList/filters/filters.styles.d.ts +7 -0
- package/lib/views/ExploreView/entityList/filters/filters.styles.js +17 -0
- package/lib/views/ExploreView/exploreView.js +3 -2
- package/lib/views/ResearchView/adapter/useAdapter.d.ts +6 -0
- package/lib/views/ResearchView/adapter/useAdapter.js +15 -0
- package/lib/views/ResearchView/assistant/assistant.d.ts +6 -0
- package/lib/views/ResearchView/assistant/assistant.js +18 -0
- package/lib/views/ResearchView/assistant/components/Drawer/drawer.d.ts +9 -0
- package/lib/views/ResearchView/assistant/components/Drawer/drawer.js +15 -0
- package/lib/views/ResearchView/assistant/components/Drawer/drawer.styles.d.ts +4 -0
- package/lib/views/ResearchView/assistant/components/Drawer/drawer.styles.js +21 -0
- package/lib/views/ResearchView/assistant/components/Drawer/types.d.ts +4 -0
- package/lib/views/ResearchView/assistant/components/Drawer/types.js +1 -0
- package/lib/views/ResearchView/assistant/components/Form/constants.d.ts +3 -0
- package/lib/views/ResearchView/assistant/components/Form/constants.js +3 -0
- package/lib/views/ResearchView/assistant/components/Form/form.d.ts +12 -0
- package/lib/views/ResearchView/assistant/components/Form/form.js +40 -0
- package/lib/views/ResearchView/assistant/components/Form/form.styles.d.ts +4 -0
- package/lib/views/ResearchView/assistant/components/Form/form.styles.js +7 -0
- package/lib/views/ResearchView/assistant/components/Form/types.d.ts +4 -0
- package/lib/views/ResearchView/assistant/components/Form/types.js +1 -0
- package/lib/views/ResearchView/assistant/components/Form/utils.d.ts +16 -0
- package/lib/views/ResearchView/assistant/components/Form/utils.js +41 -0
- package/lib/views/ResearchView/assistant/components/Input/constants.d.ts +2 -0
- package/lib/views/ResearchView/assistant/components/Input/constants.js +14 -0
- package/lib/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/constants.d.ts +7 -0
- package/lib/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/constants.js +7 -0
- package/lib/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/hook.d.ts +6 -0
- package/lib/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/hook.js +32 -0
- package/lib/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/types.d.ts +8 -0
- package/lib/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/types.js +1 -0
- package/lib/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/utils.d.ts +32 -0
- package/lib/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/utils.js +74 -0
- package/lib/views/ResearchView/assistant/components/Input/input.d.ts +9 -0
- package/lib/views/ResearchView/assistant/components/Input/input.js +19 -0
- package/lib/views/ResearchView/assistant/components/Input/input.styles.d.ts +8 -0
- package/lib/views/ResearchView/assistant/components/Input/input.styles.js +19 -0
- package/lib/views/ResearchView/assistant/components/Input/stories/input.stories.d.ts +6 -0
- package/lib/views/ResearchView/assistant/components/Input/stories/input.stories.js +11 -0
- package/lib/views/ResearchView/assistant/components/Input/types.d.ts +2 -0
- package/lib/views/ResearchView/assistant/components/Input/types.js +1 -0
- package/lib/views/ResearchView/assistant/components/Input/utils.d.ts +9 -0
- package/lib/views/ResearchView/assistant/components/Input/utils.js +25 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/AssistantMessage/assistantMessage.d.ts +9 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/AssistantMessage/assistantMessage.js +15 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/AssistantMessage/types.d.ts +4 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/AssistantMessage/types.js +1 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/AssistantMessage/utils.d.ts +13 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/AssistantMessage/utils.js +25 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/ErrorMessage/errorMessage.d.ts +9 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/ErrorMessage/errorMessage.js +12 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/ErrorMessage/types.d.ts +4 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/ErrorMessage/types.js +1 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/chips.d.ts +3 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/chips.js +10 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/chips.styles.d.ts +3 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/chips.styles.js +26 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/types.d.ts +5 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/types.js +1 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/promptMessage.d.ts +10 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/promptMessage.js +14 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/types.d.ts +5 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/PromptMessage/types.js +1 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/UserMessage/types.d.ts +4 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/UserMessage/types.js +1 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/UserMessage/useMessage.styles.d.ts +5 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/UserMessage/useMessage.styles.js +10 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/UserMessage/userMessage.d.ts +9 -0
- package/lib/views/ResearchView/assistant/components/Messages/components/UserMessage/userMessage.js +13 -0
- package/lib/views/ResearchView/assistant/components/Messages/hooks/UseScroll/hook.d.ts +7 -0
- package/lib/views/ResearchView/assistant/components/Messages/hooks/UseScroll/hook.js +17 -0
- package/lib/views/ResearchView/assistant/components/Messages/messages.d.ts +9 -0
- package/lib/views/ResearchView/assistant/components/Messages/messages.js +16 -0
- package/lib/views/ResearchView/assistant/components/Messages/messages.styles.d.ts +3 -0
- package/lib/views/ResearchView/assistant/components/Messages/messages.styles.js +9 -0
- package/lib/views/ResearchView/assistant/components/Messages/selector/messageSelector.d.ts +17 -0
- package/lib/views/ResearchView/assistant/components/Messages/selector/messageSelector.js +32 -0
- package/lib/views/ResearchView/assistant/components/Messages/selector/types.d.ts +5 -0
- package/lib/views/ResearchView/assistant/components/Messages/selector/types.js +1 -0
- package/lib/views/ResearchView/assistant/components/Messages/stories/args.d.ts +3 -0
- package/lib/views/ResearchView/assistant/components/Messages/stories/args.js +109 -0
- package/lib/views/ResearchView/assistant/components/Messages/stories/messages.stories.d.ts +6 -0
- package/lib/views/ResearchView/assistant/components/Messages/stories/messages.stories.js +14 -0
- package/lib/views/ResearchView/assistant/components/Messages/types.d.ts +4 -0
- package/lib/views/ResearchView/assistant/components/Messages/types.js +1 -0
- package/lib/views/ResearchView/assistant/components/ToggleButtonGroup/stories/toggleButtonGroup.stories.d.ts +6 -0
- package/lib/views/ResearchView/assistant/components/ToggleButtonGroup/stories/toggleButtonGroup.stories.js +12 -0
- package/lib/views/ResearchView/assistant/components/ToggleButtonGroup/toggleButtonGroup.d.ts +7 -0
- package/lib/views/ResearchView/assistant/components/ToggleButtonGroup/toggleButtonGroup.js +17 -0
- package/lib/views/ResearchView/assistant/components/ToggleButtonGroup/toggleButtonGroup.styles.d.ts +6 -0
- package/lib/views/ResearchView/assistant/components/ToggleButtonGroup/toggleButtonGroup.styles.js +20 -0
- package/lib/views/ResearchView/assistant/stories/args.d.ts +4 -0
- package/lib/views/ResearchView/assistant/stories/args.js +30 -0
- package/lib/views/ResearchView/assistant/stories/assistant.stories.d.ts +6 -0
- package/lib/views/ResearchView/assistant/stories/assistant.stories.js +23 -0
- package/lib/views/ResearchView/query/constants.d.ts +5 -0
- package/lib/views/ResearchView/query/constants.js +5 -0
- package/lib/views/ResearchView/query/fetch.d.ts +17 -0
- package/lib/views/ResearchView/query/fetch.js +44 -0
- package/lib/views/ResearchView/query/types.d.ts +31 -0
- package/lib/views/ResearchView/query/types.js +1 -0
- package/lib/views/ResearchView/query/useQuery.d.ts +7 -0
- package/lib/views/ResearchView/query/useQuery.js +44 -0
- package/lib/views/ResearchView/researchView.d.ts +10 -0
- package/lib/views/ResearchView/researchView.js +13 -0
- package/lib/views/ResearchView/state/actions/setError/action.d.ts +10 -0
- package/lib/views/ResearchView/state/actions/setError/action.js +17 -0
- package/lib/views/ResearchView/state/actions/setError/dispatch.d.ts +7 -0
- package/lib/views/ResearchView/state/actions/setError/dispatch.js +12 -0
- package/lib/views/ResearchView/state/actions/setError/types.d.ts +14 -0
- package/lib/views/ResearchView/state/actions/setError/types.js +1 -0
- package/lib/views/ResearchView/state/actions/setMessage/action.d.ts +10 -0
- package/lib/views/ResearchView/state/actions/setMessage/action.js +21 -0
- package/lib/views/ResearchView/state/actions/setMessage/dispatch.d.ts +7 -0
- package/lib/views/ResearchView/state/actions/setMessage/dispatch.js +12 -0
- package/lib/views/ResearchView/state/actions/setMessage/types.d.ts +15 -0
- package/lib/views/ResearchView/state/actions/setMessage/types.js +1 -0
- package/lib/views/ResearchView/state/actions/setQuery/action.d.ts +10 -0
- package/lib/views/ResearchView/state/actions/setQuery/action.js +17 -0
- package/lib/views/ResearchView/state/actions/setQuery/dispatch.d.ts +7 -0
- package/lib/views/ResearchView/state/actions/setQuery/dispatch.js +12 -0
- package/lib/views/ResearchView/state/actions/setQuery/types.d.ts +14 -0
- package/lib/views/ResearchView/state/actions/setQuery/types.js +1 -0
- package/lib/views/ResearchView/state/actions/setStatus/action.d.ts +10 -0
- package/lib/views/ResearchView/state/actions/setStatus/action.js +13 -0
- package/lib/views/ResearchView/state/actions/setStatus/dispatch.d.ts +7 -0
- package/lib/views/ResearchView/state/actions/setStatus/dispatch.js +12 -0
- package/lib/views/ResearchView/state/actions/setStatus/types.d.ts +14 -0
- package/lib/views/ResearchView/state/actions/setStatus/types.js +1 -0
- package/lib/views/ResearchView/state/actions/types.d.ts +17 -0
- package/lib/views/ResearchView/state/actions/types.js +10 -0
- package/lib/views/ResearchView/state/constants.d.ts +5 -0
- package/lib/views/ResearchView/state/constants.js +7 -0
- package/lib/views/ResearchView/state/context.d.ts +5 -0
- package/lib/views/ResearchView/state/context.js +9 -0
- package/lib/views/ResearchView/state/guards/guards.d.ts +33 -0
- package/lib/views/ResearchView/state/guards/guards.js +41 -0
- package/lib/views/ResearchView/state/hooks/UseChatDispatch/hook.d.ts +6 -0
- package/lib/views/ResearchView/state/hooks/UseChatDispatch/hook.js +26 -0
- package/lib/views/ResearchView/state/hooks/UseChatDispatch/types.d.ts +10 -0
- package/lib/views/ResearchView/state/hooks/UseChatDispatch/types.js +1 -0
- package/lib/views/ResearchView/state/hooks/UseChatReducer/hook.d.ts +8 -0
- package/lib/views/ResearchView/state/hooks/UseChatReducer/hook.js +12 -0
- package/lib/views/ResearchView/state/hooks/UseChatState/hook.d.ts +7 -0
- package/lib/views/ResearchView/state/hooks/UseChatState/hook.js +11 -0
- package/lib/views/ResearchView/state/initializer/initializer.d.ts +8 -0
- package/lib/views/ResearchView/state/initializer/initializer.js +22 -0
- package/lib/views/ResearchView/state/initializer/types.d.ts +2 -0
- package/lib/views/ResearchView/state/initializer/types.js +1 -0
- package/lib/views/ResearchView/state/provider.d.ts +16 -0
- package/lib/views/ResearchView/state/provider.js +17 -0
- package/lib/views/ResearchView/state/reducer.d.ts +10 -0
- package/lib/views/ResearchView/state/reducer.js +32 -0
- package/lib/views/ResearchView/state/types.d.ts +125 -0
- package/lib/views/ResearchView/state/types.js +22 -0
- package/package.json +1 -1
- package/src/common/ai/config/types.ts +25 -0
- package/src/common/ai/constants.ts +3 -0
- package/src/common/categories/config/types.ts +2 -1
- package/src/common/chart/sort/constants.ts +13 -0
- package/src/common/chart/sort/types.ts +22 -0
- package/src/common/chart/sort/utils.ts +22 -0
- package/src/common/chart/types.ts +6 -0
- package/src/common/entities.ts +2 -1
- package/src/components/Export/components/DownloadCurlCommand/downloadCurlCommand.tsx +0 -2
- package/src/components/Export/components/ExportToTerra/exportToTerra.tsx +0 -2
- package/src/components/Export/components/ManifestDownload/components/ManifestDownloadEntity/manifestDownloadEntity.tsx +0 -2
- package/src/components/Export/components/ManifestDownload/manifestDownload.tsx +0 -2
- package/src/components/Filter/components/FilterLabel/filterLabel.stories.tsx +6 -0
- package/src/components/Filter/components/FilterLabel/filterLabel.tsx +6 -1
- package/src/components/Filter/components/Filters/stories/constants.ts +25 -1
- package/src/components/Filter/components/SearchAllFilters/searchAllFilters.styles.ts +2 -0
- package/src/components/Filter/components/adapters/tanstack/ColumnFiltersAdapter/utils.ts +1 -1
- package/src/components/Index/components/EntityView/components/views/ChartView/chartView.tsx +8 -2
- package/src/components/Index/components/EntityView/components/views/ChartView/components/Chart/hooks/UsePlotOptions/hook.ts +2 -7
- package/src/components/Index/components/EntityView/components/views/ChartView/components/Chart/stories/args.ts +12 -12
- package/src/components/Index/components/EntityView/components/views/ChartView/stories/args.ts +3 -3
- package/src/components/Index/components/EntityView/components/views/ChartView/utils.ts +1 -1
- package/src/components/Layout/components/Sidebar/components/SidebarTools/sidebarTools.styles.ts +4 -0
- package/src/components/common/Chip/components/Beta/beta.styles.ts +15 -0
- package/src/components/common/Chip/components/Beta/beta.tsx +25 -0
- package/src/components/common/Chip/components/Beta/stories/beta.stories.tsx +12 -0
- package/src/components/common/CustomIcon/components/UpArrowIcon/upArrowIcon.tsx +21 -0
- package/src/components/common/Tabs/tabs.tsx +5 -1
- package/src/components/common/ToggleButtonGroup/provider/context.ts +9 -0
- package/src/components/common/ToggleButtonGroup/provider/hook.ts +16 -0
- package/src/components/common/ToggleButtonGroup/provider/provider.tsx +37 -0
- package/src/components/common/ToggleButtonGroup/provider/types.ts +17 -0
- package/src/config/entities.ts +2 -0
- package/src/hooks/ai/useAiRoutes/hook.ts +22 -0
- package/src/hooks/useCategoryFilter.ts +1 -1
- package/src/hooks/useFileManifest/common/entities.ts +0 -11
- package/src/styles/common/mui/drawer.ts +24 -0
- package/src/styles/common/mui/inputBase.ts +38 -0
- package/src/styles/common/mui/stack.ts +33 -0
- package/src/tests/testIds.ts +3 -0
- package/src/views/EntityDetailView/entityDetailView.tsx +1 -3
- package/src/views/ExploreView/entityList/filters/components/ToggleButtonGroup/toggleButtonGroup.styles.ts +25 -0
- package/src/views/ExploreView/entityList/filters/components/ToggleButtonGroup/toggleButtonGroup.tsx +31 -0
- package/src/views/ExploreView/entityList/filters/filters.styles.ts +19 -0
- package/src/views/ExploreView/exploreView.tsx +16 -12
- package/src/views/ResearchView/adapter/useAdapter.ts +19 -0
- package/src/views/ResearchView/assistant/assistant.tsx +30 -0
- package/src/views/ResearchView/assistant/components/Drawer/drawer.styles.ts +24 -0
- package/src/views/ResearchView/assistant/components/Drawer/drawer.tsx +26 -0
- package/src/views/ResearchView/assistant/components/Drawer/types.ts +5 -0
- package/src/views/ResearchView/assistant/components/Form/constants.ts +3 -0
- package/src/views/ResearchView/assistant/components/Form/form.styles.ts +8 -0
- package/src/views/ResearchView/assistant/components/Form/form.tsx +55 -0
- package/src/views/ResearchView/assistant/components/Form/types.ts +11 -0
- package/src/views/ResearchView/assistant/components/Form/utils.ts +51 -0
- package/src/views/ResearchView/assistant/components/Input/constants.ts +16 -0
- package/src/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/constants.ts +7 -0
- package/src/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/hook.ts +45 -0
- package/src/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/types.ts +10 -0
- package/src/views/ResearchView/assistant/components/Input/hooks/UseKeyShortCuts/utils.ts +93 -0
- package/src/views/ResearchView/assistant/components/Input/input.styles.ts +21 -0
- package/src/views/ResearchView/assistant/components/Input/input.tsx +37 -0
- package/src/views/ResearchView/assistant/components/Input/stories/input.stories.tsx +21 -0
- package/src/views/ResearchView/assistant/components/Input/types.ts +3 -0
- package/src/views/ResearchView/assistant/components/Input/utils.ts +34 -0
- package/src/views/ResearchView/assistant/components/Messages/components/AssistantMessage/assistantMessage.tsx +49 -0
- package/src/views/ResearchView/assistant/components/Messages/components/AssistantMessage/types.ts +5 -0
- package/src/views/ResearchView/assistant/components/Messages/components/AssistantMessage/utils.ts +31 -0
- package/src/views/ResearchView/assistant/components/Messages/components/ErrorMessage/errorMessage.tsx +21 -0
- package/src/views/ResearchView/assistant/components/Messages/components/ErrorMessage/types.ts +5 -0
- package/src/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/chips.styles.ts +27 -0
- package/src/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/chips.tsx +31 -0
- package/src/views/ResearchView/assistant/components/Messages/components/PromptMessage/components/Chips/types.ts +6 -0
- package/src/views/ResearchView/assistant/components/Messages/components/PromptMessage/promptMessage.tsx +26 -0
- package/src/views/ResearchView/assistant/components/Messages/components/PromptMessage/types.ts +6 -0
- package/src/views/ResearchView/assistant/components/Messages/components/UserMessage/types.ts +5 -0
- package/src/views/ResearchView/assistant/components/Messages/components/UserMessage/useMessage.styles.ts +11 -0
- package/src/views/ResearchView/assistant/components/Messages/components/UserMessage/userMessage.tsx +21 -0
- package/src/views/ResearchView/assistant/components/Messages/hooks/UseScroll/hook.ts +22 -0
- package/src/views/ResearchView/assistant/components/Messages/messages.styles.ts +10 -0
- package/src/views/ResearchView/assistant/components/Messages/messages.tsx +29 -0
- package/src/views/ResearchView/assistant/components/Messages/selector/messageSelector.tsx +37 -0
- package/src/views/ResearchView/assistant/components/Messages/selector/types.ts +6 -0
- package/src/views/ResearchView/assistant/components/Messages/stories/args.ts +115 -0
- package/src/views/ResearchView/assistant/components/Messages/stories/messages.stories.tsx +24 -0
- package/src/views/ResearchView/assistant/components/Messages/types.ts +5 -0
- package/src/views/ResearchView/assistant/components/ToggleButtonGroup/stories/toggleButtonGroup.stories.tsx +22 -0
- package/src/views/ResearchView/assistant/components/ToggleButtonGroup/toggleButtonGroup.styles.ts +22 -0
- package/src/views/ResearchView/assistant/components/ToggleButtonGroup/toggleButtonGroup.tsx +30 -0
- package/src/views/ResearchView/assistant/stories/args.ts +36 -0
- package/src/views/ResearchView/assistant/stories/assistant.stories.tsx +39 -0
- package/src/views/ResearchView/query/constants.ts +5 -0
- package/src/views/ResearchView/query/fetch.ts +58 -0
- package/src/views/ResearchView/query/types.ts +37 -0
- package/src/views/ResearchView/query/useQuery.ts +60 -0
- package/src/views/ResearchView/researchView.tsx +19 -0
- package/src/views/ResearchView/state/actions/setError/action.ts +22 -0
- package/src/views/ResearchView/state/actions/setError/dispatch.ts +14 -0
- package/src/views/ResearchView/state/actions/setError/types.ts +16 -0
- package/src/views/ResearchView/state/actions/setMessage/action.ts +26 -0
- package/src/views/ResearchView/state/actions/setMessage/dispatch.ts +14 -0
- package/src/views/ResearchView/state/actions/setMessage/types.ts +19 -0
- package/src/views/ResearchView/state/actions/setQuery/action.ts +22 -0
- package/src/views/ResearchView/state/actions/setQuery/dispatch.ts +14 -0
- package/src/views/ResearchView/state/actions/setQuery/types.ts +16 -0
- package/src/views/ResearchView/state/actions/setStatus/action.ts +19 -0
- package/src/views/ResearchView/state/actions/setStatus/dispatch.ts +14 -0
- package/src/views/ResearchView/state/actions/setStatus/types.ts +16 -0
- package/src/views/ResearchView/state/actions/types.ts +23 -0
- package/src/views/ResearchView/state/constants.ts +9 -0
- package/src/views/ResearchView/state/context.ts +11 -0
- package/src/views/ResearchView/state/guards/guards.ts +58 -0
- package/src/views/ResearchView/state/hooks/UseChatDispatch/hook.ts +46 -0
- package/src/views/ResearchView/state/hooks/UseChatDispatch/types.ts +11 -0
- package/src/views/ResearchView/state/hooks/UseChatReducer/hook.ts +15 -0
- package/src/views/ResearchView/state/hooks/UseChatState/hook.ts +14 -0
- package/src/views/ResearchView/state/initializer/initializer.ts +23 -0
- package/src/views/ResearchView/state/initializer/types.ts +3 -0
- package/src/views/ResearchView/state/provider.tsx +27 -0
- package/src/views/ResearchView/state/reducer.ts +34 -0
- package/src/views/ResearchView/state/types.ts +149 -0
- package/tests/chartSortUtils.test.ts +119 -0
- package/tests/research.assistantMessageUtils.test.ts +149 -0
- package/tests/research.chatState.test.ts +463 -0
- package/tests/research.fetchResponse.test.ts +164 -0
- package/tests/research.useKeyShortCuts.test.ts +254 -0
- package/tests/research.useQuery.test.ts +165 -0
- package/tests/toggleButtonGroupProvider.test.tsx +125 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ChipProps } from "@mui/material";
|
|
2
|
+
import { JSX } from "react";
|
|
3
|
+
import { CHIP_PROPS } from "../../../../../styles/common/mui/chip";
|
|
4
|
+
import { BaseComponentProps } from "../../../../types";
|
|
5
|
+
import { StyledChip } from "./beta.styles";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Beta chip component to indicate features that are in beta.
|
|
9
|
+
* @param props - Component props.
|
|
10
|
+
* @param props.className - Classname.
|
|
11
|
+
* @returns Beta chip JSX element.
|
|
12
|
+
*/
|
|
13
|
+
export const Beta = ({
|
|
14
|
+
className,
|
|
15
|
+
...props
|
|
16
|
+
}: BaseComponentProps & ChipProps): JSX.Element => {
|
|
17
|
+
return (
|
|
18
|
+
<StyledChip
|
|
19
|
+
className={className}
|
|
20
|
+
label="Beta"
|
|
21
|
+
size={CHIP_PROPS.SIZE.SMALL}
|
|
22
|
+
{...props}
|
|
23
|
+
/>
|
|
24
|
+
);
|
|
25
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/nextjs-vite";
|
|
2
|
+
import { Beta } from "../beta";
|
|
3
|
+
|
|
4
|
+
const meta: Meta<typeof Beta> = {
|
|
5
|
+
component: Beta,
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export default meta;
|
|
9
|
+
|
|
10
|
+
type Story = StoryObj<typeof meta>;
|
|
11
|
+
|
|
12
|
+
export const DEFAULT: Story = {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SvgIcon, SvgIconProps } from "@mui/material";
|
|
2
|
+
import { JSX } from "react";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Custom up arrow icon.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export const UpArrowIcon = ({
|
|
9
|
+
fontSize = "xsmall",
|
|
10
|
+
viewBox = "0 0 18 18",
|
|
11
|
+
...props /* SvgIconProps */
|
|
12
|
+
}: SvgIconProps): JSX.Element => {
|
|
13
|
+
return (
|
|
14
|
+
<SvgIcon fontSize={fontSize} viewBox={viewBox} {...props}>
|
|
15
|
+
<path
|
|
16
|
+
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"
|
|
17
|
+
fill="currentColor"
|
|
18
|
+
/>
|
|
19
|
+
</SvgIcon>
|
|
20
|
+
);
|
|
21
|
+
};
|
|
@@ -81,7 +81,11 @@ function buildTabLabel(
|
|
|
81
81
|
annotation?: DataDictionaryAnnotation,
|
|
82
82
|
): ReactElement {
|
|
83
83
|
return (
|
|
84
|
-
<Tooltip
|
|
84
|
+
<Tooltip
|
|
85
|
+
description={annotation?.description}
|
|
86
|
+
enterDelay={300}
|
|
87
|
+
title={annotation?.label}
|
|
88
|
+
>
|
|
85
89
|
<span>{count ? `${label} (${count})` : label}</span>
|
|
86
90
|
</Tooltip>
|
|
87
91
|
);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ToggleButtonGroupProps } from "@mui/material";
|
|
2
|
+
import { useContext } from "react";
|
|
3
|
+
import { ToggleButtonGroupContext } from "./context";
|
|
4
|
+
import { ToggleButtonGroupContextProps } from "./types";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Returns the toggle button group context.
|
|
8
|
+
* @returns toggle button group context.
|
|
9
|
+
*/
|
|
10
|
+
export const useToggleButtonGroup = <
|
|
11
|
+
T extends ToggleButtonGroupProps["value"],
|
|
12
|
+
>(): ToggleButtonGroupContextProps<T> => {
|
|
13
|
+
return useContext(
|
|
14
|
+
ToggleButtonGroupContext,
|
|
15
|
+
) as ToggleButtonGroupContextProps<T>;
|
|
16
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ToggleButtonGroupProps } from "@mui/material";
|
|
2
|
+
import { JSX, MouseEvent, useCallback, useState } from "react";
|
|
3
|
+
import { ToggleButtonGroupContext } from "./context";
|
|
4
|
+
import { ToggleButtonGroupProviderProps } from "./types";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* ToggleButtonGroup provider component.
|
|
8
|
+
* Manages toggle button group state for child components.
|
|
9
|
+
* @param props - Component props.
|
|
10
|
+
* @param props.children - Child elements to render.
|
|
11
|
+
* @param props.initialValue - Initial value for the toggle button group.
|
|
12
|
+
* @returns ToggleButtonGroup provider component.
|
|
13
|
+
*/
|
|
14
|
+
export function ToggleButtonGroupProvider<
|
|
15
|
+
T extends ToggleButtonGroupProps["value"],
|
|
16
|
+
>({
|
|
17
|
+
children,
|
|
18
|
+
initialValue = null,
|
|
19
|
+
}: ToggleButtonGroupProviderProps<T>): JSX.Element {
|
|
20
|
+
const [value, setValue] = useState<T | null>(initialValue);
|
|
21
|
+
|
|
22
|
+
const onChange = useCallback(
|
|
23
|
+
(_: MouseEvent<HTMLElement>, value: T | null) => {
|
|
24
|
+
if (value === null) return;
|
|
25
|
+
setValue(value);
|
|
26
|
+
},
|
|
27
|
+
[],
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<ToggleButtonGroupContext.Provider value={{ onChange, value }}>
|
|
32
|
+
{typeof children === "function"
|
|
33
|
+
? children({ onChange, value })
|
|
34
|
+
: children}
|
|
35
|
+
</ToggleButtonGroupContext.Provider>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ToggleButtonGroupProps } from "@mui/material";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
export type ToggleButtonGroupContextProps<
|
|
5
|
+
T extends ToggleButtonGroupProps["value"],
|
|
6
|
+
> = Pick<ToggleButtonGroupProps, "onChange"> & {
|
|
7
|
+
value: T | null;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export type ToggleButtonGroupProviderProps<
|
|
11
|
+
T extends ToggleButtonGroupProps["value"],
|
|
12
|
+
> = {
|
|
13
|
+
children:
|
|
14
|
+
| ReactNode
|
|
15
|
+
| ((props: ToggleButtonGroupContextProps<T>) => ReactNode);
|
|
16
|
+
initialValue?: T | null;
|
|
17
|
+
};
|
package/src/config/entities.ts
CHANGED
|
@@ -27,6 +27,7 @@ import { ProviderId } from "../providers/authentication/common/types";
|
|
|
27
27
|
import { ExploreState } from "../providers/exploreState";
|
|
28
28
|
import { FileManifestState } from "../providers/fileManifestState";
|
|
29
29
|
import { SystemStatus, SystemStatusResponse } from "../providers/systemStatus";
|
|
30
|
+
import { AiConfig } from "../common/ai/config/types";
|
|
30
31
|
|
|
31
32
|
/**
|
|
32
33
|
* Interface to define the analytics configuration for a given site.
|
|
@@ -364,6 +365,7 @@ interface TrackingConfig {
|
|
|
364
365
|
* Interface that will hold the whole configuration for a given site.
|
|
365
366
|
*/
|
|
366
367
|
export interface SiteConfig {
|
|
368
|
+
ai?: AiConfig;
|
|
367
369
|
analytics?: AnalyticsConfig;
|
|
368
370
|
appTitle: string;
|
|
369
371
|
authentication?: AuthenticationConfig;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { FEATURE_FLAG } from "../../../common/ai/constants";
|
|
2
|
+
import { AiConfig } from "../../../common/ai/config/types";
|
|
3
|
+
import { useConfig } from "../../useConfig";
|
|
4
|
+
import { useFeatureFlag } from "../../useFeatureFlag/useFeatureFlag";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Returns AI route configuration when the AI feature is enabled.
|
|
8
|
+
* @returns AI routes, or undefined if AI is not configured or enabled.
|
|
9
|
+
*/
|
|
10
|
+
export const useAiRoutes = (): Pick<AiConfig, "routes"> | undefined => {
|
|
11
|
+
const flagEnabled = useFeatureFlag(FEATURE_FLAG.CHAT);
|
|
12
|
+
const { config } = useConfig();
|
|
13
|
+
const { ai } = config;
|
|
14
|
+
|
|
15
|
+
if (!ai) return;
|
|
16
|
+
|
|
17
|
+
const { enabled, routes } = ai;
|
|
18
|
+
|
|
19
|
+
if (enabled || flagEnabled) {
|
|
20
|
+
return { routes };
|
|
21
|
+
}
|
|
22
|
+
};
|
|
@@ -83,7 +83,7 @@ function buildCategoryView(
|
|
|
83
83
|
selectCategoryConfig?.mapSelectCategoryValue || getSelectCategoryValue;
|
|
84
84
|
return {
|
|
85
85
|
annotation: selectCategoryConfig?.annotation,
|
|
86
|
-
|
|
86
|
+
chart: selectCategoryConfig?.chart,
|
|
87
87
|
isDisabled: false,
|
|
88
88
|
key: selectCategory.key,
|
|
89
89
|
label: getCategoryLabel(selectCategory.key, selectCategoryConfig),
|
|
@@ -34,17 +34,6 @@ export interface FileFacet {
|
|
|
34
34
|
total: number;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
export enum FILE_MANIFEST_TYPE {
|
|
38
|
-
BULK_DOWNLOAD = "BULK_DOWNLOAD",
|
|
39
|
-
DOWNLOAD_MANIFEST = "DOWNLOAD_MANIFEST",
|
|
40
|
-
ENTITY_BULK_DOWNLOAD = "ENTITY_BULK_DOWNLOAD",
|
|
41
|
-
ENTITY_DOWNLOAD_MANIFEST = "ENTITY_DOWNLOAD_MANIFEST",
|
|
42
|
-
ENTITY_EXPORT_TO_TERRA = "ENTITY_EXPORT_TO_TERRA",
|
|
43
|
-
EXPORT_TO_TERRA = "EXPORT_TO_TERRA",
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export type FileManifestType = FILE_MANIFEST_TYPE;
|
|
47
|
-
|
|
48
37
|
export type SelectedSearchTermsBySearchKey = Map<
|
|
49
38
|
CategoryKey,
|
|
50
39
|
Set<CategoryValueKey>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DrawerProps } from "@mui/material";
|
|
2
|
+
|
|
3
|
+
type DrawerPropsOptions = {
|
|
4
|
+
ANCHOR: typeof ANCHOR;
|
|
5
|
+
VARIANT: typeof VARIANT;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
const ANCHOR: Record<string, DrawerProps["anchor"]> = {
|
|
9
|
+
BOTTOM: "bottom",
|
|
10
|
+
LEFT: "left",
|
|
11
|
+
RIGHT: "right",
|
|
12
|
+
TOP: "top",
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const VARIANT: Record<string, DrawerProps["variant"]> = {
|
|
16
|
+
PERMANENT: "permanent",
|
|
17
|
+
PERSISTENT: "persistent",
|
|
18
|
+
TEMPORARY: "temporary",
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export const DRAWER_PROPS: DrawerPropsOptions = {
|
|
22
|
+
ANCHOR,
|
|
23
|
+
VARIANT,
|
|
24
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { InputBaseProps } from "@mui/material";
|
|
2
|
+
|
|
3
|
+
type InputBasePropsOptions = {
|
|
4
|
+
COLOR: typeof COLOR;
|
|
5
|
+
MARGIN: typeof MARGIN;
|
|
6
|
+
SIZE: typeof SIZE;
|
|
7
|
+
TYPE: typeof TYPE;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const COLOR: Record<string, InputBaseProps["color"]> = {
|
|
11
|
+
ERROR: "error",
|
|
12
|
+
INFO: "info",
|
|
13
|
+
PRIMARY: "primary",
|
|
14
|
+
SECONDARY: "secondary",
|
|
15
|
+
SUCCESS: "success",
|
|
16
|
+
WARNING: "warning",
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const MARGIN: Record<string, InputBaseProps["margin"]> = {
|
|
20
|
+
DENSE: "dense",
|
|
21
|
+
NONE: "none",
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const SIZE: Record<string, InputBaseProps["size"]> = {
|
|
25
|
+
MEDIUM: "medium",
|
|
26
|
+
SMALL: "small",
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const TYPE: Record<string, InputBaseProps["type"]> = {
|
|
30
|
+
TEXT: "text",
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export const INPUT_BASE_PROPS: InputBasePropsOptions = {
|
|
34
|
+
COLOR,
|
|
35
|
+
MARGIN,
|
|
36
|
+
SIZE,
|
|
37
|
+
TYPE,
|
|
38
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { StackProps } from "@mui/material";
|
|
2
|
+
|
|
3
|
+
type StackPropsOptions = {
|
|
4
|
+
ALIGN_ITEMS: typeof ALIGN_ITEMS;
|
|
5
|
+
DIRECTION: typeof DIRECTION;
|
|
6
|
+
FLEX_WRAP: typeof FLEX_WRAP;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
const ALIGN_ITEMS: Record<string, StackProps["alignItems"]> = {
|
|
10
|
+
BASELINE: "baseline",
|
|
11
|
+
CENTER: "center",
|
|
12
|
+
FLEX_END: "flex-end",
|
|
13
|
+
FLEX_START: "flex-start",
|
|
14
|
+
STRETCH: "stretch",
|
|
15
|
+
} as const;
|
|
16
|
+
|
|
17
|
+
const DIRECTION: Record<string, StackProps["direction"]> = {
|
|
18
|
+
COLUMN: "column",
|
|
19
|
+
COLUMN_REVERSE: "column-reverse",
|
|
20
|
+
ROW: "row",
|
|
21
|
+
ROW_REVERSE: "row-reverse",
|
|
22
|
+
} as const;
|
|
23
|
+
|
|
24
|
+
const FLEX_WRAP: Record<string, StackProps["flexWrap"]> = {
|
|
25
|
+
WRAP: "wrap",
|
|
26
|
+
WRAP_REVERSE: "wrap-reverse",
|
|
27
|
+
} as const;
|
|
28
|
+
|
|
29
|
+
export const STACK_PROPS: StackPropsOptions = {
|
|
30
|
+
ALIGN_ITEMS,
|
|
31
|
+
DIRECTION,
|
|
32
|
+
FLEX_WRAP,
|
|
33
|
+
};
|
package/src/tests/testIds.ts
CHANGED
|
@@ -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,25 @@
|
|
|
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
|
+
|
|
6
|
+
export const StyledBox = styled(Box)`
|
|
7
|
+
margin-bottom: -16px;
|
|
8
|
+
padding: 16px;
|
|
9
|
+
|
|
10
|
+
${bpDownMd} {
|
|
11
|
+
margin-bottom: 0;
|
|
12
|
+
}
|
|
13
|
+
`;
|
|
14
|
+
|
|
15
|
+
export const StyledToggleButtonGroup = styled(ToggleButtonGroup)`
|
|
16
|
+
.MuiToggleButton-root {
|
|
17
|
+
gap: 4px;
|
|
18
|
+
padding: 6px 16px;
|
|
19
|
+
text-transform: none;
|
|
20
|
+
|
|
21
|
+
&.Mui-disabled {
|
|
22
|
+
color: ${PALETTE.INK_LIGHT};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
`;
|
package/src/views/ExploreView/entityList/filters/components/ToggleButtonGroup/toggleButtonGroup.tsx
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ToggleButton } from "@mui/material";
|
|
2
|
+
import { JSX } from "react";
|
|
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
|
+
/**
|
|
10
|
+
* ToggleButtonGroup component for navigating to ResearchView.
|
|
11
|
+
* Only navigates to ResearchView when the "Research" button is clicked, otherwise remains on ExploreView.
|
|
12
|
+
* @returns ToggleButtonGroup JSX element.
|
|
13
|
+
*/
|
|
14
|
+
export const ToggleButtonGroup = (): JSX.Element | null => {
|
|
15
|
+
const { routes } = useAiRoutes() || {};
|
|
16
|
+
|
|
17
|
+
if (!routes) return null;
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<StyledBox>
|
|
21
|
+
<StyledToggleButtonGroup exclusive>
|
|
22
|
+
<ToggleButton component={Link} href={routes.research} value="research">
|
|
23
|
+
Research <Beta />
|
|
24
|
+
</ToggleButton>
|
|
25
|
+
<ToggleButton selected value="search">
|
|
26
|
+
Search
|
|
27
|
+
</ToggleButton>
|
|
28
|
+
</StyledToggleButtonGroup>
|
|
29
|
+
</StyledBox>
|
|
30
|
+
);
|
|
31
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import styled from "@emotion/styled";
|
|
2
|
+
import { Stack } from "@mui/material";
|
|
3
|
+
import { bpDownMd } from "../../../../styles/common/mixins/breakpoints";
|
|
4
|
+
|
|
5
|
+
export const StyledStack = styled(Stack)`
|
|
6
|
+
gap: 8px;
|
|
7
|
+
margin: 16px 0;
|
|
8
|
+
padding: 0 16px;
|
|
9
|
+
|
|
10
|
+
${bpDownMd} {
|
|
11
|
+
margin: 8px 0;
|
|
12
|
+
}
|
|
13
|
+
`;
|
|
14
|
+
|
|
15
|
+
export const StyledGrid = styled.div`
|
|
16
|
+
display: grid;
|
|
17
|
+
gap: 16px;
|
|
18
|
+
grid-template-columns: 1fr auto;
|
|
19
|
+
`;
|
|
@@ -16,7 +16,6 @@ import { SearchAllFilters } from "../../components/Filter/components/SearchAllFi
|
|
|
16
16
|
import { SURFACE_TYPE } from "../../components/Filter/components/surfaces/types";
|
|
17
17
|
import { Index as IndexView } from "../../components/Index/index";
|
|
18
18
|
import { SidebarLabel } from "../../components/Layout/components/Sidebar/components/SidebarLabel/sidebarLabel";
|
|
19
|
-
import { SidebarTools } from "../../components/Layout/components/Sidebar/components/SidebarTools/sidebarTools.styles";
|
|
20
19
|
import { Sidebar } from "../../components/Layout/components/Sidebar/sidebar";
|
|
21
20
|
import { CategoryGroup } from "../../config/entities";
|
|
22
21
|
import { useStateSyncManager } from "../../hooks/stateSyncManager/hook";
|
|
@@ -32,6 +31,8 @@ import { SELECT_CATEGORY_KEY } from "../../providers/exploreState/constants";
|
|
|
32
31
|
import { TEST_IDS } from "../../tests/testIds";
|
|
33
32
|
import { useUpdateFilterSort } from "./hooks/UseUpdateFilterSort/hook";
|
|
34
33
|
import { buildStateSyncManagerContext } from "./utils";
|
|
34
|
+
import { StyledGrid, StyledStack } from "./entityList/filters/filters.styles";
|
|
35
|
+
import { ToggleButtonGroup } from "./entityList/filters/components/ToggleButtonGroup/toggleButtonGroup";
|
|
35
36
|
|
|
36
37
|
export interface ExploreViewProps extends AzulEntitiesStaticResponse {
|
|
37
38
|
className?: string;
|
|
@@ -137,16 +138,19 @@ export const ExploreView = (props: ExploreViewProps): JSX.Element => {
|
|
|
137
138
|
<DrawerProvider>
|
|
138
139
|
{categoryViews && !!categoryViews.length && (
|
|
139
140
|
<Sidebar>
|
|
140
|
-
<
|
|
141
|
-
|
|
142
|
-
<
|
|
143
|
-
<
|
|
144
|
-
<
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
141
|
+
<ToggleButtonGroup />
|
|
142
|
+
<StyledStack>
|
|
143
|
+
<StyledGrid data-testid={TEST_IDS.FILTER_CONTROLS}>
|
|
144
|
+
<SidebarLabel label={"Filters"} />
|
|
145
|
+
<Stack direction="row" gap={4}>
|
|
146
|
+
<ClearAllFilters />
|
|
147
|
+
<FilterSort
|
|
148
|
+
enabled={filterSortEnabled}
|
|
149
|
+
filterSort={filterSort}
|
|
150
|
+
onFilterSortChange={onFilterSortChange}
|
|
151
|
+
/>
|
|
152
|
+
</Stack>
|
|
153
|
+
</StyledGrid>
|
|
150
154
|
<SearchAllFilters
|
|
151
155
|
categoryViews={categoryViews}
|
|
152
156
|
onFilter={onFilterChange.bind(null, true)}
|
|
@@ -154,7 +158,7 @@ export const ExploreView = (props: ExploreViewProps): JSX.Element => {
|
|
|
154
158
|
mdDown ? SURFACE_TYPE.POPPER_DRAWER : SURFACE_TYPE.POPPER_MENU
|
|
155
159
|
}
|
|
156
160
|
/>
|
|
157
|
-
</
|
|
161
|
+
</StyledStack>
|
|
158
162
|
<Filters
|
|
159
163
|
categoryFilters={categoryFilters}
|
|
160
164
|
onFilter={onFilterChange.bind(null, false)}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { useConfig } from "../../../hooks/useConfig";
|
|
2
|
+
import { UseQuery } from "../query/types";
|
|
3
|
+
import { useQuery } from "../query/useQuery";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Adapter hook that wires AI query to app config.
|
|
7
|
+
* @returns AI query interface with actions.
|
|
8
|
+
*/
|
|
9
|
+
export function useAdapter(): UseQuery {
|
|
10
|
+
const { config } = useConfig();
|
|
11
|
+
const { ai } = config;
|
|
12
|
+
const { url } = ai || {};
|
|
13
|
+
|
|
14
|
+
if (!url) {
|
|
15
|
+
throw new Error("Chat URL is not configured");
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return useQuery(url);
|
|
19
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { JSX } from "react";
|
|
2
|
+
import { useAdapter } from "../adapter/useAdapter";
|
|
3
|
+
import { Form } from "./components/Form/form";
|
|
4
|
+
import { Input } from "./components/Input/input";
|
|
5
|
+
import { Messages } from "./components/Messages/messages";
|
|
6
|
+
import { getPlaceholder } from "./components/Input/utils";
|
|
7
|
+
import { Drawer } from "./components/Drawer/drawer";
|
|
8
|
+
import { useChatState } from "../state/hooks/UseChatState/hook";
|
|
9
|
+
import { ToggleButtonGroup } from "./components/ToggleButtonGroup/toggleButtonGroup";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Renders the research assistant drawer.
|
|
13
|
+
* @returns The assistant drawer.
|
|
14
|
+
*/
|
|
15
|
+
export const Assistant = (): JSX.Element => {
|
|
16
|
+
const { actions } = useAdapter();
|
|
17
|
+
const { state } = useChatState();
|
|
18
|
+
return (
|
|
19
|
+
<Drawer>
|
|
20
|
+
<ToggleButtonGroup />
|
|
21
|
+
<Form actions={actions} status={state.status}>
|
|
22
|
+
<Messages state={state} />
|
|
23
|
+
<Input
|
|
24
|
+
disabled={state.status.loading}
|
|
25
|
+
placeholder={getPlaceholder(state)}
|
|
26
|
+
/>
|
|
27
|
+
</Form>
|
|
28
|
+
</Drawer>
|
|
29
|
+
);
|
|
30
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import styled from "@emotion/styled";
|
|
2
|
+
import { Drawer } from "@mui/material";
|
|
3
|
+
import { PALETTE } from "../../../../../styles/common/constants/palette";
|
|
4
|
+
import { ComponentProps } from "react";
|
|
5
|
+
import { LayoutSpacing } from "../../../../../hooks/UseLayoutSpacing/types";
|
|
6
|
+
|
|
7
|
+
export const StyledDrawer = styled(Drawer, {
|
|
8
|
+
shouldForwardProp(prop) {
|
|
9
|
+
return prop !== "bottom" && prop !== "top";
|
|
10
|
+
},
|
|
11
|
+
})<ComponentProps<typeof Drawer> & LayoutSpacing>`
|
|
12
|
+
height: 100%;
|
|
13
|
+
max-height: 100dvh;
|
|
14
|
+
width: 412px;
|
|
15
|
+
z-index: 0;
|
|
16
|
+
|
|
17
|
+
> .MuiPaper-root {
|
|
18
|
+
background-color: ${PALETTE.COMMON_WHITE};
|
|
19
|
+
border-right: 1px solid ${PALETTE.SMOKE_MAIN};
|
|
20
|
+
padding-top: ${({ top }) => top}px;
|
|
21
|
+
position: relative;
|
|
22
|
+
width: inherit;
|
|
23
|
+
}
|
|
24
|
+
`;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { JSX } from "react";
|
|
2
|
+
import { TEST_IDS } from "../../../../../tests/testIds";
|
|
3
|
+
import { StyledDrawer } from "./drawer.styles";
|
|
4
|
+
import { DrawerProps } from "./types";
|
|
5
|
+
import { useLayoutSpacing } from "../../../../../hooks/UseLayoutSpacing/hook";
|
|
6
|
+
import { DRAWER_PROPS } from "../../../../../styles/common/mui/drawer";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Renders the drawer component for the research assistant.
|
|
10
|
+
* @param props - Component props.
|
|
11
|
+
* @param props.children - Children.
|
|
12
|
+
* @returns The drawer component.
|
|
13
|
+
*/
|
|
14
|
+
export const Drawer = ({ children }: DrawerProps): JSX.Element => {
|
|
15
|
+
const { spacing } = useLayoutSpacing();
|
|
16
|
+
return (
|
|
17
|
+
<StyledDrawer
|
|
18
|
+
data-testid={TEST_IDS.RESEARCH_PANEL}
|
|
19
|
+
open
|
|
20
|
+
variant={DRAWER_PROPS.VARIANT.PERSISTENT}
|
|
21
|
+
{...spacing}
|
|
22
|
+
>
|
|
23
|
+
{children}
|
|
24
|
+
</StyledDrawer>
|
|
25
|
+
);
|
|
26
|
+
};
|