Commit Graph
4292 Commits
Author SHA1 Message Date
Abdul Rahman 86a40c4034 refactor: reorganize imports and enhance component structure in NavigationDrawerSectionForWorkspaceItemsListDndKit
Updated the NavigationDrawerSectionForWorkspaceItemsListDndKit component by reorganizing imports and introducing a new styled component for list item rows. This refactor improves code clarity and maintainability while preserving existing functionality.
2026-03-04 01:51:59 +05:30
Abdul Rahman 6ef92eb86f refactor: streamline WorkspaceNavigationMenuItemsFolder component
Updated the WorkspaceNavigationMenuItemsFolder component by reorganizing imports and removing an unused variable. Enhanced the rendering logic for adding menu items in edit mode, improving code clarity and maintainability. This refactor aims to optimize the component's structure while maintaining existing functionality.
2026-03-04 01:44:40 +05:30
Abdul Rahman ca2986894a feat: enhance drag-and-drop logic in WorkspaceDndKitProvider and related components
Added new functions to improve drag-and-drop interactions, including validation for dropping items into folders and handling effective drop target IDs. Updated WorkspaceDndKitDroppableSlot to support customizable collision priorities, enhancing the drag-and-drop experience. This update aims to streamline user interactions and prevent invalid drop actions within the navigation menu.
2026-03-04 01:38:33 +05:30
Abdul Rahman e09cc62a6b feat: improve drag-and-drop validation in WorkspaceDndKitProvider and related components
Enhanced the drag-and-drop functionality by adding checks to prevent dropping items into folders when the source item is also a folder. Updated the WorkspaceDndKitProvider to utilize the new validation logic and refined the NavigationItemDropTarget and WorkspaceNavigationMenuItemsFolder components to reflect forbidden drop states. This update aims to improve user experience and prevent invalid drop actions within the navigation menu.
2026-03-04 01:18:11 +05:30
Abdul Rahman f6ae0fbfbc feat: enhance drag-and-drop functionality in WorkspaceNavigationMenuItemsFolder
Refactored the WorkspaceNavigationMenuItemsFolder component to improve the rendering of sortable items and integrate NavigationItemDropTarget for better drag-and-drop interactions. This update includes the addition of drop target IDs and enhances user feedback during item manipulation within the workspace navigation menu.
2026-03-04 01:05:32 +05:30
Abdul Rahman b092d118e5 feat: add feedback for drag-and-drop interactions in CommandMenuItem and WorkspaceDndKitSortableItem
Enhanced the drag-and-drop functionality by introducing a 'clone' feedback message in both CommandMenuItemWithAddToNavigationDragDndKit and WorkspaceDndKitSortableItem components. This improvement aims to provide clearer user feedback during drag-and-drop operations.
2026-03-04 01:02:42 +05:30
Abdul Rahman 4bc85e1423 feat: enhance drag-and-drop behavior in WorkspaceDndKitProvider
Introduced a new state for tracking the last drop index and improved the handleDragOver function to calculate drop positions more accurately. Updated the WorkspaceDndKitSortableItem to utilize the SortableKeyboardPlugin, enhancing keyboard accessibility during drag-and-drop operations. Additionally, refactored the WorkspaceNavigationMenuItemsFolder to streamline the rendering of sortable items.
2026-03-04 00:56:11 +05:30
Abdul Rahman 785c987e19 feat: enhance drag-and-drop functionality in FavoritesDragDropProviderContent
Added support for favorites drag-and-drop interactions by introducing the `getFavoritesDropTargetIdFromDestination` utility and integrating it into the `handleDragUpdate` and `handleDragEnd` methods. This enhancement improves user experience when managing favorite items within the navigation menu.
2026-03-03 17:40:31 +05:30
Abdul Rahman 379cbaaef8 refactor: update styled component for NavigationMenuItemDroppable
Refactored the `StyledDroppableWrapper` component to utilize data attributes for drag-and-drop states instead of props. This change enhances code clarity and maintainability while ensuring consistent styling behavior during drag-and-drop interactions.
2026-03-03 17:39:39 +05:30
Abdul Rahman 9726a4415c refactor: remove unused styled component in NavigationDrawerSectionForWorkspaceItems
Eliminated the `StyledWorkspaceDroppableList` styled component and its associated imports to streamline the code and improve maintainability. This change contributes to a cleaner component structure in the NavigationDrawerSectionForWorkspaceItems.
2026-03-03 17:28:11 +05:30
Abdul Rahman 852585709a Merge branch 'main' into dnd-kit-navbar-drag-drop 2026-03-03 17:27:54 +05:30
Abdul Rahman a4779365a8 feat: wrap CurrentWorkspaceMemberNavigationMenuItemFolders in FavoritesDragDropProviderContent
Enhanced the CurrentWorkspaceMemberNavigationMenuItemFoldersDispatcher component by wrapping the CurrentWorkspaceMemberNavigationMenuItemFolders with FavoritesDragDropProviderContent. This change supports drag-and-drop functionality within the navigation menu item editing context, improving user experience during folder management.
2026-03-03 17:26:42 +05:30
Abdul Rahman c800f4158e refactor: simplify styled component for navigation drop target
Refactored the `StyledDropTarget` component by removing unnecessary props and utilizing data attributes for drag-and-drop states. This change enhances code clarity and maintainability while ensuring consistent styling behavior during drag-and-drop interactions.
2026-03-03 17:17:51 +05:30
Charles BochetandGitHub 802a5b0af6 chore(twenty-front): migrate auth, activities, AI, pages and small modules from Emotion to Linaria (PR 2-3/10) (#18328)
## Summary

- Migrate ~200 files from `@emotion/styled` / `@emotion/react` to
`@linaria/react` + `themeCssVariables`, continuing the zero-runtime
CSS-in-JS migration (PR 2-3 of the [migration
plan](docs/emotion-to-linaria-migration-plan.md))
- Modules covered: **auth** (19), **activities** (53), **ai** (30),
**pages** (70), **action-menu** (3), **object-metadata** (4),
**onboarding** (2), **workspace** (2), **file** (3), **error-handler**
(2), **front-components** (1), **geo-map** (1), **loading** (5),
**testing** (5), plus a `style` prop addition to `TableRow`
- Handles `styled(FunctionComponent)<Props>` incompatibility with
Linaria by using CSS custom properties via `style` + `var()` references

## Test plan

- [x] `npx nx lint:diff-with-main twenty-front` passes
- [x] `npx nx typecheck twenty-front` passes
- [ ] Visual spot-check of auth, onboarding, settings, activities, and
AI chat screens
- [ ] No remaining `@emotion/styled` or `@emotion/react` imports in
migrated files


Made with [Cursor](https://cursor.com)
2026-03-03 11:17:47 +01:00
Abdul Rahman 8023b596a6 refactor: enhance navigation menu item draft saving logic
Refactored the `useSaveNavigationMenuItemsDraft` hook to improve the creation of navigation menu items. Introduced utility functions `buildCreateNavigationMenuItemInput` and `orderFoldersForCreation` to streamline input construction and folder ordering. This change enhances code clarity and maintainability while ensuring correct handling of folder dependencies during item creation.
2026-03-03 08:23:25 +05:30
Abdul Rahman 05be4faaad feat: introduce WorkspaceSectionAddMenuItemButton and WorkspaceSectionListEditModeFallback components
Added new components to enhance the navigation drawer's edit mode functionality. The WorkspaceSectionAddMenuItemButton allows users to add new items directly, while the WorkspaceSectionListEditModeFallback provides a fallback UI for when the navigation menu is in edit mode, integrating read-only item lists and the add button. Updated NavigationDrawerSectionForWorkspaceItems to utilize the new fallback component.
2026-03-03 08:11:40 +05:30
Abdul Rahman 093fd52300 fix: update visibility condition for add menu item button in navigation drawer
Removed the dependency on dragging state for the visibility of the add menu item button in the navigation drawer, ensuring it remains visible when in edit mode.
2026-03-03 07:59:36 +05:30
Abdul Rahman 9e50d70d0c Merge branch 'main' into dnd-kit-navbar-drag-drop 2026-03-03 07:54:56 +05:30
Abdul RahmanandGitHub ae291c99ba fix: record does not open in side panel after returning from fullscreen (#17131)
Closes #17089 

### 1. Can't reopen record after having navigated to its show page
After opening a record in the show page from the command menu and going
back to the index, clicking the same record again did nothing. The
command menu navigation stack was not cleared when opening in the show
page, so the "already open" check skipped reopening. We now clear the
command menu navigation stack before navigating to the show page (in
`RecordShowRightDrawerOpenRecordButton`), so the same record can be
reopened from the index.

### 2. Row doesn't highlight when opening command menu after return from
show page
After returning from the record show page to the index, the first row
click opened the command menu but the row did not highlight. The "side
panel close" event was emitted not only when the panel actually closed,
but also when opening the command menu (cleanup ran with
`isCommandMenuClosing` and always emitted the event). Listeners like
`RecordTableDeactivateRecordTableRowEffect` then deactivated the row. We
now emit the side panel close event only when the close animation
actually completes (`CommandMenuSidePanelForDesktop`), and skip emitting
it when cleanup is run from the open path (`useNavigateCommandMenu`
passes `emitSidePanelCloseEvent: false`). The table still deactivates
the row when the user closes the panel, but no longer when they open the
command menu by clicking a row.
2026-03-02 23:25:11 +00:00
Abdul Rahman 7bc12ab0ce Merge branch 'main' into dnd-kit-navbar-drag-drop 2026-03-03 02:57:01 +05:30
Abdul Rahman 2c7780e2c4 Refactor navigation components to enhance drag-and-drop functionality and improve code clarity. This update introduces a new preload mechanism for the drag-and-drop kit, replaces the WorkspaceDndKitPreloadEffect with direct preloading in PageDragDropProvider, and adds read-only components for better rendering in edit mode. Additionally, it consolidates logic in NavigationDrawerSection components and introduces new skeleton loaders for improved user experience during loading states. 2026-03-03 02:54:35 +05:30
7809f83e72 fix: [Note] Title not filled by default #13838 (#18297)
Fixes #13838 
When creating a note from the command menu side panel (e.g. clicking
"Add Note" in a related notes section on an Opportunity/company/people
page), the title field was not auto-focused — focus point went to body
instead.

## Root Cause

When a record opens in the side panel, there is no page navigation, so
`PageChangeEffect` (which handles title auto-focus for full-page views)
never runs. `openNewRecordTitleCell()` was simply never called for the
side-panel path.

## Fix

`openRecordInCommandMenu` is the single entry point for all side-panel
record opens, so title auto-focus is handled there once for all callers.
Previously, `useCreateNewIndexRecord` called `openRecordInCommandMenu`
and then called `openNewRecordTitleCell` separately, which would have
caused a double invocation after this fix. The redundant call has been
removed.

## Before


https://github.com/user-attachments/assets/df0d9e4f-dc25-4a0d-a49e-898a14f9c0a0

## After


https://github.com/user-attachments/assets/1a5044f7-6bb7-4333-8934-c1081b935e97

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-02 20:09:36 +00:00
Abdul Rahman 8167b68626 Remove WorkspaceDndKitDraggableItem component to streamline drag-and-drop functionality. This deletion enhances code clarity and maintainability by eliminating unused components, contributing to a cleaner codebase. 2026-03-03 01:08:44 +05:30
Félix MalfaitandGitHub 6351c6c1c6 feat: remember original URL and redirect after login (#18308)
## Summary

- Implement a return-to-path mechanism that preserves the user's
intended destination across authentication flows (login, magic link,
cross-domain redirects)
- Uses layered persistence: Jotai atom (in-memory), sessionStorage with
TTL (tab-switch resilience), URL query parameter (cross-domain
propagation)
- Includes path validation to prevent open redirects, automatic cleanup
after successful login, and comprehensive test coverage
- Replaces the unused `previousUrlState` with a robust
`returnToPathState` system

## Test plan

- [ ] Visit a deep link (e.g. `/objects/tasks`) while logged out —
should redirect to login, then back to `/objects/tasks` after logging in
- [ ] Visit an OAuth authorize link while logged out — should redirect
to login, then to the authorize page
- [ ] Test magic link flow: click sign-in link that opens new tab —
should still redirect to original destination
- [ ] Test cross-domain: visit `app.twenty.com/objects/tasks` — should
preserve path through workspace domain redirect
- [ ] Verify auth/onboarding paths are excluded from being saved as
return paths
- [ ] Verify return-to-path is cleared after successful navigation
- [ ] All 215 existing `usePageChangeEffectNavigateLocation` tests pass


Made with [Cursor](https://cursor.com)
2026-03-02 19:00:48 +01:00
Abdullah.andGitHub 20a2c3836e feat: introduce role selector when inviting members to a workspace (#18085)
This PR adds an explicit role selector to the "Invite by email" flow,
requires a role choice before sending, and stores the selected role with
each invitation. The backend now accepts and persists `roleId` on
invitations and applies it when the invite is accepted, while keeping it
optional to avoid breaking existing clients and legacy invites.

---

### Frontend

- **Settings → Members → Invite by email**
- New **Role** dropdown (same `Select` pattern as member/API key role
selectors) between the email input and Invite button.
- Roles are loaded via `SettingsRolesQueryEffect` and
`settingsAllRolesSelector`; only roles with `canBeAssignedToUsers` are
shown.
- Role is **required**: form validates `roleId` (e.g.
`z.string().min(1)`) and the Invite button is disabled until a role is
selected and emails are valid.
- `WorkspaceInviteTeam` receives `roles` as a prop from the parent;
layout is responsive (e.g. stacked on small viewports).
- **Pending invitations table**
- New **Role** column showing the invitation’s role label (or "Unknown
role" for legacy invites without `roleId`), using the same roles source
for lookup.
- **Onboarding invite step**
- When sending invites during onboarding, the workspace **default role**
is used when available (`currentWorkspace?.defaultRole?.id`), so no role
selector is added there.
- **GraphQL**
- `sendInvitations` mutation accepts optional `roleId`;
`findWorkspaceInvitations` and resend mutation responses include
`roleId` on `WorkspaceInvitation`. Frontend types (e.g.
`WorkspaceInvitation`, hook variables) updated accordingly.

---

### Backend

- **API**
- `SendInvitationsInput` has an **optional** `roleId` (UUID, nullable).
The resolver normalises `null` to `undefined` so existing callers and
legacy flows are not broken.
- **Validation (when `roleId` is provided)**
- Role checks are centralised in **RoleValidationService**
(`RoleValidationModule`, in `metadata-modules/role-validation/`). It
validates that the role exists in the workspace and has
`canBeAssignedToUsers`, and throws a permissions-style error otherwise.
This avoids circular dependencies (e.g. `RoleModule` imports
`UserWorkspaceModule`, so invite/accept flows cannot depend on
`RoleModule`).
- **Send flow:** `WorkspaceInvitationResolver` and
`WorkspaceInvitationService.sendInvitations` both call
`RoleValidationService.validateRoleAssignableToUsersOrThrow` when
`roleId` is present (resolver before calling the service; service again
before creating tokens so that **resend** also validates the stored role
and fails fast if the role was deleted or made unassignable).
- **Accept flow:**
`UserWorkspaceService.addUserToWorkspaceIfUserNotInWorkspace` uses the
same service in `resolveRoleIdForNewMember` when an invitation provides
a `roleId`, then falls back to `workspace.defaultRoleId` when not.
Role/default is resolved and validated before any user/workspace/member
creation.
- **Persistence**
- Invitation app tokens store `roleId` in `context` next to `email`
(`context: { email, roleId? }`). `generateInvitationToken` and
`createWorkspaceInvitation` accept an optional `roleId` and only add it
to `context` when defined.
- **Resend**
- Resend passes the existing invitation’s `context.roleId` into
`sendInvitations`. The service validates that role (when present) before
creating the new token, so if the role was deleted or made unassignable,
resend fails with a clear error instead of sending a broken link.
- **Response shape**
- `SendInvitationsOutput.result` remains `WorkspaceInvitation[]`. When
`usePersonalInvitation` is false we only push full invitation records
(from `castAppTokenToWorkspaceInvitationUtil`), so the result always
matches the GraphQL type (`id`, `email`, `roleId`, `expiresAt`).
- **Modules**
- `WorkspaceInvitationModule` and `UserWorkspaceModule` import
**RoleValidationModule** (not `RoleModule`) and inject
**RoleValidationService** for validation. `RoleModule` imports
`RoleValidationModule` and `RoleService` delegates to
`RoleValidationService` for the same validation where the module graph
allows.

---

### Backward compatibility

- **Optional `roleId`**: Clients that don’t send `roleId` (or send
`null`) are unchanged; invitations are created without a role and the
accept flow uses the workspace default role.
- **Legacy invitations**: App tokens with only `context.email` still
work; `context.roleId` is optional and the UI can show e.g. "Unknown
role" for those in the pending-invitations table.
2026-03-02 18:58:32 +01:00
nitinandGitHub 1eb284c87f Fix command menu text/number inputs to commit on blur and cancel cleanly on Escape (#18283)
closes https://github.com/twentyhq/twenty/issues/18264




https://github.com/user-attachments/assets/7b576a00-78bc-46a2-9528-d8b3bcbdd530




https://github.com/user-attachments/assets/4102468e-e85f-46a0-8b23-e7abd77bfc95



### PR description -
This fixes flaky persistence in command menu text and number inputs.

- moved commit logic to onBlur (single commit path)
- Enter now blurs, so it uses the same commit path
- Escape now cancels edit (restores draft + exits) without persisting
- removed dependency on input click-outside commit timing

### Outcome -

- clicking anywhere outside the input now reliably persists edits
- Escape consistently discards edits
2026-03-02 15:30:51 +00:00
Charles BochetandGitHub c4140f85df chore(twenty-front): migrate small modules from Emotion to Linaria (PR 1/10) (#18314)
## Emotion → Linaria migration — PR 1 of 10

First batch of the `twenty-front` migration from Emotion (runtime
CSS-in-JS) to Linaria (zero-runtime, build-time extraction via
wyw-in-js). Covers **100 files** across 10 small standalone modules —
chosen as the lowest-risk starting point.

### Modules migrated

spreadsheet-import (28) · navigation-menu-item (17) · views (14) ·
billing (10) · blocknote-editor (7) · advanced-text-editor (7) ·
favorites (7) · navigation (4) · information-banner (3) ·
sign-in-background-mock (3)

### Migration pattern

Every file follows the same mechanical transformation:

| Emotion | Linaria |
|---|---|
| `import styled from '@emotion/styled'` | `import { styled } from
'@linaria/react'` |
| `${({ theme }) => theme.font.color.primary}` |
`${themeCssVariables.font.color.primary}` |
| `${({ theme }) => theme.spacing(4)}` |
`${themeCssVariables.spacing[4]}` |
| `const theme = useTheme()` | `const { theme } =
useContext(ThemeContext)` |
| `import { type Theme } from '@emotion/react'` | `import { type
ThemeType } from 'twenty-ui/theme'` |

`themeCssVariables` is a build-time object where every leaf is a
`var(--t-xxx)` CSS custom property reference, evaluated statically by
wyw-in-js. Runtime theme access (icon sizes, colors passed as props)
uses `useContext(ThemeContext)`.

### Gotchas encountered & fixed

- **Interpolation return types** — wyw-in-js requires `string | number`,
never `false`/`undefined`. Replaced `condition && 'css'` with `condition
? 'css' : ''`.
- **`css` tag inside `styled` templates** — Linaria `css` returns a
class name, not CSS text. Replaced with plain template strings.
- **`styled(Component)` needs `className`** — added `className` prop to
`NavigationDrawerSection`, `DropdownMenuItemsContainer`, and `Heading`.
- **`shouldForwardProp` not supported** — Linaria filters invalid DOM
props automatically for HTML elements. For custom components, used
wrapper divs where needed.
- **`FormFieldPlaceholderStyles`** — converted from Emotion `css`
function to a static string using `themeCssVariables`.
2026-03-02 16:33:40 +01:00
Charles BochetandGitHub 9c4b0f526c Refactor chip component hierarchy: AvatarChip → AvatarOrIcon (#18313)
## Summary

Cleans up the chip component hierarchy in `twenty-ui`:

- **Fix twenty-ui Storybook** — The `wyw-in-js` Vite plugin crashed on
`/@react-refresh` virtual module. Fixed by setting `enforce: 'pre'` so
it runs before the React refresh plugin injects virtual imports.
- **Rename `AvatarChip` → `AvatarOrIcon`** — The old name was
misleading. This component is not a chip — it's a polymorphic renderer
that displays either an `Avatar` (image/initials) or an `Icon` (plain or
with colored background). It's typically slotted into `Chip`/`LinkChip`
as `leftComponent`.
- **Move `rightComponentDivider` to `Chip`/`LinkChip`** — The vertical
separator between chip content and a right action (e.g. a close button)
is a chip layout concern, not an avatar concern. Added
`rightComponentDivider` boolean prop to `Chip` and `LinkChip`.
- **Remove `MultipleAvatarChip`** — Zero consumers in the codebase. The
command menu implements its own overlapping avatar layout.
- **Migrate raw icon usages** — `CalendarEventDetails` and `FileIcon`
(small size) now use `AvatarOrIcon` for consistent Chip icon rendering.
- **Enhance stories** — Full `CatalogDecorator` coverage for `Chip` and
`LinkChip` showing all variants, sizes, accents, and states.

## Component hierarchy

```
AvatarOrIcon (twenty-ui)
  ├── No Icon → renders Avatar (image or initials)
  ├── Icon + background → renders icon in colored square
  └── Icon only → renders plain icon
  Used as leftComponent/rightComponent in Chip or standalone

Chip (twenty-ui)
  ├── leftComponent (typically AvatarOrIcon)
  ├── label (with overflow tooltip)
  ├── rightComponentDivider (optional vertical separator)
  └── rightComponent (e.g. close icon via AvatarOrIcon)

LinkChip (twenty-ui)
  └── Wraps Chip inside a react-router <Link>

RecordChip (twenty-front)
  └── Composes Chip/LinkChip + AvatarOrIcon with record data
```

## `Chip` API additions

| Prop | Type | Description |
|------|------|-------------|
| `rightComponentDivider` | `boolean` | Renders a vertical separator
before `rightComponent` |

## Stories

<img width="1032" height="576" alt="image"
src="https://github.com/user-attachments/assets/fe7c7666-9b16-4545-b87e-1b53e22d462d"
/>
2026-03-02 15:48:49 +01:00
WeikoandGitHub 37bcb35391 Migrate pagelayout position frontend (#18229)
## Context
Part 1 of migrating gridPosition in favor of typed position
FE should now always send both values to the BE and use both.

Next steps: 
- Update the backend to enforce and validate the new position field + DB
migrations gridPositon -> position (type: GRID)
- Cleanup frontend usage
- Cleanup backend
2026-03-02 14:42:30 +01:00
neo773andGitHub 1b67ba6a75 Draft emails fix onblur on text input and callout banner component overflow (#18310)
Before

<img width="396" height="759" alt="SCR-20260301-daft"
src="https://github.com/user-attachments/assets/c3fb3a19-3456-424d-9fd2-dd13ed0d2ad5"
/>

After

<img width="391" height="752" alt="SCR-20260301-daio"
src="https://github.com/user-attachments/assets/80a64991-6e69-4ddf-b968-bdc788af02cd"
/>
2026-03-02 12:04:30 +01:00
a06abb1d60 Fields widget rename group (#18169)
## Rename


https://github.com/user-attachments/assets/b151683a-d1ae-447f-9d9f-95a14b50608b

## Delete



https://github.com/user-attachments/assets/8da73a33-1c57-4771-b712-527b8080117d

---------

Co-authored-by: Weiko <corentin@twenty.com>
2026-03-02 10:32:31 +00:00
Abdul Rahman 584e06d0b6 Introduce WorkspaceDndKitPreloadEffect to preload drag-and-drop kit and refactor PageDragDropProvider for improved structure. This change enhances the component's rendering logic by integrating the preload effect, ensuring better performance and maintainability in drag-and-drop functionality. 2026-03-02 15:53:05 +05:30
Abdul Rahman dce9c281ee Refactor WorkspaceDndKitProvider to improve type safety and streamline drag-and-drop event handling. This update introduces new type definitions for drag start, drag over, and drag end events, enhancing clarity and maintainability while ensuring better integration with the drag-and-drop logic. 2026-03-02 15:49:15 +05:30
Abdul Rahman 93640eef04 Add EditModeProps and refactor component imports for improved type management
This commit introduces the EditModeProps type to enhance type safety in edit mode handling. Additionally, it updates component imports in NavigationDrawerSectionForWorkspaceItemContent, NavigationDrawerSectionForWorkspaceItems, and NavigationDrawerSectionForWorkspaceItemsListDndKit to utilize the new type definitions, improving clarity and maintainability across the object metadata module.
2026-03-02 15:36:23 +05:30
Abdul Rahman 46ee272bdd Refactor navigation components to remove unused onAddMenuItem prop and streamline add menu item functionality. This change enhances clarity and maintainability by consolidating logic and improving the drag-and-drop experience in the workspace navigation. 2026-03-02 15:31:33 +05:30
Abdul Rahman 806d72e2b4 Refactor NavigationDrawerSection components to improve clarity and maintainability by removing unused props and consolidating logic. This change enhances the drag-and-drop functionality and streamlines the rendering of workspace items, ensuring a cleaner code structure. 2026-03-02 15:25:13 +05:30
Abdul Rahman 3215a7b9e6 Refactor WorkspaceDndKitProvider to remove FavoritesDragContext and streamline the rendering logic of drag-and-drop components. This change enhances code clarity and maintainability by consolidating context providers and improving the overall structure of the component. 2026-03-02 15:22:13 +05:30
Abdul Rahman 0015085fd5 Refactor WorkspaceDndKitProvider to improve drag-and-drop logic by consolidating condition checks and enhancing readability. This change streamlines the handling of sortable and droppable elements, ensuring clearer flow and better maintainability of the component's drag-and-drop functionality. 2026-03-02 15:13:15 +05:30
Abdul Rahman 8e3f9283b9 Refactor WorkspaceDndKitProvider to enhance drag-and-drop event handling by introducing new type definitions for drag operations. This change improves code clarity and maintainability, streamlining the handling of drag events and ensuring better type safety throughout the component. 2026-03-02 15:10:53 +05:30
Abdul Rahman 9951aa3202 Refactor WorkspaceDndKitProvider to improve drag-and-drop logic by introducing a DropDestination type and consolidating drop result options. This change enhances code clarity and maintainability while streamlining sensor configuration and event handling. 2026-03-02 15:03:41 +05:30
Abdul Rahman 4c4d755daf Refactor PageDragDropProvider and CurrentWorkspaceMemberNavigationMenuItemFoldersDispatcher to streamline drag-and-drop logic. Removed unnecessary feature flag checks and consolidated rendering logic, enhancing clarity and maintaining consistent behavior across components. 2026-03-02 14:48:31 +05:30
Abdul Rahman 6ad6cc8e69 Refactor useHandleWorkspaceNavigationMenuItemDragAndDrop to extract getPositionBetween utility function for improved clarity and reusability. This change enhances the drag-and-drop logic by centralizing position calculation, streamlining the component's code. 2026-03-02 14:37:15 +05:30
Abdul Rahman 1b5b2f7fc4 Enhance MainNavigationDrawerScrollableItems by adding Suspense for lazy-loaded components. This change improves loading behavior and user experience by providing a fallback during component loading. 2026-03-02 14:31:48 +05:30
Abdul Rahman f78454b6b0 Refactor navigation components to enhance drag-and-drop functionality by removing the WorkspaceDndKitContext dependency and consolidating the rendering logic. This change improves clarity and maintains consistency in edit mode handling across components, while also deleting the unused NavigationDrawerSectionForWorkspaceItemsListHelloPangea component. 2026-03-02 07:32:17 +05:30
Abdul Rahman 622c89d3a9 Refactor WorkspaceNavigationMenuItemFolderSubItem to improve edit mode handling by introducing isEditableInEditMode variable. This change enhances clarity in the component's logic and maintains consistency with the existing state management approach. 2026-03-02 07:21:15 +05:30
Abdul Rahman 00f2e56925 Refactor navigation menu components to streamline state management by removing objectMetadataItems and views props. Introduced local state retrieval for object metadata and core views, enhancing code clarity and reducing prop drilling across components. 2026-03-02 07:19:12 +05:30
Abdul Rahman cfec6c8e26 Refactor navigation menu components to utilize isNavigationMenuInEditMode state for improved edit mode handling. This change enhances code clarity and consistency across various components by replacing direct isEditMode props with the new state management approach. 2026-03-02 07:15:03 +05:30
Abdul Rahman d6e9e0ca9d Remove useDndKit prop from WorkspaceSectionItemContent and related components to simplify the API and improve clarity in drag-and-drop functionality. 2026-03-02 07:03:33 +05:30
Abdul Rahman 7916f58fe9 Add WorkspaceNavigationMenuItemFolderSubItem component to enhance navigation menu structure. This new component encapsulates the logic for rendering sub-items in the workspace navigation menu, improving code organization and maintainability. 2026-03-02 07:03:14 +05:30
Abdul Rahman b57c6cf7a4 Refactor useHandleWorkspaceNavigationMenuItemDragAndDrop to improve drag-and-drop logic by introducing a new function for calculating item positions. This change enhances the clarity and maintainability of the code while ensuring accurate position updates during item reordering. 2026-03-02 06:56:49 +05:30