1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-09-19 17:52:45 +02:00

chore: Bump biome and configure husky (#6589)

Upgrades biome to 1.6.1, and updates husky pre-commit hook.

Most changes here are making type imports explicit.
This commit is contained in:
Christopher Kolstad 2024-03-18 13:58:05 +01:00 committed by GitHub
parent f2c57f0fbd
commit 53354224fc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1819 changed files with 4956 additions and 4514 deletions

View File

@ -1,7 +1,4 @@
#!/usr/bin/env sh yarn lint-staged
. "$(dirname -- "$0")/_/husky.sh"
npx lint-staged
node .husky/update-openapi-spec-list.js node .husky/update-openapi-spec-list.js

View File

@ -1,5 +1,5 @@
{ {
"$schema": "https://biomejs.dev/schemas/1.5.1/schema.json", "$schema": "https://biomejs.dev/schemas/1.6.1/schema.json",
"linter": { "linter": {
"enabled": true, "enabled": true,
"rules": { "rules": {
@ -20,21 +20,21 @@
"noInferrableTypes": "off", "noInferrableTypes": "off",
"noUnusedTemplateLiteral": "off", "noUnusedTemplateLiteral": "off",
"useSingleVarDeclarator": "off", "useSingleVarDeclarator": "off",
"noUselessElse": "off" "noUselessElse": "off",
"useNodejsImportProtocol": "off"
}, },
"suspicious": { "suspicious": {
"noExplicitAny": "off", "noExplicitAny": "off",
"noExtraNonNullAssertion": "off", "noExtraNonNullAssertion": "off",
"noRedeclare": "off", "noRedeclare": "off",
"noPrototypeBuiltins": "off", "noPrototypeBuiltins": "off",
"noConfusingVoidType": "off" "noConfusingVoidType": "off",
"noArrayIndexKey": "off",
"noThenProperty": "off"
}, },
"performance": { "performance": {
"noAccumulatingSpread": "off", "noAccumulatingSpread": "off",
"noDelete": "off" "noDelete": "off"
},
"nursery": {
"noUnusedImports": "warn"
} }
}, },
"ignore": [ "ignore": [

View File

@ -76,7 +76,7 @@ describe('project overview', () => {
cy.get(counter) cy.get(counter)
.invoke('text') .invoke('text')
.then((text) => { .then((text) => {
const number = parseFloat(text); const number = Number.parseFloat(text);
expect(number).to.be.at.least(2); expect(number).to.be.at.least(2);
}); });
cy.get(selectAll).click(); cy.get(selectAll).click();
@ -110,7 +110,7 @@ describe('project overview', () => {
cy.get(counter) cy.get(counter)
.invoke('text') .invoke('text')
.then((text) => { .then((text) => {
const number = parseFloat(text); const number = Number.parseFloat(text);
expect(number).to.be.at.least(2); expect(number).to.be.at.least(2);
}); });
cy.get('table td') cy.get('table td')

View File

@ -2,10 +2,7 @@
"name": "unleash-frontend-local", "name": "unleash-frontend-local",
"version": "0.0.0", "version": "0.0.0",
"private": true, "private": true,
"files": [ "files": ["index.js", "build"],
"index.js",
"build"
],
"engines": { "engines": {
"node": ">=18" "node": ">=18"
}, },
@ -37,7 +34,7 @@
"gen:api:clean": "yarn gen:api && rm -rf src/openapi/apis && sed -i.bak '1q' src/openapi/index.ts && rm src/openapi/index.ts.bak" "gen:api:clean": "yarn gen:api && rm -rf src/openapi/apis && sed -i.bak '1q' src/openapi/index.ts && rm src/openapi/index.ts.bak"
}, },
"devDependencies": { "devDependencies": {
"@biomejs/biome": "1.5.1", "@biomejs/biome": "1.6.1",
"@codemirror/lang-json": "6.0.1", "@codemirror/lang-json": "6.0.1",
"@emotion/react": "11.11.4", "@emotion/react": "11.11.4",
"@emotion/styled": "11.11.0", "@emotion/styled": "11.11.0",
@ -146,11 +143,7 @@
} }
}, },
"browserslist": { "browserslist": {
"production": [ "production": [">0.2%", "not dead", "not op_mini all"],
">0.2%",
"not dead",
"not op_mini all"
],
"development": [ "development": [
"last 1 chrome version", "last 1 chrome version",
"last 1 firefox version", "last 1 firefox version",

View File

@ -1,8 +1,8 @@
import { PageContent } from 'component/common/PageContent/PageContent'; import { PageContent } from 'component/common/PageContent/PageContent';
import { PageHeader } from 'component/common/PageHeader/PageHeader'; import { PageHeader } from 'component/common/PageHeader/PageHeader';
import { VFC } from 'react'; import type { VFC } from 'react';
import { adminGroups } from './adminRoutes'; import { adminGroups } from './adminRoutes';
import { INavigationMenuItem } from 'interfaces/route'; import type { INavigationMenuItem } from 'interfaces/route';
import { Box, Link, Typography } from '@mui/material'; import { Box, Link, Typography } from '@mui/material';
import { Link as RouterLink } from 'react-router-dom'; import { Link as RouterLink } from 'react-router-dom';
import { useAdminRoutes } from './useAdminRoutes'; import { useAdminRoutes } from './useAdminRoutes';

View File

@ -1,4 +1,4 @@
import { INavigationMenuItem } from 'interfaces/route'; import type { INavigationMenuItem } from 'interfaces/route';
export const adminGroups: Record<string, string> = { export const adminGroups: Record<string, string> = {
users: 'User administration', users: 'User administration',

View File

@ -1,5 +1,6 @@
import { Alert, Link } from '@mui/material'; import { Alert, Link } from '@mui/material';
import React, { ReactNode } from 'react'; import type React from 'react';
import type { ReactNode } from 'react';
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { CancelButton, StyledBox, StyledForm } from './ApiTokenForm.styles'; import { CancelButton, StyledBox, StyledForm } from './ApiTokenForm.styles';

View File

@ -1,6 +1,6 @@
import { TokenType } from '../../../../../interfaces/token'; import { TokenType } from '../../../../../interfaces/token';
import KeyboardArrowDownOutlined from '@mui/icons-material/KeyboardArrowDownOutlined'; import KeyboardArrowDownOutlined from '@mui/icons-material/KeyboardArrowDownOutlined';
import React from 'react'; import type React from 'react';
import { import {
StyledInputDescription, StyledInputDescription,
StyledSelectInput, StyledSelectInput,

View File

@ -1,9 +1,9 @@
import { SelectProjectInput } from './SelectProjectInput/SelectProjectInput'; import { SelectProjectInput } from './SelectProjectInput/SelectProjectInput';
import { TokenType } from '../../../../../interfaces/token'; import { TokenType } from '../../../../../interfaces/token';
import React from 'react'; import type React from 'react';
import { StyledInputDescription } from '../ApiTokenForm.styles'; import { StyledInputDescription } from '../ApiTokenForm.styles';
import useProjects from 'hooks/api/getters/useProjects/useProjects'; import useProjects from 'hooks/api/getters/useProjects/useProjects';
import { ApiTokenFormErrorType } from '../useApiTokenForm'; import type { ApiTokenFormErrorType } from '../useApiTokenForm';
import { useOptionalPathParam } from 'hooks/useOptionalPathParam'; import { useOptionalPathParam } from 'hooks/useOptionalPathParam';
interface IProjectSelectorProps { interface IProjectSelectorProps {

View File

@ -1,4 +1,4 @@
import { FC } from 'react'; import type { FC } from 'react';
import { Box, Link, styled } from '@mui/material'; import { Box, Link, styled } from '@mui/material';
type SelectAllButtonProps = { type SelectAllButtonProps = {

View File

@ -3,7 +3,7 @@ import { screen, waitFor, within } from '@testing-library/react';
import userEvent from '@testing-library/user-event'; import userEvent from '@testing-library/user-event';
import { render } from 'utils/testRenderer'; import { render } from 'utils/testRenderer';
import { import {
ISelectProjectInputProps, type ISelectProjectInputProps,
SelectProjectInput, SelectProjectInput,
} from './SelectProjectInput'; } from './SelectProjectInput';
import { testServerRoute, testServerSetup } from 'utils/testServer'; import { testServerRoute, testServerSetup } from 'utils/testServer';

View File

@ -1,4 +1,4 @@
import { Fragment, useState, ChangeEvent, VFC } from 'react'; import { Fragment, useState, type ChangeEvent, type VFC } from 'react';
import { import {
Checkbox, Checkbox,
FormControlLabel, FormControlLabel,
@ -9,7 +9,7 @@ import {
} from '@mui/material'; } from '@mui/material';
import { Autocomplete } from '@mui/material'; import { Autocomplete } from '@mui/material';
import { import type {
AutocompleteRenderGroupParams, AutocompleteRenderGroupParams,
AutocompleteRenderInputParams, AutocompleteRenderInputParams,
AutocompleteRenderOptionState, AutocompleteRenderOptionState,
@ -17,7 +17,7 @@ import {
import CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank'; import CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank';
import CheckBoxIcon from '@mui/icons-material/CheckBox'; import CheckBoxIcon from '@mui/icons-material/CheckBox';
import { IAutocompleteBoxOption } from 'component/common/AutocompleteBox/AutocompleteBox'; import type { IAutocompleteBoxOption } from 'component/common/AutocompleteBox/AutocompleteBox';
import { SelectAllButton } from './SelectAllButton/SelectAllButton'; import { SelectAllButton } from './SelectAllButton/SelectAllButton';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';

View File

@ -1,6 +1,6 @@
import React from 'react'; import type React from 'react';
import { StyledInput, StyledInputDescription } from '../ApiTokenForm.styles'; import { StyledInput, StyledInputDescription } from '../ApiTokenForm.styles';
import { ApiTokenFormErrorType } from '../useApiTokenForm'; import type { ApiTokenFormErrorType } from '../useApiTokenForm';
interface ITokenInfoProps { interface ITokenInfoProps {
username: string; username: string;

View File

@ -7,7 +7,7 @@ import {
RadioGroup, RadioGroup,
Typography, Typography,
} from '@mui/material'; } from '@mui/material';
import { TokenType } from 'interfaces/token'; import type { TokenType } from 'interfaces/token';
export type SelectOption = { export type SelectOption = {
key: string; key: string;

View File

@ -1,7 +1,7 @@
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
import { useEnvironments } from 'hooks/api/getters/useEnvironments/useEnvironments'; import { useEnvironments } from 'hooks/api/getters/useEnvironments/useEnvironments';
import { IApiTokenCreate } from 'hooks/api/actions/useApiTokensApi/useApiTokensApi'; import type { IApiTokenCreate } from 'hooks/api/actions/useApiTokensApi/useApiTokensApi';
import { TokenType } from 'interfaces/token'; import { TokenType } from 'interfaces/token';
import { import {
ADMIN, ADMIN,
@ -10,7 +10,7 @@ import {
CREATE_PROJECT_API_TOKEN, CREATE_PROJECT_API_TOKEN,
} from '@server/types/permissions'; } from '@server/types/permissions';
import { useHasRootAccess } from 'hooks/useHasAccess'; import { useHasRootAccess } from 'hooks/useHasAccess';
import { SelectOption } from './TokenTypeSelector/TokenTypeSelector'; import type { SelectOption } from './TokenTypeSelector/TokenTypeSelector';
import { useUiFlag } from '../../../../hooks/useUiFlag'; import { useUiFlag } from '../../../../hooks/useUiFlag';
export type ApiTokenFormErrorType = 'username' | 'projects'; export type ApiTokenFormErrorType = 'username' | 'projects';

View File

@ -2,7 +2,7 @@ import { styled } from '@mui/material';
import { Highlighter } from 'component/common/Highlighter/Highlighter'; import { Highlighter } from 'component/common/Highlighter/Highlighter';
import { TextCell } from 'component/common/Table/cells/TextCell/TextCell'; import { TextCell } from 'component/common/Table/cells/TextCell/TextCell';
import { useSearchHighlightContext } from 'component/common/Table/SearchHighlightContext/SearchHighlightContext'; import { useSearchHighlightContext } from 'component/common/Table/SearchHighlightContext/SearchHighlightContext';
import { Fragment, VFC } from 'react'; import { Fragment, type VFC } from 'react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
const StyledLink = styled(Link)(({ theme }) => ({ const StyledLink = styled(Link)(({ theme }) => ({

View File

@ -113,7 +113,6 @@ export const AuthSettings = () => {
<div> <div>
{tabs.map((tab, index) => ( {tabs.map((tab, index) => (
<TabPanel <TabPanel
// biome-ignore lint/suspicious/noArrayIndexKey: <explanation>
key={index} key={index}
value={activeTab} value={activeTab}
index={index} index={index}

View File

@ -1,4 +1,4 @@
import { ChangeEvent, Fragment } from 'react'; import { type ChangeEvent, Fragment } from 'react';
import { import {
FormControl, FormControl,
FormControlLabel, FormControlLabel,
@ -8,7 +8,7 @@ import {
} from '@mui/material'; } from '@mui/material';
import { RoleSelect } from 'component/common/RoleSelect/RoleSelect'; import { RoleSelect } from 'component/common/RoleSelect/RoleSelect';
import { useRoles } from 'hooks/api/getters/useRoles/useRoles'; import { useRoles } from 'hooks/api/getters/useRoles/useRoles';
import { IRole } from 'interfaces/role'; import type { IRole } from 'interfaces/role';
interface IAutoCreateFormProps { interface IAutoCreateFormProps {
data?: { data?: {

View File

@ -1,4 +1,5 @@
import React, { useEffect, useState } from 'react'; import type React from 'react';
import { useEffect, useState } from 'react';
import { import {
Box, Box,
Button, Button,

View File

@ -1,4 +1,5 @@
import React, { useEffect, useState } from 'react'; import type React from 'react';
import { useEffect, useState } from 'react';
import { import {
Button, Button,
FormControl, FormControl,
@ -19,7 +20,7 @@ import useToast from 'hooks/useToast';
import { formatUnknownError } from 'utils/formatUnknownError'; import { formatUnknownError } from 'utils/formatUnknownError';
import { removeEmptyStringFields } from 'utils/removeEmptyStringFields'; import { removeEmptyStringFields } from 'utils/removeEmptyStringFields';
import { SsoGroupSettings } from '../SsoGroupSettings'; import { SsoGroupSettings } from '../SsoGroupSettings';
import { IRole } from 'interfaces/role'; import type { IRole } from 'interfaces/role';
const initialState = { const initialState = {
enabled: false, enabled: false,

View File

@ -1,9 +1,10 @@
import React, { useEffect, useState } from 'react'; import type React from 'react';
import { useEffect, useState } from 'react';
import { Button, FormControlLabel, Grid, Switch } from '@mui/material'; import { Button, FormControlLabel, Grid, Switch } from '@mui/material';
import { Alert } from '@mui/material'; import { Alert } from '@mui/material';
import useAuthSettings from 'hooks/api/getters/useAuthSettings/useAuthSettings'; import useAuthSettings from 'hooks/api/getters/useAuthSettings/useAuthSettings';
import useAuthSettingsApi, { import useAuthSettingsApi, {
ISimpleAuthSettings, type ISimpleAuthSettings,
} from 'hooks/api/actions/useAuthSettingsApi/useAuthSettingsApi'; } from 'hooks/api/actions/useAuthSettingsApi/useAuthSettingsApi';
import useToast from 'hooks/useToast'; import useToast from 'hooks/useToast';
import { formatUnknownError } from 'utils/formatUnknownError'; import { formatUnknownError } from 'utils/formatUnknownError';

View File

@ -1,7 +1,7 @@
import { Alert, Typography } from '@mui/material'; import { Alert, Typography } from '@mui/material';
import { Dialogue } from 'component/common/Dialogue/Dialogue'; import { Dialogue } from 'component/common/Dialogue/Dialogue';
import { IAdminCount } from 'hooks/api/getters/useAdminCount/useAdminCount'; import type { IAdminCount } from 'hooks/api/getters/useAdminCount/useAdminCount';
import { IApiToken } from 'hooks/api/getters/useApiTokens/useApiTokens'; import type { IApiToken } from 'hooks/api/getters/useApiTokens/useApiTokens';
interface IPasswordAuthDialogProps { interface IPasswordAuthDialogProps {
open: boolean; open: boolean;

View File

@ -1,4 +1,5 @@
import React, { useEffect, useState } from 'react'; import type React from 'react';
import { useEffect, useState } from 'react';
import { import {
Button, Button,
FormControlLabel, FormControlLabel,
@ -15,7 +16,7 @@ import useAuthSettingsApi from 'hooks/api/actions/useAuthSettingsApi/useAuthSett
import { formatUnknownError } from 'utils/formatUnknownError'; import { formatUnknownError } from 'utils/formatUnknownError';
import { removeEmptyStringFields } from 'utils/removeEmptyStringFields'; import { removeEmptyStringFields } from 'utils/removeEmptyStringFields';
import { SsoGroupSettings } from '../SsoGroupSettings'; import { SsoGroupSettings } from '../SsoGroupSettings';
import { IRole } from 'interfaces/role'; import type { IRole } from 'interfaces/role';
const initialState = { const initialState = {
enabled: false, enabled: false,

View File

@ -1,4 +1,4 @@
import React from 'react'; import type React from 'react';
import { FormControlLabel, Grid, Switch, TextField } from '@mui/material'; import { FormControlLabel, Grid, Switch, TextField } from '@mui/material';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';

View File

@ -5,8 +5,13 @@ import { FormSwitch } from 'component/common/FormSwitch/FormSwitch';
import GeneralSelect from 'component/common/GeneralSelect/GeneralSelect'; import GeneralSelect from 'component/common/GeneralSelect/GeneralSelect';
import { HelpIcon } from 'component/common/HelpIcon/HelpIcon'; import { HelpIcon } from 'component/common/HelpIcon/HelpIcon';
import Input from 'component/common/Input/Input'; import Input from 'component/common/Input/Input';
import { BannerVariant } from 'interfaces/banner'; import type { BannerVariant } from 'interfaces/banner';
import { ChangeEvent, Dispatch, SetStateAction, useState } from 'react'; import {
type ChangeEvent,
type Dispatch,
type SetStateAction,
useState,
} from 'react';
import Visibility from '@mui/icons-material/Visibility'; import Visibility from '@mui/icons-material/Visibility';
import { BannerDialog } from 'component/banners/Banner/BannerDialog/BannerDialog'; import { BannerDialog } from 'component/banners/Banner/BannerDialog/BannerDialog';

View File

@ -4,11 +4,11 @@ import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
import FormTemplate from 'component/common/FormTemplate/FormTemplate'; import FormTemplate from 'component/common/FormTemplate/FormTemplate';
import useToast from 'hooks/useToast'; import useToast from 'hooks/useToast';
import { formatUnknownError } from 'utils/formatUnknownError'; import { formatUnknownError } from 'utils/formatUnknownError';
import { FormEvent, useEffect, useState } from 'react'; import { type FormEvent, useEffect, useState } from 'react';
import { BannerVariant, IInternalBanner } from 'interfaces/banner'; import type { BannerVariant, IInternalBanner } from 'interfaces/banner';
import { useBanners } from 'hooks/api/getters/useBanners/useBanners'; import { useBanners } from 'hooks/api/getters/useBanners/useBanners';
import { import {
AddOrUpdateBanner, type AddOrUpdateBanner,
useBannersApi, useBannersApi,
} from 'hooks/api/actions/useBannersApi/useBannersApi'; } from 'hooks/api/actions/useBannersApi/useBannersApi';
import { BannerForm } from './BannerForm'; import { BannerForm } from './BannerForm';

View File

@ -1,5 +1,5 @@
import { Dialogue } from 'component/common/Dialogue/Dialogue'; import { Dialogue } from 'component/common/Dialogue/Dialogue';
import { IInternalBanner } from 'interfaces/banner'; import type { IInternalBanner } from 'interfaces/banner';
interface IBannerDeleteDialogProps { interface IBannerDeleteDialogProps {
banner?: IInternalBanner; banner?: IInternalBanner;

View File

@ -17,7 +17,7 @@ import { useConditionallyHiddenColumns } from 'hooks/useConditionallyHiddenColum
import { useSearch } from 'hooks/useSearch'; import { useSearch } from 'hooks/useSearch';
import { useBanners } from 'hooks/api/getters/useBanners/useBanners'; import { useBanners } from 'hooks/api/getters/useBanners/useBanners';
import { useBannersApi } from 'hooks/api/actions/useBannersApi/useBannersApi'; import { useBannersApi } from 'hooks/api/actions/useBannersApi/useBannersApi';
import { IInternalBanner } from 'interfaces/banner'; import type { IInternalBanner } from 'interfaces/banner';
import { Banner } from 'component/banners/Banner/Banner'; import { Banner } from 'component/banners/Banner/Banner';
import { BannersActionsCell } from './BannersActionsCell'; import { BannersActionsCell } from './BannersActionsCell';
import { BannerDeleteDialog } from './BannerDeleteDialog'; import { BannerDeleteDialog } from './BannerDeleteDialog';

View File

@ -1,6 +1,6 @@
import { Grid } from '@mui/material'; import { Grid } from '@mui/material';
import { IInstanceStatus } from 'interfaces/instance'; import type { IInstanceStatus } from 'interfaces/instance';
import { VFC } from 'react'; import type { VFC } from 'react';
import { BillingInformation } from './BillingInformation/BillingInformation'; import { BillingInformation } from './BillingInformation/BillingInformation';
import { BillingPlan } from './BillingPlan/BillingPlan'; import { BillingPlan } from './BillingPlan/BillingPlan';

View File

@ -1,8 +1,8 @@
import { FC } from 'react'; import type { FC } from 'react';
import { Alert, Divider, Grid, styled, Typography } from '@mui/material'; import { Alert, Divider, Grid, styled, Typography } from '@mui/material';
import { BillingInformationButton } from './BillingInformationButton/BillingInformationButton'; import { BillingInformationButton } from './BillingInformationButton/BillingInformationButton';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { IInstanceStatus, InstanceState } from 'interfaces/instance'; import { type IInstanceStatus, InstanceState } from 'interfaces/instance';
const StyledInfoBox = styled('aside')(({ theme }) => ({ const StyledInfoBox = styled('aside')(({ theme }) => ({
padding: theme.spacing(4), padding: theme.spacing(4),

View File

@ -1,5 +1,5 @@
import { Button, styled } from '@mui/material'; import { Button, styled } from '@mui/material';
import { VFC } from 'react'; import type { VFC } from 'react';
import { formatApiPath } from 'utils/formatPath'; import { formatApiPath } from 'utils/formatPath';
const PORTAL_URL = formatApiPath('api/admin/invoices'); const PORTAL_URL = formatApiPath('api/admin/invoices');

View File

@ -1,11 +1,11 @@
import { FC } from 'react'; import type { FC } from 'react';
import { Alert, Divider, Grid, styled, Typography } from '@mui/material'; import { Alert, Divider, Grid, styled, Typography } from '@mui/material';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import CheckIcon from '@mui/icons-material/Check'; import CheckIcon from '@mui/icons-material/Check';
import { useUsers } from 'hooks/api/getters/useUsers/useUsers'; import { useUsers } from 'hooks/api/getters/useUsers/useUsers';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { import {
IInstanceStatus, type IInstanceStatus,
InstanceState, InstanceState,
InstancePlan, InstancePlan,
} from 'interfaces/instance'; } from 'interfaces/instance';

View File

@ -1,5 +1,5 @@
import { styled } from '@mui/material'; import { styled } from '@mui/material';
import { FC } from 'react'; import type { FC } from 'react';
const StyledSpan = styled('span')(({ theme }) => ({ const StyledSpan = styled('span')(({ theme }) => ({
fontSize: theme.fontSizes.smallBody, fontSize: theme.fontSizes.smallBody,

View File

@ -8,7 +8,7 @@ import {
} from 'component/common/Table'; } from 'component/common/Table';
import { PageContent } from 'component/common/PageContent/PageContent'; import { PageContent } from 'component/common/PageContent/PageContent';
import { DateCell } from 'component/common/Table/cells/DateCell/DateCell'; import { DateCell } from 'component/common/Table/cells/DateCell/DateCell';
import { useMemo, VFC } from 'react'; import { useMemo, type VFC } from 'react';
import { useGlobalFilter, useSortBy, useTable } from 'react-table'; import { useGlobalFilter, useSortBy, useTable } from 'react-table';
import { sortTypes } from 'utils/sortTypes'; import { sortTypes } from 'utils/sortTypes';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';

View File

@ -1,5 +1,6 @@
import { ADMIN } from 'component/providers/AccessProvider/permissions'; import { ADMIN } from 'component/providers/AccessProvider/permissions';
import React, { useState } from 'react'; import type React from 'react';
import { useState } from 'react';
import { TextField, Box } from '@mui/material'; import { TextField, Box } from '@mui/material';
import { UpdateButton } from 'component/common/UpdateButton/UpdateButton'; import { UpdateButton } from 'component/common/UpdateButton/UpdateButton';
import { useUiConfigApi } from 'hooks/api/actions/useUiConfigApi/useUiConfigApi'; import { useUiConfigApi } from 'hooks/api/actions/useUiConfigApi/useUiConfigApi';

View File

@ -1,4 +1,4 @@
import { INavigationMenuItem } from 'interfaces/route'; import type { INavigationMenuItem } from 'interfaces/route';
export const filterAdminRoutes = ( export const filterAdminRoutes = (
menu: INavigationMenuItem['menu'], menu: INavigationMenuItem['menu'],

View File

@ -13,7 +13,7 @@ import { useGroup } from 'hooks/api/getters/useGroup/useGroup';
import { UG_SAVE_BTN_ID } from 'utils/testIds'; import { UG_SAVE_BTN_ID } from 'utils/testIds';
import { GO_BACK } from 'constants/navigate'; import { GO_BACK } from 'constants/navigate';
import { useGroups } from 'hooks/api/getters/useGroups/useGroups'; import { useGroups } from 'hooks/api/getters/useGroups/useGroups';
import { IGroup } from 'interfaces/group'; import type { IGroup } from 'interfaces/group';
export const EditGroupContainer = () => { export const EditGroupContainer = () => {
const groupId = Number(useRequiredPathParam('groupId')); const groupId = Number(useRequiredPathParam('groupId'));

View File

@ -5,8 +5,8 @@ import { useGroupApi } from 'hooks/api/actions/useGroupApi/useGroupApi';
import { useGroup } from 'hooks/api/getters/useGroup/useGroup'; import { useGroup } from 'hooks/api/getters/useGroup/useGroup';
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
import useToast from 'hooks/useToast'; import useToast from 'hooks/useToast';
import { IGroup } from 'interfaces/group'; import type { IGroup } from 'interfaces/group';
import { FC, FormEvent, useEffect } from 'react'; import { type FC, type FormEvent, useEffect } from 'react';
import { formatUnknownError } from 'utils/formatUnknownError'; import { formatUnknownError } from 'utils/formatUnknownError';
import { GroupFormUsersSelect } from 'component/admin/groups/GroupForm/GroupFormUsersSelect/GroupFormUsersSelect'; import { GroupFormUsersSelect } from 'component/admin/groups/GroupForm/GroupFormUsersSelect/GroupFormUsersSelect';
import { GroupFormUsersTable } from 'component/admin/groups/GroupForm/GroupFormUsersTable/GroupFormUsersTable'; import { GroupFormUsersTable } from 'component/admin/groups/GroupForm/GroupFormUsersTable/GroupFormUsersTable';

View File

@ -1,7 +1,12 @@
import { useEffect, useMemo, useState, VFC } from 'react'; import { useEffect, useMemo, useState, type VFC } from 'react';
import { IconButton, Tooltip, useMediaQuery, useTheme } from '@mui/material'; import { IconButton, Tooltip, useMediaQuery, useTheme } from '@mui/material';
import { useSearchParams, Link } from 'react-router-dom'; import { useSearchParams, Link } from 'react-router-dom';
import { SortingRule, useFlexLayout, useSortBy, useTable } from 'react-table'; import {
type SortingRule,
useFlexLayout,
useSortBy,
useTable,
} from 'react-table';
import { TablePlaceholder, VirtualizedTable } from 'component/common/Table'; import { TablePlaceholder, VirtualizedTable } from 'component/common/Table';
import { useGroup } from 'hooks/api/getters/useGroup/useGroup'; import { useGroup } from 'hooks/api/getters/useGroup/useGroup';
import { SearchHighlightProvider } from 'component/common/Table/SearchHighlightContext/SearchHighlightContext'; import { SearchHighlightProvider } from 'component/common/Table/SearchHighlightContext/SearchHighlightContext';
@ -11,7 +16,7 @@ import { PageContent } from 'component/common/PageContent/PageContent';
import { PageHeader } from 'component/common/PageHeader/PageHeader'; import { PageHeader } from 'component/common/PageHeader/PageHeader';
import { sortTypes } from 'utils/sortTypes'; import { sortTypes } from 'utils/sortTypes';
import { createLocalStorage } from 'utils/createLocalStorage'; import { createLocalStorage } from 'utils/createLocalStorage';
import { IGroupUser } from 'interfaces/group'; import type { IGroupUser } from 'interfaces/group';
import { useSearch } from 'hooks/useSearch'; import { useSearch } from 'hooks/useSearch';
import { Search } from 'component/common/Search/Search'; import { Search } from 'component/common/Search/Search';
import { TextCell } from 'component/common/Table/cells/TextCell/TextCell'; import { TextCell } from 'component/common/Table/cells/TextCell/TextCell';

View File

@ -3,8 +3,8 @@ import { Dialogue } from 'component/common/Dialogue/Dialogue';
import { useGroupApi } from 'hooks/api/actions/useGroupApi/useGroupApi'; import { useGroupApi } from 'hooks/api/actions/useGroupApi/useGroupApi';
import { useGroup } from 'hooks/api/getters/useGroup/useGroup'; import { useGroup } from 'hooks/api/getters/useGroup/useGroup';
import useToast from 'hooks/useToast'; import useToast from 'hooks/useToast';
import { IGroup, IGroupUser } from 'interfaces/group'; import type { IGroup, IGroupUser } from 'interfaces/group';
import { FC } from 'react'; import type { FC } from 'react';
import { formatUnknownError } from 'utils/formatUnknownError'; import { formatUnknownError } from 'utils/formatUnknownError';
interface IRemoveGroupUserProps { interface IRemoveGroupUserProps {

View File

@ -1,8 +1,9 @@
import React, { FC } from 'react'; import type React from 'react';
import type { FC } from 'react';
import { Box, Button, styled } from '@mui/material'; import { Box, Button, styled } from '@mui/material';
import { UG_DESC_ID, UG_NAME_ID } from 'utils/testIds'; import { UG_DESC_ID, UG_NAME_ID } from 'utils/testIds';
import Input from 'component/common/Input/Input'; import Input from 'component/common/Input/Input';
import { IGroupUser } from 'interfaces/group'; import type { IGroupUser } from 'interfaces/group';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { GroupFormUsersSelect } from './GroupFormUsersSelect/GroupFormUsersSelect'; import { GroupFormUsersSelect } from './GroupFormUsersSelect/GroupFormUsersSelect';
import { GroupFormUsersTable } from './GroupFormUsersTable/GroupFormUsersTable'; import { GroupFormUsersTable } from './GroupFormUsersTable/GroupFormUsersTable';
@ -10,7 +11,7 @@ import { ItemList } from 'component/common/ItemList/ItemList';
import useAuthSettings from 'hooks/api/getters/useAuthSettings/useAuthSettings'; import useAuthSettings from 'hooks/api/getters/useAuthSettings/useAuthSettings';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import { HelpIcon } from 'component/common/HelpIcon/HelpIcon'; import { HelpIcon } from 'component/common/HelpIcon/HelpIcon';
import { IRole } from 'interfaces/role'; import type { IRole } from 'interfaces/role';
import { useUsers } from 'hooks/api/getters/useUsers/useUsers'; import { useUsers } from 'hooks/api/getters/useUsers/useUsers';
import { RoleSelect } from 'component/common/RoleSelect/RoleSelect'; import { RoleSelect } from 'component/common/RoleSelect/RoleSelect';

View File

@ -1,14 +1,14 @@
import { Autocomplete, Checkbox, styled, TextField } from '@mui/material'; import { Autocomplete, Checkbox, styled, TextField } from '@mui/material';
import CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank'; import CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank';
import CheckBoxIcon from '@mui/icons-material/CheckBox'; import CheckBoxIcon from '@mui/icons-material/CheckBox';
import { IUser } from 'interfaces/user'; import type { IUser } from 'interfaces/user';
import { VFC } from 'react'; import type { VFC } from 'react';
import { useUsers } from 'hooks/api/getters/useUsers/useUsers'; import { useUsers } from 'hooks/api/getters/useUsers/useUsers';
import { IGroupUser } from 'interfaces/group'; import type { IGroupUser } from 'interfaces/group';
import { UG_USERS_ID } from 'utils/testIds'; import { UG_USERS_ID } from 'utils/testIds';
import { caseInsensitiveSearch } from 'utils/search'; import { caseInsensitiveSearch } from 'utils/search';
import { useServiceAccounts } from 'hooks/api/getters/useServiceAccounts/useServiceAccounts'; import { useServiceAccounts } from 'hooks/api/getters/useServiceAccounts/useServiceAccounts';
import { IServiceAccount } from 'interfaces/service-account'; import type { IServiceAccount } from 'interfaces/service-account';
const StyledOption = styled('div')(({ theme }) => ({ const StyledOption = styled('div')(({ theme }) => ({
display: 'flex', display: 'flex',

View File

@ -1,7 +1,7 @@
import { useMemo, useState, VFC } from 'react'; import { useMemo, useState, type VFC } from 'react';
import { IconButton, Tooltip, useMediaQuery } from '@mui/material'; import { IconButton, Tooltip, useMediaQuery } from '@mui/material';
import { TextCell } from 'component/common/Table/cells/TextCell/TextCell'; import { TextCell } from 'component/common/Table/cells/TextCell/TextCell';
import { IGroupUser } from 'interfaces/group'; import type { IGroupUser } from 'interfaces/group';
import { HighlightCell } from 'component/common/Table/cells/HighlightCell/HighlightCell'; import { HighlightCell } from 'component/common/Table/cells/HighlightCell/HighlightCell';
import { ActionCell } from 'component/common/Table/cells/ActionCell/ActionCell'; import { ActionCell } from 'component/common/Table/cells/ActionCell/ActionCell';
import Delete from '@mui/icons-material/Delete'; import Delete from '@mui/icons-material/Delete';

View File

@ -1,5 +1,5 @@
import { styled, Tooltip } from '@mui/material'; import { styled, Tooltip } from '@mui/material';
import { IGroup } from 'interfaces/group'; import type { IGroup } from 'interfaces/group';
import { Link, useNavigate } from 'react-router-dom'; import { Link, useNavigate } from 'react-router-dom';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { GroupCardAvatars } from './GroupCardAvatars/GroupCardAvatars'; import { GroupCardAvatars } from './GroupCardAvatars/GroupCardAvatars';

View File

@ -1,4 +1,4 @@
import { FC, useState } from 'react'; import { type FC, useState } from 'react';
import { import {
IconButton, IconButton,
ListItemIcon, ListItemIcon,

View File

@ -1,7 +1,8 @@
import { styled } from '@mui/material'; import { styled } from '@mui/material';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { IGroupUser } from 'interfaces/group'; import type { IGroupUser } from 'interfaces/group';
import React, { useMemo, useState } from 'react'; import type React from 'react';
import { useMemo, useState } from 'react';
import { GroupPopover } from './GroupPopover/GroupPopover'; import { GroupPopover } from './GroupPopover/GroupPopover';
import { UserAvatar } from 'component/common/UserAvatar/UserAvatar'; import { UserAvatar } from 'component/common/UserAvatar/UserAvatar';

View File

@ -1,5 +1,5 @@
import { Popover, styled } from '@mui/material'; import { Popover, styled } from '@mui/material';
import { IGroupUser } from 'interfaces/group'; import type { IGroupUser } from 'interfaces/group';
const StyledPopover = styled(Popover)(({ theme }) => ({ const StyledPopover = styled(Popover)(({ theme }) => ({
pointerEvents: 'none', pointerEvents: 'none',

View File

@ -1,7 +1,7 @@
import { useEffect, useMemo, useState, VFC } from 'react'; import { useEffect, useMemo, useState, type VFC } from 'react';
import { useGroups } from 'hooks/api/getters/useGroups/useGroups'; import { useGroups } from 'hooks/api/getters/useGroups/useGroups';
import { useNavigate, useSearchParams } from 'react-router-dom'; import { useNavigate, useSearchParams } from 'react-router-dom';
import { IGroup } from 'interfaces/group'; import type { IGroup } from 'interfaces/group';
import { PageContent } from 'component/common/PageContent/PageContent'; import { PageContent } from 'component/common/PageContent/PageContent';
import { PageHeader } from 'component/common/PageHeader/PageHeader'; import { PageHeader } from 'component/common/PageHeader/PageHeader';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';

View File

@ -3,8 +3,8 @@ import { Dialogue } from 'component/common/Dialogue/Dialogue';
import { useGroupApi } from 'hooks/api/actions/useGroupApi/useGroupApi'; import { useGroupApi } from 'hooks/api/actions/useGroupApi/useGroupApi';
import { useGroups } from 'hooks/api/getters/useGroups/useGroups'; import { useGroups } from 'hooks/api/getters/useGroups/useGroups';
import useToast from 'hooks/useToast'; import useToast from 'hooks/useToast';
import { IGroup } from 'interfaces/group'; import type { IGroup } from 'interfaces/group';
import { FC } from 'react'; import type { FC } from 'react';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { formatUnknownError } from 'utils/formatUnknownError'; import { formatUnknownError } from 'utils/formatUnknownError';

View File

@ -1,6 +1,6 @@
import { useState } from 'react'; import { useState } from 'react';
import useQueryParams from 'hooks/useQueryParams'; import useQueryParams from 'hooks/useQueryParams';
import { IGroupUser } from 'interfaces/group'; import type { IGroupUser } from 'interfaces/group';
export const useGroupForm = ( export const useGroupForm = (
initialName = '', initialName = '',

View File

@ -8,7 +8,7 @@ import {
TableRow, TableRow,
} from '@mui/material'; } from '@mui/material';
import { Box } from '@mui/system'; import { Box } from '@mui/system';
import { VFC } from 'react'; import type { VFC } from 'react';
import { useInstanceStats } from 'hooks/api/getters/useInstanceStats/useInstanceStats'; import { useInstanceStats } from 'hooks/api/getters/useInstanceStats/useInstanceStats';
import { formatApiPath } from '../../../../utils/formatPath'; import { formatApiPath } from '../../../../utils/formatPath';
import { PageContent } from '../../../common/PageContent/PageContent'; import { PageContent } from '../../../common/PageContent/PageContent';

View File

@ -13,7 +13,7 @@ import { PageHeader } from 'component/common/PageHeader/PageHeader';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { formatApiPath } from 'utils/formatPath'; import { formatApiPath } from 'utils/formatPath';
import useInvoices from 'hooks/api/getters/useInvoices/useInvoices'; import useInvoices from 'hooks/api/getters/useInvoices/useInvoices';
import { IInvoice } from 'interfaces/invoice'; import type { IInvoice } from 'interfaces/invoice';
import { useLocationSettings } from 'hooks/useLocationSettings'; import { useLocationSettings } from 'hooks/useLocationSettings';
import { formatDateYMD } from 'utils/formatDate'; import { formatDateYMD } from 'utils/formatDate';

View File

@ -2,7 +2,7 @@ import { useLocation } from 'react-router-dom';
import { Paper, styled, Tab, Tabs } from '@mui/material'; import { Paper, styled, Tab, Tabs } from '@mui/material';
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
import { CenteredNavLink } from './CenteredNavLink'; import { CenteredNavLink } from './CenteredNavLink';
import { VFC } from 'react'; import type { VFC } from 'react';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { EnterpriseBadge } from 'component/common/EnterpriseBadge/EnterpriseBadge'; import { EnterpriseBadge } from 'component/common/EnterpriseBadge/EnterpriseBadge';
import { useAdminRoutes } from '../useAdminRoutes'; import { useAdminRoutes } from '../useAdminRoutes';

View File

@ -1,5 +1,5 @@
import { styled } from '@mui/material'; import { styled } from '@mui/material';
import { FC } from 'react'; import type { FC } from 'react';
import { NavLink } from 'react-router-dom'; import { NavLink } from 'react-router-dom';
const StyledNavLink = styled(NavLink)(({ theme }) => ({ const StyledNavLink = styled(NavLink)(({ theme }) => ({

View File

@ -4,7 +4,7 @@ import { useInstanceMetrics } from 'hooks/api/getters/useInstanceMetrics/useInst
import { Alert, Typography, styled, useTheme } from '@mui/material'; import { Alert, Typography, styled, useTheme } from '@mui/material';
import { unknownify } from 'utils/unknownify'; import { unknownify } from 'utils/unknownify';
import { useMemo } from 'react'; import { useMemo } from 'react';
import { import type {
RequestsPerSecondSchema, RequestsPerSecondSchema,
RequestsPerSecondSchemaDataResultItem, RequestsPerSecondSchemaDataResultItem,
} from 'openapi'; } from 'openapi';
@ -73,7 +73,7 @@ const asNetworkAppData = (
) => { ) => {
const values = (result.values || []) as ResultValue[]; const values = (result.values || []) as ResultValue[];
const data = values.filter((value) => isRecent(value)); const data = values.filter((value) => isRecent(value));
const reqs = data.length ? parseFloat(data[data.length - 1][1]) : 0; const reqs = data.length ? Number.parseFloat(data[data.length - 1][1]) : 0;
return { return {
label: result.label, label: result.label,
reqs, reqs,

View File

@ -1,11 +1,11 @@
import { useInstanceMetrics } from 'hooks/api/getters/useInstanceMetrics/useInstanceMetrics'; import { useInstanceMetrics } from 'hooks/api/getters/useInstanceMetrics/useInstanceMetrics';
import { useMemo, VFC } from 'react'; import { useMemo, type VFC } from 'react';
import { Line } from 'react-chartjs-2'; import { Line } from 'react-chartjs-2';
import { import {
CategoryScale, CategoryScale,
Chart as ChartJS, Chart as ChartJS,
ChartDataset, type ChartDataset,
ChartOptions, type ChartOptions,
Legend, Legend,
LinearScale, LinearScale,
LineElement, LineElement,
@ -15,11 +15,11 @@ import {
Tooltip, Tooltip,
} from 'chart.js'; } from 'chart.js';
import { import {
ILocationSettings, type ILocationSettings,
useLocationSettings, useLocationSettings,
} from 'hooks/useLocationSettings'; } from 'hooks/useLocationSettings';
import { formatDateHM } from 'utils/formatDate'; import { formatDateHM } from 'utils/formatDate';
import { RequestsPerSecondSchema } from 'openapi'; import type { RequestsPerSecondSchema } from 'openapi';
import 'chartjs-adapter-date-fns'; import 'chartjs-adapter-date-fns';
import { Alert, useTheme } from '@mui/material'; import { Alert, useTheme } from '@mui/material';
import { Box } from '@mui/system'; import { Box } from '@mui/system';
@ -27,7 +27,7 @@ import { CyclicIterator } from 'utils/cyclicIterator';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { usePageTitle } from 'hooks/usePageTitle'; import { usePageTitle } from 'hooks/usePageTitle';
import { unknownify } from 'utils/unknownify'; import { unknownify } from 'utils/unknownify';
import { Theme } from '@mui/material/styles/createTheme'; import type { Theme } from '@mui/material/styles/createTheme';
const pointStyles = ['circle', 'rect', 'rectRounded', 'rectRot', 'triangle']; const pointStyles = ['circle', 'rect', 'rectRounded', 'rectRot', 'triangle'];
@ -173,7 +173,7 @@ const toChartData = (
label: `${endpoint}: ${appName}`, label: `${endpoint}: ${appName}`,
borderColor: color.main, borderColor: color.main,
backgroundColor: color.main, backgroundColor: color.main,
data: createChartPoints(values, (y) => parseFloat(y)), data: createChartPoints(values, (y) => Number.parseFloat(y)),
elements: { elements: {
point: { point: {
radius: 4, radius: 4,

View File

@ -1,8 +1,8 @@
import { Alert, styled } from '@mui/material'; import { Alert, styled } from '@mui/material';
import Input from 'component/common/Input/Input'; import Input from 'component/common/Input/Input';
import { ICheckedPermissions } from 'interfaces/permissions'; import type { ICheckedPermissions } from 'interfaces/permissions';
import { IRoleFormErrors } from './useRoleForm'; import type { IRoleFormErrors } from './useRoleForm';
import { PredefinedRoleType } from 'interfaces/role'; import type { PredefinedRoleType } from 'interfaces/role';
import { ROOT_ROLE_TYPE } from '@server/util/constants'; import { ROOT_ROLE_TYPE } from '@server/util/constants';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { RolePermissionCategories } from './RolePermissionCategories/RolePermissionCategories'; import { RolePermissionCategories } from './RolePermissionCategories/RolePermissionCategories';

View File

@ -7,8 +7,8 @@ import {
PROJECT_ROLE_TYPES, PROJECT_ROLE_TYPES,
} from '@server/util/constants'; } from '@server/util/constants';
import usePermissions from 'hooks/api/getters/usePermissions/usePermissions'; import usePermissions from 'hooks/api/getters/usePermissions/usePermissions';
import { ICheckedPermissions, IPermission } from 'interfaces/permissions'; import type { ICheckedPermissions, IPermission } from 'interfaces/permissions';
import { PredefinedRoleType } from 'interfaces/role'; import type { PredefinedRoleType } from 'interfaces/role';
import { import {
flattenProjectPermissions, flattenProjectPermissions,
getCategorizedProjectPermissions, getCategorizedProjectPermissions,

View File

@ -1,4 +1,4 @@
import { ReactNode, useMemo, useState } from 'react'; import { type ReactNode, useMemo, useState } from 'react';
import { import {
Accordion, Accordion,
AccordionDetails, AccordionDetails,
@ -13,7 +13,7 @@ import {
Typography, Typography,
} from '@mui/material'; } from '@mui/material';
import ExpandMore from '@mui/icons-material/ExpandMore'; import ExpandMore from '@mui/icons-material/ExpandMore';
import { ICheckedPermissions, IPermission } from 'interfaces/permissions'; import type { ICheckedPermissions, IPermission } from 'interfaces/permissions';
import StringTruncator from 'component/common/StringTruncator/StringTruncator'; import StringTruncator from 'component/common/StringTruncator/StringTruncator';
import { getRoleKey } from 'utils/permissions'; import { getRoleKey } from 'utils/permissions';

View File

@ -1,6 +1,6 @@
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { IPermission, ICheckedPermissions } from 'interfaces/permissions'; import type { IPermission, ICheckedPermissions } from 'interfaces/permissions';
import { IRole, PredefinedRoleType } from 'interfaces/role'; import type { IRole, PredefinedRoleType } from 'interfaces/role';
import { useRoles } from 'hooks/api/getters/useRoles/useRoles'; import { useRoles } from 'hooks/api/getters/useRoles/useRoles';
import { permissionsToCheckedPermissions } from 'utils/permissions'; import { permissionsToCheckedPermissions } from 'utils/permissions';
import { ROOT_ROLE_TYPE } from '@server/util/constants'; import { ROOT_ROLE_TYPE } from '@server/util/constants';

View File

@ -7,10 +7,10 @@ import { RoleForm } from '../RoleForm/RoleForm';
import { useRoles } from 'hooks/api/getters/useRoles/useRoles'; import { useRoles } from 'hooks/api/getters/useRoles/useRoles';
import useToast from 'hooks/useToast'; import useToast from 'hooks/useToast';
import { formatUnknownError } from 'utils/formatUnknownError'; import { formatUnknownError } from 'utils/formatUnknownError';
import { FormEvent, useEffect } from 'react'; import { type FormEvent, useEffect } from 'react';
import { useRolesApi } from 'hooks/api/actions/useRolesApi/useRolesApi'; import { useRolesApi } from 'hooks/api/actions/useRolesApi/useRolesApi';
import { useRole } from 'hooks/api/getters/useRole/useRole'; import { useRole } from 'hooks/api/getters/useRole/useRole';
import { PredefinedRoleType } from 'interfaces/role'; import type { PredefinedRoleType } from 'interfaces/role';
import { ROOT_ROLE_TYPE } from '@server/util/constants'; import { ROOT_ROLE_TYPE } from '@server/util/constants';
const StyledForm = styled('form')(() => ({ const StyledForm = styled('form')(() => ({

View File

@ -12,7 +12,7 @@ import theme from 'themes/theme';
import { PageHeader } from 'component/common/PageHeader/PageHeader'; import { PageHeader } from 'component/common/PageHeader/PageHeader';
import Add from '@mui/icons-material/Add'; import Add from '@mui/icons-material/Add';
import ResponsiveButton from 'component/common/ResponsiveButton/ResponsiveButton'; import ResponsiveButton from 'component/common/ResponsiveButton/ResponsiveButton';
import { IRole } from 'interfaces/role'; import type { IRole } from 'interfaces/role';
import { TabLink } from 'component/common/TabNav/TabLink'; import { TabLink } from 'component/common/TabNav/TabLink';
const StyledHeader = styled('div')(() => ({ const StyledHeader = styled('div')(() => ({

View File

@ -1,4 +1,4 @@
import { IRole } from 'interfaces/role'; import type { IRole } from 'interfaces/role';
import { RoleDeleteDialogRootRole } from './RoleDeleteDialogRootRole/RoleDeleteDialogRootRole'; import { RoleDeleteDialogRootRole } from './RoleDeleteDialogRootRole/RoleDeleteDialogRootRole';
import { RoleDeleteDialogProjectRole } from './RoleDeleteDialogProjectRole/RoleDeleteDialogProjectRole'; import { RoleDeleteDialogProjectRole } from './RoleDeleteDialogProjectRole/RoleDeleteDialogProjectRole';
import { CUSTOM_PROJECT_ROLE_TYPE } from 'constants/roles'; import { CUSTOM_PROJECT_ROLE_TYPE } from 'constants/roles';

View File

@ -1,7 +1,7 @@
import { Alert, styled } from '@mui/material'; import { Alert, styled } from '@mui/material';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { Dialogue } from 'component/common/Dialogue/Dialogue'; import { Dialogue } from 'component/common/Dialogue/Dialogue';
import { IRole } from 'interfaces/role'; import type { IRole } from 'interfaces/role';
import { useProjectRoleAccessUsage } from 'hooks/api/getters/useProjectRoleAccessUsage/useProjectRoleAccessUsage'; import { useProjectRoleAccessUsage } from 'hooks/api/getters/useProjectRoleAccessUsage/useProjectRoleAccessUsage';
import { RoleDeleteDialogProjectRoleTable } from './RoleDeleteDialogProjectRoleTable'; import { RoleDeleteDialogProjectRoleTable } from './RoleDeleteDialogProjectRoleTable';

View File

@ -1,9 +1,9 @@
import { VirtualizedTable } from 'component/common/Table'; import { VirtualizedTable } from 'component/common/Table';
import { useMemo, useState } from 'react'; import { useMemo, useState } from 'react';
import { useTable, useSortBy, useFlexLayout, Column } from 'react-table'; import { useTable, useSortBy, useFlexLayout, type Column } from 'react-table';
import { sortTypes } from 'utils/sortTypes'; import { sortTypes } from 'utils/sortTypes';
import { TextCell } from 'component/common/Table/cells/TextCell/TextCell'; import { TextCell } from 'component/common/Table/cells/TextCell/TextCell';
import { IProjectRoleUsageCount } from 'interfaces/project'; import type { IProjectRoleUsageCount } from 'interfaces/project';
import { LinkCell } from 'component/common/Table/cells/LinkCell/LinkCell'; import { LinkCell } from 'component/common/Table/cells/LinkCell/LinkCell';
interface IRoleDeleteDialogProjectRoleTableProps { interface IRoleDeleteDialogProjectRoleTableProps {

View File

@ -2,9 +2,9 @@ import { VirtualizedTable } from 'component/common/Table';
import { DateCell } from 'component/common/Table/cells/DateCell/DateCell'; import { DateCell } from 'component/common/Table/cells/DateCell/DateCell';
import { HighlightCell } from 'component/common/Table/cells/HighlightCell/HighlightCell'; import { HighlightCell } from 'component/common/Table/cells/HighlightCell/HighlightCell';
import { useMemo, useState } from 'react'; import { useMemo, useState } from 'react';
import { useTable, useSortBy, useFlexLayout, Column } from 'react-table'; import { useTable, useSortBy, useFlexLayout, type Column } from 'react-table';
import { sortTypes } from 'utils/sortTypes'; import { sortTypes } from 'utils/sortTypes';
import { IGroup } from 'interfaces/group'; import type { IGroup } from 'interfaces/group';
import { TextCell } from 'component/common/Table/cells/TextCell/TextCell'; import { TextCell } from 'component/common/Table/cells/TextCell/TextCell';
export type PageQueryType = Partial< export type PageQueryType = Partial<

View File

@ -3,7 +3,7 @@ import { ConditionallyRender } from 'component/common/ConditionallyRender/Condit
import { Dialogue } from 'component/common/Dialogue/Dialogue'; import { Dialogue } from 'component/common/Dialogue/Dialogue';
import { useServiceAccounts } from 'hooks/api/getters/useServiceAccounts/useServiceAccounts'; import { useServiceAccounts } from 'hooks/api/getters/useServiceAccounts/useServiceAccounts';
import { useUsers } from 'hooks/api/getters/useUsers/useUsers'; import { useUsers } from 'hooks/api/getters/useUsers/useUsers';
import { IRole } from 'interfaces/role'; import type { IRole } from 'interfaces/role';
import { RoleDeleteDialogUsers } from './RoleDeleteDialogUsers'; import { RoleDeleteDialogUsers } from './RoleDeleteDialogUsers';
import { RoleDeleteDialogServiceAccounts } from './RoleDeleteDialogServiceAccounts'; import { RoleDeleteDialogServiceAccounts } from './RoleDeleteDialogServiceAccounts';
import { useGroups } from 'hooks/api/getters/useGroups/useGroups'; import { useGroups } from 'hooks/api/getters/useGroups/useGroups';

View File

@ -2,10 +2,10 @@ import { VirtualizedTable } from 'component/common/Table';
import { DateCell } from 'component/common/Table/cells/DateCell/DateCell'; import { DateCell } from 'component/common/Table/cells/DateCell/DateCell';
import { HighlightCell } from 'component/common/Table/cells/HighlightCell/HighlightCell'; import { HighlightCell } from 'component/common/Table/cells/HighlightCell/HighlightCell';
import { useMemo, useState } from 'react'; import { useMemo, useState } from 'react';
import { useTable, useSortBy, useFlexLayout, Column } from 'react-table'; import { useTable, useSortBy, useFlexLayout, type Column } from 'react-table';
import { sortTypes } from 'utils/sortTypes'; import { sortTypes } from 'utils/sortTypes';
import { TimeAgoCell } from 'component/common/Table/cells/TimeAgoCell/TimeAgoCell'; import { TimeAgoCell } from 'component/common/Table/cells/TimeAgoCell/TimeAgoCell';
import { IServiceAccount } from 'interfaces/service-account'; import type { IServiceAccount } from 'interfaces/service-account';
import { ServiceAccountTokensCell } from 'component/admin/serviceAccounts/ServiceAccountsTable/ServiceAccountTokensCell/ServiceAccountTokensCell'; import { ServiceAccountTokensCell } from 'component/admin/serviceAccounts/ServiceAccountsTable/ServiceAccountTokensCell/ServiceAccountTokensCell';
export type PageQueryType = Partial< export type PageQueryType = Partial<

View File

@ -2,10 +2,10 @@ import { VirtualizedTable } from 'component/common/Table';
import { DateCell } from 'component/common/Table/cells/DateCell/DateCell'; import { DateCell } from 'component/common/Table/cells/DateCell/DateCell';
import { HighlightCell } from 'component/common/Table/cells/HighlightCell/HighlightCell'; import { HighlightCell } from 'component/common/Table/cells/HighlightCell/HighlightCell';
import { useMemo, useState } from 'react'; import { useMemo, useState } from 'react';
import { useTable, useSortBy, useFlexLayout, Column } from 'react-table'; import { useTable, useSortBy, useFlexLayout, type Column } from 'react-table';
import { sortTypes } from 'utils/sortTypes'; import { sortTypes } from 'utils/sortTypes';
import { TimeAgoCell } from 'component/common/Table/cells/TimeAgoCell/TimeAgoCell'; import { TimeAgoCell } from 'component/common/Table/cells/TimeAgoCell/TimeAgoCell';
import { IUser } from 'interfaces/user'; import type { IUser } from 'interfaces/user';
export type PageQueryType = Partial< export type PageQueryType = Partial<
Record<'sort' | 'order' | 'search', string> Record<'sort' | 'order' | 'search', string>

View File

@ -1,7 +1,7 @@
import { VFC } from 'react'; import type { VFC } from 'react';
import { TextCell } from 'component/common/Table/cells/TextCell/TextCell'; import { TextCell } from 'component/common/Table/cells/TextCell/TextCell';
import { TooltipLink } from 'component/common/TooltipLink/TooltipLink'; import { TooltipLink } from 'component/common/TooltipLink/TooltipLink';
import { IRole } from 'interfaces/role'; import type { IRole } from 'interfaces/role';
import { useRole } from 'hooks/api/getters/useRole/useRole'; import { useRole } from 'hooks/api/getters/useRole/useRole';
import { RoleDescription } from 'component/common/RoleDescription/RoleDescription'; import { RoleDescription } from 'component/common/RoleDescription/RoleDescription';
import { PREDEFINED_ROLE_TYPES } from '@server/util/constants'; import { PREDEFINED_ROLE_TYPES } from '@server/util/constants';

View File

@ -4,8 +4,8 @@ import { Box, styled } from '@mui/material';
import { PREDEFINED_ROLE_TYPES } from '@server/util/constants'; import { PREDEFINED_ROLE_TYPES } from '@server/util/constants';
import PermissionIconButton from 'component/common/PermissionIconButton/PermissionIconButton'; import PermissionIconButton from 'component/common/PermissionIconButton/PermissionIconButton';
import { ADMIN } from 'component/providers/AccessProvider/permissions'; import { ADMIN } from 'component/providers/AccessProvider/permissions';
import { IRole } from 'interfaces/role'; import type { IRole } from 'interfaces/role';
import { VFC } from 'react'; import type { VFC } from 'react';
const StyledBox = styled(Box)(() => ({ const StyledBox = styled(Box)(() => ({
display: 'flex', display: 'flex',

View File

@ -1,7 +1,7 @@
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { Badge } from 'component/common/Badge/Badge'; import { Badge } from 'component/common/Badge/Badge';
import { styled } from '@mui/material'; import { styled } from '@mui/material';
import { IRole } from 'interfaces/role'; import type { IRole } from 'interfaces/role';
import { HighlightCell } from 'component/common/Table/cells/HighlightCell/HighlightCell'; import { HighlightCell } from 'component/common/Table/cells/HighlightCell/HighlightCell';
import { PREDEFINED_ROLE_TYPES } from '@server/util/constants'; import { PREDEFINED_ROLE_TYPES } from '@server/util/constants';

View File

@ -1,7 +1,7 @@
import { useMemo, useState } from 'react'; import { useMemo, useState } from 'react';
import { TablePlaceholder, VirtualizedTable } from 'component/common/Table'; import { TablePlaceholder, VirtualizedTable } from 'component/common/Table';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { IRole, PredefinedRoleType } from 'interfaces/role'; import type { IRole, PredefinedRoleType } from 'interfaces/role';
import useToast from 'hooks/useToast'; import useToast from 'hooks/useToast';
import { formatUnknownError } from 'utils/formatUnknownError'; import { formatUnknownError } from 'utils/formatUnknownError';
import { PageContent } from 'component/common/PageContent/PageContent'; import { PageContent } from 'component/common/PageContent/PageContent';

View File

@ -1,7 +1,7 @@
import { Alert, styled } from '@mui/material'; import { Alert, styled } from '@mui/material';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { Dialogue } from 'component/common/Dialogue/Dialogue'; import { Dialogue } from 'component/common/Dialogue/Dialogue';
import { IServiceAccount } from 'interfaces/service-account'; import type { IServiceAccount } from 'interfaces/service-account';
import { ServiceAccountTokens } from '../ServiceAccountModal/ServiceAccountTokens/ServiceAccountTokens'; import { ServiceAccountTokens } from '../ServiceAccountModal/ServiceAccountTokens/ServiceAccountTokens';
const StyledTableContainer = styled('div')(({ theme }) => ({ const StyledTableContainer = styled('div')(({ theme }) => ({

View File

@ -11,13 +11,13 @@ import FormTemplate from 'component/common/FormTemplate/FormTemplate';
import { SidebarModal } from 'component/common/SidebarModal/SidebarModal'; import { SidebarModal } from 'component/common/SidebarModal/SidebarModal';
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
import useToast from 'hooks/useToast'; import useToast from 'hooks/useToast';
import { FormEvent, useEffect, useState } from 'react'; import { type FormEvent, useEffect, useState } from 'react';
import { formatUnknownError } from 'utils/formatUnknownError'; import { formatUnknownError } from 'utils/formatUnknownError';
import Input from 'component/common/Input/Input'; import Input from 'component/common/Input/Input';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { IUser } from 'interfaces/user'; import type { IUser } from 'interfaces/user';
import { import {
IServiceAccountPayload, type IServiceAccountPayload,
useServiceAccountsApi, useServiceAccountsApi,
} from 'hooks/api/actions/useServiceAccountsApi/useServiceAccountsApi'; } from 'hooks/api/actions/useServiceAccountsApi/useServiceAccountsApi';
import { useServiceAccounts } from 'hooks/api/getters/useServiceAccounts/useServiceAccounts'; import { useServiceAccounts } from 'hooks/api/getters/useServiceAccounts/useServiceAccounts';
@ -25,15 +25,15 @@ import { useUsers } from 'hooks/api/getters/useUsers/useUsers';
import { import {
calculateExpirationDate, calculateExpirationDate,
ExpirationOption, ExpirationOption,
IPersonalAPITokenFormErrors, type IPersonalAPITokenFormErrors,
PersonalAPITokenForm, PersonalAPITokenForm,
} from 'component/user/Profile/PersonalAPITokensTab/CreatePersonalAPIToken/PersonalAPITokenForm/PersonalAPITokenForm'; } from 'component/user/Profile/PersonalAPITokensTab/CreatePersonalAPIToken/PersonalAPITokenForm/PersonalAPITokenForm';
import { useServiceAccountTokensApi } from 'hooks/api/actions/useServiceAccountTokensApi/useServiceAccountTokensApi'; import { useServiceAccountTokensApi } from 'hooks/api/actions/useServiceAccountTokensApi/useServiceAccountTokensApi';
import { INewPersonalAPIToken } from 'interfaces/personalAPIToken'; import type { INewPersonalAPIToken } from 'interfaces/personalAPIToken';
import { ServiceAccountTokens } from './ServiceAccountTokens/ServiceAccountTokens'; import { ServiceAccountTokens } from './ServiceAccountTokens/ServiceAccountTokens';
import { IServiceAccount } from 'interfaces/service-account'; import type { IServiceAccount } from 'interfaces/service-account';
import { RoleSelect } from 'component/common/RoleSelect/RoleSelect'; import { RoleSelect } from 'component/common/RoleSelect/RoleSelect';
import { IRole } from 'interfaces/role'; import type { IRole } from 'interfaces/role';
const StyledForm = styled('form')(() => ({ const StyledForm = styled('form')(() => ({
display: 'flex', display: 'flex',

View File

@ -3,11 +3,11 @@ import { Dialogue } from 'component/common/Dialogue/Dialogue';
import { import {
calculateExpirationDate, calculateExpirationDate,
ExpirationOption, ExpirationOption,
IPersonalAPITokenFormErrors, type IPersonalAPITokenFormErrors,
PersonalAPITokenForm, PersonalAPITokenForm,
} from 'component/user/Profile/PersonalAPITokensTab/CreatePersonalAPIToken/PersonalAPITokenForm/PersonalAPITokenForm'; } from 'component/user/Profile/PersonalAPITokensTab/CreatePersonalAPIToken/PersonalAPITokenForm/PersonalAPITokenForm';
import { ICreateServiceAccountTokenPayload } from 'hooks/api/actions/useServiceAccountTokensApi/useServiceAccountTokensApi'; import type { ICreateServiceAccountTokenPayload } from 'hooks/api/actions/useServiceAccountTokensApi/useServiceAccountTokensApi';
import { IPersonalAPIToken } from 'interfaces/personalAPIToken'; import type { IPersonalAPIToken } from 'interfaces/personalAPIToken';
const DEFAULT_EXPIRATION = ExpirationOption['30DAYS']; const DEFAULT_EXPIRATION = ExpirationOption['30DAYS'];

View File

@ -18,12 +18,17 @@ import { SearchHighlightProvider } from 'component/common/Table/SearchHighlightC
import { PAT_LIMIT } from '@server/util/constants'; import { PAT_LIMIT } from '@server/util/constants';
import { useServiceAccountTokens } from 'hooks/api/getters/useServiceAccountTokens/useServiceAccountTokens'; import { useServiceAccountTokens } from 'hooks/api/getters/useServiceAccountTokens/useServiceAccountTokens';
import { useSearch } from 'hooks/useSearch'; import { useSearch } from 'hooks/useSearch';
import { import type {
INewPersonalAPIToken, INewPersonalAPIToken,
IPersonalAPIToken, IPersonalAPIToken,
} from 'interfaces/personalAPIToken'; } from 'interfaces/personalAPIToken';
import { useMemo, useState } from 'react'; import { useMemo, useState } from 'react';
import { useTable, SortingRule, useSortBy, useFlexLayout } from 'react-table'; import {
useTable,
type SortingRule,
useSortBy,
useFlexLayout,
} from 'react-table';
import { sortTypes } from 'utils/sortTypes'; import { sortTypes } from 'utils/sortTypes';
import { ServiceAccountCreateTokenDialog } from './ServiceAccountCreateTokenDialog/ServiceAccountCreateTokenDialog'; import { ServiceAccountCreateTokenDialog } from './ServiceAccountCreateTokenDialog/ServiceAccountCreateTokenDialog';
import { ServiceAccountTokenDialog } from 'component/admin/serviceAccounts/ServiceAccountsTable/ServiceAccountTokenDialog/ServiceAccountTokenDialog'; import { ServiceAccountTokenDialog } from 'component/admin/serviceAccounts/ServiceAccountsTable/ServiceAccountTokenDialog/ServiceAccountTokenDialog';
@ -32,12 +37,12 @@ import { useConditionallyHiddenColumns } from 'hooks/useConditionallyHiddenColum
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { Dialogue } from 'component/common/Dialogue/Dialogue'; import { Dialogue } from 'component/common/Dialogue/Dialogue';
import { import {
ICreateServiceAccountTokenPayload, type ICreateServiceAccountTokenPayload,
useServiceAccountTokensApi, useServiceAccountTokensApi,
} from 'hooks/api/actions/useServiceAccountTokensApi/useServiceAccountTokensApi'; } from 'hooks/api/actions/useServiceAccountTokensApi/useServiceAccountTokensApi';
import useToast from 'hooks/useToast'; import useToast from 'hooks/useToast';
import { formatUnknownError } from 'utils/formatUnknownError'; import { formatUnknownError } from 'utils/formatUnknownError';
import { IServiceAccount } from 'interfaces/service-account'; import type { IServiceAccount } from 'interfaces/service-account';
import { useServiceAccounts } from 'hooks/api/getters/useServiceAccounts/useServiceAccounts'; import { useServiceAccounts } from 'hooks/api/getters/useServiceAccounts/useServiceAccounts';
const StyledHeader = styled('div')(({ theme }) => ({ const StyledHeader = styled('div')(({ theme }) => ({

View File

@ -1,8 +1,8 @@
import { Alert, styled, Typography } from '@mui/material'; import { Alert, styled, Typography } from '@mui/material';
import { UserToken } from 'component/admin/apiToken/ConfirmToken/UserToken/UserToken'; import { UserToken } from 'component/admin/apiToken/ConfirmToken/UserToken/UserToken';
import { Dialogue } from 'component/common/Dialogue/Dialogue'; import { Dialogue } from 'component/common/Dialogue/Dialogue';
import { INewPersonalAPIToken } from 'interfaces/personalAPIToken'; import type { INewPersonalAPIToken } from 'interfaces/personalAPIToken';
import { FC } from 'react'; import type { FC } from 'react';
const StyledAlert = styled(Alert)(({ theme }) => ({ const StyledAlert = styled(Alert)(({ theme }) => ({
marginBottom: theme.spacing(3), marginBottom: theme.spacing(3),

View File

@ -1,9 +1,9 @@
import { VFC } from 'react'; import type { VFC } from 'react';
import { styled, Typography } from '@mui/material'; import { styled, Typography } from '@mui/material';
import { TextCell } from 'component/common/Table/cells/TextCell/TextCell'; import { TextCell } from 'component/common/Table/cells/TextCell/TextCell';
import { Highlighter } from 'component/common/Highlighter/Highlighter'; import { Highlighter } from 'component/common/Highlighter/Highlighter';
import { useSearchHighlightContext } from 'component/common/Table/SearchHighlightContext/SearchHighlightContext'; import { useSearchHighlightContext } from 'component/common/Table/SearchHighlightContext/SearchHighlightContext';
import { IServiceAccount } from 'interfaces/service-account'; import type { IServiceAccount } from 'interfaces/service-account';
import { LinkCell } from 'component/common/Table/cells/LinkCell/LinkCell'; import { LinkCell } from 'component/common/Table/cells/LinkCell/LinkCell';
import { TooltipLink } from 'component/common/TooltipLink/TooltipLink'; import { TooltipLink } from 'component/common/TooltipLink/TooltipLink';

View File

@ -3,7 +3,7 @@ import Edit from '@mui/icons-material/Edit';
import { Box, styled } from '@mui/material'; import { Box, styled } from '@mui/material';
import PermissionIconButton from 'component/common/PermissionIconButton/PermissionIconButton'; import PermissionIconButton from 'component/common/PermissionIconButton/PermissionIconButton';
import { ADMIN } from 'component/providers/AccessProvider/permissions'; import { ADMIN } from 'component/providers/AccessProvider/permissions';
import { VFC } from 'react'; import type { VFC } from 'react';
const StyledBox = styled(Box)(() => ({ const StyledBox = styled(Box)(() => ({
display: 'flex', display: 'flex',

View File

@ -1,7 +1,7 @@
import { useMemo, useState } from 'react'; import { useMemo, useState } from 'react';
import { TablePlaceholder, VirtualizedTable } from 'component/common/Table'; import { TablePlaceholder, VirtualizedTable } from 'component/common/Table';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { IRole } from 'interfaces/role'; import type { IRole } from 'interfaces/role';
import useToast from 'hooks/useToast'; import useToast from 'hooks/useToast';
import { formatUnknownError } from 'utils/formatUnknownError'; import { formatUnknownError } from 'utils/formatUnknownError';
import { PageContent } from 'component/common/PageContent/PageContent'; import { PageContent } from 'component/common/PageContent/PageContent';
@ -23,11 +23,11 @@ import { useServiceAccountsApi } from 'hooks/api/actions/useServiceAccountsApi/u
import { ServiceAccountModal } from './ServiceAccountModal/ServiceAccountModal'; import { ServiceAccountModal } from './ServiceAccountModal/ServiceAccountModal';
import { ServiceAccountDeleteDialog } from './ServiceAccountDeleteDialog/ServiceAccountDeleteDialog'; import { ServiceAccountDeleteDialog } from './ServiceAccountDeleteDialog/ServiceAccountDeleteDialog';
import { ServiceAccountsActionsCell } from './ServiceAccountsActionsCell/ServiceAccountsActionsCell'; import { ServiceAccountsActionsCell } from './ServiceAccountsActionsCell/ServiceAccountsActionsCell';
import { INewPersonalAPIToken } from 'interfaces/personalAPIToken'; import type { INewPersonalAPIToken } from 'interfaces/personalAPIToken';
import { ServiceAccountTokenDialog } from './ServiceAccountTokenDialog/ServiceAccountTokenDialog'; import { ServiceAccountTokenDialog } from './ServiceAccountTokenDialog/ServiceAccountTokenDialog';
import { ServiceAccountTokensCell } from './ServiceAccountTokensCell/ServiceAccountTokensCell'; import { ServiceAccountTokensCell } from './ServiceAccountTokensCell/ServiceAccountTokensCell';
import { TimeAgoCell } from 'component/common/Table/cells/TimeAgoCell/TimeAgoCell'; import { TimeAgoCell } from 'component/common/Table/cells/TimeAgoCell/TimeAgoCell';
import { IServiceAccount } from 'interfaces/service-account'; import type { IServiceAccount } from 'interfaces/service-account';
import { RoleCell } from 'component/common/Table/cells/RoleCell/RoleCell'; import { RoleCell } from 'component/common/Table/cells/RoleCell/RoleCell';
export const ServiceAccountsTable = () => { export const ServiceAccountsTable = () => {

View File

@ -1,4 +1,4 @@
import { Autocomplete, AutocompleteProps, TextField } from '@mui/material'; import { Autocomplete, type AutocompleteProps, TextField } from '@mui/material';
interface IAccessMatrixSelectProps<T> interface IAccessMatrixSelectProps<T>
extends Partial<AutocompleteProps<T, false, false, false>> { extends Partial<AutocompleteProps<T, false, false, false>> {

View File

@ -7,7 +7,7 @@ import { IconCell } from 'component/common/Table/cells/IconCell/IconCell';
import Check from '@mui/icons-material/Check'; import Check from '@mui/icons-material/Check';
import Close from '@mui/icons-material/Close'; import Close from '@mui/icons-material/Close';
import { Box } from '@mui/material'; import { Box } from '@mui/material';
import { IMatrixPermission } from 'interfaces/permissions'; import type { IMatrixPermission } from 'interfaces/permissions';
export const PermissionsTable = ({ export const PermissionsTable = ({
permissions, permissions,

View File

@ -1,4 +1,4 @@
import { VFC } from 'react'; import type { VFC } from 'react';
import { Alert } from '@mui/material'; import { Alert } from '@mui/material';
import { useUsersPlan } from 'hooks/useUsersPlan'; import { useUsersPlan } from 'hooks/useUsersPlan';
import { useUsers } from 'hooks/api/getters/useUsers/useUsers'; import { useUsers } from 'hooks/api/getters/useUsers/useUsers';

View File

@ -3,7 +3,7 @@ import useLoading from '../../../../../hooks/useLoading';
import { Alert, Typography } from '@mui/material'; import { Alert, Typography } from '@mui/material';
import { DEL_INACTIVE_USERS_ERROR } from '../../../../../hooks/api/actions/useInactiveUsersApi/useInactiveUsersApi'; import { DEL_INACTIVE_USERS_ERROR } from '../../../../../hooks/api/actions/useInactiveUsersApi/useInactiveUsersApi';
import { ConditionallyRender } from '../../../../common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from '../../../../common/ConditionallyRender/ConditionallyRender';
import { IInactiveUser } from '../../../../../hooks/api/getters/useInactiveUsers/useInactiveUsers'; import type { IInactiveUser } from '../../../../../hooks/api/getters/useInactiveUsers/useInactiveUsers';
import { flexRow } from '../../../../../themes/themeStyles'; import { flexRow } from '../../../../../themes/themeStyles';
interface IDeleteInactiveUsersProps { interface IDeleteInactiveUsersProps {

View File

@ -6,7 +6,7 @@ import useLoading from 'hooks/useLoading';
import { Typography } from '@mui/material'; import { Typography } from '@mui/material';
import { useThemeStyles } from 'themes/themeStyles'; import { useThemeStyles } from 'themes/themeStyles';
import { UserAvatar } from 'component/common/UserAvatar/UserAvatar'; import { UserAvatar } from 'component/common/UserAvatar/UserAvatar';
import { IInactiveUser } from '../../../../../hooks/api/getters/useInactiveUsers/useInactiveUsers'; import type { IInactiveUser } from '../../../../../hooks/api/getters/useInactiveUsers/useInactiveUsers';
const StyledUserAvatar = styled(UserAvatar)(({ theme }) => ({ const StyledUserAvatar = styled(UserAvatar)(({ theme }) => ({
width: theme.spacing(5), width: theme.spacing(5),

View File

@ -1,4 +1,5 @@
import React, { VFC } from 'react'; import type React from 'react';
import type { VFC } from 'react';
import { Box, styled } from '@mui/material'; import { Box, styled } from '@mui/material';
import PermissionIconButton from '../../../../common/PermissionIconButton/PermissionIconButton'; import PermissionIconButton from '../../../../common/PermissionIconButton/PermissionIconButton';
import { ADMIN } from '../../../../providers/AccessProvider/permissions'; import { ADMIN } from '../../../../providers/AccessProvider/permissions';

View File

@ -1,5 +1,5 @@
import { import {
IInactiveUser, type IInactiveUser,
useInactiveUsers, useInactiveUsers,
} from 'hooks/api/getters/useInactiveUsers/useInactiveUsers'; } from 'hooks/api/getters/useInactiveUsers/useInactiveUsers';
import { useUsers } from '../../../../hooks/api/getters/useUsers/useUsers'; import { useUsers } from '../../../../hooks/api/getters/useUsers/useUsers';
@ -7,10 +7,11 @@ import useAdminUsersApi from '../../../../hooks/api/actions/useAdminUsersApi/use
import { useInactiveUsersApi } from '../../../../hooks/api/actions/useInactiveUsersApi/useInactiveUsersApi'; import { useInactiveUsersApi } from '../../../../hooks/api/actions/useInactiveUsersApi/useInactiveUsersApi';
import useToast from '../../../../hooks/useToast'; import useToast from '../../../../hooks/useToast';
import { formatUnknownError } from '../../../../utils/formatUnknownError'; import { formatUnknownError } from '../../../../utils/formatUnknownError';
import { IUser } from '../../../../interfaces/user'; import type { IUser } from '../../../../interfaces/user';
import React, { useMemo, useState } from 'react'; import type React from 'react';
import { useMemo, useState } from 'react';
import { TimeAgoCell } from '../../../common/Table/cells/TimeAgoCell/TimeAgoCell'; import { TimeAgoCell } from '../../../common/Table/cells/TimeAgoCell/TimeAgoCell';
import { IRole } from '../../../../interfaces/role'; import type { IRole } from '../../../../interfaces/role';
import { RoleCell } from '../../../common/Table/cells/RoleCell/RoleCell'; import { RoleCell } from '../../../common/Table/cells/RoleCell/RoleCell';
import { HighlightCell } from '../../../common/Table/cells/HighlightCell/HighlightCell'; import { HighlightCell } from '../../../common/Table/cells/HighlightCell/HighlightCell';
import { PageContent } from '../../../common/PageContent/PageContent'; import { PageContent } from '../../../common/PageContent/PageContent';

View File

@ -1,4 +1,4 @@
import { FormEventHandler, useState, VFC } from 'react'; import { type FormEventHandler, useState, type VFC } from 'react';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { useSWRConfig } from 'swr'; import { useSWRConfig } from 'swr';
import { Box, Button, Typography } from '@mui/material'; import { Box, Button, Typography } from '@mui/material';

View File

@ -1,4 +1,4 @@
import { VFC } from 'react'; import type { VFC } from 'react';
import { Box } from '@mui/material'; import { Box } from '@mui/material';
import { usePlausibleTracker } from 'hooks/usePlausibleTracker'; import { usePlausibleTracker } from 'hooks/usePlausibleTracker';
import { InviteLinkBarContent } from './InviteLinkBarContent'; import { InviteLinkBarContent } from './InviteLinkBarContent';

View File

@ -1,11 +1,11 @@
import Input from 'component/common/Input/Input'; import Input from 'component/common/Input/Input';
import { Button, FormControl, Typography, Switch, styled } from '@mui/material'; import { Button, FormControl, Typography, Switch, styled } from '@mui/material';
import React from 'react'; import type React from 'react';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { EDIT } from 'constants/misc'; import { EDIT } from 'constants/misc';
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
import { RoleSelect } from 'component/common/RoleSelect/RoleSelect'; import { RoleSelect } from 'component/common/RoleSelect/RoleSelect';
import { IRole } from 'interfaces/role'; import type { IRole } from 'interfaces/role';
import { useUsers } from 'hooks/api/getters/useUsers/useUsers'; import { useUsers } from 'hooks/api/getters/useUsers/useUsers';
const StyledForm = styled('form')(() => ({ const StyledForm = styled('form')(() => ({

View File

@ -1,4 +1,5 @@
import React, { useState } from 'react'; import type React from 'react';
import { useState } from 'react';
import classnames from 'classnames'; import classnames from 'classnames';
import { styled, TextField, Typography } from '@mui/material'; import { styled, TextField, Typography } from '@mui/material';
import { trim } from 'component/common/util'; import { trim } from 'component/common/util';
@ -9,7 +10,7 @@ import PasswordChecker, {
} from 'component/user/common/ResetPasswordForm/PasswordChecker'; } from 'component/user/common/ResetPasswordForm/PasswordChecker';
import { useThemeStyles } from 'themes/themeStyles'; import { useThemeStyles } from 'themes/themeStyles';
import PasswordMatcher from 'component/user/common/ResetPasswordForm/PasswordMatcher'; import PasswordMatcher from 'component/user/common/ResetPasswordForm/PasswordMatcher';
import { IUser } from 'interfaces/user'; import type { IUser } from 'interfaces/user';
import useAdminUsersApi from 'hooks/api/actions/useAdminUsersApi/useAdminUsersApi'; import useAdminUsersApi from 'hooks/api/actions/useAdminUsersApi/useAdminUsersApi';
import { UserAvatar } from 'component/common/UserAvatar/UserAvatar'; import { UserAvatar } from 'component/common/UserAvatar/UserAvatar';

View File

@ -5,7 +5,7 @@ import { Alert, styled } from '@mui/material';
import useLoading from 'hooks/useLoading'; import useLoading from 'hooks/useLoading';
import { Typography } from '@mui/material'; import { Typography } from '@mui/material';
import { useThemeStyles } from 'themes/themeStyles'; import { useThemeStyles } from 'themes/themeStyles';
import { IUser } from 'interfaces/user'; import type { IUser } from 'interfaces/user';
import { UserAvatar } from 'component/common/UserAvatar/UserAvatar'; import { UserAvatar } from 'component/common/UserAvatar/UserAvatar';
const StyledUserAvatar = styled(UserAvatar)(({ theme }) => ({ const StyledUserAvatar = styled(UserAvatar)(({ theme }) => ({

View File

@ -1,10 +1,11 @@
import React, { useState } from 'react'; import type React from 'react';
import { useState } from 'react';
import classnames from 'classnames'; import classnames from 'classnames';
import { Box, styled, Typography } from '@mui/material'; import { Box, styled, Typography } from '@mui/material';
import { modalStyles } from 'component/admin/users/util'; import { modalStyles } from 'component/admin/users/util';
import { Dialogue } from 'component/common/Dialogue/Dialogue'; import { Dialogue } from 'component/common/Dialogue/Dialogue';
import { useThemeStyles } from 'themes/themeStyles'; import { useThemeStyles } from 'themes/themeStyles';
import { IUser } from 'interfaces/user'; import type { IUser } from 'interfaces/user';
import useAdminUsersApi from 'hooks/api/actions/useAdminUsersApi/useAdminUsersApi'; import useAdminUsersApi from 'hooks/api/actions/useAdminUsersApi/useAdminUsersApi';
import { UserAvatar } from 'component/common/UserAvatar/UserAvatar'; import { UserAvatar } from 'component/common/UserAvatar/UserAvatar';
import useToast from 'hooks/useToast'; import useToast from 'hooks/useToast';

View File

@ -1,4 +1,4 @@
import { VFC } from 'react'; import type { VFC } from 'react';
import { Link as RouterLink } from 'react-router-dom'; import { Link as RouterLink } from 'react-router-dom';
import { Alert, Link } from '@mui/material'; import { Alert, Link } from '@mui/material';
import { useUsersPlan } from 'hooks/useUsersPlan'; import { useUsersPlan } from 'hooks/useUsersPlan';

View File

@ -7,7 +7,7 @@ import { Box, styled } from '@mui/material';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import PermissionIconButton from 'component/common/PermissionIconButton/PermissionIconButton'; import PermissionIconButton from 'component/common/PermissionIconButton/PermissionIconButton';
import { ADMIN } from 'component/providers/AccessProvider/permissions'; import { ADMIN } from 'component/providers/AccessProvider/permissions';
import { VFC } from 'react'; import type { VFC } from 'react';
const StyledBox = styled(Box)(() => ({ const StyledBox = styled(Box)(() => ({
display: 'flex', display: 'flex',

View File

@ -1,4 +1,5 @@
import React, { useMemo, useState } from 'react'; import type React from 'react';
import { useMemo, useState } from 'react';
import { TablePlaceholder, VirtualizedTable } from 'component/common/Table'; import { TablePlaceholder, VirtualizedTable } from 'component/common/Table';
import ChangePassword from './ChangePassword/ChangePassword'; import ChangePassword from './ChangePassword/ChangePassword';
import ResetPassword from './ResetPassword/ResetPassword'; import ResetPassword from './ResetPassword/ResetPassword';
@ -8,8 +9,8 @@ import ConfirmUserAdded from '../ConfirmUserAdded/ConfirmUserAdded';
import { useUsers } from 'hooks/api/getters/useUsers/useUsers'; import { useUsers } from 'hooks/api/getters/useUsers/useUsers';
import useAdminUsersApi from 'hooks/api/actions/useAdminUsersApi/useAdminUsersApi'; import useAdminUsersApi from 'hooks/api/actions/useAdminUsersApi/useAdminUsersApi';
import { useAccessOverviewApi } from 'hooks/api/actions/useAccessOverviewApi/useAccessOverviewApi'; import { useAccessOverviewApi } from 'hooks/api/actions/useAccessOverviewApi/useAccessOverviewApi';
import { IUser } from 'interfaces/user'; import type { IUser } from 'interfaces/user';
import { IRole } from 'interfaces/role'; import type { IRole } from 'interfaces/role';
import useToast from 'hooks/useToast'; import useToast from 'hooks/useToast';
import { formatUnknownError } from 'utils/formatUnknownError'; import { formatUnknownError } from 'utils/formatUnknownError';
import { useUsersPlan } from 'hooks/useUsersPlan'; import { useUsersPlan } from 'hooks/useUsersPlan';

View File

@ -1,7 +1,7 @@
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { useUsers } from 'hooks/api/getters/useUsers/useUsers'; import { useUsers } from 'hooks/api/getters/useUsers/useUsers';
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
import { IRole } from 'interfaces/role'; import type { IRole } from 'interfaces/role';
const useCreateUserForm = ( const useCreateUserForm = (
initialName = '', initialName = '',

View File

@ -1,5 +1,6 @@
/* eslint react/no-multi-comp:off */ /* eslint react/no-multi-comp:off */
import React, { useContext, useState } from 'react'; import type React from 'react';
import { useContext, useState } from 'react';
import { import {
Box, Box,
IconButton, IconButton,

View File

@ -1,8 +1,8 @@
import { Box, Divider, styled, Typography, useTheme } from '@mui/material'; import { Box, Divider, styled, Typography, useTheme } from '@mui/material';
import { ArcherContainer, ArcherElement } from 'react-archer'; import { ArcherContainer, ArcherElement } from 'react-archer';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { FC, useLayoutEffect, useRef, useState } from 'react'; import { type FC, useLayoutEffect, useRef, useState } from 'react';
import { import type {
ApplicationOverviewEnvironmentSchema, ApplicationOverviewEnvironmentSchema,
ApplicationOverviewSchema, ApplicationOverviewSchema,
} from 'openapi'; } from 'openapi';

Some files were not shown because too many files have changed in this diff Show More