diff --git a/packages/twenty-front/src/modules/command-menu-item/hooks/useShouldCommandMenuItemBeRegisteredParams.ts b/packages/twenty-front/src/modules/command-menu-item/hooks/useShouldCommandMenuItemBeRegisteredParams.ts index d42d0e1359..a3a83212cc 100644 --- a/packages/twenty-front/src/modules/command-menu-item/hooks/useShouldCommandMenuItemBeRegisteredParams.ts +++ b/packages/twenty-front/src/modules/command-menu-item/hooks/useShouldCommandMenuItemBeRegisteredParams.ts @@ -7,7 +7,7 @@ import { contextStoreCurrentViewTypeComponentState } from '@/context-store/state import { contextStoreNumberOfSelectedRecordsComponentState } from '@/context-store/states/contextStoreNumberOfSelectedRecordsComponentState'; import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState'; import { ContextStoreViewType } from '@/context-store/types/ContextStoreViewType'; -import { useNavigationMenuItemsData } from '@/navigation-menu-item/hooks/useNavigationMenuItemsData'; +import { useNavigationMenuItemsData } from '@/navigation-menu-item/display/hooks/useNavigationMenuItemsData'; import { CoreObjectNameSingular } from 'twenty-shared/types'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { useObjectPermissionsForObject } from '@/object-record/hooks/useObjectPermissionsForObject'; diff --git a/packages/twenty-front/src/modules/command-menu-item/record/no-selection/components/EditNavigationSidebarNoSelectionRecordCommand.tsx b/packages/twenty-front/src/modules/command-menu-item/record/no-selection/components/EditNavigationSidebarNoSelectionRecordCommand.tsx index 57e13744fa..aa7635d0e2 100644 --- a/packages/twenty-front/src/modules/command-menu-item/record/no-selection/components/EditNavigationSidebarNoSelectionRecordCommand.tsx +++ b/packages/twenty-front/src/modules/command-menu-item/record/no-selection/components/EditNavigationSidebarNoSelectionRecordCommand.tsx @@ -1,5 +1,5 @@ import { Command } from '@/command-menu-item/display/components/Command'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; export const EditNavigationSidebarNoSelectionRecordCommand = () => { diff --git a/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/AddToFavoritesSingleRecordCommand.tsx b/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/AddToFavoritesSingleRecordCommand.tsx index 72ec78f57d..45e8ef3b4e 100644 --- a/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/AddToFavoritesSingleRecordCommand.tsx +++ b/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/AddToFavoritesSingleRecordCommand.tsx @@ -1,7 +1,7 @@ import { Command } from '@/command-menu-item/display/components/Command'; import { useSelectedRecordIdOrThrow } from '@/command-menu-item/record/single-record/hooks/useSelectedRecordIdOrThrow'; import { useContextStoreObjectMetadataItemOrThrow } from '@/context-store/hooks/useContextStoreObjectMetadataItemOrThrow'; -import { useCreateNavigationMenuItem } from '@/navigation-menu-item/hooks/useCreateNavigationMenuItem'; +import { useCreateNavigationMenuItem } from '@/navigation-menu-item/common/hooks/useCreateNavigationMenuItem'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { useAtomFamilyStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomFamilyStateValue'; import { isDefined } from 'twenty-shared/utils'; diff --git a/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/DeleteSingleRecordCommand.tsx b/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/DeleteSingleRecordCommand.tsx index 3766da74c7..ce83d78318 100644 --- a/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/DeleteSingleRecordCommand.tsx +++ b/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/DeleteSingleRecordCommand.tsx @@ -1,7 +1,7 @@ import { Command } from '@/command-menu-item/display/components/Command'; import { useSelectedRecordIdOrThrow } from '@/command-menu-item/record/single-record/hooks/useSelectedRecordIdOrThrow'; -import { useNavigationMenuItemsData } from '@/navigation-menu-item/hooks/useNavigationMenuItemsData'; -import { useRemoveNavigationMenuItemByTargetRecordId } from '@/navigation-menu-item/hooks/useRemoveNavigationMenuItemByTargetRecordId'; +import { useNavigationMenuItemsData } from '@/navigation-menu-item/display/hooks/useNavigationMenuItemsData'; +import { useRemoveNavigationMenuItemByTargetRecordId } from '@/navigation-menu-item/common/hooks/useRemoveNavigationMenuItemByTargetRecordId'; import { useDeleteOneRecord } from '@/object-record/hooks/useDeleteOneRecord'; import { useRemoveSelectedRecordsFromRecordBoard } from '@/object-record/record-board/hooks/useRemoveSelectedRecordsFromRecordBoard'; import { useRecordIndexIdFromCurrentContextStore } from '@/object-record/record-index/hooks/useRecordIndexIdFromCurrentContextStore'; diff --git a/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/RemoveFromFavoritesSingleRecordCommand.tsx b/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/RemoveFromFavoritesSingleRecordCommand.tsx index 3b996db0a4..9cab614aa4 100644 --- a/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/RemoveFromFavoritesSingleRecordCommand.tsx +++ b/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/RemoveFromFavoritesSingleRecordCommand.tsx @@ -1,8 +1,8 @@ import { Command } from '@/command-menu-item/display/components/Command'; import { useSelectedRecordIdOrThrow } from '@/command-menu-item/record/single-record/hooks/useSelectedRecordIdOrThrow'; import { useContextStoreObjectMetadataItemOrThrow } from '@/context-store/hooks/useContextStoreObjectMetadataItemOrThrow'; -import { useDeleteNavigationMenuItem } from '@/navigation-menu-item/hooks/useDeleteNavigationMenuItem'; -import { useNavigationMenuItemsData } from '@/navigation-menu-item/hooks/useNavigationMenuItemsData'; +import { useDeleteNavigationMenuItem } from '@/navigation-menu-item/common/hooks/useDeleteNavigationMenuItem'; +import { useNavigationMenuItemsData } from '@/navigation-menu-item/display/hooks/useNavigationMenuItemsData'; import { isDefined } from 'twenty-shared/utils'; export const RemoveFromFavoritesSingleRecordCommand = () => { diff --git a/packages/twenty-front/src/modules/command-menu-item/server-items/hooks/useCommandMenuContextApi.ts b/packages/twenty-front/src/modules/command-menu-item/server-items/hooks/useCommandMenuContextApi.ts index 5e86caf85b..3d5a4d9b6c 100644 --- a/packages/twenty-front/src/modules/command-menu-item/server-items/hooks/useCommandMenuContextApi.ts +++ b/packages/twenty-front/src/modules/command-menu-item/server-items/hooks/useCommandMenuContextApi.ts @@ -7,7 +7,7 @@ import { contextStoreIsPageInEditModeComponentState } from '@/context-store/stat import { contextStoreNumberOfSelectedRecordsComponentState } from '@/context-store/states/contextStoreNumberOfSelectedRecordsComponentState'; import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState'; import { ContextStoreViewType } from '@/context-store/types/ContextStoreViewType'; -import { useNavigationMenuItemsData } from '@/navigation-menu-item/hooks/useNavigationMenuItemsData'; +import { useNavigationMenuItemsData } from '@/navigation-menu-item/display/hooks/useNavigationMenuItemsData'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; import { useObjectPermissionsForObject } from '@/object-record/hooks/useObjectPermissionsForObject'; import { hasAnySoftDeleteFilterOnViewComponentSelector } from '@/object-record/record-filter/states/hasAnySoftDeleteFilterOnView'; diff --git a/packages/twenty-front/src/modules/command-menu/components/CommandMenuAddToNavDroppableDndKit.tsx b/packages/twenty-front/src/modules/command-menu/components/CommandMenuAddToNavDroppableDndKit.tsx index 66a0a6e52b..a2ac2662a3 100644 --- a/packages/twenty-front/src/modules/command-menu/components/CommandMenuAddToNavDroppableDndKit.tsx +++ b/packages/twenty-front/src/modules/command-menu/components/CommandMenuAddToNavDroppableDndKit.tsx @@ -1,7 +1,7 @@ import { useDroppable } from '@dnd-kit/react'; import { type ReactNode } from 'react'; -import { ADD_TO_NAV_SOURCE_DROPPABLE_ID } from '@/navigation-menu-item/constants/AddToNavSourceDroppableId'; +import { ADD_TO_NAV_SOURCE_DROPPABLE_ID } from '@/navigation-menu-item/common/constants/AddToNavSourceDroppableId'; import type { AddToNavDroppableProvided } from '@/command-menu/components/CommandMenuAddToNavDroppableTypes'; diff --git a/packages/twenty-front/src/modules/command-menu/components/CommandMenuItemWithAddToNavigationDragDndKit.tsx b/packages/twenty-front/src/modules/command-menu/components/CommandMenuItemWithAddToNavigationDragDndKit.tsx index dc3b408c9a..116305cea4 100644 --- a/packages/twenty-front/src/modules/command-menu/components/CommandMenuItemWithAddToNavigationDragDndKit.tsx +++ b/packages/twenty-front/src/modules/command-menu/components/CommandMenuItemWithAddToNavigationDragDndKit.tsx @@ -1,7 +1,7 @@ import { useDraggable } from '@dnd-kit/react'; import { type ReactNode } from 'react'; -import { ADD_TO_NAV_SOURCE_DROPPABLE_ID } from '@/navigation-menu-item/constants/AddToNavSourceDroppableId'; +import { ADD_TO_NAV_SOURCE_DROPPABLE_ID } from '@/navigation-menu-item/common/constants/AddToNavSourceDroppableId'; type CommandMenuItemWithAddToNavigationDragDndKitProps = { id: string; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/constants/AddToNavSourceDroppableId.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/constants/AddToNavSourceDroppableId.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/constants/AddToNavSourceDroppableId.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/constants/AddToNavSourceDroppableId.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/constants/DndKitDropTargetIdSeparator.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/constants/DndKitDropTargetIdSeparator.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/constants/DndKitDropTargetIdSeparator.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/constants/DndKitDropTargetIdSeparator.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/constants/FolderIconDefault.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/constants/FolderIconDefault.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/constants/FolderIconDefault.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/constants/FolderIconDefault.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/constants/NavigationMenuItemDefaultColorFolder.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/constants/NavigationMenuItemDefaultColorFolder.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/constants/NavigationMenuItemDefaultColorFolder.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/constants/NavigationMenuItemDefaultColorFolder.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/constants/NavigationMenuItemDefaultColorLink.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/constants/NavigationMenuItemDefaultColorLink.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/constants/NavigationMenuItemDefaultColorLink.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/constants/NavigationMenuItemDefaultColorLink.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/constants/NavigationMenuItemDefaultIconColor.constant.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/constants/NavigationMenuItemDefaultIconColor.constant.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/constants/NavigationMenuItemDefaultIconColor.constant.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/constants/NavigationMenuItemDefaultIconColor.constant.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/constants/NavigationMenuItemDroppableIds.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/constants/NavigationMenuItemDroppableIds.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/constants/NavigationMenuItemDroppableIds.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/constants/NavigationMenuItemDroppableIds.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/constants/NavigationMenuItemFolderDeleteModalId.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/constants/NavigationMenuItemFolderDeleteModalId.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/constants/NavigationMenuItemFolderDeleteModalId.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/constants/NavigationMenuItemFolderDeleteModalId.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/constants/NavigationSections.constants.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/constants/NavigationSections.constants.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/constants/NavigationSections.constants.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/constants/NavigationSections.constants.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/contexts/NavigationDragSourceContext.tsx b/packages/twenty-front/src/modules/navigation-menu-item/common/contexts/NavigationDragSourceContext.tsx similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/contexts/NavigationDragSourceContext.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/common/contexts/NavigationDragSourceContext.tsx diff --git a/packages/twenty-front/src/modules/navigation-menu-item/contexts/NavigationDropTargetContext.tsx b/packages/twenty-front/src/modules/navigation-menu-item/common/contexts/NavigationDropTargetContext.tsx similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/contexts/NavigationDropTargetContext.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/common/contexts/NavigationDropTargetContext.tsx diff --git a/packages/twenty-front/src/modules/navigation-menu-item/contexts/NavigationMenuItemDragContext.tsx b/packages/twenty-front/src/modules/navigation-menu-item/common/contexts/NavigationMenuItemDragContext.tsx similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/contexts/NavigationMenuItemDragContext.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/common/contexts/NavigationMenuItemDragContext.tsx diff --git a/packages/twenty-front/src/modules/navigation-menu-item/contexts/SortableDropTargetRefContext.tsx b/packages/twenty-front/src/modules/navigation-menu-item/common/contexts/SortableDropTargetRefContext.tsx similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/contexts/SortableDropTargetRefContext.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/common/contexts/SortableDropTargetRefContext.tsx diff --git a/packages/twenty-front/src/modules/navigation-menu-item/graphql/fragments/navigationMenuItemFragment.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/graphql/fragments/navigationMenuItemFragment.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/graphql/fragments/navigationMenuItemFragment.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/graphql/fragments/navigationMenuItemFragment.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/graphql/fragments/navigationMenuItemQueryFragment.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/graphql/fragments/navigationMenuItemQueryFragment.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/graphql/fragments/navigationMenuItemQueryFragment.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/graphql/fragments/navigationMenuItemQueryFragment.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/graphql/mutations/createNavigationMenuItem.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/graphql/mutations/createNavigationMenuItem.ts similarity index 85% rename from packages/twenty-front/src/modules/navigation-menu-item/graphql/mutations/createNavigationMenuItem.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/graphql/mutations/createNavigationMenuItem.ts index a26ff9ebf7..f9c5188f9c 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/graphql/mutations/createNavigationMenuItem.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/graphql/mutations/createNavigationMenuItem.ts @@ -1,5 +1,5 @@ import { gql } from '@apollo/client'; -import { NAVIGATION_MENU_ITEM_FRAGMENT } from '@/navigation-menu-item/graphql/fragments/navigationMenuItemFragment'; +import { NAVIGATION_MENU_ITEM_FRAGMENT } from '@/navigation-menu-item/common/graphql/fragments/navigationMenuItemFragment'; export const CREATE_NAVIGATION_MENU_ITEM = gql` ${NAVIGATION_MENU_ITEM_FRAGMENT} diff --git a/packages/twenty-front/src/modules/navigation-menu-item/graphql/mutations/deleteNavigationMenuItem.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/graphql/mutations/deleteNavigationMenuItem.ts similarity index 84% rename from packages/twenty-front/src/modules/navigation-menu-item/graphql/mutations/deleteNavigationMenuItem.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/graphql/mutations/deleteNavigationMenuItem.ts index 86ead1d973..e8fcf3d608 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/graphql/mutations/deleteNavigationMenuItem.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/graphql/mutations/deleteNavigationMenuItem.ts @@ -1,5 +1,5 @@ import { gql } from '@apollo/client'; -import { NAVIGATION_MENU_ITEM_FRAGMENT } from '@/navigation-menu-item/graphql/fragments/navigationMenuItemFragment'; +import { NAVIGATION_MENU_ITEM_FRAGMENT } from '@/navigation-menu-item/common/graphql/fragments/navigationMenuItemFragment'; export const DELETE_NAVIGATION_MENU_ITEM = gql` ${NAVIGATION_MENU_ITEM_FRAGMENT} diff --git a/packages/twenty-front/src/modules/navigation-menu-item/graphql/mutations/updateNavigationMenuItem.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/graphql/mutations/updateNavigationMenuItem.ts similarity index 85% rename from packages/twenty-front/src/modules/navigation-menu-item/graphql/mutations/updateNavigationMenuItem.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/graphql/mutations/updateNavigationMenuItem.ts index 67a92551ae..448f45afa1 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/graphql/mutations/updateNavigationMenuItem.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/graphql/mutations/updateNavigationMenuItem.ts @@ -1,5 +1,5 @@ import { gql } from '@apollo/client'; -import { NAVIGATION_MENU_ITEM_FRAGMENT } from '@/navigation-menu-item/graphql/fragments/navigationMenuItemFragment'; +import { NAVIGATION_MENU_ITEM_FRAGMENT } from '@/navigation-menu-item/common/graphql/fragments/navigationMenuItemFragment'; export const UPDATE_NAVIGATION_MENU_ITEM = gql` ${NAVIGATION_MENU_ITEM_FRAGMENT} diff --git a/packages/twenty-front/src/modules/navigation-menu-item/graphql/queries/findManyNavigationMenuItems.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/graphql/queries/findManyNavigationMenuItems.ts similarity index 81% rename from packages/twenty-front/src/modules/navigation-menu-item/graphql/queries/findManyNavigationMenuItems.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/graphql/queries/findManyNavigationMenuItems.ts index 79502d0b9e..a1a5691599 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/graphql/queries/findManyNavigationMenuItems.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/graphql/queries/findManyNavigationMenuItems.ts @@ -1,4 +1,4 @@ -import { NAVIGATION_MENU_ITEM_QUERY_FRAGMENT } from '@/navigation-menu-item/graphql/fragments/navigationMenuItemQueryFragment'; +import { NAVIGATION_MENU_ITEM_QUERY_FRAGMENT } from '@/navigation-menu-item/common/graphql/fragments/navigationMenuItemQueryFragment'; import { gql } from '@apollo/client'; export const FIND_MANY_NAVIGATION_MENU_ITEMS = gql` diff --git a/packages/twenty-front/src/modules/navigation-menu-item/graphql/queries/findOneNavigationMenuItem.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/graphql/queries/findOneNavigationMenuItem.ts similarity index 82% rename from packages/twenty-front/src/modules/navigation-menu-item/graphql/queries/findOneNavigationMenuItem.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/graphql/queries/findOneNavigationMenuItem.ts index 1a9a603af6..dcd631c04c 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/graphql/queries/findOneNavigationMenuItem.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/graphql/queries/findOneNavigationMenuItem.ts @@ -1,4 +1,4 @@ -import { NAVIGATION_MENU_ITEM_QUERY_FRAGMENT } from '@/navigation-menu-item/graphql/fragments/navigationMenuItemQueryFragment'; +import { NAVIGATION_MENU_ITEM_QUERY_FRAGMENT } from '@/navigation-menu-item/common/graphql/fragments/navigationMenuItemQueryFragment'; import { gql } from '@apollo/client'; export const FIND_ONE_NAVIGATION_MENU_ITEM = gql` diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useCreateNavigationMenuItem.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/hooks/useCreateNavigationMenuItem.ts similarity index 98% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useCreateNavigationMenuItem.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/hooks/useCreateNavigationMenuItem.ts index 5f2719349f..b44d901445 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useCreateNavigationMenuItem.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/hooks/useCreateNavigationMenuItem.ts @@ -3,7 +3,7 @@ import { isDefined } from 'twenty-shared/utils'; import { useMutation } from '@apollo/client/react'; import { CreateNavigationMenuItemDocument } from '~/generated-metadata/graphql'; -import { useNavigationMenuItemsData } from '@/navigation-menu-item/hooks/useNavigationMenuItemsData'; +import { useNavigationMenuItemsData } from '@/navigation-menu-item/display/hooks/useNavigationMenuItemsData'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useDeleteNavigationMenuItem.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/hooks/useDeleteNavigationMenuItem.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useDeleteNavigationMenuItem.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/hooks/useDeleteNavigationMenuItem.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useObjectNavItemColor.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/hooks/useObjectNavItemColor.ts similarity index 93% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useObjectNavItemColor.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/hooks/useObjectNavItemColor.ts index c076c27b1a..18b4a559a2 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useObjectNavItemColor.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/hooks/useObjectNavItemColor.ts @@ -1,6 +1,6 @@ import { isNonEmptyString } from '@sniptt/guards'; -import { getStandardObjectIconColor } from '@/navigation-menu-item/utils/getStandardObjectIconColor'; +import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; export const useObjectNavItemColor = (objectNameSingular: string): string => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useRemoveNavigationMenuItemByTargetRecordId.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/hooks/useRemoveNavigationMenuItemByTargetRecordId.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useRemoveNavigationMenuItemByTargetRecordId.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/hooks/useRemoveNavigationMenuItemByTargetRecordId.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useUpdateNavigationMenuItem.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/hooks/useUpdateNavigationMenuItem.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useUpdateNavigationMenuItem.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/hooks/useUpdateNavigationMenuItem.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/states/addMenuItemInsertionContextState.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/states/addMenuItemInsertionContextState.ts similarity index 86% rename from packages/twenty-front/src/modules/navigation-menu-item/states/addMenuItemInsertionContextState.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/states/addMenuItemInsertionContextState.ts index 435da31462..e3b7c66beb 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/states/addMenuItemInsertionContextState.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/states/addMenuItemInsertionContextState.ts @@ -1,4 +1,4 @@ -import type { AddMenuItemInsertionContext } from '@/navigation-menu-item/types/AddMenuItemInsertionContext'; +import type { AddMenuItemInsertionContext } from '@/navigation-menu-item/common/types/AddMenuItemInsertionContext'; import { createAtomState } from '@/ui/utilities/state/jotai/utils/createAtomState'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/states/addToNavPayloadRegistryState.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/states/addToNavPayloadRegistryState.ts similarity index 86% rename from packages/twenty-front/src/modules/navigation-menu-item/states/addToNavPayloadRegistryState.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/states/addToNavPayloadRegistryState.ts index 14c437b2dc..d9822f2c69 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/states/addToNavPayloadRegistryState.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/states/addToNavPayloadRegistryState.ts @@ -1,4 +1,4 @@ -import type { AddToNavigationDragPayload } from '@/navigation-menu-item/types/add-to-navigation-drag-payload'; +import type { AddToNavigationDragPayload } from '@/navigation-menu-item/common/types/add-to-navigation-drag-payload'; import { createAtomState } from '@/ui/utilities/state/jotai/utils/createAtomState'; diff --git a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/states/currentNavigationMenuItemFolderIdState.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/states/currentNavigationMenuItemFolderIdState.ts similarity index 100% rename from packages/twenty-front/src/modules/ui/navigation/navigation-drawer/states/currentNavigationMenuItemFolderIdState.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/states/currentNavigationMenuItemFolderIdState.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/states/isNavigationMenuInEditModeState.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/states/isNavigationMenuInEditModeState.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/states/isNavigationMenuInEditModeState.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/states/isNavigationMenuInEditModeState.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/states/isNavigationMenuItemFolderCreatingState.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/states/isNavigationMenuItemFolderCreatingState.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/states/isNavigationMenuItemFolderCreatingState.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/states/isNavigationMenuItemFolderCreatingState.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/states/navigationMenuItemsDraftState.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/states/navigationMenuItemsDraftState.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/states/navigationMenuItemsDraftState.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/states/navigationMenuItemsDraftState.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/states/navigationMenuItemsSelector.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/states/navigationMenuItemsSelector.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/states/navigationMenuItemsSelector.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/states/navigationMenuItemsSelector.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/states/openNavigationMenuItemFolderIdsState.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/states/openNavigationMenuItemFolderIdsState.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/states/openNavigationMenuItemFolderIdsState.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/states/openNavigationMenuItemFolderIdsState.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/states/selectedNavigationMenuItemInEditModeState.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/states/selectedNavigationMenuItemInEditModeState.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/states/selectedNavigationMenuItemInEditModeState.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/states/selectedNavigationMenuItemInEditModeState.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/types/AddMenuItemInsertionContext.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/types/AddMenuItemInsertionContext.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/types/AddMenuItemInsertionContext.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/types/AddMenuItemInsertionContext.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/types/add-to-navigation-drag-payload.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/types/add-to-navigation-drag-payload.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/types/add-to-navigation-drag-payload.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/types/add-to-navigation-drag-payload.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/computeInsertIndexAndPosition.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/computeInsertIndexAndPosition.test.ts similarity index 97% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/computeInsertIndexAndPosition.test.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/computeInsertIndexAndPosition.test.ts index a4e36eb9dd..4a69cafc4b 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/computeInsertIndexAndPosition.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/computeInsertIndexAndPosition.test.ts @@ -1,4 +1,4 @@ -import { computeInsertIndexAndPosition } from '@/navigation-menu-item/utils/computeInsertIndexAndPosition'; +import { computeInsertIndexAndPosition } from '@/navigation-menu-item/common/utils/computeInsertIndexAndPosition'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; describe('computeInsertIndexAndPosition', () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/filterAndSortNavigationMenuItems.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/filterAndSortNavigationMenuItems.test.ts similarity index 99% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/filterAndSortNavigationMenuItems.test.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/filterAndSortNavigationMenuItems.test.ts index f39c721a50..70c2938d6d 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/filterAndSortNavigationMenuItems.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/filterAndSortNavigationMenuItems.test.ts @@ -1,6 +1,6 @@ import { NavigationMenuItemType } from 'twenty-shared/types'; -import { filterAndSortNavigationMenuItems } from '@/navigation-menu-item/utils/filterAndSortNavigationMenuItems'; +import { filterAndSortNavigationMenuItems } from '@/navigation-menu-item/common/utils/filterAndSortNavigationMenuItems'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { type View } from '@/views/types/View'; import { ViewKey } from '@/views/types/ViewKey'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/filterWorkspaceNavigationMenuItems.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/filterWorkspaceNavigationMenuItems.test.ts similarity index 91% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/filterWorkspaceNavigationMenuItems.test.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/filterWorkspaceNavigationMenuItems.test.ts index 13c5372c36..930f0c8bf1 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/filterWorkspaceNavigationMenuItems.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/filterWorkspaceNavigationMenuItems.test.ts @@ -1,4 +1,4 @@ -import { filterWorkspaceNavigationMenuItems } from '@/navigation-menu-item/utils/filterWorkspaceNavigationMenuItems'; +import { filterWorkspaceNavigationMenuItems } from '@/navigation-menu-item/common/utils/filterWorkspaceNavigationMenuItems'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; describe('filterWorkspaceNavigationMenuItems', () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/getDropTargetIdFromDestination.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/getDropTargetIdFromDestination.test.ts similarity index 95% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/getDropTargetIdFromDestination.test.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/getDropTargetIdFromDestination.test.ts index 356559a111..457561e445 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/getDropTargetIdFromDestination.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/getDropTargetIdFromDestination.test.ts @@ -1,4 +1,4 @@ -import { getDropTargetIdFromDestination } from '@/navigation-menu-item/utils/getDropTargetIdFromDestination'; +import { getDropTargetIdFromDestination } from '@/navigation-menu-item/common/utils/getDropTargetIdFromDestination'; describe('getDropTargetIdFromDestination', () => { it('should return null when destination is null or droppableId is not workspace', () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/getPositionBetween.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/getPositionBetween.test.ts similarity index 90% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/getPositionBetween.test.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/getPositionBetween.test.ts index ef1fee2df0..98a41afcf2 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/getPositionBetween.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/getPositionBetween.test.ts @@ -1,4 +1,4 @@ -import { getPositionBetween } from '@/navigation-menu-item/utils/getPositionBetween'; +import { getPositionBetween } from '@/navigation-menu-item/common/utils/getPositionBetween'; describe('getPositionBetween', () => { it('returns next - 1 when only next is defined (insert before)', () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/isLocationMatchingNavigationMenuItem.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/isLocationMatchingNavigationMenuItem.test.ts similarity index 95% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/isLocationMatchingNavigationMenuItem.test.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/isLocationMatchingNavigationMenuItem.test.ts index c279e589de..26a41c0aec 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/isLocationMatchingNavigationMenuItem.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/isLocationMatchingNavigationMenuItem.test.ts @@ -1,5 +1,5 @@ import { NavigationMenuItemType } from 'twenty-shared/types'; -import { isLocationMatchingNavigationMenuItem } from '@/navigation-menu-item/utils/isLocationMatchingNavigationMenuItem'; +import { isLocationMatchingNavigationMenuItem } from '@/navigation-menu-item/common/utils/isLocationMatchingNavigationMenuItem'; describe('isLocationMatchingNavigationMenuItem', () => { it('should return true when item link matches current path (non-view) or current view path (view)', () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/isNavigationMenuItemFolder.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/isNavigationMenuItemFolder.test.ts similarity index 94% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/isNavigationMenuItemFolder.test.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/isNavigationMenuItemFolder.test.ts index b4cc063259..f6e064820a 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/isNavigationMenuItemFolder.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/isNavigationMenuItemFolder.test.ts @@ -1,6 +1,6 @@ import { NavigationMenuItemType } from 'twenty-shared/types'; -import { isNavigationMenuItemFolder } from '@/navigation-menu-item/utils/isNavigationMenuItemFolder'; +import { isNavigationMenuItemFolder } from '@/navigation-menu-item/common/utils/isNavigationMenuItemFolder'; describe('isNavigationMenuItemFolder', () => { it('should return true when type is folder', () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/isNavigationMenuItemLink.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/isNavigationMenuItemLink.test.ts similarity index 95% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/isNavigationMenuItemLink.test.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/isNavigationMenuItemLink.test.ts index fd2ac0f9bf..04379ae026 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/isNavigationMenuItemLink.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/isNavigationMenuItemLink.test.ts @@ -1,6 +1,6 @@ import { NavigationMenuItemType } from 'twenty-shared/types'; -import { isNavigationMenuItemLink } from '@/navigation-menu-item/utils/isNavigationMenuItemLink'; +import { isNavigationMenuItemLink } from '@/navigation-menu-item/common/utils/isNavigationMenuItemLink'; describe('isNavigationMenuItemLink', () => { it('should return true when type is link', () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/orderFoldersForCreation.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/orderFoldersForCreation.test.ts similarity index 97% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/orderFoldersForCreation.test.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/orderFoldersForCreation.test.ts index 44ed5e6dda..02397aa743 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/orderFoldersForCreation.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/orderFoldersForCreation.test.ts @@ -1,4 +1,4 @@ -import { orderFoldersForCreation } from '@/navigation-menu-item/utils/orderFoldersForCreation'; +import { orderFoldersForCreation } from '@/navigation-menu-item/common/utils/orderFoldersForCreation'; describe('orderFoldersForCreation', () => { it('returns empty array for empty input', () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/recordIdentifierToObjectRecordIdentifier.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/recordIdentifierToObjectRecordIdentifier.test.ts similarity index 96% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/recordIdentifierToObjectRecordIdentifier.test.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/recordIdentifierToObjectRecordIdentifier.test.ts index 79c9e5658d..4be0612492 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/recordIdentifierToObjectRecordIdentifier.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/recordIdentifierToObjectRecordIdentifier.test.ts @@ -1,4 +1,4 @@ -import { recordIdentifierToObjectRecordIdentifier } from '@/navigation-menu-item/utils/recordIdentifierToObjectRecordIdentifier'; +import { recordIdentifierToObjectRecordIdentifier } from '@/navigation-menu-item/common/utils/recordIdentifierToObjectRecordIdentifier'; import { CoreObjectNameSingular } from 'twenty-shared/types'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/validateAndExtractWorkspaceFolderId.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/validateAndExtractWorkspaceFolderId.test.ts similarity index 95% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/validateAndExtractWorkspaceFolderId.test.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/validateAndExtractWorkspaceFolderId.test.ts index 1da5429d7e..1b330d3cb8 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/validateAndExtractWorkspaceFolderId.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/__tests__/validateAndExtractWorkspaceFolderId.test.ts @@ -1,7 +1,7 @@ import { matchesWorkspaceFolderId, validateAndExtractWorkspaceFolderId, -} from '@/navigation-menu-item/utils/validateAndExtractWorkspaceFolderId'; +} from '@/navigation-menu-item/common/utils/validateAndExtractWorkspaceFolderId'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; describe('matchesWorkspaceFolderId', () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/buildCreateNavigationMenuItemInput.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/buildCreateNavigationMenuItemInput.ts similarity index 92% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/buildCreateNavigationMenuItemInput.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/buildCreateNavigationMenuItemInput.ts index 3e02ce5024..d586044633 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/buildCreateNavigationMenuItemInput.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/buildCreateNavigationMenuItemInput.ts @@ -5,9 +5,9 @@ import type { import { isDefined } from 'twenty-shared/utils'; -import { isNavigationMenuItemFolder } from '@/navigation-menu-item/utils/isNavigationMenuItemFolder'; -import { isNavigationMenuItemLink } from '@/navigation-menu-item/utils/isNavigationMenuItemLink'; -import { isNavigationMenuItemObject } from '@/navigation-menu-item/utils/isNavigationMenuItemObject'; +import { isNavigationMenuItemFolder } from '@/navigation-menu-item/common/utils/isNavigationMenuItemFolder'; +import { isNavigationMenuItemLink } from '@/navigation-menu-item/common/utils/isNavigationMenuItemLink'; +import { isNavigationMenuItemObject } from '@/navigation-menu-item/common/utils/isNavigationMenuItemObject'; export const buildCreateNavigationMenuItemInput = ( draftItem: NavigationMenuItem, diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/computeInsertIndexAndPosition.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/computeInsertIndexAndPosition.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/computeInsertIndexAndPosition.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/computeInsertIndexAndPosition.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/filterAndSortNavigationMenuItems.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/filterAndSortNavigationMenuItems.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/filterAndSortNavigationMenuItems.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/filterAndSortNavigationMenuItems.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/filterWorkspaceNavigationMenuItems.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/filterWorkspaceNavigationMenuItems.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/filterWorkspaceNavigationMenuItems.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/filterWorkspaceNavigationMenuItems.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/getColorFromTheme.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getColorFromTheme.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/getColorFromTheme.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/getColorFromTheme.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/getDndKitDropTargetId.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getDndKitDropTargetId.ts similarity index 79% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/getDndKitDropTargetId.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/getDndKitDropTargetId.ts index cdfe08c7de..91c1c97254 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/getDndKitDropTargetId.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getDndKitDropTargetId.ts @@ -1,4 +1,4 @@ -import { DND_KIT_DROP_TARGET_ID_SEPARATOR } from '@/navigation-menu-item/constants/DndKitDropTargetIdSeparator'; +import { DND_KIT_DROP_TARGET_ID_SEPARATOR } from '@/navigation-menu-item/common/constants/DndKitDropTargetIdSeparator'; export const getDndKitDropTargetId = ( droppableId: string, diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/getDropTargetIdFromDestination.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getDropTargetIdFromDestination.ts similarity index 66% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/getDropTargetIdFromDestination.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/getDropTargetIdFromDestination.ts index 88fe8c489d..47f79b4210 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/getDropTargetIdFromDestination.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getDropTargetIdFromDestination.ts @@ -1,6 +1,6 @@ -import { NavigationSections } from '@/navigation-menu-item/constants/NavigationSections.constants'; -import { isWorkspaceDroppableId } from '@/navigation-menu-item/utils/isWorkspaceDroppableId'; -import { validateAndExtractWorkspaceFolderId } from '@/navigation-menu-item/utils/validateAndExtractWorkspaceFolderId'; +import { NavigationSections } from '@/navigation-menu-item/common/constants/NavigationSections.constants'; +import { isWorkspaceDroppableId } from '@/navigation-menu-item/common/utils/isWorkspaceDroppableId'; +import { validateAndExtractWorkspaceFolderId } from '@/navigation-menu-item/common/utils/validateAndExtractWorkspaceFolderId'; import type { DropResult } from '@hello-pangea/dnd'; export const getDropTargetIdFromDestination = ( diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/getEffectiveNavigationMenuItemColor.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getEffectiveNavigationMenuItemColor.ts similarity index 87% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/getEffectiveNavigationMenuItemColor.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/getEffectiveNavigationMenuItemColor.ts index 697f9228a1..dc096f8c95 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/getEffectiveNavigationMenuItemColor.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getEffectiveNavigationMenuItemColor.ts @@ -1,7 +1,7 @@ import { isNonEmptyString } from '@sniptt/guards'; -import { DEFAULT_NAVIGATION_MENU_ITEM_COLOR_FOLDER } from '@/navigation-menu-item/constants/NavigationMenuItemDefaultColorFolder'; -import { DEFAULT_NAVIGATION_MENU_ITEM_COLOR_LINK } from '@/navigation-menu-item/constants/NavigationMenuItemDefaultColorLink'; +import { DEFAULT_NAVIGATION_MENU_ITEM_COLOR_FOLDER } from '@/navigation-menu-item/common/constants/NavigationMenuItemDefaultColorFolder'; +import { DEFAULT_NAVIGATION_MENU_ITEM_COLOR_LINK } from '@/navigation-menu-item/common/constants/NavigationMenuItemDefaultColorLink'; import { NavigationMenuItemType } from 'twenty-shared/types'; export const getEffectiveNavigationMenuItemColor = ( diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/getFavoritesDropTargetIdFromDestination.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getFavoritesDropTargetIdFromDestination.ts similarity index 81% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/getFavoritesDropTargetIdFromDestination.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/getFavoritesDropTargetIdFromDestination.ts index 284f1485e3..7d5a292150 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/getFavoritesDropTargetIdFromDestination.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getFavoritesDropTargetIdFromDestination.ts @@ -1,5 +1,5 @@ -import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/constants/NavigationMenuItemDroppableIds'; -import { NavigationSections } from '@/navigation-menu-item/constants/NavigationSections.constants'; +import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/common/constants/NavigationMenuItemDroppableIds'; +import { NavigationSections } from '@/navigation-menu-item/common/constants/NavigationSections.constants'; import type { DropResult } from '@hello-pangea/dnd'; const FOLDER_PREFIX = 'folder-'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getNavigationMenuItemIconBorderColor.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getNavigationMenuItemIconBorderColor.ts new file mode 100644 index 0000000000..e0f94480e7 --- /dev/null +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getNavigationMenuItemIconBorderColor.ts @@ -0,0 +1,8 @@ +import type { ThemeColor } from 'twenty-ui/theme'; + +import { getColorFromTheme } from '@/navigation-menu-item/common/utils/getColorFromTheme'; +import { COLOR_SHADE_BORDER } from '@/navigation-menu-item/common/utils/navigationMenuItemIconColorShadeBorder'; + +export const getNavigationMenuItemIconBorderColor = ( + themeColor: ThemeColor, +): string => getColorFromTheme(themeColor, COLOR_SHADE_BORDER); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getNavigationMenuItemIconStyleFromColor.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getNavigationMenuItemIconStyleFromColor.ts new file mode 100644 index 0000000000..22c6be939a --- /dev/null +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getNavigationMenuItemIconStyleFromColor.ts @@ -0,0 +1,18 @@ +import { DEFAULT_NAV_ITEM_ICON_COLOR } from '@/navigation-menu-item/common/constants/NavigationMenuItemDefaultIconColor.constant'; +import { getColorFromTheme } from '@/navigation-menu-item/common/utils/getColorFromTheme'; +import { COLOR_SHADE_BACKGROUND } from '@/navigation-menu-item/common/utils/navigationMenuItemIconColorShadeBackground'; +import { COLOR_SHADE_BORDER } from '@/navigation-menu-item/common/utils/navigationMenuItemIconColorShadeBorder'; +import { COLOR_SHADE_ICON } from '@/navigation-menu-item/common/utils/navigationMenuItemIconColorShadeIcon'; +import { type NavigationMenuItemIconStyle } from '@/navigation-menu-item/common/utils/navigationMenuItemIconStyle'; +import { parseThemeColor } from '@/navigation-menu-item/common/utils/parseThemeColor'; + +export const getNavigationMenuItemIconStyleFromColor = ( + color: string | null | undefined, +): NavigationMenuItemIconStyle => { + const themeColor = parseThemeColor(color ?? DEFAULT_NAV_ITEM_ICON_COLOR); + return { + backgroundColor: getColorFromTheme(themeColor, COLOR_SHADE_BACKGROUND), + iconColor: getColorFromTheme(themeColor, COLOR_SHADE_ICON), + borderColor: getColorFromTheme(themeColor, COLOR_SHADE_BORDER), + }; +}; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/getObjectMetadataIdsInDraft.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getObjectMetadataIdsInDraft.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/getObjectMetadataIdsInDraft.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/getObjectMetadataIdsInDraft.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/getPositionBetween.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getPositionBetween.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/getPositionBetween.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/getPositionBetween.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/getStandardObjectIconColor.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getStandardObjectIconColor.ts similarity index 95% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/getStandardObjectIconColor.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/getStandardObjectIconColor.ts index 2ac88eeeb2..8c3a04b69f 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/getStandardObjectIconColor.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/getStandardObjectIconColor.ts @@ -1,6 +1,6 @@ import { type ThemeColor, MAIN_COLOR_NAMES } from 'twenty-ui/theme'; -import { DEFAULT_NAV_ITEM_ICON_COLOR } from '@/navigation-menu-item/constants/NavigationMenuItemDefaultIconColor.constant'; +import { DEFAULT_NAV_ITEM_ICON_COLOR } from '@/navigation-menu-item/common/constants/NavigationMenuItemDefaultIconColor.constant'; import { CoreObjectNameSingular } from 'twenty-shared/types'; const STANDARD_OBJECT_ICON_COLOR: Partial< diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/hasNavigationMenuItemOwnColor.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/hasNavigationMenuItemOwnColor.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/hasNavigationMenuItemOwnColor.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/hasNavigationMenuItemOwnColor.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/isLocationMatchingNavigationMenuItem.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/isLocationMatchingNavigationMenuItem.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/isLocationMatchingNavigationMenuItem.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/isLocationMatchingNavigationMenuItem.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/isNavigationMenuItemFolder.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/isNavigationMenuItemFolder.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/isNavigationMenuItemFolder.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/isNavigationMenuItemFolder.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/isNavigationMenuItemLink.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/isNavigationMenuItemLink.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/isNavigationMenuItemLink.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/isNavigationMenuItemLink.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/isNavigationMenuItemObject.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/isNavigationMenuItemObject.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/isNavigationMenuItemObject.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/isNavigationMenuItemObject.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/isWorkspaceDroppableId.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/isWorkspaceDroppableId.ts similarity index 91% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/isWorkspaceDroppableId.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/isWorkspaceDroppableId.ts index a658550264..9849108c6a 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/isWorkspaceDroppableId.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/isWorkspaceDroppableId.ts @@ -1,6 +1,6 @@ import { isDefined } from 'twenty-shared/utils'; -import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/constants/NavigationMenuItemDroppableIds'; +import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/common/constants/NavigationMenuItemDroppableIds'; export const isWorkspaceDroppableId = ( droppableId: string | null | undefined, diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/navigationMenuItemIconColorShadeBackground.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/navigationMenuItemIconColorShadeBackground.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/navigationMenuItemIconColorShadeBackground.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/navigationMenuItemIconColorShadeBackground.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/navigationMenuItemIconColorShadeBorder.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/navigationMenuItemIconColorShadeBorder.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/navigationMenuItemIconColorShadeBorder.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/navigationMenuItemIconColorShadeBorder.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/navigationMenuItemIconColorShadeIcon.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/navigationMenuItemIconColorShadeIcon.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/navigationMenuItemIconColorShadeIcon.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/navigationMenuItemIconColorShadeIcon.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/navigationMenuItemIconStyle.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/navigationMenuItemIconStyle.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/navigationMenuItemIconStyle.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/navigationMenuItemIconStyle.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/orderFoldersForCreation.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/orderFoldersForCreation.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/orderFoldersForCreation.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/orderFoldersForCreation.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/parseThemeColor.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/parseThemeColor.ts similarity index 85% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/parseThemeColor.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/parseThemeColor.ts index 7a407a80a9..847a242720 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/parseThemeColor.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/parseThemeColor.ts @@ -1,7 +1,7 @@ import { type ThemeColor } from 'twenty-ui/theme'; import { themeColorSchema } from 'twenty-ui/utilities'; -import { DEFAULT_NAV_ITEM_ICON_COLOR } from '@/navigation-menu-item/constants/NavigationMenuItemDefaultIconColor.constant'; +import { DEFAULT_NAV_ITEM_ICON_COLOR } from '@/navigation-menu-item/common/constants/NavigationMenuItemDefaultIconColor.constant'; export const parseThemeColor = ( color: string | null | undefined, diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/recordIdentifierToObjectRecordIdentifier.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/recordIdentifierToObjectRecordIdentifier.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/recordIdentifierToObjectRecordIdentifier.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/recordIdentifierToObjectRecordIdentifier.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/validateAndExtractWorkspaceFolderId.ts b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/validateAndExtractWorkspaceFolderId.ts similarity index 96% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/validateAndExtractWorkspaceFolderId.ts rename to packages/twenty-front/src/modules/navigation-menu-item/common/utils/validateAndExtractWorkspaceFolderId.ts index c861d43834..aa06446665 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/validateAndExtractWorkspaceFolderId.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/common/utils/validateAndExtractWorkspaceFolderId.ts @@ -2,7 +2,7 @@ import { isNonEmptyString } from '@sniptt/guards'; import { CustomError, isDefined } from 'twenty-shared/utils'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; -import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/constants/NavigationMenuItemDroppableIds'; +import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/common/constants/NavigationMenuItemDroppableIds'; export const matchesWorkspaceFolderId = ( item: NavigationMenuItem, diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFoldersDispatcher.tsx b/packages/twenty-front/src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFoldersDispatcher.tsx deleted file mode 100644 index d4b31dcb4a..0000000000 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFoldersDispatcher.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { CurrentWorkspaceMemberNavigationMenuItemFolders } from '@/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; -import { FavoritesDragDropProviderContent } from '@/navigation/components/FavoritesDragDropProviderContent'; -import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; -import { AnimatedEaseInOut } from 'twenty-ui/utilities'; - -export const CurrentWorkspaceMemberNavigationMenuItemFoldersDispatcher = () => { - const isNavigationMenuInEditMode = useAtomStateValue( - isNavigationMenuInEditModeState, - ); - - return ( - - - - - - ); -}; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/CurrentWorkspaceMemberOrphanNavigationMenuItems.tsx b/packages/twenty-front/src/modules/navigation-menu-item/components/CurrentWorkspaceMemberOrphanNavigationMenuItems.tsx deleted file mode 100644 index e3d97937b1..0000000000 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/CurrentWorkspaceMemberOrphanNavigationMenuItems.tsx +++ /dev/null @@ -1,138 +0,0 @@ -import { styled } from '@linaria/react'; -import { useContext } from 'react'; -import { useLocation } from 'react-router-dom'; -import { IconHeartOff } from 'twenty-ui/display'; -import { LightIconButton } from 'twenty-ui/input'; -import { themeCssVariables } from 'twenty-ui/theme-constants'; - -import { NavigationItemDropTarget } from '@/navigation-menu-item/components/NavigationItemDropTarget'; -import { NavigationMenuItemDroppable } from '@/navigation-menu-item/components/NavigationMenuItemDroppable'; -import { NavigationMenuItemIcon } from '@/navigation-menu-item/components/NavigationMenuItemIcon'; -import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/constants/NavigationMenuItemDroppableIds'; -import { NavigationSections } from '@/navigation-menu-item/constants/NavigationSections.constants'; -import { NavigationMenuItemDragContext } from '@/navigation-menu-item/contexts/NavigationMenuItemDragContext'; -import { useDeleteNavigationMenuItem } from '@/navigation-menu-item/hooks/useDeleteNavigationMenuItem'; -import { useSortedNavigationMenuItems } from '@/navigation-menu-item/hooks/useSortedNavigationMenuItems'; -import { getEffectiveNavigationMenuItemColor } from '@/navigation-menu-item/utils/getEffectiveNavigationMenuItemColor'; -import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/utils/getNavigationMenuItemComputedLink'; -import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemLabel'; -import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/utils/getNavigationMenuItemObjectNameSingular'; -import { getNavigationMenuItemSecondaryLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemSecondaryLabel'; -import { isLocationMatchingNavigationMenuItem } from '@/navigation-menu-item/utils/isLocationMatchingNavigationMenuItem'; -import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; -import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; -import { viewsSelector } from '@/views/states/selectors/viewsSelector'; -import { DraggableItem } from '@/ui/layout/draggable-list/components/DraggableItem'; -import { NavigationDrawerItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerItem'; - -const StyledEmptyContainer = styled.div` - width: 100%; -`; - -const StyledOrphanNavigationMenuItemsContainer = styled.div` - margin-bottom: ${themeCssVariables.betweenSiblingsGap}; -`; - -export const CurrentWorkspaceMemberOrphanNavigationMenuItems = () => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); - const views = useAtomStateValue(viewsSelector); - const { navigationMenuItemsSorted } = useSortedNavigationMenuItems(); - const { deleteNavigationMenuItem } = useDeleteNavigationMenuItem(); - const currentPath = useLocation().pathname; - const currentViewPath = useLocation().pathname + useLocation().search; - const { isDragging } = useContext(NavigationMenuItemDragContext); - - const orphanNavigationMenuItems = navigationMenuItemsSorted.filter( - (item) => !item.folderId, - ); - - return ( - - {orphanNavigationMenuItems.length > 0 ? ( - <> - {orphanNavigationMenuItems.map((navigationMenuItem, index) => { - const label = getNavigationMenuItemLabel( - navigationMenuItem, - objectMetadataItems, - views, - ); - const computedLink = getNavigationMenuItemComputedLink( - navigationMenuItem, - objectMetadataItems, - views, - ); - const objectNameSingular = getNavigationMenuItemObjectNameSingular( - navigationMenuItem, - objectMetadataItems, - views, - ); - - return ( - - - ( - - )} - iconColor={getEffectiveNavigationMenuItemColor( - navigationMenuItem, - )} - active={isLocationMatchingNavigationMenuItem( - currentPath, - currentViewPath, - navigationMenuItem.type, - computedLink, - )} - to={isDragging ? undefined : computedLink} - rightOptions={ - { - e.stopPropagation(); - deleteNavigationMenuItem(navigationMenuItem.id); - }} - accent="tertiary" - /> - } - isDragging={isDragging} - triggerEvent="CLICK" - /> - - } - /> - - ); - })} - - - ) : ( - - )} - - ); -}; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemFolderContent.tsx b/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemFolderContent.tsx deleted file mode 100644 index 5fdc3b3ef5..0000000000 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemFolderContent.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import { Droppable } from '@hello-pangea/dnd'; -import { IconHeartOff } from 'twenty-ui/display'; -import { LightIconButton } from 'twenty-ui/input'; -import { type NavigationMenuItem } from '~/generated-metadata/graphql'; - -import { NavigationMenuItemBackButton } from '@/navigation-menu-item/components/NavigationMenuItemBackButton'; -import { NavigationMenuItemIcon } from '@/navigation-menu-item/components/NavigationMenuItemIcon'; -import { useDeleteNavigationMenuItem } from '@/navigation-menu-item/hooks/useDeleteNavigationMenuItem'; -import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/utils/getNavigationMenuItemComputedLink'; -import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemLabel'; -import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/utils/getNavigationMenuItemObjectNameSingular'; -import { getNavigationMenuItemSecondaryLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemSecondaryLabel'; -import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; -import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; -import { DraggableItem } from '@/ui/layout/draggable-list/components/DraggableItem'; -import { NavigationDrawerItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerItem'; -import { viewsSelector } from '@/views/states/selectors/viewsSelector'; - -type NavigationMenuItemFolderContentProps = { - folderId: string; - folderName: string; - navigationMenuItems: NavigationMenuItem[]; -}; - -export const NavigationMenuItemFolderContent = ({ - folderName, - folderId, - navigationMenuItems, -}: NavigationMenuItemFolderContentProps) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); - const views = useAtomStateValue(viewsSelector); - const { deleteNavigationMenuItem } = useDeleteNavigationMenuItem(); - - return ( - <> - - - {(provided) => ( -
- {navigationMenuItems.map((navigationMenuItem, index) => { - const label = getNavigationMenuItemLabel( - navigationMenuItem, - objectMetadataItems, - views, - ); - const computedLink = getNavigationMenuItemComputedLink( - navigationMenuItem, - objectMetadataItems, - views, - ); - const objectNameSingular = - getNavigationMenuItemObjectNameSingular( - navigationMenuItem, - objectMetadataItems, - views, - ); - - return ( - ( - - )} - rightOptions={ - { - e.stopPropagation(); - deleteNavigationMenuItem(navigationMenuItem.id); - }} - accent="tertiary" - /> - } - triggerEvent="CLICK" - to={computedLink} - /> - } - /> - ); - })} - {provided.placeholder} -
- )} -
- - ); -}; diff --git a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemContent.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/components/NavigationMenuItemDisplay.tsx similarity index 62% rename from packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemContent.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/components/NavigationMenuItemDisplay.tsx index da87abeb4c..e33943e0f3 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemContent.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/components/NavigationMenuItemDisplay.tsx @@ -1,13 +1,12 @@ import { NavigationMenuItemType } from 'twenty-shared/types'; -import { NavigationDrawerSectionForWorkspaceItemFolderContent } from '@/object-metadata/components/NavigationDrawerSectionForWorkspaceItemFolderContent'; -import { NavigationDrawerSectionForWorkspaceItemLinkContent } from '@/object-metadata/components/NavigationDrawerSectionForWorkspaceItemLinkContent'; -import { NavigationDrawerSectionForWorkspaceItemObjectContent } from '@/object-metadata/components/NavigationDrawerSectionForWorkspaceItemObjectContent'; -import type { WorkspaceSectionItemContentProps } from '@/object-metadata/components/WorkspaceSectionItemContentProps'; +import { NavigationMenuItemFolderDisplay } from '@/navigation-menu-item/display/folder/components/NavigationMenuItemFolderDisplay'; +import { NavigationMenuItemLinkDisplay } from '@/navigation-menu-item/display/link/components/NavigationMenuItemLinkDisplay'; +import { NavigationMenuItemObjectDisplay } from '@/navigation-menu-item/display/object/components/NavigationMenuItemObjectDisplay'; +import type { WorkspaceSectionItemContentProps } from '@/navigation-menu-item/display/sections/types/WorkspaceSectionItemContentProps'; -type NavigationDrawerSectionForWorkspaceItemContentProps = - WorkspaceSectionItemContentProps; +type NavigationMenuItemDisplayProps = WorkspaceSectionItemContentProps; -export const NavigationDrawerSectionForWorkspaceItemContent = ({ +export const NavigationMenuItemDisplay = ({ item, editModeProps, isDragging, @@ -17,11 +16,11 @@ export const NavigationDrawerSectionForWorkspaceItemContent = ({ onNavigationMenuItemClick, onActiveObjectMetadataItemClick, readOnly, -}: NavigationDrawerSectionForWorkspaceItemContentProps) => { +}: NavigationMenuItemDisplayProps) => { switch (item.type) { case NavigationMenuItemType.FOLDER: return ( - ` min-height: ${({ $compact }) => diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemDroppable.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/dnd/components/NavigationMenuItemDroppable.tsx similarity index 97% rename from packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemDroppable.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/dnd/components/NavigationMenuItemDroppable.tsx index 2d17e48482..790a663877 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemDroppable.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/dnd/components/NavigationMenuItemDroppable.tsx @@ -2,7 +2,7 @@ import { Droppable } from '@hello-pangea/dnd'; import { styled } from '@linaria/react'; import { themeCssVariables } from 'twenty-ui/theme-constants'; -import { useIsDropDisabledForSection } from '@/navigation-menu-item/hooks/useIsDropDisabledForSection'; +import { useIsDropDisabledForSection } from '@/navigation-menu-item/display/dnd/hooks/useIsDropDisabledForSection'; type NavigationMenuItemDroppableProps = { droppableId: string; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceDndKitDroppableSlot.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/dnd/components/WorkspaceDndKitDroppableSlot.tsx similarity index 92% rename from packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceDndKitDroppableSlot.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/dnd/components/WorkspaceDndKitDroppableSlot.tsx index f390156292..9ed499a261 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceDndKitDroppableSlot.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/dnd/components/WorkspaceDndKitDroppableSlot.tsx @@ -3,7 +3,7 @@ import { styled } from '@linaria/react'; import { type ReactNode } from 'react'; import { themeCssVariables } from 'twenty-ui/theme-constants'; -import { getDndKitDropTargetId } from '@/navigation-menu-item/utils/getDndKitDropTargetId'; +import { getDndKitDropTargetId } from '@/navigation-menu-item/common/utils/getDndKitDropTargetId'; import type { DroppableData } from '@/navigation/types/workspaceDndKitDroppableData'; const StyledSlotWrapper = styled.div<{ $empty: boolean }>` diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceDndKitSortableItem.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/dnd/components/WorkspaceDndKitSortableItem.tsx similarity index 96% rename from packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceDndKitSortableItem.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/dnd/components/WorkspaceDndKitSortableItem.tsx index fe9ea049a1..8a45bfbf38 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceDndKitSortableItem.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/dnd/components/WorkspaceDndKitSortableItem.tsx @@ -3,7 +3,7 @@ import { useSortable } from '@dnd-kit/react/sortable'; import { styled } from '@linaria/react'; import { type ReactNode } from 'react'; -import { SortableDropTargetRefContext } from '@/navigation-menu-item/contexts/SortableDropTargetRefContext'; +import { SortableDropTargetRefContext } from '@/navigation-menu-item/common/contexts/SortableDropTargetRefContext'; const SORTABLE_COLLISION_PRIORITY = 3; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useHandleAddToNavigationDrop.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/dnd/hooks/useHandleAddToNavigationDrop.ts similarity index 89% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useHandleAddToNavigationDrop.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/dnd/hooks/useHandleAddToNavigationDrop.ts index 2552a30436..50d3840ae5 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useHandleAddToNavigationDrop.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/dnd/hooks/useHandleAddToNavigationDrop.ts @@ -4,23 +4,23 @@ import { useCallback } from 'react'; import { isDefined } from 'twenty-shared/utils'; import { IconFolder, IconLink, useIcons } from 'twenty-ui/display'; -import { ADD_TO_NAV_SOURCE_DROPPABLE_ID } from '@/navigation-menu-item/constants/AddToNavSourceDroppableId'; +import { ADD_TO_NAV_SOURCE_DROPPABLE_ID } from '@/navigation-menu-item/common/constants/AddToNavSourceDroppableId'; import { NavigationMenuItemType } from 'twenty-shared/types'; -import { useAddFolderToNavigationMenuDraft } from '@/navigation-menu-item/hooks/useAddFolderToNavigationMenuDraft'; -import { useAddLinkToNavigationMenuDraft } from '@/navigation-menu-item/hooks/useAddLinkToNavigationMenuDraft'; -import { useAddObjectToNavigationMenuDraft } from '@/navigation-menu-item/hooks/useAddObjectToNavigationMenuDraft'; -import { useAddRecordToNavigationMenuDraft } from '@/navigation-menu-item/hooks/useAddRecordToNavigationMenuDraft'; -import { useAddViewToNavigationMenuDraft } from '@/navigation-menu-item/hooks/useAddViewToNavigationMenuDraft'; -import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/hooks/useNavigationMenuItemsDraftState'; -import { useOpenNavigationMenuItemInSidePanel } from '@/navigation-menu-item/hooks/useOpenNavigationMenuItemInSidePanel'; -import { addToNavPayloadRegistryState } from '@/navigation-menu-item/states/addToNavPayloadRegistryState'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; -import { openNavigationMenuItemFolderIdsState } from '@/navigation-menu-item/states/openNavigationMenuItemFolderIdsState'; -import { getObjectMetadataIdsInDraft } from '@/navigation-menu-item/utils/getObjectMetadataIdsInDraft'; -import { getStandardObjectIconColor } from '@/navigation-menu-item/utils/getStandardObjectIconColor'; -import { isWorkspaceDroppableId } from '@/navigation-menu-item/utils/isWorkspaceDroppableId'; -import { validateAndExtractWorkspaceFolderId } from '@/navigation-menu-item/utils/validateAndExtractWorkspaceFolderId'; +import { useAddFolderToNavigationMenuDraft } from '@/navigation-menu-item/edit/folder/hooks/useAddFolderToNavigationMenuDraft'; +import { useAddLinkToNavigationMenuDraft } from '@/navigation-menu-item/edit/link/hooks/useAddLinkToNavigationMenuDraft'; +import { useAddObjectToNavigationMenuDraft } from '@/navigation-menu-item/edit/object/hooks/useAddObjectToNavigationMenuDraft'; +import { useAddRecordToNavigationMenuDraft } from '@/navigation-menu-item/edit/record/hooks/useAddRecordToNavigationMenuDraft'; +import { useAddViewToNavigationMenuDraft } from '@/navigation-menu-item/edit/view/hooks/useAddViewToNavigationMenuDraft'; +import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/edit/hooks/useNavigationMenuItemsDraftState'; +import { useOpenNavigationMenuItemInSidePanel } from '@/navigation-menu-item/edit/hooks/useOpenNavigationMenuItemInSidePanel'; +import { addToNavPayloadRegistryState } from '@/navigation-menu-item/common/states/addToNavPayloadRegistryState'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; +import { openNavigationMenuItemFolderIdsState } from '@/navigation-menu-item/common/states/openNavigationMenuItemFolderIdsState'; +import { getObjectMetadataIdsInDraft } from '@/navigation-menu-item/common/utils/getObjectMetadataIdsInDraft'; +import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; +import { isWorkspaceDroppableId } from '@/navigation-menu-item/common/utils/isWorkspaceDroppableId'; +import { validateAndExtractWorkspaceFolderId } from '@/navigation-menu-item/common/utils/validateAndExtractWorkspaceFolderId'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useHandleNavigationMenuItemDragAndDrop.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/dnd/hooks/useHandleNavigationMenuItemDragAndDrop.ts similarity index 91% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useHandleNavigationMenuItemDragAndDrop.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/dnd/hooks/useHandleNavigationMenuItemDragAndDrop.ts index d3930daab5..9962f5b96d 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useHandleNavigationMenuItemDragAndDrop.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/dnd/hooks/useHandleNavigationMenuItemDragAndDrop.ts @@ -1,16 +1,16 @@ import { type OnDragEndResponder } from '@hello-pangea/dnd'; -import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/constants/NavigationMenuItemDroppableIds'; -import { isWorkspaceDroppableId } from '@/navigation-menu-item/utils/isWorkspaceDroppableId'; -import { useSortedNavigationMenuItems } from '@/navigation-menu-item/hooks/useSortedNavigationMenuItems'; -import { useUpdateNavigationMenuItem } from '@/navigation-menu-item/hooks/useUpdateNavigationMenuItem'; -import { openNavigationMenuItemFolderIdsState } from '@/navigation-menu-item/states/openNavigationMenuItemFolderIdsState'; +import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/common/constants/NavigationMenuItemDroppableIds'; +import { isWorkspaceDroppableId } from '@/navigation-menu-item/common/utils/isWorkspaceDroppableId'; +import { useSortedNavigationMenuItems } from '@/navigation-menu-item/display/hooks/useSortedNavigationMenuItems'; +import { useUpdateNavigationMenuItem } from '@/navigation-menu-item/common/hooks/useUpdateNavigationMenuItem'; +import { openNavigationMenuItemFolderIdsState } from '@/navigation-menu-item/common/states/openNavigationMenuItemFolderIdsState'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; import { calculateNewPosition } from '@/ui/layout/draggable-list/utils/calculateNewPosition'; import { FOLDER_DROPPABLE_IDS } from '@/ui/layout/draggable-list/utils/folderDroppableIds'; import { validateAndExtractFolderId } from '@/ui/layout/draggable-list/utils/validateAndExtractFolderId'; -import { useNavigationMenuItemsData } from './useNavigationMenuItemsData'; +import { useNavigationMenuItemsData } from '@/navigation-menu-item/display/hooks/useNavigationMenuItemsData'; export const useHandleNavigationMenuItemDragAndDrop = () => { const { navigationMenuItems } = useNavigationMenuItemsData(); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useHandleWorkspaceNavigationMenuItemDragAndDrop.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/dnd/hooks/useHandleWorkspaceNavigationMenuItemDragAndDrop.ts similarity index 90% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useHandleWorkspaceNavigationMenuItemDragAndDrop.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/dnd/hooks/useHandleWorkspaceNavigationMenuItemDragAndDrop.ts index b712bf4a9f..4b062cac21 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useHandleWorkspaceNavigationMenuItemDragAndDrop.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/dnd/hooks/useHandleWorkspaceNavigationMenuItemDragAndDrop.ts @@ -2,20 +2,20 @@ import { type OnDragEndResponder } from '@hello-pangea/dnd'; import { useStore } from 'jotai'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; -import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/constants/NavigationMenuItemDroppableIds'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; -import { openNavigationMenuItemFolderIdsState } from '@/navigation-menu-item/states/openNavigationMenuItemFolderIdsState'; -import { getPositionBetween } from '@/navigation-menu-item/utils/getPositionBetween'; -import { isNavigationMenuItemFolder } from '@/navigation-menu-item/utils/isNavigationMenuItemFolder'; +import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/common/constants/NavigationMenuItemDroppableIds'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; +import { openNavigationMenuItemFolderIdsState } from '@/navigation-menu-item/common/states/openNavigationMenuItemFolderIdsState'; +import { getPositionBetween } from '@/navigation-menu-item/common/utils/getPositionBetween'; +import { isNavigationMenuItemFolder } from '@/navigation-menu-item/common/utils/isNavigationMenuItemFolder'; import { matchesWorkspaceFolderId, validateAndExtractWorkspaceFolderId, -} from '@/navigation-menu-item/utils/validateAndExtractWorkspaceFolderId'; +} from '@/navigation-menu-item/common/utils/validateAndExtractWorkspaceFolderId'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; import { isDefined } from 'twenty-shared/utils'; -import { useNavigationMenuItemsData } from './useNavigationMenuItemsData'; +import { useNavigationMenuItemsData } from '@/navigation-menu-item/display/hooks/useNavigationMenuItemsData'; export const useHandleWorkspaceNavigationMenuItemDragAndDrop = () => { const store = useStore(); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useIsDropDisabledForSection.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/dnd/hooks/useIsDropDisabledForSection.ts similarity index 74% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useIsDropDisabledForSection.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/dnd/hooks/useIsDropDisabledForSection.ts index ffb69c514b..d7493da4fc 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useIsDropDisabledForSection.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/dnd/hooks/useIsDropDisabledForSection.ts @@ -1,6 +1,6 @@ -import { ADD_TO_NAV_SOURCE_DROPPABLE_ID } from '@/navigation-menu-item/constants/AddToNavSourceDroppableId'; -import { NavigationDragSourceContext } from '@/navigation-menu-item/contexts/NavigationDragSourceContext'; -import { isWorkspaceDroppableId } from '@/navigation-menu-item/utils/isWorkspaceDroppableId'; +import { ADD_TO_NAV_SOURCE_DROPPABLE_ID } from '@/navigation-menu-item/common/constants/AddToNavSourceDroppableId'; +import { NavigationDragSourceContext } from '@/navigation-menu-item/common/contexts/NavigationDragSourceContext'; +import { isWorkspaceDroppableId } from '@/navigation-menu-item/common/utils/isWorkspaceDroppableId'; import { useContext } from 'react'; import { isDefined } from 'twenty-shared/utils'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderContent.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderContent.tsx new file mode 100644 index 0000000000..46bdc03cc0 --- /dev/null +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderContent.tsx @@ -0,0 +1,91 @@ +import { IconHeartOff } from 'twenty-ui/display'; +import { LightIconButton } from 'twenty-ui/input'; +import { type NavigationMenuItem } from '~/generated-metadata/graphql'; + +import { NavigationMenuItemBackButton } from '@/navigation-menu-item/edit/components/NavigationMenuItemBackButton'; +import { NavigationMenuItemIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemIcon'; +import { WorkspaceDndKitSortableItem } from '@/navigation-menu-item/display/dnd/components/WorkspaceDndKitSortableItem'; +import { useDeleteNavigationMenuItem } from '@/navigation-menu-item/common/hooks/useDeleteNavigationMenuItem'; +import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink'; +import { getNavigationMenuItemLabel } from '@/navigation-menu-item/display/utils/getNavigationMenuItemLabel'; +import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/display/object/utils/getNavigationMenuItemObjectNameSingular'; +import { getObjectNavigationMenuItemSecondaryLabel } from '@/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemSecondaryLabel'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; +import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; +import { NavigationDrawerItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerItem'; +import { viewsSelector } from '@/views/states/selectors/viewsSelector'; + +type NavigationMenuItemFolderContentProps = { + folderId: string; + folderName: string; + navigationMenuItems: NavigationMenuItem[]; +}; + +export const NavigationMenuItemFolderContent = ({ + folderName, + folderId, + navigationMenuItems, +}: NavigationMenuItemFolderContentProps) => { + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); + const views = useAtomStateValue(viewsSelector); + const { deleteNavigationMenuItem } = useDeleteNavigationMenuItem(); + + const folderDroppableId = `folder-${folderId}`; + + return ( + <> + + {navigationMenuItems.map((navigationMenuItem, index) => { + const label = getNavigationMenuItemLabel( + navigationMenuItem, + objectMetadataItems, + views, + ); + const computedLink = getNavigationMenuItemComputedLink( + navigationMenuItem, + objectMetadataItems, + views, + ); + const objectNameSingular = getNavigationMenuItemObjectNameSingular( + navigationMenuItem, + objectMetadataItems, + views, + ); + + return ( + + ( + + )} + rightOptions={ + { + e.stopPropagation(); + deleteNavigationMenuItem(navigationMenuItem.id); + }} + accent="tertiary" + /> + } + triggerEvent="CLICK" + to={computedLink} + /> + + ); + })} + + ); +}; diff --git a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemFolderContent.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderDisplay.tsx similarity index 73% rename from packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemFolderContent.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderDisplay.tsx index 12dd4e1580..cf20662fd0 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemFolderContent.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolderDisplay.tsx @@ -1,18 +1,17 @@ import { lazy, Suspense } from 'react'; -import { WorkspaceFolderReadOnly } from '@/object-metadata/components/WorkspaceFolderReadOnly'; -import type { WorkspaceSectionItemContentProps } from '@/object-metadata/components/WorkspaceSectionItemContentProps'; +import { NavigationMenuItemFolderReadOnly } from '@/navigation-menu-item/display/folder/components/NavigationMenuItemFolderReadOnly'; +import type { WorkspaceSectionItemContentProps } from '@/navigation-menu-item/display/sections/types/WorkspaceSectionItemContentProps'; const LazyWorkspaceNavigationMenuItemsFolder = lazy(() => import( - '@/navigation-menu-item/components/WorkspaceNavigationMenuItemsFolder' + '@/navigation-menu-item/display/folder/components/WorkspaceNavigationMenuItemsFolder' ).then((m) => ({ default: m.WorkspaceNavigationMenuItemsFolder })), ); -type NavigationDrawerSectionForWorkspaceItemFolderContentProps = - WorkspaceSectionItemContentProps; +type NavigationMenuItemFolderDisplayProps = WorkspaceSectionItemContentProps; -export const NavigationDrawerSectionForWorkspaceItemFolderContent = ({ +export const NavigationMenuItemFolderDisplay = ({ item, editModeProps, isDragging, @@ -21,7 +20,7 @@ export const NavigationDrawerSectionForWorkspaceItemFolderContent = ({ selectedNavigationMenuItemId, onNavigationMenuItemClick, readOnly = false, -}: NavigationDrawerSectionForWorkspaceItemFolderContentProps) => { +}: NavigationMenuItemFolderDisplayProps) => { const folderId = item.id; const folderName = item.name ?? 'Folder'; const folderIconKey = item.icon; @@ -31,7 +30,7 @@ export const NavigationDrawerSectionForWorkspaceItemFolderContent = ({ if (readOnly) { return ( - { +}: NavigationMenuItemFolderReadOnlyProps) => { const { getIcon } = useIcons(); const FolderIcon = getIcon(folderIconKey ?? FOLDER_ICON_DEFAULT); const isMobile = useIsMobile(); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemFolders.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolders.tsx similarity index 88% rename from packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemFolders.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolders.tsx index 9c7585f831..86e023fb1f 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemFolders.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/NavigationMenuItemFolders.tsx @@ -1,10 +1,10 @@ import { useState } from 'react'; import { IconFolder } from 'twenty-ui/display'; -import { CurrentWorkspaceMemberNavigationMenuItems } from '@/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems'; -import { useCreateNavigationMenuItemFolder } from '@/navigation-menu-item/hooks/useCreateNavigationMenuItemFolder'; -import { useNavigationMenuItemsByFolder } from '@/navigation-menu-item/hooks/useNavigationMenuItemsByFolder'; -import { isNavigationMenuItemFolderCreatingState } from '@/navigation-menu-item/states/isNavigationMenuItemFolderCreatingState'; +import { FavoritesFolderItem } from '@/navigation-menu-item/display/sections/favorites/components/FavoritesFolderItem'; +import { useCreateNavigationMenuItemFolder } from '@/navigation-menu-item/display/folder/hooks/useCreateNavigationMenuItemFolder'; +import { useNavigationMenuItemsByFolder } from '@/navigation-menu-item/display/folder/hooks/useNavigationMenuItemsByFolder'; +import { isNavigationMenuItemFolderCreatingState } from '@/navigation-menu-item/common/states/isNavigationMenuItemFolderCreatingState'; import { useAtomState } from '@/ui/utilities/state/jotai/hooks/useAtomState'; import { NavigationDrawerAnimatedCollapseWrapper } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerAnimatedCollapseWrapper'; import { NavigationDrawerInput } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerInput'; @@ -70,7 +70,7 @@ export const NavigationMenuItemFolders = () => { )} {userNavigationMenuItemsByFolder.map((folder) => ( - 1} diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemFolderDragClone.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/WorkspaceNavigationMenuItemFolderDragClone.tsx similarity index 89% rename from packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemFolderDragClone.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/WorkspaceNavigationMenuItemFolderDragClone.tsx index 2b990cbcaa..3ba16dfe2a 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemFolderDragClone.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/WorkspaceNavigationMenuItemFolderDragClone.tsx @@ -8,10 +8,10 @@ import { isDefined } from 'twenty-shared/utils'; import { ThemeContext } from 'twenty-ui/theme-constants'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; -import { NavigationMenuItemIcon } from '@/navigation-menu-item/components/NavigationMenuItemIcon'; -import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemLabel'; -import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/utils/getNavigationMenuItemObjectNameSingular'; -import { getNavigationMenuItemSecondaryLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemSecondaryLabel'; +import { NavigationMenuItemIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemIcon'; +import { getNavigationMenuItemLabel } from '@/navigation-menu-item/display/utils/getNavigationMenuItemLabel'; +import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/display/object/utils/getNavigationMenuItemObjectNameSingular'; +import { getObjectNavigationMenuItemSecondaryLabel } from '@/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemSecondaryLabel'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { NavigationDrawerSubItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerSubItem'; @@ -78,7 +78,7 @@ export const WorkspaceNavigationMenuItemFolderDragClone = ({ secondaryLabel={ isIndexView ? undefined - : getNavigationMenuItemSecondaryLabel({ + : getObjectNavigationMenuItemSecondaryLabel({ objectMetadataItems, navigationMenuItemObjectNameSingular: objectNameSingular ?? '', }) diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemFolderSubItem.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/WorkspaceNavigationMenuItemFolderSubItem.tsx similarity index 86% rename from packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemFolderSubItem.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/WorkspaceNavigationMenuItemFolderSubItem.tsx index e77a178802..a921d66d93 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemFolderSubItem.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/WorkspaceNavigationMenuItemFolderSubItem.tsx @@ -2,14 +2,14 @@ import { NavigationMenuItemType } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; -import { NavigationMenuItemIcon } from '@/navigation-menu-item/components/NavigationMenuItemIcon'; -import { type NavigationMenuItemClickParams } from '@/navigation-menu-item/hooks/useWorkspaceSectionItems'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; -import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/utils/getNavigationMenuItemComputedLink'; -import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemLabel'; -import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/utils/getNavigationMenuItemObjectNameSingular'; -import { getNavigationMenuItemSecondaryLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemSecondaryLabel'; -import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/utils/getObjectMetadataForNavigationMenuItem'; +import { NavigationMenuItemIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemIcon'; +import { type NavigationMenuItemClickParams } from '@/navigation-menu-item/display/hooks/useWorkspaceSectionItems'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; +import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink'; +import { getNavigationMenuItemLabel } from '@/navigation-menu-item/display/utils/getNavigationMenuItemLabel'; +import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/display/object/utils/getNavigationMenuItemObjectNameSingular'; +import { getObjectNavigationMenuItemSecondaryLabel } from '@/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemSecondaryLabel'; +import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/display/object/utils/getObjectMetadataForNavigationMenuItem'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { NavigationDrawerSubItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerSubItem'; import { getNavigationSubItemLeftAdornment } from '@/ui/navigation/navigation-drawer/utils/getNavigationSubItemLeftAdornment'; @@ -94,7 +94,7 @@ export const WorkspaceNavigationMenuItemFolderSubItem = ({ secondaryLabel={ isIndexView ? undefined - : getNavigationMenuItemSecondaryLabel({ + : getObjectNavigationMenuItemSecondaryLabel({ objectMetadataItems, navigationMenuItemObjectNameSingular: objectNameSingular ?? '', }) diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemsFolder.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/WorkspaceNavigationMenuItemsFolder.tsx similarity index 90% rename from packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemsFolder.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/WorkspaceNavigationMenuItemsFolder.tsx index 0761e505e4..17d8150a48 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemsFolder.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/components/WorkspaceNavigationMenuItemsFolder.tsx @@ -11,31 +11,31 @@ import { } from 'twenty-ui/display'; import { ThemeContext, themeCssVariables } from 'twenty-ui/theme-constants'; -import { useIsDropDisabledForSection } from '@/navigation-menu-item/hooks/useIsDropDisabledForSection'; -import { useOpenAddItemToFolderPage } from '@/navigation-menu-item/hooks/useOpenAddItemToFolderPage'; -import { useWorkspaceFolderOpenState } from '@/navigation-menu-item/hooks/useWorkspaceFolderOpenState'; -import { addMenuItemInsertionContextState } from '@/navigation-menu-item/states/addMenuItemInsertionContextState'; +import { useIsDropDisabledForSection } from '@/navigation-menu-item/display/dnd/hooks/useIsDropDisabledForSection'; +import { useOpenAddItemToFolderPage } from '@/navigation-menu-item/edit/hooks/useOpenAddItemToFolderPage'; +import { useWorkspaceFolderOpenState } from '@/navigation-menu-item/display/folder/hooks/useWorkspaceFolderOpenState'; +import { addMenuItemInsertionContextState } from '@/navigation-menu-item/common/states/addMenuItemInsertionContextState'; import { sidePanelPageState } from '@/side-panel/states/sidePanelPageState'; import { AnimatedExpandableContainer } from 'twenty-ui/layout'; import { useIsMobile } from 'twenty-ui/utilities'; -import { NavigationItemDropTarget } from '@/navigation-menu-item/components/NavigationItemDropTarget'; +import { NavigationItemDropTarget } from '@/navigation-menu-item/display/dnd/components/NavigationItemDropTarget'; import { FOLDER_HEADER_SLOT_COLLISION_PRIORITY, WorkspaceDndKitDroppableSlot, -} from '@/navigation-menu-item/components/WorkspaceDndKitDroppableSlot'; -import { WorkspaceDndKitSortableItem } from '@/navigation-menu-item/components/WorkspaceDndKitSortableItem'; -import { WorkspaceNavigationMenuItemFolderSubItem } from '@/navigation-menu-item/components/WorkspaceNavigationMenuItemFolderSubItem'; -import { FOLDER_ICON_DEFAULT } from '@/navigation-menu-item/constants/FolderIconDefault'; -import { DEFAULT_NAVIGATION_MENU_ITEM_COLOR_FOLDER } from '@/navigation-menu-item/constants/NavigationMenuItemDefaultColorFolder'; -import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/constants/NavigationMenuItemDroppableIds'; -import { NavigationSections } from '@/navigation-menu-item/constants/NavigationSections.constants'; -import { NavigationDropTargetContext } from '@/navigation-menu-item/contexts/NavigationDropTargetContext'; -import { NavigationMenuItemDragContext } from '@/navigation-menu-item/contexts/NavigationMenuItemDragContext'; -import { SortableDropTargetRefContext } from '@/navigation-menu-item/contexts/SortableDropTargetRefContext'; -import { type NavigationMenuItemClickParams } from '@/navigation-menu-item/hooks/useWorkspaceSectionItems'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; -import { getDndKitDropTargetId } from '@/navigation-menu-item/utils/getDndKitDropTargetId'; +} from '@/navigation-menu-item/display/dnd/components/WorkspaceDndKitDroppableSlot'; +import { WorkspaceDndKitSortableItem } from '@/navigation-menu-item/display/dnd/components/WorkspaceDndKitSortableItem'; +import { WorkspaceNavigationMenuItemFolderSubItem } from '@/navigation-menu-item/display/folder/components/WorkspaceNavigationMenuItemFolderSubItem'; +import { FOLDER_ICON_DEFAULT } from '@/navigation-menu-item/common/constants/FolderIconDefault'; +import { DEFAULT_NAVIGATION_MENU_ITEM_COLOR_FOLDER } from '@/navigation-menu-item/common/constants/NavigationMenuItemDefaultColorFolder'; +import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/common/constants/NavigationMenuItemDroppableIds'; +import { NavigationSections } from '@/navigation-menu-item/common/constants/NavigationSections.constants'; +import { NavigationDropTargetContext } from '@/navigation-menu-item/common/contexts/NavigationDropTargetContext'; +import { NavigationMenuItemDragContext } from '@/navigation-menu-item/common/contexts/NavigationMenuItemDragContext'; +import { SortableDropTargetRefContext } from '@/navigation-menu-item/common/contexts/SortableDropTargetRefContext'; +import { type NavigationMenuItemClickParams } from '@/navigation-menu-item/display/hooks/useWorkspaceSectionItems'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; +import { getDndKitDropTargetId } from '@/navigation-menu-item/common/utils/getDndKitDropTargetId'; import { NavigationDrawerItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerItem'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; import { NavigationDrawerItemsCollapsableContainer } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerItemsCollapsableContainer'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useCreateNavigationMenuItemFolder.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/hooks/useCreateNavigationMenuItemFolder.ts similarity index 97% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useCreateNavigationMenuItemFolder.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/folder/hooks/useCreateNavigationMenuItemFolder.ts index 6f75b06dd6..650c58c3d2 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useCreateNavigationMenuItemFolder.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/hooks/useCreateNavigationMenuItemFolder.ts @@ -3,7 +3,7 @@ import { isDefined } from 'twenty-shared/utils'; import { useMutation } from '@apollo/client/react'; import { CreateNavigationMenuItemDocument } from '~/generated-metadata/graphql'; -import { useNavigationMenuItemsData } from '@/navigation-menu-item/hooks/useNavigationMenuItemsData'; +import { useNavigationMenuItemsData } from '@/navigation-menu-item/display/hooks/useNavigationMenuItemsData'; export const useCreateNavigationMenuItemFolder = () => { const { navigationMenuItems, currentWorkspaceMemberId } = diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuItemsByFolder.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/hooks/useNavigationMenuItemsByFolder.ts similarity index 94% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuItemsByFolder.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/folder/hooks/useNavigationMenuItemsByFolder.ts index e9ea5273fe..5b8ce1d061 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuItemsByFolder.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/hooks/useNavigationMenuItemsByFolder.ts @@ -1,13 +1,13 @@ import { isDefined } from 'twenty-shared/utils'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; -import { filterAndSortNavigationMenuItems } from '@/navigation-menu-item/utils/filterAndSortNavigationMenuItems'; -import { isNavigationMenuItemFolder } from '@/navigation-menu-item/utils/isNavigationMenuItemFolder'; +import { filterAndSortNavigationMenuItems } from '@/navigation-menu-item/common/utils/filterAndSortNavigationMenuItems'; +import { isNavigationMenuItemFolder } from '@/navigation-menu-item/common/utils/isNavigationMenuItemFolder'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; -import { useNavigationMenuItemsData } from './useNavigationMenuItemsData'; +import { useNavigationMenuItemsData } from '@/navigation-menu-item/display/hooks/useNavigationMenuItemsData'; type NavigationMenuItemFolder = { id: string; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useWorkspaceFolderOpenState.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/hooks/useWorkspaceFolderOpenState.ts similarity index 91% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useWorkspaceFolderOpenState.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/folder/hooks/useWorkspaceFolderOpenState.ts index cc8be66492..7dfc3b99e7 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useWorkspaceFolderOpenState.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/hooks/useWorkspaceFolderOpenState.ts @@ -5,11 +5,11 @@ import { useIsMobile } from 'twenty-ui/utilities'; import { isNonEmptyString } from '@sniptt/guards'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; -import { openNavigationMenuItemFolderIdsState } from '@/navigation-menu-item/states/openNavigationMenuItemFolderIdsState'; -import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/utils/getNavigationMenuItemComputedLink'; -import { isLocationMatchingNavigationMenuItem } from '@/navigation-menu-item/utils/isLocationMatchingNavigationMenuItem'; +import { openNavigationMenuItemFolderIdsState } from '@/navigation-menu-item/common/states/openNavigationMenuItemFolderIdsState'; +import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink'; +import { isLocationMatchingNavigationMenuItem } from '@/navigation-menu-item/common/utils/isLocationMatchingNavigationMenuItem'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; -import { currentNavigationMenuItemFolderIdState } from '@/ui/navigation/navigation-drawer/states/currentNavigationMenuItemFolderIdState'; +import { currentNavigationMenuItemFolderIdState } from '@/navigation-menu-item/common/states/currentNavigationMenuItemFolderIdState'; import { useAtomState } from '@/ui/utilities/state/jotai/hooks/useAtomState'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/folder/utils/getFolderNavigationMenuItemLabel.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/utils/getFolderNavigationMenuItemLabel.ts new file mode 100644 index 0000000000..dc4c723567 --- /dev/null +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/folder/utils/getFolderNavigationMenuItemLabel.ts @@ -0,0 +1,7 @@ +import { type NavigationMenuItem } from '~/generated-metadata/graphql'; + +export const getFolderNavigationMenuItemLabel = ( + item: Pick, +): string => { + return item.name ?? 'Folder'; +}; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuItemsData.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useNavigationMenuItemsData.ts similarity index 89% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuItemsData.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useNavigationMenuItemsData.ts index 120566f3eb..3784c5de06 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuItemsData.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useNavigationMenuItemsData.ts @@ -1,8 +1,8 @@ import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; -import { filterWorkspaceNavigationMenuItems } from '@/navigation-menu-item/utils/filterWorkspaceNavigationMenuItems'; -import { navigationMenuItemsSelector } from '@/navigation-menu-item/states/navigationMenuItemsSelector'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; +import { filterWorkspaceNavigationMenuItems } from '@/navigation-menu-item/common/utils/filterWorkspaceNavigationMenuItems'; +import { navigationMenuItemsSelector } from '@/navigation-menu-item/common/states/navigationMenuItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { isDefined } from 'twenty-shared/utils'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSortedNavigationMenuItems.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useSortedNavigationMenuItems.ts similarity index 95% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useSortedNavigationMenuItems.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useSortedNavigationMenuItems.ts index 3884489431..66a46837fa 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSortedNavigationMenuItems.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useSortedNavigationMenuItems.ts @@ -1,6 +1,6 @@ import { useMemo } from 'react'; -import { filterAndSortNavigationMenuItems } from '@/navigation-menu-item/utils/filterAndSortNavigationMenuItems'; +import { filterAndSortNavigationMenuItems } from '@/navigation-menu-item/common/utils/filterAndSortNavigationMenuItems'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useWorkspaceNavigationMenuItems.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useWorkspaceNavigationMenuItems.ts similarity index 98% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useWorkspaceNavigationMenuItems.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useWorkspaceNavigationMenuItems.ts index 70a1914cba..db339c26a8 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useWorkspaceNavigationMenuItems.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useWorkspaceNavigationMenuItems.ts @@ -1,6 +1,6 @@ import { useMemo } from 'react'; -import { isNavigationMenuItemFolder } from '@/navigation-menu-item/utils/isNavigationMenuItemFolder'; +import { isNavigationMenuItemFolder } from '@/navigation-menu-item/common/utils/isNavigationMenuItemFolder'; import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useWorkspaceSectionItems.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useWorkspaceSectionItems.ts similarity index 90% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useWorkspaceSectionItems.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useWorkspaceSectionItems.ts index 07398c975c..b13a7651ee 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useWorkspaceSectionItems.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/hooks/useWorkspaceSectionItems.ts @@ -1,9 +1,9 @@ import { type NavigationMenuItem } from '~/generated-metadata/graphql'; -import { FOLDER_ICON_DEFAULT } from '@/navigation-menu-item/constants/FolderIconDefault'; +import { FOLDER_ICON_DEFAULT } from '@/navigation-menu-item/common/constants/FolderIconDefault'; import { NavigationMenuItemType } from 'twenty-shared/types'; -import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/utils/getObjectMetadataForNavigationMenuItem'; -import { isNavigationMenuItemFolder } from '@/navigation-menu-item/utils/isNavigationMenuItemFolder'; +import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/display/object/utils/getObjectMetadataForNavigationMenuItem'; +import { isNavigationMenuItemFolder } from '@/navigation-menu-item/common/utils/isNavigationMenuItemFolder'; import { getObjectPermissionsForObject } from '@/object-metadata/utils/getObjectPermissionsForObject'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; @@ -12,7 +12,7 @@ import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomState import { viewsSelector } from '@/views/states/selectors/viewsSelector'; import { isDefined } from 'twenty-shared/utils'; -import { useNavigationMenuItemsByFolder } from './useNavigationMenuItemsByFolder'; +import { useNavigationMenuItemsByFolder } from '@/navigation-menu-item/display/folder/hooks/useNavigationMenuItemsByFolder'; import { useNavigationMenuItemsData } from './useNavigationMenuItemsData'; import { useSortedNavigationMenuItems } from './useSortedNavigationMenuItems'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/LinkIconWithLinkOverlay.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/link/components/LinkIconWithLinkOverlay.tsx similarity index 93% rename from packages/twenty-front/src/modules/navigation-menu-item/components/LinkIconWithLinkOverlay.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/link/components/LinkIconWithLinkOverlay.tsx index 4e93748e0c..6d764ce5a0 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/LinkIconWithLinkOverlay.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/link/components/LinkIconWithLinkOverlay.tsx @@ -4,9 +4,9 @@ import { isDefined } from 'twenty-shared/utils'; import type { IconComponent } from 'twenty-ui/display'; import { themeCssVariables } from 'twenty-ui/theme-constants'; -import { DEFAULT_NAVIGATION_MENU_ITEM_COLOR_LINK } from '@/navigation-menu-item/constants/NavigationMenuItemDefaultColorLink'; -import { getLinkFaviconUrl } from '@/navigation-menu-item/utils/getLinkFaviconUrl'; -import { getNavigationMenuItemIconStyleFromColor } from '@/navigation-menu-item/utils/getNavigationMenuItemIconStyleFromColor'; +import { DEFAULT_NAVIGATION_MENU_ITEM_COLOR_LINK } from '@/navigation-menu-item/common/constants/NavigationMenuItemDefaultColorLink'; +import { getLinkFaviconUrl } from '@/navigation-menu-item/display/link/utils/getLinkFaviconUrl'; +import { getNavigationMenuItemIconStyleFromColor } from '@/navigation-menu-item/common/utils/getNavigationMenuItemIconStyleFromColor'; const failedFaviconUrls = new Set(); diff --git a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemLinkContent.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/link/components/NavigationMenuItemLinkDisplay.tsx similarity index 51% rename from packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemLinkContent.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/link/components/NavigationMenuItemLinkDisplay.tsx index 3544b91991..32394406c6 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemLinkContent.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/link/components/NavigationMenuItemLinkDisplay.tsx @@ -1,35 +1,26 @@ -import { NavigationMenuItemIcon } from '@/navigation-menu-item/components/NavigationMenuItemIcon'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; -import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/utils/getNavigationMenuItemComputedLink'; -import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemLabel'; -import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; -import type { WorkspaceSectionItemContentProps } from '@/object-metadata/components/WorkspaceSectionItemContentProps'; +import { NavigationMenuItemIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemIcon'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; +import { getLinkNavigationMenuItemComputedLink } from '@/navigation-menu-item/display/link/utils/getLinkNavigationMenuItemComputedLink'; +import { getLinkNavigationMenuItemLabel } from '@/navigation-menu-item/display/link/utils/getLinkNavigationMenuItemLabel'; +import type { WorkspaceSectionItemContentProps } from '@/navigation-menu-item/display/sections/types/WorkspaceSectionItemContentProps'; import { NavigationDrawerItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerItem'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; -import { viewsSelector } from '@/views/states/selectors/viewsSelector'; import { IconArrowUpRight } from 'twenty-ui/display'; import { themeCssVariables } from 'twenty-ui/theme-constants'; -type NavigationDrawerSectionForWorkspaceItemLinkContentProps = - WorkspaceSectionItemContentProps; +type NavigationMenuItemLinkDisplayProps = WorkspaceSectionItemContentProps; -export const NavigationDrawerSectionForWorkspaceItemLinkContent = ({ +export const NavigationMenuItemLinkDisplay = ({ item, editModeProps, isDragging, -}: NavigationDrawerSectionForWorkspaceItemLinkContentProps) => { +}: NavigationMenuItemLinkDisplayProps) => { const isNavigationMenuInEditMode = useAtomStateValue( isNavigationMenuInEditModeState, ); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); - const views = useAtomStateValue(viewsSelector); - const label = getNavigationMenuItemLabel(item, objectMetadataItems, views); - const computedLink = getNavigationMenuItemComputedLink( - item, - objectMetadataItems, - views, - ); + const label = getLinkNavigationMenuItemLabel(item); + const computedLink = getLinkNavigationMenuItemComputedLink(item); return ( { it('returns hostname and strips www prefix', () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/normalizeUrl.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/link/utils/__tests__/normalizeUrl.test.ts similarity index 85% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/normalizeUrl.test.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/link/utils/__tests__/normalizeUrl.test.ts index 7d3d3fb699..de563055ca 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/normalizeUrl.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/link/utils/__tests__/normalizeUrl.test.ts @@ -1,4 +1,4 @@ -import { normalizeUrl } from '@/navigation-menu-item/utils/normalizeUrl'; +import { normalizeUrl } from '@/navigation-menu-item/display/link/utils/normalizeUrl'; describe('normalizeUrl', () => { it('should leave url unchanged when it has protocol, otherwise prepend https', () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/extractDomainFromUrl.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/link/utils/extractDomainFromUrl.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/extractDomainFromUrl.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/link/utils/extractDomainFromUrl.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/getLinkFaviconUrl.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/link/utils/getLinkFaviconUrl.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/getLinkFaviconUrl.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/link/utils/getLinkFaviconUrl.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/link/utils/getLinkNavigationMenuItemComputedLink.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/link/utils/getLinkNavigationMenuItemComputedLink.ts new file mode 100644 index 0000000000..72ba6e9625 --- /dev/null +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/link/utils/getLinkNavigationMenuItemComputedLink.ts @@ -0,0 +1,11 @@ +import { type NavigationMenuItem } from '~/generated-metadata/graphql'; + +export const getLinkNavigationMenuItemComputedLink = ( + item: Pick, +): string => { + const linkUrl = (item.link ?? '').trim(); + if (linkUrl.startsWith('http://') || linkUrl.startsWith('https://')) { + return linkUrl; + } + return linkUrl ? `https://${linkUrl}` : ''; +}; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/link/utils/getLinkNavigationMenuItemLabel.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/link/utils/getLinkNavigationMenuItemLabel.ts new file mode 100644 index 0000000000..83a85f1031 --- /dev/null +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/link/utils/getLinkNavigationMenuItemLabel.ts @@ -0,0 +1,8 @@ +import { type NavigationMenuItem } from '~/generated-metadata/graphql'; + +export const getLinkNavigationMenuItemLabel = ( + item: Pick, +): string => { + const linkUrl = (item.link ?? '').trim(); + return (item.name ?? linkUrl) || 'Link'; +}; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/normalizeUrl.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/link/utils/normalizeUrl.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/normalizeUrl.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/link/utils/normalizeUrl.ts diff --git a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerItemForObjectMetadataItem.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/object/components/NavigationDrawerItemForObjectMetadataItem.tsx similarity index 94% rename from packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerItemForObjectMetadataItem.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/object/components/NavigationDrawerItemForObjectMetadataItem.tsx index 4c27558651..ab9e2f6c07 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerItemForObjectMetadataItem.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/components/NavigationDrawerItemForObjectMetadataItem.tsx @@ -1,9 +1,9 @@ -import { ObjectIconWithViewOverlay } from '@/navigation-menu-item/components/ObjectIconWithViewOverlay'; -import { useObjectNavItemColor } from '@/navigation-menu-item/hooks/useObjectNavItemColor'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; -import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/utils/getNavigationMenuItemComputedLink'; -import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemLabel'; -import { recordIdentifierToObjectRecordIdentifier } from '@/navigation-menu-item/utils/recordIdentifierToObjectRecordIdentifier'; +import { ObjectIconWithViewOverlay } from '@/navigation-menu-item/display/view/components/ObjectIconWithViewOverlay'; +import { useObjectNavItemColor } from '@/navigation-menu-item/common/hooks/useObjectNavItemColor'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; +import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink'; +import { getNavigationMenuItemLabel } from '@/navigation-menu-item/display/utils/getNavigationMenuItemLabel'; +import { recordIdentifierToObjectRecordIdentifier } from '@/navigation-menu-item/common/utils/recordIdentifierToObjectRecordIdentifier'; import { lastVisitedViewPerObjectMetadataItemState } from '@/navigation/states/lastVisitedViewPerObjectMetadataItemState'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; diff --git a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemObjectContent.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/object/components/NavigationMenuItemObjectDisplay.tsx similarity index 68% rename from packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemObjectContent.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/object/components/NavigationMenuItemObjectDisplay.tsx index 4a3ccd6a18..1dbbe1ae08 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemObjectContent.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/components/NavigationMenuItemObjectDisplay.tsx @@ -1,19 +1,18 @@ -import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/utils/getObjectMetadataForNavigationMenuItem'; -import { NavigationDrawerItemForObjectMetadataItem } from '@/object-metadata/components/NavigationDrawerItemForObjectMetadataItem'; -import type { WorkspaceSectionItemContentProps } from '@/object-metadata/components/WorkspaceSectionItemContentProps'; +import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/display/object/utils/getObjectMetadataForNavigationMenuItem'; +import { NavigationDrawerItemForObjectMetadataItem } from '@/navigation-menu-item/display/object/components/NavigationDrawerItemForObjectMetadataItem'; +import type { WorkspaceSectionItemContentProps } from '@/navigation-menu-item/display/sections/types/WorkspaceSectionItemContentProps'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; -type NavigationDrawerSectionForWorkspaceItemObjectContentProps = - WorkspaceSectionItemContentProps; +type NavigationMenuItemObjectDisplayProps = WorkspaceSectionItemContentProps; -export const NavigationDrawerSectionForWorkspaceItemObjectContent = ({ +export const NavigationMenuItemObjectDisplay = ({ item, editModeProps, isDragging, onActiveObjectMetadataItemClick, -}: NavigationDrawerSectionForWorkspaceItemObjectContentProps) => { +}: NavigationMenuItemObjectDisplayProps) => { const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); const objectMetadataItem = getObjectMetadataForNavigationMenuItem( diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/getNavigationMenuItemSecondaryLabel.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/__tests__/getNavigationMenuItemSecondaryLabel.test.ts similarity index 67% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/getNavigationMenuItemSecondaryLabel.test.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/__tests__/getNavigationMenuItemSecondaryLabel.test.ts index c8d9ad5c9c..e200c528e2 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/getNavigationMenuItemSecondaryLabel.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/__tests__/getNavigationMenuItemSecondaryLabel.test.ts @@ -1,9 +1,9 @@ import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; -import { getNavigationMenuItemSecondaryLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemSecondaryLabel'; +import { getObjectNavigationMenuItemSecondaryLabel } from '@/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemSecondaryLabel'; -describe('getNavigationMenuItemSecondaryLabel', () => { +describe('getObjectNavigationMenuItemSecondaryLabel', () => { it('should return "View" for view object', () => { - const result = getNavigationMenuItemSecondaryLabel({ + const result = getObjectNavigationMenuItemSecondaryLabel({ objectMetadataItems: generatedMockObjectMetadataItems, navigationMenuItemObjectNameSingular: 'view', }); @@ -12,7 +12,7 @@ describe('getNavigationMenuItemSecondaryLabel', () => { }); it('should return labelSingular for matching object metadata item', () => { - const result = getNavigationMenuItemSecondaryLabel({ + const result = getObjectNavigationMenuItemSecondaryLabel({ objectMetadataItems: generatedMockObjectMetadataItems, navigationMenuItemObjectNameSingular: 'person', }); @@ -21,7 +21,7 @@ describe('getNavigationMenuItemSecondaryLabel', () => { }); it('should return undefined when object metadata item is not found', () => { - const result = getNavigationMenuItemSecondaryLabel({ + const result = getObjectNavigationMenuItemSecondaryLabel({ objectMetadataItems: generatedMockObjectMetadataItems, navigationMenuItemObjectNameSingular: 'nonexistent', }); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/getObjectMetadataForNavigationMenuItem.test.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/__tests__/getObjectMetadataForNavigationMenuItem.test.ts similarity index 97% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/getObjectMetadataForNavigationMenuItem.test.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/__tests__/getObjectMetadataForNavigationMenuItem.test.ts index 262aa58a10..21ad5aaed6 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/__tests__/getObjectMetadataForNavigationMenuItem.test.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/__tests__/getObjectMetadataForNavigationMenuItem.test.ts @@ -1,5 +1,5 @@ import { NavigationMenuItemType } from 'twenty-shared/types'; -import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/utils/getObjectMetadataForNavigationMenuItem'; +import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/display/object/utils/getObjectMetadataForNavigationMenuItem'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { type View } from '@/views/types/View'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/getNavigationMenuItemObjectNameSingular.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getNavigationMenuItemObjectNameSingular.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/getNavigationMenuItemObjectNameSingular.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getNavigationMenuItemObjectNameSingular.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/getObjectMetadataForNavigationMenuItem.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectMetadataForNavigationMenuItem.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/getObjectMetadataForNavigationMenuItem.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectMetadataForNavigationMenuItem.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemComputedLink.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemComputedLink.ts new file mode 100644 index 0000000000..6bc9ebaf99 --- /dev/null +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemComputedLink.ts @@ -0,0 +1,29 @@ +import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type View } from '@/views/types/View'; +import { ViewKey } from '@/views/types/ViewKey'; +import { AppPath } from 'twenty-shared/types'; +import { getAppPath, isDefined } from 'twenty-shared/utils'; +import { type NavigationMenuItem } from '~/generated-metadata/graphql'; + +export const getObjectNavigationMenuItemComputedLink = ( + item: Pick, + objectMetadataItems: ObjectMetadataItem[], + views: Pick[], +): string => { + const objectMetadataItem = objectMetadataItems.find( + (meta) => meta.id === item.targetObjectMetadataId, + ); + if (!isDefined(objectMetadataItem)) { + return ''; + } + const indexView = views.find( + (view) => + view.objectMetadataId === objectMetadataItem.id && + view.key === ViewKey.INDEX, + ); + return getAppPath( + AppPath.RecordIndexPage, + { objectNamePlural: objectMetadataItem.namePlural }, + indexView ? { viewId: indexView.id } : {}, + ); +}; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemLabel.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemLabel.ts new file mode 100644 index 0000000000..3c043cbd6f --- /dev/null +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemLabel.ts @@ -0,0 +1,12 @@ +import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type NavigationMenuItem } from '~/generated-metadata/graphql'; + +export const getObjectNavigationMenuItemLabel = ( + item: Pick, + objectMetadataItems: Pick[], +): string => { + const objectMetadataItem = objectMetadataItems.find( + (meta) => meta.id === item.targetObjectMetadataId, + ); + return objectMetadataItem?.labelPlural ?? ''; +}; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/getNavigationMenuItemSecondaryLabel.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemSecondaryLabel.ts similarity index 76% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/getNavigationMenuItemSecondaryLabel.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemSecondaryLabel.ts index 1908971852..ac01eac490 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/getNavigationMenuItemSecondaryLabel.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemSecondaryLabel.ts @@ -1,6 +1,6 @@ import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; -type GetNavigationMenuItemSecondaryLabelProps = { +type GetObjectNavigationMenuItemSecondaryLabelProps = { objectMetadataItems: Pick< ObjectMetadataItem, 'nameSingular' | 'labelSingular' @@ -8,10 +8,10 @@ type GetNavigationMenuItemSecondaryLabelProps = { navigationMenuItemObjectNameSingular: string; }; -export const getNavigationMenuItemSecondaryLabel = ({ +export const getObjectNavigationMenuItemSecondaryLabel = ({ objectMetadataItems, navigationMenuItemObjectNameSingular, -}: GetNavigationMenuItemSecondaryLabelProps) => { +}: GetObjectNavigationMenuItemSecondaryLabelProps) => { if (navigationMenuItemObjectNameSingular === 'view') { return 'View'; } diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/record/utils/getRecordNavigationMenuItemComputedLink.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/record/utils/getRecordNavigationMenuItemComputedLink.ts new file mode 100644 index 0000000000..7d532e1b37 --- /dev/null +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/record/utils/getRecordNavigationMenuItemComputedLink.ts @@ -0,0 +1,27 @@ +import { recordIdentifierToObjectRecordIdentifier } from '@/navigation-menu-item/common/utils/recordIdentifierToObjectRecordIdentifier'; +import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { isDefined } from 'twenty-shared/utils'; +import { type NavigationMenuItem } from '~/generated-metadata/graphql'; + +export const getRecordNavigationMenuItemComputedLink = ( + item: Pick< + NavigationMenuItem, + 'targetObjectMetadataId' | 'targetRecordIdentifier' + >, + objectMetadataItems: ObjectMetadataItem[], +): string => { + const objectMetadataItem = objectMetadataItems.find( + (meta) => meta.id === item.targetObjectMetadataId, + ); + if ( + !isDefined(objectMetadataItem) || + !isDefined(item.targetRecordIdentifier) + ) { + return ''; + } + const objectRecordIdentifier = recordIdentifierToObjectRecordIdentifier({ + recordIdentifier: item.targetRecordIdentifier, + objectMetadataItem, + }); + return objectRecordIdentifier.linkToShowPage ?? ''; +}; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/record/utils/getRecordNavigationMenuItemLabel.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/record/utils/getRecordNavigationMenuItemLabel.ts new file mode 100644 index 0000000000..204e550157 --- /dev/null +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/record/utils/getRecordNavigationMenuItemLabel.ts @@ -0,0 +1,7 @@ +import { type NavigationMenuItem } from '~/generated-metadata/graphql'; + +export const getRecordNavigationMenuItemLabel = ( + item: Pick, +): string => { + return item.targetRecordIdentifier?.labelIdentifier ?? ''; +}; diff --git a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerOpenedSection.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/components/NavigationDrawerOpenedSection.tsx similarity index 97% rename from packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerOpenedSection.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/sections/components/NavigationDrawerOpenedSection.tsx index 77edafae88..b453096bc1 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerOpenedSection.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/components/NavigationDrawerOpenedSection.tsx @@ -1,6 +1,6 @@ import { useParams } from 'react-router-dom'; -import { useWorkspaceNavigationMenuItems } from '@/navigation-menu-item/hooks/useWorkspaceNavigationMenuItems'; +import { useWorkspaceNavigationMenuItems } from '@/navigation-menu-item/display/hooks/useWorkspaceNavigationMenuItems'; import { NavigationDrawerSectionForObjectMetadataItems } from '@/object-metadata/components/NavigationDrawerSectionForObjectMetadataItems'; import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems'; import { CoreObjectNameSingular } from 'twenty-shared/types'; diff --git a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItems.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/components/NavigationDrawerSectionForWorkspaceItems.tsx similarity index 93% rename from packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItems.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/sections/components/NavigationDrawerSectionForWorkspaceItems.tsx index c606a7929a..7b07d672b9 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItems.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/components/NavigationDrawerSectionForWorkspaceItems.tsx @@ -1,16 +1,16 @@ -import { NavigationDropTargetContext } from '@/navigation-menu-item/contexts/NavigationDropTargetContext'; +import { NavigationDropTargetContext } from '@/navigation-menu-item/common/contexts/NavigationDropTargetContext'; import React, { lazy, Suspense, useContext } from 'react'; import { NavigationMenuItemType } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { AnimatedExpandableContainer } from 'twenty-ui/layout'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; -import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/constants/NavigationMenuItemDroppableIds'; -import { type NavigationMenuItemClickParams } from '@/navigation-menu-item/hooks/useWorkspaceSectionItems'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; -import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/utils/getObjectMetadataForNavigationMenuItem'; +import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/common/constants/NavigationMenuItemDroppableIds'; +import { type NavigationMenuItemClickParams } from '@/navigation-menu-item/display/hooks/useWorkspaceSectionItems'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; +import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/display/object/utils/getObjectMetadataForNavigationMenuItem'; import type { EditModeProps } from '@/object-metadata/components/EditModeProps'; -import { NavigationDrawerSectionForWorkspaceItemsListReadOnly } from '@/object-metadata/components/NavigationDrawerSectionForWorkspaceItemsListReadOnly'; +import { NavigationDrawerSectionForWorkspaceItemsListReadOnly } from '@/navigation-menu-item/display/sections/components/NavigationDrawerSectionForWorkspaceItemsListReadOnly'; import { WorkspaceSectionListEditModeFallback } from '@/object-metadata/components/WorkspaceSectionListEditModeFallback'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; @@ -27,7 +27,7 @@ import { themeCssVariables } from 'twenty-ui/theme-constants'; const LazyWorkspaceSectionListDndKit = lazy(() => import( - '@/object-metadata/components/NavigationDrawerSectionForWorkspaceItemsListDndKit' + '@/navigation-menu-item/display/sections/components/NavigationDrawerSectionForWorkspaceItemsListDndKit' ).then((m) => ({ default: m.WorkspaceSectionListDndKit })), ); diff --git a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemsListDndKit.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/components/NavigationDrawerSectionForWorkspaceItemsListDndKit.tsx similarity index 81% rename from packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemsListDndKit.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/sections/components/NavigationDrawerSectionForWorkspaceItemsListDndKit.tsx index 1c65fa3ee4..f875855b4f 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemsListDndKit.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/components/NavigationDrawerSectionForWorkspaceItemsListDndKit.tsx @@ -1,20 +1,20 @@ -import { WorkspaceDndKitDroppableSlot } from '@/navigation-menu-item/components/WorkspaceDndKitDroppableSlot'; -import { WorkspaceDndKitSortableItem } from '@/navigation-menu-item/components/WorkspaceDndKitSortableItem'; -import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/constants/NavigationMenuItemDroppableIds'; +import { WorkspaceDndKitDroppableSlot } from '@/navigation-menu-item/display/dnd/components/WorkspaceDndKitDroppableSlot'; +import { WorkspaceDndKitSortableItem } from '@/navigation-menu-item/display/dnd/components/WorkspaceDndKitSortableItem'; +import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/common/constants/NavigationMenuItemDroppableIds'; import { NavigationMenuItemType } from 'twenty-shared/types'; -import { NavigationDropTargetContext } from '@/navigation-menu-item/contexts/NavigationDropTargetContext'; -import { useIsDropDisabledForSection } from '@/navigation-menu-item/hooks/useIsDropDisabledForSection'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; +import { NavigationDropTargetContext } from '@/navigation-menu-item/common/contexts/NavigationDropTargetContext'; +import { useIsDropDisabledForSection } from '@/navigation-menu-item/display/dnd/hooks/useIsDropDisabledForSection'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { styled } from '@linaria/react'; import { useContext } from 'react'; import { themeCssVariables } from 'twenty-ui/theme-constants'; -import { NavigationMenuItemDragContext } from '@/navigation-menu-item/contexts/NavigationMenuItemDragContext'; -import { NavigationDrawerSectionForWorkspaceItemContent } from '@/object-metadata/components/NavigationDrawerSectionForWorkspaceItemContent'; -import { WorkspaceOrphanDropTarget } from '@/object-metadata/components/WorkspaceOrphanDropTarget'; -import { WorkspaceSectionAddMenuItemButton } from '@/object-metadata/components/WorkspaceSectionAddMenuItemButton'; -import type { WorkspaceSectionListDndKitProps } from '@/object-metadata/components/WorkspaceSectionListDndKitProps'; +import { NavigationMenuItemDragContext } from '@/navigation-menu-item/common/contexts/NavigationMenuItemDragContext'; +import { NavigationMenuItemDisplay } from '@/navigation-menu-item/display/components/NavigationMenuItemDisplay'; +import { WorkspaceOrphanDropTarget } from '@/navigation-menu-item/display/sections/components/WorkspaceOrphanDropTarget'; +import { WorkspaceSectionAddMenuItemButton } from '@/navigation-menu-item/edit/components/WorkspaceSectionAddMenuItemButton'; +import type { WorkspaceSectionListDndKitProps } from '@/navigation-menu-item/display/sections/types/WorkspaceSectionListDndKitProps'; const StyledList = styled.div` display: flex; @@ -62,7 +62,7 @@ export const WorkspaceSectionListDndKit = ({ } disabled={!isNavigationMenuInEditMode || workspaceDropDisabled} > - {filteredItems.map((item: NavigationMenuItem) => ( - { +}: FavoritesFolderItemProps) => { const { t } = useLingui(); const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); @@ -166,8 +163,6 @@ export const CurrentWorkspaceMemberNavigationMenuItems = ({ ); const { deleteNavigationMenuItem } = useDeleteNavigationMenuItem(); - const folderContentDropDisabled = - useIsDropDisabledForSection(isWorkspaceFolder); const navigationMenuItemFolderContentLength = folder.navigationMenuItems.length; @@ -231,6 +226,8 @@ export const CurrentWorkspaceMemberNavigationMenuItems = ({ const navigationMenuItemCount = folder.navigationMenuItems.length; + const folderDroppableId = `folder-${folder.id}`; + return ( <> ) : ( - - - - - + + )} - - {(provided) => ( -
- {folder.navigationMenuItems.map((navigationMenuItem, index) => { - const label = getNavigationMenuItemLabel( - navigationMenuItem, - objectMetadataItems, - views, - ); - const computedLink = getNavigationMenuItemComputedLink( - navigationMenuItem, - objectMetadataItems, - views, - ); - const objectNameSingular = - getNavigationMenuItemObjectNameSingular( - navigationMenuItem, - objectMetadataItems, - views, - ); - const view = isDefined(navigationMenuItem.viewId) - ? views.find( - (view) => view.id === navigationMenuItem.viewId, - ) - : undefined; - const isIndexView = view?.key === ViewKey.INDEX; + {folder.navigationMenuItems.map((navigationMenuItem, index) => { + const label = getNavigationMenuItemLabel( + navigationMenuItem, + objectMetadataItems, + views, + ); + const computedLink = getNavigationMenuItemComputedLink( + navigationMenuItem, + objectMetadataItems, + views, + ); + const objectNameSingular = getNavigationMenuItemObjectNameSingular( + navigationMenuItem, + objectMetadataItems, + views, + ); + const view = isDefined(navigationMenuItem.viewId) + ? views.find((view) => view.id === navigationMenuItem.viewId) + : undefined; + const isIndexView = view?.key === ViewKey.INDEX; - return ( - ( - - )} - to={isDragging ? undefined : computedLink} - active={index === selectedNavigationMenuItemIndex} - subItemState={getNavigationSubItemLeftAdornment({ - index, - arrayLength: navigationMenuItemFolderContentLength, - selectedIndex: selectedNavigationMenuItemIndex, - })} - rightOptions={ - isWorkspaceFolder ? undefined : ( - { - e.stopPropagation(); - deleteNavigationMenuItem( - navigationMenuItem.id, - ); - }} - accent="tertiary" - /> - ) - } - isDragging={isDragging} - triggerEvent="CLICK" - iconColor={getEffectiveNavigationMenuItemColor( - navigationMenuItem, - )} - /> - } + return ( + + ( + - ); - })} - {provided.placeholder} -
- )} -
+ )} + to={isDragging ? undefined : computedLink} + active={index === selectedNavigationMenuItemIndex} + subItemState={getNavigationSubItemLeftAdornment({ + index, + arrayLength: navigationMenuItemFolderContentLength, + selectedIndex: selectedNavigationMenuItemIndex, + })} + rightOptions={ + isWorkspaceFolder ? undefined : ( + { + e.stopPropagation(); + deleteNavigationMenuItem(navigationMenuItem.id); + }} + accent="tertiary" + /> + ) + } + isDragging={isDragging} + triggerEvent="CLICK" + iconColor={getEffectiveNavigationMenuItemColor( + navigationMenuItem, + )} + /> + + ); + })}
diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/sections/favorites/components/FavoritesOrphanItems.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/favorites/components/FavoritesOrphanItems.tsx new file mode 100644 index 0000000000..03708b55f3 --- /dev/null +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/favorites/components/FavoritesOrphanItems.tsx @@ -0,0 +1,116 @@ +import { styled } from '@linaria/react'; +import { useContext } from 'react'; +import { useLocation } from 'react-router-dom'; +import { IconHeartOff } from 'twenty-ui/display'; +import { LightIconButton } from 'twenty-ui/input'; +import { themeCssVariables } from 'twenty-ui/theme-constants'; + +import { WorkspaceDndKitSortableItem } from '@/navigation-menu-item/display/dnd/components/WorkspaceDndKitSortableItem'; +import { NavigationMenuItemIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemIcon'; +import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/common/constants/NavigationMenuItemDroppableIds'; +import { NavigationMenuItemDragContext } from '@/navigation-menu-item/common/contexts/NavigationMenuItemDragContext'; +import { useDeleteNavigationMenuItem } from '@/navigation-menu-item/common/hooks/useDeleteNavigationMenuItem'; +import { useSortedNavigationMenuItems } from '@/navigation-menu-item/display/hooks/useSortedNavigationMenuItems'; +import { getEffectiveNavigationMenuItemColor } from '@/navigation-menu-item/common/utils/getEffectiveNavigationMenuItemColor'; +import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink'; +import { getNavigationMenuItemLabel } from '@/navigation-menu-item/display/utils/getNavigationMenuItemLabel'; +import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/display/object/utils/getNavigationMenuItemObjectNameSingular'; +import { getObjectNavigationMenuItemSecondaryLabel } from '@/navigation-menu-item/display/object/utils/getObjectNavigationMenuItemSecondaryLabel'; +import { isLocationMatchingNavigationMenuItem } from '@/navigation-menu-item/common/utils/isLocationMatchingNavigationMenuItem'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; +import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; +import { viewsSelector } from '@/views/states/selectors/viewsSelector'; +import { NavigationDrawerItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerItem'; + +const StyledEmptyContainer = styled.div` + width: 100%; +`; + +const StyledOrphanNavigationMenuItemsContainer = styled.div` + margin-bottom: ${themeCssVariables.betweenSiblingsGap}; +`; + +export const FavoritesOrphanItems = () => { + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); + const views = useAtomStateValue(viewsSelector); + const { navigationMenuItemsSorted } = useSortedNavigationMenuItems(); + const { deleteNavigationMenuItem } = useDeleteNavigationMenuItem(); + const currentPath = useLocation().pathname; + const currentViewPath = useLocation().pathname + useLocation().search; + const { isDragging } = useContext(NavigationMenuItemDragContext); + + const orphanNavigationMenuItems = navigationMenuItemsSorted.filter( + (item) => !item.folderId, + ); + + return orphanNavigationMenuItems.length > 0 ? ( + <> + {orphanNavigationMenuItems.map((navigationMenuItem, index) => { + const label = getNavigationMenuItemLabel( + navigationMenuItem, + objectMetadataItems, + views, + ); + const computedLink = getNavigationMenuItemComputedLink( + navigationMenuItem, + objectMetadataItems, + views, + ); + const objectNameSingular = getNavigationMenuItemObjectNameSingular( + navigationMenuItem, + objectMetadataItems, + views, + ); + + return ( + + + ( + + )} + iconColor={getEffectiveNavigationMenuItemColor( + navigationMenuItem, + )} + active={isLocationMatchingNavigationMenuItem( + currentPath, + currentViewPath, + navigationMenuItem.type, + computedLink, + )} + to={isDragging ? undefined : computedLink} + rightOptions={ + { + e.stopPropagation(); + deleteNavigationMenuItem(navigationMenuItem.id); + }} + accent="tertiary" + /> + } + isDragging={isDragging} + triggerEvent="CLICK" + /> + + + ); + })} + + ) : ( + + ); +}; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/favorites/components/FavoritesSection.tsx similarity index 86% rename from packages/twenty-front/src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/sections/favorites/components/FavoritesSection.tsx index 960378d9bb..976072c04c 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFolders.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/favorites/components/FavoritesSection.tsx @@ -2,11 +2,11 @@ import { useLingui } from '@lingui/react/macro'; import { IconFolderPlus } from 'twenty-ui/display'; import { LightIconButton } from 'twenty-ui/input'; import { AnimatedExpandableContainer } from 'twenty-ui/layout'; -import { CurrentWorkspaceMemberOrphanNavigationMenuItems } from '@/navigation-menu-item/components/CurrentWorkspaceMemberOrphanNavigationMenuItems'; -import { NavigationMenuItemFolders } from '@/navigation-menu-item/components/NavigationMenuItemFolders'; -import { useNavigationMenuItemsByFolder } from '@/navigation-menu-item/hooks/useNavigationMenuItemsByFolder'; -import { useSortedNavigationMenuItems } from '@/navigation-menu-item/hooks/useSortedNavigationMenuItems'; -import { isNavigationMenuItemFolderCreatingState } from '@/navigation-menu-item/states/isNavigationMenuItemFolderCreatingState'; +import { FavoritesOrphanItems } from '@/navigation-menu-item/display/sections/favorites/components/FavoritesOrphanItems'; +import { NavigationMenuItemFolders } from '@/navigation-menu-item/display/folder/components/NavigationMenuItemFolders'; +import { useNavigationMenuItemsByFolder } from '@/navigation-menu-item/display/folder/hooks/useNavigationMenuItemsByFolder'; +import { useSortedNavigationMenuItems } from '@/navigation-menu-item/display/hooks/useSortedNavigationMenuItems'; +import { isNavigationMenuItemFolderCreatingState } from '@/navigation-menu-item/common/states/isNavigationMenuItemFolderCreatingState'; import { useAtomState } from '@/ui/utilities/state/jotai/hooks/useAtomState'; import { NavigationDrawerAnimatedCollapseWrapper } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerAnimatedCollapseWrapper'; import { NavigationDrawerSection } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerSection'; @@ -15,7 +15,7 @@ import { useNavigationSection } from '@/ui/navigation/navigation-drawer/hooks/us import { isNavigationSectionOpenFamilyState } from '@/ui/navigation/navigation-drawer/states/isNavigationSectionOpenFamilyState'; import { useAtomFamilyStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomFamilyStateValue'; -export const CurrentWorkspaceMemberNavigationMenuItemFolders = () => { +export const FavoritesSection = () => { const { navigationMenuItemsSorted } = useSortedNavigationMenuItems(); const { userNavigationMenuItemsByFolder } = useNavigationMenuItemsByFolder(); @@ -70,7 +70,7 @@ export const CurrentWorkspaceMemberNavigationMenuItemFolders = () => { initial={false} > - + ); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/sections/favorites/components/FavoritesSectionDispatcher.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/favorites/components/FavoritesSectionDispatcher.tsx new file mode 100644 index 0000000000..e1e005b234 --- /dev/null +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/favorites/components/FavoritesSectionDispatcher.tsx @@ -0,0 +1,19 @@ +import { FavoritesSection } from '@/navigation-menu-item/display/sections/favorites/components/FavoritesSection'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; +import { FavoritesDndKitProvider } from '@/navigation/components/FavoritesDndKitProvider'; +import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; +import { AnimatedEaseInOut } from 'twenty-ui/utilities'; + +export const FavoritesSectionDispatcher = () => { + const isNavigationMenuInEditMode = useAtomStateValue( + isNavigationMenuInEditModeState, + ); + + return ( + + + + + + ); +}; diff --git a/packages/twenty-front/src/modules/object-metadata/components/WorkspaceSectionItemContentProps.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/types/WorkspaceSectionItemContentProps.ts similarity index 93% rename from packages/twenty-front/src/modules/object-metadata/components/WorkspaceSectionItemContentProps.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/sections/types/WorkspaceSectionItemContentProps.ts index ee6bcc6049..beb490461d 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/WorkspaceSectionItemContentProps.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/types/WorkspaceSectionItemContentProps.ts @@ -1,4 +1,4 @@ -import type { NavigationMenuItemClickParams } from '@/navigation-menu-item/hooks/useWorkspaceSectionItems'; +import type { NavigationMenuItemClickParams } from '@/navigation-menu-item/display/hooks/useWorkspaceSectionItems'; import type { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import type { NavigationMenuItem } from '~/generated-metadata/graphql'; diff --git a/packages/twenty-front/src/modules/object-metadata/components/WorkspaceSectionListDndKitProps.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/types/WorkspaceSectionListDndKitProps.ts similarity index 93% rename from packages/twenty-front/src/modules/object-metadata/components/WorkspaceSectionListDndKitProps.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/sections/types/WorkspaceSectionListDndKitProps.ts index c9bfe31474..673ab21149 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/WorkspaceSectionListDndKitProps.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/types/WorkspaceSectionListDndKitProps.ts @@ -1,4 +1,4 @@ -import type { NavigationMenuItemClickParams } from '@/navigation-menu-item/hooks/useWorkspaceSectionItems'; +import type { NavigationMenuItemClickParams } from '@/navigation-menu-item/display/hooks/useWorkspaceSectionItems'; import type { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import type { NavigationMenuItem } from '~/generated-metadata/graphql'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceNavigationMenuItems.tsx similarity index 89% rename from packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceNavigationMenuItems.tsx index 9a98ce8739..53845afcfd 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceNavigationMenuItems.tsx @@ -12,26 +12,26 @@ import { import { LightIconButton } from 'twenty-ui/input'; import { themeCssVariables } from 'twenty-ui/theme-constants'; -import { FOLDER_ICON_DEFAULT } from '@/navigation-menu-item/constants/FolderIconDefault'; +import { FOLDER_ICON_DEFAULT } from '@/navigation-menu-item/common/constants/FolderIconDefault'; import { NavigationMenuItemType, SidePanelPages } from 'twenty-shared/types'; -import { useOpenNavigationMenuItemInSidePanel } from '@/navigation-menu-item/hooks/useOpenNavigationMenuItemInSidePanel'; -import { useSortedNavigationMenuItems } from '@/navigation-menu-item/hooks/useSortedNavigationMenuItems'; +import { useOpenNavigationMenuItemInSidePanel } from '@/navigation-menu-item/edit/hooks/useOpenNavigationMenuItemInSidePanel'; +import { useSortedNavigationMenuItems } from '@/navigation-menu-item/display/hooks/useSortedNavigationMenuItems'; import { type NavigationMenuItemClickParams, useWorkspaceSectionItems, -} from '@/navigation-menu-item/hooks/useWorkspaceSectionItems'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; -import { openNavigationMenuItemFolderIdsState } from '@/navigation-menu-item/states/openNavigationMenuItemFolderIdsState'; -import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/states/selectedNavigationMenuItemInEditModeState'; -import { filterWorkspaceNavigationMenuItems } from '@/navigation-menu-item/utils/filterWorkspaceNavigationMenuItems'; -import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/utils/getNavigationMenuItemComputedLink'; -import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemLabel'; +} from '@/navigation-menu-item/display/hooks/useWorkspaceSectionItems'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; +import { openNavigationMenuItemFolderIdsState } from '@/navigation-menu-item/common/states/openNavigationMenuItemFolderIdsState'; +import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/common/states/selectedNavigationMenuItemInEditModeState'; +import { filterWorkspaceNavigationMenuItems } from '@/navigation-menu-item/common/utils/filterWorkspaceNavigationMenuItems'; +import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink'; +import { getNavigationMenuItemLabel } from '@/navigation-menu-item/display/utils/getNavigationMenuItemLabel'; import { preloadWorkspaceDndKit } from '@/navigation/preloadWorkspaceDndKit'; -import { NavigationDrawerSectionForWorkspaceItems } from '@/object-metadata/components/NavigationDrawerSectionForWorkspaceItems'; +import { NavigationDrawerSectionForWorkspaceItems } from '@/navigation-menu-item/display/sections/components/NavigationDrawerSectionForWorkspaceItems'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; -import { navigationMenuItemsSelector } from '@/navigation-menu-item/states/navigationMenuItemsSelector'; +import { navigationMenuItemsSelector } from '@/navigation-menu-item/common/states/navigationMenuItemsSelector'; import { useNavigateSidePanel } from '@/side-panel/hooks/useNavigateSidePanel'; import { useAtomState } from '@/ui/utilities/state/jotai/hooks/useAtomState'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemsDispatcher.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceNavigationMenuItemsDispatcher.tsx similarity index 70% rename from packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemsDispatcher.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceNavigationMenuItemsDispatcher.tsx index 937e69a9ed..f24e8c7fdf 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemsDispatcher.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/sections/workspace/components/WorkspaceNavigationMenuItemsDispatcher.tsx @@ -1,4 +1,4 @@ -import { WorkspaceNavigationMenuItems } from '@/navigation-menu-item/components/WorkspaceNavigationMenuItems'; +import { WorkspaceNavigationMenuItems } from '@/navigation-menu-item/display/sections/workspace/components/WorkspaceNavigationMenuItems'; export const WorkspaceNavigationMenuItemsDispatcher = () => { return ; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/getNavigationMenuItemComputedLink.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink.ts similarity index 97% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/getNavigationMenuItemComputedLink.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink.ts index 58823ab98b..f2906812a7 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/getNavigationMenuItemComputedLink.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/utils/getNavigationMenuItemComputedLink.ts @@ -1,5 +1,5 @@ import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; -import { recordIdentifierToObjectRecordIdentifier } from '@/navigation-menu-item/utils/recordIdentifierToObjectRecordIdentifier'; +import { recordIdentifierToObjectRecordIdentifier } from '@/navigation-menu-item/common/utils/recordIdentifierToObjectRecordIdentifier'; import { type View } from '@/views/types/View'; import { ViewKey } from '@/views/types/ViewKey'; import { AppPath, NavigationMenuItemType } from 'twenty-shared/types'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/getNavigationMenuItemLabel.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/utils/getNavigationMenuItemLabel.ts similarity index 100% rename from packages/twenty-front/src/modules/navigation-menu-item/utils/getNavigationMenuItemLabel.ts rename to packages/twenty-front/src/modules/navigation-menu-item/display/utils/getNavigationMenuItemLabel.ts diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/ObjectIconWithViewOverlay.tsx b/packages/twenty-front/src/modules/navigation-menu-item/display/view/components/ObjectIconWithViewOverlay.tsx similarity index 96% rename from packages/twenty-front/src/modules/navigation-menu-item/components/ObjectIconWithViewOverlay.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/display/view/components/ObjectIconWithViewOverlay.tsx index 131469f8c1..544862fc3e 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/ObjectIconWithViewOverlay.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/view/components/ObjectIconWithViewOverlay.tsx @@ -3,7 +3,7 @@ import { useContext } from 'react'; import type { IconComponent } from 'twenty-ui/display'; import { ThemeContext, themeCssVariables } from 'twenty-ui/theme-constants'; -import { getNavigationMenuItemIconStyleFromColor } from '@/navigation-menu-item/utils/getNavigationMenuItemIconStyleFromColor'; +import { getNavigationMenuItemIconStyleFromColor } from '@/navigation-menu-item/common/utils/getNavigationMenuItemIconStyleFromColor'; const StyledCompositeContainer = styled.div` align-items: center; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/view/utils/getViewNavigationMenuItemComputedLink.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/view/utils/getViewNavigationMenuItemComputedLink.ts new file mode 100644 index 0000000000..cf15ac5469 --- /dev/null +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/view/utils/getViewNavigationMenuItemComputedLink.ts @@ -0,0 +1,27 @@ +import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type View } from '@/views/types/View'; +import { AppPath } from 'twenty-shared/types'; +import { getAppPath, isDefined } from 'twenty-shared/utils'; +import { type NavigationMenuItem } from '~/generated-metadata/graphql'; + +export const getViewNavigationMenuItemComputedLink = ( + item: Pick, + objectMetadataItems: ObjectMetadataItem[], + views: Pick[], +): string => { + const view = views.find((view) => view.id === item.viewId); + if (!isDefined(view)) { + return ''; + } + const objectMetadataItem = objectMetadataItems.find( + (meta) => meta.id === view.objectMetadataId, + ); + if (!isDefined(objectMetadataItem)) { + return ''; + } + return getAppPath( + AppPath.RecordIndexPage, + { objectNamePlural: objectMetadataItem.namePlural }, + { viewId: item.viewId! }, + ); +}; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/display/view/utils/getViewNavigationMenuItemLabel.ts b/packages/twenty-front/src/modules/navigation-menu-item/display/view/utils/getViewNavigationMenuItemLabel.ts new file mode 100644 index 0000000000..dcf46139f9 --- /dev/null +++ b/packages/twenty-front/src/modules/navigation-menu-item/display/view/utils/getViewNavigationMenuItemLabel.ts @@ -0,0 +1,23 @@ +import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { type View } from '@/views/types/View'; +import { ViewKey } from '@/views/types/ViewKey'; +import { isDefined } from 'twenty-shared/utils'; +import { type NavigationMenuItem } from '~/generated-metadata/graphql'; + +export const getViewNavigationMenuItemLabel = ( + item: Pick, + views: Pick[], + objectMetadataItems: Pick[], +): string => { + const view = views.find((view) => view.id === item.viewId); + if (!isDefined(view)) { + return ''; + } + if (view.key === ViewKey.INDEX) { + const objectMetadataItem = objectMetadataItems.find( + (meta) => meta.id === view.objectMetadataId, + ); + return objectMetadataItem?.labelPlural ?? view.name; + } + return view.name; +}; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuEditModeBar.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/components/NavigationMenuEditModeBar.tsx similarity index 93% rename from packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuEditModeBar.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/components/NavigationMenuEditModeBar.tsx index 10aca8b366..98ca84ffc3 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuEditModeBar.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/components/NavigationMenuEditModeBar.tsx @@ -1,8 +1,8 @@ -import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/hooks/useNavigationMenuItemsDraftState'; -import { useSaveNavigationMenuItemsDraft } from '@/navigation-menu-item/hooks/useSaveNavigationMenuItemsDraft'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; -import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/states/selectedNavigationMenuItemInEditModeState'; +import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/edit/hooks/useNavigationMenuItemsDraftState'; +import { useSaveNavigationMenuItemsDraft } from '@/navigation-menu-item/edit/hooks/useSaveNavigationMenuItemsDraft'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; +import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/common/states/selectedNavigationMenuItemInEditModeState'; import { SaveAndCancelButtons } from '@/settings/components/SaveAndCancelButtons/SaveAndCancelButtons'; import { useSidePanelMenu } from '@/side-panel/hooks/useSidePanelMenu'; import { sidePanelPageState } from '@/side-panel/states/sidePanelPageState'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemBackButton.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/components/NavigationMenuItemBackButton.tsx similarity index 92% rename from packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemBackButton.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/components/NavigationMenuItemBackButton.tsx index a9c9946682..e6c6d40075 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemBackButton.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/components/NavigationMenuItemBackButton.tsx @@ -3,7 +3,7 @@ import { useContext } from 'react'; import { IconX } from 'twenty-ui/display'; import { ThemeContext, themeCssVariables } from 'twenty-ui/theme-constants'; -import { currentNavigationMenuItemFolderIdState } from '@/ui/navigation/navigation-drawer/states/currentNavigationMenuItemFolderIdState'; +import { currentNavigationMenuItemFolderIdState } from '@/navigation-menu-item/common/states/currentNavigationMenuItemFolderIdState'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; const StyledBackButton = styled.button` diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemFolderContentDispatcher.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/components/NavigationMenuItemFolderContentDispatcher.tsx similarity index 91% rename from packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemFolderContentDispatcher.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/components/NavigationMenuItemFolderContentDispatcher.tsx index ee2e30d3c1..3d02e9f444 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemFolderContentDispatcher.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/components/NavigationMenuItemFolderContentDispatcher.tsx @@ -1,7 +1,7 @@ import { isDefined } from 'twenty-shared/utils'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; -import { NavigationMenuItemFolderContent } from '@/navigation-menu-item/components/NavigationMenuItemFolderContent'; +import { NavigationMenuItemFolderContent } from '@/navigation-menu-item/display/folder/components/NavigationMenuItemFolderContent'; type NavigationMenuItemFolderContentDispatcherEffectProps = { folderName: string; diff --git a/packages/twenty-front/src/modules/object-metadata/components/WorkspaceSectionAddMenuItemButton.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/components/WorkspaceSectionAddMenuItemButton.tsx similarity index 93% rename from packages/twenty-front/src/modules/object-metadata/components/WorkspaceSectionAddMenuItemButton.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/components/WorkspaceSectionAddMenuItemButton.tsx index 0776e19885..6b3f47680a 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/WorkspaceSectionAddMenuItemButton.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/components/WorkspaceSectionAddMenuItemButton.tsx @@ -3,8 +3,8 @@ import React from 'react'; import { SidePanelPages } from 'twenty-shared/types'; import { IconColumnInsertRight, IconPlus } from 'twenty-ui/display'; -import { addMenuItemInsertionContextState } from '@/navigation-menu-item/states/addMenuItemInsertionContextState'; -import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/states/selectedNavigationMenuItemInEditModeState'; +import { addMenuItemInsertionContextState } from '@/navigation-menu-item/common/states/addMenuItemInsertionContextState'; +import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/common/states/selectedNavigationMenuItemInEditModeState'; import { useNavigateSidePanel } from '@/side-panel/hooks/useNavigateSidePanel'; import { sidePanelPageState } from '@/side-panel/states/sidePanelPageState'; import { NavigationDrawerItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerItem'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddFolderToNavigationMenuDraft.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/folder/hooks/useAddFolderToNavigationMenuDraft.ts similarity index 91% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddFolderToNavigationMenuDraft.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/folder/hooks/useAddFolderToNavigationMenuDraft.ts index 18b9288268..8ea389e9b6 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddFolderToNavigationMenuDraft.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/folder/hooks/useAddFolderToNavigationMenuDraft.ts @@ -3,9 +3,9 @@ import { isDefined } from 'twenty-shared/utils'; import { v4 } from 'uuid'; import type { NavigationMenuItem } from '~/generated-metadata/graphql'; -import { DEFAULT_NAVIGATION_MENU_ITEM_COLOR_FOLDER } from '@/navigation-menu-item/constants/NavigationMenuItemDefaultColorFolder'; -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; -import { computeInsertIndexAndPosition } from '@/navigation-menu-item/utils/computeInsertIndexAndPosition'; +import { DEFAULT_NAVIGATION_MENU_ITEM_COLOR_FOLDER } from '@/navigation-menu-item/common/constants/NavigationMenuItemDefaultColorFolder'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; +import { computeInsertIndexAndPosition } from '@/navigation-menu-item/common/utils/computeInsertIndexAndPosition'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; export const useAddFolderToNavigationMenuDraft = () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useDeleteNavigationMenuItemFolder.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/folder/hooks/useDeleteNavigationMenuItemFolder.ts similarity index 89% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useDeleteNavigationMenuItemFolder.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/folder/hooks/useDeleteNavigationMenuItemFolder.ts index 6246f80cfa..2620f1ba62 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useDeleteNavigationMenuItemFolder.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/folder/hooks/useDeleteNavigationMenuItemFolder.ts @@ -1,4 +1,4 @@ -import { useDeleteNavigationMenuItem } from '@/navigation-menu-item/hooks/useDeleteNavigationMenuItem'; +import { useDeleteNavigationMenuItem } from '@/navigation-menu-item/common/hooks/useDeleteNavigationMenuItem'; export const useDeleteNavigationMenuItemFolder = () => { const { deleteNavigationMenuItem } = useDeleteNavigationMenuItem(); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useRenameNavigationMenuItemFolder.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/folder/hooks/useRenameNavigationMenuItemFolder.ts similarity index 91% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useRenameNavigationMenuItemFolder.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/folder/hooks/useRenameNavigationMenuItemFolder.ts index a3f43f1c46..62133b2c7b 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useRenameNavigationMenuItemFolder.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/folder/hooks/useRenameNavigationMenuItemFolder.ts @@ -1,4 +1,4 @@ -import { useUpdateNavigationMenuItem } from '@/navigation-menu-item/hooks/useUpdateNavigationMenuItem'; +import { useUpdateNavigationMenuItem } from '@/navigation-menu-item/common/hooks/useUpdateNavigationMenuItem'; export const useRenameNavigationMenuItemFolder = () => { const { updateNavigationMenuItem } = useUpdateNavigationMenuItem(); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useUpdateFolderInDraft.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/folder/hooks/useUpdateFolderInDraft.ts similarity index 89% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useUpdateFolderInDraft.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/folder/hooks/useUpdateFolderInDraft.ts index 3bb5462835..9c9695c9bd 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useUpdateFolderInDraft.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/folder/hooks/useUpdateFolderInDraft.ts @@ -1,5 +1,5 @@ -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; -import { isNavigationMenuItemFolder } from '@/navigation-menu-item/utils/isNavigationMenuItemFolder'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; +import { isNavigationMenuItemFolder } from '@/navigation-menu-item/common/utils/isNavigationMenuItemFolder'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; export type UpdateFolderInDraftUpdates = { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useUpdateFolderNameInDraft.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/folder/hooks/useUpdateFolderNameInDraft.ts similarity index 88% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useUpdateFolderNameInDraft.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/folder/hooks/useUpdateFolderNameInDraft.ts index 5a7a1b9ffa..a968d3761b 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useUpdateFolderNameInDraft.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/folder/hooks/useUpdateFolderNameInDraft.ts @@ -1,6 +1,6 @@ -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; -import { isNavigationMenuItemFolder } from '@/navigation-menu-item/utils/isNavigationMenuItemFolder'; +import { isNavigationMenuItemFolder } from '@/navigation-menu-item/common/utils/isNavigationMenuItemFolder'; export const useUpdateFolderNameInDraft = () => { const setNavigationMenuItemsDraft = useSetAtomState( diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useDraftNavigationMenuItems.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useDraftNavigationMenuItems.ts similarity index 83% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useDraftNavigationMenuItems.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useDraftNavigationMenuItems.ts index fcfff31d19..d26bac6f01 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useDraftNavigationMenuItems.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useDraftNavigationMenuItems.ts @@ -1,5 +1,5 @@ -import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/hooks/useNavigationMenuItemsDraftState'; -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; +import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/edit/hooks/useNavigationMenuItemsDraftState'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; export const useDraftNavigationMenuItems = () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useDraftNavigationMenuItemsAllFolders.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useDraftNavigationMenuItemsAllFolders.ts similarity index 85% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useDraftNavigationMenuItemsAllFolders.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useDraftNavigationMenuItemsAllFolders.ts index f12389dd9d..09d69d3144 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useDraftNavigationMenuItemsAllFolders.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useDraftNavigationMenuItemsAllFolders.ts @@ -1,5 +1,5 @@ -import { useDraftNavigationMenuItems } from '@/navigation-menu-item/hooks/useDraftNavigationMenuItems'; -import { isNavigationMenuItemFolder } from '@/navigation-menu-item/utils/isNavigationMenuItemFolder'; +import { useDraftNavigationMenuItems } from '@/navigation-menu-item/edit/hooks/useDraftNavigationMenuItems'; +import { isNavigationMenuItemFolder } from '@/navigation-menu-item/common/utils/isNavigationMenuItemFolder'; export const useDraftNavigationMenuItemsAllFolders = () => { const { currentDraft } = useDraftNavigationMenuItems(); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useDraftNavigationMenuItemsWorkspaceFolders.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useDraftNavigationMenuItemsWorkspaceFolders.ts similarity index 88% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useDraftNavigationMenuItemsWorkspaceFolders.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useDraftNavigationMenuItemsWorkspaceFolders.ts index 33cbfe4c66..938cfe1128 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useDraftNavigationMenuItemsWorkspaceFolders.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useDraftNavigationMenuItemsWorkspaceFolders.ts @@ -1,4 +1,4 @@ -import { useNavigationMenuItemsByFolder } from '@/navigation-menu-item/hooks/useNavigationMenuItemsByFolder'; +import { useNavigationMenuItemsByFolder } from '@/navigation-menu-item/display/folder/hooks/useNavigationMenuItemsByFolder'; export const useDraftNavigationMenuItemsWorkspaceFolders = () => { const { workspaceNavigationMenuItemsByFolder } = diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuItemMoveRemove.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useNavigationMenuItemMoveRemove.ts similarity index 94% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuItemMoveRemove.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useNavigationMenuItemMoveRemove.ts index 4ea3d470ae..cc3deb3a33 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuItemMoveRemove.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useNavigationMenuItemMoveRemove.ts @@ -1,11 +1,11 @@ import { isDefined } from 'twenty-shared/utils'; -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; -import { getPositionBetween } from '@/navigation-menu-item/utils/getPositionBetween'; -import { isNavigationMenuItemFolder } from '@/navigation-menu-item/utils/isNavigationMenuItemFolder'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; +import { getPositionBetween } from '@/navigation-menu-item/common/utils/getPositionBetween'; +import { isNavigationMenuItemFolder } from '@/navigation-menu-item/common/utils/isNavigationMenuItemFolder'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; -import { useWorkspaceSectionItems } from './useWorkspaceSectionItems'; +import { useWorkspaceSectionItems } from '@/navigation-menu-item/display/hooks/useWorkspaceSectionItems'; export const useNavigationMenuItemMoveRemove = () => { const setNavigationMenuItemsDraft = useSetAtomState( diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuItemsDraftState.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useNavigationMenuItemsDraftState.ts similarity index 86% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuItemsDraftState.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useNavigationMenuItemsDraftState.ts index e7d5c4cc6a..cf5cbe7020 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuItemsDraftState.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useNavigationMenuItemsDraftState.ts @@ -1,10 +1,10 @@ import { isDefined } from 'twenty-shared/utils'; import { isDeeplyEqual } from '~/utils/isDeeplyEqual'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; -import { filterWorkspaceNavigationMenuItems } from '@/navigation-menu-item/utils/filterWorkspaceNavigationMenuItems'; -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; -import { navigationMenuItemsSelector } from '@/navigation-menu-item/states/navigationMenuItemsSelector'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; +import { filterWorkspaceNavigationMenuItems } from '@/navigation-menu-item/common/utils/filterWorkspaceNavigationMenuItems'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; +import { navigationMenuItemsSelector } from '@/navigation-menu-item/common/states/navigationMenuItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; export const useNavigationMenuItemsDraftState = () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuObjectMetadataFromDraft.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useNavigationMenuObjectMetadataFromDraft.ts similarity index 96% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuObjectMetadataFromDraft.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useNavigationMenuObjectMetadataFromDraft.ts index 943b422525..dd1147d50e 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuObjectMetadataFromDraft.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useNavigationMenuObjectMetadataFromDraft.ts @@ -1,6 +1,6 @@ import { isDefined } from 'twenty-shared/utils'; -import { getObjectMetadataIdsInDraft } from '@/navigation-menu-item/utils/getObjectMetadataIdsInDraft'; +import { getObjectMetadataIdsInDraft } from '@/navigation-menu-item/common/utils/getObjectMetadataIdsInDraft'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; import { ViewKey } from '@/views/types/ViewKey'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useOpenAddItemToFolderPage.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useOpenAddItemToFolderPage.ts similarity index 91% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useOpenAddItemToFolderPage.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useOpenAddItemToFolderPage.ts index 6e7aeec195..6c56f13cf4 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useOpenAddItemToFolderPage.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useOpenAddItemToFolderPage.ts @@ -1,5 +1,5 @@ -import { addMenuItemInsertionContextState } from '@/navigation-menu-item/states/addMenuItemInsertionContextState'; -import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/states/selectedNavigationMenuItemInEditModeState'; +import { addMenuItemInsertionContextState } from '@/navigation-menu-item/common/states/addMenuItemInsertionContextState'; +import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/common/states/selectedNavigationMenuItemInEditModeState'; import { useNavigateSidePanel } from '@/side-panel/hooks/useNavigateSidePanel'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; import { useLingui } from '@lingui/react/macro'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useOpenNavigationMenuItemInSidePanel.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useOpenNavigationMenuItemInSidePanel.ts similarity index 93% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useOpenNavigationMenuItemInSidePanel.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useOpenNavigationMenuItemInSidePanel.ts index 7c98eaea43..63fd6e0757 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useOpenNavigationMenuItemInSidePanel.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useOpenNavigationMenuItemInSidePanel.ts @@ -1,4 +1,4 @@ -import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/states/selectedNavigationMenuItemInEditModeState'; +import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/common/states/selectedNavigationMenuItemInEditModeState'; import { useNavigateSidePanel } from '@/side-panel/hooks/useNavigateSidePanel'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; import { SidePanelPages } from 'twenty-shared/types'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSaveNavigationMenuItemsDraft.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useSaveNavigationMenuItemsDraft.ts similarity index 94% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useSaveNavigationMenuItemsDraft.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useSaveNavigationMenuItemsDraft.ts index 8135a11552..d427e0d082 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSaveNavigationMenuItemsDraft.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useSaveNavigationMenuItemsDraft.ts @@ -5,15 +5,15 @@ import { isDefined } from 'twenty-shared/utils'; import { useMutation } from '@apollo/client/react'; import { CreateNavigationMenuItemDocument } from '~/generated-metadata/graphql'; -import { useDeleteNavigationMenuItem } from '@/navigation-menu-item/hooks/useDeleteNavigationMenuItem'; -import { useUpdateNavigationMenuItem } from '@/navigation-menu-item/hooks/useUpdateNavigationMenuItem'; -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; -import { buildCreateNavigationMenuItemInput } from '@/navigation-menu-item/utils/buildCreateNavigationMenuItemInput'; -import { filterWorkspaceNavigationMenuItems } from '@/navigation-menu-item/utils/filterWorkspaceNavigationMenuItems'; -import { isNavigationMenuItemFolder } from '@/navigation-menu-item/utils/isNavigationMenuItemFolder'; -import { isNavigationMenuItemLink } from '@/navigation-menu-item/utils/isNavigationMenuItemLink'; -import { orderFoldersForCreation } from '@/navigation-menu-item/utils/orderFoldersForCreation'; -import { navigationMenuItemsSelector } from '@/navigation-menu-item/states/navigationMenuItemsSelector'; +import { useDeleteNavigationMenuItem } from '@/navigation-menu-item/common/hooks/useDeleteNavigationMenuItem'; +import { useUpdateNavigationMenuItem } from '@/navigation-menu-item/common/hooks/useUpdateNavigationMenuItem'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; +import { buildCreateNavigationMenuItemInput } from '@/navigation-menu-item/common/utils/buildCreateNavigationMenuItemInput'; +import { filterWorkspaceNavigationMenuItems } from '@/navigation-menu-item/common/utils/filterWorkspaceNavigationMenuItems'; +import { isNavigationMenuItemFolder } from '@/navigation-menu-item/common/utils/isNavigationMenuItemFolder'; +import { isNavigationMenuItemLink } from '@/navigation-menu-item/common/utils/isNavigationMenuItemLink'; +import { orderFoldersForCreation } from '@/navigation-menu-item/common/utils/orderFoldersForCreation'; +import { navigationMenuItemsSelector } from '@/navigation-menu-item/common/states/navigationMenuItemsSelector'; import { useUpdateOneObjectMetadataItem } from '@/object-metadata/hooks/useUpdateOneObjectMetadataItem'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useStore } from 'jotai'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItem.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItem.ts similarity index 84% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItem.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItem.ts index ce5ad4a153..4b0e98c37f 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItem.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItem.ts @@ -1,5 +1,5 @@ -import { useWorkspaceSectionItems } from '@/navigation-menu-item/hooks/useWorkspaceSectionItems'; -import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/states/selectedNavigationMenuItemInEditModeState'; +import { useWorkspaceSectionItems } from '@/navigation-menu-item/display/hooks/useWorkspaceSectionItems'; +import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/common/states/selectedNavigationMenuItemInEditModeState'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; export const useSelectedNavigationMenuItemEditItem = () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItemLabel.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItemLabel.ts similarity index 90% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItemLabel.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItemLabel.ts index d70b3bbc9d..3b839ac611 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItemLabel.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItemLabel.ts @@ -1,9 +1,9 @@ import { NavigationMenuItemType } from 'twenty-shared/types'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; -import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemLabel'; -import { useSelectedNavigationMenuItemEditItem } from '@/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItem'; -import { useSelectedNavigationMenuItemEditItemObjectMetadata } from '@/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItemObjectMetadata'; +import { getNavigationMenuItemLabel } from '@/navigation-menu-item/display/utils/getNavigationMenuItemLabel'; +import { useSelectedNavigationMenuItemEditItem } from '@/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItem'; +import { useSelectedNavigationMenuItemEditItemObjectMetadata } from '@/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItemObjectMetadata'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItemObjectMetadata.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItemObjectMetadata.ts similarity index 85% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItemObjectMetadata.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItemObjectMetadata.ts index 77f6fdbb97..4652bdf3d5 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItemObjectMetadata.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItemObjectMetadata.ts @@ -1,5 +1,5 @@ -import { useSelectedNavigationMenuItemEditItem } from '@/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItem'; -import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/utils/getObjectMetadataForNavigationMenuItem'; +import { useSelectedNavigationMenuItemEditItem } from '@/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItem'; +import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/display/object/utils/getObjectMetadataForNavigationMenuItem'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useUpdateNavigationMenuItemInDraft.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useUpdateNavigationMenuItemInDraft.ts similarity index 94% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useUpdateNavigationMenuItemInDraft.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useUpdateNavigationMenuItemInDraft.ts index 993f339b49..4cd8f64ec0 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useUpdateNavigationMenuItemInDraft.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/hooks/useUpdateNavigationMenuItemInDraft.ts @@ -1,4 +1,4 @@ -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; export type UpdateNavigationMenuItemInDraftUpdates = { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddLinkToNavigationMenuDraft.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/link/hooks/useAddLinkToNavigationMenuDraft.ts similarity index 88% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddLinkToNavigationMenuDraft.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/link/hooks/useAddLinkToNavigationMenuDraft.ts index d9c34bcb34..e835fb9af1 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddLinkToNavigationMenuDraft.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/link/hooks/useAddLinkToNavigationMenuDraft.ts @@ -3,10 +3,10 @@ import { isDefined } from 'twenty-shared/utils'; import { v4 } from 'uuid'; import type { NavigationMenuItem } from '~/generated-metadata/graphql'; -import { DEFAULT_NAVIGATION_MENU_ITEM_COLOR_LINK } from '@/navigation-menu-item/constants/NavigationMenuItemDefaultColorLink'; -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; -import { computeInsertIndexAndPosition } from '@/navigation-menu-item/utils/computeInsertIndexAndPosition'; -import { normalizeUrl } from '@/navigation-menu-item/utils/normalizeUrl'; +import { DEFAULT_NAVIGATION_MENU_ITEM_COLOR_LINK } from '@/navigation-menu-item/common/constants/NavigationMenuItemDefaultColorLink'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; +import { computeInsertIndexAndPosition } from '@/navigation-menu-item/common/utils/computeInsertIndexAndPosition'; +import { normalizeUrl } from '@/navigation-menu-item/display/link/utils/normalizeUrl'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; export const useAddLinkToNavigationMenuDraft = () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useUpdateLinkInDraft.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/link/hooks/useUpdateLinkInDraft.ts similarity index 91% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useUpdateLinkInDraft.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/link/hooks/useUpdateLinkInDraft.ts index fe078780f5..ec74934c74 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useUpdateLinkInDraft.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/link/hooks/useUpdateLinkInDraft.ts @@ -1,6 +1,6 @@ -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; -import { isNavigationMenuItemLink } from '@/navigation-menu-item/utils/isNavigationMenuItemLink'; +import { isNavigationMenuItemLink } from '@/navigation-menu-item/common/utils/isNavigationMenuItemLink'; export const useUpdateLinkInDraft = () => { const setNavigationMenuItemsDraft = useSetAtomState( diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddObjectToNavigationMenuDraft.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/object/hooks/useAddObjectToNavigationMenuDraft.ts similarity index 94% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddObjectToNavigationMenuDraft.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/object/hooks/useAddObjectToNavigationMenuDraft.ts index 2cf3a9e7b5..cb58f2c665 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddObjectToNavigationMenuDraft.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/object/hooks/useAddObjectToNavigationMenuDraft.ts @@ -3,8 +3,8 @@ import { isDefined } from 'twenty-shared/utils'; import { v4 } from 'uuid'; import type { NavigationMenuItem } from '~/generated-metadata/graphql'; -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; -import { computeInsertIndexAndPosition } from '@/navigation-menu-item/utils/computeInsertIndexAndPosition'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; +import { computeInsertIndexAndPosition } from '@/navigation-menu-item/common/utils/computeInsertIndexAndPosition'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; export const useAddObjectToNavigationMenuDraft = () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddRecordToNavigationMenuDraft.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/record/hooks/useAddRecordToNavigationMenuDraft.ts similarity index 96% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddRecordToNavigationMenuDraft.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/record/hooks/useAddRecordToNavigationMenuDraft.ts index 2d8729fa23..b773acc435 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddRecordToNavigationMenuDraft.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/record/hooks/useAddRecordToNavigationMenuDraft.ts @@ -3,11 +3,11 @@ import { NavigationMenuItemType } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import type { NavigationMenuItem } from '~/generated-metadata/graphql'; -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; -import { computeInsertIndexAndPosition } from '@/navigation-menu-item/utils/computeInsertIndexAndPosition'; +import { computeInsertIndexAndPosition } from '@/navigation-menu-item/common/utils/computeInsertIndexAndPosition'; type SearchRecord = { recordId: string; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditColorOption.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditColorOption.tsx similarity index 98% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditColorOption.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditColorOption.tsx index 3d969e273a..f659af88b3 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditColorOption.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditColorOption.tsx @@ -1,5 +1,5 @@ import { CommandMenuItemDropdown } from '@/command-menu/components/CommandMenuItemDropdown'; -import { useUpdateNavigationMenuItemInDraft } from '@/navigation-menu-item/hooks/useUpdateNavigationMenuItemInDraft'; +import { useUpdateNavigationMenuItemInDraft } from '@/navigation-menu-item/edit/hooks/useUpdateNavigationMenuItemInDraft'; import { DropdownContent } from '@/ui/layout/dropdown/components/DropdownContent'; import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer'; import { DropdownMenuSearchInput } from '@/ui/layout/dropdown/components/DropdownMenuSearchInput'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditFolderPickerSubPage.tsx similarity index 90% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditFolderPickerSubPage.tsx index a07574d905..531d06e0c6 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditFolderPickerSubPage.tsx @@ -3,13 +3,13 @@ import { useState } from 'react'; import { useIcons } from 'twenty-ui/display'; import { CommandMenuItem } from '@/command-menu/components/CommandMenuItem'; -import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/components/NavigationMenuItemStyleIcon'; -import { FOLDER_ICON_DEFAULT } from '@/navigation-menu-item/constants/FolderIconDefault'; -import { DEFAULT_NAVIGATION_MENU_ITEM_COLOR_FOLDER } from '@/navigation-menu-item/constants/NavigationMenuItemDefaultColorFolder'; +import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemStyleIcon'; +import { FOLDER_ICON_DEFAULT } from '@/navigation-menu-item/common/constants/FolderIconDefault'; +import { DEFAULT_NAVIGATION_MENU_ITEM_COLOR_FOLDER } from '@/navigation-menu-item/common/constants/NavigationMenuItemDefaultColorFolder'; import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; import { SidePanelList } from '@/side-panel/components/SidePanelList'; import { SidePanelSubViewWithSearch } from '@/side-panel/components/SidePanelSubViewWithSearch'; -import { useFolderPickerSelectionData } from '@/side-panel/pages/navigation-menu-item/hooks/useFolderPickerSelectionData'; +import { useFolderPickerSelectionData } from '@/navigation-menu-item/edit/side-panel/hooks/useFolderPickerSelectionData'; import { SelectableListItem } from '@/ui/layout/selectable-list/components/SelectableListItem'; import { filterBySearchQuery } from '~/utils/filterBySearchQuery'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditFolderPickerSubView.tsx similarity index 100% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubView.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditFolderPickerSubView.tsx diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditLinkItemView.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditLinkItemView.tsx similarity index 87% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditLinkItemView.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditLinkItemView.tsx index 48eb88f343..99eb96c36b 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditLinkItemView.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditLinkItemView.tsx @@ -4,15 +4,15 @@ import { useState } from 'react'; import { getAbsoluteUrl } from 'twenty-shared/utils'; import { type NavigationMenuItem } from '~/generated-metadata/graphql'; -import { extractDomainFromUrl } from '@/navigation-menu-item/utils/extractDomainFromUrl'; +import { extractDomainFromUrl } from '@/navigation-menu-item/display/link/utils/extractDomainFromUrl'; import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; import { SidePanelList } from '@/side-panel/components/SidePanelList'; import { type OrganizeActionsProps, SidePanelEditOrganizeActions, -} from '@/side-panel/pages/navigation-menu-item/components/SidePanelEditOrganizeActions'; -import { SidePanelEditOwnerSection } from '@/side-panel/pages/navigation-menu-item/components/SidePanelEditOwnerSection'; -import { getOrganizeActionsSelectableItemIds } from '@/side-panel/pages/navigation-menu-item/utils/getOrganizeActionsSelectableItemIds'; +} from '@/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions'; +import { SidePanelEditOwnerSection } from '@/navigation-menu-item/edit/side-panel/components/SidePanelEditOwnerSection'; +import { getOrganizeActionsSelectableItemIds } from '@/navigation-menu-item/edit/side-panel/utils/getOrganizeActionsSelectableItemIds'; import { TextInput } from '@/ui/input/components/TextInput'; type SidePanelEditLinkItemViewProps = OrganizeActionsProps & { diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditObjectViewBase.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditObjectViewBase.tsx similarity index 81% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditObjectViewBase.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditObjectViewBase.tsx index c66180dd7c..5c5a43896f 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditObjectViewBase.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditObjectViewBase.tsx @@ -1,17 +1,17 @@ -import { useObjectNavItemColor } from '@/navigation-menu-item/hooks/useObjectNavItemColor'; -import { navigationMenuItemsSelector } from '@/navigation-menu-item/states/navigationMenuItemsSelector'; -import { getEffectiveNavigationMenuItemColor } from '@/navigation-menu-item/utils/getEffectiveNavigationMenuItemColor'; -import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/utils/getNavigationMenuItemObjectNameSingular'; -import { parseThemeColor } from '@/navigation-menu-item/utils/parseThemeColor'; +import { useObjectNavItemColor } from '@/navigation-menu-item/common/hooks/useObjectNavItemColor'; +import { navigationMenuItemsSelector } from '@/navigation-menu-item/common/states/navigationMenuItemsSelector'; +import { getEffectiveNavigationMenuItemColor } from '@/navigation-menu-item/common/utils/getEffectiveNavigationMenuItemColor'; +import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/display/object/utils/getNavigationMenuItemObjectNameSingular'; +import { parseThemeColor } from '@/navigation-menu-item/common/utils/parseThemeColor'; import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; import { SidePanelList } from '@/side-panel/components/SidePanelList'; -import { SidePanelEditColorOption } from '@/side-panel/pages/navigation-menu-item/components/SidePanelEditColorOption'; +import { SidePanelEditColorOption } from '@/navigation-menu-item/edit/side-panel/components/SidePanelEditColorOption'; import { type OrganizeActionsProps, SidePanelEditOrganizeActions, -} from '@/side-panel/pages/navigation-menu-item/components/SidePanelEditOrganizeActions'; -import { getOrganizeActionsSelectableItemIds } from '@/side-panel/pages/navigation-menu-item/utils/getOrganizeActionsSelectableItemIds'; +} from '@/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions'; +import { getOrganizeActionsSelectableItemIds } from '@/navigation-menu-item/edit/side-panel/utils/getOrganizeActionsSelectableItemIds'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; import { useLingui } from '@lingui/react/macro'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditOrganizeActions.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx similarity index 96% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditOrganizeActions.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx index c59a578ade..b2bc85f105 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditOrganizeActions.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx @@ -10,7 +10,7 @@ import { import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; import { CommandMenuItem } from '@/command-menu/components/CommandMenuItem'; -import { SidePanelNavigationItemActions } from '@/side-panel/pages/navigation-menu-item/side-panel-navigation-item-actions'; +import { SidePanelNavigationItemActions } from '@/navigation-menu-item/edit/side-panel/constants/side-panel-navigation-item-actions'; import { SelectableListItem } from '@/ui/layout/selectable-list/components/SelectableListItem'; export type OrganizeActionsProps = { diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditOwnerSection.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOwnerSection.tsx similarity index 94% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditOwnerSection.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOwnerSection.tsx index 15010de29d..cf13d9c124 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditOwnerSection.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOwnerSection.tsx @@ -4,8 +4,8 @@ import { IconApps } from 'twenty-ui/display'; import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; import { CommandMenuItem } from '@/command-menu/components/CommandMenuItem'; -import { useDraftNavigationMenuItems } from '@/navigation-menu-item/hooks/useDraftNavigationMenuItems'; -import { useSelectedNavigationMenuItemEditItem } from '@/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItem'; +import { useDraftNavigationMenuItems } from '@/navigation-menu-item/edit/hooks/useDraftNavigationMenuItems'; +import { useSelectedNavigationMenuItemEditItem } from '@/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItem'; import { SelectableListItem } from '@/ui/layout/selectable-list/components/SelectableListItem'; import { useQuery } from '@apollo/client/react'; import { FindOneApplicationDocument } from '~/generated-metadata/graphql'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNavigationMenuItemEditPage.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNavigationMenuItemEditPage.tsx similarity index 82% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNavigationMenuItemEditPage.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNavigationMenuItemEditPage.tsx index 3051fb26ff..e25130574f 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNavigationMenuItemEditPage.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNavigationMenuItemEditPage.tsx @@ -1,22 +1,22 @@ import { CommandMenuItem } from '@/command-menu/components/CommandMenuItem'; import { NavigationMenuItemType } from 'twenty-shared/types'; -import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/hooks/useNavigationMenuItemsDraftState'; -import { useOpenAddItemToFolderPage } from '@/navigation-menu-item/hooks/useOpenAddItemToFolderPage'; -import { useSelectedNavigationMenuItemEditItem } from '@/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItem'; -import { useSelectedNavigationMenuItemEditItemLabel } from '@/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItemLabel'; -import { useUpdateLinkInDraft } from '@/navigation-menu-item/hooks/useUpdateLinkInDraft'; -import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/states/selectedNavigationMenuItemInEditModeState'; -import { parseThemeColor } from '@/navigation-menu-item/utils/parseThemeColor'; +import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/edit/hooks/useNavigationMenuItemsDraftState'; +import { useOpenAddItemToFolderPage } from '@/navigation-menu-item/edit/hooks/useOpenAddItemToFolderPage'; +import { useSelectedNavigationMenuItemEditItem } from '@/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItem'; +import { useSelectedNavigationMenuItemEditItemLabel } from '@/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItemLabel'; +import { useUpdateLinkInDraft } from '@/navigation-menu-item/edit/link/hooks/useUpdateLinkInDraft'; +import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/common/states/selectedNavigationMenuItemInEditModeState'; +import { parseThemeColor } from '@/navigation-menu-item/common/utils/parseThemeColor'; import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; import { SidePanelList } from '@/side-panel/components/SidePanelList'; import { useSidePanelSubPageHistory } from '@/side-panel/hooks/useSidePanelSubPageHistory'; -import { SidePanelEditColorOption } from '@/side-panel/pages/navigation-menu-item/components/SidePanelEditColorOption'; -import { SidePanelEditLinkItemView } from '@/side-panel/pages/navigation-menu-item/components/SidePanelEditLinkItemView'; -import { SidePanelEditObjectViewBase } from '@/side-panel/pages/navigation-menu-item/components/SidePanelEditObjectViewBase'; -import { SidePanelEditOrganizeActions } from '@/side-panel/pages/navigation-menu-item/components/SidePanelEditOrganizeActions'; -import { SidePanelEditOwnerSection } from '@/side-panel/pages/navigation-menu-item/components/SidePanelEditOwnerSection'; -import { useNavigationMenuItemEditOrganizeActions } from '@/side-panel/pages/navigation-menu-item/hooks/useNavigationMenuItemEditOrganizeActions'; -import { getOrganizeActionsSelectableItemIds } from '@/side-panel/pages/navigation-menu-item/utils/getOrganizeActionsSelectableItemIds'; +import { SidePanelEditColorOption } from '@/navigation-menu-item/edit/side-panel/components/SidePanelEditColorOption'; +import { SidePanelEditLinkItemView } from '@/navigation-menu-item/edit/side-panel/components/SidePanelEditLinkItemView'; +import { SidePanelEditObjectViewBase } from '@/navigation-menu-item/edit/side-panel/components/SidePanelEditObjectViewBase'; +import { SidePanelEditOrganizeActions } from '@/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions'; +import { SidePanelEditOwnerSection } from '@/navigation-menu-item/edit/side-panel/components/SidePanelEditOwnerSection'; +import { useNavigationMenuItemEditOrganizeActions } from '@/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions'; +import { getOrganizeActionsSelectableItemIds } from '@/navigation-menu-item/edit/side-panel/utils/getOrganizeActionsSelectableItemIds'; import { SidePanelSubPages } from '@/side-panel/types/SidePanelSubPages'; import { SelectableListItem } from '@/ui/layout/selectable-list/components/SelectableListItem'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemMainMenu.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemMainMenu.tsx similarity index 94% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemMainMenu.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemMainMenu.tsx index 082881d77a..1526abb82d 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemMainMenu.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemMainMenu.tsx @@ -10,15 +10,15 @@ import { import { themeCssVariables } from 'twenty-ui/theme-constants'; import { CommandMenuItem } from '@/command-menu/components/CommandMenuItem'; -import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/components/NavigationMenuItemStyleIcon'; +import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemStyleIcon'; import { NavigationMenuItemType } from 'twenty-shared/types'; -import { addMenuItemInsertionContextState } from '@/navigation-menu-item/states/addMenuItemInsertionContextState'; +import { addMenuItemInsertionContextState } from '@/navigation-menu-item/common/states/addMenuItemInsertionContextState'; import { SidePanelAddToNavigationDroppable } from '@/side-panel/components/SidePanelAddToNavigationDroppable'; import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; import { SidePanelItemWithAddToNavigationDrag } from '@/side-panel/components/SidePanelItemWithAddToNavigationDrag'; import { SidePanelList } from '@/side-panel/components/SidePanelList'; -import { useAddFolderToNavigationMenu } from '@/side-panel/pages/navigation-menu-item/hooks/useAddFolderToNavigationMenu'; -import { useAddLinkToNavigationMenu } from '@/side-panel/pages/navigation-menu-item/hooks/useAddLinkToNavigationMenu'; +import { useAddFolderToNavigationMenu } from '@/navigation-menu-item/edit/side-panel/hooks/useAddFolderToNavigationMenu'; +import { useAddLinkToNavigationMenu } from '@/navigation-menu-item/edit/side-panel/hooks/useAddLinkToNavigationMenu'; import { SelectableListItem } from '@/ui/layout/selectable-list/components/SelectableListItem'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSubPage.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemObjectSubPage.tsx similarity index 85% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSubPage.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemObjectSubPage.tsx index e384308e84..e369147589 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSubPage.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemObjectSubPage.tsx @@ -1,17 +1,17 @@ import { useState } from 'react'; -import { useAddObjectToNavigationMenuDraft } from '@/navigation-menu-item/hooks/useAddObjectToNavigationMenuDraft'; -import { useDraftNavigationMenuItems } from '@/navigation-menu-item/hooks/useDraftNavigationMenuItems'; -import { useNavigationMenuObjectMetadataFromDraft } from '@/navigation-menu-item/hooks/useNavigationMenuObjectMetadataFromDraft'; -import { useOpenNavigationMenuItemInSidePanel } from '@/navigation-menu-item/hooks/useOpenNavigationMenuItemInSidePanel'; -import { addMenuItemInsertionContextState } from '@/navigation-menu-item/states/addMenuItemInsertionContextState'; -import { getStandardObjectIconColor } from '@/navigation-menu-item/utils/getStandardObjectIconColor'; +import { useAddObjectToNavigationMenuDraft } from '@/navigation-menu-item/edit/object/hooks/useAddObjectToNavigationMenuDraft'; +import { useDraftNavigationMenuItems } from '@/navigation-menu-item/edit/hooks/useDraftNavigationMenuItems'; +import { useNavigationMenuObjectMetadataFromDraft } from '@/navigation-menu-item/edit/hooks/useNavigationMenuObjectMetadataFromDraft'; +import { useOpenNavigationMenuItemInSidePanel } from '@/navigation-menu-item/edit/hooks/useOpenNavigationMenuItemInSidePanel'; +import { addMenuItemInsertionContextState } from '@/navigation-menu-item/common/states/addMenuItemInsertionContextState'; +import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { useSidePanelSubPageHistory } from '@/side-panel/hooks/useSidePanelSubPageHistory'; -import { SidePanelObjectPickerSubView } from '@/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView'; -import { getAvailableObjectMetadataForNewSidebarItem } from '@/side-panel/pages/navigation-menu-item/utils/getAvailableObjectMetadataForNewSidebarItem'; +import { SidePanelObjectPickerSubView } from '@/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView'; +import { getAvailableObjectMetadataForNewSidebarItem } from '@/navigation-menu-item/edit/side-panel/utils/getAvailableObjectMetadataForNewSidebarItem'; import { SidePanelSubPages } from '@/side-panel/types/SidePanelSubPages'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx similarity index 84% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx index 791d068f1e..bc78ed6cea 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemObjectSystemPickerSubPage.tsx @@ -1,16 +1,16 @@ import { useLingui } from '@lingui/react/macro'; -import { useAddObjectToNavigationMenuDraft } from '@/navigation-menu-item/hooks/useAddObjectToNavigationMenuDraft'; -import { useDraftNavigationMenuItems } from '@/navigation-menu-item/hooks/useDraftNavigationMenuItems'; -import { useNavigationMenuObjectMetadataFromDraft } from '@/navigation-menu-item/hooks/useNavigationMenuObjectMetadataFromDraft'; -import { useOpenNavigationMenuItemInSidePanel } from '@/navigation-menu-item/hooks/useOpenNavigationMenuItemInSidePanel'; -import { addMenuItemInsertionContextState } from '@/navigation-menu-item/states/addMenuItemInsertionContextState'; -import { getStandardObjectIconColor } from '@/navigation-menu-item/utils/getStandardObjectIconColor'; +import { useAddObjectToNavigationMenuDraft } from '@/navigation-menu-item/edit/object/hooks/useAddObjectToNavigationMenuDraft'; +import { useDraftNavigationMenuItems } from '@/navigation-menu-item/edit/hooks/useDraftNavigationMenuItems'; +import { useNavigationMenuObjectMetadataFromDraft } from '@/navigation-menu-item/edit/hooks/useNavigationMenuObjectMetadataFromDraft'; +import { useOpenNavigationMenuItemInSidePanel } from '@/navigation-menu-item/edit/hooks/useOpenNavigationMenuItemInSidePanel'; +import { addMenuItemInsertionContextState } from '@/navigation-menu-item/common/states/addMenuItemInsertionContextState'; +import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; -import { SidePanelSystemObjectPickerSubView } from '@/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView'; -import { getAvailableObjectMetadataForNewSidebarItem } from '@/side-panel/pages/navigation-menu-item/utils/getAvailableObjectMetadataForNewSidebarItem'; +import { SidePanelSystemObjectPickerSubView } from '@/navigation-menu-item/edit/side-panel/components/SidePanelSystemObjectPickerSubView'; +import { getAvailableObjectMetadataForNewSidebarItem } from '@/navigation-menu-item/edit/side-panel/utils/getAvailableObjectMetadataForNewSidebarItem'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; import { ViewKey } from '@/views/types/ViewKey'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemPage.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemPage.tsx similarity index 84% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemPage.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemPage.tsx index 3088c37424..affae8cfee 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemPage.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemPage.tsx @@ -1,5 +1,5 @@ import { useSidePanelSubPageHistory } from '@/side-panel/hooks/useSidePanelSubPageHistory'; -import { SidePanelNewSidebarItemMainMenu } from '@/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemMainMenu'; +import { SidePanelNewSidebarItemMainMenu } from '@/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemMainMenu'; import { SidePanelSubPages } from '@/side-panel/types/SidePanelSubPages'; export const SidePanelNewSidebarItemPage = () => { diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordItem.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemRecordItem.tsx similarity index 92% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordItem.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemRecordItem.tsx index 224d742a0e..04bb91bd7c 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordItem.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemRecordItem.tsx @@ -1,10 +1,10 @@ import { Avatar, IconFolder, useIcons } from 'twenty-ui/display'; -import { useAddRecordToNavigationMenuDraft } from '@/navigation-menu-item/hooks/useAddRecordToNavigationMenuDraft'; -import { useDraftNavigationMenuItems } from '@/navigation-menu-item/hooks/useDraftNavigationMenuItems'; -import { useOpenNavigationMenuItemInSidePanel } from '@/navigation-menu-item/hooks/useOpenNavigationMenuItemInSidePanel'; -import { addMenuItemInsertionContextState } from '@/navigation-menu-item/states/addMenuItemInsertionContextState'; -import type { AddToNavigationDragPayload } from '@/navigation-menu-item/types/add-to-navigation-drag-payload'; +import { useAddRecordToNavigationMenuDraft } from '@/navigation-menu-item/edit/record/hooks/useAddRecordToNavigationMenuDraft'; +import { useDraftNavigationMenuItems } from '@/navigation-menu-item/edit/hooks/useDraftNavigationMenuItems'; +import { useOpenNavigationMenuItemInSidePanel } from '@/navigation-menu-item/edit/hooks/useOpenNavigationMenuItemInSidePanel'; +import { addMenuItemInsertionContextState } from '@/navigation-menu-item/common/states/addMenuItemInsertionContextState'; +import type { AddToNavigationDragPayload } from '@/navigation-menu-item/common/types/add-to-navigation-drag-payload'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; import { SidePanelItemWithAddToNavigationDrag } from '@/side-panel/components/SidePanelItemWithAddToNavigationDrag'; import { SelectableListItem } from '@/ui/layout/selectable-list/components/SelectableListItem'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemRecordSubPage.tsx similarity index 95% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemRecordSubPage.tsx index dbf90e66e4..dafa740af8 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemRecordSubPage.tsx @@ -4,8 +4,8 @@ import { isDefined } from 'twenty-shared/utils'; import { useDebounce } from 'use-debounce'; import { MAX_SEARCH_RESULTS } from '@/command-menu/constants/MaxSearchResults'; -import { useDraftNavigationMenuItems } from '@/navigation-menu-item/hooks/useDraftNavigationMenuItems'; -import { addMenuItemInsertionContextState } from '@/navigation-menu-item/states/addMenuItemInsertionContextState'; +import { useDraftNavigationMenuItems } from '@/navigation-menu-item/edit/hooks/useDraftNavigationMenuItems'; +import { addMenuItemInsertionContextState } from '@/navigation-menu-item/common/states/addMenuItemInsertionContextState'; import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; @@ -14,7 +14,7 @@ import { SidePanelAddToNavigationDroppable } from '@/side-panel/components/SideP import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; import { SidePanelList } from '@/side-panel/components/SidePanelList'; import { SidePanelSubViewWithSearch } from '@/side-panel/components/SidePanelSubViewWithSearch'; -import { SidePanelNewSidebarItemRecordItem } from '@/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordItem'; +import { SidePanelNewSidebarItemRecordItem } from '@/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemRecordItem'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { useQuery } from '@apollo/client/react'; import { SearchDocument } from '~/generated/graphql'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubPage.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubPage.tsx similarity index 88% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubPage.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubPage.tsx index 1598b836a8..9925baa53e 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubPage.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubPage.tsx @@ -1,11 +1,11 @@ -import { useDraftNavigationMenuItems } from '@/navigation-menu-item/hooks/useDraftNavigationMenuItems'; -import { useNavigationMenuObjectMetadataFromDraft } from '@/navigation-menu-item/hooks/useNavigationMenuObjectMetadataFromDraft'; +import { useDraftNavigationMenuItems } from '@/navigation-menu-item/edit/hooks/useDraftNavigationMenuItems'; +import { useNavigationMenuObjectMetadataFromDraft } from '@/navigation-menu-item/edit/hooks/useNavigationMenuObjectMetadataFromDraft'; import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { useSidePanelSubPageHistory } from '@/side-panel/hooks/useSidePanelSubPageHistory'; -import { SidePanelNewSidebarItemViewObjectPickerSubView } from '@/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView'; -import { getAvailableObjectMetadataForNewSidebarItem } from '@/side-panel/pages/navigation-menu-item/utils/getAvailableObjectMetadataForNewSidebarItem'; +import { SidePanelNewSidebarItemViewObjectPickerSubView } from '@/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView'; +import { getAvailableObjectMetadataForNewSidebarItem } from '@/navigation-menu-item/edit/side-panel/utils/getAvailableObjectMetadataForNewSidebarItem'; import { selectedObjectMetadataIdForViewFlowState } from '@/side-panel/states/selectedObjectMetadataIdForViewFlowState'; import { SidePanelSubPages } from '@/side-panel/types/SidePanelSubPages'; import { useSetAtomComponentState } from '@/ui/utilities/state/jotai/hooks/useSetAtomComponentState'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx similarity index 97% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx index a336fd07bb..47d2730982 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubView.tsx @@ -2,8 +2,8 @@ import { useLingui } from '@lingui/react/macro'; import { IconSettings, useIcons } from 'twenty-ui/display'; import { CommandMenuItem } from '@/command-menu/components/CommandMenuItem'; -import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/components/NavigationMenuItemStyleIcon'; -import { getStandardObjectIconColor } from '@/navigation-menu-item/utils/getStandardObjectIconColor'; +import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemStyleIcon'; +import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; import { SidePanelList } from '@/side-panel/components/SidePanelList'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubPage.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewPickerSubPage.tsx similarity index 82% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubPage.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewPickerSubPage.tsx index 23506c43fc..186700b3d0 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubPage.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewPickerSubPage.tsx @@ -1,4 +1,4 @@ -import { SidePanelNewSidebarItemViewPickerSubView } from '@/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView'; +import { SidePanelNewSidebarItemViewPickerSubView } from '@/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewPickerSubView'; import { selectedObjectMetadataIdForViewFlowState } from '@/side-panel/states/selectedObjectMetadataIdForViewFlowState'; import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; import { isDefined } from 'twenty-shared/utils'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewPickerSubView.tsx similarity index 94% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewPickerSubView.tsx index a7f4b82158..10ba48bc4f 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubView.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewPickerSubView.tsx @@ -1,11 +1,11 @@ -import { ObjectIconWithViewOverlay } from '@/navigation-menu-item/components/ObjectIconWithViewOverlay'; +import { ObjectIconWithViewOverlay } from '@/navigation-menu-item/display/view/components/ObjectIconWithViewOverlay'; import { NavigationMenuItemType } from 'twenty-shared/types'; -import { useAddViewToNavigationMenuDraft } from '@/navigation-menu-item/hooks/useAddViewToNavigationMenuDraft'; -import { useDraftNavigationMenuItems } from '@/navigation-menu-item/hooks/useDraftNavigationMenuItems'; -import { useNavigationMenuObjectMetadataFromDraft } from '@/navigation-menu-item/hooks/useNavigationMenuObjectMetadataFromDraft'; -import { useOpenNavigationMenuItemInSidePanel } from '@/navigation-menu-item/hooks/useOpenNavigationMenuItemInSidePanel'; -import { addMenuItemInsertionContextState } from '@/navigation-menu-item/states/addMenuItemInsertionContextState'; -import { getStandardObjectIconColor } from '@/navigation-menu-item/utils/getStandardObjectIconColor'; +import { useAddViewToNavigationMenuDraft } from '@/navigation-menu-item/edit/view/hooks/useAddViewToNavigationMenuDraft'; +import { useDraftNavigationMenuItems } from '@/navigation-menu-item/edit/hooks/useDraftNavigationMenuItems'; +import { useNavigationMenuObjectMetadataFromDraft } from '@/navigation-menu-item/edit/hooks/useNavigationMenuObjectMetadataFromDraft'; +import { useOpenNavigationMenuItemInSidePanel } from '@/navigation-menu-item/edit/hooks/useOpenNavigationMenuItemInSidePanel'; +import { addMenuItemInsertionContextState } from '@/navigation-menu-item/common/states/addMenuItemInsertionContextState'; +import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; import { SidePanelAddToNavigationDroppable } from '@/side-panel/components/SidePanelAddToNavigationDroppable'; import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemPickerSubPage.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewSystemPickerSubPage.tsx similarity index 86% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemPickerSubPage.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewSystemPickerSubPage.tsx index 2037d0d921..ef2c9bdbdc 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemPickerSubPage.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewSystemPickerSubPage.tsx @@ -1,11 +1,11 @@ -import { useDraftNavigationMenuItems } from '@/navigation-menu-item/hooks/useDraftNavigationMenuItems'; -import { useNavigationMenuObjectMetadataFromDraft } from '@/navigation-menu-item/hooks/useNavigationMenuObjectMetadataFromDraft'; +import { useDraftNavigationMenuItems } from '@/navigation-menu-item/edit/hooks/useDraftNavigationMenuItems'; +import { useNavigationMenuObjectMetadataFromDraft } from '@/navigation-menu-item/edit/hooks/useNavigationMenuObjectMetadataFromDraft'; import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { useSidePanelSubPageHistory } from '@/side-panel/hooks/useSidePanelSubPageHistory'; -import { SidePanelNewSidebarItemViewSystemSubView } from '@/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView'; -import { getAvailableObjectMetadataForNewSidebarItem } from '@/side-panel/pages/navigation-menu-item/utils/getAvailableObjectMetadataForNewSidebarItem'; +import { SidePanelNewSidebarItemViewSystemSubView } from '@/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewSystemSubView'; +import { getAvailableObjectMetadataForNewSidebarItem } from '@/navigation-menu-item/edit/side-panel/utils/getAvailableObjectMetadataForNewSidebarItem'; import { selectedObjectMetadataIdForViewFlowState } from '@/side-panel/states/selectedObjectMetadataIdForViewFlowState'; import { SidePanelSubPages } from '@/side-panel/types/SidePanelSubPages'; import { useSetAtomComponentState } from '@/ui/utilities/state/jotai/hooks/useSetAtomComponentState'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewSystemSubView.tsx similarity index 96% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewSystemSubView.tsx index 3536a4c613..083858f065 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemSubView.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewSystemSubView.tsx @@ -2,8 +2,8 @@ import { useLingui } from '@lingui/react/macro'; import { useIcons } from 'twenty-ui/display'; import { CommandMenuItem } from '@/command-menu/components/CommandMenuItem'; -import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/components/NavigationMenuItemStyleIcon'; -import { getStandardObjectIconColor } from '@/navigation-menu-item/utils/getStandardObjectIconColor'; +import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemStyleIcon'; +import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; import { SidePanelList } from '@/side-panel/components/SidePanelList'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectMenuItem.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectMenuItem.tsx similarity index 93% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectMenuItem.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectMenuItem.tsx index 4ecc3b6f68..1a8b2d5cf1 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectMenuItem.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectMenuItem.tsx @@ -3,11 +3,11 @@ import { isDefined } from 'twenty-shared/utils'; import { useIcons } from 'twenty-ui/display'; import { CommandMenuItem } from '@/command-menu/components/CommandMenuItem'; -import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/components/NavigationMenuItemStyleIcon'; +import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemStyleIcon'; import { NavigationMenuItemType } from 'twenty-shared/types'; -import { useDraftNavigationMenuItems } from '@/navigation-menu-item/hooks/useDraftNavigationMenuItems'; -import { useNavigationMenuObjectMetadataFromDraft } from '@/navigation-menu-item/hooks/useNavigationMenuObjectMetadataFromDraft'; -import { getStandardObjectIconColor } from '@/navigation-menu-item/utils/getStandardObjectIconColor'; +import { useDraftNavigationMenuItems } from '@/navigation-menu-item/edit/hooks/useDraftNavigationMenuItems'; +import { useNavigationMenuObjectMetadataFromDraft } from '@/navigation-menu-item/edit/hooks/useNavigationMenuObjectMetadataFromDraft'; +import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { SidePanelItemWithAddToNavigationDrag } from '@/side-panel/components/SidePanelItemWithAddToNavigationDrag'; import { SelectableListItem } from '@/ui/layout/selectable-list/components/SelectableListItem'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerItem.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerItem.tsx similarity index 90% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerItem.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerItem.tsx index 70b42f88b5..36a33eea84 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerItem.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerItem.tsx @@ -2,10 +2,10 @@ import { isDefined } from 'twenty-shared/utils'; import { useIcons } from 'twenty-ui/display'; import { CommandMenuItem } from '@/command-menu/components/CommandMenuItem'; -import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/components/NavigationMenuItemStyleIcon'; -import { getStandardObjectIconColor } from '@/navigation-menu-item/utils/getStandardObjectIconColor'; +import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemStyleIcon'; +import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; -import { SidePanelObjectMenuItem } from '@/side-panel/pages/navigation-menu-item/components/SidePanelObjectMenuItem'; +import { SidePanelObjectMenuItem } from '@/navigation-menu-item/edit/side-panel/components/SidePanelObjectMenuItem'; import { SelectableListItem } from '@/ui/layout/selectable-list/components/SelectableListItem'; type SidePanelObjectPickerItemProps = { diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx similarity index 95% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx index 5fd8069fa8..4743c151bb 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerSubView.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerSubView.tsx @@ -2,14 +2,14 @@ import { useLingui } from '@lingui/react/macro'; import { IconSettings } from 'twenty-ui/display'; import { CommandMenuItem } from '@/command-menu/components/CommandMenuItem'; -import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/components/NavigationMenuItemStyleIcon'; +import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemStyleIcon'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { SidePanelAddToNavigationDroppable } from '@/side-panel/components/SidePanelAddToNavigationDroppable'; import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; import { SidePanelList } from '@/side-panel/components/SidePanelList'; import { SidePanelSubViewWithSearch } from '@/side-panel/components/SidePanelSubViewWithSearch'; import { useSidePanelFilteredPickerItems } from '@/side-panel/hooks/useSidePanelFilteredPickerItems'; -import { SidePanelObjectPickerItem } from '@/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerItem'; +import { SidePanelObjectPickerItem } from '@/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerItem'; import { SelectableListItem } from '@/ui/layout/selectable-list/components/SelectableListItem'; type SidePanelObjectPickerSubViewProps = { diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelSystemObjectPickerSubView.tsx similarity index 96% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelSystemObjectPickerSubView.tsx index f081b1c6da..35bac34893 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelSystemObjectPickerSubView.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelSystemObjectPickerSubView.tsx @@ -6,7 +6,7 @@ import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; import { SidePanelList } from '@/side-panel/components/SidePanelList'; import { SidePanelSubViewWithSearch } from '@/side-panel/components/SidePanelSubViewWithSearch'; import { useSidePanelFilteredPickerItems } from '@/side-panel/hooks/useSidePanelFilteredPickerItems'; -import { SidePanelObjectPickerItem } from '@/side-panel/pages/navigation-menu-item/components/SidePanelObjectPickerItem'; +import { SidePanelObjectPickerItem } from '@/navigation-menu-item/edit/side-panel/components/SidePanelObjectPickerItem'; type SidePanelSystemObjectPickerSubViewProps = { systemObjects: ObjectMetadataItem[]; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/side-panel-navigation-item-actions.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/constants/side-panel-navigation-item-actions.ts similarity index 100% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/side-panel-navigation-item-actions.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/constants/side-panel-navigation-item-actions.ts diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/hooks/useAddFolderToNavigationMenu.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/hooks/useAddFolderToNavigationMenu.ts similarity index 86% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/hooks/useAddFolderToNavigationMenu.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/hooks/useAddFolderToNavigationMenu.ts index 58f758615c..977f3c8c44 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/hooks/useAddFolderToNavigationMenu.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/hooks/useAddFolderToNavigationMenu.ts @@ -2,11 +2,11 @@ import { useLingui } from '@lingui/react/macro'; import { isDefined } from 'twenty-shared/utils'; import { IconFolder } from 'twenty-ui/display'; -import { useAddFolderToNavigationMenuDraft } from '@/navigation-menu-item/hooks/useAddFolderToNavigationMenuDraft'; -import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/hooks/useNavigationMenuItemsDraftState'; -import { useOpenNavigationMenuItemInSidePanel } from '@/navigation-menu-item/hooks/useOpenNavigationMenuItemInSidePanel'; -import { addMenuItemInsertionContextState } from '@/navigation-menu-item/states/addMenuItemInsertionContextState'; -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; +import { useAddFolderToNavigationMenuDraft } from '@/navigation-menu-item/edit/folder/hooks/useAddFolderToNavigationMenuDraft'; +import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/edit/hooks/useNavigationMenuItemsDraftState'; +import { useOpenNavigationMenuItemInSidePanel } from '@/navigation-menu-item/edit/hooks/useOpenNavigationMenuItemInSidePanel'; +import { addMenuItemInsertionContextState } from '@/navigation-menu-item/common/states/addMenuItemInsertionContextState'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/hooks/useAddLinkToNavigationMenu.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/hooks/useAddLinkToNavigationMenu.ts similarity index 87% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/hooks/useAddLinkToNavigationMenu.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/hooks/useAddLinkToNavigationMenu.ts index 48f0e51b40..e21615e176 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/hooks/useAddLinkToNavigationMenu.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/hooks/useAddLinkToNavigationMenu.ts @@ -2,11 +2,11 @@ import { useLingui } from '@lingui/react/macro'; import { isDefined } from 'twenty-shared/utils'; import { IconLink } from 'twenty-ui/display'; -import { useAddLinkToNavigationMenuDraft } from '@/navigation-menu-item/hooks/useAddLinkToNavigationMenuDraft'; -import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/hooks/useNavigationMenuItemsDraftState'; -import { useOpenNavigationMenuItemInSidePanel } from '@/navigation-menu-item/hooks/useOpenNavigationMenuItemInSidePanel'; -import { addMenuItemInsertionContextState } from '@/navigation-menu-item/states/addMenuItemInsertionContextState'; -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; +import { useAddLinkToNavigationMenuDraft } from '@/navigation-menu-item/edit/link/hooks/useAddLinkToNavigationMenuDraft'; +import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/edit/hooks/useNavigationMenuItemsDraftState'; +import { useOpenNavigationMenuItemInSidePanel } from '@/navigation-menu-item/edit/hooks/useOpenNavigationMenuItemInSidePanel'; +import { addMenuItemInsertionContextState } from '@/navigation-menu-item/common/states/addMenuItemInsertionContextState'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/hooks/useFolderPickerSelectionData.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/hooks/useFolderPickerSelectionData.ts similarity index 90% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/hooks/useFolderPickerSelectionData.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/hooks/useFolderPickerSelectionData.ts index 6a70b68232..bda847ed7d 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/hooks/useFolderPickerSelectionData.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/hooks/useFolderPickerSelectionData.ts @@ -1,11 +1,11 @@ import { isDefined } from 'twenty-shared/utils'; import { NavigationMenuItemType } from 'twenty-shared/types'; -import { useDraftNavigationMenuItemsAllFolders } from '@/navigation-menu-item/hooks/useDraftNavigationMenuItemsAllFolders'; -import { useDraftNavigationMenuItemsWorkspaceFolders } from '@/navigation-menu-item/hooks/useDraftNavigationMenuItemsWorkspaceFolders'; -import { useNavigationMenuItemMoveRemove } from '@/navigation-menu-item/hooks/useNavigationMenuItemMoveRemove'; -import { useSelectedNavigationMenuItemEditItem } from '@/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItem'; -import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/states/selectedNavigationMenuItemInEditModeState'; +import { useDraftNavigationMenuItemsAllFolders } from '@/navigation-menu-item/edit/hooks/useDraftNavigationMenuItemsAllFolders'; +import { useDraftNavigationMenuItemsWorkspaceFolders } from '@/navigation-menu-item/edit/hooks/useDraftNavigationMenuItemsWorkspaceFolders'; +import { useNavigationMenuItemMoveRemove } from '@/navigation-menu-item/edit/hooks/useNavigationMenuItemMoveRemove'; +import { useSelectedNavigationMenuItemEditItem } from '@/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItem'; +import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/common/states/selectedNavigationMenuItemInEditModeState'; import { useSidePanelMenu } from '@/side-panel/hooks/useSidePanelMenu'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/hooks/useNavigationMenuItemEditOrganizeActions.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts similarity index 91% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/hooks/useNavigationMenuItemEditOrganizeActions.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts index 31fb1dce9c..bdd02111e5 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/hooks/useNavigationMenuItemEditOrganizeActions.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts @@ -4,13 +4,13 @@ import { IconColumnInsertRight } from 'twenty-ui/display'; import { useSidePanelMenu } from '@/side-panel/hooks/useSidePanelMenu'; import { useNavigateSidePanel } from '@/side-panel/hooks/useNavigateSidePanel'; -import { type OrganizeActionsProps } from '@/side-panel/pages/navigation-menu-item/components/SidePanelEditOrganizeActions'; -import { useNavigationMenuItemMoveRemove } from '@/navigation-menu-item/hooks/useNavigationMenuItemMoveRemove'; -import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/hooks/useNavigationMenuItemsDraftState'; -import { useWorkspaceSectionItems } from '@/navigation-menu-item/hooks/useWorkspaceSectionItems'; -import { addMenuItemInsertionContextState } from '@/navigation-menu-item/states/addMenuItemInsertionContextState'; -import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/states/selectedNavigationMenuItemInEditModeState'; -import { type AddMenuItemInsertionContext } from '@/navigation-menu-item/types/AddMenuItemInsertionContext'; +import { type OrganizeActionsProps } from '@/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions'; +import { useNavigationMenuItemMoveRemove } from '@/navigation-menu-item/edit/hooks/useNavigationMenuItemMoveRemove'; +import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/edit/hooks/useNavigationMenuItemsDraftState'; +import { useWorkspaceSectionItems } from '@/navigation-menu-item/display/hooks/useWorkspaceSectionItems'; +import { addMenuItemInsertionContextState } from '@/navigation-menu-item/common/states/addMenuItemInsertionContextState'; +import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/common/states/selectedNavigationMenuItemInEditModeState'; +import { type AddMenuItemInsertionContext } from '@/navigation-menu-item/common/types/AddMenuItemInsertionContext'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; import { SidePanelPages } from 'twenty-shared/types'; diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/utils/getAvailableObjectMetadataForNewSidebarItem.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/utils/getAvailableObjectMetadataForNewSidebarItem.ts similarity index 100% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/utils/getAvailableObjectMetadataForNewSidebarItem.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/utils/getAvailableObjectMetadataForNewSidebarItem.ts diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/utils/getOrganizeActionsSelectableItemIds.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/utils/getOrganizeActionsSelectableItemIds.ts similarity index 87% rename from packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/utils/getOrganizeActionsSelectableItemIds.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/utils/getOrganizeActionsSelectableItemIds.ts index fa088f4f2a..073889d7ab 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/utils/getOrganizeActionsSelectableItemIds.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/utils/getOrganizeActionsSelectableItemIds.ts @@ -1,4 +1,4 @@ -import { SidePanelNavigationItemActions } from '@/side-panel/pages/navigation-menu-item/side-panel-navigation-item-actions'; +import { SidePanelNavigationItemActions } from '@/navigation-menu-item/edit/side-panel/constants/side-panel-navigation-item-actions'; const ORGANIZE_ACTIONS_WITHOUT_MOVE_TO_FOLDER: SidePanelNavigationItemActions[] = [ diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddViewToNavigationMenuDraft.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/view/hooks/useAddViewToNavigationMenuDraft.ts similarity index 94% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddViewToNavigationMenuDraft.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/view/hooks/useAddViewToNavigationMenuDraft.ts index 85d58ec7d4..bbd3fdfdcd 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddViewToNavigationMenuDraft.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/view/hooks/useAddViewToNavigationMenuDraft.ts @@ -3,8 +3,8 @@ import { isDefined } from 'twenty-shared/utils'; import { v4 } from 'uuid'; import type { NavigationMenuItem } from '~/generated-metadata/graphql'; -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; -import { computeInsertIndexAndPosition } from '@/navigation-menu-item/utils/computeInsertIndexAndPosition'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; +import { computeInsertIndexAndPosition } from '@/navigation-menu-item/common/utils/computeInsertIndexAndPosition'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; export const useAddViewToNavigationMenuDraft = () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useUpdateViewInDraft.ts b/packages/twenty-front/src/modules/navigation-menu-item/edit/view/hooks/useUpdateViewInDraft.ts similarity index 93% rename from packages/twenty-front/src/modules/navigation-menu-item/hooks/useUpdateViewInDraft.ts rename to packages/twenty-front/src/modules/navigation-menu-item/edit/view/hooks/useUpdateViewInDraft.ts index afd5f67652..18ca0ede8a 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useUpdateViewInDraft.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/view/hooks/useUpdateViewInDraft.ts @@ -1,4 +1,4 @@ -import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; +import { navigationMenuItemsDraftState } from '@/navigation-menu-item/common/states/navigationMenuItemsDraftState'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; import { type View } from '@/views/types/View'; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/getNavigationMenuItemIconBorderColor.ts b/packages/twenty-front/src/modules/navigation-menu-item/utils/getNavigationMenuItemIconBorderColor.ts deleted file mode 100644 index 4a982680c5..0000000000 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/getNavigationMenuItemIconBorderColor.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { ThemeColor } from 'twenty-ui/theme'; - -import { getColorFromTheme } from '@/navigation-menu-item/utils/getColorFromTheme'; -import { COLOR_SHADE_BORDER } from '@/navigation-menu-item/utils/navigationMenuItemIconColorShadeBorder'; - -export const getNavigationMenuItemIconBorderColor = ( - themeColor: ThemeColor, -): string => getColorFromTheme(themeColor, COLOR_SHADE_BORDER); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/utils/getNavigationMenuItemIconStyleFromColor.ts b/packages/twenty-front/src/modules/navigation-menu-item/utils/getNavigationMenuItemIconStyleFromColor.ts deleted file mode 100644 index 0ad0ea5624..0000000000 --- a/packages/twenty-front/src/modules/navigation-menu-item/utils/getNavigationMenuItemIconStyleFromColor.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { DEFAULT_NAV_ITEM_ICON_COLOR } from '@/navigation-menu-item/constants/NavigationMenuItemDefaultIconColor.constant'; -import { getColorFromTheme } from '@/navigation-menu-item/utils/getColorFromTheme'; -import { COLOR_SHADE_BACKGROUND } from '@/navigation-menu-item/utils/navigationMenuItemIconColorShadeBackground'; -import { COLOR_SHADE_BORDER } from '@/navigation-menu-item/utils/navigationMenuItemIconColorShadeBorder'; -import { COLOR_SHADE_ICON } from '@/navigation-menu-item/utils/navigationMenuItemIconColorShadeIcon'; -import { type NavigationMenuItemIconStyle } from '@/navigation-menu-item/utils/navigationMenuItemIconStyle'; -import { parseThemeColor } from '@/navigation-menu-item/utils/parseThemeColor'; - -export const getNavigationMenuItemIconStyleFromColor = ( - color: string | null | undefined, -): NavigationMenuItemIconStyle => { - const themeColor = parseThemeColor(color ?? DEFAULT_NAV_ITEM_ICON_COLOR); - return { - backgroundColor: getColorFromTheme(themeColor, COLOR_SHADE_BACKGROUND), - iconColor: getColorFromTheme(themeColor, COLOR_SHADE_ICON), - borderColor: getColorFromTheme(themeColor, COLOR_SHADE_BORDER), - }; -}; diff --git a/packages/twenty-front/src/modules/navigation/components/FavoritesDndKitProvider.tsx b/packages/twenty-front/src/modules/navigation/components/FavoritesDndKitProvider.tsx new file mode 100644 index 0000000000..86a1f6ceb0 --- /dev/null +++ b/packages/twenty-front/src/modules/navigation/components/FavoritesDndKitProvider.tsx @@ -0,0 +1,50 @@ +import { PointerActivationConstraints } from '@dnd-kit/dom'; +import { + DragDropProvider, + KeyboardSensor, + PointerSensor, +} from '@dnd-kit/react'; +import type { ReactNode } from 'react'; + +import { NavigationDragSourceContext } from '@/navigation-menu-item/common/contexts/NavigationDragSourceContext'; +import { NavigationDropTargetContext } from '@/navigation-menu-item/common/contexts/NavigationDropTargetContext'; +import { NavigationMenuItemDragContext } from '@/navigation-menu-item/common/contexts/NavigationMenuItemDragContext'; +import type { DraggableData } from '@/navigation/types/workspaceDndKitDraggableData'; + +import { useFavoritesDndKit } from '@/navigation/hooks/useFavoritesDndKit'; + +const FAVORITES_DND_SENSORS = [ + PointerSensor.configure({ + activationConstraints: [ + new PointerActivationConstraints.Distance({ value: 8 }), + ], + }), + KeyboardSensor, +]; + +type FavoritesDndKitProviderProps = { + children: ReactNode; +}; + +export const FavoritesDndKitProvider = ({ + children, +}: FavoritesDndKitProviderProps) => { + const { contextValues, handlers } = useFavoritesDndKit(); + + return ( + + + + + sensors={FAVORITES_DND_SENSORS} + onDragStart={handlers.onDragStart} + onDragOver={handlers.onDragOver} + onDragEnd={handlers.onDragEnd} + > + {children} + + + + + ); +}; diff --git a/packages/twenty-front/src/modules/navigation/components/FavoritesDragDropProviderContent.tsx b/packages/twenty-front/src/modules/navigation/components/FavoritesDragDropProviderContent.tsx deleted file mode 100644 index a1ccdc61ad..0000000000 --- a/packages/twenty-front/src/modules/navigation/components/FavoritesDragDropProviderContent.tsx +++ /dev/null @@ -1,167 +0,0 @@ -import { - DragDropContext, - type DragStart, - type DropResult, - type OnDragUpdateResponder, - type ResponderProvided, -} from '@hello-pangea/dnd'; -import { useState, type ReactNode } from 'react'; - -import { ADD_TO_NAV_SOURCE_DROPPABLE_ID } from '@/navigation-menu-item/constants/AddToNavSourceDroppableId'; -import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/constants/NavigationMenuItemDroppableIds'; -import { NavigationDragSourceContext } from '@/navigation-menu-item/contexts/NavigationDragSourceContext'; -import { NavigationDropTargetContext } from '@/navigation-menu-item/contexts/NavigationDropTargetContext'; -import { NavigationMenuItemDragContext } from '@/navigation-menu-item/contexts/NavigationMenuItemDragContext'; -import { useHandleAddToNavigationDrop } from '@/navigation-menu-item/hooks/useHandleAddToNavigationDrop'; -import { useHandleNavigationMenuItemDragAndDrop } from '@/navigation-menu-item/hooks/useHandleNavigationMenuItemDragAndDrop'; -import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/hooks/useNavigationMenuItemsDraftState'; -import { addToNavPayloadRegistryState } from '@/navigation-menu-item/states/addToNavPayloadRegistryState'; -import { getDropTargetIdFromDestination } from '@/navigation-menu-item/utils/getDropTargetIdFromDestination'; -import { getFavoritesDropTargetIdFromDestination } from '@/navigation-menu-item/utils/getFavoritesDropTargetIdFromDestination'; -import { isWorkspaceDroppableId } from '@/navigation-menu-item/utils/isWorkspaceDroppableId'; -import { validateAndExtractWorkspaceFolderId } from '@/navigation-menu-item/utils/validateAndExtractWorkspaceFolderId'; -import { useStore } from 'jotai'; -import { isDefined } from 'twenty-shared/utils'; - -type FavoritesDragDropProviderContentProps = { - children: ReactNode; -}; - -export const FavoritesDragDropProviderContent = ({ - children, -}: FavoritesDragDropProviderContentProps) => { - const [isDragging, setIsDragging] = useState(false); - const [sourceDroppableId, setSourceDroppableId] = useState( - null, - ); - const [activeDropTargetId, setActiveDropTargetId] = useState( - null, - ); - const [forbiddenDropTargetId, setForbiddenDropTargetId] = useState< - string | null - >(null); - const [ - addToNavigationFallbackDestination, - setAddToNavigationFallbackDestination, - ] = useState<{ droppableId: string; index: number } | null>(null); - - const store = useStore(); - const { workspaceNavigationMenuItems } = useNavigationMenuItemsDraftState(); - const { handleAddToNavigationDrop } = useHandleAddToNavigationDrop(); - const { handleNavigationMenuItemDragAndDrop } = - useHandleNavigationMenuItemDragAndDrop(); - - const isNavigationMenuItemDroppableId = (droppableId: string) => - droppableId === - NavigationMenuItemDroppableIds.ORPHAN_NAVIGATION_MENU_ITEMS || - droppableId.startsWith('folder-'); - - const orphanItemCount = workspaceNavigationMenuItems.filter( - (item: { folderId?: string | null }) => !isDefined(item.folderId), - ).length; - - const handleDragStart = (dragStart: DragStart) => { - setIsDragging(true); - setSourceDroppableId(dragStart.source.droppableId); - if (dragStart.source.droppableId === ADD_TO_NAV_SOURCE_DROPPABLE_ID) { - const defaultDestination = { - droppableId: - NavigationMenuItemDroppableIds.WORKSPACE_ORPHAN_NAVIGATION_MENU_ITEMS, - index: orphanItemCount, - }; - setAddToNavigationFallbackDestination(defaultDestination); - setActiveDropTargetId(getDropTargetIdFromDestination(defaultDestination)); - } - }; - - const handleDragUpdate = (update: Parameters[0]) => { - const { source, destination } = update; - - if (source.droppableId === ADD_TO_NAV_SOURCE_DROPPABLE_ID) { - if ( - destination !== null && - isWorkspaceDroppableId(destination.droppableId) - ) { - setAddToNavigationFallbackDestination(destination); - const dropTargetId = getDropTargetIdFromDestination(destination); - setActiveDropTargetId(dropTargetId); - - const payload = - store - .get(addToNavPayloadRegistryState.atom) - .get(update.draggableId) ?? null; - const folderId = validateAndExtractWorkspaceFolderId( - destination.droppableId, - ); - const isFolderOverFolder = - payload?.type === 'FOLDER' && folderId !== null; - setForbiddenDropTargetId(isFolderOverFolder ? dropTargetId : null); - } else { - setForbiddenDropTargetId(null); - const fallback = addToNavigationFallbackDestination; - setActiveDropTargetId( - fallback ? getDropTargetIdFromDestination(fallback) : null, - ); - } - return; - } - - if (isNavigationMenuItemDroppableId(source.droppableId)) { - if (isDefined(destination)) { - const dropTargetId = - getFavoritesDropTargetIdFromDestination(destination); - setActiveDropTargetId(dropTargetId); - } else { - setActiveDropTargetId(null); - } - } - }; - - const handleDragEnd = (result: DropResult, provided: ResponderProvided) => { - const isAddToNavigationSource = - result.source.droppableId === ADD_TO_NAV_SOURCE_DROPPABLE_ID; - const effectiveResult: DropResult = - isAddToNavigationSource && - !result.destination && - addToNavigationFallbackDestination - ? { ...result, destination: addToNavigationFallbackDestination } - : result; - - setIsDragging(false); - setSourceDroppableId(null); - setActiveDropTargetId(null); - setForbiddenDropTargetId(null); - setAddToNavigationFallbackDestination(null); - - if (isAddToNavigationSource) { - handleAddToNavigationDrop(effectiveResult, provided); - return; - } - - handleNavigationMenuItemDragAndDrop(result, provided); - }; - - return ( - - - - - {children} - - - - - ); -}; diff --git a/packages/twenty-front/src/modules/navigation/components/MainNavigationDrawerNavigationContent.tsx b/packages/twenty-front/src/modules/navigation/components/MainNavigationDrawerNavigationContent.tsx index 2721b25f73..f0dc689044 100644 --- a/packages/twenty-front/src/modules/navigation/components/MainNavigationDrawerNavigationContent.tsx +++ b/packages/twenty-front/src/modules/navigation/components/MainNavigationDrawerNavigationContent.tsx @@ -1,9 +1,9 @@ import { styled } from '@linaria/react'; -import { NavigationMenuItemFolderContentDispatcherEffect } from '@/navigation-menu-item/components/NavigationMenuItemFolderContentDispatcher'; -import { useNavigationMenuItemsByFolder } from '@/navigation-menu-item/hooks/useNavigationMenuItemsByFolder'; +import { NavigationMenuItemFolderContentDispatcherEffect } from '@/navigation-menu-item/edit/components/NavigationMenuItemFolderContentDispatcher'; +import { useNavigationMenuItemsByFolder } from '@/navigation-menu-item/display/folder/hooks/useNavigationMenuItemsByFolder'; import { MainNavigationDrawerScrollableItems } from '@/navigation/components/MainNavigationDrawerScrollableItems'; -import { currentNavigationMenuItemFolderIdState } from '@/ui/navigation/navigation-drawer/states/currentNavigationMenuItemFolderIdState'; +import { currentNavigationMenuItemFolderIdState } from '@/navigation-menu-item/common/states/currentNavigationMenuItemFolderIdState'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; const StyledScrollableContent = styled.div` diff --git a/packages/twenty-front/src/modules/navigation/components/MainNavigationDrawerScrollableItems.tsx b/packages/twenty-front/src/modules/navigation/components/MainNavigationDrawerScrollableItems.tsx index 2a67bc5097..411957be08 100644 --- a/packages/twenty-front/src/modules/navigation/components/MainNavigationDrawerScrollableItems.tsx +++ b/packages/twenty-front/src/modules/navigation/components/MainNavigationDrawerScrollableItems.tsx @@ -1,4 +1,4 @@ -import { NavigationDrawerOpenedSection } from '@/object-metadata/components/NavigationDrawerOpenedSection'; +import { NavigationDrawerOpenedSection } from '@/navigation-menu-item/display/sections/components/NavigationDrawerOpenedSection'; import { NavigationDrawerWorkspaceSectionSkeletonLoader } from '@/object-metadata/components/NavigationDrawerWorkspaceSectionSkeletonLoader'; import { RemoteNavigationDrawerSection } from '@/object-metadata/components/RemoteNavigationDrawerSection'; @@ -8,17 +8,17 @@ import { lazy, Suspense } from 'react'; import { themeCssVariables } from 'twenty-ui/theme-constants'; -const CurrentWorkspaceMemberNavigationMenuItemFoldersDispatcher = lazy(() => +const FavoritesSectionDispatcher = lazy(() => import( - '@/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItemFoldersDispatcher' + '@/navigation-menu-item/display/sections/favorites/components/FavoritesSectionDispatcher' ).then((module) => ({ - default: module.CurrentWorkspaceMemberNavigationMenuItemFoldersDispatcher, + default: module.FavoritesSectionDispatcher, })), ); const WorkspaceNavigationMenuItemsDispatcher = lazy(() => import( - '@/navigation-menu-item/components/WorkspaceNavigationMenuItemsDispatcher' + '@/navigation-menu-item/display/sections/workspace/components/WorkspaceNavigationMenuItemsDispatcher' ).then((module) => ({ default: module.WorkspaceNavigationMenuItemsDispatcher, })), @@ -35,7 +35,7 @@ export const MainNavigationDrawerScrollableItems = () => { }> - + diff --git a/packages/twenty-front/src/modules/navigation/components/NavbarDragProvider.tsx b/packages/twenty-front/src/modules/navigation/components/NavbarDragProvider.tsx deleted file mode 100644 index e3b00161ae..0000000000 --- a/packages/twenty-front/src/modules/navigation/components/NavbarDragProvider.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { - DragDropContext, - type DragStart, - type DropResult, - type ResponderProvided, -} from '@hello-pangea/dnd'; -import { type ReactNode, useState } from 'react'; - -import { NavigationDragSourceContext } from '@/navigation-menu-item/contexts/NavigationDragSourceContext'; -import { NavigationMenuItemDragContext } from '@/navigation-menu-item/contexts/NavigationMenuItemDragContext'; -import { useHandleNavigationMenuItemDragAndDrop } from '@/navigation-menu-item/hooks/useHandleNavigationMenuItemDragAndDrop'; -import { useHandleWorkspaceNavigationMenuItemDragAndDrop } from '@/navigation-menu-item/hooks/useHandleWorkspaceNavigationMenuItemDragAndDrop'; - -type NavbarDragProviderProps = { - children: ReactNode; -}; - -export const NavbarDragProvider = ({ children }: NavbarDragProviderProps) => { - const [isDragging, setIsDragging] = useState(false); - const [sourceDroppableId, setSourceDroppableId] = useState( - null, - ); - const { handleNavigationMenuItemDragAndDrop } = - useHandleNavigationMenuItemDragAndDrop(); - const { handleWorkspaceNavigationMenuItemDragAndDrop } = - useHandleWorkspaceNavigationMenuItemDragAndDrop(); - - const handleDragStart = (dragStart: DragStart) => { - setIsDragging(true); - setSourceDroppableId(dragStart.source.droppableId); - }; - - const handleDragEnd = (result: DropResult, provided: ResponderProvided) => { - setIsDragging(false); - setSourceDroppableId(null); - - const isWorkspaceDrop = - (result.source?.droppableId?.startsWith('workspace-') ?? false) && - (result.destination?.droppableId?.startsWith('workspace-') ?? false); - if (isWorkspaceDrop) { - handleWorkspaceNavigationMenuItemDragAndDrop(result, provided); - } else { - handleNavigationMenuItemDragAndDrop(result, provided); - } - }; - - return ( - - - - {children} - - - - ); -}; diff --git a/packages/twenty-front/src/modules/navigation/components/PageDragDropProviderMountEffect.tsx b/packages/twenty-front/src/modules/navigation/components/PageDragDropProviderMountEffect.tsx index 87a2aa9e71..329ef4d1a4 100644 --- a/packages/twenty-front/src/modules/navigation/components/PageDragDropProviderMountEffect.tsx +++ b/packages/twenty-front/src/modules/navigation/components/PageDragDropProviderMountEffect.tsx @@ -1,6 +1,6 @@ import { useEffect } from 'react'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; type PageDragDropProviderMountEffectProps = { diff --git a/packages/twenty-front/src/modules/navigation/components/WorkspaceDndKitProvider.tsx b/packages/twenty-front/src/modules/navigation/components/WorkspaceDndKitProvider.tsx index 434f29a87d..4268852e67 100644 --- a/packages/twenty-front/src/modules/navigation/components/WorkspaceDndKitProvider.tsx +++ b/packages/twenty-front/src/modules/navigation/components/WorkspaceDndKitProvider.tsx @@ -6,9 +6,9 @@ import { } from '@dnd-kit/react'; import type { ReactNode } from 'react'; -import { NavigationDragSourceContext } from '@/navigation-menu-item/contexts/NavigationDragSourceContext'; -import { NavigationDropTargetContext } from '@/navigation-menu-item/contexts/NavigationDropTargetContext'; -import { NavigationMenuItemDragContext } from '@/navigation-menu-item/contexts/NavigationMenuItemDragContext'; +import { NavigationDragSourceContext } from '@/navigation-menu-item/common/contexts/NavigationDragSourceContext'; +import { NavigationDropTargetContext } from '@/navigation-menu-item/common/contexts/NavigationDropTargetContext'; +import { NavigationMenuItemDragContext } from '@/navigation-menu-item/common/contexts/NavigationMenuItemDragContext'; import type { DraggableData } from '@/navigation/types/workspaceDndKitDraggableData'; import { useWorkspaceDndKit } from '@/navigation/hooks/useWorkspaceDndKit'; diff --git a/packages/twenty-front/src/modules/navigation/hooks/useFavoritesDndKit.ts b/packages/twenty-front/src/modules/navigation/hooks/useFavoritesDndKit.ts new file mode 100644 index 0000000000..7bc69094bb --- /dev/null +++ b/packages/twenty-front/src/modules/navigation/hooks/useFavoritesDndKit.ts @@ -0,0 +1,267 @@ +import { type DragDropProvider } from '@dnd-kit/react'; +import { isSortable } from '@dnd-kit/react/sortable'; +import type { ResponderProvided } from '@hello-pangea/dnd'; +import { type ComponentProps, useCallback, useState } from 'react'; +import { isDefined } from 'twenty-shared/utils'; +import { type NavigationMenuItem } from '~/generated-metadata/graphql'; + +import { ADD_TO_NAV_SOURCE_DROPPABLE_ID } from '@/navigation-menu-item/common/constants/AddToNavSourceDroppableId'; +import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/common/constants/NavigationMenuItemDroppableIds'; +import { useHandleAddToNavigationDrop } from '@/navigation-menu-item/display/dnd/hooks/useHandleAddToNavigationDrop'; +import { useHandleNavigationMenuItemDragAndDrop } from '@/navigation-menu-item/display/dnd/hooks/useHandleNavigationMenuItemDragAndDrop'; +import { getDndKitDropTargetId } from '@/navigation-menu-item/common/utils/getDndKitDropTargetId'; +import { isNavigationMenuItemFolder } from '@/navigation-menu-item/common/utils/isNavigationMenuItemFolder'; +import { useNavigationMenuItemsData } from '@/navigation-menu-item/display/hooks/useNavigationMenuItemsData'; +import { useSortedNavigationMenuItems } from '@/navigation-menu-item/display/hooks/useSortedNavigationMenuItems'; + +import { DROP_RESULT_OPTIONS } from '@/navigation/constants/workspaceDndKitDropResultOptions'; +import type { DraggableData } from '@/navigation/types/workspaceDndKitDraggableData'; +import type { DropDestination } from '@/navigation/types/workspaceDndKitDropDestination'; +import { toDropResult } from '@/navigation/utils/workspaceDndKitToDropResult'; + +type DragStartPayload = Parameters< + NonNullable< + ComponentProps>['onDragStart'] + > +>[0]; +type DragOverPayload = Parameters< + NonNullable< + ComponentProps>['onDragOver'] + > +>[0]; +type DragEndPayload = Parameters< + NonNullable< + ComponentProps>['onDragEnd'] + > +>[0]; + +export type FavoritesDndKitContextValues = { + dragSource: { sourceDroppableId: string | null }; + drag: { isDragging: boolean }; + dropTarget: { + activeDropTargetId: string | null; + setActiveDropTargetId: (id: string | null) => void; + forbiddenDropTargetId: string | null; + setForbiddenDropTargetId: (id: string | null) => void; + addToNavigationFallbackDestination: DropDestination | null; + }; +}; + +const resolveFavoritesDropTarget = ( + target: { + id?: unknown; + group?: unknown; + index?: unknown; + data?: unknown; + } | null, + getNavItemById: (id: string | undefined) => NavigationMenuItem | undefined, +): { + destination: DropDestination; + effectiveDropTargetId: string; + isTargetFolder: boolean; +} | null => { + if (target === null || target === undefined) { + return null; + } + + if (isDefined(target.group) && isDefined(target.index)) { + const group = String(target.group); + const index = Number(target.index); + if (!Number.isInteger(index) || index < 0) { + return null; + } + + const targetItem = getNavItemById( + target.id != null ? String(target.id) : undefined, + ); + const isTargetFolder = + isDefined(targetItem) && isNavigationMenuItemFolder(targetItem); + + const destination: DropDestination = isTargetFolder + ? { droppableId: `folder-header-${target.id}`, index: 0 } + : { droppableId: group, index }; + + const effectiveDropTargetId = isTargetFolder + ? getDndKitDropTargetId(`folder-header-${target.id}`, 0) + : getDndKitDropTargetId(group, index); + + return { destination, effectiveDropTargetId, isTargetFolder }; + } + + return null; +}; + +export const useFavoritesDndKit = (): { + contextValues: FavoritesDndKitContextValues; + handlers: { + onDragStart: (event: DragStartPayload) => void; + onDragOver: (event: DragOverPayload) => void; + onDragEnd: (event: DragEndPayload) => void; + }; +} => { + const [isDragging, setIsDragging] = useState(false); + const [sourceDroppableId, setSourceDroppableId] = useState( + null, + ); + const [activeDropTargetId, setActiveDropTargetId] = useState( + null, + ); + const [forbiddenDropTargetId, setForbiddenDropTargetId] = useState< + string | null + >(null); + const [ + addToNavigationFallbackDestination, + setAddToNavigationFallbackDestination, + ] = useState(null); + + const { navigationMenuItems } = useNavigationMenuItemsData(); + const { navigationMenuItemsSorted } = useSortedNavigationMenuItems(); + const { handleAddToNavigationDrop } = useHandleAddToNavigationDrop(); + const { handleNavigationMenuItemDragAndDrop } = + useHandleNavigationMenuItemDragAndDrop(); + + const orphanItemCount = navigationMenuItemsSorted.filter( + (item: { folderId?: string | null }) => !isDefined(item.folderId), + ).length; + + const getNavItemById = useCallback( + (id: string | undefined) => + id ? navigationMenuItems.find((item) => item.id === id) : undefined, + [navigationMenuItems], + ); + + const handleDragStart = (event: DragStartPayload) => { + const { operation } = event; + setIsDragging(true); + const source = operation.source; + const sourceId = source?.data?.sourceDroppableId ?? null; + setSourceDroppableId(sourceId); + + if (sourceId === ADD_TO_NAV_SOURCE_DROPPABLE_ID) { + const defaultDestination: DropDestination = { + droppableId: + NavigationMenuItemDroppableIds.ORPHAN_NAVIGATION_MENU_ITEMS, + index: orphanItemCount, + }; + setAddToNavigationFallbackDestination(defaultDestination); + setActiveDropTargetId( + getDndKitDropTargetId( + defaultDestination.droppableId, + defaultDestination.index, + ), + ); + } + }; + + const handleDragOver = useCallback( + (event: DragOverPayload) => { + const { operation } = event; + const source = operation.source; + const target = operation.target; + const isAddToNavDrag = + sourceDroppableId === ADD_TO_NAV_SOURCE_DROPPABLE_ID; + const resolved = resolveFavoritesDropTarget(target, getNavItemById); + + if ( + resolved !== null && + source !== null && + target !== null && + isSortable(source) && + isSortable(target) + ) { + setActiveDropTargetId(resolved.effectiveDropTargetId); + setForbiddenDropTargetId(null); + return; + } + + if (resolved !== null && source !== null && isSortable(source)) { + setActiveDropTargetId(resolved.effectiveDropTargetId); + setAddToNavigationFallbackDestination(resolved.destination); + setForbiddenDropTargetId(null); + return; + } + + if (!isAddToNavDrag) { + return; + } + + if (resolved !== null) { + setAddToNavigationFallbackDestination(resolved.destination); + setActiveDropTargetId(resolved.effectiveDropTargetId); + setForbiddenDropTargetId(null); + return; + } + + const fallback = addToNavigationFallbackDestination; + setActiveDropTargetId( + fallback + ? getDndKitDropTargetId(fallback.droppableId, fallback.index) + : null, + ); + setForbiddenDropTargetId(null); + }, + [ + sourceDroppableId, + addToNavigationFallbackDestination, + getNavItemById, + setActiveDropTargetId, + setForbiddenDropTargetId, + setAddToNavigationFallbackDestination, + ], + ); + + const handleDragEnd = (event: DragEndPayload) => { + const { operation } = event; + const source = operation.source; + const target = operation.target; + const draggableId = String(source?.id); + const data = source?.data; + const sourceId = data?.sourceDroppableId ?? null; + const fallback = addToNavigationFallbackDestination; + + setIsDragging(false); + setSourceDroppableId(null); + setActiveDropTargetId(null); + setForbiddenDropTargetId(null); + setAddToNavigationFallbackDestination(null); + + const resolved = resolveFavoritesDropTarget(target, getNavItemById); + let destination: DropDestination | null = resolved?.destination ?? null; + + if (destination == null && isDefined(fallback)) { + destination = fallback; + } + + const result = toDropResult(draggableId, data, destination); + const dropResult = { ...result, ...DROP_RESULT_OPTIONS }; + const provided: ResponderProvided = { announce: () => {} }; + + if (sourceId === ADD_TO_NAV_SOURCE_DROPPABLE_ID) { + handleAddToNavigationDrop(dropResult, provided); + return; + } + + handleNavigationMenuItemDragAndDrop(dropResult, provided); + }; + + const contextValues: FavoritesDndKitContextValues = { + dragSource: { sourceDroppableId }, + drag: { isDragging }, + dropTarget: { + activeDropTargetId, + setActiveDropTargetId, + forbiddenDropTargetId, + setForbiddenDropTargetId, + addToNavigationFallbackDestination, + }, + }; + + return { + contextValues, + handlers: { + onDragStart: handleDragStart, + onDragOver: handleDragOver, + onDragEnd: handleDragEnd, + }, + }; +}; diff --git a/packages/twenty-front/src/modules/navigation/hooks/useWorkspaceDndKit.ts b/packages/twenty-front/src/modules/navigation/hooks/useWorkspaceDndKit.ts index 3a21b0f0fa..0bf9a6c261 100644 --- a/packages/twenty-front/src/modules/navigation/hooks/useWorkspaceDndKit.ts +++ b/packages/twenty-front/src/modules/navigation/hooks/useWorkspaceDndKit.ts @@ -5,16 +5,16 @@ import { useStore } from 'jotai'; import { type ComponentProps, useCallback, useState } from 'react'; import { isDefined } from 'twenty-shared/utils'; -import { ADD_TO_NAV_SOURCE_DROPPABLE_ID } from '@/navigation-menu-item/constants/AddToNavSourceDroppableId'; -import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/constants/NavigationMenuItemDroppableIds'; -import { useHandleAddToNavigationDrop } from '@/navigation-menu-item/hooks/useHandleAddToNavigationDrop'; -import { useHandleWorkspaceNavigationMenuItemDragAndDrop } from '@/navigation-menu-item/hooks/useHandleWorkspaceNavigationMenuItemDragAndDrop'; -import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/hooks/useNavigationMenuItemsDraftState'; -import { addToNavPayloadRegistryState } from '@/navigation-menu-item/states/addToNavPayloadRegistryState'; -import { getDndKitDropTargetId } from '@/navigation-menu-item/utils/getDndKitDropTargetId'; -import { isNavigationMenuItemFolder } from '@/navigation-menu-item/utils/isNavigationMenuItemFolder'; -import { isWorkspaceDroppableId } from '@/navigation-menu-item/utils/isWorkspaceDroppableId'; -import { validateAndExtractWorkspaceFolderId } from '@/navigation-menu-item/utils/validateAndExtractWorkspaceFolderId'; +import { ADD_TO_NAV_SOURCE_DROPPABLE_ID } from '@/navigation-menu-item/common/constants/AddToNavSourceDroppableId'; +import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/common/constants/NavigationMenuItemDroppableIds'; +import { useHandleAddToNavigationDrop } from '@/navigation-menu-item/display/dnd/hooks/useHandleAddToNavigationDrop'; +import { useHandleWorkspaceNavigationMenuItemDragAndDrop } from '@/navigation-menu-item/display/dnd/hooks/useHandleWorkspaceNavigationMenuItemDragAndDrop'; +import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/edit/hooks/useNavigationMenuItemsDraftState'; +import { addToNavPayloadRegistryState } from '@/navigation-menu-item/common/states/addToNavPayloadRegistryState'; +import { getDndKitDropTargetId } from '@/navigation-menu-item/common/utils/getDndKitDropTargetId'; +import { isNavigationMenuItemFolder } from '@/navigation-menu-item/common/utils/isNavigationMenuItemFolder'; +import { isWorkspaceDroppableId } from '@/navigation-menu-item/common/utils/isWorkspaceDroppableId'; +import { validateAndExtractWorkspaceFolderId } from '@/navigation-menu-item/common/utils/validateAndExtractWorkspaceFolderId'; import { DROP_RESULT_OPTIONS } from '@/navigation/constants/workspaceDndKitDropResultOptions'; import type { DraggableData } from '@/navigation/types/workspaceDndKitDraggableData'; diff --git a/packages/twenty-front/src/modules/navigation/preloadWorkspaceDndKit.ts b/packages/twenty-front/src/modules/navigation/preloadWorkspaceDndKit.ts index c2b638941a..3e2e97654a 100644 --- a/packages/twenty-front/src/modules/navigation/preloadWorkspaceDndKit.ts +++ b/packages/twenty-front/src/modules/navigation/preloadWorkspaceDndKit.ts @@ -3,7 +3,7 @@ let preloadScheduled = false; const preload = () => { void import('@/navigation/components/WorkspaceDndKitProvider'); void import( - '@/object-metadata/components/NavigationDrawerSectionForWorkspaceItemsListDndKit' + '@/navigation-menu-item/display/sections/components/NavigationDrawerSectionForWorkspaceItemsListDndKit' ); }; diff --git a/packages/twenty-front/src/modules/navigation/utils/workspaceDndKitGetDestinationFromSortableTarget.ts b/packages/twenty-front/src/modules/navigation/utils/workspaceDndKitGetDestinationFromSortableTarget.ts index 2e1b9bf5ee..9719b8ac9b 100644 --- a/packages/twenty-front/src/modules/navigation/utils/workspaceDndKitGetDestinationFromSortableTarget.ts +++ b/packages/twenty-front/src/modules/navigation/utils/workspaceDndKitGetDestinationFromSortableTarget.ts @@ -1,9 +1,9 @@ import { isDefined } from 'twenty-shared/utils'; import type { NavigationMenuItem } from '~/generated-metadata/graphql'; -import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/constants/NavigationMenuItemDroppableIds'; -import { getDndKitDropTargetId } from '@/navigation-menu-item/utils/getDndKitDropTargetId'; -import { isNavigationMenuItemFolder } from '@/navigation-menu-item/utils/isNavigationMenuItemFolder'; +import { NavigationMenuItemDroppableIds } from '@/navigation-menu-item/common/constants/NavigationMenuItemDroppableIds'; +import { getDndKitDropTargetId } from '@/navigation-menu-item/common/utils/getDndKitDropTargetId'; +import { isNavigationMenuItemFolder } from '@/navigation-menu-item/common/utils/isNavigationMenuItemFolder'; import type { DropDestination } from '@/navigation/types/workspaceDndKitDropDestination'; import type { SortableTargetDestination } from '@/navigation/types/workspaceDndKitSortableTargetDestination'; diff --git a/packages/twenty-front/src/modules/navigation/utils/workspaceDndKitIsFolderDrag.ts b/packages/twenty-front/src/modules/navigation/utils/workspaceDndKitIsFolderDrag.ts index df64aa313b..ad1c318912 100644 --- a/packages/twenty-front/src/modules/navigation/utils/workspaceDndKitIsFolderDrag.ts +++ b/packages/twenty-front/src/modules/navigation/utils/workspaceDndKitIsFolderDrag.ts @@ -1,7 +1,7 @@ import type { NavigationMenuItem } from '~/generated-metadata/graphql'; import { isDefined } from 'twenty-shared/utils'; -import { isNavigationMenuItemFolder } from '@/navigation-menu-item/utils/isNavigationMenuItemFolder'; +import { isNavigationMenuItemFolder } from '@/navigation-menu-item/common/utils/isNavigationMenuItemFolder'; type AddToNavPayload = { type?: string } | null; diff --git a/packages/twenty-front/src/modules/navigation/utils/workspaceDndKitResolveDropTarget.ts b/packages/twenty-front/src/modules/navigation/utils/workspaceDndKitResolveDropTarget.ts index 0ffc6b6e16..04adcc7ae1 100644 --- a/packages/twenty-front/src/modules/navigation/utils/workspaceDndKitResolveDropTarget.ts +++ b/packages/twenty-front/src/modules/navigation/utils/workspaceDndKitResolveDropTarget.ts @@ -1,7 +1,7 @@ import { isDefined } from 'twenty-shared/utils'; import type { NavigationMenuItem } from '~/generated-metadata/graphql'; -import { isWorkspaceDroppableId } from '@/navigation-menu-item/utils/isWorkspaceDroppableId'; +import { isWorkspaceDroppableId } from '@/navigation-menu-item/common/utils/isWorkspaceDroppableId'; import type { DroppableData } from '@/navigation/types/workspaceDndKitDroppableData'; import type { SortableTargetDestination } from '@/navigation/types/workspaceDndKitSortableTargetDestination'; diff --git a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForObjectMetadataItems.tsx b/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForObjectMetadataItems.tsx index 55be4ac770..cea97ecbeb 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForObjectMetadataItems.tsx +++ b/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForObjectMetadataItems.tsx @@ -1,4 +1,4 @@ -import { NavigationDrawerItemForObjectMetadataItem } from '@/object-metadata/components/NavigationDrawerItemForObjectMetadataItem'; +import { NavigationDrawerItemForObjectMetadataItem } from '@/navigation-menu-item/display/object/components/NavigationDrawerItemForObjectMetadataItem'; import { CoreObjectNameSingular } from 'twenty-shared/types'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { getObjectPermissionsForObject } from '@/object-metadata/utils/getObjectPermissionsForObject'; diff --git a/packages/twenty-front/src/modules/object-metadata/components/WorkspaceSectionListEditModeFallback.tsx b/packages/twenty-front/src/modules/object-metadata/components/WorkspaceSectionListEditModeFallback.tsx index ac45104de9..455f9823f0 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/WorkspaceSectionListEditModeFallback.tsx +++ b/packages/twenty-front/src/modules/object-metadata/components/WorkspaceSectionListEditModeFallback.tsx @@ -1,8 +1,8 @@ import { styled } from '@linaria/react'; -import { NavigationDrawerSectionForWorkspaceItemsListReadOnly } from '@/object-metadata/components/NavigationDrawerSectionForWorkspaceItemsListReadOnly'; -import { WorkspaceSectionAddMenuItemButton } from '@/object-metadata/components/WorkspaceSectionAddMenuItemButton'; -import type { WorkspaceSectionListDndKitProps } from '@/object-metadata/components/WorkspaceSectionListDndKitProps'; +import { NavigationDrawerSectionForWorkspaceItemsListReadOnly } from '@/navigation-menu-item/display/sections/components/NavigationDrawerSectionForWorkspaceItemsListReadOnly'; +import { WorkspaceSectionAddMenuItemButton } from '@/navigation-menu-item/edit/components/WorkspaceSectionAddMenuItemButton'; +import type { WorkspaceSectionListDndKitProps } from '@/navigation-menu-item/display/sections/types/WorkspaceSectionListDndKitProps'; import { themeCssVariables } from 'twenty-ui/theme-constants'; const StyledFallback = styled.div` diff --git a/packages/twenty-front/src/modules/object-record/hooks/useDeleteManyRecords.ts b/packages/twenty-front/src/modules/object-record/hooks/useDeleteManyRecords.ts index 84fefc7a47..08e066f3c7 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useDeleteManyRecords.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useDeleteManyRecords.ts @@ -1,7 +1,7 @@ import { triggerUpdateRecordOptimisticEffectByBatch } from '@/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffectByBatch'; import { dispatchObjectRecordOperationBrowserEvent } from '@/browser-event/utils/dispatchObjectRecordOperationBrowserEvent'; import { apiConfigState } from '@/client-config/states/apiConfigState'; -import { useRemoveNavigationMenuItemByTargetRecordId } from '@/navigation-menu-item/hooks/useRemoveNavigationMenuItemByTargetRecordId'; +import { useRemoveNavigationMenuItemByTargetRecordId } from '@/navigation-menu-item/common/hooks/useRemoveNavigationMenuItemByTargetRecordId'; import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; diff --git a/packages/twenty-front/src/modules/object-record/hooks/useDestroyManyRecords.ts b/packages/twenty-front/src/modules/object-record/hooks/useDestroyManyRecords.ts index ac692c9077..759ab7f468 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useDestroyManyRecords.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useDestroyManyRecords.ts @@ -2,7 +2,7 @@ import { triggerCreateRecordsOptimisticEffect } from '@/apollo/optimistic-effect import { triggerDestroyRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerDestroyRecordsOptimisticEffect'; import { dispatchObjectRecordOperationBrowserEvent } from '@/browser-event/utils/dispatchObjectRecordOperationBrowserEvent'; import { apiConfigState } from '@/client-config/states/apiConfigState'; -import { useRemoveNavigationMenuItemByTargetRecordId } from '@/navigation-menu-item/hooks/useRemoveNavigationMenuItemByTargetRecordId'; +import { useRemoveNavigationMenuItemByTargetRecordId } from '@/navigation-menu-item/common/hooks/useRemoveNavigationMenuItemByTargetRecordId'; import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; diff --git a/packages/twenty-front/src/modules/object-record/hooks/useIncrementalDeleteManyRecords.ts b/packages/twenty-front/src/modules/object-record/hooks/useIncrementalDeleteManyRecords.ts index 607f0a99aa..417a919760 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useIncrementalDeleteManyRecords.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useIncrementalDeleteManyRecords.ts @@ -1,6 +1,6 @@ import { triggerUpdateRecordOptimisticEffectByBatch } from '@/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffectByBatch'; import { dispatchObjectRecordOperationBrowserEvent } from '@/browser-event/utils/dispatchObjectRecordOperationBrowserEvent'; -import { useRemoveNavigationMenuItemByTargetRecordId } from '@/navigation-menu-item/hooks/useRemoveNavigationMenuItemByTargetRecordId'; +import { useRemoveNavigationMenuItemByTargetRecordId } from '@/navigation-menu-item/common/hooks/useRemoveNavigationMenuItemByTargetRecordId'; import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; diff --git a/packages/twenty-front/src/modules/object-record/read-only/hooks/useIsRecordReadOnly.ts b/packages/twenty-front/src/modules/object-record/read-only/hooks/useIsRecordReadOnly.ts index 826d8dba77..59719080b1 100644 --- a/packages/twenty-front/src/modules/object-record/read-only/hooks/useIsRecordReadOnly.ts +++ b/packages/twenty-front/src/modules/object-record/read-only/hooks/useIsRecordReadOnly.ts @@ -1,6 +1,6 @@ import { useObjectMetadataItemById } from '@/object-metadata/hooks/useObjectMetadataItemById'; import { getObjectPermissionsForObject } from '@/object-metadata/utils/getObjectPermissionsForObject'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; import { isRecordReadOnly } from '@/object-record/read-only/utils/isRecordReadOnly'; import { useIsRecordDeleted } from '@/object-record/record-field/ui/hooks/useIsRecordDeleted'; diff --git a/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexPageHeaderIcon.tsx b/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexPageHeaderIcon.tsx index 80ef4208ea..12f89e4f9f 100644 --- a/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexPageHeaderIcon.tsx +++ b/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexPageHeaderIcon.tsx @@ -1,7 +1,7 @@ import { isNonEmptyString } from '@sniptt/guards'; -import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/components/NavigationMenuItemStyleIcon'; -import { getStandardObjectIconColor } from '@/navigation-menu-item/utils/getStandardObjectIconColor'; +import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemStyleIcon'; +import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { isDefined } from 'twenty-shared/utils'; import { useIcons } from 'twenty-ui/display'; diff --git a/packages/twenty-front/src/modules/object-record/record-show/components/ObjectRecordShowPageBreadcrumb.tsx b/packages/twenty-front/src/modules/object-record/record-show/components/ObjectRecordShowPageBreadcrumb.tsx index 33e6369ece..401edcb393 100644 --- a/packages/twenty-front/src/modules/object-record/record-show/components/ObjectRecordShowPageBreadcrumb.tsx +++ b/packages/twenty-front/src/modules/object-record/record-show/components/ObjectRecordShowPageBreadcrumb.tsx @@ -1,7 +1,7 @@ import { isNonEmptyString } from '@sniptt/guards'; -import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/components/NavigationMenuItemStyleIcon'; -import { getStandardObjectIconColor } from '@/navigation-menu-item/utils/getStandardObjectIconColor'; +import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemStyleIcon'; +import { getStandardObjectIconColor } from '@/navigation-menu-item/common/utils/getStandardObjectIconColor'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { useFindOneRecord } from '@/object-record/hooks/useFindOneRecord'; diff --git a/packages/twenty-front/src/modules/object-record/record-table/empty-state/components/RecordTableEmptyStateDisplay.tsx b/packages/twenty-front/src/modules/object-record/record-table/empty-state/components/RecordTableEmptyStateDisplay.tsx index ced91b4207..7f1afbca2b 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/empty-state/components/RecordTableEmptyStateDisplay.tsx +++ b/packages/twenty-front/src/modules/object-record/record-table/empty-state/components/RecordTableEmptyStateDisplay.tsx @@ -1,4 +1,4 @@ -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; import { useObjectPermissionsForObject } from '@/object-record/hooks/useObjectPermissionsForObject'; import { isObjectMetadataReadOnly } from '@/object-record/read-only/utils/isObjectMetadataReadOnly'; import { hasAnySoftDeleteFilterOnViewComponentSelector } from '@/object-record/record-filter/states/hasAnySoftDeleteFilterOnView'; diff --git a/packages/twenty-front/src/modules/object-record/record-table/record-table-header/components/RecordTableHeaderLabelIdentifierCellPlusButton.tsx b/packages/twenty-front/src/modules/object-record/record-table/record-table-header/components/RecordTableHeaderLabelIdentifierCellPlusButton.tsx index f99f81a174..32685a8866 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/record-table-header/components/RecordTableHeaderLabelIdentifierCellPlusButton.tsx +++ b/packages/twenty-front/src/modules/object-record/record-table/record-table-header/components/RecordTableHeaderLabelIdentifierCellPlusButton.tsx @@ -1,4 +1,4 @@ -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; import { isObjectMetadataReadOnly } from '@/object-record/read-only/utils/isObjectMetadataReadOnly'; import { hasAnySoftDeleteFilterOnViewComponentSelector } from '@/object-record/record-filter/states/hasAnySoftDeleteFilterOnView'; import { useRecordTableContextOrThrow } from '@/object-record/record-table/contexts/RecordTableContext'; diff --git a/packages/twenty-front/src/modules/side-panel/components/SidePanelAddToNavigationDroppable.tsx b/packages/twenty-front/src/modules/side-panel/components/SidePanelAddToNavigationDroppable.tsx index 720086f6a8..de7a2f0cb1 100644 --- a/packages/twenty-front/src/modules/side-panel/components/SidePanelAddToNavigationDroppable.tsx +++ b/packages/twenty-front/src/modules/side-panel/components/SidePanelAddToNavigationDroppable.tsx @@ -1,7 +1,7 @@ import { lazy, Suspense, useContext, type ReactNode } from 'react'; -import { ADD_TO_NAV_SOURCE_DROPPABLE_ID } from '@/navigation-menu-item/constants/AddToNavSourceDroppableId'; -import { NavigationDragSourceContext } from '@/navigation-menu-item/contexts/NavigationDragSourceContext'; +import { ADD_TO_NAV_SOURCE_DROPPABLE_ID } from '@/navigation-menu-item/common/constants/AddToNavSourceDroppableId'; +import { NavigationDragSourceContext } from '@/navigation-menu-item/common/contexts/NavigationDragSourceContext'; import type { AddToNavDroppableProvided } from '@/command-menu/components/CommandMenuAddToNavDroppableTypes'; diff --git a/packages/twenty-front/src/modules/side-panel/components/SidePanelFolderInfo.tsx b/packages/twenty-front/src/modules/side-panel/components/SidePanelFolderInfo.tsx index e54310d16f..370652ffe5 100644 --- a/packages/twenty-front/src/modules/side-panel/components/SidePanelFolderInfo.tsx +++ b/packages/twenty-front/src/modules/side-panel/components/SidePanelFolderInfo.tsx @@ -5,12 +5,12 @@ import { useIcons } from 'twenty-ui/display'; import { SidePanelPageInfoLayout } from '@/side-panel/components/SidePanelPageInfoLayout'; import { sidePanelPageInfoState } from '@/side-panel/states/sidePanelPageInfoState'; import { sidePanelShouldFocusTitleInputComponentState } from '@/side-panel/states/sidePanelShouldFocusTitleInputComponentState'; -import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/components/NavigationMenuItemStyleIcon'; -import { FOLDER_ICON_DEFAULT } from '@/navigation-menu-item/constants/FolderIconDefault'; +import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemStyleIcon'; +import { FOLDER_ICON_DEFAULT } from '@/navigation-menu-item/common/constants/FolderIconDefault'; import { NavigationMenuItemType } from 'twenty-shared/types'; -import { useUpdateFolderInDraft } from '@/navigation-menu-item/hooks/useUpdateFolderInDraft'; -import { useWorkspaceSectionItems } from '@/navigation-menu-item/hooks/useWorkspaceSectionItems'; -import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/states/selectedNavigationMenuItemInEditModeState'; +import { useUpdateFolderInDraft } from '@/navigation-menu-item/edit/folder/hooks/useUpdateFolderInDraft'; +import { useWorkspaceSectionItems } from '@/navigation-menu-item/display/hooks/useWorkspaceSectionItems'; +import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/common/states/selectedNavigationMenuItemInEditModeState'; import { IconPicker } from '@/ui/input/components/IconPicker'; import { TitleInput } from '@/ui/input/components/TitleInput'; import { useAtomComponentState } from '@/ui/utilities/state/jotai/hooks/useAtomComponentState'; diff --git a/packages/twenty-front/src/modules/side-panel/components/SidePanelItemWithAddToNavigationDrag.tsx b/packages/twenty-front/src/modules/side-panel/components/SidePanelItemWithAddToNavigationDrag.tsx index ebc9514376..d5240ac238 100644 --- a/packages/twenty-front/src/modules/side-panel/components/SidePanelItemWithAddToNavigationDrag.tsx +++ b/packages/twenty-front/src/modules/side-panel/components/SidePanelItemWithAddToNavigationDrag.tsx @@ -5,9 +5,9 @@ import { isDefined } from 'twenty-shared/utils'; import { type IconComponent } from 'twenty-ui/display'; import { CommandMenuItem } from '@/command-menu/components/CommandMenuItem'; -import { AddToNavigationDragHandle } from '@/navigation-menu-item/components/AddToNavigationDragHandle'; -import { addToNavPayloadRegistryState } from '@/navigation-menu-item/states/addToNavPayloadRegistryState'; -import type { AddToNavigationDragPayload } from '@/navigation-menu-item/types/add-to-navigation-drag-payload'; +import { AddToNavigationDragHandle } from '@/navigation-menu-item/display/dnd/components/AddToNavigationDragHandle'; +import { addToNavPayloadRegistryState } from '@/navigation-menu-item/common/states/addToNavPayloadRegistryState'; +import type { AddToNavigationDragPayload } from '@/navigation-menu-item/common/types/add-to-navigation-drag-payload'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; const CommandMenuItemWithAddToNavigationDragDndKit = lazy(() => diff --git a/packages/twenty-front/src/modules/side-panel/components/SidePanelLinkInfo.tsx b/packages/twenty-front/src/modules/side-panel/components/SidePanelLinkInfo.tsx index e2473bf052..e9f5ef9666 100644 --- a/packages/twenty-front/src/modules/side-panel/components/SidePanelLinkInfo.tsx +++ b/packages/twenty-front/src/modules/side-panel/components/SidePanelLinkInfo.tsx @@ -1,11 +1,11 @@ import { useLingui } from '@lingui/react/macro'; import { IconLink, IconWorld } from 'twenty-ui/display'; -import { LinkIconWithLinkOverlay } from '@/navigation-menu-item/components/LinkIconWithLinkOverlay'; +import { LinkIconWithLinkOverlay } from '@/navigation-menu-item/display/link/components/LinkIconWithLinkOverlay'; import { NavigationMenuItemType } from 'twenty-shared/types'; -import { useUpdateLinkInDraft } from '@/navigation-menu-item/hooks/useUpdateLinkInDraft'; -import { useWorkspaceSectionItems } from '@/navigation-menu-item/hooks/useWorkspaceSectionItems'; -import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/states/selectedNavigationMenuItemInEditModeState'; +import { useUpdateLinkInDraft } from '@/navigation-menu-item/edit/link/hooks/useUpdateLinkInDraft'; +import { useWorkspaceSectionItems } from '@/navigation-menu-item/display/hooks/useWorkspaceSectionItems'; +import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/common/states/selectedNavigationMenuItemInEditModeState'; import { SidePanelPageInfoLayout } from '@/side-panel/components/SidePanelPageInfoLayout'; import { sidePanelPageInfoState } from '@/side-panel/states/sidePanelPageInfoState'; import { sidePanelShouldFocusTitleInputComponentState } from '@/side-panel/states/sidePanelShouldFocusTitleInputComponentState'; diff --git a/packages/twenty-front/src/modules/side-panel/components/SidePanelObjectViewRecordInfo.tsx b/packages/twenty-front/src/modules/side-panel/components/SidePanelObjectViewRecordInfo.tsx index 2f7be5bfa5..0e96071cd7 100644 --- a/packages/twenty-front/src/modules/side-panel/components/SidePanelObjectViewRecordInfo.tsx +++ b/packages/twenty-front/src/modules/side-panel/components/SidePanelObjectViewRecordInfo.tsx @@ -2,11 +2,11 @@ import { useLingui } from '@lingui/react/macro'; import { OverflowingTextWithTooltip } from 'twenty-ui/display'; import { SidePanelPageInfoLayout } from '@/side-panel/components/SidePanelPageInfoLayout'; -import { NavigationMenuItemIcon } from '@/navigation-menu-item/components/NavigationMenuItemIcon'; +import { NavigationMenuItemIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemIcon'; import { NavigationMenuItemType } from 'twenty-shared/types'; -import { useSelectedNavigationMenuItemEditItem } from '@/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItem'; -import { useSelectedNavigationMenuItemEditItemLabel } from '@/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItemLabel'; -import { useSelectedNavigationMenuItemEditItemObjectMetadata } from '@/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItemObjectMetadata'; +import { useSelectedNavigationMenuItemEditItem } from '@/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItem'; +import { useSelectedNavigationMenuItemEditItemLabel } from '@/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItemLabel'; +import { useSelectedNavigationMenuItemEditItemObjectMetadata } from '@/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItemObjectMetadata'; export const SidePanelObjectViewRecordInfo = () => { const { t } = useLingui(); diff --git a/packages/twenty-front/src/modules/side-panel/components/SidePanelPageInfo.tsx b/packages/twenty-front/src/modules/side-panel/components/SidePanelPageInfo.tsx index a3d32140f4..58a2757c6a 100644 --- a/packages/twenty-front/src/modules/side-panel/components/SidePanelPageInfo.tsx +++ b/packages/twenty-front/src/modules/side-panel/components/SidePanelPageInfo.tsx @@ -6,8 +6,8 @@ import { } from 'twenty-ui/display'; import { NavigationMenuItemType, SidePanelPages } from 'twenty-shared/types'; -import { useWorkspaceSectionItems } from '@/navigation-menu-item/hooks/useWorkspaceSectionItems'; -import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/states/selectedNavigationMenuItemInEditModeState'; +import { useWorkspaceSectionItems } from '@/navigation-menu-item/display/hooks/useWorkspaceSectionItems'; +import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/common/states/selectedNavigationMenuItemInEditModeState'; import { SidePanelAskAIInfo } from '@/side-panel/components/SidePanelAskAIInfo'; import { SidePanelFolderInfo } from '@/side-panel/components/SidePanelFolderInfo'; import { SidePanelLinkInfo } from '@/side-panel/components/SidePanelLinkInfo'; diff --git a/packages/twenty-front/src/modules/side-panel/constants/SidePanelPagesConfig.tsx b/packages/twenty-front/src/modules/side-panel/constants/SidePanelPagesConfig.tsx index 2d242c7294..207305c890 100644 --- a/packages/twenty-front/src/modules/side-panel/constants/SidePanelPagesConfig.tsx +++ b/packages/twenty-front/src/modules/side-panel/constants/SidePanelPagesConfig.tsx @@ -3,8 +3,8 @@ import { SidePanelAskAIPage } from '@/side-panel/pages/ask-ai/components/SidePan import { SidePanelCalendarEventPage } from '@/side-panel/pages/calendar-event/components/SidePanelCalendarEventPage'; import { SidePanelFrontComponentPage } from '@/side-panel/pages/front-component/components/SidePanelFrontComponentPage'; import { SidePanelMessageThreadPage } from '@/side-panel/pages/message-thread/components/SidePanelMessageThreadPage'; -import { SidePanelNavigationMenuItemEditPage } from '@/side-panel/pages/navigation-menu-item/components/SidePanelNavigationMenuItemEditPage'; -import { SidePanelNewSidebarItemPage } from '@/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemPage'; +import { SidePanelNavigationMenuItemEditPage } from '@/navigation-menu-item/edit/side-panel/components/SidePanelNavigationMenuItemEditPage'; +import { SidePanelNewSidebarItemPage } from '@/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemPage'; import { SidePanelPageLayoutChartSettings } from '@/side-panel/pages/page-layout/components/SidePanelPageLayoutChartSettings'; import { SidePanelPageLayoutFieldsSettings } from '@/side-panel/pages/page-layout/components/SidePanelPageLayoutFieldsSettings'; import { SidePanelPageLayoutIframeSettings } from '@/side-panel/pages/page-layout/components/SidePanelPageLayoutIframeSettings'; diff --git a/packages/twenty-front/src/modules/side-panel/constants/SidePanelSubPagesConfig.tsx b/packages/twenty-front/src/modules/side-panel/constants/SidePanelSubPagesConfig.tsx index 54de9d008c..5e54f11810 100644 --- a/packages/twenty-front/src/modules/side-panel/constants/SidePanelSubPagesConfig.tsx +++ b/packages/twenty-front/src/modules/side-panel/constants/SidePanelSubPagesConfig.tsx @@ -1,10 +1,10 @@ -import { SidePanelEditFolderPickerSubPage } from '@/side-panel/pages/navigation-menu-item/components/SidePanelEditFolderPickerSubPage'; -import { SidePanelNewSidebarItemObjectSubPage } from '@/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSubPage'; -import { SidePanelNewSidebarItemObjectSystemPickerSubPage } from '@/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemObjectSystemPickerSubPage'; -import { SidePanelNewSidebarItemRecordSubPage } from '@/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemRecordSubPage'; -import { SidePanelNewSidebarItemViewObjectPickerSubPage } from '@/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewObjectPickerSubPage'; -import { SidePanelNewSidebarItemViewPickerSubPage } from '@/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewPickerSubPage'; -import { SidePanelNewSidebarItemViewSystemPickerSubPage } from '@/side-panel/pages/navigation-menu-item/components/SidePanelNewSidebarItemViewSystemPickerSubPage'; +import { SidePanelEditFolderPickerSubPage } from '@/navigation-menu-item/edit/side-panel/components/SidePanelEditFolderPickerSubPage'; +import { SidePanelNewSidebarItemObjectSubPage } from '@/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemObjectSubPage'; +import { SidePanelNewSidebarItemObjectSystemPickerSubPage } from '@/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemObjectSystemPickerSubPage'; +import { SidePanelNewSidebarItemRecordSubPage } from '@/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemRecordSubPage'; +import { SidePanelNewSidebarItemViewObjectPickerSubPage } from '@/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewObjectPickerSubPage'; +import { SidePanelNewSidebarItemViewPickerSubPage } from '@/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewPickerSubPage'; +import { SidePanelNewSidebarItemViewSystemPickerSubPage } from '@/navigation-menu-item/edit/side-panel/components/SidePanelNewSidebarItemViewSystemPickerSubPage'; import { SidePanelChartFilterSubPage } from '@/side-panel/pages/page-layout/components/SidePanelChartFilterSubPage'; import { SidePanelFieldsLayoutSubPage } from '@/side-panel/pages/page-layout/components/SidePanelFieldsLayoutSubPage'; import { SidePanelSubPages } from '@/side-panel/types/SidePanelSubPages'; diff --git a/packages/twenty-front/src/modules/side-panel/hooks/useSidePanelMenu.ts b/packages/twenty-front/src/modules/side-panel/hooks/useSidePanelMenu.ts index c22b5d21f9..3e245dd709 100644 --- a/packages/twenty-front/src/modules/side-panel/hooks/useSidePanelMenu.ts +++ b/packages/twenty-front/src/modules/side-panel/hooks/useSidePanelMenu.ts @@ -3,9 +3,9 @@ import { useNavigateSidePanel } from '@/side-panel/hooks/useNavigateSidePanel'; import { sidePanelSearchState } from '@/side-panel/states/sidePanelSearchState'; import { isSidePanelClosingState } from '@/side-panel/states/isSidePanelClosingState'; import { isSidePanelOpenedState } from '@/side-panel/states/isSidePanelOpenedState'; -import { addToNavPayloadRegistryState } from '@/navigation-menu-item/states/addToNavPayloadRegistryState'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; -import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/states/selectedNavigationMenuItemInEditModeState'; +import { addToNavPayloadRegistryState } from '@/navigation-menu-item/common/states/addToNavPayloadRegistryState'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; +import { selectedNavigationMenuItemInEditModeState } from '@/navigation-menu-item/common/states/selectedNavigationMenuItemInEditModeState'; import { useCloseAnyOpenDropdown } from '@/ui/layout/dropdown/hooks/useCloseAnyOpenDropdown'; import { emitSidePanelOpenEvent } from '@/ui/layout/side-panel/utils/emitSidePanelOpenEvent'; import { useRemoveFocusItemFromFocusStackById } from '@/ui/utilities/focus/hooks/useRemoveFocusItemFromFocusStackById'; diff --git a/packages/twenty-front/src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx b/packages/twenty-front/src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx index c8deedf482..3f320bf499 100644 --- a/packages/twenty-front/src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx +++ b/packages/twenty-front/src/modules/ui/layout/page-header/components/PageHeaderToggleSidePanelButton.tsx @@ -1,7 +1,7 @@ import { SIDE_PANEL_TOP_BAR_HEIGHT_MOBILE } from '@/side-panel/constants/SidePanelTopBarHeightMobile'; import { useSidePanelMenu } from '@/side-panel/hooks/useSidePanelMenu'; import { isSidePanelOpenedState } from '@/side-panel/states/isSidePanelOpenedState'; -import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; +import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/common/states/isNavigationMenuInEditModeState'; import { RootStackingContextZIndices } from '@/ui/layout/constants/RootStackingContextZIndices'; import { PAGE_HEADER_SIDE_PANEL_BUTTON_CLICK_OUTSIDE_ID } from '@/ui/layout/page-header/constants/PageHeaderSidePanelButtonClickOutsideId'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; diff --git a/packages/twenty-front/src/modules/ui/layout/page/components/DefaultLayout.tsx b/packages/twenty-front/src/modules/ui/layout/page/components/DefaultLayout.tsx index c61d890c79..8d86a775e2 100644 --- a/packages/twenty-front/src/modules/ui/layout/page/components/DefaultLayout.tsx +++ b/packages/twenty-front/src/modules/ui/layout/page/components/DefaultLayout.tsx @@ -5,7 +5,7 @@ import { AppPageErrorFallback } from '@/error-handler/components/AppPageErrorFal import { FileUploadProvider } from '@/file-upload/components/FileUploadProvider'; import { InformationBannerIsImpersonating } from '@/information-banner/components/impersonate/InformationBannerIsImpersonating'; import { KeyboardShortcutMenu } from '@/keyboard-shortcut-menu/components/KeyboardShortcutMenu'; -import { NavigationMenuEditModeBar } from '@/navigation-menu-item/components/NavigationMenuEditModeBar'; +import { NavigationMenuEditModeBar } from '@/navigation-menu-item/edit/components/NavigationMenuEditModeBar'; import { AppNavigationDrawer } from '@/navigation/components/AppNavigationDrawer'; import { MobileNavigationBar } from '@/navigation/components/MobileNavigationBar'; import { PageDragDropProvider } from '@/navigation/components/PageDragDropProvider'; diff --git a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx index ce7ab0438c..65719e118b 100644 --- a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx +++ b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx @@ -1,4 +1,4 @@ -import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/components/NavigationMenuItemStyleIcon'; +import { NavigationMenuItemStyleIcon } from '@/navigation-menu-item/display/components/NavigationMenuItemStyleIcon'; import { useIsSettingsPage } from '@/navigation/hooks/useIsSettingsPage'; import { NAVIGATION_DRAWER_COLLAPSED_WIDTH } from '@/ui/layout/resizable-panel/constants/NavigationDrawerCollapsedWidth'; import { NavigationDrawerAnimatedCollapseWrapper } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerAnimatedCollapseWrapper'; diff --git a/packages/twenty-front/src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx b/packages/twenty-front/src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx index ad8715fde6..961d12a4d6 100644 --- a/packages/twenty-front/src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx +++ b/packages/twenty-front/src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx @@ -1,5 +1,5 @@ -import { useCreateNavigationMenuItem } from '@/navigation-menu-item/hooks/useCreateNavigationMenuItem'; -import { useNavigationMenuItemsData } from '@/navigation-menu-item/hooks/useNavigationMenuItemsData'; +import { useCreateNavigationMenuItem } from '@/navigation-menu-item/common/hooks/useCreateNavigationMenuItem'; +import { useNavigationMenuItemsData } from '@/navigation-menu-item/display/hooks/useNavigationMenuItemsData'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; import { useHasPermissionFlag } from '@/settings/roles/hooks/useHasPermissionFlag'; import { DropdownContent } from '@/ui/layout/dropdown/components/DropdownContent';