Przeglądaj źródła

Revert "modularize imports for reactstrap"

This reverts commit 5bd3bf5b108f600cd224c472c49c201fcd0986df.
Yuki Takei 3 lat temu
rodzic
commit
71ddfe4c9b
77 zmienionych plików z 190 dodań i 225 usunięć
  1. 1 1
      apps/app/src/components/Admin/AdminHome/AdminHome.jsx
  2. 3 4
      apps/app/src/components/Admin/App/ConfirmModal.tsx
  3. 1 1
      apps/app/src/components/Admin/AuditLog/ActivityTable.tsx
  4. 1 1
      apps/app/src/components/Admin/AuditLog/AuditLogSettings.tsx
  5. 1 2
      apps/app/src/components/Admin/Common/Accordion.jsx
  6. 1 1
      apps/app/src/components/Admin/Common/LabeledProgressBar.tsx
  7. 3 4
      apps/app/src/components/Admin/ExportArchiveData/SelectCollectionsModal.tsx
  8. 1 4
      apps/app/src/components/Admin/ImportData/GrowiArchive/ErrorViewer.tsx
  9. 6 4
      apps/app/src/components/Admin/ImportData/GrowiArchive/ImportCollectionConfigurationModal.jsx
  10. 1 1
      apps/app/src/components/Admin/ImportData/GrowiArchive/ImportCollectionItem.jsx
  11. 3 4
      apps/app/src/components/Admin/Notification/NotificationDeleteModal.jsx
  12. 1 1
      apps/app/src/components/Admin/Notification/NotificationTypeIcon.tsx
  13. 1 1
      apps/app/src/components/Admin/PluginsExtension/PluginsExtensionPageContents.tsx
  14. 3 5
      apps/app/src/components/Admin/Security/DeleteAllShareLinksModal.jsx
  15. 5 3
      apps/app/src/components/Admin/Security/LdapAuthTestModal.jsx
  16. 1 1
      apps/app/src/components/Admin/Security/SamlSecuritySettingContents.jsx
  17. 1 1
      apps/app/src/components/Admin/Security/SecuritySetting.jsx
  18. 1 1
      apps/app/src/components/Admin/SlackIntegration/Bridge.jsx
  19. 3 4
      apps/app/src/components/Admin/SlackIntegration/ConfirmBotChangeModal.jsx
  20. 1 1
      apps/app/src/components/Admin/SlackIntegration/WithProxyAccordions.jsx
  21. 3 4
      apps/app/src/components/Admin/UserGroup/UserGroupDeleteModal.tsx
  22. 3 4
      apps/app/src/components/Admin/UserGroup/UserGroupModal.tsx
  23. 3 4
      apps/app/src/components/Admin/UserGroupDetail/UpdateParentConfirmModal.tsx
  24. 3 4
      apps/app/src/components/Admin/UserGroupDetail/UserGroupUserModal.tsx
  25. 3 4
      apps/app/src/components/Admin/Users/PasswordResetModal.jsx
  26. 4 4
      apps/app/src/components/Admin/Users/UserInviteModal.jsx
  27. 3 4
      apps/app/src/components/ArchiveCreateModal.jsx
  28. 1 3
      apps/app/src/components/BookmarkButtons.tsx
  29. 1 1
      apps/app/src/components/Common/CustomCopyToClipBoard.tsx
  30. 6 4
      apps/app/src/components/Common/ImageCropModal.tsx
  31. 1 3
      apps/app/src/components/CreateTemplateModal.jsx
  32. 3 3
      apps/app/src/components/DescendantsPageListModal.tsx
  33. 3 4
      apps/app/src/components/EmptyTrashModal.tsx
  34. 1 1
      apps/app/src/components/FormattedDistanceDate.jsx
  35. 1 1
      apps/app/src/components/InAppNotification/InAppNotificationElm.tsx
  36. 1 3
      apps/app/src/components/LikeButtons.tsx
  37. 10 8
      apps/app/src/components/Me/AssociateModal.tsx
  38. 6 4
      apps/app/src/components/Me/DisassociateModal.tsx
  39. 1 1
      apps/app/src/components/Navbar/AppearanceModeDropdown.tsx
  40. 1 1
      apps/app/src/components/Navbar/GrowiContextualSubNavigation.tsx
  41. 1 1
      apps/app/src/components/Navbar/GrowiNavbar.tsx
  42. 1 1
      apps/app/src/components/Navbar/PageEditorModeManager.jsx
  43. 1 1
      apps/app/src/components/Navbar/SubNavButtons.tsx
  44. 1 2
      apps/app/src/components/NotAvailable.tsx
  45. 3 4
      apps/app/src/components/Page/TagEditModal.jsx
  46. 3 3
      apps/app/src/components/PageAccessoriesModal.tsx
  47. 3 4
      apps/app/src/components/PageAlert/FixPageGrantAlert.tsx
  48. 4 5
      apps/app/src/components/PageAttachment/DeleteAttachmentModal.tsx
  49. 1 1
      apps/app/src/components/PageComment.tsx
  50. 1 1
      apps/app/src/components/PageComment/Comment.tsx
  51. 3 6
      apps/app/src/components/PageComment/DeleteCommentModal.tsx
  52. 1 1
      apps/app/src/components/PageComment/ReplyComments.tsx
  53. 3 7
      apps/app/src/components/PageCreateModal.jsx
  54. 3 4
      apps/app/src/components/PageDeleteModal.tsx
  55. 3 4
      apps/app/src/components/PageDuplicateModal.tsx
  56. 1 1
      apps/app/src/components/PageEditor/CodeMirrorEditor.jsx
  57. 4 2
      apps/app/src/components/PageEditor/DrawioModal.tsx
  58. 3 3
      apps/app/src/components/PageEditor/Editor.tsx
  59. 1 1
      apps/app/src/components/PageEditor/EmojiPicker.tsx
  60. 3 4
      apps/app/src/components/PageEditor/GridEditModal.jsx
  61. 8 6
      apps/app/src/components/PageEditor/LinkEditModal.jsx
  62. 1 1
      apps/app/src/components/PageEditor/TextAreaEditor.jsx
  63. 1 1
      apps/app/src/components/PageList/PageListItemL.tsx
  64. 3 2
      apps/app/src/components/PagePresentationModal.tsx
  65. 3 5
      apps/app/src/components/PageRenameModal.tsx
  66. 1 3
      apps/app/src/components/PaginationWrapper.tsx
  67. 3 8
      apps/app/src/components/PrivateLegacyPages.tsx
  68. 3 4
      apps/app/src/components/PrivateLegacyPagesMigrationModal.tsx
  69. 3 4
      apps/app/src/components/PutbackPageModal.jsx
  70. 6 7
      apps/app/src/components/SavePageControls/GrantSelector.tsx
  71. 1 3
      apps/app/src/components/SearchPage/OperateAllControl.tsx
  72. 4 4
      apps/app/src/components/SearchPage/SearchOptionModal.tsx
  73. 1 1
      apps/app/src/components/SearchPage/SearchResultContent.tsx
  74. 1 3
      apps/app/src/components/ShortcutsModal.tsx
  75. 3 2
      apps/app/src/components/StaffCredit/StaffCredit.tsx
  76. 1 1
      apps/app/src/components/SubscribeButton.tsx
  77. 6 4
      apps/app/src/components/TemplateModal.tsx

