From 4a01a21f5d916f45c800ec5e627ae90a793d4f51 Mon Sep 17 00:00:00 2001 From: Rohan Chakraborty Date: Tue, 19 May 2026 14:18:43 +0530 Subject: [PATCH 1/6] fix: sdk action menu behaviour --- web/sdk/react/assets/user-minus.svg | 3 +++ web/sdk/react/hooks/useOrganizationTeams.ts | 8 +++++--- .../members/components/member-columns.tsx | 6 +++--- .../views-new/members/members-view.module.css | 4 ++++ .../react/views-new/members/members-view.tsx | 19 ++++++++++++++++--- .../components/member-columns.module.css | 7 +++++++ .../projects/components/member-columns.tsx | 11 ++++++----- .../components/project-columns.module.css | 7 +++++++ .../projects/components/project-columns.tsx | 9 +++++---- .../projects/project-details-view.module.css | 4 ++++ .../projects/project-details-view.tsx | 3 ++- .../components/service-account-columns.tsx | 6 +++--- .../components/member-columns.module.css | 7 +++++++ .../teams/components/member-columns.tsx | 11 ++++++----- .../teams/components/team-columns.module.css | 7 +++++++ .../teams/components/team-columns.tsx | 9 +++++---- .../teams/team-details-view.module.css | 4 ++++ .../views-new/teams/team-details-view.tsx | 6 ++++-- web/sdk/react/views-new/teams/teams-view.tsx | 11 ++++++++--- 19 files changed, 106 insertions(+), 36 deletions(-) create mode 100644 web/sdk/react/assets/user-minus.svg create mode 100644 web/sdk/react/views-new/projects/components/member-columns.module.css create mode 100644 web/sdk/react/views-new/projects/components/project-columns.module.css create mode 100644 web/sdk/react/views-new/teams/components/member-columns.module.css create mode 100644 web/sdk/react/views-new/teams/components/team-columns.module.css diff --git a/web/sdk/react/assets/user-minus.svg b/web/sdk/react/assets/user-minus.svg new file mode 100644 index 000000000..f22dd6321 --- /dev/null +++ b/web/sdk/react/assets/user-minus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/web/sdk/react/hooks/useOrganizationTeams.ts b/web/sdk/react/hooks/useOrganizationTeams.ts index ae6e04097..c444996fc 100644 --- a/web/sdk/react/hooks/useOrganizationTeams.ts +++ b/web/sdk/react/hooks/useOrganizationTeams.ts @@ -16,6 +16,7 @@ export const useOrganizationTeams = ({ withMemberCount = false }: useOrganizationTeamsProps): { isFetching: boolean; + isFetched: boolean; teams: Group[]; userAccessOnTeam: Record; refetch: () => void; @@ -27,14 +28,14 @@ export const useOrganizationTeams = ({ const { activeOrganization: organization } = useFrontier(); // Organization teams query - const { data: orgTeamsData, isLoading: isOrgTeamsLoading, error: orgTeamsError, refetch: refetchOrgTeams } = useQuery( + const { data: orgTeamsData, isLoading: isOrgTeamsLoading, isFetched: isOrgTeamsFetched, error: orgTeamsError, refetch: refetchOrgTeams } = useQuery( FrontierServiceQueries.listOrganizationGroups, create(ListOrganizationGroupsRequestSchema, { orgId: organization?.id || '', withMemberCount }), { enabled: !!organization?.id && showOrgTeams } ); - // User teams query - const { data: userTeamsData, isLoading: isUserTeamsLoading, error: userTeamsError, refetch: refetchUserTeams } = useQuery( + // User teams query + const { data: userTeamsData, isLoading: isUserTeamsLoading, isFetched: isUserTeamsFetched, error: userTeamsError, refetch: refetchUserTeams } = useQuery( FrontierServiceQueries.listCurrentUserGroups, create(ListCurrentUserGroupsRequestSchema, { orgId: organization?.id || '', withPermissions, withMemberCount }), { enabled: !!organization?.id && !showOrgTeams } @@ -75,6 +76,7 @@ export const useOrganizationTeams = ({ return { isFetching: isTeamsLoading, + isFetched: isUserTeamsFetched || isOrgTeamsFetched, teams: teams, userAccessOnTeam, refetch, diff --git a/web/sdk/react/views-new/members/components/member-columns.tsx b/web/sdk/react/views-new/members/components/member-columns.tsx index 6a1265128..fcc45a5e6 100644 --- a/web/sdk/react/views-new/members/components/member-columns.tsx +++ b/web/sdk/react/views-new/members/components/member-columns.tsx @@ -1,6 +1,6 @@ 'use client'; -import { DotsVerticalIcon } from '@radix-ui/react-icons'; +import { DotsHorizontalIcon } from '@radix-ui/react-icons'; import { Flex, Text, @@ -141,13 +141,13 @@ export const getColumns = ({ }} render={ } > - + ); diff --git a/web/sdk/react/views-new/members/members-view.module.css b/web/sdk/react/views-new/members/members-view.module.css index 78da80ac9..5e32e17cb 100644 --- a/web/sdk/react/views-new/members/members-view.module.css +++ b/web/sdk/react/views-new/members/members-view.module.css @@ -12,6 +12,10 @@ table-layout: fixed; } +.tableRow > td { + padding: var(--rs-space-3); +} + .menuContent { min-width: 180px; } diff --git a/web/sdk/react/views-new/members/members-view.tsx b/web/sdk/react/views-new/members/members-view.tsx index a5fc80f96..74157b69f 100644 --- a/web/sdk/react/views-new/members/members-view.tsx +++ b/web/sdk/react/views-new/members/members-view.tsx @@ -1,7 +1,7 @@ 'use client'; import { useMemo, useState } from 'react'; -import { ExclamationTriangleIcon, TrashIcon, UpdateIcon } from '@radix-ui/react-icons'; +import { ExclamationTriangleIcon, UpdateIcon } from '@radix-ui/react-icons'; import { Button, Tooltip, @@ -11,8 +11,10 @@ import { EmptyState, DataTable, Dialog, + Image, Menu } from '@raystack/apsara-v1'; +import deleteIcon from '../../assets/delete.svg'; import { useFrontier } from '../../contexts/FrontierContext'; import { useOrganizationMembers } from '../../hooks/useOrganizationMembers'; import { usePermissions } from '../../hooks/usePermissions'; @@ -189,7 +191,8 @@ export function MembersView({ showTeamField = true }: MembersViewProps) { } classNames={{ root: styles.tableRoot, - table: styles.table + table: styles.table, + row: styles.tableRow }} /> @@ -218,7 +221,14 @@ export function MembersView({ showTeamField = true }: MembersViewProps) { ))} {payload?.canRemove && ( } + leadingIcon={ + Remove + } onClick={() => removeMemberDialogHandle.openWithPayload({ memberId: payload.memberId, @@ -226,6 +236,9 @@ export function MembersView({ showTeamField = true }: MembersViewProps) { }) } data-test-id="remove-member-dropdown-item" + style={{ + color: 'var(--rs-color-foreground-danger-primary)' + }} > Remove diff --git a/web/sdk/react/views-new/projects/components/member-columns.module.css b/web/sdk/react/views-new/projects/components/member-columns.module.css new file mode 100644 index 000000000..72da9c120 --- /dev/null +++ b/web/sdk/react/views-new/projects/components/member-columns.module.css @@ -0,0 +1,7 @@ +.actionsCell { + visibility: hidden; +} + +tr:hover .actionsCell { + visibility: visible; +} diff --git a/web/sdk/react/views-new/projects/components/member-columns.tsx b/web/sdk/react/views-new/projects/components/member-columns.tsx index 738c04276..3e0af7b90 100644 --- a/web/sdk/react/views-new/projects/components/member-columns.tsx +++ b/web/sdk/react/views-new/projects/components/member-columns.tsx @@ -1,6 +1,6 @@ 'use client'; -import { DotsVerticalIcon, TrashIcon, UpdateIcon } from '@radix-ui/react-icons'; +import { DotsHorizontalIcon } from '@radix-ui/react-icons'; import { Flex, Text, @@ -13,6 +13,7 @@ import { import type { User, Group, Role } from '@raystack/proton/frontier'; import { getInitials } from '~/utils'; import teamIcon from '~/react/assets/users.svg'; +import styles from './member-columns.module.css'; export type MemberRow = (Group & { isTeam: true }) | (User & { isTeam?: false }); @@ -52,7 +53,7 @@ export function getColumns({ const label = member.isTeam ? member.title : member.title; const subLabel = member.isTeam ? member.name : member.email; return ( - + !currentRoleIds.has(r.id)); return ( - + } > - + ); diff --git a/web/sdk/react/views-new/projects/components/project-columns.module.css b/web/sdk/react/views-new/projects/components/project-columns.module.css new file mode 100644 index 000000000..72da9c120 --- /dev/null +++ b/web/sdk/react/views-new/projects/components/project-columns.module.css @@ -0,0 +1,7 @@ +.actionsCell { + visibility: hidden; +} + +tr:hover .actionsCell { + visibility: visible; +} diff --git a/web/sdk/react/views-new/projects/components/project-columns.tsx b/web/sdk/react/views-new/projects/components/project-columns.tsx index 9b514be3b..4f2785fba 100644 --- a/web/sdk/react/views-new/projects/components/project-columns.tsx +++ b/web/sdk/react/views-new/projects/components/project-columns.tsx @@ -1,6 +1,6 @@ 'use client'; -import { DotsVerticalIcon, Pencil1Icon, TrashIcon } from '@radix-ui/react-icons'; +import { DotsHorizontalIcon } from '@radix-ui/react-icons'; import { Flex, Text, @@ -10,6 +10,7 @@ import { } from '@raystack/apsara-v1'; import type { Project } from '@raystack/proton/frontier'; import { MembersCell } from './members-cell'; +import styles from './project-columns.module.css'; export interface ProjectMenuPayload { projectId: string; @@ -84,7 +85,7 @@ export const getColumns = ({ if (!canUpdate && !canDelete) return null; return ( - + } > - + ); diff --git a/web/sdk/react/views-new/projects/project-details-view.module.css b/web/sdk/react/views-new/projects/project-details-view.module.css index 2674282bc..a9a2e35eb 100644 --- a/web/sdk/react/views-new/projects/project-details-view.module.css +++ b/web/sdk/react/views-new/projects/project-details-view.module.css @@ -12,6 +12,10 @@ table-layout: fixed; } +.tableRow > td { + padding: var(--rs-space-3); +} + .menuContent { min-width: 160px; } diff --git a/web/sdk/react/views-new/projects/project-details-view.tsx b/web/sdk/react/views-new/projects/project-details-view.tsx index f06cacf6a..b0e77dbf3 100644 --- a/web/sdk/react/views-new/projects/project-details-view.tsx +++ b/web/sdk/react/views-new/projects/project-details-view.tsx @@ -414,7 +414,8 @@ export function ProjectDetailsView({ } classNames={{ root: styles.tableRoot, - table: styles.table + table: styles.table, + row: styles.tableRow }} /> diff --git a/web/sdk/react/views-new/service-accounts/components/service-account-columns.tsx b/web/sdk/react/views-new/service-accounts/components/service-account-columns.tsx index b889465d1..a1e50b86d 100644 --- a/web/sdk/react/views-new/service-accounts/components/service-account-columns.tsx +++ b/web/sdk/react/views-new/service-accounts/components/service-account-columns.tsx @@ -1,6 +1,6 @@ 'use client'; -import { DotsVerticalIcon } from '@radix-ui/react-icons'; +import { DotsHorizontalIcon } from '@radix-ui/react-icons'; import { Flex, Text, @@ -81,14 +81,14 @@ export const getColumns = ({ }} render={ } > - + ); diff --git a/web/sdk/react/views-new/teams/components/member-columns.module.css b/web/sdk/react/views-new/teams/components/member-columns.module.css new file mode 100644 index 000000000..72da9c120 --- /dev/null +++ b/web/sdk/react/views-new/teams/components/member-columns.module.css @@ -0,0 +1,7 @@ +.actionsCell { + visibility: hidden; +} + +tr:hover .actionsCell { + visibility: visible; +} diff --git a/web/sdk/react/views-new/teams/components/member-columns.tsx b/web/sdk/react/views-new/teams/components/member-columns.tsx index 38f12cd49..b1a0afddd 100644 --- a/web/sdk/react/views-new/teams/components/member-columns.tsx +++ b/web/sdk/react/views-new/teams/components/member-columns.tsx @@ -1,6 +1,6 @@ 'use client'; -import { DotsVerticalIcon } from '@radix-ui/react-icons'; +import { DotsHorizontalIcon } from '@radix-ui/react-icons'; import { Flex, Text, @@ -12,6 +12,7 @@ import { } from '@raystack/apsara-v1'; import type { User, Role } from '@raystack/proton/frontier'; import { getInitials } from '~/utils'; +import styles from './member-columns.module.css'; export interface MemberMenuPayload { memberId: string; @@ -42,7 +43,7 @@ export function getColumns({ const fallback = getInitials(member.title || member.email); const color = getAvatarColor(member.id || ''); return ( - + !currentRoleIds.has(r.id)); return ( - + } > - + ); diff --git a/web/sdk/react/views-new/teams/components/team-columns.module.css b/web/sdk/react/views-new/teams/components/team-columns.module.css new file mode 100644 index 000000000..72da9c120 --- /dev/null +++ b/web/sdk/react/views-new/teams/components/team-columns.module.css @@ -0,0 +1,7 @@ +.actionsCell { + visibility: hidden; +} + +tr:hover .actionsCell { + visibility: visible; +} diff --git a/web/sdk/react/views-new/teams/components/team-columns.tsx b/web/sdk/react/views-new/teams/components/team-columns.tsx index 5e7be2508..94abc9003 100644 --- a/web/sdk/react/views-new/teams/components/team-columns.tsx +++ b/web/sdk/react/views-new/teams/components/team-columns.tsx @@ -1,6 +1,6 @@ 'use client'; -import { DotsVerticalIcon } from '@radix-ui/react-icons'; +import { DotsHorizontalIcon } from '@radix-ui/react-icons'; import { Flex, Text, @@ -9,6 +9,7 @@ import { DataTableColumnDef } from '@raystack/apsara-v1'; import type { Group } from '@raystack/proton/frontier'; +import styles from './team-columns.module.css'; export interface TeamMenuPayload { teamId: string; @@ -64,7 +65,7 @@ export function getColumns({ if (!canUpdate && !canDelete) return null; return ( - + } > - + ); diff --git a/web/sdk/react/views-new/teams/team-details-view.module.css b/web/sdk/react/views-new/teams/team-details-view.module.css index 8cd2868e7..c835a24ac 100644 --- a/web/sdk/react/views-new/teams/team-details-view.module.css +++ b/web/sdk/react/views-new/teams/team-details-view.module.css @@ -6,6 +6,10 @@ table-layout: fixed; } +.tableRow > td { + padding: var(--rs-space-3); +} + .menuContent { min-width: 160px; } diff --git a/web/sdk/react/views-new/teams/team-details-view.tsx b/web/sdk/react/views-new/teams/team-details-view.tsx index 984a3e38f..4b477a9ba 100644 --- a/web/sdk/react/views-new/teams/team-details-view.tsx +++ b/web/sdk/react/views-new/teams/team-details-view.tsx @@ -20,6 +20,7 @@ import { Image } from '@raystack/apsara-v1'; import deleteIcon from '../../assets/delete.svg'; +import userMinusIcon from '../../assets/user-minus.svg'; import { toastManager } from '@raystack/apsara-v1'; import { useQuery, useMutation } from '@connectrpc/connect-query'; import { @@ -340,7 +341,8 @@ export function TeamDetailsView({ } classNames={{ root: styles.tableRoot, - table: styles.table + table: styles.table, + row: styles.tableRow }} /> @@ -367,7 +369,7 @@ export function TeamDetailsView({ @@ -151,7 +154,7 @@ export function TeamsView({ - {isLoading ? ( + {showInitialSkeleton ? ( ) : ( <> @@ -159,11 +162,13 @@ export function TeamsView({ placeholder="Search by title" size="large" width={360} + disabled={isLoading} /> {canListOrgGroups && ( + + + + + {projectsFilterOptions.map(opt => ( + + {opt.label} + + ))} + + + )} + )} - {isLoading ? ( + {showInitialSkeleton ? ( ) : ( diff --git a/web/sdk/react/views-new/service-accounts/service-accounts-view.tsx b/web/sdk/react/views-new/service-accounts/service-accounts-view.tsx index 99f7f0b63..df6907951 100644 --- a/web/sdk/react/views-new/service-accounts/service-accounts-view.tsx +++ b/web/sdk/react/views-new/service-accounts/service-accounts-view.tsx @@ -16,6 +16,7 @@ import { } from '@raystack/apsara-v1'; import deleteIcon from '~/react/assets/delete.svg'; import keyIcon from '~/react/assets/key.svg'; +import exclamationTriangleIcon from '~/react/assets/exclamation-triangle.svg'; import { useQuery } from '@connectrpc/connect-query'; import { create } from '@bufbuild/protobuf'; import { @@ -146,19 +147,36 @@ export function ServiceAccountsView({ {hasNoAccess ? ( } + variant="empty2" + icon={ + + } heading="Restricted Access" subHeading="Admin access required, please reach out to your admin incase you want to generate a key." /> ) : hasNoServiceAccounts ? ( } + variant="empty2" + icon={ + + } heading="No Service Account Found" subHeading={`Create a new account to use the APIs of ${t.appName()} platform`} primaryAction={ + ) : null + } + /> + {canCreateGroup && ( + + )} + + ); + } + return ( Date: Wed, 20 May 2026 02:20:29 +0530 Subject: [PATCH 4/6] fix: dialog and alertdialog styles --- web/apps/admin/package.json | 2 +- web/apps/admin/src/components/assign-role.tsx | 2 +- web/apps/client-demo/package.json | 2 +- web/pnpm-lock.yaml | 74 +++++++++++++----- web/sdk/admin/components/AssignRole.tsx | 2 +- .../details/layout/add-tokens-dialog.tsx | 2 +- .../details/members/remove-member.tsx | 2 +- .../details/projects/members/assign-role.tsx | 1 - .../projects/members/remove-member.tsx | 1 - .../details/projects/rename-project.tsx | 1 - .../details/security/block-organization.tsx | 6 +- .../details/security/domains-list.tsx | 6 +- .../users/details/layout/suspend-user.tsx | 2 +- .../users/details/security/block-user.tsx | 6 +- web/sdk/package.json | 2 +- .../components/image-upload/image-upload.tsx | 2 +- .../confirm-cycle-switch-dialog.tsx | 2 +- .../delete-organization-dialog.module.css | 3 - .../components/delete-organization-dialog.tsx | 66 +++++++++------- .../components/remove-member-dialog.tsx | 2 +- .../members/components/update-role-dialog.tsx | 78 +++++++++---------- .../react/views-new/members/members-view.tsx | 3 +- .../pat/components/pat-created-dialog.tsx | 2 +- .../pat/components/pat-form-dialog.tsx | 2 +- .../pat/components/regenerate-pat-dialog.tsx | 2 +- .../components/revoke-pat-dialog.module.css | 3 - .../pat/components/revoke-pat-dialog.tsx | 9 +-- .../components/confirm-plan-change-dialog.tsx | 2 +- .../components/add-project-dialog.tsx | 2 +- .../components/delete-project-dialog.tsx | 2 +- .../components/edit-project-dialog.tsx | 2 +- .../components/remove-member-dialog.tsx | 2 +- .../security/components/add-domain-dialog.tsx | 2 +- .../components/delete-domain-dialog.tsx | 2 +- .../components/verify-domain-dialog.tsx | 2 +- .../components/add-service-account-dialog.tsx | 2 +- .../delete-service-account-dialog.module.css | 3 - .../delete-service-account-dialog.tsx | 58 +++++++------- .../manage-project-access-dialog.tsx | 2 +- .../components/revoke-token-dialog.module.css | 3 - .../components/revoke-token-dialog.tsx | 54 ++++++------- .../revoke-session-confirm-dialog.tsx | 8 +- .../components/revoke-session-dialog.tsx | 28 +++---- .../teams/components/add-team-dialog.tsx | 2 +- .../teams/components/delete-team-dialog.tsx | 48 ++++++------ .../teams/components/edit-team-dialog.tsx | 2 +- .../teams/components/remove-member-dialog.tsx | 2 +- .../tokens/components/add-tokens-dialog.tsx | 2 +- 48 files changed, 262 insertions(+), 253 deletions(-) delete mode 100644 web/sdk/react/views-new/general/components/delete-organization-dialog.module.css delete mode 100644 web/sdk/react/views-new/pat/components/revoke-pat-dialog.module.css delete mode 100644 web/sdk/react/views-new/service-accounts/components/delete-service-account-dialog.module.css delete mode 100644 web/sdk/react/views-new/service-accounts/components/revoke-token-dialog.module.css diff --git a/web/apps/admin/package.json b/web/apps/admin/package.json index 0e117e61e..6c691984c 100644 --- a/web/apps/admin/package.json +++ b/web/apps/admin/package.json @@ -17,7 +17,7 @@ "@hookform/resolvers": "^3.0.1", "@radix-ui/react-form": "^0.1.8", "@radix-ui/react-icons": "^1.3.0", - "@raystack/apsara": "1.0.0-rc.6", + "@raystack/apsara": "1.0.0-rc.8", "@raystack/frontier": "workspace:^", "@raystack/proton": "0.1.0-859ba765e6cfd44736ddcf42664b742fe7fd916e", "@stitches/react": "^1.2.8", diff --git a/web/apps/admin/src/components/assign-role.tsx b/web/apps/admin/src/components/assign-role.tsx index 7d064a032..524337bb7 100644 --- a/web/apps/admin/src/components/assign-role.tsx +++ b/web/apps/admin/src/components/assign-role.tsx @@ -148,7 +148,7 @@ export const AssignRole = ({ return ( - + Assign Role diff --git a/web/apps/client-demo/package.json b/web/apps/client-demo/package.json index 7c084f132..1463546c8 100644 --- a/web/apps/client-demo/package.json +++ b/web/apps/client-demo/package.json @@ -9,7 +9,7 @@ }, "dependencies": { "@radix-ui/react-icons": "^1.3.0", - "@raystack/apsara": "1.0.0-rc.6", + "@raystack/apsara": "1.0.0-rc.8", "@raystack/frontier": "workspace:^", "react": "^19.2.1", "react-dom": "^19.2.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 0050cb736..10386c2a5 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -55,8 +55,8 @@ importers: specifier: ^1.3.0 version: 1.3.2(react@19.2.4) '@raystack/apsara': - specifier: 1.0.0-rc.6 - version: 1.0.0-rc.6(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: 1.0.0-rc.8 + version: 1.0.0-rc.8(@date-fns/tz@1.4.1)(@types/react@19.2.14)(date-fns@4.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@raystack/frontier': specifier: workspace:^ version: link:../../sdk @@ -161,8 +161,8 @@ importers: specifier: ^1.3.0 version: 1.3.2(react@19.2.4) '@raystack/apsara': - specifier: 1.0.0-rc.6 - version: 1.0.0-rc.6(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: 1.0.0-rc.8 + version: 1.0.0-rc.8(@date-fns/tz@1.4.1)(@types/react@19.2.14)(date-fns@4.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@raystack/frontier': specifier: workspace:^ version: link:../../sdk @@ -222,8 +222,8 @@ importers: specifier: ^3.10.0 version: 3.10.0(react-hook-form@7.71.2(react@19.2.4)) '@raystack/apsara-v1': - specifier: npm:@raystack/apsara@1.0.0-rc.6 - version: '@raystack/apsara@1.0.0-rc.6(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)' + specifier: npm:@raystack/apsara@1.0.0-rc.8 + version: '@raystack/apsara@1.0.0-rc.8(@date-fns/tz@1.4.1)(@types/react@19.2.14)(date-fns@4.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)' '@raystack/proton': specifier: 0.1.0-859ba765e6cfd44736ddcf42664b742fe7fd916e version: 0.1.0-859ba765e6cfd44736ddcf42664b742fe7fd916e(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -577,6 +577,10 @@ packages: resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} + engines: {node: '>=6.9.0'} + '@babel/template@7.28.6': resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} @@ -589,16 +593,22 @@ packages: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - '@base-ui/react@1.3.0': - resolution: {integrity: sha512-FwpKqZbPz14AITp1CVgf4AjhKPe1OeeVKSBMdgD10zbFlj3QSWelmtCMLi2+/PFZZcIm3l87G7rwtCZJwHyXWA==} + '@base-ui/react@1.4.1': + resolution: {integrity: sha512-Ab5/LIhcmL8BQcsBUYiOfkSDRdLpvgUBzMK30cu684JPcLclYlztharvCZyNNgzJtbAiREzI9q0pI5erHCMgCw==} engines: {node: '>=14.0.0'} peerDependencies: + '@date-fns/tz': ^1.2.0 '@types/react': ^17 || ^18 || ^19 + date-fns: ^4.0.0 react: ^17 || ^18 || ^19 react-dom: ^17 || ^18 || ^19 peerDependenciesMeta: + '@date-fns/tz': + optional: true '@types/react': optional: true + date-fns: + optional: true '@base-ui/utils@0.2.6': resolution: {integrity: sha512-yQ+qeuqohwhsNpoYDqqXaLllYAkPCP4vYdDrVo8FQXaAPfHWm1pG/Vm+jmGTA5JFS0BAIjookyapuJFY8F9PIw==} @@ -610,6 +620,16 @@ packages: '@types/react': optional: true + '@base-ui/utils@0.2.8': + resolution: {integrity: sha512-jvOi+c+ftGlGotNcKnzPVg2IhCaDTB6/6R3JeqdjdXktuAJi3wKH9T7+svuaKh1mmfVU11UWzUZVH74JDfi/wQ==} + peerDependencies: + '@types/react': ^17 || ^18 || ^19 + react: ^17 || ^18 || ^19 + react-dom: ^17 || ^18 || ^19 + peerDependenciesMeta: + '@types/react': + optional: true + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -2220,8 +2240,8 @@ packages: '@types/react': optional: true - '@raystack/apsara@1.0.0-rc.6': - resolution: {integrity: sha512-DWo5DVZbh5SND5XoKFKFlMlVYtHCnT3w+S7irbKAImV3N+aIeDoNeLa7bUAGzQfWpsm/jbwAwhEkuVqbnJEdmA==} + '@raystack/apsara@1.0.0-rc.8': + resolution: {integrity: sha512-eJz0HxTb/81Jv3/ThQhptDLI6PXzoISa3X6D+t8I46OzCkcC4A9swBzkgDBWYN4R2O01C8g8uxzXLyQXnXl3gQ==} engines: {node: '>=22'} peerDependencies: '@types/react': ^19 @@ -6882,9 +6902,6 @@ packages: resolution: {integrity: sha512-6tDOXSHiVjuCaasQSWTmHUWn4PuG7qa3+1WT031yTc/swT7+rLiw3GOrFxaH1E3lLP09dH3bVuVDf2gK5rxG3Q==} engines: {node: '>=0.10'} - tabbable@6.4.0: - resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} - term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -7772,6 +7789,8 @@ snapshots: '@babel/runtime@7.28.6': {} + '@babel/runtime@7.29.2': {} + '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.0 @@ -7795,18 +7814,19 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@base-ui/react@1.3.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@base-ui/react@1.4.1(@date-fns/tz@1.4.1)(@types/react@19.2.14)(date-fns@4.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@babel/runtime': 7.28.6 - '@base-ui/utils': 0.2.6(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@babel/runtime': 7.29.2 + '@base-ui/utils': 0.2.8(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@floating-ui/utils': 0.2.11 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - tabbable: 6.4.0 use-sync-external-store: 1.6.0(react@19.2.4) optionalDependencies: + '@date-fns/tz': 1.4.1 '@types/react': 19.2.14 + date-fns: 4.1.0 '@base-ui/utils@0.2.6(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: @@ -7819,6 +7839,17 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 + '@base-ui/utils@0.2.8(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@babel/runtime': 7.29.2 + '@floating-ui/utils': 0.2.11 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + reselect: 5.1.1 + use-sync-external-store: 1.6.0(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@bcoe/v8-coverage@0.2.3': {} '@bufbuild/protobuf@2.11.0': {} @@ -9518,9 +9549,9 @@ snapshots: transitivePeerDependencies: - '@types/react-dom' - '@raystack/apsara@1.0.0-rc.6(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@raystack/apsara@1.0.0-rc.8(@date-fns/tz@1.4.1)(@types/react@19.2.14)(date-fns@4.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@base-ui/react': 1.3.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@base-ui/react': 1.4.1(@date-fns/tz@1.4.1)(@types/react@19.2.14)(date-fns@4.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@base-ui/utils': 0.2.6(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-icons': 1.3.2(react@19.2.4) '@tanstack/match-sorter-utils': 8.19.4 @@ -9536,6 +9567,9 @@ snapshots: react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 + transitivePeerDependencies: + - '@date-fns/tz' + - date-fns '@raystack/proton@0.1.0-859ba765e6cfd44736ddcf42664b742fe7fd916e(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.21(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: @@ -14922,8 +14956,6 @@ snapshots: symbol-observable@3.0.0: {} - tabbable@6.4.0: {} - term-size@2.2.1: {} terminal-link@2.1.1: diff --git a/web/sdk/admin/components/AssignRole.tsx b/web/sdk/admin/components/AssignRole.tsx index 6fdba16d7..cb5f42df6 100644 --- a/web/sdk/admin/components/AssignRole.tsx +++ b/web/sdk/admin/components/AssignRole.tsx @@ -95,7 +95,7 @@ export const AssignRole = ({ return ( - + Assign Role diff --git a/web/sdk/admin/views/organizations/details/layout/add-tokens-dialog.tsx b/web/sdk/admin/views/organizations/details/layout/add-tokens-dialog.tsx index 0b608f437..0510a6e87 100644 --- a/web/sdk/admin/views/organizations/details/layout/add-tokens-dialog.tsx +++ b/web/sdk/admin/views/organizations/details/layout/add-tokens-dialog.tsx @@ -98,7 +98,7 @@ export const AddTokensDialog = ({ onOpenChange }: InviteUsersDialogProps) => { return ( - +
diff --git a/web/sdk/admin/views/organizations/details/members/remove-member.tsx b/web/sdk/admin/views/organizations/details/members/remove-member.tsx index 91a427cfa..28f02f866 100644 --- a/web/sdk/admin/views/organizations/details/members/remove-member.tsx +++ b/web/sdk/admin/views/organizations/details/members/remove-member.tsx @@ -53,7 +53,7 @@ export const RemoveMember = ({ return ( - + Remove {t.member({ case: "capital" })} diff --git a/web/sdk/admin/views/organizations/details/projects/members/assign-role.tsx b/web/sdk/admin/views/organizations/details/projects/members/assign-role.tsx index 459ef4f06..58a74e37c 100644 --- a/web/sdk/admin/views/organizations/details/projects/members/assign-role.tsx +++ b/web/sdk/admin/views/organizations/details/projects/members/assign-role.tsx @@ -92,7 +92,6 @@ export const AssignRole = ({ return ( diff --git a/web/sdk/admin/views/organizations/details/projects/members/remove-member.tsx b/web/sdk/admin/views/organizations/details/projects/members/remove-member.tsx index 48b1446e8..6317795f8 100644 --- a/web/sdk/admin/views/organizations/details/projects/members/remove-member.tsx +++ b/web/sdk/admin/views/organizations/details/projects/members/remove-member.tsx @@ -59,7 +59,6 @@ export const RemoveMember = ({ return ( diff --git a/web/sdk/admin/views/organizations/details/projects/rename-project.tsx b/web/sdk/admin/views/organizations/details/projects/rename-project.tsx index 7c0f015a1..74adb4381 100644 --- a/web/sdk/admin/views/organizations/details/projects/rename-project.tsx +++ b/web/sdk/admin/views/organizations/details/projects/rename-project.tsx @@ -80,7 +80,6 @@ export function RenameProjectDialog({ return ( diff --git a/web/sdk/admin/views/organizations/details/security/block-organization.tsx b/web/sdk/admin/views/organizations/details/security/block-organization.tsx index d3166f898..679dcc822 100644 --- a/web/sdk/admin/views/organizations/details/security/block-organization.tsx +++ b/web/sdk/admin/views/organizations/details/security/block-organization.tsx @@ -137,13 +137,13 @@ const BlockOrganizationDialog = () => { } /> - - + + {componentConfig.dialogTitle} {componentConfig.dialogDescription} - + } /> - - + + Delete email domain Are you sure you want to delete this email domain? - + - + Suspend {t.user({ case: "capital" })} diff --git a/web/sdk/admin/views/users/details/security/block-user.tsx b/web/sdk/admin/views/users/details/security/block-user.tsx index 6b296e268..e0f48c864 100644 --- a/web/sdk/admin/views/users/details/security/block-user.tsx +++ b/web/sdk/admin/views/users/details/security/block-user.tsx @@ -134,11 +134,11 @@ export const BlockUserDialog = () => { } /> - - + + {config.dialogTitle} {config.dialogDescription} - + - + Crop your photo diff --git a/web/sdk/react/views-new/billing/components/confirm-cycle-switch-dialog.tsx b/web/sdk/react/views-new/billing/components/confirm-cycle-switch-dialog.tsx index c9db04574..7bdb2e474 100644 --- a/web/sdk/react/views-new/billing/components/confirm-cycle-switch-dialog.tsx +++ b/web/sdk/react/views-new/billing/components/confirm-cycle-switch-dialog.tsx @@ -214,7 +214,7 @@ function ConfirmCycleSwitchContent({ } return ( - + Switch billing cycle diff --git a/web/sdk/react/views-new/general/components/delete-organization-dialog.module.css b/web/sdk/react/views-new/general/components/delete-organization-dialog.module.css deleted file mode 100644 index 9f0acf3ed..000000000 --- a/web/sdk/react/views-new/general/components/delete-organization-dialog.module.css +++ /dev/null @@ -1,3 +0,0 @@ -.deleteButton { - width: 100%; -} diff --git a/web/sdk/react/views-new/general/components/delete-organization-dialog.tsx b/web/sdk/react/views-new/general/components/delete-organization-dialog.tsx index 83a4d2fae..edff67f85 100644 --- a/web/sdk/react/views-new/general/components/delete-organization-dialog.tsx +++ b/web/sdk/react/views-new/general/components/delete-organization-dialog.tsx @@ -9,18 +9,17 @@ import { DeleteOrganizationRequestSchema } from '@raystack/proton/frontier'; import { + AlertDialog, Button, Checkbox, - Text, - Flex, - Dialog, Field, + Flex, Input, + Text, toastManager } from '@raystack/apsara-v1'; import { useFrontier } from '../../../contexts/FrontierContext'; import { useTerminology } from '../../../hooks/useTerminology'; -import styles from './delete-organization-dialog.module.css'; import { handleConnectError } from '~/utils/error'; const deleteOrgSchema = yup @@ -91,16 +90,14 @@ export const DeleteOrganizationDialog = ({ } return ( - - - - - Verify {orgLabel} deletion - - + + - - + + Delete {orgLabel} + + + This action can not be undone. This will permanently delete all the projects and resources in {organization?.title}. @@ -130,22 +127,35 @@ export const DeleteOrganizationDialog = ({ {orgLabel} data will be deleted and want to proceed. - - + + + + Cancel + + } + /> + + - - + + ); }; diff --git a/web/sdk/react/views-new/members/components/remove-member-dialog.tsx b/web/sdk/react/views-new/members/components/remove-member-dialog.tsx index 4aa2e2b4a..95fd1fd6d 100644 --- a/web/sdk/react/views-new/members/components/remove-member-dialog.tsx +++ b/web/sdk/react/views-new/members/components/remove-member-dialog.tsx @@ -92,7 +92,7 @@ export function RemoveMemberDialog({ handle, refetch }: RemoveMemberDialogProps) {({ payload: rawPayload }) => { const payload = rawPayload as RemoveMemberPayload | undefined; return ( - + Remove member? diff --git a/web/sdk/react/views-new/members/components/update-role-dialog.tsx b/web/sdk/react/views-new/members/components/update-role-dialog.tsx index d2b3504ec..24e3bbf61 100644 --- a/web/sdk/react/views-new/members/components/update-role-dialog.tsx +++ b/web/sdk/react/views-new/members/components/update-role-dialog.tsx @@ -11,10 +11,8 @@ import { } from '@raystack/proton/frontier'; import type { Role, Policy } from '@raystack/proton/frontier'; import { + AlertDialog, Button, - Text, - Dialog, - Flex, toastManager } from '@raystack/apsara-v1'; import { handleConnectError } from '~/utils/error'; @@ -22,7 +20,7 @@ import { handleConnectError } from '~/utils/error'; export type UpdateRolePayload = { memberId: string; role: Role }; export interface UpdateRoleDialogProps { - handle: ReturnType>; + handle: ReturnType>; organizationId: string; refetch: () => void; } @@ -35,7 +33,7 @@ export function UpdateRoleDialog({ handle, organizationId, refetch }: UpdateRole }; return ( - + {({ payload: rawPayload }) => { const payload = rawPayload as UpdateRolePayload | undefined; return payload ? ( @@ -46,7 +44,7 @@ export function UpdateRoleDialog({ handle, organizationId, refetch }: UpdateRole /> ) : null; }} - + ); } @@ -129,42 +127,36 @@ function UpdateRoleContent({ }; return ( - - - - - Update role - - - This will grant additional permissions to the user based on the new - role. - - - - - - - - - - + + + Update role + + This will grant additional permissions to the user based on the new + role. + + + + + + + ); } diff --git a/web/sdk/react/views-new/members/members-view.tsx b/web/sdk/react/views-new/members/members-view.tsx index 74157b69f..3d3cafd20 100644 --- a/web/sdk/react/views-new/members/members-view.tsx +++ b/web/sdk/react/views-new/members/members-view.tsx @@ -3,6 +3,7 @@ import { useMemo, useState } from 'react'; import { ExclamationTriangleIcon, UpdateIcon } from '@radix-ui/react-icons'; import { + AlertDialog, Button, Tooltip, Skeleton, @@ -31,7 +32,7 @@ import styles from './members-view.module.css'; const memberMenuHandle = Menu.createHandle(); const inviteDialogHandle = Dialog.createHandle(); const removeMemberDialogHandle = Dialog.createHandle(); -const updateRoleDialogHandle = Dialog.createHandle(); +const updateRoleDialogHandle = AlertDialog.createHandle(); export interface MembersViewProps { showTeamField?: boolean; diff --git a/web/sdk/react/views-new/pat/components/pat-created-dialog.tsx b/web/sdk/react/views-new/pat/components/pat-created-dialog.tsx index 42b05071a..9938bb5a7 100644 --- a/web/sdk/react/views-new/pat/components/pat-created-dialog.tsx +++ b/web/sdk/react/views-new/pat/components/pat-created-dialog.tsx @@ -35,7 +35,7 @@ export function PATCreatedDialog({ handle, onClose }: PATCreatedDialogProps) { ? 'Your personal access token has been regenerated successfully. Please copy and store it securely.' : 'Successfully added a new personal access token. Please copy the token.'; return ( - + Success diff --git a/web/sdk/react/views-new/pat/components/pat-form-dialog.tsx b/web/sdk/react/views-new/pat/components/pat-form-dialog.tsx index feb3d2f52..7db108e08 100644 --- a/web/sdk/react/views-new/pat/components/pat-form-dialog.tsx +++ b/web/sdk/react/views-new/pat/components/pat-form-dialog.tsx @@ -338,7 +338,7 @@ export function PATFormDialog({ return ( - +
diff --git a/web/sdk/react/views-new/pat/components/regenerate-pat-dialog.tsx b/web/sdk/react/views-new/pat/components/regenerate-pat-dialog.tsx index 18c0aaf4b..49cd8ddc8 100644 --- a/web/sdk/react/views-new/pat/components/regenerate-pat-dialog.tsx +++ b/web/sdk/react/views-new/pat/components/regenerate-pat-dialog.tsx @@ -102,7 +102,7 @@ export function RegeneratePATDialog({ expiryValue || payload?.currentExpiryValue || ''; const patId = payload?.patId; return ( - + Regenerate Expiry date diff --git a/web/sdk/react/views-new/pat/components/revoke-pat-dialog.module.css b/web/sdk/react/views-new/pat/components/revoke-pat-dialog.module.css deleted file mode 100644 index 6742c54f4..000000000 --- a/web/sdk/react/views-new/pat/components/revoke-pat-dialog.module.css +++ /dev/null @@ -1,3 +0,0 @@ -.body { - border-bottom: none !important; -} diff --git a/web/sdk/react/views-new/pat/components/revoke-pat-dialog.tsx b/web/sdk/react/views-new/pat/components/revoke-pat-dialog.tsx index 6cccf0e96..735cc10d1 100644 --- a/web/sdk/react/views-new/pat/components/revoke-pat-dialog.tsx +++ b/web/sdk/react/views-new/pat/components/revoke-pat-dialog.tsx @@ -8,7 +8,6 @@ import { DeleteCurrentUserPATRequestSchema } from '@raystack/proton/frontier'; import { AlertDialog, Button, toastManager } from '@raystack/apsara-v1'; -import styles from './revoke-pat-dialog.module.css'; import { handleConnectError } from '~/utils/error'; export interface RevokePATDialogProps { @@ -49,16 +48,16 @@ export function RevokePATDialog({ handle, onRevoked }: RevokePATDialogProps) { return ( {({ payload: patId }) => ( - - + + Revoke This action cannot be undone. Revoking this token will permanently remove access for any users using it. You'll need to generate a new token if access is required again. - - + + - - + + ); diff --git a/web/sdk/react/views-new/service-accounts/components/manage-project-access-dialog.tsx b/web/sdk/react/views-new/service-accounts/components/manage-project-access-dialog.tsx index 54c6d2e3b..717fa8f8a 100644 --- a/web/sdk/react/views-new/service-accounts/components/manage-project-access-dialog.tsx +++ b/web/sdk/react/views-new/service-accounts/components/manage-project-access-dialog.tsx @@ -339,7 +339,7 @@ export function ManageProjectAccessDialog({ return ( - + Manage Project Access diff --git a/web/sdk/react/views-new/service-accounts/components/revoke-token-dialog.module.css b/web/sdk/react/views-new/service-accounts/components/revoke-token-dialog.module.css deleted file mode 100644 index 6742c54f4..000000000 --- a/web/sdk/react/views-new/service-accounts/components/revoke-token-dialog.module.css +++ /dev/null @@ -1,3 +0,0 @@ -.body { - border-bottom: none !important; -} diff --git a/web/sdk/react/views-new/service-accounts/components/revoke-token-dialog.tsx b/web/sdk/react/views-new/service-accounts/components/revoke-token-dialog.tsx index 4828901ba..dc7967f0f 100644 --- a/web/sdk/react/views-new/service-accounts/components/revoke-token-dialog.tsx +++ b/web/sdk/react/views-new/service-accounts/components/revoke-token-dialog.tsx @@ -9,14 +9,12 @@ import { } from '@raystack/proton/frontier'; import { Button, - Text, AlertDialog, Flex, toastManager } from '@raystack/apsara-v1'; import { useFrontier } from '~/react/contexts/FrontierContext'; import { useTerminology } from '~/react/hooks/useTerminology'; -import styles from './revoke-token-dialog.module.css'; export type RevokeTokenPayload = { tokenId: string }; @@ -69,38 +67,36 @@ export function RevokeTokenDialog({ {({ payload: rawPayload }) => { const payload = rawPayload as RevokeTokenPayload | undefined; return ( - - + + Revoke API Key - + This is an irreversible action doing this might lead to discontinuation of access to the {t.appName()} features. Do you wish to proceed? - - + + - - - - + + ); diff --git a/web/sdk/react/views-new/sessions/components/revoke-session-confirm-dialog.tsx b/web/sdk/react/views-new/sessions/components/revoke-session-confirm-dialog.tsx index 5b8ee89ab..ff0eab2a3 100644 --- a/web/sdk/react/views-new/sessions/components/revoke-session-confirm-dialog.tsx +++ b/web/sdk/react/views-new/sessions/components/revoke-session-confirm-dialog.tsx @@ -21,16 +21,16 @@ export const RevokeSessionConfirmDialog = ({ return ( - - + + {isCurrentSession ? 'Log out' : 'Revoke'} Are you sure you want to {isCurrentSession ? 'log out' : 'revoke'} of this session? This action cannot be undone. - - + + - - - + + + - + Add Team diff --git a/web/sdk/react/views-new/teams/components/delete-team-dialog.tsx b/web/sdk/react/views-new/teams/components/delete-team-dialog.tsx index 889c83cb8..408eb95ea 100644 --- a/web/sdk/react/views-new/teams/components/delete-team-dialog.tsx +++ b/web/sdk/react/views-new/teams/components/delete-team-dialog.tsx @@ -61,7 +61,7 @@ export function DeleteTeamDialog({ handle, refetch }: DeleteTeamDialogProps) { {({ payload: rawPayload }) => { const payload = rawPayload as DeleteTeamPayload | undefined; return ( - + Delete Team @@ -73,30 +73,28 @@ export function DeleteTeamDialog({ handle, refetch }: DeleteTeamDialogProps) { - - - - + + ); diff --git a/web/sdk/react/views-new/teams/components/edit-team-dialog.tsx b/web/sdk/react/views-new/teams/components/edit-team-dialog.tsx index c0e6af902..888673623 100644 --- a/web/sdk/react/views-new/teams/components/edit-team-dialog.tsx +++ b/web/sdk/react/views-new/teams/components/edit-team-dialog.tsx @@ -47,7 +47,7 @@ export function EditTeamDialog({ handle, refetch }: EditTeamDialogProps) { {({ payload }) => { const p = payload as EditTeamPayload | undefined; return ( - + {p ? ( { const p = payload as RemoveMemberPayload | undefined; return ( - + {p ? ( - + Add tokens From d11d6fba375d25cae0bfe0a8ebbe1d439b91535e Mon Sep 17 00:00:00 2001 From: Rohan Chakraborty Date: Wed, 20 May 2026 02:28:53 +0530 Subject: [PATCH 5/6] fix: remove redundant footer styles --- .../components/delete-project-dialog.tsx | 47 +++++++++---------- .../components/remove-member-dialog.tsx | 43 ++++++++--------- .../components/delete-domain-dialog.tsx | 32 ++++++------- .../components/revoke-session-dialog.tsx | 2 +- .../teams/components/remove-member-dialog.tsx | 43 ++++++++--------- 5 files changed, 78 insertions(+), 89 deletions(-) diff --git a/web/sdk/react/views-new/projects/components/delete-project-dialog.tsx b/web/sdk/react/views-new/projects/components/delete-project-dialog.tsx index 2f47fb7b6..219661018 100644 --- a/web/sdk/react/views-new/projects/components/delete-project-dialog.tsx +++ b/web/sdk/react/views-new/projects/components/delete-project-dialog.tsx @@ -3,7 +3,6 @@ import { useState } from 'react'; import { Button, - Flex, Text, AlertDialog } from '@raystack/apsara-v1'; @@ -75,30 +74,28 @@ export function DeleteProjectDialog({ handle, refetch }: DeleteProjectDialogProp - - - - + + ); diff --git a/web/sdk/react/views-new/projects/components/remove-member-dialog.tsx b/web/sdk/react/views-new/projects/components/remove-member-dialog.tsx index 6003a3f08..896e8a9ed 100644 --- a/web/sdk/react/views-new/projects/components/remove-member-dialog.tsx +++ b/web/sdk/react/views-new/projects/components/remove-member-dialog.tsx @@ -3,7 +3,6 @@ import { useState } from 'react'; import { Button, - Flex, Text, AlertDialog } from '@raystack/apsara-v1'; @@ -113,28 +112,26 @@ function RemoveMemberForm({ - - - - + + ); diff --git a/web/sdk/react/views-new/security/components/delete-domain-dialog.tsx b/web/sdk/react/views-new/security/components/delete-domain-dialog.tsx index a87352268..6470944cc 100644 --- a/web/sdk/react/views-new/security/components/delete-domain-dialog.tsx +++ b/web/sdk/react/views-new/security/components/delete-domain-dialog.tsx @@ -188,23 +188,21 @@ function DeleteDomainContent({ - - {isDomainLoading ? ( - - ) : ( - - )} - + {isDomainLoading ? ( + + ) : ( + + )} diff --git a/web/sdk/react/views-new/sessions/components/revoke-session-dialog.tsx b/web/sdk/react/views-new/sessions/components/revoke-session-dialog.tsx index 1c3280d6c..fa6474200 100644 --- a/web/sdk/react/views-new/sessions/components/revoke-session-dialog.tsx +++ b/web/sdk/react/views-new/sessions/components/revoke-session-dialog.tsx @@ -106,7 +106,7 @@ export const RevokeSessionDialog = ({
- + - -
+ + ); From ba18bff4483099296a51cb68c172886ae221d7ba Mon Sep 17 00:00:00 2001 From: Rohan Chakraborty Date: Wed, 20 May 2026 02:42:21 +0530 Subject: [PATCH 6/6] fix: use updated role rpc --- .../members/components/update-role-dialog.tsx | 62 +++---------------- 1 file changed, 10 insertions(+), 52 deletions(-) diff --git a/web/sdk/react/views-new/members/components/update-role-dialog.tsx b/web/sdk/react/views-new/members/components/update-role-dialog.tsx index 24e3bbf61..2ecd719ff 100644 --- a/web/sdk/react/views-new/members/components/update-role-dialog.tsx +++ b/web/sdk/react/views-new/members/components/update-role-dialog.tsx @@ -2,14 +2,12 @@ import { useState } from 'react'; import { create } from '@bufbuild/protobuf'; -import { useMutation, useQuery } from '@connectrpc/connect-query'; +import { useMutation } from '@connectrpc/connect-query'; import { FrontierServiceQueries, - DeletePolicyRequestSchema, - CreatePolicyRequestSchema, - ListPoliciesRequestSchema + SetOrganizationMemberRoleRequestSchema } from '@raystack/proton/frontier'; -import type { Role, Policy } from '@raystack/proton/frontier'; +import type { Role } from '@raystack/proton/frontier'; import { AlertDialog, Button, @@ -59,59 +57,19 @@ function UpdateRoleContent({ }) { const [isLoading, setIsLoading] = useState(false); - const { data: policiesData } = useQuery( - FrontierServiceQueries.listPolicies, - create(ListPoliciesRequestSchema, { - orgId: organizationId, - userId: payload.memberId - }), - { enabled: !!payload.memberId && !!payload.role } - ); - - const { mutateAsync: deletePolicy } = useMutation( - FrontierServiceQueries.deletePolicy - ); - - const { mutateAsync: createPolicy } = useMutation( - FrontierServiceQueries.createPolicy + const { mutateAsync: setMemberRole } = useMutation( + FrontierServiceQueries.setOrganizationMemberRole ); const handleUpdate = async () => { setIsLoading(true); try { - const resource = `app/organization:${organizationId}`; - const principal = `app/user:${payload.memberId}`; - const policies = policiesData?.policies || []; - - const deleteResults = await Promise.allSettled( - policies.map((p: Policy) => { - const req = create(DeletePolicyRequestSchema, { - id: p.id as string - }); - return deletePolicy(req); - }) - ); - - const deleteErrors = deleteResults - .filter( - (result): result is PromiseRejectedResult => - result.status === 'rejected' - ) - .map(result => result.reason); - - if (deleteErrors.length > 0) { - console.warn('Some policy deletions failed:', deleteErrors); - } - - const createReq = create(CreatePolicyRequestSchema, { - body: { - roleId: payload.role.id as string, - title: payload.role.name as string, - resource, - principal - } + const req = create(SetOrganizationMemberRoleRequestSchema, { + orgId: organizationId, + userId: payload.memberId, + roleId: payload.role.id as string }); - await createPolicy(createReq); + await setMemberRole(req); toastManager.add({ title: 'Member role updated', type: 'success' }); onClose();