| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- import { useParams } from 'common'
- import { Search } from 'lucide-react'
- import { useState } from 'react'
- import { Admonition } from 'ui-patterns'
- import { Input } from 'ui-patterns/DataInputs/Input'
- import { InviteMemberButton } from './InviteMemberButton'
- import MembersView from './MembersView'
- import {
- ScaffoldActionsContainer,
- ScaffoldActionsGroup,
- ScaffoldContainer,
- ScaffoldFilterAndContent,
- ScaffoldSection,
- ScaffoldSectionContent,
- ScaffoldTitle,
- } from '@/components/layouts/Scaffold'
- import { DocsButton } from '@/components/ui/DocsButton'
- import { useOrganizationRolesV2Query } from '@/data/organization-members/organization-roles-query'
- import { useOrgProjectsInfiniteQuery } from '@/data/projects/org-projects-infinite-query'
- import { DOCS_URL } from '@/lib/constants'
- export const TeamSettings = () => {
- const { slug } = useParams()
- const [searchString, setSearchString] = useState('')
- const { data: roles } = useOrganizationRolesV2Query({ slug })
- const hasProjectScopedRoles = (roles?.project_scoped_roles ?? []).length > 0
- const { data } = useOrgProjectsInfiniteQuery({ slug })
- const totalCount = data?.pages[0].pagination.count ?? 0
- const threshold = 1000
- return (
- <ScaffoldContainer>
- <ScaffoldSection isFullWidth className="py-8! gap-y-8">
- <ScaffoldTitle>Team</ScaffoldTitle>
- <ScaffoldFilterAndContent>
- <ScaffoldActionsContainer className="w-full flex-col md:flex-row gap-2 justify-between">
- <Input
- size="tiny"
- autoComplete="off"
- icon={<Search />}
- value={searchString}
- onChange={(e: any) => setSearchString(e.target.value)}
- name="email"
- id="email"
- placeholder="Filter members"
- />
- <ScaffoldActionsGroup className="w-full md:w-auto">
- <DocsButton href={`${DOCS_URL}/guides/platform/access-control`} />
- <InviteMemberButton />
- </ScaffoldActionsGroup>
- </ScaffoldActionsContainer>
- {hasProjectScopedRoles && totalCount > threshold && (
- <Admonition
- type="warning"
- title="This page may not render properly due to the number of projects your account has access to"
- description="We're actively looking into optimizing this page and will make things available as soon as we can!"
- />
- )}
- <ScaffoldSectionContent className="w-full">
- <MembersView searchString={searchString} />
- </ScaffoldSectionContent>
- </ScaffoldFilterAndContent>
- </ScaffoldSection>
- </ScaffoldContainer>
- )
- }
|