+ 1 - 1
apps/app/src/components/Admin/AdminHome/AdminHome.jsx

@@ -3,7 +3,7 @@ import React, { useEffect, useCallback } from 'react';
 import { useTranslation } from 'next-i18next';
 import PropTypes from 'prop-types';
 import { CopyToClipboard } from 'react-copy-to-clipboard';
-import Tooltip from 'reactstrap/es/Tooltip';
+import { Tooltip } from 'reactstrap';
 
 import AdminHomeContainer from '~/client/services/AdminHomeContainer';
 import { toastError } from '~/client/util/toastr';

+ 3 - 4
apps/app/src/components/Admin/App/ConfirmModal.tsx

@@ -1,10 +1,9 @@
 import React, { FC } from 'react';
 
 import { useTranslation } from 'next-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 type ConfirmModalProps = {
   isModalOpen: boolean

+ 1 - 1
apps/app/src/components/Admin/AuditLog/ActivityTable.tsx

@@ -5,7 +5,7 @@ import { UserPicture } from '@growi/ui/dist/components/User/UserPicture';
 import { format } from 'date-fns';
 import { CopyToClipboard } from 'react-copy-to-clipboard';
 import { useTranslation } from 'react-i18next';
-import Tooltip from 'reactstrap/es/Tooltip';
+import { Tooltip } from 'reactstrap';
 
 import { IActivityHasId } from '~/interfaces/activity';
 

+ 1 - 1
apps/app/src/components/Admin/AuditLog/AuditLogSettings.tsx

@@ -1,7 +1,7 @@
 import React, { FC, useState } from 'react';
 
 import { useTranslation } from 'react-i18next';
-import Collapse from 'reactstrap/es/Collapse';
+import { Collapse } from 'reactstrap';
 
 import { AllSupportedActions } from '~/interfaces/activity';
 import { useActivityExpirationSeconds, useAuditLogAvailableActions } from '~/stores/context';

+ 1 - 2
apps/app/src/components/Admin/Common/Accordion.jsx

@@ -1,7 +1,6 @@
 import React, { useState } from 'react';
-
+import { Collapse } from 'reactstrap';
 import PropTypes from 'prop-types';
-import Collapse from 'reactstrap/es/Collapse';
 
 const Accordion = (props) => {
   const [isOpen, setIsOpen] = useState(props.isOpenDefault);

+ 1 - 1
apps/app/src/components/Admin/Common/LabeledProgressBar.tsx

@@ -1,6 +1,6 @@
 import React from 'react';
 
-import Progress from 'reactstrap/es/Progress';
+import { Progress } from 'reactstrap';
 
 type Props = {
   header: string,

+ 3 - 4
apps/app/src/components/Admin/ExportArchiveData/SelectCollectionsModal.tsx

@@ -1,10 +1,9 @@
 import React, { useCallback, useState, useEffect } from 'react';
 
 import { useTranslation } from 'next-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 import * as toastr from 'toastr';
 
 import { apiPost } from '~/client/util/apiv1-client';

+ 1 - 4
apps/app/src/components/Admin/ImportData/GrowiArchive/ErrorViewer.tsx

@@ -1,9 +1,6 @@
 import React from 'react';
 
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import { Modal, ModalHeader, ModalBody } from 'reactstrap';
 
 type ErrorViewerProps = {
   isOpen: boolean,

+ 6 - 4
apps/app/src/components/Admin/ImportData/GrowiArchive/ImportCollectionConfigurationModal.jsx

@@ -4,10 +4,12 @@ import React from 'react';
 
 import { useTranslation } from 'next-i18next';
 import PropTypes from 'prop-types';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal,
+  ModalHeader,
+  ModalBody,
+  ModalFooter,
+} from 'reactstrap';
 
 import GrowiArchiveImportOption from '~/models/admin/growi-archive-import-option';
 

+ 1 - 1
apps/app/src/components/Admin/ImportData/GrowiArchive/ImportCollectionItem.jsx

@@ -1,7 +1,7 @@
 import React from 'react';
 
 import PropTypes from 'prop-types';
-import Progress from 'reactstrap/es/Progress';
+import { Progress } from 'reactstrap';
 
 import GrowiArchiveImportOption from '~/models/admin/growi-archive-import-option';
 

+ 3 - 4
apps/app/src/components/Admin/Notification/NotificationDeleteModal.jsx

@@ -2,10 +2,9 @@ import React from 'react';
 
 import { useTranslation } from 'next-i18next';
 import PropTypes from 'prop-types';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 class NotificationDeleteModal extends React.PureComponent {
 

+ 1 - 1
apps/app/src/components/Admin/Notification/NotificationTypeIcon.tsx

@@ -1,6 +1,6 @@
 import React from 'react';
 
-import UncontrolledTooltip from 'reactstrap/es/UncontrolledTooltip';
+import { UncontrolledTooltip } from 'reactstrap';
 
 import type { INotificationType } from '~/client/interfaces/notification';
 

+ 1 - 1
apps/app/src/components/Admin/PluginsExtension/PluginsExtensionPageContents.tsx

@@ -1,7 +1,7 @@
 import React from 'react';
 
 import { useTranslation } from 'next-i18next';
-import Spinner from 'reactstrap/es/Spinner';
+import { Spinner } from 'reactstrap';
 
 import { useSWRxPlugins } from '~/stores/plugin';
 

+ 3 - 5
apps/app/src/components/Admin/Security/DeleteAllShareLinksModal.jsx

@@ -2,11 +2,9 @@ import React from 'react';
 
 import { useTranslation } from 'next-i18next';
 import PropTypes from 'prop-types';
-import Button from 'reactstrap/es/Button';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Button, Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 const DeleteAllShareLinksModal = React.memo((props) => {
   const { t } = props;

+ 5 - 3
apps/app/src/components/Admin/Security/LdapAuthTestModal.jsx

@@ -1,9 +1,11 @@
 import React from 'react';
 
 import PropTypes from 'prop-types';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal,
+  ModalHeader,
+  ModalBody,
+} from 'reactstrap';
 
 import { withUnstatedContainers } from '../../UnstatedUtils';
 

+ 1 - 1
apps/app/src/components/Admin/Security/SamlSecuritySettingContents.jsx

@@ -4,7 +4,7 @@ import React from 'react';
 import { pathUtils } from '@growi/core';
 import { useTranslation } from 'next-i18next';
 import PropTypes from 'prop-types';
-import Collapse from 'reactstrap/es/Collapse';
+import { Collapse } from 'reactstrap';
 import urljoin from 'url-join';
 
 

+ 1 - 1
apps/app/src/components/Admin/Security/SecuritySetting.jsx

@@ -3,7 +3,7 @@ import React from 'react';
 
 import { useTranslation } from 'next-i18next';
 import PropTypes from 'prop-types';
-import Collapse from 'reactstrap/es/Collapse';
+import { Collapse } from 'reactstrap';
 
 import AdminGeneralSecurityContainer from '~/client/services/AdminGeneralSecurityContainer';
 import { toastSuccess, toastError } from '~/client/util/toastr';

+ 1 - 1
apps/app/src/components/Admin/SlackIntegration/Bridge.jsx

@@ -2,7 +2,7 @@ import React from 'react';
 
 import { useTranslation } from 'next-i18next';
 import PropTypes from 'prop-types';
-import UncontrolledTooltip from 'reactstrap/es/UncontrolledTooltip';
+import { UncontrolledTooltip } from 'reactstrap';
 
 const ProxyCircle = () => (
   <div className="grw-bridge-proxy-circle">

+ 3 - 4
apps/app/src/components/Admin/SlackIntegration/ConfirmBotChangeModal.jsx

@@ -2,10 +2,9 @@ import React from 'react';
 
 import { useTranslation } from 'next-i18next';
 import PropTypes from 'prop-types';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 const ConfirmBotChangeModal = (props) => {
   const { t } = useTranslation('admin');

+ 1 - 1
apps/app/src/components/Admin/SlackIntegration/WithProxyAccordions.jsx

@@ -5,7 +5,7 @@ import { SlackbotType } from '@growi/slack';
 import { useTranslation } from 'next-i18next';
 import PropTypes from 'prop-types';
 import { CopyToClipboard } from 'react-copy-to-clipboard';
-import Tooltip from 'reactstrap/es/Tooltip';
+import { Tooltip } from 'reactstrap';
 
 import { apiv3Put, apiv3Post } from '~/client/util/apiv3-client';
 import { toastSuccess, toastError } from '~/client/util/toastr';

+ 3 - 4
apps/app/src/components/Admin/UserGroup/UserGroupDeleteModal.tsx

@@ -3,10 +3,9 @@ import React, {
 } from 'react';
 
 import { useTranslation } from 'next-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 import { IUserGroupHasId } from '~/interfaces/user';
 

+ 3 - 4
apps/app/src/components/Admin/UserGroup/UserGroupModal.tsx

@@ -4,10 +4,9 @@ import React, {
 
 import { Ref } from '@growi/core';
 import { useTranslation } from 'next-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 import { IUserGroup, IUserGroupHasId } from '~/interfaces/user';
 

+ 3 - 4
apps/app/src/components/Admin/UserGroupDetail/UpdateParentConfirmModal.tsx

@@ -1,10 +1,9 @@
 import React, { FC, useState } from 'react';
 
 import { useTranslation } from 'next-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 import { useUpdateUserGroupConfirmModal } from '~/stores/modal';
 

+ 3 - 4
apps/app/src/components/Admin/UserGroupDetail/UserGroupUserModal.tsx

@@ -1,10 +1,9 @@
 import React from 'react';
 
 import { useTranslation } from 'next-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody,
+} from 'reactstrap';
 
 import { IUserGroupHasId } from '~/interfaces/user';
 import { SearchTypes, SearchType } from '~/interfaces/user-group';

+ 3 - 4
apps/app/src/components/Admin/Users/PasswordResetModal.jsx

@@ -2,10 +2,9 @@ import React from 'react';
 
 import { useTranslation } from 'next-i18next';
 import PropTypes from 'prop-types';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 import { apiv3Put } from '~/client/util/apiv3-client';
 import { toastError } from '~/client/util/toastr';

+ 4 - 4
apps/app/src/components/Admin/Users/UserInviteModal.jsx

@@ -3,10 +3,10 @@ import React from 'react';
 import { useTranslation } from 'next-i18next';
 import PropTypes from 'prop-types';
 import { CopyToClipboard } from 'react-copy-to-clipboard';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+// import Button from 'react-bootstrap/es/Button';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 
 import AdminUsersContainer from '~/client/services/AdminUsersContainer';

+ 3 - 4
apps/app/src/components/ArchiveCreateModal.jsx

@@ -2,10 +2,9 @@ import React, { useState, useCallback } from 'react';
 
 import { useTranslation } from 'next-i18next';
 import PropTypes from 'prop-types';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 import { apiv3Post } from '~/client/util/apiv3-client';
 import { toastSuccess, toastError } from '~/client/util/toastr';

+ 1 - 3
apps/app/src/components/BookmarkButtons.tsx

@@ -1,9 +1,7 @@
 import React, { FC, useState, useCallback } from 'react';
 
 import { useTranslation } from 'next-i18next';
-import Popover from 'reactstrap/es/Popover';
-import PopoverBody from 'reactstrap/es/PopoverBody';
-import UncontrolledTooltip from 'reactstrap/es/UncontrolledTooltip';
+import { UncontrolledTooltip, Popover, PopoverBody } from 'reactstrap';
 
 import { useIsGuestUser } from '~/stores/context';
 

+ 1 - 1
apps/app/src/components/Common/CustomCopyToClipBoard.tsx

@@ -2,7 +2,7 @@ import React, { FC, useState, useCallback } from 'react';
 
 import { CopyToClipboard } from 'react-copy-to-clipboard';
 import { useTranslation } from 'react-i18next';
-import Tooltip from 'reactstrap/es/Tooltip';
+import { Tooltip } from 'reactstrap';
 
 type Props = {
   message: string

+ 6 - 4
apps/app/src/components/Common/ImageCropModal.tsx

@@ -5,10 +5,12 @@ import React, {
 import canvasToBlob from 'async-canvas-to-blob';
 import { useTranslation } from 'react-i18next';
 import ReactCrop from 'react-image-crop';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal,
+  ModalHeader,
+  ModalBody,
+  ModalFooter,
+} from 'reactstrap';
 
 
 import { toastError } from '~/client/util/toastr';

+ 1 - 3
apps/app/src/components/CreateTemplateModal.jsx

@@ -3,9 +3,7 @@ import React from 'react';
 import { pathUtils } from '@growi/core';
 import { useTranslation } from 'next-i18next';
 import PropTypes from 'prop-types';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import { Modal, ModalHeader, ModalBody } from 'reactstrap';
 import urljoin from 'url-join';
 
 const CreateTemplateModal = (props) => {

+ 3 - 3
apps/app/src/components/DescendantsPageListModal.tsx

@@ -4,9 +4,9 @@ import React, { useState, useMemo, useEffect } from 'react';
 import { useTranslation } from 'next-i18next';
 import dynamic from 'next/dynamic';
 import { useRouter } from 'next/router';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody,
+} from 'reactstrap';
 
 import { useIsSharedUser } from '~/stores/context';
 import { useDescendantsPageListModal } from '~/stores/modal';

+ 3 - 4
apps/app/src/components/EmptyTrashModal.tsx

@@ -3,10 +3,9 @@ import React, {
 } from 'react';
 
 import { useTranslation } from 'next-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 import { apiv3Delete } from '~/client/util/apiv3-client';
 import { useEmptyTrashModal } from '~/stores/modal';

+ 1 - 1
apps/app/src/components/FormattedDistanceDate.jsx

@@ -2,7 +2,7 @@ import React from 'react';
 
 import { format, formatDistanceStrict, differenceInSeconds } from 'date-fns';
 import PropTypes from 'prop-types';
-import UncontrolledTooltip from 'reactstrap/es/UncontrolledTooltip';
+import { UncontrolledTooltip } from 'reactstrap';
 
 const FormattedDistanceDate = (props) => {
 

+ 1 - 1
apps/app/src/components/InAppNotification/InAppNotificationElm.tsx

@@ -4,7 +4,7 @@ import React, {
 
 import { HasObjectId } from '@growi/core';
 import { UserPicture } from '@growi/ui/dist/components/User/UserPicture';
-import DropdownItem from 'reactstrap/es/DropdownItem';
+import { DropdownItem } from 'reactstrap';
 
 import { IInAppNotificationOpenable } from '~/client/interfaces/in-app-notification-openable';
 import { apiv3Post } from '~/client/util/apiv3-client';

+ 1 - 3
apps/app/src/components/LikeButtons.tsx

@@ -1,9 +1,7 @@
 import React, { FC, useState, useCallback } from 'react';
 
 import { useTranslation } from 'next-i18next';
-import Popover from 'reactstrap/es/Popover';
-import PopoverBody from 'reactstrap/es/PopoverBody';
-import UncontrolledTooltip from 'reactstrap/es/UncontrolledTooltip';
+import { UncontrolledTooltip, Popover, PopoverBody } from 'reactstrap';
 
 import { IUser } from '../interfaces/user';
 

+ 10 - 8
apps/app/src/components/Me/AssociateModal.tsx

@@ -1,14 +1,16 @@
 import React, { useState, useCallback } from 'react';
 
 import { useTranslation } from 'next-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
-import Nav from 'reactstrap/es/Nav';
-import NavLink from 'reactstrap/es/NavLink';
-import TabContent from 'reactstrap/es/TabContent';
-import TabPane from 'reactstrap/es/TabPane';
+import {
+  Modal,
+  ModalHeader,
+  ModalBody,
+  ModalFooter,
+  Nav,
+  NavLink,
+  TabContent,
+  TabPane,
+} from 'reactstrap';
 
 import { toastSuccess, toastError } from '~/client/util/toastr';
 import { usePersonalSettings, useSWRxPersonalExternalAccounts } from '~/stores/personal-settings';

+ 6 - 4
apps/app/src/components/Me/DisassociateModal.tsx

@@ -1,10 +1,12 @@
 import React, { useCallback } from 'react';
 
 import { useTranslation } from 'next-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal,
+  ModalHeader,
+  ModalBody,
+  ModalFooter,
+} from 'reactstrap';
 
 import { toastSuccess, toastError } from '~/client/util/toastr';
 import { IExternalAccount } from '~/interfaces/external-account';

+ 1 - 1
apps/app/src/components/Navbar/AppearanceModeDropdown.tsx

@@ -4,7 +4,7 @@ import React, {
 
 import { useTranslation } from 'next-i18next';
 import { useRipple } from 'react-use-ripple';
-import UncontrolledTooltip from 'reactstrap/es/UncontrolledTooltip';
+import { UncontrolledTooltip } from 'reactstrap';
 
 import { useUserUISettings } from '~/client/services/user-ui-settings';
 import { usePreferDrawerModeByUser, usePreferDrawerModeOnEditByUser } from '~/stores/ui';

+ 1 - 1
apps/app/src/components/Navbar/GrowiContextualSubNavigation.tsx

@@ -6,7 +6,7 @@ import {
 import { useTranslation } from 'next-i18next';
 import dynamic from 'next/dynamic';
 import { useRouter } from 'next/router';
-import DropdownItem from 'reactstrap/es/DropdownItem';
+import { DropdownItem } from 'reactstrap';
 
 import { exportAsMarkdown, updateContentWidth, useUpdateStateAfterSave } from '~/client/services/page-operation';
 import { apiPost } from '~/client/util/apiv1-client';

+ 1 - 1
apps/app/src/components/Navbar/GrowiNavbar.tsx

@@ -6,7 +6,7 @@ import { useTranslation } from 'next-i18next';
 import dynamic from 'next/dynamic';
 import Link from 'next/link';
 import { useRipple } from 'react-use-ripple';
-import UncontrolledTooltip from 'reactstrap/es/UncontrolledTooltip';
+import { UncontrolledTooltip } from 'reactstrap';
 
 import {
   useIsSearchPage, useIsGuestUser, useIsSearchServiceConfigured, useAppTitle, useConfidential, useIsDefaultLogo,

+ 1 - 1
apps/app/src/components/Navbar/PageEditorModeManager.jsx

@@ -2,7 +2,7 @@ import React, { useCallback } from 'react';
 
 import { useTranslation } from 'next-i18next';
 import PropTypes from 'prop-types';
-import UncontrolledTooltip from 'reactstrap/es/UncontrolledTooltip';
+import { UncontrolledTooltip } from 'reactstrap';
 
 import { useCurrentUser, useHackmdUri } from '~/stores/context';
 import { EditorMode, useIsDeviceSmallerThanMd } from '~/stores/ui';

+ 1 - 1
apps/app/src/components/Navbar/SubNavButtons.tsx

@@ -1,7 +1,7 @@
 import React, { useCallback, useMemo } from 'react';
 
 import { useTranslation } from 'next-i18next';
-import DropdownItem from 'reactstrap/es/DropdownItem';
+import { DropdownItem } from 'reactstrap';
 
 import {
   toggleBookmark, toggleLike, toggleSubscribe,

+ 1 - 2
apps/app/src/components/NotAvailable.tsx

@@ -1,8 +1,7 @@
 import React from 'react';
 
 import { Disable } from 'react-disable';
-import type { UncontrolledTooltipProps } from 'reactstrap';
-import UncontrolledTooltip from 'reactstrap/es/UncontrolledTooltip';
+import { UncontrolledTooltip, UncontrolledTooltipProps } from 'reactstrap';
 
 type NotAvailableProps = {
   children: JSX.Element

+ 3 - 4
apps/app/src/components/Page/TagEditModal.jsx

@@ -2,10 +2,9 @@ import React, { useState, useEffect } from 'react';
 
 import { useTranslation } from 'next-i18next';
 import PropTypes from 'prop-types';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 import TagsInput from './TagsInput';
 

+ 3 - 3
apps/app/src/components/PageAccessoriesModal.tsx

@@ -1,9 +1,9 @@
 import React, { useEffect, useMemo, useState } from 'react';
 
 import { useTranslation } from 'next-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalBody, ModalHeader,
+} from 'reactstrap';
 
 import {
   useDisableLinkSharing, useIsGuestUser, useIsSharedUser,

+ 3 - 4
apps/app/src/components/PageAlert/FixPageGrantAlert.tsx

@@ -1,10 +1,9 @@
 import React, { useEffect, useState, useCallback } from 'react';
 
 import { useTranslation } from 'react-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 import { apiv3Put } from '~/client/util/apiv3-client';
 import { toastError, toastSuccess } from '~/client/util/toastr';

+ 4 - 5
apps/app/src/components/PageAttachment/DeleteAttachmentModal.tsx

@@ -3,11 +3,10 @@ import React, { useCallback } from 'react';
 
 import { HasObjectId, IAttachment } from '@growi/core';
 import { UserPicture } from '@growi/ui/dist/components/User/UserPicture';
-import Button from 'reactstrap/es/Button';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Button,
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 import { Username } from '../User/Username';
 

+ 1 - 1
apps/app/src/components/PageComment.tsx

@@ -4,7 +4,7 @@ import React, {
 
 import { isPopulated, getIdForRef } from '@growi/core/dist/interfaces/common';
 import { type IRevisionHasId } from '@growi/core/dist/interfaces/revision';
-import Button from 'reactstrap/es/Button';
+import { Button } from 'reactstrap';
 
 import { apiPost } from '~/client/util/apiv1-client';
 import { toastError } from '~/client/util/toastr';

+ 1 - 1
apps/app/src/components/PageComment/Comment.tsx

@@ -6,7 +6,7 @@ import { UserPicture } from '@growi/ui/dist/components/User/UserPicture';
 import { format, parseISO } from 'date-fns';
 import { useTranslation } from 'next-i18next';
 import Link from 'next/link';
-import UncontrolledTooltip from 'reactstrap/es/UncontrolledTooltip';
+import { UncontrolledTooltip } from 'reactstrap';
 import urljoin from 'url-join';
 
 import type { RendererOptions } from '~/interfaces/renderer-options';

+ 3 - 6
apps/app/src/components/PageComment/DeleteCommentModal.tsx

@@ -2,12 +2,9 @@ import React from 'react';
 
 import { UserPicture } from '@growi/ui/dist/components/User/UserPicture';
 import { format } from 'date-fns';
-import Button from 'reactstrap/es/Button';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
-
+import {
+  Button, Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 import { ICommentHasId } from '../../interfaces/comment';
 import { Username } from '../User/Username';

+ 1 - 1
apps/app/src/components/PageComment/ReplyComments.tsx

@@ -2,7 +2,7 @@
 import React, { useState } from 'react';
 
 import type { IUser } from '@growi/core';
-import Collapse from 'reactstrap/es/Collapse';
+import { Collapse } from 'reactstrap';
 
 import type { RendererOptions } from '~/interfaces/renderer-options';
 

+ 3 - 7
apps/app/src/components/PageCreateModal.jsx

@@ -6,13 +6,9 @@ import { pagePathUtils, pathUtils } from '@growi/core';
 import { format } from 'date-fns';
 import { useTranslation } from 'next-i18next';
 import { useRouter } from 'next/router';
-import DropdownItem from 'reactstrap/es/DropdownItem';
-import DropdownMenu from 'reactstrap/es/DropdownMenu';
-import DropdownToggle from 'reactstrap/es/DropdownToggle';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalHeader from 'reactstrap/es/ModalHeader';
-import UncontrolledButtonDropdown from 'reactstrap/es/UncontrolledButtonDropdown';
+import {
+  Modal, ModalHeader, ModalBody, UncontrolledButtonDropdown, DropdownToggle, DropdownMenu, DropdownItem,
+} from 'reactstrap';
 import { debounce } from 'throttle-debounce';
 
 import { toastError } from '~/client/util/toastr';

+ 3 - 4
apps/app/src/components/PageDeleteModal.tsx

@@ -4,10 +4,9 @@ import React, {
 
 import { HasObjectId, pagePathUtils } from '@growi/core';
 import { useTranslation } from 'next-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 import { apiPost } from '~/client/util/apiv1-client';
 import { apiv3Post } from '~/client/util/apiv3-client';

+ 3 - 4
apps/app/src/components/PageDuplicateModal.tsx

@@ -3,10 +3,9 @@ import React, {
 } from 'react';
 
 import { useTranslation } from 'next-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 import { debounce } from 'throttle-debounce';
 
 import { apiv3Get, apiv3Post } from '~/client/util/apiv3-client';

+ 1 - 1
apps/app/src/components/PageEditor/CodeMirrorEditor.jsx

@@ -3,7 +3,7 @@ import React, { useCallback, memo } from 'react';
 import { commands } from 'codemirror';
 import * as loadCssSync from 'load-css-file';
 import PropTypes from 'prop-types';
-import Button from 'reactstrap/es/Button';
+import { Button } from 'reactstrap';
 import * as loadScript from 'simple-load-script';
 import { throttle, debounce } from 'throttle-debounce';
 import urljoin from 'url-join';

+ 4 - 2
apps/app/src/components/PageEditor/DrawioModal.tsx

@@ -4,8 +4,10 @@ import React, {
   useMemo,
 } from 'react';
 
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
+import {
+  Modal,
+  ModalBody,
+} from 'reactstrap';
 
 import { getDiagramsNetLangCode } from '~/client/util/locale-utils';
 import { useRendererConfig } from '~/stores/context';

+ 3 - 3
apps/app/src/components/PageEditor/Editor.tsx

@@ -6,9 +6,9 @@ import React, {
 
 import Dropzone from 'react-dropzone';
 import { useTranslation } from 'react-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody,
+} from 'reactstrap';
 
 import { toastError, toastSuccess } from '~/client/util/toastr';
 import { IEditorSettings } from '~/interfaces/editor-settings';

+ 1 - 1
apps/app/src/components/PageEditor/EmojiPicker.tsx

@@ -1,7 +1,7 @@
 import React, { FC, useCallback } from 'react';
 
 import { Picker } from 'emoji-mart';
-import Modal from 'reactstrap/es/Modal';
+import { Modal } from 'reactstrap';
 
 import { useNextThemes } from '~/stores/use-next-themes';
 

+ 3 - 4
apps/app/src/components/PageEditor/GridEditModal.jsx

@@ -2,10 +2,9 @@ import React from 'react';
 
 import { useTranslation } from 'next-i18next';
 import PropTypes from 'prop-types';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 import BootstrapGrid from '~/client/models/BootstrapGrid';
 

+ 8 - 6
apps/app/src/components/PageEditor/LinkEditModal.jsx

@@ -4,12 +4,14 @@ import path from 'path';
 
 import { useTranslation } from 'next-i18next';
 import PropTypes from 'prop-types';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
-import Popover from 'reactstrap/es/Popover';
-import PopoverBody from 'reactstrap/es/PopoverBody';
+import {
+  Modal,
+  ModalHeader,
+  ModalBody,
+  ModalFooter,
+  Popover,
+  PopoverBody,
+} from 'reactstrap';
 import validator from 'validator';
 
 

+ 1 - 1
apps/app/src/components/PageEditor/TextAreaEditor.jsx

@@ -1,7 +1,7 @@
 import React from 'react';
 // import PropTypes from 'prop-types';
 
-import Input from 'reactstrap/es/Input';
+import { Input } from 'reactstrap';
 
 import InterceptorManager from '~/services/interceptor-manager';
 import loggerFactory from '~/utils/logger';

+ 1 - 1
apps/app/src/components/PageList/PageListItemL.tsx

@@ -11,7 +11,7 @@ import { format } from 'date-fns';
 import { useTranslation } from 'next-i18next';
 import Link from 'next/link';
 import Clamp from 'react-multiline-clamp';
-import CustomInput from 'reactstrap/es/CustomInput';
+import { CustomInput } from 'reactstrap';
 
 import { ISelectable } from '~/client/interfaces/selectable-all';
 import { unlink, bookmark, unbookmark } from '~/client/services/page-operation';

+ 3 - 2
apps/app/src/components/PagePresentationModal.tsx

@@ -4,8 +4,9 @@ import type { PresentationProps } from '@growi/presentation';
 import { useFullScreen } from '@growi/ui/dist/utils';
 import dynamic from 'next/dynamic';
 import type { ReactMarkdownOptions } from 'react-markdown/lib/react-markdown';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
+import {
+  Modal, ModalBody,
+} from 'reactstrap';
 
 import { usePagePresentationModal } from '~/stores/modal';
 import { useSWRxCurrentPage } from '~/stores/page';

+ 3 - 5
apps/app/src/components/PageRenameModal.tsx

@@ -4,11 +4,9 @@ import React, {
 
 import { pagePathUtils } from '@growi/core';
 import { useTranslation } from 'next-i18next';
-import Collapse from 'reactstrap/es/Collapse';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Collapse, Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 import { debounce } from 'throttle-debounce';
 
 import { apiv3Get, apiv3Put } from '~/client/util/apiv3-client';

+ 1 - 3
apps/app/src/components/PaginationWrapper.tsx

@@ -2,9 +2,7 @@ import React, {
   FC, memo, useCallback, useMemo,
 } from 'react';
 
-import Pagination from 'reactstrap/es/Pagination';
-import PaginationItem from 'reactstrap/es/PaginationItem';
-import PaginationLink from 'reactstrap/es/PaginationLink';
+import { Pagination, PaginationItem, PaginationLink } from 'reactstrap';
 
 
 type Props = {

+ 3 - 8
apps/app/src/components/PrivateLegacyPages.tsx

@@ -3,14 +3,9 @@ import React, {
 } from 'react';
 
 import { useTranslation } from 'next-i18next';
-import DropdownItem from 'reactstrap/es/DropdownItem';
-import DropdownMenu from 'reactstrap/es/DropdownMenu';
-import DropdownToggle from 'reactstrap/es/DropdownToggle';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
-import UncontrolledButtonDropdown from 'reactstrap/es/UncontrolledButtonDropdown';
+import {
+  UncontrolledButtonDropdown, DropdownToggle, DropdownMenu, DropdownItem, Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 import { ISelectableAll, ISelectableAndIndeterminatable } from '~/client/interfaces/selectable-all';
 import { apiv3Post } from '~/client/util/apiv3-client';

+ 3 - 4
apps/app/src/components/PrivateLegacyPagesMigrationModal.tsx

@@ -1,10 +1,9 @@
 import React, { useState } from 'react';
 
 import { useTranslation } from 'next-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 import { apiv3Post } from '~/client/util/apiv3-client';
 import { usePrivateLegacyPagesMigrationModal } from '~/stores/modal';

+ 3 - 4
apps/app/src/components/PutbackPageModal.jsx

@@ -2,10 +2,9 @@ import React, { useState, useCallback } from 'react';
 
 
 import { useTranslation } from 'next-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal, ModalHeader, ModalBody, ModalFooter,
+} from 'reactstrap';
 
 import { apiPost } from '~/client/util/apiv1-client';
 import { usePutBackPageModal } from '~/stores/modal';

+ 6 - 7
apps/app/src/components/SavePageControls/GrantSelector.tsx

@@ -2,13 +2,12 @@ import React, { useCallback, useState } from 'react';
 
 import { isPopulated } from '@growi/core';
 import { useTranslation } from 'next-i18next';
-import DropdownItem from 'reactstrap/es/DropdownItem';
-import DropdownMenu from 'reactstrap/es/DropdownMenu';
-import DropdownToggle from 'reactstrap/es/DropdownToggle';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalHeader from 'reactstrap/es/ModalHeader';
-import UncontrolledDropdown from 'reactstrap/es/UncontrolledDropdown';
+import {
+  UncontrolledDropdown,
+  DropdownToggle, DropdownMenu, DropdownItem,
+
+  Modal, ModalHeader, ModalBody,
+} from 'reactstrap';
 
 import { IPageGrantData } from '~/interfaces/page';
 import { IUserGroupHasId } from '~/interfaces/user';

+ 1 - 3
apps/app/src/components/SearchPage/OperateAllControl.tsx

@@ -1,9 +1,7 @@
 import React, {
   ChangeEvent, forwardRef, ForwardRefRenderFunction, useImperativeHandle, useRef,
 } from 'react';
-
-import CustomInput from 'reactstrap/es/CustomInput';
-
+import { CustomInput } from 'reactstrap';
 import { ISelectableAndIndeterminatable } from '~/client/interfaces/selectable-all';
 import { IndeterminateInputElement } from '~/interfaces/indeterminate-input-elm';
 

+ 4 - 4
apps/app/src/components/SearchPage/SearchOptionModal.tsx

@@ -1,9 +1,9 @@
 import React, { FC } from 'react';
-
 import { useTranslation } from 'next-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+
+import {
+  Modal, ModalHeader, ModalBody,
+} from 'reactstrap';
 
 
 type Props = {

+ 1 - 1
apps/app/src/components/SearchPage/SearchResultContent.tsx

@@ -6,7 +6,7 @@ import { getIdForRef } from '@growi/core';
 import { useTranslation } from 'next-i18next';
 import dynamic from 'next/dynamic';
 import { animateScroll } from 'react-scroll';
-import DropdownItem from 'reactstrap/es/DropdownItem';
+import { DropdownItem } from 'reactstrap';
 
 
 import { exportAsMarkdown, updateContentWidth } from '~/client/services/page-operation';

+ 1 - 3
apps/app/src/components/ShortcutsModal.tsx

@@ -1,9 +1,7 @@
 import React from 'react';
 
 import { useTranslation } from 'next-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import { Modal, ModalHeader, ModalBody } from 'reactstrap';
 
 import KeyboardReturnEnterIcon from '~/components/Icons/KeyboardReturnEnterIcon';
 import { useShortcutsModal } from '~/stores/modal';

+ 3 - 2
apps/app/src/components/StaffCredit/StaffCredit.tsx

@@ -1,8 +1,9 @@
 import React, { useCallback, useState } from 'react';
 
 import { animateScroll } from 'react-scroll';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
+import {
+  Modal, ModalBody,
+} from 'reactstrap';
 
 import { useSWRxStaffs } from '~/stores/staff';
 import loggerFactory from '~/utils/logger';

+ 1 - 1
apps/app/src/components/SubscribeButton.tsx

@@ -2,7 +2,7 @@ import React, { FC, useCallback } from 'react';
 
 import { SubscriptionStatusType } from '@growi/core';
 import { useTranslation } from 'next-i18next';
-import UncontrolledTooltip from 'reactstrap/es/UncontrolledTooltip';
+import { UncontrolledTooltip } from 'reactstrap';
 
 import styles from './SubscribeButton.module.scss';
 

+ 6 - 4
apps/app/src/components/TemplateModal.tsx

@@ -2,10 +2,12 @@ import React, { useCallback, useState } from 'react';
 
 import { ITemplate } from '@growi/core';
 import { useTranslation } from 'next-i18next';
-import Modal from 'reactstrap/es/Modal';
-import ModalBody from 'reactstrap/es/ModalBody';
-import ModalFooter from 'reactstrap/es/ModalFooter';
-import ModalHeader from 'reactstrap/es/ModalHeader';
+import {
+  Modal,
+  ModalHeader,
+  ModalBody,
+  ModalFooter,
+} from 'reactstrap';
 
 import { useTemplateModal } from '~/stores/modal';
 import { usePreviewOptions } from '~/stores/renderer';