From 9dfdf4b6a9e887a9dc1f71a70eadbca2498e6587 Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Mon, 4 Mar 2024 17:53:07 +0000 Subject: [PATCH 01/12] naive upgrade --- site/package.json | 24 +- site/pnpm-lock.yaml | 887 +++++++++++++----- .../ExternalAuthPage/ExternalAuthPageView.tsx | 37 +- 3 files changed, 685 insertions(+), 263 deletions(-) diff --git a/site/package.json b/site/package.json index 96c0702183ee3..a9bc915d7712f 100644 --- a/site/package.json +++ b/site/package.json @@ -130,23 +130,23 @@ "@types/ssh2": "1.11.13", "@types/ua-parser-js": "0.7.36", "@types/uuid": "9.0.2", - "@typescript-eslint/eslint-plugin": "6.9.1", - "@typescript-eslint/parser": "6.9.1", + "@typescript-eslint/eslint-plugin": "7.1.1", + "@typescript-eslint/parser": "7.1.1", "@vitejs/plugin-react": "4.1.0", "chromatic": "10.6.1", - "eslint": "8.52.0", - "eslint-config-prettier": "9.0.0", - "eslint-import-resolver-typescript": "3.6.0", + "eslint": "8.57.0", + "eslint-config-prettier": "9.1.0", + "eslint-import-resolver-typescript": "3.6.1", "eslint-plugin-compat": "4.2.0", "eslint-plugin-eslint-comments": "3.2.0", - "eslint-plugin-import": "2.29.0", - "eslint-plugin-jest": "27.6.0", - "eslint-plugin-jsx-a11y": "6.7.1", - "eslint-plugin-react": "7.33.0", + "eslint-plugin-import": "2.29.1", + "eslint-plugin-jest": "27.9.0", + "eslint-plugin-jsx-a11y": "6.8.0", + "eslint-plugin-react": "7.34.0", "eslint-plugin-react-hooks": "4.6.0", - "eslint-plugin-storybook": "0.6.12", - "eslint-plugin-testing-library": "6.1.0", - "eslint-plugin-unicorn": "49.0.0", + "eslint-plugin-storybook": "0.8.0", + "eslint-plugin-testing-library": "6.2.0", + "eslint-plugin-unicorn": "51.0.1", "eventsourcemock": "2.0.0", "express": "4.18.2", "jest": "29.6.2", diff --git a/site/pnpm-lock.yaml b/site/pnpm-lock.yaml index d2ae44da0a3ae..924a5b34204a9 100644 --- a/site/pnpm-lock.yaml +++ b/site/pnpm-lock.yaml @@ -306,11 +306,11 @@ devDependencies: specifier: 9.0.2 version: 9.0.2 '@typescript-eslint/eslint-plugin': - specifier: 6.9.1 - version: 6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.52.0)(typescript@5.2.2) + specifier: 7.1.1 + version: 7.1.1(@typescript-eslint/parser@7.1.1)(eslint@8.57.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 6.9.1 - version: 6.9.1(eslint@8.52.0)(typescript@5.2.2) + specifier: 7.1.1 + version: 7.1.1(eslint@8.57.0)(typescript@5.2.2) '@vitejs/plugin-react': specifier: 4.1.0 version: 4.1.0(vite@4.5.2) @@ -318,44 +318,44 @@ devDependencies: specifier: 10.6.1 version: 10.6.1 eslint: - specifier: 8.52.0 - version: 8.52.0 + specifier: 8.57.0 + version: 8.57.0 eslint-config-prettier: - specifier: 9.0.0 - version: 9.0.0(eslint@8.52.0) + specifier: 9.1.0 + version: 9.1.0(eslint@8.57.0) eslint-import-resolver-typescript: - specifier: 3.6.0 - version: 3.6.0(@typescript-eslint/parser@6.9.1)(eslint-plugin-import@2.29.0)(eslint@8.52.0) + specifier: 3.6.1 + version: 3.6.1(@typescript-eslint/parser@7.1.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0) eslint-plugin-compat: specifier: 4.2.0 - version: 4.2.0(eslint@8.52.0) + version: 4.2.0(eslint@8.57.0) eslint-plugin-eslint-comments: specifier: 3.2.0 - version: 3.2.0(eslint@8.52.0) + version: 3.2.0(eslint@8.57.0) eslint-plugin-import: - specifier: 2.29.0 - version: 2.29.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-typescript@3.6.0)(eslint@8.52.0) + specifier: 2.29.1 + version: 2.29.1(@typescript-eslint/parser@7.1.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-jest: - specifier: 27.6.0 - version: 27.6.0(@typescript-eslint/eslint-plugin@6.9.1)(eslint@8.52.0)(jest@29.6.2)(typescript@5.2.2) + specifier: 27.9.0 + version: 27.9.0(@typescript-eslint/eslint-plugin@7.1.1)(eslint@8.57.0)(jest@29.6.2)(typescript@5.2.2) eslint-plugin-jsx-a11y: - specifier: 6.7.1 - version: 6.7.1(eslint@8.52.0) + specifier: 6.8.0 + version: 6.8.0(eslint@8.57.0) eslint-plugin-react: - specifier: 7.33.0 - version: 7.33.0(eslint@8.52.0) + specifier: 7.34.0 + version: 7.34.0(eslint@8.57.0) eslint-plugin-react-hooks: specifier: 4.6.0 - version: 4.6.0(eslint@8.52.0) + version: 4.6.0(eslint@8.57.0) eslint-plugin-storybook: - specifier: 0.6.12 - version: 0.6.12(eslint@8.52.0)(typescript@5.2.2) + specifier: 0.8.0 + version: 0.8.0(eslint@8.57.0)(typescript@5.2.2) eslint-plugin-testing-library: - specifier: 6.1.0 - version: 6.1.0(eslint@8.52.0)(typescript@5.2.2) + specifier: 6.2.0 + version: 6.2.0(eslint@8.57.0)(typescript@5.2.2) eslint-plugin-unicorn: - specifier: 49.0.0 - version: 49.0.0(eslint@8.52.0) + specifier: 51.0.1 + version: 51.0.1(eslint@8.57.0) eventsourcemock: specifier: 2.0.0 version: 2.0.0 @@ -379,7 +379,7 @@ devDependencies: version: 2.0.0 jest-runner-eslint: specifier: 2.1.0 - version: 2.1.0(eslint@8.52.0)(jest@29.6.2) + version: 2.1.0(eslint@8.57.0)(jest@29.6.2) jest-websocket-mock: specifier: 2.5.0 version: 2.5.0 @@ -427,7 +427,7 @@ devDependencies: version: 4.5.2(@types/node@18.19.0) vite-plugin-checker: specifier: 0.6.0 - version: 0.6.0(eslint@8.52.0)(typescript@5.2.2)(vite@4.5.2) + version: 0.6.0(eslint@8.57.0)(typescript@5.2.2)(vite@4.5.2) vite-plugin-turbosnap: specifier: 1.0.2 version: 1.0.2 @@ -2198,13 +2198,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.52.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.52.0 + eslint: 8.57.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2213,8 +2213,8 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.2: - resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -2230,8 +2230,8 @@ packages: - supports-color dev: true - /@eslint/js@8.52.0: - resolution: {integrity: sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==} + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -2281,11 +2281,11 @@ packages: resolution: {integrity: sha512-A1rDiQB7X7oOgsZbjeSQV3r/ZOBEZDjKEnlLvWqd4sMBZwGKTDnCxQYoqedY/8if2NXyiQoLXPdV5RpQ/3BerQ==} dev: false - /@humanwhocodes/config-array@0.11.13: - resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.1 + '@humanwhocodes/object-schema': 2.0.2 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -2297,8 +2297,8 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.1: - resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + /@humanwhocodes/object-schema@2.0.2: + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} dev: true /@icons/material@0.2.4(react@18.2.0): @@ -5325,25 +5325,25 @@ packages: '@types/yargs-parser': 21.0.2 dev: true - /@typescript-eslint/eslint-plugin@6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-w0tiiRc9I4S5XSXXrMHOWgHgxbrBn1Ro+PmiYhSg2ZVdxrAJtQgzU5o2m1BfP6UOn7Vxcc6152vFjQfmZR4xEg==} + /@typescript-eslint/eslint-plugin@7.1.1(@typescript-eslint/parser@7.1.1)(eslint@8.57.0)(typescript@5.2.2): + resolution: {integrity: sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.9.1(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.9.1 - '@typescript-eslint/type-utils': 6.9.1(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.9.1(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.9.1 + '@typescript-eslint/parser': 7.1.1(eslint@8.57.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 7.1.1 + '@typescript-eslint/type-utils': 7.1.1(eslint@8.57.0)(typescript@5.2.2) + '@typescript-eslint/utils': 7.1.1(eslint@8.57.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 7.1.1 debug: 4.3.4 - eslint: 8.52.0 + eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -5354,22 +5354,22 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.9.1(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg==} + /@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.2.2): + resolution: {integrity: sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.9.1 - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.9.1 + '@typescript-eslint/scope-manager': 7.1.1 + '@typescript-eslint/types': 7.1.1 + '@typescript-eslint/typescript-estree': 7.1.1(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 7.1.1 debug: 4.3.4 - eslint: 8.52.0 + eslint: 8.57.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color @@ -5383,28 +5383,28 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@6.9.1: - resolution: {integrity: sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg==} + /@typescript-eslint/scope-manager@7.1.1: + resolution: {integrity: sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/visitor-keys': 6.9.1 + '@typescript-eslint/types': 7.1.1 + '@typescript-eslint/visitor-keys': 7.1.1 dev: true - /@typescript-eslint/type-utils@6.9.1(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-eh2oHaUKCK58qIeYp19F5V5TbpM52680sB4zNSz29VBQPTWIlE/hCj5P5B1AChxECe/fmZlspAWFuRniep1Skg==} + /@typescript-eslint/type-utils@7.1.1(eslint@8.57.0)(typescript@5.2.2): + resolution: {integrity: sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.2.2) - '@typescript-eslint/utils': 6.9.1(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 7.1.1(typescript@5.2.2) + '@typescript-eslint/utils': 7.1.1(eslint@8.57.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.52.0 + eslint: 8.57.0 ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: @@ -5416,8 +5416,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.9.1: - resolution: {integrity: sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ==} + /@typescript-eslint/types@7.1.1: + resolution: {integrity: sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==} engines: {node: ^16.0.0 || >=18.0.0} dev: true @@ -5442,8 +5442,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.9.1(typescript@5.2.2): - resolution: {integrity: sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw==} + /@typescript-eslint/typescript-estree@7.1.1(typescript@5.2.2): + resolution: {integrity: sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -5451,11 +5451,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/visitor-keys': 6.9.1 + '@typescript-eslint/types': 7.1.1 + '@typescript-eslint/visitor-keys': 7.1.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 + minimatch: 9.0.3 semver: 7.5.3 ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 @@ -5463,19 +5464,19 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.52.0)(typescript@5.2.2): + /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.2.2): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.14 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - eslint: 8.52.0 + eslint: 8.57.0 eslint-scope: 5.1.1 semver: 7.5.3 transitivePeerDependencies: @@ -5483,19 +5484,19 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.9.1(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA==} + /@typescript-eslint/utils@7.1.1(eslint@8.57.0)(typescript@5.2.2): + resolution: {integrity: sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.14 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.9.1 - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.2.2) - eslint: 8.52.0 + '@typescript-eslint/scope-manager': 7.1.1 + '@typescript-eslint/types': 7.1.1 + '@typescript-eslint/typescript-estree': 7.1.1(typescript@5.2.2) + eslint: 8.57.0 semver: 7.5.3 transitivePeerDependencies: - supports-color @@ -5510,11 +5511,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.9.1: - resolution: {integrity: sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw==} + /@typescript-eslint/visitor-keys@7.1.1: + resolution: {integrity: sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.9.1 + '@typescript-eslint/types': 7.1.1 eslint-visitor-keys: 3.4.3 dev: true @@ -5838,19 +5839,16 @@ packages: is-array-buffer: 3.0.2 dev: true - /array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - dev: true - - /array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-string: 1.0.7 + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + dev: true + + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: true /array-includes@3.1.7: @@ -5869,6 +5867,17 @@ packages: engines: {node: '>=8'} dev: true + /array.prototype.findlast@1.2.4: + resolution: {integrity: sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + dev: true + /array.prototype.findlastindex@1.2.3: resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} @@ -5890,8 +5899,8 @@ packages: es-shim-unscopables: 1.0.2 dev: true - /array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 @@ -5900,9 +5909,8 @@ packages: es-shim-unscopables: 1.0.2 dev: true - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} + /array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -5910,14 +5918,14 @@ packages: es-shim-unscopables: 1.0.2 dev: true - /array.prototype.tosorted@1.1.1: - resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + /array.prototype.tosorted@1.1.3: + resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 + es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 dev: true /arraybuffer.prototype.slice@1.0.2: @@ -5933,6 +5941,20 @@ packages: is-shared-array-buffer: 1.0.2 dev: true + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + dev: true + /asn1@0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} dependencies: @@ -5959,8 +5981,8 @@ packages: '@mdn/browser-compat-data': 5.3.14 dev: true - /ast-types-flow@0.0.7: - resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} + /ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} dev: true /ast-types@0.16.1: @@ -5978,6 +6000,12 @@ packages: resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} dev: true + /asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + dependencies: + has-symbols: 1.0.3 + dev: true + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -5986,8 +6014,15 @@ packages: engines: {node: '>= 0.4'} dev: true - /axe-core@4.7.2: - resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 + dev: true + + /axe-core@4.7.0: + resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} engines: {node: '>=4'} dev: true @@ -6251,6 +6286,17 @@ packages: update-browserslist-db: 1.0.13(browserslist@4.22.1) dev: true + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001593 + electron-to-chromium: 1.4.690 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + dev: true + /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: @@ -6302,6 +6348,17 @@ packages: set-function-length: 1.1.1 dev: true + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.1 + dev: true + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -6324,6 +6381,10 @@ packages: resolution: {integrity: sha512-cPiMKZgqgkg5LY3/ntGeLFUpi6tzddBNS58A4tnTgQw1zON7u2sZMU7SzOeVH4tj20++9ggL+V6FDOFMTaFFYA==} dev: true + /caniuse-lite@1.0.30001593: + resolution: {integrity: sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==} + dev: true + /canvas@2.11.0: resolution: {integrity: sha512-bdTjFexjKJEwtIo0oRx8eD4G2yWoUOXP9lj279jmQ2zMnTQhT8C3512OKz3s+ZOaQlLbE7TuVvRDYDB3Llyy5g==} engines: {node: '>=6'} @@ -6481,6 +6542,11 @@ packages: engines: {node: '>=8'} dev: true + /ci-info@4.0.0: + resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} + engines: {node: '>=8'} + dev: true + /cjs-module-lexer@1.2.3: resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} dev: true @@ -6710,6 +6776,12 @@ packages: browserslist: 4.22.1 dev: true + /core-js-compat@3.36.0: + resolution: {integrity: sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==} + dependencies: + browserslist: 4.23.0 + dev: true + /core-js@3.32.0: resolution: {integrity: sha512-rd4rYZNlF3WuoYuRIDEmbR/ga9CeuWX9U05umAvgrrZoHY4Z++cp/xwPQMvUpBB4Ag6J8KfD80G0zwCyaSxDww==} requiresBuild: true @@ -6981,6 +7053,15 @@ packages: has-property-descriptors: 1.0.1 dev: true + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + dev: true + /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} @@ -7199,6 +7280,10 @@ packages: resolution: {integrity: sha512-RlFobl4D3ieetbnR+2EpxdzFl9h0RAJkPK3pfiwMug2nhBin2ZCsGIAJWdpNniLz43sgXam/CgipOmvTA+rUiA==} dev: true + /electron-to-chromium@1.4.690: + resolution: {integrity: sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA==} + dev: true + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} @@ -7305,6 +7390,65 @@ packages: which-typed-array: 1.1.13 dev: true + /es-abstract@1.22.5: + resolution: {integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.1 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.0 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.5 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.14 + dev: true + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: true + /es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: @@ -7319,6 +7463,27 @@ packages: stop-iteration-iterator: 1.0.0 dev: true + /es-iterator-helpers@1.0.17: + resolution: {integrity: sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==} + engines: {node: '>= 0.4'} + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.2 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + globalthis: 1.0.3 + has-property-descriptors: 1.0.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + iterator.prototype: 1.1.2 + safe-array-concat: 1.1.0 + dev: true + /es-module-lexer@0.9.3: resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} dev: true @@ -7327,11 +7492,20 @@ packages: resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 has-tostringtag: 1.0.0 hasown: 2.0.0 dev: true + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.1 + dev: true + /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: @@ -7429,13 +7603,13 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier@9.0.0(eslint@8.52.0): - resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} + /eslint-config-prettier@9.1.0(eslint@8.57.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.52.0 + eslint: 8.57.0 dev: true /eslint-import-resolver-node@0.3.9: @@ -7448,8 +7622,8 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@6.9.1)(eslint-plugin-import@2.29.0)(eslint@8.52.0): - resolution: {integrity: sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==} + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.1.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -7457,12 +7631,12 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.15.0 - eslint: 8.52.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.52.0) - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-typescript@3.6.0)(eslint@8.52.0) + eslint: 8.57.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.1.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.1.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.1 get-tsconfig: 4.7.0 - is-core-module: 2.13.0 + is-core-module: 2.13.1 is-glob: 4.0.3 transitivePeerDependencies: - '@typescript-eslint/parser' @@ -7471,7 +7645,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.52.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.1.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -7492,16 +7666,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.9.1(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/parser': 7.1.1(eslint@8.57.0)(typescript@5.2.2) debug: 3.2.7 - eslint: 8.52.0 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.9.1)(eslint-plugin-import@2.29.0)(eslint@8.52.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.1.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-compat@4.2.0(eslint@8.52.0): + /eslint-plugin-compat@4.2.0(eslint@8.57.0): resolution: {integrity: sha512-RDKSYD0maWy5r7zb5cWQS+uSPc26mgOzdORJ8hxILmWM7S/Ncwky7BcAtXVY5iRbKjBdHsWU8Yg7hfoZjtkv7w==} engines: {node: '>=14.x'} peerDependencies: @@ -7511,25 +7685,25 @@ packages: ast-metadata-inferer: 0.8.0 browserslist: 4.21.10 caniuse-lite: 1.0.30001524 - eslint: 8.52.0 + eslint: 8.57.0 find-up: 5.0.0 lodash.memoize: 4.1.2 semver: 7.5.3 dev: true - /eslint-plugin-eslint-comments@3.2.0(eslint@8.52.0): + /eslint-plugin-eslint-comments@3.2.0(eslint@8.57.0): resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: eslint: '>=4.19.1' dependencies: escape-string-regexp: 1.0.5 - eslint: 8.52.0 + eslint: 8.57.0 ignore: 5.2.4 dev: true - /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-typescript@3.6.0)(eslint@8.52.0): - resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.1.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -7538,16 +7712,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.9.1(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/parser': 7.1.1(eslint@8.57.0)(typescript@5.2.2) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.52.0 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.52.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.1.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -7556,18 +7730,18 @@ packages: object.groupby: 1.0.1 object.values: 1.1.7 semver: 7.5.3 - tsconfig-paths: 3.14.2 + tsconfig-paths: 3.15.0 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color dev: true - /eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.9.1)(eslint@8.52.0)(jest@29.6.2)(typescript@5.2.2): - resolution: {integrity: sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==} + /eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.1.1)(eslint@8.57.0)(jest@29.6.2)(typescript@5.2.2): + resolution: {integrity: sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 + '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 || ^7.0.0 eslint: ^7.0.0 || ^8.0.0 jest: '*' peerDependenciesMeta: @@ -7576,82 +7750,85 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.52.0)(typescript@5.2.2) - eslint: 8.52.0 + '@typescript-eslint/eslint-plugin': 7.1.1(@typescript-eslint/parser@7.1.1)(eslint@8.57.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.2.2) + eslint: 8.57.0 jest: 29.6.2(@types/node@18.19.0)(ts-node@10.9.1) transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.52.0): - resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): + resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.23.2 aria-query: 5.3.0 - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - ast-types-flow: 0.0.7 - axe-core: 4.7.2 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.7.0 axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.52.0 - has: 1.0.3 - jsx-ast-utils: 3.3.4 - language-tags: 1.0.5 + es-iterator-helpers: 1.0.17 + eslint: 8.57.0 + hasown: 2.0.0 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - semver: 7.5.3 + object.entries: 1.1.7 + object.fromentries: 2.0.7 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.52.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.52.0 + eslint: 8.57.0 dev: true - /eslint-plugin-react@7.33.0(eslint@8.52.0): - resolution: {integrity: sha512-qewL/8P34WkY8jAqdQxsiL82pDUeT7nhs8IsuXgfgnsEloKCT4miAV9N9kGtx7/KM9NH/NCGUE7Edt9iGxLXFw==} + /eslint-plugin-react@7.34.0(eslint@8.57.0): + resolution: {integrity: sha512-MeVXdReleBTdkz/bvcQMSnCXGi+c9kvy51IpinjnJgutl3YTHWsDdke7Z1ufZpGfDG8xduBDKyjtB9JH1eBKIQ==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - array.prototype.tosorted: 1.1.1 + array-includes: 3.1.7 + array.prototype.findlast: 1.2.4 + array.prototype.flatmap: 1.3.2 + array.prototype.toreversed: 1.1.2 + array.prototype.tosorted: 1.1.3 doctrine: 2.1.0 - eslint: 8.52.0 + es-iterator-helpers: 1.0.17 + eslint: 8.57.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.4 minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - object.hasown: 1.1.2 - object.values: 1.1.6 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 prop-types: 15.8.1 - resolve: 2.0.0-next.4 + resolve: 2.0.0-next.5 semver: 7.5.3 - string.prototype.matchall: 4.0.8 + string.prototype.matchall: 4.0.10 dev: true - /eslint-plugin-storybook@0.6.12(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-XbIvrq6hNVG6rpdBr+eBw63QhOMLpZneQVSooEDow8aQCWGCk/5vqtap1yxpVydNfSxi3S/3mBBRLQqKUqQRww==} - engines: {node: 12.x || 14.x || >= 16} + /eslint-plugin-storybook@0.8.0(eslint@8.57.0)(typescript@5.2.2): + resolution: {integrity: sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==} + engines: {node: '>= 18'} peerDependencies: eslint: '>=6' dependencies: '@storybook/csf': 0.0.1 - '@typescript-eslint/utils': 5.62.0(eslint@8.52.0)(typescript@5.2.2) - eslint: 8.52.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.2.2) + eslint: 8.57.0 requireindex: 1.2.0 ts-dedent: 2.2.0 transitivePeerDependencies: @@ -7659,30 +7836,32 @@ packages: - typescript dev: true - /eslint-plugin-testing-library@6.1.0(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-r7kE+az3tbp8vyRwfyAGZ6V/xw+XvdWFPicIo6jbOPZoossOFDeHizARqPGV6gEkyF8hyCFhhH3mlQOGS3N5Sg==} + /eslint-plugin-testing-library@6.2.0(eslint@8.57.0)(typescript@5.2.2): + resolution: {integrity: sha512-+LCYJU81WF2yQ+Xu4A135CgK8IszcFcyMF4sWkbiu6Oj+Nel0TrkZq/HvDw0/1WuO3dhDQsZA/OpEMGd0NfcUw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.52.0)(typescript@5.2.2) - eslint: 8.52.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.2.2) + eslint: 8.57.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-unicorn@49.0.0(eslint@8.52.0): - resolution: {integrity: sha512-0fHEa/8Pih5cmzFW5L7xMEfUTvI9WKeQtjmKpTUmY+BiFCDxkxrTdnURJOHKykhtwIeyYsxnecbGvDCml++z4Q==} + /eslint-plugin-unicorn@51.0.1(eslint@8.57.0): + resolution: {integrity: sha512-MuR/+9VuB0fydoI0nIn2RDA5WISRn4AsJyNSaNKLVwie9/ONvQhxOBbkfSICBPnzKrB77Fh6CZZXjgTt/4Latw==} engines: {node: '>=16'} peerDependencies: - eslint: '>=8.52.0' + eslint: '>=8.56.0' dependencies: '@babel/helper-validator-identifier': 7.22.20 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) - ci-info: 3.9.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint/eslintrc': 2.1.4 + ci-info: 4.0.0 clean-regexp: 1.0.0 - eslint: 8.52.0 + core-js-compat: 3.36.0 + eslint: 8.57.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -7693,6 +7872,8 @@ packages: regjsparser: 0.10.0 semver: 7.5.3 strip-indent: 3.0.0 + transitivePeerDependencies: + - supports-color dev: true /eslint-scope@5.1.1: @@ -7716,16 +7897,16 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.52.0: - resolution: {integrity: sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==} + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.52.0 - '@humanwhocodes/config-array': 0.11.13 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 '@ungap/structured-clone': 1.2.0 @@ -8252,6 +8433,17 @@ packages: hasown: 2.0.0 dev: true + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + dev: true + /get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} @@ -8285,6 +8477,15 @@ packages: get-intrinsic: 1.2.2 dev: true + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + dev: true + /get-tsconfig@4.7.0: resolution: {integrity: sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==} dependencies: @@ -8461,11 +8662,22 @@ packages: get-intrinsic: 1.2.2 dev: true + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + dev: true + /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} dev: true + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + dev: true + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} @@ -8478,21 +8690,28 @@ packages: has-symbols: 1.0.3 dev: true + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + /has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 - dev: true - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + /hasown@2.0.1: + resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 + dev: true /hast-util-parse-selector@2.2.5: resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} @@ -8725,6 +8944,15 @@ packages: side-channel: 1.0.4 dev: true + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + hasown: 2.0.0 + side-channel: 1.0.4 + dev: true + /invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: @@ -8771,9 +8999,24 @@ packages: is-typed-array: 1.1.12 dev: true + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -8812,12 +9055,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-core-module@2.13.0: - resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} - dependencies: - has: 1.0.3 - dev: true - /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: @@ -8848,6 +9085,12 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.7 + dev: true + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -8906,6 +9149,11 @@ packages: engines: {node: '>= 0.4'} dev: true + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + dev: true + /is-node-process@1.2.0: resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} dev: true @@ -8975,6 +9223,13 @@ packages: call-bind: 1.0.5 dev: true + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: true + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -9001,6 +9256,13 @@ packages: which-typed-array: 1.1.13 dev: true + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.14 + dev: true + /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -9102,6 +9364,16 @@ packages: istanbul-lib-report: 3.0.1 dev: true + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.5 + set-function-name: 2.0.1 + dev: true + /jackspeak@2.3.6: resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} @@ -9448,7 +9720,7 @@ packages: slash: 3.0.0 dev: true - /jest-runner-eslint@2.1.0(eslint@8.52.0)(jest@29.6.2): + /jest-runner-eslint@2.1.0(eslint@8.57.0)(jest@29.6.2): resolution: {integrity: sha512-5gQOLej+HLDNzxrqOxg+l/ZY6hAHYhzO7gs3eOR+PQz14wpDuLDIivn+xJ8uwHW2tYM/37NGskqwBe5RbbJPEw==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -9459,7 +9731,7 @@ packages: cosmiconfig: 7.1.0 create-jest-runner: 0.11.2 dot-prop: 6.0.1 - eslint: 8.52.0 + eslint: 8.57.0 jest: 29.6.2(@types/node@18.19.0)(ts-node@10.9.1) transitivePeerDependencies: - '@jest/test-result' @@ -9835,7 +10107,17 @@ packages: resolution: {integrity: sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.6 + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 + object.assign: 4.1.4 + object.values: 1.1.7 + dev: true + + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.7 array.prototype.flat: 1.3.2 object.assign: 4.1.4 object.values: 1.1.7 @@ -9866,8 +10148,9 @@ packages: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true - /language-tags@1.0.5: - resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + /language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} dependencies: language-subtag-registry: 0.3.22 dev: true @@ -11113,6 +11396,10 @@ packages: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} dev: true + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + /nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} @@ -11184,17 +11471,18 @@ packages: object-keys: 1.1.1 dev: true - /object.entries@1.1.6: - resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + has-symbols: 1.0.3 + object-keys: 1.1.1 dev: true - /object.fromentries@2.0.6: - resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + /object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 @@ -11220,22 +11508,13 @@ packages: get-intrinsic: 1.2.2 dev: true - /object.hasown@1.1.2: - resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + /object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} dependencies: define-properties: 1.2.1 es-abstract: 1.22.3 dev: true - /object.values@1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true - /object.values@1.1.7: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} @@ -11534,6 +11813,11 @@ packages: '@babel/runtime': 7.23.2 dev: true + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: true + /postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} @@ -12221,6 +12505,19 @@ packages: strip-indent: 3.0.0 dev: true + /reflect.getprototypeof@1.0.5: + resolution: {integrity: sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + /refractor@3.6.0: resolution: {integrity: sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==} dependencies: @@ -12266,6 +12563,16 @@ packages: set-function-name: 2.0.1 dev: true + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.1 + dev: true + /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} engines: {node: '>=4'} @@ -12417,8 +12724,8 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve@2.0.0-next.4: - resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true dependencies: is-core-module: 2.13.1 @@ -12523,6 +12830,16 @@ packages: isarray: 2.0.5 dev: true + /safe-array-concat@1.1.0: + resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true @@ -12538,6 +12855,15 @@ packages: is-regex: 1.1.4 dev: true + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + dev: true + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true @@ -12616,6 +12942,18 @@ packages: has-property-descriptors: 1.0.1 dev: true + /set-function-length@1.2.1: + resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + dev: true + /set-function-name@2.0.1: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} @@ -12930,8 +13268,8 @@ packages: strip-ansi: 7.1.0 dev: true - /string.prototype.matchall@4.0.8: - resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + /string.prototype.matchall@4.0.10: + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -12940,6 +13278,7 @@ packages: has-symbols: 1.0.3 internal-slot: 1.0.6 regexp.prototype.flags: 1.5.1 + set-function-name: 2.0.1 side-channel: 1.0.4 dev: true @@ -13374,8 +13713,8 @@ packages: ts-morph: 13.0.3 dev: true - /tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 @@ -13470,6 +13809,15 @@ packages: is-typed-array: 1.1.12 dev: true + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + dev: true + /typed-array-byte-length@1.0.0: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} @@ -13480,6 +13828,17 @@ packages: is-typed-array: 1.1.12 dev: true + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true + /typed-array-byte-offset@1.0.0: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} engines: {node: '>= 0.4'} @@ -13491,6 +13850,18 @@ packages: is-typed-array: 1.1.12 dev: true + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: @@ -13499,6 +13870,18 @@ packages: is-typed-array: 1.1.12 dev: true + /typed-array-length@1.0.5: + resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + dev: true + /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: true @@ -13727,6 +14110,17 @@ packages: picocolors: 1.0.0 dev: true + /update-browserslist-db@1.0.13(browserslist@4.23.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -13879,7 +14273,7 @@ packages: vfile-message: 4.0.2 dev: false - /vite-plugin-checker@0.6.0(eslint@8.52.0)(typescript@5.2.2)(vite@4.5.2): + /vite-plugin-checker@0.6.0(eslint@8.57.0)(typescript@5.2.2)(vite@4.5.2): resolution: {integrity: sha512-DWZ9Hv2TkpjviPxAelNUt4Q3IhSGrx7xrwdM64NI+Q4dt8PaMWJJh4qGNtSrfEuiuIzWWo00Ksvh5It4Y3L9xQ==} engines: {node: '>=14.16'} peerDependencies: @@ -13915,7 +14309,7 @@ packages: chalk: 4.1.2 chokidar: 3.5.3 commander: 8.3.0 - eslint: 8.52.0 + eslint: 8.57.0 fast-glob: 3.3.1 fs-extra: 11.1.1 lodash.debounce: 4.0.8 @@ -14100,6 +14494,24 @@ packages: is-symbol: 1.0.4 dev: true + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.13 + dev: true + /which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: @@ -14120,6 +14532,17 @@ packages: has-tostringtag: 1.0.0 dev: true + /which-typed-array@1.1.14: + resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + dev: true + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} diff --git a/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx b/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx index 90d8e5a6f89b1..299d8430b1b16 100644 --- a/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx +++ b/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx @@ -26,8 +26,8 @@ import { MoreMenuTrigger, ThreeDotsButton, } from "components/MoreMenu/MoreMenu"; -import { ExternalAuthPollingState } from "pages/CreateWorkspacePage/CreateWorkspacePage"; import { TableEmpty } from "components/TableEmpty/TableEmpty"; +import type { ExternalAuthPollingState } from "pages/CreateWorkspacePage/CreateWorkspacePage"; export type ExternalAuthPageViewProps = { isLoading: boolean; @@ -71,25 +71,24 @@ export const ExternalAuthPageView: FC = ({ - {((auths.providers === null || auths.providers?.length === 0) && ( + {auths.providers === null || auths.providers?.length === 0 ? ( - )) || - auths.providers?.map((app: ExternalAuthLinkProvider) => { - return ( - l.provider_id === app.id)} - onUnlinkExternalAuth={() => { - onUnlinkExternalAuth(app.id); - }} - onValidateExternalAuth={() => { - onValidateExternalAuth(app.id); - }} - /> - ); - })} + ) : ( + auths.providers?.map((app) => ( + l.provider_id === app.id)} + onUnlinkExternalAuth={() => { + onUnlinkExternalAuth(app.id); + }} + onValidateExternalAuth={() => { + onValidateExternalAuth(app.id); + }} + /> + )) + )} From ea338cc956eb371fdea19a5b7749d5ec84d5cd76 Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Mon, 4 Mar 2024 19:50:43 +0000 Subject: [PATCH 02/12] update config --- site/.eslintrc.yaml | 10 + site/package.json | 24 +- site/pnpm-lock.yaml | 887 ++++++++++++-------------------------------- 3 files changed, 254 insertions(+), 667 deletions(-) diff --git a/site/.eslintrc.yaml b/site/.eslintrc.yaml index 78da4dd93fdb9..42470093d03fc 100644 --- a/site/.eslintrc.yaml +++ b/site/.eslintrc.yaml @@ -54,6 +54,9 @@ root: true rules: "@typescript-eslint/brace-style": ["error", "1tbs", { "allowSingleLine": false }] + "@typescript-eslint/consistent-type-imports": + - error + - fixStyle: inline-type-imports "@typescript-eslint/method-signature-style": ["error", "property"] # TODO: Investigate whether to enable this rule & fix and/or disable all its complaints "@typescript-eslint/no-misused-promises": "off" @@ -104,6 +107,13 @@ rules: import/no-named-as-default: "off" import/no-named-as-default-member: "off" import/prefer-default-export: "off" + import/order: + - error + - groups: [["builtin", "external"], "internal", "parent"] + newlines-between: never + alphabetize: + order: asc + caseInsensitive: true jest/no-focused-tests: "error" jsx-a11y/label-has-for: "off" jsx-a11y/no-autofocus: "off" diff --git a/site/package.json b/site/package.json index a9bc915d7712f..96c0702183ee3 100644 --- a/site/package.json +++ b/site/package.json @@ -130,23 +130,23 @@ "@types/ssh2": "1.11.13", "@types/ua-parser-js": "0.7.36", "@types/uuid": "9.0.2", - "@typescript-eslint/eslint-plugin": "7.1.1", - "@typescript-eslint/parser": "7.1.1", + "@typescript-eslint/eslint-plugin": "6.9.1", + "@typescript-eslint/parser": "6.9.1", "@vitejs/plugin-react": "4.1.0", "chromatic": "10.6.1", - "eslint": "8.57.0", - "eslint-config-prettier": "9.1.0", - "eslint-import-resolver-typescript": "3.6.1", + "eslint": "8.52.0", + "eslint-config-prettier": "9.0.0", + "eslint-import-resolver-typescript": "3.6.0", "eslint-plugin-compat": "4.2.0", "eslint-plugin-eslint-comments": "3.2.0", - "eslint-plugin-import": "2.29.1", - "eslint-plugin-jest": "27.9.0", - "eslint-plugin-jsx-a11y": "6.8.0", - "eslint-plugin-react": "7.34.0", + "eslint-plugin-import": "2.29.0", + "eslint-plugin-jest": "27.6.0", + "eslint-plugin-jsx-a11y": "6.7.1", + "eslint-plugin-react": "7.33.0", "eslint-plugin-react-hooks": "4.6.0", - "eslint-plugin-storybook": "0.8.0", - "eslint-plugin-testing-library": "6.2.0", - "eslint-plugin-unicorn": "51.0.1", + "eslint-plugin-storybook": "0.6.12", + "eslint-plugin-testing-library": "6.1.0", + "eslint-plugin-unicorn": "49.0.0", "eventsourcemock": "2.0.0", "express": "4.18.2", "jest": "29.6.2", diff --git a/site/pnpm-lock.yaml b/site/pnpm-lock.yaml index 924a5b34204a9..d2ae44da0a3ae 100644 --- a/site/pnpm-lock.yaml +++ b/site/pnpm-lock.yaml @@ -306,11 +306,11 @@ devDependencies: specifier: 9.0.2 version: 9.0.2 '@typescript-eslint/eslint-plugin': - specifier: 7.1.1 - version: 7.1.1(@typescript-eslint/parser@7.1.1)(eslint@8.57.0)(typescript@5.2.2) + specifier: 6.9.1 + version: 6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.52.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 7.1.1 - version: 7.1.1(eslint@8.57.0)(typescript@5.2.2) + specifier: 6.9.1 + version: 6.9.1(eslint@8.52.0)(typescript@5.2.2) '@vitejs/plugin-react': specifier: 4.1.0 version: 4.1.0(vite@4.5.2) @@ -318,44 +318,44 @@ devDependencies: specifier: 10.6.1 version: 10.6.1 eslint: - specifier: 8.57.0 - version: 8.57.0 + specifier: 8.52.0 + version: 8.52.0 eslint-config-prettier: - specifier: 9.1.0 - version: 9.1.0(eslint@8.57.0) + specifier: 9.0.0 + version: 9.0.0(eslint@8.52.0) eslint-import-resolver-typescript: - specifier: 3.6.1 - version: 3.6.1(@typescript-eslint/parser@7.1.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + specifier: 3.6.0 + version: 3.6.0(@typescript-eslint/parser@6.9.1)(eslint-plugin-import@2.29.0)(eslint@8.52.0) eslint-plugin-compat: specifier: 4.2.0 - version: 4.2.0(eslint@8.57.0) + version: 4.2.0(eslint@8.52.0) eslint-plugin-eslint-comments: specifier: 3.2.0 - version: 3.2.0(eslint@8.57.0) + version: 3.2.0(eslint@8.52.0) eslint-plugin-import: - specifier: 2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.1.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + specifier: 2.29.0 + version: 2.29.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-typescript@3.6.0)(eslint@8.52.0) eslint-plugin-jest: - specifier: 27.9.0 - version: 27.9.0(@typescript-eslint/eslint-plugin@7.1.1)(eslint@8.57.0)(jest@29.6.2)(typescript@5.2.2) + specifier: 27.6.0 + version: 27.6.0(@typescript-eslint/eslint-plugin@6.9.1)(eslint@8.52.0)(jest@29.6.2)(typescript@5.2.2) eslint-plugin-jsx-a11y: - specifier: 6.8.0 - version: 6.8.0(eslint@8.57.0) + specifier: 6.7.1 + version: 6.7.1(eslint@8.52.0) eslint-plugin-react: - specifier: 7.34.0 - version: 7.34.0(eslint@8.57.0) + specifier: 7.33.0 + version: 7.33.0(eslint@8.52.0) eslint-plugin-react-hooks: specifier: 4.6.0 - version: 4.6.0(eslint@8.57.0) + version: 4.6.0(eslint@8.52.0) eslint-plugin-storybook: - specifier: 0.8.0 - version: 0.8.0(eslint@8.57.0)(typescript@5.2.2) + specifier: 0.6.12 + version: 0.6.12(eslint@8.52.0)(typescript@5.2.2) eslint-plugin-testing-library: - specifier: 6.2.0 - version: 6.2.0(eslint@8.57.0)(typescript@5.2.2) + specifier: 6.1.0 + version: 6.1.0(eslint@8.52.0)(typescript@5.2.2) eslint-plugin-unicorn: - specifier: 51.0.1 - version: 51.0.1(eslint@8.57.0) + specifier: 49.0.0 + version: 49.0.0(eslint@8.52.0) eventsourcemock: specifier: 2.0.0 version: 2.0.0 @@ -379,7 +379,7 @@ devDependencies: version: 2.0.0 jest-runner-eslint: specifier: 2.1.0 - version: 2.1.0(eslint@8.57.0)(jest@29.6.2) + version: 2.1.0(eslint@8.52.0)(jest@29.6.2) jest-websocket-mock: specifier: 2.5.0 version: 2.5.0 @@ -427,7 +427,7 @@ devDependencies: version: 4.5.2(@types/node@18.19.0) vite-plugin-checker: specifier: 0.6.0 - version: 0.6.0(eslint@8.57.0)(typescript@5.2.2)(vite@4.5.2) + version: 0.6.0(eslint@8.52.0)(typescript@5.2.2)(vite@4.5.2) vite-plugin-turbosnap: specifier: 1.0.2 version: 1.0.2 @@ -2198,13 +2198,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.52.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.57.0 + eslint: 8.52.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2213,8 +2213,8 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -2230,8 +2230,8 @@ packages: - supports-color dev: true - /@eslint/js@8.57.0: - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + /@eslint/js@8.52.0: + resolution: {integrity: sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -2281,11 +2281,11 @@ packages: resolution: {integrity: sha512-A1rDiQB7X7oOgsZbjeSQV3r/ZOBEZDjKEnlLvWqd4sMBZwGKTDnCxQYoqedY/8if2NXyiQoLXPdV5RpQ/3BerQ==} dev: false - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.2 + '@humanwhocodes/object-schema': 2.0.1 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -2297,8 +2297,8 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.2: - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} dev: true /@icons/material@0.2.4(react@18.2.0): @@ -5325,25 +5325,25 @@ packages: '@types/yargs-parser': 21.0.2 dev: true - /@typescript-eslint/eslint-plugin@7.1.1(@typescript-eslint/parser@7.1.1)(eslint@8.57.0)(typescript@5.2.2): - resolution: {integrity: sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw==} + /@typescript-eslint/eslint-plugin@6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-w0tiiRc9I4S5XSXXrMHOWgHgxbrBn1Ro+PmiYhSg2ZVdxrAJtQgzU5o2m1BfP6UOn7Vxcc6152vFjQfmZR4xEg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.1.1(eslint@8.57.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 7.1.1 - '@typescript-eslint/type-utils': 7.1.1(eslint@8.57.0)(typescript@5.2.2) - '@typescript-eslint/utils': 7.1.1(eslint@8.57.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 7.1.1 + '@typescript-eslint/parser': 6.9.1(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.9.1 + '@typescript-eslint/type-utils': 6.9.1(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.9.1(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.9.1 debug: 4.3.4 - eslint: 8.57.0 + eslint: 8.52.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -5354,22 +5354,22 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@7.1.1(eslint@8.57.0)(typescript@5.2.2): - resolution: {integrity: sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ==} + /@typescript-eslint/parser@6.9.1(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.1.1 - '@typescript-eslint/types': 7.1.1 - '@typescript-eslint/typescript-estree': 7.1.1(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 7.1.1 + '@typescript-eslint/scope-manager': 6.9.1 + '@typescript-eslint/types': 6.9.1 + '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.9.1 debug: 4.3.4 - eslint: 8.57.0 + eslint: 8.52.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color @@ -5383,28 +5383,28 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@7.1.1: - resolution: {integrity: sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==} + /@typescript-eslint/scope-manager@6.9.1: + resolution: {integrity: sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 7.1.1 - '@typescript-eslint/visitor-keys': 7.1.1 + '@typescript-eslint/types': 6.9.1 + '@typescript-eslint/visitor-keys': 6.9.1 dev: true - /@typescript-eslint/type-utils@7.1.1(eslint@8.57.0)(typescript@5.2.2): - resolution: {integrity: sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g==} + /@typescript-eslint/type-utils@6.9.1(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-eh2oHaUKCK58qIeYp19F5V5TbpM52680sB4zNSz29VBQPTWIlE/hCj5P5B1AChxECe/fmZlspAWFuRniep1Skg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.1.1(typescript@5.2.2) - '@typescript-eslint/utils': 7.1.1(eslint@8.57.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.2.2) + '@typescript-eslint/utils': 6.9.1(eslint@8.52.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.57.0 + eslint: 8.52.0 ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: @@ -5416,8 +5416,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@7.1.1: - resolution: {integrity: sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==} + /@typescript-eslint/types@6.9.1: + resolution: {integrity: sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ==} engines: {node: ^16.0.0 || >=18.0.0} dev: true @@ -5442,8 +5442,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@7.1.1(typescript@5.2.2): - resolution: {integrity: sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==} + /@typescript-eslint/typescript-estree@6.9.1(typescript@5.2.2): + resolution: {integrity: sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -5451,12 +5451,11 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.1.1 - '@typescript-eslint/visitor-keys': 7.1.1 + '@typescript-eslint/types': 6.9.1 + '@typescript-eslint/visitor-keys': 6.9.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.3 semver: 7.5.3 ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 @@ -5464,19 +5463,19 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.2.2): + /@typescript-eslint/utils@5.62.0(eslint@8.52.0)(typescript@5.2.2): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) '@types/json-schema': 7.0.14 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - eslint: 8.57.0 + eslint: 8.52.0 eslint-scope: 5.1.1 semver: 7.5.3 transitivePeerDependencies: @@ -5484,19 +5483,19 @@ packages: - typescript dev: true - /@typescript-eslint/utils@7.1.1(eslint@8.57.0)(typescript@5.2.2): - resolution: {integrity: sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==} + /@typescript-eslint/utils@6.9.1(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) '@types/json-schema': 7.0.14 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 7.1.1 - '@typescript-eslint/types': 7.1.1 - '@typescript-eslint/typescript-estree': 7.1.1(typescript@5.2.2) - eslint: 8.57.0 + '@typescript-eslint/scope-manager': 6.9.1 + '@typescript-eslint/types': 6.9.1 + '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.2.2) + eslint: 8.52.0 semver: 7.5.3 transitivePeerDependencies: - supports-color @@ -5511,11 +5510,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@7.1.1: - resolution: {integrity: sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==} + /@typescript-eslint/visitor-keys@6.9.1: + resolution: {integrity: sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 7.1.1 + '@typescript-eslint/types': 6.9.1 eslint-visitor-keys: 3.4.3 dev: true @@ -5839,20 +5838,12 @@ packages: is-array-buffer: 3.0.2 dev: true - /array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 - dev: true - /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: true - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + /array-includes@3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 @@ -5862,20 +5853,20 @@ packages: is-string: 1.0.7 dev: true - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true - - /array.prototype.findlast@1.2.4: - resolution: {integrity: sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw==} + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - es-errors: 1.3.0 - es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + is-string: 1.0.7 + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} dev: true /array.prototype.findlastindex@1.2.3: @@ -5899,8 +5890,8 @@ packages: es-shim-unscopables: 1.0.2 dev: true - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + /array.prototype.flatmap@1.3.1: + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 @@ -5909,8 +5900,9 @@ packages: es-shim-unscopables: 1.0.2 dev: true - /array.prototype.toreversed@1.1.2: - resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -5918,14 +5910,14 @@ packages: es-shim-unscopables: 1.0.2 dev: true - /array.prototype.tosorted@1.1.3: - resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} + /array.prototype.tosorted@1.1.1: + resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - es-errors: 1.3.0 es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 dev: true /arraybuffer.prototype.slice@1.0.2: @@ -5941,20 +5933,6 @@ packages: is-shared-array-buffer: 1.0.2 dev: true - /arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 - dev: true - /asn1@0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} dependencies: @@ -5981,8 +5959,8 @@ packages: '@mdn/browser-compat-data': 5.3.14 dev: true - /ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + /ast-types-flow@0.0.7: + resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: true /ast-types@0.16.1: @@ -6000,12 +5978,6 @@ packages: resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} dev: true - /asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} - dependencies: - has-symbols: 1.0.3 - dev: true - /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -6014,15 +5986,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - dependencies: - possible-typed-array-names: 1.0.0 - dev: true - - /axe-core@4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + /axe-core@4.7.2: + resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} engines: {node: '>=4'} dev: true @@ -6286,17 +6251,6 @@ packages: update-browserslist-db: 1.0.13(browserslist@4.22.1) dev: true - /browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001593 - electron-to-chromium: 1.4.690 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) - dev: true - /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: @@ -6348,17 +6302,6 @@ packages: set-function-length: 1.1.1 dev: true - /call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.1 - dev: true - /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -6381,10 +6324,6 @@ packages: resolution: {integrity: sha512-cPiMKZgqgkg5LY3/ntGeLFUpi6tzddBNS58A4tnTgQw1zON7u2sZMU7SzOeVH4tj20++9ggL+V6FDOFMTaFFYA==} dev: true - /caniuse-lite@1.0.30001593: - resolution: {integrity: sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==} - dev: true - /canvas@2.11.0: resolution: {integrity: sha512-bdTjFexjKJEwtIo0oRx8eD4G2yWoUOXP9lj279jmQ2zMnTQhT8C3512OKz3s+ZOaQlLbE7TuVvRDYDB3Llyy5g==} engines: {node: '>=6'} @@ -6542,11 +6481,6 @@ packages: engines: {node: '>=8'} dev: true - /ci-info@4.0.0: - resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} - engines: {node: '>=8'} - dev: true - /cjs-module-lexer@1.2.3: resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} dev: true @@ -6776,12 +6710,6 @@ packages: browserslist: 4.22.1 dev: true - /core-js-compat@3.36.0: - resolution: {integrity: sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==} - dependencies: - browserslist: 4.23.0 - dev: true - /core-js@3.32.0: resolution: {integrity: sha512-rd4rYZNlF3WuoYuRIDEmbR/ga9CeuWX9U05umAvgrrZoHY4Z++cp/xwPQMvUpBB4Ag6J8KfD80G0zwCyaSxDww==} requiresBuild: true @@ -7053,15 +6981,6 @@ packages: has-property-descriptors: 1.0.1 dev: true - /define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - dev: true - /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} @@ -7280,10 +7199,6 @@ packages: resolution: {integrity: sha512-RlFobl4D3ieetbnR+2EpxdzFl9h0RAJkPK3pfiwMug2nhBin2ZCsGIAJWdpNniLz43sgXam/CgipOmvTA+rUiA==} dev: true - /electron-to-chromium@1.4.690: - resolution: {integrity: sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA==} - dev: true - /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} @@ -7390,65 +7305,6 @@ packages: which-typed-array: 1.1.13 dev: true - /es-abstract@1.22.5: - resolution: {integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - es-define-property: 1.0.0 - es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.1 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.0 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.5 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.14 - dev: true - - /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.4 - dev: true - - /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - dev: true - /es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: @@ -7463,27 +7319,6 @@ packages: stop-iteration-iterator: 1.0.0 dev: true - /es-iterator-helpers@1.0.17: - resolution: {integrity: sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==} - engines: {node: '>= 0.4'} - dependencies: - asynciterator.prototype: 1.0.0 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-errors: 1.3.0 - es-set-tostringtag: 2.0.2 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - globalthis: 1.0.3 - has-property-descriptors: 1.0.2 - has-proto: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - iterator.prototype: 1.1.2 - safe-array-concat: 1.1.0 - dev: true - /es-module-lexer@0.9.3: resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} dev: true @@ -7492,20 +7327,11 @@ packages: resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.2 has-tostringtag: 1.0.0 hasown: 2.0.0 dev: true - /es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.4 - has-tostringtag: 1.0.2 - hasown: 2.0.1 - dev: true - /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: @@ -7603,13 +7429,13 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier@9.1.0(eslint@8.57.0): - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + /eslint-config-prettier@9.0.0(eslint@8.52.0): + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.57.0 + eslint: 8.52.0 dev: true /eslint-import-resolver-node@0.3.9: @@ -7622,8 +7448,8 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.1.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0): - resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@6.9.1)(eslint-plugin-import@2.29.0)(eslint@8.52.0): + resolution: {integrity: sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -7631,12 +7457,12 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.15.0 - eslint: 8.57.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.1.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.1.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint: 8.52.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.52.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-typescript@3.6.0)(eslint@8.52.0) fast-glob: 3.3.1 get-tsconfig: 4.7.0 - is-core-module: 2.13.1 + is-core-module: 2.13.0 is-glob: 4.0.3 transitivePeerDependencies: - '@typescript-eslint/parser' @@ -7645,7 +7471,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.1.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.52.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -7666,16 +7492,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.1.1(eslint@8.57.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.9.1(eslint@8.52.0)(typescript@5.2.2) debug: 3.2.7 - eslint: 8.57.0 + eslint: 8.52.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.1.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.9.1)(eslint-plugin-import@2.29.0)(eslint@8.52.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-compat@4.2.0(eslint@8.57.0): + /eslint-plugin-compat@4.2.0(eslint@8.52.0): resolution: {integrity: sha512-RDKSYD0maWy5r7zb5cWQS+uSPc26mgOzdORJ8hxILmWM7S/Ncwky7BcAtXVY5iRbKjBdHsWU8Yg7hfoZjtkv7w==} engines: {node: '>=14.x'} peerDependencies: @@ -7685,25 +7511,25 @@ packages: ast-metadata-inferer: 0.8.0 browserslist: 4.21.10 caniuse-lite: 1.0.30001524 - eslint: 8.57.0 + eslint: 8.52.0 find-up: 5.0.0 lodash.memoize: 4.1.2 semver: 7.5.3 dev: true - /eslint-plugin-eslint-comments@3.2.0(eslint@8.57.0): + /eslint-plugin-eslint-comments@3.2.0(eslint@8.52.0): resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: eslint: '>=4.19.1' dependencies: escape-string-regexp: 1.0.5 - eslint: 8.57.0 + eslint: 8.52.0 ignore: 5.2.4 dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.1.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-typescript@3.6.0)(eslint@8.52.0): + resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -7712,16 +7538,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.1.1(eslint@8.57.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.9.1(eslint@8.52.0)(typescript@5.2.2) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.57.0 + eslint: 8.52.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.1.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.52.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -7730,18 +7556,18 @@ packages: object.groupby: 1.0.1 object.values: 1.1.7 semver: 7.5.3 - tsconfig-paths: 3.15.0 + tsconfig-paths: 3.14.2 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color dev: true - /eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.1.1)(eslint@8.57.0)(jest@29.6.2)(typescript@5.2.2): - resolution: {integrity: sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==} + /eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.9.1)(eslint@8.52.0)(jest@29.6.2)(typescript@5.2.2): + resolution: {integrity: sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 || ^7.0.0 + '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 eslint: ^7.0.0 || ^8.0.0 jest: '*' peerDependenciesMeta: @@ -7750,85 +7576,82 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 7.1.1(@typescript-eslint/parser@7.1.1)(eslint@8.57.0)(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.2.2) - eslint: 8.57.0 + '@typescript-eslint/eslint-plugin': 6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.52.0)(typescript@5.2.2) + eslint: 8.52.0 jest: 29.6.2(@types/node@18.19.0)(ts-node@10.9.1) transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): - resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.52.0): + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.22.6 aria-query: 5.3.0 - array-includes: 3.1.7 - array.prototype.flatmap: 1.3.2 - ast-types-flow: 0.0.8 - axe-core: 4.7.0 + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + ast-types-flow: 0.0.7 + axe-core: 4.7.2 axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.17 - eslint: 8.57.0 - hasown: 2.0.0 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 + eslint: 8.52.0 + has: 1.0.3 + jsx-ast-utils: 3.3.4 + language-tags: 1.0.5 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + semver: 7.5.3 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.52.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.57.0 + eslint: 8.52.0 dev: true - /eslint-plugin-react@7.34.0(eslint@8.57.0): - resolution: {integrity: sha512-MeVXdReleBTdkz/bvcQMSnCXGi+c9kvy51IpinjnJgutl3YTHWsDdke7Z1ufZpGfDG8xduBDKyjtB9JH1eBKIQ==} + /eslint-plugin-react@7.33.0(eslint@8.52.0): + resolution: {integrity: sha512-qewL/8P34WkY8jAqdQxsiL82pDUeT7nhs8IsuXgfgnsEloKCT4miAV9N9kGtx7/KM9NH/NCGUE7Edt9iGxLXFw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.7 - array.prototype.findlast: 1.2.4 - array.prototype.flatmap: 1.3.2 - array.prototype.toreversed: 1.1.2 - array.prototype.tosorted: 1.1.3 + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - es-iterator-helpers: 1.0.17 - eslint: 8.57.0 + eslint: 8.52.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.4 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - object.hasown: 1.1.3 - object.values: 1.1.7 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 prop-types: 15.8.1 - resolve: 2.0.0-next.5 + resolve: 2.0.0-next.4 semver: 7.5.3 - string.prototype.matchall: 4.0.10 + string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-storybook@0.8.0(eslint@8.57.0)(typescript@5.2.2): - resolution: {integrity: sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==} - engines: {node: '>= 18'} + /eslint-plugin-storybook@0.6.12(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-XbIvrq6hNVG6rpdBr+eBw63QhOMLpZneQVSooEDow8aQCWGCk/5vqtap1yxpVydNfSxi3S/3mBBRLQqKUqQRww==} + engines: {node: 12.x || 14.x || >= 16} peerDependencies: eslint: '>=6' dependencies: '@storybook/csf': 0.0.1 - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.2.2) - eslint: 8.57.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.52.0)(typescript@5.2.2) + eslint: 8.52.0 requireindex: 1.2.0 ts-dedent: 2.2.0 transitivePeerDependencies: @@ -7836,32 +7659,30 @@ packages: - typescript dev: true - /eslint-plugin-testing-library@6.2.0(eslint@8.57.0)(typescript@5.2.2): - resolution: {integrity: sha512-+LCYJU81WF2yQ+Xu4A135CgK8IszcFcyMF4sWkbiu6Oj+Nel0TrkZq/HvDw0/1WuO3dhDQsZA/OpEMGd0NfcUw==} + /eslint-plugin-testing-library@6.1.0(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-r7kE+az3tbp8vyRwfyAGZ6V/xw+XvdWFPicIo6jbOPZoossOFDeHizARqPGV6gEkyF8hyCFhhH3mlQOGS3N5Sg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.2.2) - eslint: 8.57.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.52.0)(typescript@5.2.2) + eslint: 8.52.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-unicorn@51.0.1(eslint@8.57.0): - resolution: {integrity: sha512-MuR/+9VuB0fydoI0nIn2RDA5WISRn4AsJyNSaNKLVwie9/ONvQhxOBbkfSICBPnzKrB77Fh6CZZXjgTt/4Latw==} + /eslint-plugin-unicorn@49.0.0(eslint@8.52.0): + resolution: {integrity: sha512-0fHEa/8Pih5cmzFW5L7xMEfUTvI9WKeQtjmKpTUmY+BiFCDxkxrTdnURJOHKykhtwIeyYsxnecbGvDCml++z4Q==} engines: {node: '>=16'} peerDependencies: - eslint: '>=8.56.0' + eslint: '>=8.52.0' dependencies: '@babel/helper-validator-identifier': 7.22.20 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint/eslintrc': 2.1.4 - ci-info: 4.0.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) + ci-info: 3.9.0 clean-regexp: 1.0.0 - core-js-compat: 3.36.0 - eslint: 8.57.0 + eslint: 8.52.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -7872,8 +7693,6 @@ packages: regjsparser: 0.10.0 semver: 7.5.3 strip-indent: 3.0.0 - transitivePeerDependencies: - - supports-color dev: true /eslint-scope@5.1.1: @@ -7897,16 +7716,16 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + /eslint@8.52.0: + resolution: {integrity: sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.52.0 + '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 '@ungap/structured-clone': 1.2.0 @@ -8433,17 +8252,6 @@ packages: hasown: 2.0.0 dev: true - /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.1 - has-symbols: 1.0.3 - hasown: 2.0.0 - dev: true - /get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} @@ -8477,15 +8285,6 @@ packages: get-intrinsic: 1.2.2 dev: true - /get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - dev: true - /get-tsconfig@4.7.0: resolution: {integrity: sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==} dependencies: @@ -8662,22 +8461,11 @@ packages: get-intrinsic: 1.2.2 dev: true - /has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - dependencies: - es-define-property: 1.0.0 - dev: true - /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} dev: true - /has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - dev: true - /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} @@ -8690,28 +8478,21 @@ packages: has-symbols: 1.0.3 dev: true - /has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true - /has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} - engines: {node: '>= 0.4'} + /has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.2 + dev: true - /hasown@2.0.1: - resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 - dev: true /hast-util-parse-selector@2.2.5: resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} @@ -8944,15 +8725,6 @@ packages: side-channel: 1.0.4 dev: true - /internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - hasown: 2.0.0 - side-channel: 1.0.4 - dev: true - /invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: @@ -8999,24 +8771,9 @@ packages: is-typed-array: 1.1.12 dev: true - /is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - dev: true - /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - /is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -9055,6 +8812,12 @@ packages: engines: {node: '>= 0.4'} dev: true + /is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + dependencies: + has: 1.0.3 + dev: true + /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: @@ -9085,12 +8848,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - dependencies: - call-bind: 1.0.7 - dev: true - /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -9149,11 +8906,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - dev: true - /is-node-process@1.2.0: resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} dev: true @@ -9223,13 +8975,6 @@ packages: call-bind: 1.0.5 dev: true - /is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - dev: true - /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -9256,13 +9001,6 @@ packages: which-typed-array: 1.1.13 dev: true - /is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - dependencies: - which-typed-array: 1.1.14 - dev: true - /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -9364,16 +9102,6 @@ packages: istanbul-lib-report: 3.0.1 dev: true - /iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.5 - set-function-name: 2.0.1 - dev: true - /jackspeak@2.3.6: resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} @@ -9720,7 +9448,7 @@ packages: slash: 3.0.0 dev: true - /jest-runner-eslint@2.1.0(eslint@8.57.0)(jest@29.6.2): + /jest-runner-eslint@2.1.0(eslint@8.52.0)(jest@29.6.2): resolution: {integrity: sha512-5gQOLej+HLDNzxrqOxg+l/ZY6hAHYhzO7gs3eOR+PQz14wpDuLDIivn+xJ8uwHW2tYM/37NGskqwBe5RbbJPEw==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -9731,7 +9459,7 @@ packages: cosmiconfig: 7.1.0 create-jest-runner: 0.11.2 dot-prop: 6.0.1 - eslint: 8.57.0 + eslint: 8.52.0 jest: 29.6.2(@types/node@18.19.0)(ts-node@10.9.1) transitivePeerDependencies: - '@jest/test-result' @@ -10107,17 +9835,7 @@ packages: resolution: {integrity: sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.7 - array.prototype.flat: 1.3.2 - object.assign: 4.1.4 - object.values: 1.1.7 - dev: true - - /jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - dependencies: - array-includes: 3.1.7 + array-includes: 3.1.6 array.prototype.flat: 1.3.2 object.assign: 4.1.4 object.values: 1.1.7 @@ -10148,9 +9866,8 @@ packages: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true - /language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} + /language-tags@1.0.5: + resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} dependencies: language-subtag-registry: 0.3.22 dev: true @@ -11396,10 +11113,6 @@ packages: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} dev: true - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - dev: true - /nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} @@ -11471,18 +11184,17 @@ packages: object-keys: 1.1.1 dev: true - /object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + /object.entries@1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.5 define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 + es-abstract: 1.22.3 dev: true - /object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + /object.fromentries@2.0.6: + resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 @@ -11508,13 +11220,22 @@ packages: get-intrinsic: 1.2.2 dev: true - /object.hasown@1.1.3: - resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + /object.hasown@1.1.2: + resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: define-properties: 1.2.1 es-abstract: 1.22.3 dev: true + /object.values@1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + /object.values@1.1.7: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} @@ -11813,11 +11534,6 @@ packages: '@babel/runtime': 7.23.2 dev: true - /possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - dev: true - /postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} @@ -12505,19 +12221,6 @@ packages: strip-indent: 3.0.0 dev: true - /reflect.getprototypeof@1.0.5: - resolution: {integrity: sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - globalthis: 1.0.3 - which-builtin-type: 1.1.3 - dev: true - /refractor@3.6.0: resolution: {integrity: sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==} dependencies: @@ -12563,16 +12266,6 @@ packages: set-function-name: 2.0.1 dev: true - /regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.1 - dev: true - /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} engines: {node: '>=4'} @@ -12724,8 +12417,8 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + /resolve@2.0.0-next.4: + resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: is-core-module: 2.13.1 @@ -12830,16 +12523,6 @@ packages: isarray: 2.0.5 dev: true - /safe-array-concat@1.1.0: - resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} - engines: {node: '>=0.4'} - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - isarray: 2.0.5 - dev: true - /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true @@ -12855,15 +12538,6 @@ packages: is-regex: 1.1.4 dev: true - /safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-regex: 1.1.4 - dev: true - /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true @@ -12942,18 +12616,6 @@ packages: has-property-descriptors: 1.0.1 dev: true - /set-function-length@1.2.1: - resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - dev: true - /set-function-name@2.0.1: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} @@ -13268,8 +12930,8 @@ packages: strip-ansi: 7.1.0 dev: true - /string.prototype.matchall@4.0.10: - resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + /string.prototype.matchall@4.0.8: + resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.5 define-properties: 1.2.1 @@ -13278,7 +12940,6 @@ packages: has-symbols: 1.0.3 internal-slot: 1.0.6 regexp.prototype.flags: 1.5.1 - set-function-name: 2.0.1 side-channel: 1.0.4 dev: true @@ -13713,8 +13374,8 @@ packages: ts-morph: 13.0.3 dev: true - /tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 @@ -13809,15 +13470,6 @@ packages: is-typed-array: 1.1.12 dev: true - /typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-typed-array: 1.1.13 - dev: true - /typed-array-byte-length@1.0.0: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} @@ -13828,17 +13480,6 @@ packages: is-typed-array: 1.1.12 dev: true - /typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - dev: true - /typed-array-byte-offset@1.0.0: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} engines: {node: '>= 0.4'} @@ -13850,18 +13491,6 @@ packages: is-typed-array: 1.1.12 dev: true - /typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - dev: true - /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: @@ -13870,18 +13499,6 @@ packages: is-typed-array: 1.1.12 dev: true - /typed-array-length@1.0.5: - resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 - dev: true - /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: true @@ -14110,17 +13727,6 @@ packages: picocolors: 1.0.0 dev: true - /update-browserslist-db@1.0.13(browserslist@4.23.0): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.23.0 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -14273,7 +13879,7 @@ packages: vfile-message: 4.0.2 dev: false - /vite-plugin-checker@0.6.0(eslint@8.57.0)(typescript@5.2.2)(vite@4.5.2): + /vite-plugin-checker@0.6.0(eslint@8.52.0)(typescript@5.2.2)(vite@4.5.2): resolution: {integrity: sha512-DWZ9Hv2TkpjviPxAelNUt4Q3IhSGrx7xrwdM64NI+Q4dt8PaMWJJh4qGNtSrfEuiuIzWWo00Ksvh5It4Y3L9xQ==} engines: {node: '>=14.16'} peerDependencies: @@ -14309,7 +13915,7 @@ packages: chalk: 4.1.2 chokidar: 3.5.3 commander: 8.3.0 - eslint: 8.57.0 + eslint: 8.52.0 fast-glob: 3.3.1 fs-extra: 11.1.1 lodash.debounce: 4.0.8 @@ -14494,24 +14100,6 @@ packages: is-symbol: 1.0.4 dev: true - /which-builtin-type@1.1.3: - resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} - engines: {node: '>= 0.4'} - dependencies: - function.prototype.name: 1.1.6 - has-tostringtag: 1.0.0 - is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.0.2 - is-generator-function: 1.0.10 - is-regex: 1.1.4 - is-weakref: 1.0.2 - isarray: 2.0.5 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.13 - dev: true - /which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: @@ -14532,17 +14120,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /which-typed-array@1.1.14: - resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - dev: true - /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} From c07b7099803c2367fecf1252da481b56dafaa404 Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Mon, 4 Mar 2024 19:50:57 +0000 Subject: [PATCH 03/12] =?UTF-8?q?=F0=9F=A7=B9=F0=9F=A7=B9=F0=9F=A7=B9?= =?UTF-8?q?=F0=9F=A7=B9=F0=9F=A7=B9=F0=9F=A7=B9=F0=9F=A7=B9=F0=9F=A7=B9?= =?UTF-8?q?=F0=9F=A7=B9=F0=9F=A7=B9=F0=9F=A7=B9=F0=9F=A7=B9=F0=9F=A7=B9?= =?UTF-8?q?=F0=9F=A7=B9=F0=9F=A7=B9=F0=9F=A7=B9=F0=9F=A7=B9=F0=9F=A7=B9?= =?UTF-8?q?=F0=9F=A7=B9=F0=9F=A7=B9=F0=9F=A7=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/e2e/global.setup.ts | 2 +- site/e2e/helpers.ts | 39 ++++++----- site/e2e/hooks.ts | 2 +- site/e2e/parameters.ts | 2 +- site/e2e/pom/BasePom.ts | 2 +- site/e2e/pom/SignInPage.ts | 2 +- site/e2e/pom/WorkspacesPage.ts | 2 +- site/e2e/reporter.ts | 2 +- site/e2e/tests/createWorkspace.spec.ts | 5 +- site/e2e/tests/externalAuth.spec.ts | 4 +- site/e2e/tests/restartWorkspace.spec.ts | 5 +- site/e2e/tests/startWorkspace.spec.ts | 3 +- site/e2e/tests/updateWorkspace.spec.ts | 6 +- site/e2e/tests/webTerminal.spec.ts | 2 +- site/jest.setup.ts | 12 ++-- site/src/@types/storybook.d.ts | 4 +- site/src/App.tsx | 8 +-- site/src/AppRouter.tsx | 12 ++-- site/src/__mocks__/react-markdown.tsx | 2 +- site/src/api/api.test.ts | 2 +- site/src/api/api.ts | 6 +- site/src/api/errors.ts | 3 +- site/src/api/queries/appearance.ts | 2 +- site/src/api/queries/authCheck.ts | 2 +- site/src/api/queries/buildInfo.ts | 2 +- site/src/api/queries/debug.ts | 4 +- site/src/api/queries/entitlements.ts | 4 +- site/src/api/queries/experiments.ts | 4 +- site/src/api/queries/externalAuth.ts | 4 +- site/src/api/queries/groups.ts | 4 +- site/src/api/queries/integrations.ts | 2 +- site/src/api/queries/settings.ts | 2 +- site/src/api/queries/sshKeys.ts | 4 +- site/src/api/queries/templates.ts | 20 +++--- site/src/api/queries/users.ts | 4 +- site/src/api/queries/workspaceBuilds.ts | 2 +- site/src/api/queries/workspaceportsharing.ts | 2 +- site/src/api/queries/workspaces.ts | 14 ++-- .../ActiveUserChart/ActiveUserChart.tsx | 13 ++-- site/src/components/Alert/Alert.stories.tsx | 2 +- site/src/components/Alert/Alert.tsx | 12 ++-- .../components/Alert/ErrorAlert.stories.tsx | 2 +- site/src/components/Alert/ErrorAlert.tsx | 5 +- site/src/components/Avatar/Avatar.stories.tsx | 2 +- site/src/components/Avatar/Avatar.tsx | 4 +- site/src/components/AvatarCard/AvatarCard.tsx | 2 +- site/src/components/AvatarData/AvatarData.tsx | 2 +- .../AvatarData/AvatarDataSkeleton.tsx | 4 +- site/src/components/Badges/Badges.tsx | 10 +-- .../components/BuildAvatar/BuildAvatar.tsx | 9 +-- site/src/components/BuildIcon/BuildIcon.tsx | 6 +- .../components/CodeExample/CodeExample.tsx | 4 +- .../Conditionals/ChooseOne.stories.tsx | 2 +- site/src/components/CopyButton/CopyButton.tsx | 4 +- .../ConfirmDialog/ConfirmDialog.test.tsx | 2 +- .../Dialogs/ConfirmDialog/ConfirmDialog.tsx | 2 +- .../DeleteDialog/DeleteDialog.test.tsx | 2 +- .../Dialogs/DeleteDialog/DeleteDialog.tsx | 2 +- site/src/components/Dialogs/Dialog.tsx | 8 ++- .../DropdownArrow/DropdownArrow.tsx | 2 +- .../EmptyState/EmptyState.stories.tsx | 2 +- .../ErrorBoundary/RuntimeErrorState.tsx | 6 +- .../components/Expander/Expander.stories.tsx | 2 +- .../components/FileUpload/FileUpload.test.tsx | 2 +- site/src/components/FileUpload/FileUpload.tsx | 12 ++-- .../components/Filter/OptionItem.stories.tsx | 2 +- site/src/components/Filter/UserFilter.tsx | 5 +- site/src/components/Filter/filter.tsx | 32 ++++----- site/src/components/Filter/menu.ts | 2 +- site/src/components/Filter/storyHelpers.ts | 4 +- site/src/components/Form/Form.tsx | 10 +-- .../FormFooter/FormFooter.stories.tsx | 2 +- site/src/components/FormFooter/FormFooter.tsx | 4 +- .../FullPageForm/FullPageForm.stories.tsx | 5 +- .../components/FullPageForm/FullPageForm.tsx | 2 +- site/src/components/FullPageLayout/Topbar.tsx | 9 ++- .../EnterpriseSnackbar.stories.tsx | 2 +- .../GlobalSnackbar/EnterpriseSnackbar.tsx | 4 +- .../GlobalSnackbar/GlobalSnackbar.tsx | 4 +- .../components/GlobalSnackbar/utils.test.ts | 5 +- .../GroupAvatar/GroupAvatar.stories.tsx | 2 +- .../components/GroupAvatar/GroupAvatar.tsx | 4 +- .../HelpTooltip/HelpTooltip.stories.tsx | 2 +- .../components/HelpTooltip/HelpTooltip.tsx | 8 +-- site/src/components/IconField/EmojiPicker.tsx | 2 +- site/src/components/IconField/IconField.tsx | 6 +- site/src/components/Icons/CoderIcon.tsx | 3 +- site/src/components/Icons/DockerIcon.tsx | 3 +- site/src/components/Icons/EditSquare.tsx | 3 +- site/src/components/Icons/ErrorIcon.tsx | 3 +- site/src/components/Icons/FileCopyIcon.tsx | 3 +- site/src/components/Icons/GitIcon.tsx | 3 +- site/src/components/Icons/GitlabIcon.tsx | 3 +- site/src/components/Icons/JetBrainsIcon.tsx | 3 +- site/src/components/Icons/MarkdownIcon.tsx | 3 +- site/src/components/Icons/RocketIcon.tsx | 3 +- site/src/components/Icons/TerminalIcon.tsx | 3 +- site/src/components/Icons/TerraformIcon.tsx | 3 +- site/src/components/Icons/VSCodeIcon.tsx | 3 +- .../components/Icons/VSCodeInsidersIcon.tsx | 3 +- .../components/InfoTooltip/InfoTooltip.tsx | 2 +- site/src/components/Latency/Latency.tsx | 6 +- site/src/components/Markdown/Markdown.tsx | 4 +- site/src/components/Menu/Search.tsx | 2 +- site/src/components/MoreMenu/MoreMenu.tsx | 20 +++--- .../OverflowY/OverflowY.stories.tsx | 2 +- .../PageHeader/PageHeader.stories.tsx | 2 +- .../PaginationWidget/PageButtons.tsx | 2 +- .../PaginationContainer.stories.tsx | 3 +- .../PaginationWidget/PaginationContainer.tsx | 2 +- .../PaginationWidget/PaginationHeader.tsx | 2 +- .../PaginationWidget/PaginationNavButton.tsx | 7 +- .../PaginationWidgetBase.stories.tsx | 2 +- .../PaginationWidgetBase.test.tsx | 9 +-- .../PaginationWidget/PaginationWidgetBase.tsx | 8 +-- site/src/components/Paywall/Paywall.tsx | 2 +- site/src/components/Pill/Pill.stories.tsx | 4 +- site/src/components/Pill/Pill.tsx | 2 +- site/src/components/Popover/Popover.tsx | 20 +++--- .../RichParameterInput/RichParameterInput.tsx | 19 ++--- .../components/Sidebar/Sidebar.stories.tsx | 12 ++-- site/src/components/Stack/Stack.tsx | 2 +- .../SyntaxHighlighter/SyntaxHighlighter.tsx | 4 +- .../SyntaxHighlighter/coderTheme.ts | 2 +- .../TableEmpty/TableEmpty.stories.tsx | 2 +- .../TableLoader/TableLoader.stories.tsx | 2 +- site/src/components/Tabs/Tabs.stories.tsx | 2 +- site/src/components/Tabs/Tabs.tsx | 9 ++- site/src/components/Timeline/Timeline.tsx | 2 +- .../components/Timeline/TimelineDateRow.tsx | 2 +- .../UserAutocomplete.stories.tsx | 2 +- .../UserAutocomplete/UserAutocomplete.tsx | 10 +-- site/src/components/UserAvatar/UserAvatar.tsx | 2 +- site/src/contexts/ProxyContext.test.tsx | 22 +++--- site/src/contexts/ProxyContext.tsx | 3 +- site/src/contexts/auth/AuthProvider.tsx | 2 +- site/src/contexts/auth/RequireAuth.tsx | 4 +- site/src/contexts/auth/usePermissions.ts | 2 +- site/src/contexts/useProxyLatency.ts | 4 +- site/src/hooks/events.ts | 2 +- site/src/hooks/useClassName.ts | 2 +- site/src/hooks/useClickable.test.tsx | 6 +- site/src/hooks/useClickableTableRow.ts | 5 +- site/src/hooks/useClipboard.test-setup.tsx | 4 +- site/src/hooks/usePaginatedQuery.test.ts | 3 +- site/src/hooks/usePaginatedQuery.ts | 7 +- site/src/hooks/usePagination.ts | 2 +- site/src/hooks/useWorkspaceBuildLogs.ts | 4 +- .../dashboard/DashboardLayout.test.tsx | 4 +- .../src/modules/dashboard/DashboardLayout.tsx | 12 ++-- .../modules/dashboard/DashboardProvider.tsx | 22 +++--- .../DeploymentBanner/DeploymentBannerView.tsx | 60 ++++++++-------- .../LicenseBanner/LicenseBannerView.tsx | 2 +- .../modules/dashboard/Navbar/Navbar.test.tsx | 4 +- .../dashboard/Navbar/NavbarView.test.tsx | 2 +- .../modules/dashboard/Navbar/NavbarView.tsx | 20 +++--- .../Navbar/UserDropdown/UserDropdown.tsx | 8 +-- .../UserDropdown/UserDropdownContent.test.tsx | 2 +- .../UserDropdown/UserDropdownContent.tsx | 26 +++---- .../modules/dashboard/useFeatureVisibility.ts | 2 +- .../modules/dashboard/useUpdateCheck.test.tsx | 2 +- site/src/modules/dashboard/useUpdateCheck.ts | 2 +- site/src/modules/resources/AgentLatency.tsx | 2 +- site/src/modules/resources/AgentLogs.tsx | 19 ++--- .../resources/AgentMetadata.stories.tsx | 4 +- site/src/modules/resources/AgentMetadata.tsx | 4 +- .../resources/AgentOutdatedTooltip.tsx | 6 +- .../modules/resources/AgentRow.stories.tsx | 5 +- site/src/modules/resources/AgentRow.test.tsx | 7 +- site/src/modules/resources/AgentRow.tsx | 17 ++--- .../resources/AgentRowPreview.stories.tsx | 2 +- .../resources/AgentRowPreview.test.tsx | 5 +- .../src/modules/resources/AgentRowPreview.tsx | 4 +- site/src/modules/resources/AgentStatus.tsx | 2 +- .../resources/AppLink/AppLink.stories.tsx | 4 +- .../src/modules/resources/AppLink/AppLink.tsx | 4 +- .../modules/resources/AppLink/AppPreview.tsx | 2 +- .../modules/resources/AppLink/ShareIcon.tsx | 4 +- .../resources/PortForwardButton.stories.tsx | 2 +- .../modules/resources/PortForwardButton.tsx | 56 ++++++++------- .../PortForwardPopoverView.stories.tsx | 2 +- .../resources/PortForwardPopoverView.test.tsx | 2 +- .../resources/ResourceAvatar.stories.tsx | 2 +- site/src/modules/resources/ResourceAvatar.tsx | 2 +- .../resources/ResourceCard.stories.tsx | 8 +-- site/src/modules/resources/ResourceCard.tsx | 4 +- .../modules/resources/Resources.stories.tsx | 8 +-- site/src/modules/resources/Resources.tsx | 2 +- .../resources/SSHButton/SSHButton.stories.tsx | 2 +- .../modules/resources/SSHButton/SSHButton.tsx | 10 +-- site/src/modules/resources/SensitiveValue.tsx | 6 +- .../TerminalLink/TerminalLink.stories.tsx | 2 +- .../resources/TerminalLink/TerminalLink.tsx | 2 +- .../VSCodeDesktopButton.stories.tsx | 2 +- site/src/modules/resources/XRayScanAlert.tsx | 2 +- .../TemplateExampleCard.tsx | 4 +- .../TemplateFileTree.stories.tsx | 4 +- .../TemplateFiles/TemplateFileTree.tsx | 8 +-- .../templates/TemplateFiles/TemplateFiles.tsx | 12 ++-- .../TemplateScheduleAutostart.tsx | 6 +- .../modules/templates/useWatchVersionLogs.ts | 4 +- .../WorkspaceBuild/WorkspaceBuildData.tsx | 5 +- .../workspaces/WorkspaceBuildLogs/Logs.tsx | 4 +- .../WorkspaceBuildLogs/WorkspaceBuildLogs.tsx | 2 +- .../WorkspaceOutdatedTooltip.tsx | 6 +- .../DormantDeletionText.tsx | 2 +- .../WorkspaceStatusBadge.stories.tsx | 4 +- .../WorkspaceStatusBadge.tsx | 14 ++-- site/src/pages/AuditPage/AuditFilter.tsx | 13 ++-- site/src/pages/AuditPage/AuditHelpTooltip.tsx | 2 +- .../AuditLogDescription.stories.tsx | 2 +- .../AuditLogDescription.tsx | 4 +- .../BuildAuditDescription.tsx | 4 +- .../AuditLogRow/AuditLogDiff/AuditLogDiff.tsx | 2 +- .../AuditLogRow/AuditLogDiff/auditUtils.ts | 2 +- .../AuditPage/AuditLogRow/AuditLogRow.tsx | 4 +- site/src/pages/AuditPage/AuditPage.test.tsx | 5 +- site/src/pages/AuditPage/AuditPage.tsx | 8 +-- .../pages/AuditPage/AuditPageView.stories.tsx | 14 ++-- site/src/pages/AuditPage/AuditPageView.tsx | 10 +-- site/src/pages/CliAuthPage/CliAuthPage.tsx | 2 +- .../CliAuthPage/CliAuthPageView.stories.tsx | 2 +- .../src/pages/CliAuthPage/CliAuthPageView.tsx | 4 +- .../BuildLogsDrawer.stories.tsx | 4 +- .../CreateTemplatePage/BuildLogsDrawer.tsx | 19 ++--- .../CreateTemplateForm.stories.tsx | 2 +- .../CreateTemplatePage/CreateTemplateForm.tsx | 18 ++--- .../CreateTemplatePage.test.tsx | 4 +- .../CreateTemplatePage/CreateTemplatePage.tsx | 12 ++-- .../DuplicateTemplateView.tsx | 6 +- .../ImportStarterTemplateView.tsx | 6 +- .../CreateTemplatePage/TemplateUpload.tsx | 4 +- .../CreateTemplatePage/UploadTemplateView.tsx | 6 +- .../CreateTemplatePage/VariableInput.tsx | 2 +- site/src/pages/CreateTemplatePage/types.ts | 2 +- site/src/pages/CreateTemplatePage/utils.ts | 4 +- .../pages/CreateTokenPage/CreateTokenForm.tsx | 6 +- .../CreateTokenPage/CreateTokenPage.test.tsx | 6 +- .../pages/CreateTokenPage/CreateTokenPage.tsx | 21 +++--- site/src/pages/CreateTokenPage/utils.test.tsx | 3 +- .../CreateUserPage/CreateUserForm.stories.tsx | 4 +- .../pages/CreateUserPage/CreateUserForm.tsx | 19 ++--- .../CreateUserPage/CreateUserPage.test.tsx | 2 +- .../pages/CreateUserPage/CreateUserPage.tsx | 6 +- .../CreateWorkspacePage.tsx | 9 +-- .../CreateWorkspacePageView.stories.tsx | 2 +- .../CreateWorkspacePageView.tsx | 37 +++++----- .../ExternalAuthButton.stories.tsx | 4 +- .../ExternalAuthButton.tsx | 2 +- .../SelectedTemplate.stories.tsx | 2 +- .../CreateWorkspacePage/SelectedTemplate.tsx | 2 +- .../useWorkspaceDuplication.test.tsx | 6 +- .../useWorkspaceDuplication.ts | 2 +- .../AppearanceSettingsPage.tsx | 6 +- .../AppearanceSettingsPageView.stories.tsx | 2 +- .../AppearanceSettingsPageView.tsx | 12 ++-- .../DeploySettingsLayout.tsx | 6 +- .../ExternalAuthSettingsPageView.stories.tsx | 2 +- .../ExternalAuthSettingsPageView.tsx | 4 +- .../src/pages/DeploySettingsPage/Fieldset.tsx | 4 +- .../GeneralSettingsPage.tsx | 2 +- .../GeneralSettingsPageView.stories.tsx | 2 +- .../GeneralSettingsPageView.tsx | 6 +- site/src/pages/DeploySettingsPage/Header.tsx | 4 +- .../AddNewLicensePage.tsx | 8 +-- .../AddNewLicensePageView.tsx | 6 +- .../LicensesSettingsPage/LicenseCard.test.tsx | 2 +- .../LicensesSettingsPage/LicenseCard.tsx | 2 +- .../LicensesSettingsPage.tsx | 13 ++-- .../LicensesSettingsPageView.tsx | 8 +-- .../NetworkSettingsPageView.stories.tsx | 4 +- .../CreateOAuth2AppPage.tsx | 8 +-- .../CreateOAuth2AppPageView.tsx | 4 +- .../EditOAuth2AppPage.tsx | 11 +-- .../EditOAuth2AppPageView.tsx | 4 +- .../OAuth2AppsSettingsPageView.tsx | 6 +- .../ObservabilitySettingsPage.tsx | 2 +- .../ObservabilitySettingsPageView.stories.tsx | 4 +- .../ObservabilitySettingsPageView.tsx | 4 +- site/src/pages/DeploySettingsPage/Option.tsx | 4 +- .../pages/DeploySettingsPage/OptionsTable.tsx | 2 +- .../SecuritySettingsPage.tsx | 4 +- .../SecuritySettingsPageView.stories.tsx | 4 +- site/src/pages/DeploySettingsPage/Sidebar.tsx | 8 +-- .../UserAuthSettingsPageView.stories.tsx | 4 +- .../UserAuthSettingsPageView.tsx | 4 +- .../DeploySettingsPage/optionValue.test.ts | 2 +- .../pages/DeploySettingsPage/optionValue.ts | 2 +- .../ExternalAuthPage/ExternalAuthPage.tsx | 6 +- .../ExternalAuthPageView.stories.tsx | 5 +- .../ExternalAuthPage/ExternalAuthPageView.tsx | 2 +- .../CreateGroupPageView.stories.tsx | 2 +- .../pages/GroupsPage/CreateGroupPageView.tsx | 2 +- site/src/pages/GroupsPage/GroupPage.tsx | 54 +++++++------- site/src/pages/GroupsPage/GroupsPage.tsx | 2 +- .../GroupsPage/GroupsPageView.stories.tsx | 2 +- site/src/pages/GroupsPage/GroupsPageView.tsx | 20 +++--- .../pages/GroupsPage/SettingsGroupPage.tsx | 10 +-- .../SettingsGroupPageView.stories.tsx | 2 +- .../GroupsPage/SettingsGroupPageView.tsx | 12 ++-- .../HealthPage/AccessURLPage.stories.tsx | 2 +- site/src/pages/HealthPage/AccessURLPage.tsx | 8 +-- site/src/pages/HealthPage/Content.tsx | 21 +++--- .../src/pages/HealthPage/DERPPage.stories.tsx | 2 +- site/src/pages/HealthPage/DERPPage.tsx | 10 +-- .../HealthPage/DERPRegionPage.stories.tsx | 4 +- site/src/pages/HealthPage/DERPRegionPage.tsx | 9 +-- .../pages/HealthPage/DatabasePage.stories.tsx | 2 +- site/src/pages/HealthPage/DatabasePage.tsx | 8 +-- .../pages/HealthPage/DismissWarningButton.tsx | 10 +-- site/src/pages/HealthPage/HealthLayout.tsx | 18 ++--- .../ProvisionerDaemonsPage.stories.tsx | 2 +- .../HealthPage/ProvisionerDaemonsPage.tsx | 30 ++++---- .../HealthPage/WebsocketPage.stories.tsx | 4 +- site/src/pages/HealthPage/WebsocketPage.tsx | 16 ++--- .../HealthPage/WorkspaceProxyPage.stories.tsx | 4 +- .../pages/HealthPage/WorkspaceProxyPage.tsx | 20 +++--- site/src/pages/HealthPage/storybook.tsx | 9 +-- site/src/pages/IconsPage/IconsPage.tsx | 14 ++-- site/src/pages/LoginPage/LoginPage.test.tsx | 2 +- .../pages/LoginPage/LoginPageView.stories.tsx | 2 +- site/src/pages/LoginPage/LoginPageView.tsx | 4 +- site/src/pages/LoginPage/OAuthSignInForm.tsx | 6 +- .../pages/LoginPage/PasswordSignInForm.tsx | 10 +-- .../pages/LoginPage/SignInForm.stories.tsx | 2 +- site/src/pages/LoginPage/SignInForm.tsx | 2 +- site/src/pages/SetupPage/SetupPage.test.tsx | 2 +- site/src/pages/SetupPage/SetupPage.tsx | 4 +- site/src/pages/SetupPage/SetupPageView.tsx | 16 ++--- .../StarterTemplatePage.tsx | 2 +- .../StarterTemplatePageView.stories.tsx | 2 +- .../StarterTemplatePageView.tsx | 16 ++--- .../StarterTemplatesPage.test.tsx | 6 +- .../StarterTemplatesPage.tsx | 2 +- .../StarterTemplatesPageView.stories.tsx | 2 +- .../TemplateEmbedPage.test.tsx | 16 ++--- .../TemplateEmbedPage/TemplateEmbedPage.tsx | 10 +-- .../TemplateEmbedPageView.stories.tsx | 3 +- .../TemplateFilesPage.test.tsx | 8 +-- .../TemplateFilesPage/TemplateFilesPage.tsx | 2 +- .../TemplateInsightsPage/DateRange.tsx | 8 +-- .../TemplateInsightsPage.tsx | 70 +++++++++---------- .../TemplateInsightsPage/WeekPicker.tsx | 4 +- .../src/pages/TemplatePage/TemplateLayout.tsx | 6 +- .../TemplatePageHeader.stories.tsx | 2 +- .../pages/TemplatePage/TemplatePageHeader.tsx | 39 +++++------ .../TemplateStats.stories.tsx | 2 +- .../TemplateSummaryPage/TemplateStats.tsx | 6 +- .../TemplateSummaryPage.tsx | 8 +-- .../TemplateSummaryPageView.stories.tsx | 2 +- .../TemplateVersionsPage.tsx | 6 +- .../TemplateVersionsPage/VersionRow.tsx | 2 +- .../VersionsTable.stories.tsx | 2 +- .../TemplateVersionsPage/VersionsTable.tsx | 2 +- .../useDeletionDialogState.test.ts | 2 +- site/src/pages/TemplatePage/utils.ts | 2 +- .../pages/TemplateSettingsPage/Sidebar.tsx | 4 +- .../TemplateSettingsForm.tsx | 30 ++++---- .../TemplateSettingsPage.test.tsx | 2 +- .../TemplateSettingsPage.tsx | 4 +- .../TemplatePermissionsPage.tsx | 4 +- .../TemplatePermissionsPageView.stories.tsx | 2 +- .../TemplatePermissionsPageView.tsx | 21 +++--- .../UserOrGroupAutocomplete.tsx | 10 +-- .../TemplateSchedulePage/ScheduleDialog.tsx | 8 +-- .../TemplateScheduleForm.tsx | 46 ++++++------ .../TemplateSchedulePage.test.tsx | 3 +- .../TemplateSchedulePage.tsx | 4 +- .../TemplateSchedulePageView.stories.tsx | 4 +- .../TemplateSchedulePage/formHelpers.tsx | 6 +- .../useWorkspacesToBeDeleted.ts | 4 +- .../TemplateSettingsLayout.tsx | 4 +- .../TemplateVariableField.tsx | 5 +- .../TemplateVariablesForm.tsx | 11 +-- .../TemplateVariablesPage.test.tsx | 10 +-- .../TemplateVariablesPage.tsx | 16 ++--- .../TemplateVariablesPageView.stories.tsx | 2 +- .../TemplateVariablesPageView.tsx | 2 +- .../TemplateVersionEditorPage/FileDialog.tsx | 2 +- .../MissingTemplateVariablesDialog.tsx | 10 +-- .../ProvisionerTagsPopover.stories.tsx | 2 +- .../ProvisionerTagsPopover.test.tsx | 6 +- .../ProvisionerTagsPopover.tsx | 24 +++---- .../PublishTemplateVersionDialog.tsx | 16 ++--- .../TemplateVersionEditor.tsx | 51 +++++++------- .../TemplateVersionEditorPage.test.tsx | 29 ++++---- .../TemplateVersionEditorPage.tsx | 23 +++--- .../TemplateVersionStatusBadge.tsx | 6 +- .../TemplateVersionPage.test.tsx | 6 +- .../TemplateVersionPage.tsx | 8 +-- .../TemplateVersionPageView.stories.tsx | 7 +- .../TemplateVersionPageView.tsx | 10 +-- .../CreateTemplateButton.stories.tsx | 2 +- .../TemplatesPage/CreateTemplateButton.tsx | 10 +-- .../pages/TemplatesPage/EmptyTemplates.tsx | 2 +- .../TemplatesPage/TemplatesPage.test.tsx | 4 +- .../pages/TemplatesPage/TemplatesPageView.tsx | 44 ++++++------ .../src/pages/TerminalPage/TerminalAlerts.tsx | 3 +- .../pages/TerminalPage/TerminalPage.test.tsx | 4 +- site/src/pages/TerminalPage/TerminalPage.tsx | 16 ++--- .../AccountPage/AccountForm.stories.tsx | 2 +- .../AccountPage/AccountForm.test.tsx | 2 +- .../AccountPage/AccountForm.tsx | 13 ++-- .../AccountPage/AccountPage.test.tsx | 4 +- .../AccountPage/AccountPage.tsx | 4 +- .../AccountPage/AccountUserGroups.stories.tsx | 5 +- .../AccountPage/AccountUserGroups.tsx | 2 +- .../AppearancePage/AppearanceForm.tsx | 6 +- .../AppearancePage/AppearancePage.test.tsx | 2 +- .../ExternalAuthPage/ExternalAuthPage.tsx | 2 +- .../ExternalAuthPageView.stories.tsx | 2 +- .../ExternalAuthPage/ExternalAuthPageView.tsx | 2 +- site/src/pages/UserSettingsPage/Layout.tsx | 6 +- .../OAuth2ProviderPageView.tsx | 4 +- .../SSHKeysPage/SSHKeysPage.test.tsx | 2 +- .../SSHKeysPage/SSHKeysPage.tsx | 6 +- .../SSHKeysPage/SSHKeysPageView.stories.tsx | 2 +- .../SSHKeysPage/SSHKeysPageView.tsx | 4 +- .../SchedulePage/ScheduleForm.stories.tsx | 4 +- .../SchedulePage/ScheduleForm.tsx | 11 +-- .../SchedulePage/SchedulePage.test.tsx | 6 +- .../SchedulePage/SchedulePage.tsx | 6 +- site/src/pages/UserSettingsPage/Section.tsx | 2 +- .../SecurityPage/SecurityForm.stories.tsx | 2 +- .../SecurityPage/SecurityForm.tsx | 9 +-- .../SecurityPage/SecurityPage.test.tsx | 8 +-- .../SecurityPage/SecurityPage.tsx | 4 +- .../SecurityPage/SecurityPageView.stories.tsx | 8 +-- .../SecurityPage/SingleSignOnSection.tsx | 12 ++-- site/src/pages/UserSettingsPage/Sidebar.tsx | 12 ++-- .../ConfirmDeleteDialog.stories.tsx | 2 +- .../TokensPage/ConfirmDeleteDialog.tsx | 8 +-- .../TokensPage/TokensPage.tsx | 6 +- .../TokensPage/TokensPageView.stories.tsx | 2 +- .../TokensPage/TokensPageView.tsx | 8 +-- .../UserSettingsPage/TokensPage/hooks.ts | 5 +- .../WorkspaceProxyPage/WorkspaceProxyRow.tsx | 8 +-- .../WorkspaceProxyPage/WorkspaceProxyView.tsx | 4 +- .../WorspaceProxyView.stories.tsx | 2 +- .../UsersPage/ResetPasswordDialog.stories.tsx | 3 +- site/src/pages/UsersPage/UsersFilter.tsx | 7 +- site/src/pages/UsersPage/UsersLayout.tsx | 12 ++-- site/src/pages/UsersPage/UsersPage.test.tsx | 6 +- site/src/pages/UsersPage/UsersPage.tsx | 18 ++--- .../pages/UsersPage/UsersPageView.stories.tsx | 17 +++-- site/src/pages/UsersPage/UsersPageView.tsx | 4 +- .../UsersTable/EditRolesButton.stories.tsx | 2 +- .../UsersPage/UsersTable/EditRolesButton.tsx | 10 +-- .../UsersTable/TableColumnHelpTooltip.tsx | 2 +- .../UsersPage/UsersTable/UserGroupsCell.tsx | 12 ++-- .../UsersPage/UsersTable/UserRoleCell.tsx | 2 +- .../UsersTable/UsersTable.stories.tsx | 2 +- .../pages/UsersPage/UsersTable/UsersTable.tsx | 2 +- .../UsersPage/UsersTable/UsersTableBody.tsx | 30 ++++---- .../WorkspaceBuildPage.test.tsx | 6 +- .../WorkspaceBuildPage/WorkspaceBuildPage.tsx | 10 +-- .../WorkspaceBuildPageView.stories.tsx | 2 +- .../WorkspaceBuildPageView.tsx | 18 ++--- site/src/pages/WorkspacePage/BuildRow.tsx | 2 +- .../ChangeVersionDialog.stories.tsx | 2 +- .../WorkspacePage/ChangeVersionDialog.tsx | 20 +++--- .../ResourceMetadata.stories.tsx | 2 +- .../pages/WorkspacePage/ResourceMetadata.tsx | 4 +- .../WorkspacePage/ResourcesSidebarContent.tsx | 2 +- .../UpdateBuildParametersDialog.tsx | 16 ++--- .../pages/WorkspacePage/Workspace.stories.tsx | 8 +-- site/src/pages/WorkspacePage/Workspace.tsx | 20 +++--- .../BuildParametersPopover.tsx | 25 +++---- .../WorkspaceActions/Buttons.tsx | 12 ++-- .../WorkspaceActions/DebugButton.stories.tsx | 6 +- .../WorkspaceActions/DebugButton.tsx | 6 +- .../WorkspaceActions/RetryButton.stories.tsx | 6 +- .../WorkspaceActions/RetryButton.tsx | 6 +- .../WorkspaceActions.stories.tsx | 2 +- .../WorkspaceActions/WorkspaceActions.tsx | 33 +++++---- .../WorkspaceBuildProgress.stories.tsx | 2 +- .../WorkspacePage/WorkspaceBuildProgress.tsx | 7 +- .../WorkspaceDeleteDialog.stories.tsx | 4 +- .../WorkspaceDeleteDialog.tsx | 10 +-- .../WorkspaceDeletedBanner.stories.tsx | 2 +- .../WorkspaceNotifications/Notifications.tsx | 6 +- .../WorkspaceNotifications.stories.tsx | 2 +- .../WorkspaceNotifications.tsx | 19 ++--- .../WorkspacePage/WorkspacePage.test.tsx | 6 +- .../src/pages/WorkspacePage/WorkspacePage.tsx | 17 ++--- .../WorkspacePage/WorkspaceReadyPage.tsx | 25 +++---- .../WorkspaceScheduleControls.test.tsx | 6 +- .../WorkspaceScheduleControls.tsx | 29 ++++---- .../WorkspacePage/WorkspaceTopbar.stories.tsx | 8 +-- .../pages/WorkspacePage/WorkspaceTopbar.tsx | 26 +++---- site/src/pages/WorkspacePage/permissions.ts | 2 +- .../WorkspacePage/useResourcesNav.test.tsx | 6 +- .../pages/WorkspacePage/useResourcesNav.ts | 4 +- .../pages/WorkspaceSettingsPage/Sidebar.tsx | 6 +- .../WorkspaceParametersForm.tsx | 15 ++-- .../WorkspaceParametersPage.stories.tsx | 4 +- .../WorkspaceParametersPage.test.tsx | 12 ++-- .../WorkspaceParametersPage.tsx | 27 +++---- .../WorkspaceScheduleForm.stories.tsx | 2 +- .../WorkspaceScheduleForm.test.tsx | 19 ++--- .../WorkspaceScheduleForm.tsx | 27 +++---- .../WorkspaceSchedulePage.test.tsx | 9 +-- .../WorkspaceSchedulePage.tsx | 33 ++++----- .../WorkspaceSchedulePage/formToRequest.ts | 4 +- .../WorkspaceSchedulePage/schedule.ts | 6 +- .../WorkspaceSettingsForm.tsx | 23 +++--- .../WorkspaceSettingsLayout.tsx | 4 +- .../WorkspaceSettingsPage.test.tsx | 6 +- .../WorkspaceSettingsPage.tsx | 8 +-- .../WorkspaceSettingsPageView.stories.tsx | 2 +- .../WorkspaceSettingsPageView.tsx | 4 +- .../BatchDeleteConfirmation.tsx | 2 +- .../BatchUpdateConfirmation.tsx | 8 +-- site/src/pages/WorkspacesPage/LastUsed.tsx | 2 +- .../WorkspacesPage/WorkspaceHelpTooltip.tsx | 2 +- .../pages/WorkspacesPage/WorkspacesButton.tsx | 21 +++--- .../pages/WorkspacesPage/WorkspacesEmpty.tsx | 2 +- .../WorkspacesPage/WorkspacesPage.test.tsx | 8 +-- .../pages/WorkspacesPage/WorkspacesPage.tsx | 10 +-- .../WorkspacesPageView.stories.tsx | 21 +++--- .../WorkspacesPage/WorkspacesPageView.tsx | 38 +++++----- .../pages/WorkspacesPage/WorkspacesTable.tsx | 22 +++--- site/src/pages/WorkspacesPage/data.ts | 7 +- .../pages/WorkspacesPage/filter/filter.tsx | 7 +- site/src/pages/WorkspacesPage/filter/menus.ts | 7 +- .../pages/WorkspacesPage/filter/options.ts | 2 +- site/src/testHelpers/entities.ts | 12 ++-- site/src/testHelpers/handlers.ts | 6 +- site/src/testHelpers/renderHelpers.tsx | 10 +-- site/src/testHelpers/storybook.tsx | 2 +- site/src/theme/dark/index.ts | 2 +- site/src/theme/dark/monaco.ts | 2 +- site/src/theme/dark/mui.ts | 2 +- site/src/theme/darkBlue/index.ts | 2 +- site/src/theme/darkBlue/monaco.ts | 2 +- site/src/theme/darkBlue/mui.ts | 2 +- site/src/theme/index.ts | 6 +- site/src/theme/light/index.ts | 2 +- site/src/theme/light/monaco.ts | 2 +- site/src/theme/mui.ts | 2 +- site/src/utils/apps.test.ts | 2 +- site/src/utils/apps.ts | 2 +- site/src/utils/deployOptions.ts | 2 +- site/src/utils/dormant.test.ts | 2 +- site/src/utils/dormant.ts | 2 +- site/src/utils/ellipsizeText.test.ts | 2 +- site/src/utils/ellipsizeText.ts | 2 +- site/src/utils/filetree.test.ts | 3 +- site/src/utils/filetree.ts | 4 +- site/src/utils/formUtils.stories.tsx | 6 +- site/src/utils/formUtils.test.ts | 4 +- site/src/utils/formUtils.ts | 7 +- site/src/utils/groups.ts | 2 +- site/src/utils/richParameters.ts | 4 +- site/src/utils/schedule.test.ts | 2 +- site/src/utils/schedule.tsx | 2 +- site/src/utils/starterTemplates.ts | 2 +- site/src/utils/tar.test.ts | 3 +- site/src/utils/templateVersion.ts | 4 +- site/src/utils/workspace.test.ts | 2 +- site/src/utils/workspace.tsx | 10 +-- site/vite.config.ts | 2 +- 562 files changed, 2011 insertions(+), 1931 deletions(-) diff --git a/site/e2e/global.setup.ts b/site/e2e/global.setup.ts index 2472c85c54134..11dc99923a470 100644 --- a/site/e2e/global.setup.ts +++ b/site/e2e/global.setup.ts @@ -1,7 +1,7 @@ import { test, expect } from "@playwright/test"; +import { Language } from "pages/CreateUserPage/CreateUserForm"; import * as constants from "./constants"; import { STORAGE_STATE } from "./playwright.config"; -import { Language } from "pages/CreateUserPage/CreateUserForm"; test("setup first user", async ({ page }) => { await page.goto("/", { waitUntil: "domcontentloaded" }); diff --git a/site/e2e/helpers.ts b/site/e2e/helpers.ts index b753226240b2d..8ae788ea6c668 100644 --- a/site/e2e/helpers.ts +++ b/site/e2e/helpers.ts @@ -1,30 +1,33 @@ -import { expect, Page } from "@playwright/test"; -import { ChildProcess, exec, spawn } from "child_process"; +import type { Page } from "@playwright/test"; +import { expect } from "@playwright/test"; +import axios from "axios"; +import type { ChildProcess} from "child_process"; +import { exec, spawn } from "child_process"; import { randomUUID } from "crypto"; -import path from "path"; import express from "express"; +import capitalize from "lodash/capitalize"; +import path from "path"; +import * as ssh from "ssh2"; +import { Duplex } from "stream"; +import type { + WorkspaceBuildParameter, + UpdateTemplateMeta, +} from "api/typesGenerated"; import { TarWriter } from "utils/tar"; -import { - Agent, +import { prometheusPort, agentPProfPort } from "./constants"; +import { port } from "./playwright.config"; +import type { App, - AppSharingLevel, - Response, ParseComplete, PlanComplete, ApplyComplete, Resource, - RichParameter, -} from "./provisionerGenerated"; -import { prometheusPort, agentPProfPort } from "./constants"; -import { port } from "./playwright.config"; -import * as ssh from "ssh2"; -import { Duplex } from "stream"; + RichParameter} from "./provisionerGenerated"; import { - WorkspaceBuildParameter, - UpdateTemplateMeta, -} from "api/typesGenerated"; -import axios from "axios"; -import capitalize from "lodash/capitalize"; + Agent, + AppSharingLevel, + Response +} from "./provisionerGenerated"; // createWorkspace creates a workspace for a template. // It does not wait for it to be running, but it does navigate to the page. diff --git a/site/e2e/hooks.ts b/site/e2e/hooks.ts index c6031bd18aae7..0fc483319a0ca 100644 --- a/site/e2e/hooks.ts +++ b/site/e2e/hooks.ts @@ -1,4 +1,4 @@ -import { Page } from "@playwright/test"; +import type { Page } from "@playwright/test"; export const beforeCoderTest = async (page: Page) => { // eslint-disable-next-line no-console -- Show everything that was printed with console.log() diff --git a/site/e2e/parameters.ts b/site/e2e/parameters.ts index 47048d34688ef..f7e02ad20f1ee 100644 --- a/site/e2e/parameters.ts +++ b/site/e2e/parameters.ts @@ -1,4 +1,4 @@ -import { RichParameter } from "./provisionerGenerated"; +import type { RichParameter } from "./provisionerGenerated"; // Rich parameters diff --git a/site/e2e/pom/BasePom.ts b/site/e2e/pom/BasePom.ts index 771181ed5eec1..8c371637a8dd7 100644 --- a/site/e2e/pom/BasePom.ts +++ b/site/e2e/pom/BasePom.ts @@ -1,4 +1,4 @@ -import { Page } from "@playwright/test"; +import type { Page } from "@playwright/test"; export abstract class BasePom { protected readonly baseURL: string | undefined; diff --git a/site/e2e/pom/SignInPage.ts b/site/e2e/pom/SignInPage.ts index 9b24793f9a748..365a3b941b2c1 100644 --- a/site/e2e/pom/SignInPage.ts +++ b/site/e2e/pom/SignInPage.ts @@ -1,4 +1,4 @@ -import { Page } from "@playwright/test"; +import type { Page } from "@playwright/test"; import { BasePom } from "./BasePom"; export class SignInPage extends BasePom { diff --git a/site/e2e/pom/WorkspacesPage.ts b/site/e2e/pom/WorkspacesPage.ts index 9c2bae81d2d8e..1a1fbc0cfe897 100644 --- a/site/e2e/pom/WorkspacesPage.ts +++ b/site/e2e/pom/WorkspacesPage.ts @@ -1,4 +1,4 @@ -import { Page } from "@playwright/test"; +import type { Page } from "@playwright/test"; import { BasePom } from "./BasePom"; export class WorkspacesPage extends BasePom { diff --git a/site/e2e/reporter.ts b/site/e2e/reporter.ts index e0cdfa8870529..223ea8a34a791 100644 --- a/site/e2e/reporter.ts +++ b/site/e2e/reporter.ts @@ -1,5 +1,4 @@ /* eslint-disable no-console -- Logging is sort of the whole point here */ -import * as fs from "fs/promises"; import type { FullConfig, Suite, @@ -10,6 +9,7 @@ import type { TestError, } from "@playwright/test/reporter"; import axios from "axios"; +import * as fs from "fs/promises"; import type { Writable } from "stream"; class CoderReporter implements Reporter { diff --git a/site/e2e/tests/createWorkspace.spec.ts b/site/e2e/tests/createWorkspace.spec.ts index 5e435340f3255..6a8b4ab7ada98 100644 --- a/site/e2e/tests/createWorkspace.spec.ts +++ b/site/e2e/tests/createWorkspace.spec.ts @@ -5,7 +5,7 @@ import { echoResponsesWithParameters, verifyParameters, } from "../helpers"; - +import { beforeCoderTest } from "../hooks"; import { secondParameter, fourthParameter, @@ -16,8 +16,7 @@ import { sixthParameter, randParamName, } from "../parameters"; -import { RichParameter } from "../provisionerGenerated"; -import { beforeCoderTest } from "../hooks"; +import type { RichParameter } from "../provisionerGenerated"; test.beforeEach(async ({ page }) => await beforeCoderTest(page)); diff --git a/site/e2e/tests/externalAuth.spec.ts b/site/e2e/tests/externalAuth.spec.ts index 5480ad4b5988f..941fac99146c6 100644 --- a/site/e2e/tests/externalAuth.spec.ts +++ b/site/e2e/tests/externalAuth.spec.ts @@ -1,7 +1,7 @@ +import type { Endpoints } from "@octokit/types"; import { test } from "@playwright/test"; +import type { ExternalAuthDevice } from "api/typesGenerated"; import { gitAuth } from "../constants"; -import { Endpoints } from "@octokit/types"; -import { ExternalAuthDevice } from "api/typesGenerated"; import { Awaiter, createServer } from "../helpers"; import { beforeCoderTest } from "../hooks"; diff --git a/site/e2e/tests/restartWorkspace.spec.ts b/site/e2e/tests/restartWorkspace.spec.ts index a0710e96fd58a..1e066aea0bd19 100644 --- a/site/e2e/tests/restartWorkspace.spec.ts +++ b/site/e2e/tests/restartWorkspace.spec.ts @@ -6,10 +6,9 @@ import { echoResponsesWithParameters, verifyParameters, } from "../helpers"; - -import { firstBuildOption, secondBuildOption } from "../parameters"; -import { RichParameter } from "../provisionerGenerated"; import { beforeCoderTest } from "../hooks"; +import { firstBuildOption, secondBuildOption } from "../parameters"; +import type { RichParameter } from "../provisionerGenerated"; test.beforeEach(async ({ page }) => await beforeCoderTest(page)); diff --git a/site/e2e/tests/startWorkspace.spec.ts b/site/e2e/tests/startWorkspace.spec.ts index be1cc5a5d78e1..054bbf1721909 100644 --- a/site/e2e/tests/startWorkspace.spec.ts +++ b/site/e2e/tests/startWorkspace.spec.ts @@ -7,9 +7,8 @@ import { stopWorkspace, verifyParameters, } from "../helpers"; - import { firstBuildOption, secondBuildOption } from "../parameters"; -import { RichParameter } from "../provisionerGenerated"; +import type { RichParameter } from "../provisionerGenerated"; test("start workspace with ephemeral parameters", async ({ page }) => { const richParameters: RichParameter[] = [firstBuildOption, secondBuildOption]; diff --git a/site/e2e/tests/updateWorkspace.spec.ts b/site/e2e/tests/updateWorkspace.spec.ts index b8e3d51d453b8..5de1c42e01e77 100644 --- a/site/e2e/tests/updateWorkspace.spec.ts +++ b/site/e2e/tests/updateWorkspace.spec.ts @@ -1,5 +1,4 @@ import { test } from "@playwright/test"; - import { createTemplate, createWorkspace, @@ -9,7 +8,7 @@ import { updateWorkspaceParameters, verifyParameters, } from "../helpers"; - +import { beforeCoderTest } from "../hooks"; import { fifthParameter, firstParameter, @@ -17,8 +16,7 @@ import { sixthParameter, secondBuildOption, } from "../parameters"; -import { RichParameter } from "../provisionerGenerated"; -import { beforeCoderTest } from "../hooks"; +import type { RichParameter } from "../provisionerGenerated"; test.beforeEach(async ({ page }) => await beforeCoderTest(page)); diff --git a/site/e2e/tests/webTerminal.spec.ts b/site/e2e/tests/webTerminal.spec.ts index fd2a8dd32a014..969f659e99f9a 100644 --- a/site/e2e/tests/webTerminal.spec.ts +++ b/site/e2e/tests/webTerminal.spec.ts @@ -1,11 +1,11 @@ import { test } from "@playwright/test"; +import { randomUUID } from "crypto"; import { createTemplate, createWorkspace, startAgent, stopAgent, } from "../helpers"; -import { randomUUID } from "crypto"; import { beforeCoderTest } from "../hooks"; test.beforeEach(async ({ page }) => await beforeCoderTest(page)); diff --git a/site/jest.setup.ts b/site/jest.setup.ts index 6e1da6fb241dc..789649ad6bf52 100644 --- a/site/jest.setup.ts +++ b/site/jest.setup.ts @@ -1,14 +1,14 @@ import "@testing-library/jest-dom"; import { cleanup } from "@testing-library/react"; -import crypto from "crypto"; -import { server } from "testHelpers/server"; -import "jest-location-mock"; -import { TextEncoder, TextDecoder } from "util"; import { Blob } from "buffer"; +import crypto from "crypto"; import jestFetchMock from "jest-fetch-mock"; -import { ProxyLatencyReport } from "contexts/useProxyLatency"; -import { Region } from "api/typesGenerated"; +import "jest-location-mock"; import { useMemo } from "react"; +import { TextEncoder, TextDecoder } from "util"; +import type { Region } from "api/typesGenerated"; +import type { ProxyLatencyReport } from "contexts/useProxyLatency"; +import { server } from "testHelpers/server"; jestFetchMock.enableMocks(); diff --git a/site/src/@types/storybook.d.ts b/site/src/@types/storybook.d.ts index 8aada49bf9e3f..90155110411ae 100644 --- a/site/src/@types/storybook.d.ts +++ b/site/src/@types/storybook.d.ts @@ -1,6 +1,6 @@ import * as _storybook_types from "@storybook/react"; -import { Experiments, FeatureName } from "api/typesGenerated"; -import { QueryKey } from "react-query"; +import type { QueryKey } from "react-query"; +import type { Experiments, FeatureName } from "api/typesGenerated"; declare module "@storybook/react" { interface Parameters { diff --git a/site/src/App.tsx b/site/src/App.tsx index 39f75813c8349..5a336611009a8 100644 --- a/site/src/App.tsx +++ b/site/src/App.tsx @@ -1,13 +1,13 @@ -import { QueryClient, QueryClientProvider } from "react-query"; +import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; import { type FC, type ReactNode, useEffect, useState } from "react"; import { HelmetProvider } from "react-helmet-async"; +import { QueryClient, QueryClientProvider } from "react-query"; import { AppRouter } from "./AppRouter"; -import { ThemeProvider } from "./contexts/ThemeProvider"; -import { AuthProvider } from "./contexts/auth/AuthProvider"; import { ErrorBoundary } from "./components/ErrorBoundary/ErrorBoundary"; import { GlobalSnackbar } from "./components/GlobalSnackbar/GlobalSnackbar"; +import { AuthProvider } from "./contexts/auth/AuthProvider"; +import { ThemeProvider } from "./contexts/ThemeProvider"; import "./theme/globalFonts"; -import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; const defaultQueryClient = new QueryClient({ defaultOptions: { diff --git a/site/src/AppRouter.tsx b/site/src/AppRouter.tsx index ff4f1afb7d4b1..60463f7cb2533 100644 --- a/site/src/AppRouter.tsx +++ b/site/src/AppRouter.tsx @@ -5,22 +5,22 @@ import { BrowserRouter as Router, Navigate, } from "react-router-dom"; -import { DashboardLayout } from "./modules/dashboard/DashboardLayout"; -import { RequireAuth } from "./contexts/auth/RequireAuth"; import { FullScreenLoader } from "./components/Loader/FullScreenLoader"; +import { RequireAuth } from "./contexts/auth/RequireAuth"; +import { DashboardLayout } from "./modules/dashboard/DashboardLayout"; import AuditPage from "./pages/AuditPage/AuditPage"; import { DeploySettingsLayout } from "./pages/DeploySettingsPage/DeploySettingsLayout"; +import { HealthLayout } from "./pages/HealthPage/HealthLayout"; import LoginPage from "./pages/LoginPage/LoginPage"; import { SetupPage } from "./pages/SetupPage/SetupPage"; import { TemplateLayout } from "./pages/TemplatePage/TemplateLayout"; -import { HealthLayout } from "./pages/HealthPage/HealthLayout"; +import { TemplateSettingsLayout } from "./pages/TemplateSettingsPage/TemplateSettingsLayout"; import TemplatesPage from "./pages/TemplatesPage/TemplatesPage"; +import UserSettingsLayout from "./pages/UserSettingsPage/Layout"; import { UsersLayout } from "./pages/UsersPage/UsersLayout"; import UsersPage from "./pages/UsersPage/UsersPage"; -import WorkspacesPage from "./pages/WorkspacesPage/WorkspacesPage"; -import UserSettingsLayout from "./pages/UserSettingsPage/Layout"; -import { TemplateSettingsLayout } from "./pages/TemplateSettingsPage/TemplateSettingsLayout"; import { WorkspaceSettingsLayout } from "./pages/WorkspaceSettingsPage/WorkspaceSettingsLayout"; +import WorkspacesPage from "./pages/WorkspacesPage/WorkspacesPage"; // Lazy load pages // - Pages that are secondary, not in the main navigation or not usually accessed diff --git a/site/src/__mocks__/react-markdown.tsx b/site/src/__mocks__/react-markdown.tsx index 35af96426037e..1d2f3dad03ddd 100644 --- a/site/src/__mocks__/react-markdown.tsx +++ b/site/src/__mocks__/react-markdown.tsx @@ -1,4 +1,4 @@ -import { FC, PropsWithChildren } from "react"; +import type { FC, PropsWithChildren } from "react"; const ReactMarkdown: FC = ({ children }) => { return
{children}
; diff --git a/site/src/api/api.test.ts b/site/src/api/api.test.ts index 11d00d216feb4..e755d241cbec5 100644 --- a/site/src/api/api.test.ts +++ b/site/src/api/api.test.ts @@ -8,7 +8,7 @@ import { MockWorkspaceBuildParameter1, } from "testHelpers/entities"; import * as api from "./api"; -import * as TypesGen from "./typesGenerated"; +import type * as TypesGen from "./typesGenerated"; describe("api.ts", () => { describe("login", () => { diff --git a/site/src/api/api.ts b/site/src/api/api.ts index 4acd2b3f155a9..193e372228dbf 100644 --- a/site/src/api/api.ts +++ b/site/src/api/api.ts @@ -1,10 +1,10 @@ import axios, { isAxiosError } from "axios"; -import dayjs from "dayjs"; +import type dayjs from "dayjs"; +import userAgentParser from "ua-parser-js"; +import { delay } from "../utils/delay"; import * as TypesGen from "./typesGenerated"; // This needs to include the `../`, otherwise it breaks when importing into // vscode-coder. -import { delay } from "../utils/delay"; -import userAgentParser from "ua-parser-js"; // Adds 304 for the default axios validateStatus function // https://github.com/axios/axios#handling-errors Check status here diff --git a/site/src/api/errors.ts b/site/src/api/errors.ts index 6b2abbcc477b0..419454209035d 100644 --- a/site/src/api/errors.ts +++ b/site/src/api/errors.ts @@ -1,4 +1,5 @@ -import axios, { AxiosError, AxiosResponse } from "axios"; +import type { AxiosError, AxiosResponse } from "axios"; +import axios from "axios"; const Language = { errorsByCode: { diff --git a/site/src/api/queries/appearance.ts b/site/src/api/queries/appearance.ts index 10366b4382d72..3d2ac875e1ad4 100644 --- a/site/src/api/queries/appearance.ts +++ b/site/src/api/queries/appearance.ts @@ -1,4 +1,4 @@ -import { QueryClient, type UseQueryOptions } from "react-query"; +import type { QueryClient, type UseQueryOptions } from "react-query"; import * as API from "api/api"; import { type AppearanceConfig } from "api/typesGenerated"; import { getMetadataAsJSON } from "utils/metadata"; diff --git a/site/src/api/queries/authCheck.ts b/site/src/api/queries/authCheck.ts index 415c7676ea128..be9e726ae074d 100644 --- a/site/src/api/queries/authCheck.ts +++ b/site/src/api/queries/authCheck.ts @@ -1,5 +1,5 @@ -import { AuthorizationRequest } from "api/typesGenerated"; import * as API from "api/api"; +import type { AuthorizationRequest } from "api/typesGenerated"; export const AUTHORIZATION_KEY = "authorization"; diff --git a/site/src/api/queries/buildInfo.ts b/site/src/api/queries/buildInfo.ts index 58e61575ef057..90eae3713c2c7 100644 --- a/site/src/api/queries/buildInfo.ts +++ b/site/src/api/queries/buildInfo.ts @@ -1,6 +1,6 @@ import { type UseQueryOptions } from "react-query"; -import { type BuildInfoResponse } from "api/typesGenerated"; import * as API from "api/api"; +import { type BuildInfoResponse } from "api/typesGenerated"; import { getMetadataAsJSON } from "utils/metadata"; const initialBuildInfoData = getMetadataAsJSON("build-info"); diff --git a/site/src/api/queries/debug.ts b/site/src/api/queries/debug.ts index e8a5d447a2d6b..1fba00c172c51 100644 --- a/site/src/api/queries/debug.ts +++ b/site/src/api/queries/debug.ts @@ -1,6 +1,6 @@ +import type { QueryClient, UseMutationOptions } from "react-query"; import * as API from "api/api"; -import { HealthSettings, UpdateHealthSettings } from "api/typesGenerated"; -import { QueryClient, UseMutationOptions } from "react-query"; +import type { HealthSettings, UpdateHealthSettings } from "api/typesGenerated"; export const HEALTH_QUERY_KEY = ["health"]; export const HEALTH_QUERY_SETTINGS_KEY = ["health", "settings"]; diff --git a/site/src/api/queries/entitlements.ts b/site/src/api/queries/entitlements.ts index 6cb0bf9c2572e..d92b81cec6095 100644 --- a/site/src/api/queries/entitlements.ts +++ b/site/src/api/queries/entitlements.ts @@ -1,6 +1,6 @@ -import { QueryClient, UseQueryOptions } from "react-query"; +import type { QueryClient, UseQueryOptions } from "react-query"; import * as API from "api/api"; -import { Entitlements } from "api/typesGenerated"; +import type { Entitlements } from "api/typesGenerated"; import { getMetadataAsJSON } from "utils/metadata"; const initialEntitlementsData = getMetadataAsJSON("entitlements"); diff --git a/site/src/api/queries/experiments.ts b/site/src/api/queries/experiments.ts index aa12d5152411b..fab6fa777b186 100644 --- a/site/src/api/queries/experiments.ts +++ b/site/src/api/queries/experiments.ts @@ -1,7 +1,7 @@ +import { type UseQueryOptions } from "react-query"; import * as API from "api/api"; -import { getMetadataAsJSON } from "utils/metadata"; import { type Experiments } from "api/typesGenerated"; -import { type UseQueryOptions } from "react-query"; +import { getMetadataAsJSON } from "utils/metadata"; const initialExperimentsData = getMetadataAsJSON("experiments"); const experimentsKey = ["experiments"] as const; diff --git a/site/src/api/queries/externalAuth.ts b/site/src/api/queries/externalAuth.ts index 2a0c66458752b..18cc95a8839ff 100644 --- a/site/src/api/queries/externalAuth.ts +++ b/site/src/api/queries/externalAuth.ts @@ -1,6 +1,6 @@ +import type { QueryClient, UseMutationOptions } from "react-query"; import * as API from "api/api"; -import { ExternalAuth } from "api/typesGenerated"; -import { QueryClient, UseMutationOptions } from "react-query"; +import type { ExternalAuth } from "api/typesGenerated"; // Returns all configured external auths for a given user. export const externalAuths = () => { diff --git a/site/src/api/queries/groups.ts b/site/src/api/queries/groups.ts index 6dff724772233..71cba33354b9b 100644 --- a/site/src/api/queries/groups.ts +++ b/site/src/api/queries/groups.ts @@ -1,7 +1,7 @@ -import { QueryClient, UseQueryOptions } from "react-query"; +import type { QueryClient, UseQueryOptions } from "react-query"; import * as API from "api/api"; import { checkAuthorization } from "api/api"; -import { +import type { CreateGroupRequest, Group, PatchGroupRequest, diff --git a/site/src/api/queries/integrations.ts b/site/src/api/queries/integrations.ts index 72df1752f7169..de43a4c8f4cac 100644 --- a/site/src/api/queries/integrations.ts +++ b/site/src/api/queries/integrations.ts @@ -1,4 +1,4 @@ -import { GetJFrogXRayScanParams } from "api/api"; +import type { GetJFrogXRayScanParams } from "api/api"; import * as API from "api/api"; export const xrayScan = (params: GetJFrogXRayScanParams) => { diff --git a/site/src/api/queries/settings.ts b/site/src/api/queries/settings.ts index c8f9aac16e136..9f405bd4e50b4 100644 --- a/site/src/api/queries/settings.ts +++ b/site/src/api/queries/settings.ts @@ -1,9 +1,9 @@ +import { type QueryClient, type QueryOptions } from "react-query"; import * as API from "api/api"; import { type UserQuietHoursScheduleResponse, type UpdateUserQuietHoursScheduleRequest, } from "api/typesGenerated"; -import { type QueryClient, type QueryOptions } from "react-query"; export const userQuietHoursScheduleKey = (userId: string) => [ "settings", diff --git a/site/src/api/queries/sshKeys.ts b/site/src/api/queries/sshKeys.ts index 07f9963b40c8b..6fc3593c318c7 100644 --- a/site/src/api/queries/sshKeys.ts +++ b/site/src/api/queries/sshKeys.ts @@ -1,6 +1,6 @@ -import { QueryClient } from "react-query"; +import type { QueryClient } from "react-query"; import * as API from "api/api"; -import { GitSSHKey } from "api/typesGenerated"; +import type { GitSSHKey } from "api/typesGenerated"; const getUserSSHKeyQueryKey = (userId: string) => [userId, "sshKey"]; diff --git a/site/src/api/queries/templates.ts b/site/src/api/queries/templates.ts index 532ba0c9f7f22..98a3d33f3c8fb 100644 --- a/site/src/api/queries/templates.ts +++ b/site/src/api/queries/templates.ts @@ -1,19 +1,19 @@ +import type { + MutationOptions, + type QueryClient, + type QueryOptions, +} from "react-query"; import * as API from "api/api"; -import { - type Template, - type CreateTemplateVersionRequest, - type ProvisionerJobStatus, - type TemplateVersion, +import type { CreateTemplateRequest, ProvisionerJob, UsersRequest, TemplateRole, + type Template, + type CreateTemplateVersionRequest, + type ProvisionerJobStatus, + type TemplateVersion } from "api/typesGenerated"; -import { - MutationOptions, - type QueryClient, - type QueryOptions, -} from "react-query"; import { delay } from "utils/delay"; import { getTemplateVersionFiles } from "utils/templateVersion"; diff --git a/site/src/api/queries/users.ts b/site/src/api/queries/users.ts index 9299831985b40..906472d068385 100644 --- a/site/src/api/queries/users.ts +++ b/site/src/api/queries/users.ts @@ -15,10 +15,10 @@ import type { User, GenerateAPIKeyResponse, } from "api/typesGenerated"; -import { getAuthorizationKey } from "./authCheck"; -import { getMetadataAsJSON } from "utils/metadata"; import { type UsePaginatedQueryOptions } from "hooks/usePaginatedQuery"; import { prepareQuery } from "utils/filters"; +import { getMetadataAsJSON } from "utils/metadata"; +import { getAuthorizationKey } from "./authCheck"; export function usersKey(req: UsersRequest) { return ["users", req] as const; diff --git a/site/src/api/queries/workspaceBuilds.ts b/site/src/api/queries/workspaceBuilds.ts index ecace99560ca2..6e5141bd7678f 100644 --- a/site/src/api/queries/workspaceBuilds.ts +++ b/site/src/api/queries/workspaceBuilds.ts @@ -1,4 +1,4 @@ -import { QueryOptions, UseInfiniteQueryOptions } from "react-query"; +import type { QueryOptions, UseInfiniteQueryOptions } from "react-query"; import * as API from "api/api"; import { type WorkspaceBuild, diff --git a/site/src/api/queries/workspaceportsharing.ts b/site/src/api/queries/workspaceportsharing.ts index 7f921f90d7999..9e341d551a4f3 100644 --- a/site/src/api/queries/workspaceportsharing.ts +++ b/site/src/api/queries/workspaceportsharing.ts @@ -3,7 +3,7 @@ import { getWorkspaceAgentSharedPorts, upsertWorkspaceAgentSharedPort, } from "api/api"; -import { +import type { DeleteWorkspaceAgentPortShareRequest, UpsertWorkspaceAgentPortShareRequest, } from "api/typesGenerated"; diff --git a/site/src/api/queries/workspaces.ts b/site/src/api/queries/workspaces.ts index b1252fe9af0f0..3c16b403cffff 100644 --- a/site/src/api/queries/workspaces.ts +++ b/site/src/api/queries/workspaces.ts @@ -1,19 +1,19 @@ -import * as API from "api/api"; -import { +import type { Dayjs } from "dayjs"; +import type { QueryClient, UseMutationOptions, type QueryOptions, } from "react-query"; +import * as API from "api/api"; import { putWorkspaceExtension } from "api/api"; -import { Dayjs } from "dayjs"; -import { +import type { + WorkspaceBuild, + ProvisionerLogLevel, type WorkspaceBuildParameter, type Workspace, type CreateWorkspaceRequest, type WorkspacesResponse, - type WorkspacesRequest, - WorkspaceBuild, - ProvisionerLogLevel, + type WorkspacesRequest } from "api/typesGenerated"; import { workspaceBuildsKey } from "./workspaceBuilds"; diff --git a/site/src/components/ActiveUserChart/ActiveUserChart.tsx b/site/src/components/ActiveUserChart/ActiveUserChart.tsx index c8dd64a7e987d..008b0a571e701 100644 --- a/site/src/components/ActiveUserChart/ActiveUserChart.tsx +++ b/site/src/components/ActiveUserChart/ActiveUserChart.tsx @@ -1,7 +1,9 @@ +import { useTheme } from "@emotion/react"; +import type { + ChartOptions} from "chart.js"; import { CategoryScale, Chart as ChartJS, - ChartOptions, defaults, Filler, Legend, @@ -13,6 +15,10 @@ import { PointElement, } from "chart.js"; import "chartjs-adapter-date-fns"; +import annotationPlugin from "chartjs-plugin-annotation"; +import dayjs from "dayjs"; +import { type FC } from "react"; +import { Line } from "react-chartjs-2"; import { HelpTooltip, HelpTooltipTitle, @@ -20,11 +26,6 @@ import { HelpTooltipContent, HelpTooltipTrigger, } from "components/HelpTooltip/HelpTooltip"; -import dayjs from "dayjs"; -import { useTheme } from "@emotion/react"; -import { type FC } from "react"; -import { Line } from "react-chartjs-2"; -import annotationPlugin from "chartjs-plugin-annotation"; ChartJS.register( CategoryScale, diff --git a/site/src/components/Alert/Alert.stories.tsx b/site/src/components/Alert/Alert.stories.tsx index 797157de85abb..f0b0ea82cb9f4 100644 --- a/site/src/components/Alert/Alert.stories.tsx +++ b/site/src/components/Alert/Alert.stories.tsx @@ -1,6 +1,6 @@ -import { Alert } from "./Alert"; import Button from "@mui/material/Button"; import type { Meta, StoryObj } from "@storybook/react"; +import { Alert } from "./Alert"; const meta: Meta = { title: "components/Alert", diff --git a/site/src/components/Alert/Alert.tsx b/site/src/components/Alert/Alert.tsx index 8484a57d1c29c..9e5c092b27a45 100644 --- a/site/src/components/Alert/Alert.tsx +++ b/site/src/components/Alert/Alert.tsx @@ -1,15 +1,15 @@ +// eslint-disable-next-line no-restricted-imports -- It is the base component +import MuiAlert, { + type AlertProps as MuiAlertProps, +} from "@mui/material/Alert"; +import Button from "@mui/material/Button"; +import Collapse from "@mui/material/Collapse"; import { useState, type FC, type ReactNode, type PropsWithChildren, } from "react"; -import Collapse from "@mui/material/Collapse"; -// eslint-disable-next-line no-restricted-imports -- It is the base component -import MuiAlert, { - type AlertProps as MuiAlertProps, -} from "@mui/material/Alert"; -import Button from "@mui/material/Button"; export type AlertProps = MuiAlertProps & { actions?: ReactNode; diff --git a/site/src/components/Alert/ErrorAlert.stories.tsx b/site/src/components/Alert/ErrorAlert.stories.tsx index 5ef6f4275979c..21e63959c6a88 100644 --- a/site/src/components/Alert/ErrorAlert.stories.tsx +++ b/site/src/components/Alert/ErrorAlert.stories.tsx @@ -1,6 +1,6 @@ import Button from "@mui/material/Button"; -import { mockApiError } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react"; +import { mockApiError } from "testHelpers/entities"; import { ErrorAlert } from "./ErrorAlert"; const mockError = mockApiError({ diff --git a/site/src/components/Alert/ErrorAlert.tsx b/site/src/components/Alert/ErrorAlert.tsx index 40b125fdf4596..bd7e2e0a3a238 100644 --- a/site/src/components/Alert/ErrorAlert.tsx +++ b/site/src/components/Alert/ErrorAlert.tsx @@ -1,7 +1,8 @@ -import { AlertProps, Alert, AlertDetail } from "./Alert"; import AlertTitle from "@mui/material/AlertTitle"; +import type { FC } from "react"; import { getErrorMessage, getErrorDetail } from "api/errors"; -import { FC } from "react"; +import type { AlertProps} from "./Alert"; +import { Alert, AlertDetail } from "./Alert"; export const ErrorAlert: FC< Omit & { error: unknown } diff --git a/site/src/components/Avatar/Avatar.stories.tsx b/site/src/components/Avatar/Avatar.stories.tsx index c6f93a5eda6f6..b01f1205be009 100644 --- a/site/src/components/Avatar/Avatar.stories.tsx +++ b/site/src/components/Avatar/Avatar.stories.tsx @@ -1,6 +1,6 @@ +import PauseIcon from "@mui/icons-material/PauseOutlined"; import type { Meta, StoryObj } from "@storybook/react"; import { Avatar, AvatarIcon } from "./Avatar"; -import PauseIcon from "@mui/icons-material/PauseOutlined"; const meta: Meta = { title: "components/Avatar", diff --git a/site/src/components/Avatar/Avatar.tsx b/site/src/components/Avatar/Avatar.tsx index 574636da72e55..5c4e46f6d863d 100644 --- a/site/src/components/Avatar/Avatar.tsx +++ b/site/src/components/Avatar/Avatar.tsx @@ -1,11 +1,11 @@ +import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; // This is the only place MuiAvatar can be used // eslint-disable-next-line no-restricted-imports -- Read above import MuiAvatar, { type AvatarProps as MuiAvatarProps, } from "@mui/material/Avatar"; -import { type FC, useId } from "react"; -import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; import { visuallyHidden } from "@mui/utils"; +import { type FC, useId } from "react"; import { getExternalImageStylesFromUrl } from "theme/externalImages"; export type AvatarProps = MuiAvatarProps & { diff --git a/site/src/components/AvatarCard/AvatarCard.tsx b/site/src/components/AvatarCard/AvatarCard.tsx index b55608657db68..fd5946fcc1bc2 100644 --- a/site/src/components/AvatarCard/AvatarCard.tsx +++ b/site/src/components/AvatarCard/AvatarCard.tsx @@ -1,6 +1,6 @@ +import { type CSSObject, useTheme } from "@emotion/react"; import { type FC, type ReactNode } from "react"; import { Avatar } from "components/Avatar/Avatar"; -import { type CSSObject, useTheme } from "@emotion/react"; type AvatarCardProps = { header: string; diff --git a/site/src/components/AvatarData/AvatarData.tsx b/site/src/components/AvatarData/AvatarData.tsx index af90ea5f4170a..0aa02f36297a8 100644 --- a/site/src/components/AvatarData/AvatarData.tsx +++ b/site/src/components/AvatarData/AvatarData.tsx @@ -1,5 +1,5 @@ -import type { FC, ReactNode } from "react"; import { useTheme } from "@emotion/react"; +import type { FC, ReactNode } from "react"; import { Avatar } from "components/Avatar/Avatar"; import { Stack } from "components/Stack/Stack"; diff --git a/site/src/components/AvatarData/AvatarDataSkeleton.tsx b/site/src/components/AvatarData/AvatarDataSkeleton.tsx index 275bbff15665d..69f4fc91af879 100644 --- a/site/src/components/AvatarData/AvatarDataSkeleton.tsx +++ b/site/src/components/AvatarData/AvatarDataSkeleton.tsx @@ -1,6 +1,6 @@ -import { FC } from "react"; -import { Stack } from "components/Stack/Stack"; import Skeleton from "@mui/material/Skeleton"; +import type { FC } from "react"; +import { Stack } from "components/Stack/Stack"; export const AvatarDataSkeleton: FC = () => { return ( diff --git a/site/src/components/Badges/Badges.tsx b/site/src/components/Badges/Badges.tsx index db2917c616c98..f2e14b39b9a25 100644 --- a/site/src/components/Badges/Badges.tsx +++ b/site/src/components/Badges/Badges.tsx @@ -1,11 +1,7 @@ -import { - type PropsWithChildren, - type FC, - forwardRef, - HTMLAttributes, -} from "react"; -import Tooltip from "@mui/material/Tooltip"; import { type Interpolation, type Theme } from "@emotion/react"; +import Tooltip from "@mui/material/Tooltip"; +import { forwardRef } from "react"; +import type { FC, HTMLAttributes, PropsWithChildren } from "react"; import { Stack } from "components/Stack/Stack"; const styles = { diff --git a/site/src/components/BuildAvatar/BuildAvatar.tsx b/site/src/components/BuildAvatar/BuildAvatar.tsx index 4d0cb7097e321..f82a22fde081a 100644 --- a/site/src/components/BuildAvatar/BuildAvatar.tsx +++ b/site/src/components/BuildAvatar/BuildAvatar.tsx @@ -1,12 +1,13 @@ -import Badge from "@mui/material/Badge"; import { css, cx } from "@emotion/css"; import { useTheme } from "@emotion/react"; +import Badge from "@mui/material/Badge"; import { type FC } from "react"; import type { WorkspaceBuild } from "api/typesGenerated"; -import { getDisplayWorkspaceBuildStatus } from "utils/workspace"; -import { useClassName } from "hooks/useClassName"; -import { Avatar, AvatarProps } from "components/Avatar/Avatar"; +import type { AvatarProps } from "components/Avatar/Avatar"; +import { Avatar } from "components/Avatar/Avatar"; import { BuildIcon } from "components/BuildIcon/BuildIcon"; +import { useClassName } from "hooks/useClassName"; +import { getDisplayWorkspaceBuildStatus } from "utils/workspace"; export interface BuildAvatarProps { build: WorkspaceBuild; diff --git a/site/src/components/BuildIcon/BuildIcon.tsx b/site/src/components/BuildIcon/BuildIcon.tsx index 41b87f66b6378..c5ce4d96f47ed 100644 --- a/site/src/components/BuildIcon/BuildIcon.tsx +++ b/site/src/components/BuildIcon/BuildIcon.tsx @@ -1,8 +1,8 @@ +import DeleteOutlined from "@mui/icons-material/DeleteOutlined"; import PlayArrowOutlined from "@mui/icons-material/PlayArrowOutlined"; import StopOutlined from "@mui/icons-material/StopOutlined"; -import DeleteOutlined from "@mui/icons-material/DeleteOutlined"; -import { WorkspaceTransition } from "api/typesGenerated"; -import { ComponentProps } from "react"; +import type { ComponentProps } from "react"; +import type { WorkspaceTransition } from "api/typesGenerated"; type SVGIcon = typeof PlayArrowOutlined; diff --git a/site/src/components/CodeExample/CodeExample.tsx b/site/src/components/CodeExample/CodeExample.tsx index 7d6f2c661eb26..a03e9dd24e801 100644 --- a/site/src/components/CodeExample/CodeExample.tsx +++ b/site/src/components/CodeExample/CodeExample.tsx @@ -1,8 +1,8 @@ -import { type FC, type KeyboardEvent, type MouseEvent, useRef } from "react"; import { type Interpolation, type Theme } from "@emotion/react"; +import { visuallyHidden } from "@mui/utils"; +import { type FC, type KeyboardEvent, type MouseEvent, useRef } from "react"; import { MONOSPACE_FONT_FAMILY } from "theme/constants"; import { CopyButton } from "../CopyButton/CopyButton"; -import { visuallyHidden } from "@mui/utils"; export interface CodeExampleProps { code: string; diff --git a/site/src/components/Conditionals/ChooseOne.stories.tsx b/site/src/components/Conditionals/ChooseOne.stories.tsx index 7330a9bc6a018..5dc40249a42a3 100644 --- a/site/src/components/Conditionals/ChooseOne.stories.tsx +++ b/site/src/components/Conditionals/ChooseOne.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; import { ChooseOne, Cond } from "./ChooseOne"; const meta: Meta = { diff --git a/site/src/components/CopyButton/CopyButton.tsx b/site/src/components/CopyButton/CopyButton.tsx index 8065fa1e646c8..37759e12a35fa 100644 --- a/site/src/components/CopyButton/CopyButton.tsx +++ b/site/src/components/CopyButton/CopyButton.tsx @@ -1,7 +1,7 @@ +import { css, type Interpolation, type Theme } from "@emotion/react"; +import Check from "@mui/icons-material/Check"; import IconButton from "@mui/material/Button"; import Tooltip from "@mui/material/Tooltip"; -import Check from "@mui/icons-material/Check"; -import { css, type Interpolation, type Theme } from "@emotion/react"; import { forwardRef, type ReactNode } from "react"; import { useClipboard } from "hooks/useClipboard"; import { FileCopyIcon } from "../Icons/FileCopyIcon"; diff --git a/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.test.tsx b/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.test.tsx index 2390ad3aee93d..8d586047a3e21 100644 --- a/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.test.tsx +++ b/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.test.tsx @@ -1,6 +1,6 @@ import { fireEvent, screen } from "@testing-library/react"; -import { ConfirmDialog } from "./ConfirmDialog"; import { renderComponent } from "testHelpers/renderHelpers"; +import { ConfirmDialog } from "./ConfirmDialog"; describe("ConfirmDialog", () => { it("onClose is called when cancelled", () => { diff --git a/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.tsx b/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.tsx index 08b00733ea516..6944917f0c1b9 100644 --- a/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.tsx +++ b/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.tsx @@ -1,5 +1,5 @@ -import DialogActions from "@mui/material/DialogActions"; import { type Interpolation, type Theme } from "@emotion/react"; +import DialogActions from "@mui/material/DialogActions"; import { type FC, type ReactNode } from "react"; import { Dialog, diff --git a/site/src/components/Dialogs/DeleteDialog/DeleteDialog.test.tsx b/site/src/components/Dialogs/DeleteDialog/DeleteDialog.test.tsx index 10f8f9d89e805..f7f6acd89add2 100644 --- a/site/src/components/Dialogs/DeleteDialog/DeleteDialog.test.tsx +++ b/site/src/components/Dialogs/DeleteDialog/DeleteDialog.test.tsx @@ -1,8 +1,8 @@ import { screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; +import { act } from "react-dom/test-utils"; import { renderComponent } from "testHelpers/renderHelpers"; import { DeleteDialog } from "./DeleteDialog"; -import { act } from "react-dom/test-utils"; const inputTestId = "delete-dialog-name-confirmation"; diff --git a/site/src/components/Dialogs/DeleteDialog/DeleteDialog.tsx b/site/src/components/Dialogs/DeleteDialog/DeleteDialog.tsx index 9d9ada835eea7..a459d32caf7ae 100644 --- a/site/src/components/Dialogs/DeleteDialog/DeleteDialog.tsx +++ b/site/src/components/Dialogs/DeleteDialog/DeleteDialog.tsx @@ -1,5 +1,5 @@ -import TextField from "@mui/material/TextField"; import { type Interpolation, type Theme } from "@emotion/react"; +import TextField from "@mui/material/TextField"; import { type FC, type FormEvent, useId, useState } from "react"; import { Stack } from "../../Stack/Stack"; import { ConfirmDialog } from "../ConfirmDialog/ConfirmDialog"; diff --git a/site/src/components/Dialogs/Dialog.tsx b/site/src/components/Dialogs/Dialog.tsx index f9c4c8f8a3083..b2033b1003301 100644 --- a/site/src/components/Dialogs/Dialog.tsx +++ b/site/src/components/Dialogs/Dialog.tsx @@ -1,8 +1,10 @@ -import MuiDialog, { DialogProps as MuiDialogProps } from "@mui/material/Dialog"; -import LoadingButton, { LoadingButtonProps } from "@mui/lab/LoadingButton"; import { type Interpolation, type Theme } from "@emotion/react"; +import type { LoadingButtonProps } from "@mui/lab/LoadingButton"; +import LoadingButton from "@mui/lab/LoadingButton"; +import type { DialogProps as MuiDialogProps } from "@mui/material/Dialog"; +import MuiDialog from "@mui/material/Dialog"; import { type FC, type ReactNode } from "react"; -import { ConfirmDialogType } from "./types"; +import type { ConfirmDialogType } from "./types"; export interface DialogActionButtonsProps { /** Text to display in the cancel button */ diff --git a/site/src/components/DropdownArrow/DropdownArrow.tsx b/site/src/components/DropdownArrow/DropdownArrow.tsx index a70b3bf725e05..34e78417ea70e 100644 --- a/site/src/components/DropdownArrow/DropdownArrow.tsx +++ b/site/src/components/DropdownArrow/DropdownArrow.tsx @@ -1,6 +1,6 @@ +import { type Interpolation, type Theme } from "@emotion/react"; import KeyboardArrowDown from "@mui/icons-material/KeyboardArrowDown"; import KeyboardArrowUp from "@mui/icons-material/KeyboardArrowUp"; -import { type Interpolation, type Theme } from "@emotion/react"; import { type FC } from "react"; interface ArrowProps { diff --git a/site/src/components/EmptyState/EmptyState.stories.tsx b/site/src/components/EmptyState/EmptyState.stories.tsx index 164cbc3cbf6cd..b8282b12e905b 100644 --- a/site/src/components/EmptyState/EmptyState.stories.tsx +++ b/site/src/components/EmptyState/EmptyState.stories.tsx @@ -1,6 +1,6 @@ import Button from "@mui/material/Button"; -import { EmptyState } from "./EmptyState"; import type { Meta, StoryObj } from "@storybook/react"; +import { EmptyState } from "./EmptyState"; const meta: Meta = { title: "components/EmptyState", diff --git a/site/src/components/ErrorBoundary/RuntimeErrorState.tsx b/site/src/components/ErrorBoundary/RuntimeErrorState.tsx index 50741b327d676..0e1aefe4e436c 100644 --- a/site/src/components/ErrorBoundary/RuntimeErrorState.tsx +++ b/site/src/components/ErrorBoundary/RuntimeErrorState.tsx @@ -1,15 +1,15 @@ +import { css, type Interpolation, type Theme } from "@emotion/react"; +import RefreshOutlined from "@mui/icons-material/RefreshOutlined"; import Button from "@mui/material/Button"; import Link from "@mui/material/Link"; -import RefreshOutlined from "@mui/icons-material/RefreshOutlined"; import { type FC, useEffect, useState } from "react"; import { Helmet } from "react-helmet-async"; -import { css, type Interpolation, type Theme } from "@emotion/react"; import type { BuildInfoResponse } from "api/typesGenerated"; import { CopyButton } from "components/CopyButton/CopyButton"; import { CoderIcon } from "components/Icons/CoderIcon"; import { FullScreenLoader } from "components/Loader/FullScreenLoader"; -import { Stack } from "components/Stack/Stack"; import { Margins } from "components/Margins/Margins"; +import { Stack } from "components/Stack/Stack"; const fetchDynamicallyImportedModuleError = "Failed to fetch dynamically imported module"; diff --git a/site/src/components/Expander/Expander.stories.tsx b/site/src/components/Expander/Expander.stories.tsx index 83f18dccab8f2..047435ef7c82c 100644 --- a/site/src/components/Expander/Expander.stories.tsx +++ b/site/src/components/Expander/Expander.stories.tsx @@ -1,5 +1,5 @@ -import { Expander } from "./Expander"; import type { Meta, StoryObj } from "@storybook/react"; +import { Expander } from "./Expander"; const meta: Meta = { title: "components/Expander", diff --git a/site/src/components/FileUpload/FileUpload.test.tsx b/site/src/components/FileUpload/FileUpload.test.tsx index 6042d546e909e..7e6d544cb557e 100644 --- a/site/src/components/FileUpload/FileUpload.test.tsx +++ b/site/src/components/FileUpload/FileUpload.test.tsx @@ -1,6 +1,6 @@ import { fireEvent, render, screen } from "@testing-library/react"; -import { FileUpload } from "./FileUpload"; import { ThemeProvider } from "contexts/ThemeProvider"; +import { FileUpload } from "./FileUpload"; test("accepts files with the correct extension", async () => { const onUpload = jest.fn(); diff --git a/site/src/components/FileUpload/FileUpload.tsx b/site/src/components/FileUpload/FileUpload.tsx index b24cada59cbda..c6feb07189efa 100644 --- a/site/src/components/FileUpload/FileUpload.tsx +++ b/site/src/components/FileUpload/FileUpload.tsx @@ -1,12 +1,12 @@ -import { Stack } from "components/Stack/Stack"; -import { type FC, type DragEvent, useRef, type ReactNode } from "react"; +import { css, type Interpolation, type Theme } from "@emotion/react"; import UploadIcon from "@mui/icons-material/CloudUploadOutlined"; -import { useClickable } from "hooks/useClickable"; -import CircularProgress from "@mui/material/CircularProgress"; -import IconButton from "@mui/material/IconButton"; import RemoveIcon from "@mui/icons-material/DeleteOutline"; import FileIcon from "@mui/icons-material/FolderOutlined"; -import { css, type Interpolation, type Theme } from "@emotion/react"; +import CircularProgress from "@mui/material/CircularProgress"; +import IconButton from "@mui/material/IconButton"; +import { type FC, type DragEvent, useRef, type ReactNode } from "react"; +import { Stack } from "components/Stack/Stack"; +import { useClickable } from "hooks/useClickable"; export interface FileUploadProps { isUploading: boolean; diff --git a/site/src/components/Filter/OptionItem.stories.tsx b/site/src/components/Filter/OptionItem.stories.tsx index 471a07912a3d8..d8b223d7b90ed 100644 --- a/site/src/components/Filter/OptionItem.stories.tsx +++ b/site/src/components/Filter/OptionItem.stories.tsx @@ -1,5 +1,5 @@ -import { OptionItem } from "./filter"; import type { Meta, StoryObj } from "@storybook/react"; +import { OptionItem } from "./filter"; const meta: Meta = { title: "components/Filter/OptionItem", diff --git a/site/src/components/Filter/UserFilter.tsx b/site/src/components/Filter/UserFilter.tsx index 879e2ed53c85d..7d01445b3c8b8 100644 --- a/site/src/components/Filter/UserFilter.tsx +++ b/site/src/components/Filter/UserFilter.tsx @@ -3,8 +3,9 @@ import { getUsers } from "api/api"; import { useMe } from "contexts/auth/useMe"; import { UserAvatar } from "../UserAvatar/UserAvatar"; import { FilterSearchMenu, OptionItem } from "./filter"; -import { UseFilterMenuOptions, useFilterMenu } from "./menu"; -import { BaseOption } from "./options"; +import type { UseFilterMenuOptions} from "./menu"; +import { useFilterMenu } from "./menu"; +import type { BaseOption } from "./options"; export type UserOption = BaseOption & { avatarUrl?: string; diff --git a/site/src/components/Filter/filter.tsx b/site/src/components/Filter/filter.tsx index 1a4b40c5292a5..44e2101a1635e 100644 --- a/site/src/components/Filter/filter.tsx +++ b/site/src/components/Filter/filter.tsx @@ -1,19 +1,19 @@ -import TextField from "@mui/material/TextField"; -import Button, { type ButtonProps } from "@mui/material/Button"; -import Menu, { type MenuProps } from "@mui/material/Menu"; -import MenuItem from "@mui/material/MenuItem"; -import InputAdornment from "@mui/material/InputAdornment"; -import IconButton from "@mui/material/IconButton"; -import Tooltip from "@mui/material/Tooltip"; -import Skeleton, { type SkeletonProps } from "@mui/material/Skeleton"; -import MenuList from "@mui/material/MenuList"; -import Divider from "@mui/material/Divider"; -import OpenInNewOutlined from "@mui/icons-material/OpenInNewOutlined"; +import { useTheme } from "@emotion/react"; import CheckOutlined from "@mui/icons-material/CheckOutlined"; import CloseOutlined from "@mui/icons-material/CloseOutlined"; import KeyboardArrowDown from "@mui/icons-material/KeyboardArrowDown"; +import OpenInNewOutlined from "@mui/icons-material/OpenInNewOutlined"; import SearchOutlined from "@mui/icons-material/SearchOutlined"; -import { useTheme } from "@emotion/react"; +import Button, { type ButtonProps } from "@mui/material/Button"; +import Divider from "@mui/material/Divider"; +import IconButton from "@mui/material/IconButton"; +import InputAdornment from "@mui/material/InputAdornment"; +import Menu, { type MenuProps } from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import MenuList from "@mui/material/MenuList"; +import Skeleton, { type SkeletonProps } from "@mui/material/Skeleton"; +import TextField from "@mui/material/TextField"; +import Tooltip from "@mui/material/Tooltip"; import { type FC, type ReactNode, @@ -22,22 +22,22 @@ import { useRef, useState, } from "react"; -import { useSearchParams } from "react-router-dom"; +import type { useSearchParams } from "react-router-dom"; import { getValidationErrorMessage, hasError, isApiValidationError, } from "api/errors"; import { Loader } from "components/Loader/Loader"; -import { useDebouncedFunction } from "hooks/debounce"; -import { useFilterMenu } from "./menu"; -import type { BaseOption } from "./options"; import { Search, SearchEmpty, SearchInput, searchStyles, } from "components/Menu/Search"; +import { useDebouncedFunction } from "hooks/debounce"; +import type { useFilterMenu } from "./menu"; +import type { BaseOption } from "./options"; export type PresetFilter = { name: string; diff --git a/site/src/components/Filter/menu.ts b/site/src/components/Filter/menu.ts index fe8c5632d3af9..21cfec33ad3cc 100644 --- a/site/src/components/Filter/menu.ts +++ b/site/src/components/Filter/menu.ts @@ -1,6 +1,6 @@ import { useMemo, useRef, useState } from "react"; -import { BaseOption } from "./options"; import { useQuery } from "react-query"; +import type { BaseOption } from "./options"; export type UseFilterMenuOptions = { id: string; diff --git a/site/src/components/Filter/storyHelpers.ts b/site/src/components/Filter/storyHelpers.ts index 6d06cfff99e4c..cc6b33b07fd8b 100644 --- a/site/src/components/Filter/storyHelpers.ts +++ b/site/src/components/Filter/storyHelpers.ts @@ -1,6 +1,6 @@ import { action } from "@storybook/addon-actions"; -import { UseFilterResult } from "./filter"; -import { UseFilterMenuResult } from "./menu"; +import type { UseFilterResult } from "./filter"; +import type { UseFilterMenuResult } from "./menu"; export const MockMenu: UseFilterMenuResult = { initialOption: undefined, diff --git a/site/src/components/Form/Form.tsx b/site/src/components/Form/Form.tsx index eb0b185497aa4..341e3bcf2242b 100644 --- a/site/src/components/Form/Form.tsx +++ b/site/src/components/Form/Form.tsx @@ -1,17 +1,19 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import { createContext, - type FC, - type HTMLProps, useContext, + forwardRef} from "react"; +import type { ReactNode, ComponentProps, - forwardRef, + type FC, + type HTMLProps } from "react"; import { AlphaBadge, DeprecatedBadge } from "components/Badges/Badges"; import { Stack } from "components/Stack/Stack"; import { - FormFooter as BaseFormFooter, + FormFooter as BaseFormFooter} from "../FormFooter/FormFooter"; +import type { FormFooterProps, type FormFooterStyles, } from "../FormFooter/FormFooter"; diff --git a/site/src/components/FormFooter/FormFooter.stories.tsx b/site/src/components/FormFooter/FormFooter.stories.tsx index a1c18f8c89a20..41d44250d04e1 100644 --- a/site/src/components/FormFooter/FormFooter.stories.tsx +++ b/site/src/components/FormFooter/FormFooter.stories.tsx @@ -1,5 +1,5 @@ -import { FormFooter } from "./FormFooter"; import type { Meta, StoryObj } from "@storybook/react"; +import { FormFooter } from "./FormFooter"; const meta: Meta = { title: "components/FormFooter", diff --git a/site/src/components/FormFooter/FormFooter.tsx b/site/src/components/FormFooter/FormFooter.tsx index 9d7496e083b6f..cdb9cbb057746 100644 --- a/site/src/components/FormFooter/FormFooter.tsx +++ b/site/src/components/FormFooter/FormFooter.tsx @@ -1,7 +1,7 @@ +import type { Interpolation, Theme } from "@emotion/react"; +import LoadingButton from "@mui/lab/LoadingButton"; import Button from "@mui/material/Button"; import { type FC } from "react"; -import { Interpolation, Theme } from "@emotion/react"; -import LoadingButton from "@mui/lab/LoadingButton"; export const Language = { cancelLabel: "Cancel", diff --git a/site/src/components/FullPageForm/FullPageForm.stories.tsx b/site/src/components/FullPageForm/FullPageForm.stories.tsx index 9933c61795b5b..e7fdb6aec4738 100644 --- a/site/src/components/FullPageForm/FullPageForm.stories.tsx +++ b/site/src/components/FullPageForm/FullPageForm.stories.tsx @@ -1,9 +1,10 @@ import TextField from "@mui/material/TextField"; import { action } from "@storybook/addon-actions"; +import type { Meta, StoryObj } from "@storybook/react"; import { FormFooter } from "../FormFooter/FormFooter"; import { Stack } from "../Stack/Stack"; -import { FullPageForm, FullPageFormProps } from "./FullPageForm"; -import type { Meta, StoryObj } from "@storybook/react"; +import type { FullPageFormProps } from "./FullPageForm"; +import { FullPageForm } from "./FullPageForm"; const Template = (props: FullPageFormProps) => ( diff --git a/site/src/components/FullPageForm/FullPageForm.tsx b/site/src/components/FullPageForm/FullPageForm.tsx index 0d4e8b1b5a49d..57e51c32a21a7 100644 --- a/site/src/components/FullPageForm/FullPageForm.tsx +++ b/site/src/components/FullPageForm/FullPageForm.tsx @@ -1,5 +1,5 @@ -import { Margins } from "components/Margins/Margins"; import { type FC, type ReactNode } from "react"; +import { Margins } from "components/Margins/Margins"; import { PageHeader, PageHeaderTitle, diff --git a/site/src/components/FullPageLayout/Topbar.tsx b/site/src/components/FullPageLayout/Topbar.tsx index 217cacdb4ae7c..a7ea750b9400c 100644 --- a/site/src/components/FullPageLayout/Topbar.tsx +++ b/site/src/components/FullPageLayout/Topbar.tsx @@ -1,8 +1,9 @@ import { css } from "@emotion/css"; -import Button, { ButtonProps } from "@mui/material/Button"; -import IconButton, { IconButtonProps } from "@mui/material/IconButton"; import { useTheme } from "@emotion/react"; -import { AvatarProps, ExternalAvatar } from "components/Avatar/Avatar"; +import type { ButtonProps } from "@mui/material/Button"; +import Button from "@mui/material/Button"; +import type { IconButtonProps } from "@mui/material/IconButton"; +import IconButton from "@mui/material/IconButton"; import { type FC, type ForwardedRef, @@ -11,6 +12,8 @@ import { cloneElement, forwardRef, } from "react"; +import type { AvatarProps} from "components/Avatar/Avatar"; +import { ExternalAvatar } from "components/Avatar/Avatar"; export const Topbar: FC> = (props) => { const theme = useTheme(); diff --git a/site/src/components/GlobalSnackbar/EnterpriseSnackbar.stories.tsx b/site/src/components/GlobalSnackbar/EnterpriseSnackbar.stories.tsx index ec5a5b5086b7a..751a5b60cdfd0 100644 --- a/site/src/components/GlobalSnackbar/EnterpriseSnackbar.stories.tsx +++ b/site/src/components/GlobalSnackbar/EnterpriseSnackbar.stories.tsx @@ -1,6 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { EnterpriseSnackbar } from "./EnterpriseSnackbar"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "components/EnterpriseSnackbar", diff --git a/site/src/components/GlobalSnackbar/EnterpriseSnackbar.tsx b/site/src/components/GlobalSnackbar/EnterpriseSnackbar.tsx index 7bec0aed353fd..bc39eca1d4f4f 100644 --- a/site/src/components/GlobalSnackbar/EnterpriseSnackbar.tsx +++ b/site/src/components/GlobalSnackbar/EnterpriseSnackbar.tsx @@ -1,10 +1,10 @@ +import { type Interpolation, type Theme } from "@emotion/react"; +import CloseIcon from "@mui/icons-material/Close"; import IconButton from "@mui/material/IconButton"; import Snackbar, { type SnackbarProps as MuiSnackbarProps, } from "@mui/material/Snackbar"; -import CloseIcon from "@mui/icons-material/Close"; import { type FC } from "react"; -import { type Interpolation, type Theme } from "@emotion/react"; import { type ClassName, useClassName } from "hooks/useClassName"; type EnterpriseSnackbarVariant = "error" | "info" | "success"; diff --git a/site/src/components/GlobalSnackbar/GlobalSnackbar.tsx b/site/src/components/GlobalSnackbar/GlobalSnackbar.tsx index 0d8be2120622c..ba259b1cdf15a 100644 --- a/site/src/components/GlobalSnackbar/GlobalSnackbar.tsx +++ b/site/src/components/GlobalSnackbar/GlobalSnackbar.tsx @@ -1,7 +1,8 @@ +import { type Interpolation, type Theme } from "@emotion/react"; import { type FC, useState } from "react"; import { useCustomEvent } from "hooks/events"; -import { EnterpriseSnackbar } from "./EnterpriseSnackbar"; import { ErrorIcon } from "../Icons/ErrorIcon"; +import { EnterpriseSnackbar } from "./EnterpriseSnackbar"; import { type AdditionalMessage, isNotificationList, @@ -11,7 +12,6 @@ import { type NotificationMsg, SnackbarEventType, } from "./utils"; -import { type Interpolation, type Theme } from "@emotion/react"; const variantFromMsgType = (type: MsgType) => { if (type === MsgType.Error) { diff --git a/site/src/components/GlobalSnackbar/utils.test.ts b/site/src/components/GlobalSnackbar/utils.test.ts index 5fae4407e93d8..ae135e0d46121 100644 --- a/site/src/components/GlobalSnackbar/utils.test.ts +++ b/site/src/components/GlobalSnackbar/utils.test.ts @@ -1,10 +1,11 @@ +import type { + NotificationMsg, + NotificationTextPrefixed} from "./utils"; import { displayError, displaySuccess, isNotificationTextPrefixed, MsgType, - NotificationMsg, - NotificationTextPrefixed, SnackbarEventType, } from "./utils"; diff --git a/site/src/components/GroupAvatar/GroupAvatar.stories.tsx b/site/src/components/GroupAvatar/GroupAvatar.stories.tsx index 9f0d1e2232471..6905c53b0576b 100644 --- a/site/src/components/GroupAvatar/GroupAvatar.stories.tsx +++ b/site/src/components/GroupAvatar/GroupAvatar.stories.tsx @@ -1,5 +1,5 @@ -import { GroupAvatar } from "./GroupAvatar"; import type { Meta, StoryObj } from "@storybook/react"; +import { GroupAvatar } from "./GroupAvatar"; const meta: Meta = { title: "components/GroupAvatar", diff --git a/site/src/components/GroupAvatar/GroupAvatar.tsx b/site/src/components/GroupAvatar/GroupAvatar.tsx index 7083799ca622c..4ef362517181a 100644 --- a/site/src/components/GroupAvatar/GroupAvatar.tsx +++ b/site/src/components/GroupAvatar/GroupAvatar.tsx @@ -1,8 +1,8 @@ -import Badge from "@mui/material/Badge"; import Group from "@mui/icons-material/Group"; +import Badge from "@mui/material/Badge"; import { type FC } from "react"; -import { type ClassName, useClassName } from "hooks/useClassName"; import { Avatar } from "components/Avatar/Avatar"; +import { type ClassName, useClassName } from "hooks/useClassName"; export interface GroupAvatarProps { name: string; diff --git a/site/src/components/HelpTooltip/HelpTooltip.stories.tsx b/site/src/components/HelpTooltip/HelpTooltip.stories.tsx index b009727750684..89a4b99fe54e6 100644 --- a/site/src/components/HelpTooltip/HelpTooltip.stories.tsx +++ b/site/src/components/HelpTooltip/HelpTooltip.stories.tsx @@ -1,3 +1,4 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { HelpTooltip, HelpTooltipLink, @@ -5,7 +6,6 @@ import { HelpTooltipText, HelpTooltipTitle, } from "./HelpTooltip"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "components/HelpTooltip", diff --git a/site/src/components/HelpTooltip/HelpTooltip.tsx b/site/src/components/HelpTooltip/HelpTooltip.tsx index 14fcd78ac3d2f..153d2792a3078 100644 --- a/site/src/components/HelpTooltip/HelpTooltip.tsx +++ b/site/src/components/HelpTooltip/HelpTooltip.tsx @@ -1,6 +1,8 @@ -import Link from "@mui/material/Link"; +import { type CSSObject } from "@emotion/css"; +import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; import HelpIcon from "@mui/icons-material/HelpOutline"; import OpenInNewIcon from "@mui/icons-material/OpenInNew"; +import Link from "@mui/material/Link"; import { type FC, type PropsWithChildren, @@ -8,9 +10,6 @@ import { type ReactNode, forwardRef, } from "react"; -import { Stack } from "components/Stack/Stack"; -import { type CSSObject } from "@emotion/css"; -import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; import { Popover, type PopoverProps, @@ -19,6 +18,7 @@ import { PopoverTrigger, usePopover, } from "components/Popover/Popover"; +import { Stack } from "components/Stack/Stack"; type Icon = typeof HelpIcon; diff --git a/site/src/components/IconField/EmojiPicker.tsx b/site/src/components/IconField/EmojiPicker.tsx index 3b39f7b3ac519..f8d2ae069509f 100644 --- a/site/src/components/IconField/EmojiPicker.tsx +++ b/site/src/components/IconField/EmojiPicker.tsx @@ -1,5 +1,5 @@ -import EmojiMart, { type EmojiMartProps } from "@emoji-mart/react"; import data from "@emoji-mart/data/sets/14/twitter.json"; +import EmojiMart, { type EmojiMartProps } from "@emoji-mart/react"; import { type FC } from "react"; import icons from "theme/icons.json"; diff --git a/site/src/components/IconField/IconField.tsx b/site/src/components/IconField/IconField.tsx index d96d65e823de7..b2bf348d4d532 100644 --- a/site/src/components/IconField/IconField.tsx +++ b/site/src/components/IconField/IconField.tsx @@ -4,15 +4,15 @@ import InputAdornment from "@mui/material/InputAdornment"; import TextField, { type TextFieldProps } from "@mui/material/TextField"; import { visuallyHidden } from "@mui/utils"; import { type FC, lazy, Suspense } from "react"; -import { Loader } from "components/Loader/Loader"; import { DropdownArrow } from "components/DropdownArrow/DropdownArrow"; -import { Stack } from "components/Stack/Stack"; +import { ExternalImage } from "components/ExternalImage/ExternalImage"; +import { Loader } from "components/Loader/Loader"; import { Popover, PopoverContent, PopoverTrigger, } from "components/Popover/Popover"; -import { ExternalImage } from "components/ExternalImage/ExternalImage"; +import { Stack } from "components/Stack/Stack"; // See: https://github.com/missive/emoji-mart/issues/51#issuecomment-287353222 const urlFromUnifiedCode = (unified: string) => diff --git a/site/src/components/Icons/CoderIcon.tsx b/site/src/components/Icons/CoderIcon.tsx index 65d4e1fc20079..c2a7e7ccda4bb 100644 --- a/site/src/components/Icons/CoderIcon.tsx +++ b/site/src/components/Icons/CoderIcon.tsx @@ -1,4 +1,5 @@ -import SvgIcon, { SvgIconProps } from "@mui/material/SvgIcon"; +import type { SvgIconProps } from "@mui/material/SvgIcon"; +import SvgIcon from "@mui/material/SvgIcon"; /** * CoderIcon represents the cloud with brackets Coder brand icon. It does not diff --git a/site/src/components/Icons/DockerIcon.tsx b/site/src/components/Icons/DockerIcon.tsx index 4118804ac8a0d..6f16074e2b1f9 100644 --- a/site/src/components/Icons/DockerIcon.tsx +++ b/site/src/components/Icons/DockerIcon.tsx @@ -1,4 +1,5 @@ -import SvgIcon, { SvgIconProps } from "@mui/material/SvgIcon"; +import type { SvgIconProps } from "@mui/material/SvgIcon"; +import SvgIcon from "@mui/material/SvgIcon"; export const DockerIcon = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/EditSquare.tsx b/site/src/components/Icons/EditSquare.tsx index 7caf89131d444..6caf9af675978 100644 --- a/site/src/components/Icons/EditSquare.tsx +++ b/site/src/components/Icons/EditSquare.tsx @@ -1,4 +1,5 @@ -import SvgIcon, { SvgIconProps } from "@mui/material/SvgIcon"; +import type { SvgIconProps } from "@mui/material/SvgIcon"; +import SvgIcon from "@mui/material/SvgIcon"; export const EditSquare = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/ErrorIcon.tsx b/site/src/components/Icons/ErrorIcon.tsx index 4d81f5ff3dc69..b71103c38d8fc 100644 --- a/site/src/components/Icons/ErrorIcon.tsx +++ b/site/src/components/Icons/ErrorIcon.tsx @@ -1,4 +1,5 @@ -import SvgIcon, { SvgIconProps } from "@mui/material/SvgIcon"; +import type { SvgIconProps } from "@mui/material/SvgIcon"; +import SvgIcon from "@mui/material/SvgIcon"; export const ErrorIcon = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/FileCopyIcon.tsx b/site/src/components/Icons/FileCopyIcon.tsx index 433498cebb617..84ecc86d71f24 100644 --- a/site/src/components/Icons/FileCopyIcon.tsx +++ b/site/src/components/Icons/FileCopyIcon.tsx @@ -1,4 +1,5 @@ -import SvgIcon, { SvgIconProps } from "@mui/material/SvgIcon"; +import type { SvgIconProps } from "@mui/material/SvgIcon"; +import SvgIcon from "@mui/material/SvgIcon"; export const FileCopyIcon = (props: SvgIconProps) => ( diff --git a/site/src/components/Icons/GitIcon.tsx b/site/src/components/Icons/GitIcon.tsx index 63122d3781417..478f483a8ad79 100644 --- a/site/src/components/Icons/GitIcon.tsx +++ b/site/src/components/Icons/GitIcon.tsx @@ -1,4 +1,5 @@ -import SvgIcon, { SvgIconProps } from "@mui/material/SvgIcon"; +import type { SvgIconProps } from "@mui/material/SvgIcon"; +import SvgIcon from "@mui/material/SvgIcon"; export const GitIcon = (props: SvgIconProps) => ( diff --git a/site/src/components/Icons/GitlabIcon.tsx b/site/src/components/Icons/GitlabIcon.tsx index ee7b105ac4e2e..17685d39507e8 100644 --- a/site/src/components/Icons/GitlabIcon.tsx +++ b/site/src/components/Icons/GitlabIcon.tsx @@ -1,4 +1,5 @@ -import SvgIcon, { SvgIconProps } from "@mui/material/SvgIcon"; +import type { SvgIconProps } from "@mui/material/SvgIcon"; +import SvgIcon from "@mui/material/SvgIcon"; export const GitlabIcon = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/JetBrainsIcon.tsx b/site/src/components/Icons/JetBrainsIcon.tsx index fb551a7e52f7a..64cdd5c818d6a 100644 --- a/site/src/components/Icons/JetBrainsIcon.tsx +++ b/site/src/components/Icons/JetBrainsIcon.tsx @@ -1,4 +1,5 @@ -import SvgIcon, { SvgIconProps } from "@mui/material/SvgIcon"; +import type { SvgIconProps } from "@mui/material/SvgIcon"; +import SvgIcon from "@mui/material/SvgIcon"; export const JetBrainsIcon = (props: SvgIconProps) => ( diff --git a/site/src/components/Icons/MarkdownIcon.tsx b/site/src/components/Icons/MarkdownIcon.tsx index 4db8c543b6661..f112ac5084cd4 100644 --- a/site/src/components/Icons/MarkdownIcon.tsx +++ b/site/src/components/Icons/MarkdownIcon.tsx @@ -1,4 +1,5 @@ -import SvgIcon, { SvgIconProps } from "@mui/material/SvgIcon"; +import type { SvgIconProps } from "@mui/material/SvgIcon"; +import SvgIcon from "@mui/material/SvgIcon"; export const MarkdownIcon = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/RocketIcon.tsx b/site/src/components/Icons/RocketIcon.tsx index 796a59fd940d9..15dc0fb391a96 100644 --- a/site/src/components/Icons/RocketIcon.tsx +++ b/site/src/components/Icons/RocketIcon.tsx @@ -1,4 +1,5 @@ -import SvgIcon, { SvgIconProps } from "@mui/material/SvgIcon"; +import type { SvgIconProps } from "@mui/material/SvgIcon"; +import SvgIcon from "@mui/material/SvgIcon"; export const RocketIcon = (props: SvgIconProps) => ( diff --git a/site/src/components/Icons/TerminalIcon.tsx b/site/src/components/Icons/TerminalIcon.tsx index b4915050c82df..616cf5c5bbdc0 100644 --- a/site/src/components/Icons/TerminalIcon.tsx +++ b/site/src/components/Icons/TerminalIcon.tsx @@ -1,4 +1,5 @@ -import SvgIcon, { SvgIconProps } from "@mui/material/SvgIcon"; +import type { SvgIconProps } from "@mui/material/SvgIcon"; +import SvgIcon from "@mui/material/SvgIcon"; export const TerminalIcon = (props: SvgIconProps) => ( diff --git a/site/src/components/Icons/TerraformIcon.tsx b/site/src/components/Icons/TerraformIcon.tsx index 4fe2c826537af..2c15b8e9879cf 100644 --- a/site/src/components/Icons/TerraformIcon.tsx +++ b/site/src/components/Icons/TerraformIcon.tsx @@ -1,4 +1,5 @@ -import SvgIcon, { SvgIconProps } from "@mui/material/SvgIcon"; +import type { SvgIconProps } from "@mui/material/SvgIcon"; +import SvgIcon from "@mui/material/SvgIcon"; export const TerraformIcon = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/VSCodeIcon.tsx b/site/src/components/Icons/VSCodeIcon.tsx index 7e210c5d01abb..d51916ea553bd 100644 --- a/site/src/components/Icons/VSCodeIcon.tsx +++ b/site/src/components/Icons/VSCodeIcon.tsx @@ -1,4 +1,5 @@ -import SvgIcon, { SvgIconProps } from "@mui/material/SvgIcon"; +import type { SvgIconProps } from "@mui/material/SvgIcon"; +import SvgIcon from "@mui/material/SvgIcon"; export const VSCodeIcon = (props: SvgIconProps) => ( diff --git a/site/src/components/Icons/VSCodeInsidersIcon.tsx b/site/src/components/Icons/VSCodeInsidersIcon.tsx index 969b69de031c2..18671a4437b5d 100644 --- a/site/src/components/Icons/VSCodeInsidersIcon.tsx +++ b/site/src/components/Icons/VSCodeInsidersIcon.tsx @@ -1,4 +1,5 @@ -import SvgIcon, { SvgIconProps } from "@mui/material/SvgIcon"; +import type { SvgIconProps } from "@mui/material/SvgIcon"; +import SvgIcon from "@mui/material/SvgIcon"; export const VSCodeInsidersIcon = (props: SvgIconProps) => ( diff --git a/site/src/components/InfoTooltip/InfoTooltip.tsx b/site/src/components/InfoTooltip/InfoTooltip.tsx index 552c2c274f29d..df2001dab58fb 100644 --- a/site/src/components/InfoTooltip/InfoTooltip.tsx +++ b/site/src/components/InfoTooltip/InfoTooltip.tsx @@ -1,3 +1,4 @@ +import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; import { type FC, type ReactNode } from "react"; import { HelpTooltip, @@ -7,7 +8,6 @@ import { HelpTooltipTitle, HelpTooltipTrigger, } from "components/HelpTooltip/HelpTooltip"; -import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; import type { ThemeRole } from "theme/roles"; interface InfoTooltipProps { diff --git a/site/src/components/Latency/Latency.tsx b/site/src/components/Latency/Latency.tsx index 738ef1a85bec7..90cab0acdb8f6 100644 --- a/site/src/components/Latency/Latency.tsx +++ b/site/src/components/Latency/Latency.tsx @@ -1,11 +1,11 @@ +import { useTheme } from "@emotion/react"; import HelpOutline from "@mui/icons-material/HelpOutline"; -import Tooltip from "@mui/material/Tooltip"; import CircularProgress from "@mui/material/CircularProgress"; +import Tooltip from "@mui/material/Tooltip"; import { visuallyHidden } from "@mui/utils"; -import { useTheme } from "@emotion/react"; import { type FC } from "react"; -import { getLatencyColor } from "utils/latency"; import { Abbr } from "components/Abbr/Abbr"; +import { getLatencyColor } from "utils/latency"; interface LatencyProps { latency?: number; diff --git a/site/src/components/Markdown/Markdown.tsx b/site/src/components/Markdown/Markdown.tsx index e52a307112470..f8a7178dd3f81 100644 --- a/site/src/components/Markdown/Markdown.tsx +++ b/site/src/components/Markdown/Markdown.tsx @@ -1,3 +1,4 @@ +import { type Interpolation, type Theme } from "@emotion/react"; import Link from "@mui/material/Link"; import Table from "@mui/material/Table"; import TableBody from "@mui/material/TableBody"; @@ -5,14 +6,13 @@ import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; -import { type Interpolation, type Theme } from "@emotion/react"; import isEqual from "lodash/isEqual"; import { type FC, memo } from "react"; import ReactMarkdown, { type Options } from "react-markdown"; import { Prism as SyntaxHighlighter } from "react-syntax-highlighter"; +import { dracula } from "react-syntax-highlighter/dist/cjs/styles/prism"; import gfm from "remark-gfm"; import colors from "theme/tailwindColors"; -import { dracula } from "react-syntax-highlighter/dist/cjs/styles/prism"; interface MarkdownProps { /** diff --git a/site/src/components/Menu/Search.tsx b/site/src/components/Menu/Search.tsx index bb5cede3b5db8..19c3ea97330d8 100644 --- a/site/src/components/Menu/Search.tsx +++ b/site/src/components/Menu/Search.tsx @@ -1,7 +1,7 @@ +import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import SearchOutlined from "@mui/icons-material/SearchOutlined"; // eslint-disable-next-line no-restricted-imports -- use it to have the component prop import Box, { type BoxProps } from "@mui/material/Box"; -import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import visuallyHidden from "@mui/utils/visuallyHidden"; import { type FC, diff --git a/site/src/components/MoreMenu/MoreMenu.tsx b/site/src/components/MoreMenu/MoreMenu.tsx index f1379e2bf3204..c99e5c54e86fe 100644 --- a/site/src/components/MoreMenu/MoreMenu.tsx +++ b/site/src/components/MoreMenu/MoreMenu.tsx @@ -1,18 +1,22 @@ +import MoreVertOutlined from "@mui/icons-material/MoreVertOutlined"; +import type { IconButtonProps } from "@mui/material/IconButton"; +import IconButton from "@mui/material/IconButton"; +import type { MenuProps } from "@mui/material/Menu"; +import Menu from "@mui/material/Menu"; +import type { MenuItemProps } from "@mui/material/MenuItem"; +import MenuItem from "@mui/material/MenuItem"; +import type { + ReactNode, + HTMLProps, + ReactElement} from "react"; import { useRef, useState, createContext, useContext, - ReactNode, cloneElement, - HTMLProps, - forwardRef, - ReactElement, + forwardRef } from "react"; -import MoreVertOutlined from "@mui/icons-material/MoreVertOutlined"; -import Menu, { MenuProps } from "@mui/material/Menu"; -import MenuItem, { MenuItemProps } from "@mui/material/MenuItem"; -import IconButton, { IconButtonProps } from "@mui/material/IconButton"; type MoreMenuContextValue = { triggerRef: React.RefObject; diff --git a/site/src/components/OverflowY/OverflowY.stories.tsx b/site/src/components/OverflowY/OverflowY.stories.tsx index f27e30d8c74d1..f8b8319bf7291 100644 --- a/site/src/components/OverflowY/OverflowY.stories.tsx +++ b/site/src/components/OverflowY/OverflowY.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; import { OverflowY } from "./OverflowY"; const numbers: number[] = []; diff --git a/site/src/components/PageHeader/PageHeader.stories.tsx b/site/src/components/PageHeader/PageHeader.stories.tsx index 9abbf2255e675..98ef72e3af93e 100644 --- a/site/src/components/PageHeader/PageHeader.stories.tsx +++ b/site/src/components/PageHeader/PageHeader.stories.tsx @@ -1,5 +1,5 @@ -import { PageHeader, PageHeaderSubtitle, PageHeaderTitle } from "./PageHeader"; import type { Meta, StoryObj } from "@storybook/react"; +import { PageHeader, PageHeaderSubtitle, PageHeaderTitle } from "./PageHeader"; const meta: Meta = { title: "components/PageHeader", diff --git a/site/src/components/PaginationWidget/PageButtons.tsx b/site/src/components/PaginationWidget/PageButtons.tsx index ec93b301f4cd1..47e4d31f6bb53 100644 --- a/site/src/components/PaginationWidget/PageButtons.tsx +++ b/site/src/components/PaginationWidget/PageButtons.tsx @@ -1,5 +1,5 @@ -import Button from "@mui/material/Button"; import { useTheme } from "@emotion/react"; +import Button from "@mui/material/Button"; import { type FC, type ReactNode } from "react"; type NumberedPageButtonProps = { diff --git a/site/src/components/PaginationWidget/PaginationContainer.stories.tsx b/site/src/components/PaginationWidget/PaginationContainer.stories.tsx index 28095eaa265f3..e77e2d8773ec2 100644 --- a/site/src/components/PaginationWidget/PaginationContainer.stories.tsx +++ b/site/src/components/PaginationWidget/PaginationContainer.stories.tsx @@ -1,3 +1,4 @@ +import type { Meta, StoryObj } from "@storybook/react"; import type { ComponentProps, FC, @@ -5,8 +6,6 @@ import type { PropsWithChildren, } from "react"; import { PaginationContainer } from "./PaginationContainer"; -import type { Meta, StoryObj } from "@storybook/react"; - import { mockPaginationResultBase, mockInitialRenderResult, diff --git a/site/src/components/PaginationWidget/PaginationContainer.tsx b/site/src/components/PaginationWidget/PaginationContainer.tsx index c0467ead6d587..8b8b15f689807 100644 --- a/site/src/components/PaginationWidget/PaginationContainer.tsx +++ b/site/src/components/PaginationWidget/PaginationContainer.tsx @@ -1,7 +1,7 @@ import { type FC, type HTMLAttributes } from "react"; import { type PaginationResultInfo } from "hooks/usePaginatedQuery"; -import { PaginationWidgetBase } from "./PaginationWidgetBase"; import { PaginationHeader } from "./PaginationHeader"; +import { PaginationWidgetBase } from "./PaginationWidgetBase"; export type PaginationResult = PaginationResultInfo & { isPreviousData: boolean; diff --git a/site/src/components/PaginationWidget/PaginationHeader.tsx b/site/src/components/PaginationWidget/PaginationHeader.tsx index cc6c4fafd9049..114fca3510841 100644 --- a/site/src/components/PaginationWidget/PaginationHeader.tsx +++ b/site/src/components/PaginationWidget/PaginationHeader.tsx @@ -1,6 +1,6 @@ -import { type FC } from "react"; import { useTheme } from "@emotion/react"; import Skeleton from "@mui/material/Skeleton"; +import { type FC } from "react"; type PaginationHeaderProps = { paginationUnitLabel: string; diff --git a/site/src/components/PaginationWidget/PaginationNavButton.tsx b/site/src/components/PaginationWidget/PaginationNavButton.tsx index 1bafe67f1fea8..4a59592f406d4 100644 --- a/site/src/components/PaginationWidget/PaginationNavButton.tsx +++ b/site/src/components/PaginationWidget/PaginationNavButton.tsx @@ -1,13 +1,12 @@ +import { useTheme } from "@emotion/react"; +import Button from "@mui/material/Button"; +import Tooltip from "@mui/material/Tooltip"; import { type ButtonHTMLAttributes, type ReactNode, useEffect, useState, } from "react"; -import { useTheme } from "@emotion/react"; - -import Button from "@mui/material/Button"; -import Tooltip from "@mui/material/Tooltip"; type PaginationNavButtonProps = Omit< ButtonHTMLAttributes, diff --git a/site/src/components/PaginationWidget/PaginationWidgetBase.stories.tsx b/site/src/components/PaginationWidget/PaginationWidgetBase.stories.tsx index 1ec16432ea1f1..eaf5b5a8e87fe 100644 --- a/site/src/components/PaginationWidget/PaginationWidgetBase.stories.tsx +++ b/site/src/components/PaginationWidget/PaginationWidgetBase.stories.tsx @@ -1,5 +1,5 @@ -import { PaginationWidgetBase } from "./PaginationWidgetBase"; import type { Meta, StoryObj } from "@storybook/react"; +import { PaginationWidgetBase } from "./PaginationWidgetBase"; const meta: Meta = { title: "components/PaginationWidgetBase", diff --git a/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx b/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx index 3cb5fa2ec6ea4..bf2da105a8b93 100644 --- a/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx +++ b/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx @@ -1,10 +1,11 @@ import { screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { renderWithAuth } from "testHelpers/renderHelpers"; +import type { + PaginationWidgetBaseProps} from "./PaginationWidgetBase"; import { - PaginationWidgetBase, - PaginationWidgetBaseProps, + PaginationWidgetBase } from "./PaginationWidgetBase"; -import { renderWithAuth } from "testHelpers/renderHelpers"; -import userEvent from "@testing-library/user-event"; type SampleProps = Omit; diff --git a/site/src/components/PaginationWidget/PaginationWidgetBase.tsx b/site/src/components/PaginationWidget/PaginationWidgetBase.tsx index 420b4a024add2..1dc2745c244e1 100644 --- a/site/src/components/PaginationWidget/PaginationWidgetBase.tsx +++ b/site/src/components/PaginationWidget/PaginationWidgetBase.tsx @@ -1,11 +1,11 @@ -import useMediaQuery from "@mui/material/useMediaQuery"; import { useTheme } from "@emotion/react"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import useMediaQuery from "@mui/material/useMediaQuery"; import { type FC } from "react"; import { PlaceholderPageButton, NumberedPageButton } from "./PageButtons"; -import { buildPagedList } from "./utils"; import { PaginationNavButton } from "./PaginationNavButton"; -import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; -import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import { buildPagedList } from "./utils"; export type PaginationWidgetBaseProps = { currentPage: number; diff --git a/site/src/components/Paywall/Paywall.tsx b/site/src/components/Paywall/Paywall.tsx index 7dc48d330972a..193b2a5466170 100644 --- a/site/src/components/Paywall/Paywall.tsx +++ b/site/src/components/Paywall/Paywall.tsx @@ -1,7 +1,7 @@ import { type Interpolation, type Theme } from "@emotion/react"; +import TaskAltIcon from "@mui/icons-material/TaskAlt"; import Button from "@mui/material/Button"; import Link from "@mui/material/Link"; -import TaskAltIcon from "@mui/icons-material/TaskAlt"; import { type FC, type ReactNode } from "react"; import { EnterpriseBadge } from "components/Badges/Badges"; import { Stack } from "components/Stack/Stack"; diff --git a/site/src/components/Pill/Pill.stories.tsx b/site/src/components/Pill/Pill.stories.tsx index 5ee6802538f98..bf2caf7ca47d2 100644 --- a/site/src/components/Pill/Pill.stories.tsx +++ b/site/src/components/Pill/Pill.stories.tsx @@ -1,6 +1,6 @@ -import { Pill, PillSpinner } from "./Pill"; -import type { Meta, StoryObj } from "@storybook/react"; import InfoOutlined from "@mui/icons-material/InfoOutlined"; +import type { Meta, StoryObj } from "@storybook/react"; +import { Pill, PillSpinner } from "./Pill"; const meta: Meta = { title: "components/Pill", diff --git a/site/src/components/Pill/Pill.tsx b/site/src/components/Pill/Pill.tsx index aaa01b5287e4e..467318185045b 100644 --- a/site/src/components/Pill/Pill.tsx +++ b/site/src/components/Pill/Pill.tsx @@ -1,7 +1,7 @@ +import { type Interpolation, type Theme } from "@emotion/react"; import CircularProgress, { type CircularProgressProps, } from "@mui/material/CircularProgress"; -import { type Interpolation, type Theme } from "@emotion/react"; import { type FC, forwardRef, diff --git a/site/src/components/Popover/Popover.tsx b/site/src/components/Popover/Popover.tsx index d3af0d98bb775..8ae6f592bf244 100644 --- a/site/src/components/Popover/Popover.tsx +++ b/site/src/components/Popover/Popover.tsx @@ -1,21 +1,23 @@ +// This is used as base for the main Popover component +// eslint-disable-next-line no-restricted-imports -- Read above +import MuiPopover, { + type PopoverProps as MuiPopoverProps, +} from "@mui/material/Popover"; import { - type FC, - type ReactElement, - type ReactNode, cloneElement, createContext, useContext, useEffect, useId, useRef, - useState, + useState +} from "react"; +import type { HTMLAttributes, + type FC, + type ReactElement, + type ReactNode } from "react"; -// This is used as base for the main Popover component -// eslint-disable-next-line no-restricted-imports -- Read above -import MuiPopover, { - type PopoverProps as MuiPopoverProps, -} from "@mui/material/Popover"; type TriggerMode = "hover" | "click"; diff --git a/site/src/components/RichParameterInput/RichParameterInput.tsx b/site/src/components/RichParameterInput/RichParameterInput.tsx index 751281e42813d..095df2591d13d 100644 --- a/site/src/components/RichParameterInput/RichParameterInput.tsx +++ b/site/src/components/RichParameterInput/RichParameterInput.tsx @@ -1,20 +1,21 @@ +import { type Interpolation, type Theme } from "@emotion/react"; +import ErrorOutline from "@mui/icons-material/ErrorOutline"; +import Button from "@mui/material/Button"; import FormControlLabel from "@mui/material/FormControlLabel"; +import FormHelperText from "@mui/material/FormHelperText"; import Radio from "@mui/material/Radio"; import RadioGroup from "@mui/material/RadioGroup"; -import TextField, { TextFieldProps } from "@mui/material/TextField"; +import type { TextFieldProps } from "@mui/material/TextField"; +import TextField from "@mui/material/TextField"; import Tooltip from "@mui/material/Tooltip"; -import Button from "@mui/material/Button"; -import FormHelperText from "@mui/material/FormHelperText"; -import { type Interpolation, type Theme } from "@emotion/react"; import { type FC, type ReactNode, useState } from "react"; -import { TemplateVersionParameter } from "api/typesGenerated"; +import type { TemplateVersionParameter } from "api/typesGenerated"; +import { ExternalImage } from "components/ExternalImage/ExternalImage"; import { MemoizedMarkdown } from "components/Markdown/Markdown"; +import { Pill } from "components/Pill/Pill"; import { Stack } from "components/Stack/Stack"; +import type { AutofillBuildParameter, AutofillSource } from "utils/richParameters"; import { MultiTextField } from "./MultiTextField"; -import { ExternalImage } from "components/ExternalImage/ExternalImage"; -import { AutofillBuildParameter, AutofillSource } from "utils/richParameters"; -import { Pill } from "components/Pill/Pill"; -import ErrorOutline from "@mui/icons-material/ErrorOutline"; const isBoolean = (parameter: TemplateVersionParameter) => { return parameter.type === "bool"; diff --git a/site/src/components/Sidebar/Sidebar.stories.tsx b/site/src/components/Sidebar/Sidebar.stories.tsx index f642eeb287c02..0bbe9b1b0ac24 100644 --- a/site/src/components/Sidebar/Sidebar.stories.tsx +++ b/site/src/components/Sidebar/Sidebar.stories.tsx @@ -1,11 +1,11 @@ -import { Sidebar, SidebarHeader, SidebarNavItem } from "./Sidebar"; -import type { Meta, StoryObj } from "@storybook/react"; -import { UserAvatar } from "components/UserAvatar/UserAvatar"; -import VpnKeyOutlined from "@mui/icons-material/VpnKeyOutlined"; -import FingerprintOutlinedIcon from "@mui/icons-material/FingerprintOutlined"; -import AccountIcon from "@mui/icons-material/Person"; import ScheduleIcon from "@mui/icons-material/EditCalendarOutlined"; +import FingerprintOutlinedIcon from "@mui/icons-material/FingerprintOutlined"; import SecurityIcon from "@mui/icons-material/LockOutlined"; +import AccountIcon from "@mui/icons-material/Person"; +import VpnKeyOutlined from "@mui/icons-material/VpnKeyOutlined"; +import type { Meta, StoryObj } from "@storybook/react"; +import { UserAvatar } from "components/UserAvatar/UserAvatar"; +import { Sidebar, SidebarHeader, SidebarNavItem } from "./Sidebar"; const meta: Meta = { title: "components/Sidebar", diff --git a/site/src/components/Stack/Stack.tsx b/site/src/components/Stack/Stack.tsx index 73f725e2676c5..86477ab7b17e0 100644 --- a/site/src/components/Stack/Stack.tsx +++ b/site/src/components/Stack/Stack.tsx @@ -1,5 +1,5 @@ -import { forwardRef } from "react"; import type { CSSObject } from "@emotion/react"; +import { forwardRef } from "react"; export type StackProps = { className?: string; diff --git a/site/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx b/site/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx index f52f2523e4e59..63192398911d0 100644 --- a/site/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx +++ b/site/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx @@ -1,8 +1,8 @@ -import { type ComponentProps, type FC } from "react"; +import { useTheme } from "@emotion/react"; import Editor, { DiffEditor, loader } from "@monaco-editor/react"; import * as monaco from "monaco-editor"; +import { type ComponentProps, type FC } from "react"; import { useCoderTheme } from "./coderTheme"; -import { useTheme } from "@emotion/react"; loader.config({ monaco }); diff --git a/site/src/components/SyntaxHighlighter/coderTheme.ts b/site/src/components/SyntaxHighlighter/coderTheme.ts index d543a04111a1d..8d611fdcc969b 100644 --- a/site/src/components/SyntaxHighlighter/coderTheme.ts +++ b/site/src/components/SyntaxHighlighter/coderTheme.ts @@ -1,5 +1,5 @@ -import { useMonaco } from "@monaco-editor/react"; import { useTheme } from "@emotion/react"; +import { useMonaco } from "@monaco-editor/react"; import { useEffect, useState } from "react"; export const useCoderTheme = (): { isLoading: boolean; name: string } => { diff --git a/site/src/components/TableEmpty/TableEmpty.stories.tsx b/site/src/components/TableEmpty/TableEmpty.stories.tsx index b9ddec5e883f4..614b61804c94d 100644 --- a/site/src/components/TableEmpty/TableEmpty.stories.tsx +++ b/site/src/components/TableEmpty/TableEmpty.stories.tsx @@ -1,7 +1,7 @@ -import type { Meta, StoryObj } from "@storybook/react"; import Table from "@mui/material/Table"; import TableBody from "@mui/material/TableBody"; import TableContainer from "@mui/material/TableContainer"; +import type { Meta, StoryObj } from "@storybook/react"; import { CodeExample } from "components/CodeExample/CodeExample"; import { TableEmpty } from "./TableEmpty"; diff --git a/site/src/components/TableLoader/TableLoader.stories.tsx b/site/src/components/TableLoader/TableLoader.stories.tsx index 29d14f1eb069f..9662f7468d57b 100644 --- a/site/src/components/TableLoader/TableLoader.stories.tsx +++ b/site/src/components/TableLoader/TableLoader.stories.tsx @@ -1,7 +1,7 @@ -import type { Meta, StoryObj } from "@storybook/react"; import Table from "@mui/material/Table"; import TableBody from "@mui/material/TableBody"; import TableContainer from "@mui/material/TableContainer"; +import type { Meta, StoryObj } from "@storybook/react"; import { TableLoader } from "./TableLoader"; const meta: Meta = { diff --git a/site/src/components/Tabs/Tabs.stories.tsx b/site/src/components/Tabs/Tabs.stories.tsx index 94466403ddb93..a36190c476f32 100644 --- a/site/src/components/Tabs/Tabs.stories.tsx +++ b/site/src/components/Tabs/Tabs.stories.tsx @@ -1,5 +1,5 @@ -import { Tabs, TabLink, TabsList } from "./Tabs"; import type { Meta, StoryObj } from "@storybook/react"; +import { Tabs, TabLink, TabsList } from "./Tabs"; const meta: Meta = { title: "components/Tabs", diff --git a/site/src/components/Tabs/Tabs.tsx b/site/src/components/Tabs/Tabs.tsx index 31e2f722b8b9c..7c921f27b1324 100644 --- a/site/src/components/Tabs/Tabs.tsx +++ b/site/src/components/Tabs/Tabs.tsx @@ -1,6 +1,9 @@ -import { HTMLAttributes, type FC, createContext, useContext } from "react"; -import { Link, LinkProps } from "react-router-dom"; -import { Interpolation, Theme, useTheme } from "@emotion/react"; +import type { Interpolation, Theme} from "@emotion/react"; +import { useTheme } from "@emotion/react"; +import { createContext, useContext } from "react"; +import type { HTMLAttributes, type FC } from "react"; +import type { LinkProps } from "react-router-dom"; +import { Link } from "react-router-dom"; export const TAB_PADDING_Y = 12; export const TAB_PADDING_X = 16; diff --git a/site/src/components/Timeline/Timeline.tsx b/site/src/components/Timeline/Timeline.tsx index ad7041d5e98fa..665f3a7c92354 100644 --- a/site/src/components/Timeline/Timeline.tsx +++ b/site/src/components/Timeline/Timeline.tsx @@ -1,5 +1,5 @@ -import { TimelineDateRow } from "components/Timeline/TimelineDateRow"; import { Fragment } from "react"; +import { TimelineDateRow } from "components/Timeline/TimelineDateRow"; type GetDateFn = (data: TData) => Date; diff --git a/site/src/components/Timeline/TimelineDateRow.tsx b/site/src/components/Timeline/TimelineDateRow.tsx index 331ba7e056534..d6995d5eaf855 100644 --- a/site/src/components/Timeline/TimelineDateRow.tsx +++ b/site/src/components/Timeline/TimelineDateRow.tsx @@ -1,7 +1,7 @@ +import { css, useTheme } from "@emotion/react"; import TableCell from "@mui/material/TableCell"; import TableRow from "@mui/material/TableRow"; import { type FC } from "react"; -import { css, useTheme } from "@emotion/react"; import { createDisplayDate } from "./utils"; export interface TimelineDateRow { diff --git a/site/src/components/UserAutocomplete/UserAutocomplete.stories.tsx b/site/src/components/UserAutocomplete/UserAutocomplete.stories.tsx index 9558c14b2d20a..d173fdca49392 100644 --- a/site/src/components/UserAutocomplete/UserAutocomplete.stories.tsx +++ b/site/src/components/UserAutocomplete/UserAutocomplete.stories.tsx @@ -1,6 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockUser } from "testHelpers/entities"; import { UserAutocomplete } from "./UserAutocomplete"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "components/UserAutocomplete", diff --git a/site/src/components/UserAutocomplete/UserAutocomplete.tsx b/site/src/components/UserAutocomplete/UserAutocomplete.tsx index d5edac6650fce..c907f2757e41b 100644 --- a/site/src/components/UserAutocomplete/UserAutocomplete.tsx +++ b/site/src/components/UserAutocomplete/UserAutocomplete.tsx @@ -1,19 +1,19 @@ import { css } from "@emotion/css"; +import Autocomplete from "@mui/material/Autocomplete"; import CircularProgress from "@mui/material/CircularProgress"; import TextField from "@mui/material/TextField"; -import Autocomplete from "@mui/material/Autocomplete"; -import type { User } from "api/typesGenerated"; -import { Avatar } from "components/Avatar/Avatar"; -import { AvatarData } from "components/AvatarData/AvatarData"; import { type ChangeEvent, type ComponentProps, type FC, useState, } from "react"; -import { useDebouncedFunction } from "hooks/debounce"; import { useQuery } from "react-query"; import { users } from "api/queries/users"; +import type { User } from "api/typesGenerated"; +import { Avatar } from "components/Avatar/Avatar"; +import { AvatarData } from "components/AvatarData/AvatarData"; +import { useDebouncedFunction } from "hooks/debounce"; import { prepareQuery } from "utils/filters"; export type UserAutocompleteProps = { diff --git a/site/src/components/UserAvatar/UserAvatar.tsx b/site/src/components/UserAvatar/UserAvatar.tsx index a2d38efccae57..92bea34519021 100644 --- a/site/src/components/UserAvatar/UserAvatar.tsx +++ b/site/src/components/UserAvatar/UserAvatar.tsx @@ -1,5 +1,5 @@ -import { Avatar, type AvatarProps } from "components/Avatar/Avatar"; import { type FC } from "react"; +import { Avatar, type AvatarProps } from "components/Avatar/Avatar"; export type UserAvatarProps = { username: string; diff --git a/site/src/contexts/ProxyContext.test.tsx b/site/src/contexts/ProxyContext.test.tsx index 5b66c89b3fe61..93c0d64dbbe7f 100644 --- a/site/src/contexts/ProxyContext.test.tsx +++ b/site/src/contexts/ProxyContext.test.tsx @@ -1,26 +1,26 @@ +import { screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { rest } from "msw"; +import type { Region } from "api/typesGenerated"; import { MockPrimaryWorkspaceProxy, MockWorkspaceProxies, MockHealthyWildWorkspaceProxy, MockUnhealthyWildWorkspaceProxy, } from "testHelpers/entities"; +import "testHelpers/localStorage"; +import { + renderWithAuth, + waitForLoaderToBeRemoved, +} from "testHelpers/renderHelpers"; +import { server } from "testHelpers/server"; import { getPreferredProxy, ProxyProvider, saveUserSelectedProxy, useProxy, } from "./ProxyContext"; -import * as ProxyLatency from "./useProxyLatency"; -import { - renderWithAuth, - waitForLoaderToBeRemoved, -} from "testHelpers/renderHelpers"; -import { screen } from "@testing-library/react"; -import { server } from "testHelpers/server"; -import { rest } from "msw"; -import { Region } from "api/typesGenerated"; -import "testHelpers/localStorage"; -import userEvent from "@testing-library/user-event"; +import type * as ProxyLatency from "./useProxyLatency"; // Mock useProxyLatency to use a hard-coded latency. 'jest.mock' must be called // here and not inside a unit test. diff --git a/site/src/contexts/ProxyContext.tsx b/site/src/contexts/ProxyContext.tsx index 12a6ef91713a0..092002ee883f4 100644 --- a/site/src/contexts/ProxyContext.tsx +++ b/site/src/contexts/ProxyContext.tsx @@ -11,7 +11,8 @@ import { useQuery } from "react-query"; import { getWorkspaceProxies, getWorkspaceProxyRegions } from "api/api"; import type { Region, WorkspaceProxy } from "api/typesGenerated"; import { usePermissions } from "contexts/auth/usePermissions"; -import { ProxyLatencyReport, useProxyLatency } from "./useProxyLatency"; +import type { ProxyLatencyReport} from "./useProxyLatency"; +import { useProxyLatency } from "./useProxyLatency"; export interface ProxyContextValue { // proxy is **always** the workspace proxy that should be used. diff --git a/site/src/contexts/auth/AuthProvider.tsx b/site/src/contexts/auth/AuthProvider.tsx index 573c5c20a2565..10415e7f1d40b 100644 --- a/site/src/contexts/auth/AuthProvider.tsx +++ b/site/src/contexts/auth/AuthProvider.tsx @@ -5,6 +5,7 @@ import { useCallback, } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; +import { isApiError } from "api/errors"; import { checkAuthorization } from "api/queries/authCheck"; import { authMethods, @@ -14,7 +15,6 @@ import { me, updateProfile as updateProfileOptions, } from "api/queries/users"; -import { isApiError } from "api/errors"; import type { AuthMethods, UpdateUserProfileRequest, diff --git a/site/src/contexts/auth/RequireAuth.tsx b/site/src/contexts/auth/RequireAuth.tsx index 55b78c2a8cfe7..fa9b79068bf07 100644 --- a/site/src/contexts/auth/RequireAuth.tsx +++ b/site/src/contexts/auth/RequireAuth.tsx @@ -1,11 +1,11 @@ import axios from "axios"; import { type FC, useEffect } from "react"; import { Outlet, Navigate, useLocation } from "react-router-dom"; -import { embedRedirect } from "utils/redirect"; import { isApiError } from "api/errors"; +import { FullScreenLoader } from "components/Loader/FullScreenLoader"; import { ProxyProvider } from "contexts/ProxyContext"; import { DashboardProvider } from "modules/dashboard/DashboardProvider"; -import { FullScreenLoader } from "components/Loader/FullScreenLoader"; +import { embedRedirect } from "utils/redirect"; import { useAuth } from "./useAuth"; export const RequireAuth: FC = () => { diff --git a/site/src/contexts/auth/usePermissions.ts b/site/src/contexts/auth/usePermissions.ts index 8638b19d02822..6d27e2a8849b4 100644 --- a/site/src/contexts/auth/usePermissions.ts +++ b/site/src/contexts/auth/usePermissions.ts @@ -1,5 +1,5 @@ -import { useAuth } from "./useAuth"; import type { Permissions } from "./permissions"; +import { useAuth } from "./useAuth"; export const usePermissions = (): Permissions => { const { permissions } = useAuth(); diff --git a/site/src/contexts/useProxyLatency.ts b/site/src/contexts/useProxyLatency.ts index dbf689f368c32..d50f7ead1da74 100644 --- a/site/src/contexts/useProxyLatency.ts +++ b/site/src/contexts/useProxyLatency.ts @@ -1,7 +1,7 @@ -import { Region } from "api/typesGenerated"; -import { useEffect, useReducer, useState } from "react"; import PerformanceObserver from "@fastly/performance-observer-polyfill"; import axios from "axios"; +import { useEffect, useReducer, useState } from "react"; +import type { Region } from "api/typesGenerated"; import { generateRandomString } from "utils/random"; const proxyIntervalSeconds = 30; // seconds diff --git a/site/src/hooks/events.ts b/site/src/hooks/events.ts index 68e6f0c59f153..1b660d85feb1f 100644 --- a/site/src/hooks/events.ts +++ b/site/src/hooks/events.ts @@ -1,6 +1,6 @@ import { useEffect } from "react"; -import { useEffectEvent } from "./hookPolyfills"; import { type CustomEventListener } from "utils/events"; +import { useEffectEvent } from "./hookPolyfills"; /** * Handles a custom event with descriptive type information. diff --git a/site/src/hooks/useClassName.ts b/site/src/hooks/useClassName.ts index 595308dead9ca..0e8f3bee1d9d1 100644 --- a/site/src/hooks/useClassName.ts +++ b/site/src/hooks/useClassName.ts @@ -1,8 +1,8 @@ /* eslint-disable react-hooks/exhaustive-deps -- false positives */ import { css } from "@emotion/css"; -import { type DependencyList, useMemo } from "react"; import { type Theme, useTheme } from "@emotion/react"; +import { type DependencyList, useMemo } from "react"; export type ClassName = (cssFn: typeof css, theme: Theme) => string; diff --git a/site/src/hooks/useClickable.test.tsx b/site/src/hooks/useClickable.test.tsx index cab5e8833abfc..2b976e02f1620 100644 --- a/site/src/hooks/useClickable.test.tsx +++ b/site/src/hooks/useClickable.test.tsx @@ -1,13 +1,13 @@ + +import { render, screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; import { type ElementType, type FC, type MouseEventHandler, type PropsWithChildren, } from "react"; - import { type ClickableAriaRole, useClickable } from "./useClickable"; -import { render, screen } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; /** * Since the point of the hook is to take a traditionally non-interactive HTML diff --git a/site/src/hooks/useClickableTableRow.ts b/site/src/hooks/useClickableTableRow.ts index 106dd43ebd603..686e23fe328ba 100644 --- a/site/src/hooks/useClickableTableRow.ts +++ b/site/src/hooks/useClickableTableRow.ts @@ -13,15 +13,14 @@ * It might not make sense to test this hook until the underlying design * problems are fixed. */ -import { type MouseEventHandler } from "react"; import { type CSSObject, useTheme } from "@emotion/react"; - +import { type TableRowProps } from "@mui/material/TableRow"; +import { type MouseEventHandler } from "react"; import { type ClickableAriaRole, type UseClickableResult, useClickable, } from "./useClickable"; -import { type TableRowProps } from "@mui/material/TableRow"; type UseClickableTableRowResult< TRole extends ClickableAriaRole = ClickableAriaRole, diff --git a/site/src/hooks/useClipboard.test-setup.tsx b/site/src/hooks/useClipboard.test-setup.tsx index 32837598b18af..7de7ea7143281 100644 --- a/site/src/hooks/useClipboard.test-setup.tsx +++ b/site/src/hooks/useClipboard.test-setup.tsx @@ -41,13 +41,13 @@ * order of operations involving closure, but you have no idea why the code * is working, and it's impossible to debug. */ +import { act, renderHook } from "@testing-library/react"; +import { GlobalSnackbar } from "components/GlobalSnackbar/GlobalSnackbar"; import { type UseClipboardInput, type UseClipboardResult, useClipboard, } from "./useClipboard"; -import { act, renderHook } from "@testing-library/react"; -import { GlobalSnackbar } from "components/GlobalSnackbar/GlobalSnackbar"; const initialExecCommand = global.document.execCommand; beforeAll(() => { diff --git a/site/src/hooks/usePaginatedQuery.test.ts b/site/src/hooks/usePaginatedQuery.test.ts index 8257f8ca69c42..9bb8c69603f7e 100644 --- a/site/src/hooks/usePaginatedQuery.test.ts +++ b/site/src/hooks/usePaginatedQuery.test.ts @@ -1,6 +1,5 @@ -import { renderHookWithAuth } from "testHelpers/renderHelpers"; import { waitFor } from "@testing-library/react"; - +import { renderHookWithAuth } from "testHelpers/renderHelpers"; import { type PaginatedData, type UsePaginatedQueryOptions, diff --git a/site/src/hooks/usePaginatedQuery.ts b/site/src/hooks/usePaginatedQuery.ts index bc1844e2e34f0..4a06ac00a037d 100644 --- a/site/src/hooks/usePaginatedQuery.ts +++ b/site/src/hooks/usePaginatedQuery.ts @@ -1,8 +1,5 @@ -import { useEffect } from "react"; -import { useEffectEvent } from "./hookPolyfills"; -import { type SetURLSearchParams, useSearchParams } from "react-router-dom"; import clamp from "lodash/clamp"; - +import { useEffect } from "react"; import { type QueryFunctionContext, type QueryKey, @@ -11,6 +8,8 @@ import { useQueryClient, useQuery, } from "react-query"; +import { type SetURLSearchParams, useSearchParams } from "react-router-dom"; +import { useEffectEvent } from "./hookPolyfills"; const DEFAULT_RECORDS_PER_PAGE = 25; diff --git a/site/src/hooks/usePagination.ts b/site/src/hooks/usePagination.ts index 2feee1ac1f033..c813706a6b226 100644 --- a/site/src/hooks/usePagination.ts +++ b/site/src/hooks/usePagination.ts @@ -1,5 +1,5 @@ +import type { useSearchParams } from "react-router-dom"; import { DEFAULT_RECORDS_PER_PAGE } from "components/PaginationWidget/utils"; -import { useSearchParams } from "react-router-dom"; export const usePagination = ({ searchParamsResult, diff --git a/site/src/hooks/useWorkspaceBuildLogs.ts b/site/src/hooks/useWorkspaceBuildLogs.ts index 21d95d7cbfca2..84557780f1ba0 100644 --- a/site/src/hooks/useWorkspaceBuildLogs.ts +++ b/site/src/hooks/useWorkspaceBuildLogs.ts @@ -1,7 +1,7 @@ +import { useState, useEffect, useRef } from "react"; import { watchBuildLogsByBuildId } from "api/api"; -import { ProvisionerJobLog } from "api/typesGenerated"; +import type { ProvisionerJobLog } from "api/typesGenerated"; import { displayError } from "components/GlobalSnackbar/utils"; -import { useState, useEffect, useRef } from "react"; export const useWorkspaceBuildLogs = ( // buildId is optional because sometimes the build is not loaded yet diff --git a/site/src/modules/dashboard/DashboardLayout.test.tsx b/site/src/modules/dashboard/DashboardLayout.test.tsx index b580225491207..257e26743eeaf 100644 --- a/site/src/modules/dashboard/DashboardLayout.test.tsx +++ b/site/src/modules/dashboard/DashboardLayout.test.tsx @@ -1,8 +1,8 @@ -import { renderWithAuth } from "testHelpers/renderHelpers"; -import { DashboardLayout } from "./DashboardLayout"; import { screen } from "@testing-library/react"; import { rest } from "msw"; +import { renderWithAuth } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import { DashboardLayout } from "./DashboardLayout"; test("Show the new Coder version notification", async () => { server.use( diff --git a/site/src/modules/dashboard/DashboardLayout.tsx b/site/src/modules/dashboard/DashboardLayout.tsx index 6bf30a22a3e1e..4e105dce59991 100644 --- a/site/src/modules/dashboard/DashboardLayout.tsx +++ b/site/src/modules/dashboard/DashboardLayout.tsx @@ -1,17 +1,17 @@ -import Snackbar from "@mui/material/Snackbar"; -import Link from "@mui/material/Link"; -import Button from "@mui/material/Button"; import InfoOutlined from "@mui/icons-material/InfoOutlined"; +import Button from "@mui/material/Button"; +import Link from "@mui/material/Link"; +import Snackbar from "@mui/material/Snackbar"; import { type FC, type HTMLAttributes, Suspense } from "react"; import { Outlet } from "react-router-dom"; +import { Loader } from "components/Loader/Loader"; +import { usePermissions } from "contexts/auth/usePermissions"; import { LicenseBanner } from "modules/dashboard/LicenseBanner/LicenseBanner"; import { ServiceBanner } from "modules/dashboard/ServiceBanner/ServiceBanner"; -import { usePermissions } from "contexts/auth/usePermissions"; -import { Loader } from "components/Loader/Loader"; import { dashboardContentBottomPadding } from "theme/constants"; import { docs } from "utils/docs"; -import { Navbar } from "./Navbar/Navbar"; import { DeploymentBanner } from "./DeploymentBanner/DeploymentBanner"; +import { Navbar } from "./Navbar/Navbar"; import { useUpdateCheck } from "./useUpdateCheck"; export const DashboardLayout: FC = () => { diff --git a/site/src/modules/dashboard/DashboardProvider.tsx b/site/src/modules/dashboard/DashboardProvider.tsx index fcd84f8d2d152..536f34e5781f2 100644 --- a/site/src/modules/dashboard/DashboardProvider.tsx +++ b/site/src/modules/dashboard/DashboardProvider.tsx @@ -1,24 +1,24 @@ +import { + type FC, + type PropsWithChildren, + createContext, + useCallback, + useState, +} from "react"; import { useQuery } from "react-query"; +import { appearance } from "api/queries/appearance"; import { buildInfo } from "api/queries/buildInfo"; -import { experiments } from "api/queries/experiments"; import { entitlements } from "api/queries/entitlements"; -import { +import { experiments } from "api/queries/experiments"; +import type { AppearanceConfig, BuildInfoResponse, Entitlements, Experiments, } from "api/typesGenerated"; +import { displayError } from "components/GlobalSnackbar/utils"; import { FullScreenLoader } from "components/Loader/FullScreenLoader"; -import { - type FC, - type PropsWithChildren, - createContext, - useCallback, - useState, -} from "react"; -import { appearance } from "api/queries/appearance"; import { hslToHex, isHexColor, isHslColor } from "utils/colors"; -import { displayError } from "components/GlobalSnackbar/utils"; interface Appearance { config: AppearanceConfig; diff --git a/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.tsx b/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.tsx index 35236915504e4..f446a23b7387a 100644 --- a/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.tsx +++ b/site/src/modules/dashboard/DeploymentBanner/DeploymentBannerView.tsx @@ -1,8 +1,23 @@ -import type { - DeploymentStats, - HealthcheckReport, - WorkspaceStatus, -} from "api/typesGenerated"; +import { + css, + type CSSObject, + type Theme, + type Interpolation, + useTheme, +} from "@emotion/react"; +import BuildingIcon from "@mui/icons-material/Build"; +import DownloadIcon from "@mui/icons-material/CloudDownload"; +import UploadIcon from "@mui/icons-material/CloudUpload"; +import CollectedIcon from "@mui/icons-material/Compare"; +import ErrorIcon from "@mui/icons-material/ErrorOutline"; +import RefreshIcon from "@mui/icons-material/Refresh"; +import LatencyIcon from "@mui/icons-material/SettingsEthernet"; +import WebTerminalIcon from "@mui/icons-material/WebAsset"; +import Button from "@mui/material/Button"; +import Link from "@mui/material/Link"; +import Tooltip from "@mui/material/Tooltip"; +import dayjs from "dayjs"; +import prettyBytes from "pretty-bytes"; import { type FC, type PropsWithChildren, @@ -10,37 +25,22 @@ import { useEffect, useState, } from "react"; -import prettyBytes from "pretty-bytes"; -import BuildingIcon from "@mui/icons-material/Build"; -import Tooltip from "@mui/material/Tooltip"; import { Link as RouterLink } from "react-router-dom"; -import Link from "@mui/material/Link"; +import type { + DeploymentStats, + HealthcheckReport, + WorkspaceStatus, +} from "api/typesGenerated"; +import { HelpTooltipTitle } from "components/HelpTooltip/HelpTooltip"; import { JetBrainsIcon } from "components/Icons/JetBrainsIcon"; -import { VSCodeIcon } from "components/Icons/VSCodeIcon"; -import DownloadIcon from "@mui/icons-material/CloudDownload"; -import UploadIcon from "@mui/icons-material/CloudUpload"; -import LatencyIcon from "@mui/icons-material/SettingsEthernet"; -import WebTerminalIcon from "@mui/icons-material/WebAsset"; -import CollectedIcon from "@mui/icons-material/Compare"; -import RefreshIcon from "@mui/icons-material/Refresh"; -import Button from "@mui/material/Button"; -import { - css, - type CSSObject, - type Theme, - type Interpolation, - useTheme, -} from "@emotion/react"; -import dayjs from "dayjs"; -import { TerminalIcon } from "components/Icons/TerminalIcon"; import { RocketIcon } from "components/Icons/RocketIcon"; -import ErrorIcon from "@mui/icons-material/ErrorOutline"; +import { TerminalIcon } from "components/Icons/TerminalIcon"; +import { VSCodeIcon } from "components/Icons/VSCodeIcon"; +import { Stack } from "components/Stack/Stack"; +import { type ClassName, useClassName } from "hooks/useClassName"; import { MONOSPACE_FONT_FAMILY } from "theme/constants"; import colors from "theme/tailwindColors"; import { getDisplayWorkspaceStatus } from "utils/workspace"; -import { HelpTooltipTitle } from "components/HelpTooltip/HelpTooltip"; -import { Stack } from "components/Stack/Stack"; -import { type ClassName, useClassName } from "hooks/useClassName"; export const bannerHeight = 36; diff --git a/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.tsx b/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.tsx index 4fbdcd3c62914..7aab2ebdb0904 100644 --- a/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.tsx +++ b/site/src/modules/dashboard/LicenseBanner/LicenseBannerView.tsx @@ -1,4 +1,3 @@ -import Link from "@mui/material/Link"; import { css, type CSSObject, @@ -6,6 +5,7 @@ import { type Theme, useTheme, } from "@emotion/react"; +import Link from "@mui/material/Link"; import { type FC, useState } from "react"; import { Expander } from "components/Expander/Expander"; import { Pill } from "components/Pill/Pill"; diff --git a/site/src/modules/dashboard/Navbar/Navbar.test.tsx b/site/src/modules/dashboard/Navbar/Navbar.test.tsx index c9f9a0030122c..84251f4348784 100644 --- a/site/src/modules/dashboard/Navbar/Navbar.test.tsx +++ b/site/src/modules/dashboard/Navbar/Navbar.test.tsx @@ -1,12 +1,12 @@ import { render, screen, waitFor } from "@testing-library/react"; -import { App } from "App"; -import { Language } from "./NavbarView"; import { rest } from "msw"; +import { App } from "App"; import { MockEntitlementsWithAuditLog, MockMemberPermissions, } from "testHelpers/entities"; import { server } from "testHelpers/server"; +import { Language } from "./NavbarView"; /** * The LicenseBanner, mounted above the AppRouter, fetches entitlements. Thus, to test their diff --git a/site/src/modules/dashboard/Navbar/NavbarView.test.tsx b/site/src/modules/dashboard/Navbar/NavbarView.test.tsx index a6eae936e3258..c881fa300000d 100644 --- a/site/src/modules/dashboard/Navbar/NavbarView.test.tsx +++ b/site/src/modules/dashboard/Navbar/NavbarView.test.tsx @@ -1,8 +1,8 @@ import { screen } from "@testing-library/react"; +import type { ProxyContextValue } from "contexts/ProxyContext"; import { MockPrimaryWorkspaceProxy, MockUser } from "testHelpers/entities"; import { renderWithAuth } from "testHelpers/renderHelpers"; import { Language as navLanguage, NavbarView } from "./NavbarView"; -import { ProxyContextValue } from "contexts/ProxyContext"; const proxyContextValue: ProxyContextValue = { proxy: { diff --git a/site/src/modules/dashboard/Navbar/NavbarView.tsx b/site/src/modules/dashboard/Navbar/NavbarView.tsx index 60e6db1fea9bc..bcb3362b8e573 100644 --- a/site/src/modules/dashboard/Navbar/NavbarView.tsx +++ b/site/src/modules/dashboard/Navbar/NavbarView.tsx @@ -1,24 +1,24 @@ +import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; +import KeyboardArrowDownOutlined from "@mui/icons-material/KeyboardArrowDownOutlined"; +import MenuIcon from "@mui/icons-material/Menu"; +import Button from "@mui/material/Button"; +import Divider from "@mui/material/Divider"; import Drawer from "@mui/material/Drawer"; import IconButton from "@mui/material/IconButton"; -import Divider from "@mui/material/Divider"; -import Skeleton from "@mui/material/Skeleton"; import Menu from "@mui/material/Menu"; -import Button from "@mui/material/Button"; import MenuItem from "@mui/material/MenuItem"; -import KeyboardArrowDownOutlined from "@mui/icons-material/KeyboardArrowDownOutlined"; -import MenuIcon from "@mui/icons-material/Menu"; +import Skeleton from "@mui/material/Skeleton"; import { visuallyHidden } from "@mui/utils"; -import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; import { type FC, type ReactNode, useRef, useState } from "react"; import { NavLink, useLocation, useNavigate } from "react-router-dom"; -import { BUTTON_SM_HEIGHT, navHeight } from "theme/constants"; import type * as TypesGen from "api/typesGenerated"; -import { usePermissions } from "contexts/auth/usePermissions"; -import type { ProxyContextValue } from "contexts/ProxyContext"; import { Abbr } from "components/Abbr/Abbr"; import { displayError } from "components/GlobalSnackbar/utils"; -import { Latency } from "components/Latency/Latency"; import { CoderIcon } from "components/Icons/CoderIcon"; +import { Latency } from "components/Latency/Latency"; +import { usePermissions } from "contexts/auth/usePermissions"; +import type { ProxyContextValue } from "contexts/ProxyContext"; +import { BUTTON_SM_HEIGHT, navHeight } from "theme/constants"; import { UserDropdown } from "./UserDropdown/UserDropdown"; export const USERS_LINK = `/users?filter=${encodeURIComponent( diff --git a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdown.tsx b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdown.tsx index f2b45448f8a3b..d08d538583c18 100644 --- a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdown.tsx +++ b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdown.tsx @@ -1,16 +1,16 @@ +import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; import Badge from "@mui/material/Badge"; import { type FC, type ReactNode } from "react"; import type * as TypesGen from "api/typesGenerated"; -import { BUTTON_SM_HEIGHT, navHeight } from "theme/constants"; import { DropdownArrow } from "components/DropdownArrow/DropdownArrow"; -import { UserAvatar } from "components/UserAvatar/UserAvatar"; -import { UserDropdownContent } from "./UserDropdownContent"; -import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; import { Popover, PopoverContent, PopoverTrigger, } from "components/Popover/Popover"; +import { UserAvatar } from "components/UserAvatar/UserAvatar"; +import { BUTTON_SM_HEIGHT, navHeight } from "theme/constants"; +import { UserDropdownContent } from "./UserDropdownContent"; export interface UserDropdownProps { user: TypesGen.User; diff --git a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.test.tsx b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.test.tsx index f9650a60d0443..137a5438a8def 100644 --- a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.test.tsx +++ b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.test.tsx @@ -1,8 +1,8 @@ import { screen } from "@testing-library/react"; +import { Popover } from "components/Popover/Popover"; import { MockUser } from "testHelpers/entities"; import { render, waitForLoaderToBeRemoved } from "testHelpers/renderHelpers"; import { Language, UserDropdownContent } from "./UserDropdownContent"; -import { Popover } from "components/Popover/Popover"; describe("UserDropdownContent", () => { it("has the correct link for the account item", async () => { diff --git a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx index fda9898f6deff..bc6cc233d7c4d 100644 --- a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx +++ b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdownContent.tsx @@ -1,23 +1,23 @@ -import Divider from "@mui/material/Divider"; -import MenuItem from "@mui/material/MenuItem"; -import AccountIcon from "@mui/icons-material/AccountCircleOutlined"; -import BugIcon from "@mui/icons-material/BugReportOutlined"; -import ChatIcon from "@mui/icons-material/ChatOutlined"; -import LaunchIcon from "@mui/icons-material/LaunchOutlined"; -import { Stack } from "components/Stack/Stack"; -import { FC } from "react"; -import { Link } from "react-router-dom"; -import * as TypesGen from "api/typesGenerated"; -import DocsIcon from "@mui/icons-material/MenuBook"; -import LogoutIcon from "@mui/icons-material/ExitToAppOutlined"; import { css, type CSSObject, type Interpolation, type Theme, } from "@emotion/react"; -import { usePopover } from "components/Popover/Popover"; +import AccountIcon from "@mui/icons-material/AccountCircleOutlined"; +import BugIcon from "@mui/icons-material/BugReportOutlined"; +import ChatIcon from "@mui/icons-material/ChatOutlined"; +import LogoutIcon from "@mui/icons-material/ExitToAppOutlined"; +import LaunchIcon from "@mui/icons-material/LaunchOutlined"; +import DocsIcon from "@mui/icons-material/MenuBook"; +import Divider from "@mui/material/Divider"; +import MenuItem from "@mui/material/MenuItem"; +import type { FC } from "react"; +import { Link } from "react-router-dom"; +import type * as TypesGen from "api/typesGenerated"; import { ExternalImage } from "components/ExternalImage/ExternalImage"; +import { usePopover } from "components/Popover/Popover"; +import { Stack } from "components/Stack/Stack"; export const Language = { accountLabel: "Account", diff --git a/site/src/modules/dashboard/useFeatureVisibility.ts b/site/src/modules/dashboard/useFeatureVisibility.ts index 062685c573ca8..fe0aed59bfa8a 100644 --- a/site/src/modules/dashboard/useFeatureVisibility.ts +++ b/site/src/modules/dashboard/useFeatureVisibility.ts @@ -1,4 +1,4 @@ -import { FeatureName } from "api/typesGenerated"; +import type { FeatureName } from "api/typesGenerated"; import { selectFeatureVisibility } from "./entitlements"; import { useDashboard } from "./useDashboard"; diff --git a/site/src/modules/dashboard/useUpdateCheck.test.tsx b/site/src/modules/dashboard/useUpdateCheck.test.tsx index dec292346e57b..47c220e8a8af9 100644 --- a/site/src/modules/dashboard/useUpdateCheck.test.tsx +++ b/site/src/modules/dashboard/useUpdateCheck.test.tsx @@ -1,7 +1,7 @@ import { act, renderHook, waitFor } from "@testing-library/react"; +import { rest } from "msw"; import { type FC, type PropsWithChildren } from "react"; import { QueryClient, QueryClientProvider } from "react-query"; -import { rest } from "msw"; import { MockUpdateCheck } from "testHelpers/entities"; import { server } from "testHelpers/server"; import { useUpdateCheck } from "./useUpdateCheck"; diff --git a/site/src/modules/dashboard/useUpdateCheck.ts b/site/src/modules/dashboard/useUpdateCheck.ts index 7089d87914591..3c72a7266bd42 100644 --- a/site/src/modules/dashboard/useUpdateCheck.ts +++ b/site/src/modules/dashboard/useUpdateCheck.ts @@ -1,6 +1,6 @@ -import { updateCheck } from "api/queries/updateCheck"; import { useMemo, useState } from "react"; import { useQuery } from "react-query"; +import { updateCheck } from "api/queries/updateCheck"; export const useUpdateCheck = (enabled: boolean) => { const [dismissedVersion, setDismissedVersion] = useState(() => diff --git a/site/src/modules/resources/AgentLatency.tsx b/site/src/modules/resources/AgentLatency.tsx index c3963cb15c61d..473aef63eda1d 100644 --- a/site/src/modules/resources/AgentLatency.tsx +++ b/site/src/modules/resources/AgentLatency.tsx @@ -7,9 +7,9 @@ import { HelpTooltipTitle, HelpTooltipContent, } from "components/HelpTooltip/HelpTooltip"; +import { PopoverTrigger } from "components/Popover/Popover"; import { Stack } from "components/Stack/Stack"; import { getLatencyColor } from "utils/latency"; -import { PopoverTrigger } from "components/Popover/Popover"; const getDisplayLatency = (theme: Theme, agent: WorkspaceAgent) => { // Find the right latency to display diff --git a/site/src/modules/resources/AgentLogs.tsx b/site/src/modules/resources/AgentLogs.tsx index c1e2ee5353888..4755fdcbda325 100644 --- a/site/src/modules/resources/AgentLogs.tsx +++ b/site/src/modules/resources/AgentLogs.tsx @@ -1,20 +1,21 @@ +import type { Interpolation, Theme } from "@emotion/react"; import Tooltip from "@mui/material/Tooltip"; -import { FixedSizeList as List } from "react-window"; -import type { WorkspaceAgentLogSource } from "api/typesGenerated"; -import { - LogLine, - logLineHeight, -} from "modules/workspaces/WorkspaceBuildLogs/Logs"; +import type { + ComponentProps} from "react"; import { - ComponentProps, forwardRef, useEffect, useMemo, useState, } from "react"; -import { LineWithID } from "./AgentRow"; -import { Interpolation, Theme } from "@emotion/react"; +import { FixedSizeList as List } from "react-window"; import * as API from "api/api"; +import type { WorkspaceAgentLogSource } from "api/typesGenerated"; +import { + LogLine, + logLineHeight, +} from "modules/workspaces/WorkspaceBuildLogs/Logs"; +import type { LineWithID } from "./AgentRow"; type AgentLogsProps = Omit< ComponentProps, diff --git a/site/src/modules/resources/AgentMetadata.stories.tsx b/site/src/modules/resources/AgentMetadata.stories.tsx index 7382aac3de737..b59cc20fa4cfb 100644 --- a/site/src/modules/resources/AgentMetadata.stories.tsx +++ b/site/src/modules/resources/AgentMetadata.stories.tsx @@ -1,9 +1,9 @@ -import { +import type { Meta, StoryObj } from "@storybook/react"; +import type { WorkspaceAgentMetadataDescription, WorkspaceAgentMetadataResult, } from "api/typesGenerated"; import { AgentMetadataView } from "./AgentMetadata"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "modules/resources/AgentMetadataView", diff --git a/site/src/modules/resources/AgentMetadata.tsx b/site/src/modules/resources/AgentMetadata.tsx index 0e22044c4abcc..425c9309235e3 100644 --- a/site/src/modules/resources/AgentMetadata.tsx +++ b/site/src/modules/resources/AgentMetadata.tsx @@ -1,7 +1,7 @@ -import dayjs from "dayjs"; +import { type Interpolation, type Theme } from "@emotion/react"; import Skeleton from "@mui/material/Skeleton"; import Tooltip from "@mui/material/Tooltip"; -import { type Interpolation, type Theme } from "@emotion/react"; +import dayjs from "dayjs"; import { createContext, type FC, diff --git a/site/src/modules/resources/AgentOutdatedTooltip.tsx b/site/src/modules/resources/AgentOutdatedTooltip.tsx index e2432ed279665..c3a22f58666d9 100644 --- a/site/src/modules/resources/AgentOutdatedTooltip.tsx +++ b/site/src/modules/resources/AgentOutdatedTooltip.tsx @@ -1,6 +1,7 @@ -import { type FC } from "react"; import { useTheme } from "@emotion/react"; import RefreshIcon from "@mui/icons-material/RefreshOutlined"; +import { type FC } from "react"; +import type { WorkspaceAgent } from "api/typesGenerated"; import { HelpTooltip, HelpTooltipAction, @@ -9,10 +10,9 @@ import { HelpTooltipText, HelpTooltipTitle, } from "components/HelpTooltip/HelpTooltip"; -import type { WorkspaceAgent } from "api/typesGenerated"; +import { PopoverTrigger } from "components/Popover/Popover"; import { Stack } from "components/Stack/Stack"; import { agentVersionStatus } from "../../utils/workspace"; -import { PopoverTrigger } from "components/Popover/Popover"; type AgentOutdatedTooltipProps = { agent: WorkspaceAgent; diff --git a/site/src/modules/resources/AgentRow.stories.tsx b/site/src/modules/resources/AgentRow.stories.tsx index c2cf5703446b9..73fc0dd89f2e9 100644 --- a/site/src/modules/resources/AgentRow.stories.tsx +++ b/site/src/modules/resources/AgentRow.stories.tsx @@ -1,4 +1,5 @@ import type { Meta, StoryObj } from "@storybook/react"; +import { ProxyContext, getPreferredProxy } from "contexts/ProxyContext"; import { chromatic } from "testHelpers/chromatic"; import { MockPrimaryWorkspaceProxy, @@ -22,9 +23,9 @@ import { MockProxyLatencies, MockListeningPortsResponse, } from "testHelpers/entities"; -import { AgentRow, LineWithID } from "./AgentRow"; -import { ProxyContext, getPreferredProxy } from "contexts/ProxyContext"; import { withDashboardProvider } from "testHelpers/storybook"; +import type { LineWithID } from "./AgentRow"; +import { AgentRow } from "./AgentRow"; const defaultAgentMetadata = [ { diff --git a/site/src/modules/resources/AgentRow.test.tsx b/site/src/modules/resources/AgentRow.test.tsx index 23907798f28ba..0ad222fc09740 100644 --- a/site/src/modules/resources/AgentRow.test.tsx +++ b/site/src/modules/resources/AgentRow.test.tsx @@ -1,15 +1,16 @@ +import { screen } from "@testing-library/react"; import { MockTemplate, MockWorkspace, MockWorkspaceAgent, } from "testHelpers/entities"; -import { AgentRow, AgentRowProps } from "./AgentRow"; -import { DisplayAppNameMap } from "./AppLink/AppLink"; -import { screen } from "@testing-library/react"; import { renderWithAuth, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; +import type { AgentRowProps } from "./AgentRow"; +import { AgentRow } from "./AgentRow"; +import { DisplayAppNameMap } from "./AppLink/AppLink"; jest.mock("modules/resources/AgentMetadata", () => { const AgentMetadata = () => <>; diff --git a/site/src/modules/resources/AgentRow.tsx b/site/src/modules/resources/AgentRow.tsx index cf5aaca77b58f..84cef64544e55 100644 --- a/site/src/modules/resources/AgentRow.tsx +++ b/site/src/modules/resources/AgentRow.tsx @@ -1,6 +1,6 @@ +import { type Interpolation, type Theme } from "@emotion/react"; import Collapse from "@mui/material/Collapse"; import Skeleton from "@mui/material/Skeleton"; -import { type Interpolation, type Theme } from "@emotion/react"; import { type FC, useCallback, @@ -10,8 +10,10 @@ import { useRef, useState, } from "react"; +import { useQuery } from "react-query"; import AutoSizer from "react-virtualized-auto-sizer"; -import { FixedSizeList as List, ListOnScrollProps } from "react-window"; +import type { FixedSizeList as List, ListOnScrollProps } from "react-window"; +import { xrayScan } from "api/queries/integrations"; import type { Template, Workspace, @@ -19,13 +21,15 @@ import type { WorkspaceAgentMetadata, } from "api/typesGenerated"; import { DropdownArrow } from "components/DropdownArrow/DropdownArrow"; +import { Stack } from "components/Stack/Stack"; +import { useProxy } from "contexts/ProxyContext"; +import type { + Line} from "modules/workspaces/WorkspaceBuildLogs/Logs"; import { - Line, logLineHeight, } from "modules/workspaces/WorkspaceBuildLogs/Logs"; -import { useProxy } from "contexts/ProxyContext"; -import { Stack } from "components/Stack/Stack"; import { AgentLatency } from "./AgentLatency"; +import { AgentLogs, useAgentLogs } from "./AgentLogs"; import { AgentMetadata } from "./AgentMetadata"; import { AgentStatus } from "./AgentStatus"; import { AgentVersion } from "./AgentVersion"; @@ -34,10 +38,7 @@ import { PortForwardButton } from "./PortForwardButton"; import { SSHButton } from "./SSHButton/SSHButton"; import { TerminalLink } from "./TerminalLink/TerminalLink"; import { VSCodeDesktopButton } from "./VSCodeDesktopButton/VSCodeDesktopButton"; -import { useQuery } from "react-query"; -import { xrayScan } from "api/queries/integrations"; import { XRayScanAlert } from "./XRayScanAlert"; -import { AgentLogs, useAgentLogs } from "./AgentLogs"; // Logs are stored as the Line interface to make rendering // much more efficient. Instead of mapping objects each time, we're diff --git a/site/src/modules/resources/AgentRowPreview.stories.tsx b/site/src/modules/resources/AgentRowPreview.stories.tsx index efb93f474d3d5..87cb37bc30de9 100644 --- a/site/src/modules/resources/AgentRowPreview.stories.tsx +++ b/site/src/modules/resources/AgentRowPreview.stories.tsx @@ -1,6 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockWorkspaceAgent, MockWorkspaceApp } from "testHelpers/entities"; import { AgentRowPreview } from "./AgentRowPreview"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "modules/resources/AgentRowPreview", diff --git a/site/src/modules/resources/AgentRowPreview.test.tsx b/site/src/modules/resources/AgentRowPreview.test.tsx index 0fad0ceda06c0..8fabb2a1c3087 100644 --- a/site/src/modules/resources/AgentRowPreview.test.tsx +++ b/site/src/modules/resources/AgentRowPreview.test.tsx @@ -1,8 +1,9 @@ +import { screen } from "@testing-library/react"; +import type { WorkspaceAgent, DisplayApp } from "api/typesGenerated"; +import { DisplayApps } from "api/typesGenerated"; import { MockWorkspaceAgent } from "testHelpers/entities"; -import { WorkspaceAgent, DisplayApps, DisplayApp } from "api/typesGenerated"; import { renderComponent } from "testHelpers/renderHelpers"; import { AgentRowPreview } from "./AgentRowPreview"; -import { screen } from "@testing-library/react"; import { DisplayAppNameMap } from "./AppLink/AppLink"; const AllDisplayAppsAndModule = MockWorkspaceAgent; diff --git a/site/src/modules/resources/AgentRowPreview.tsx b/site/src/modules/resources/AgentRowPreview.tsx index 6d99f2a6f25dd..b23af73f88a0c 100644 --- a/site/src/modules/resources/AgentRowPreview.tsx +++ b/site/src/modules/resources/AgentRowPreview.tsx @@ -1,9 +1,9 @@ import { type Interpolation, type Theme } from "@emotion/react"; import { type FC } from "react"; import type { WorkspaceAgent } from "api/typesGenerated"; -import { Stack } from "components/Stack/Stack"; -import { VSCodeIcon } from "components/Icons/VSCodeIcon"; import { TerminalIcon } from "components/Icons/TerminalIcon"; +import { VSCodeIcon } from "components/Icons/VSCodeIcon"; +import { Stack } from "components/Stack/Stack"; import { DisplayAppNameMap } from "./AppLink/AppLink"; import { AppPreview } from "./AppLink/AppPreview"; import { BaseIcon } from "./AppLink/BaseIcon"; diff --git a/site/src/modules/resources/AgentStatus.tsx b/site/src/modules/resources/AgentStatus.tsx index ffb56953efa4a..c9e2f600ed705 100644 --- a/site/src/modules/resources/AgentStatus.tsx +++ b/site/src/modules/resources/AgentStatus.tsx @@ -1,7 +1,7 @@ import { type Interpolation, type Theme } from "@emotion/react"; -import Tooltip from "@mui/material/Tooltip"; import WarningRounded from "@mui/icons-material/WarningRounded"; import Link from "@mui/material/Link"; +import Tooltip from "@mui/material/Tooltip"; import { type FC } from "react"; import type { WorkspaceAgent } from "api/typesGenerated"; import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; diff --git a/site/src/modules/resources/AppLink/AppLink.stories.tsx b/site/src/modules/resources/AppLink/AppLink.stories.tsx index 7f77c2d8796e4..2dbc377a0d591 100644 --- a/site/src/modules/resources/AppLink/AppLink.stories.tsx +++ b/site/src/modules/resources/AppLink/AppLink.stories.tsx @@ -1,3 +1,5 @@ +import type { Meta, StoryObj } from "@storybook/react"; +import { ProxyContext, getPreferredProxy } from "contexts/ProxyContext"; import { MockPrimaryWorkspaceProxy, MockWorkspaceProxies, @@ -7,8 +9,6 @@ import { MockProxyLatencies, } from "testHelpers/entities"; import { AppLink } from "./AppLink"; -import { ProxyContext, getPreferredProxy } from "contexts/ProxyContext"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "modules/resources/AppLink", diff --git a/site/src/modules/resources/AppLink/AppLink.tsx b/site/src/modules/resources/AppLink/AppLink.tsx index 86cf0da77696b..7243d2b1af5b6 100644 --- a/site/src/modules/resources/AppLink/AppLink.tsx +++ b/site/src/modules/resources/AppLink/AppLink.tsx @@ -1,9 +1,9 @@ +import { useTheme } from "@emotion/react"; +import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline"; import CircularProgress from "@mui/material/CircularProgress"; import Link from "@mui/material/Link"; import Tooltip from "@mui/material/Tooltip"; -import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline"; import { type FC, useState } from "react"; -import { useTheme } from "@emotion/react"; import { getApiKey } from "api/api"; import type * as TypesGen from "api/typesGenerated"; import { useProxy } from "contexts/ProxyContext"; diff --git a/site/src/modules/resources/AppLink/AppPreview.tsx b/site/src/modules/resources/AppLink/AppPreview.tsx index 3dc40a40cd48c..5e6becb25adc5 100644 --- a/site/src/modules/resources/AppLink/AppPreview.tsx +++ b/site/src/modules/resources/AppLink/AppPreview.tsx @@ -1,5 +1,5 @@ -import { Stack } from "components/Stack/Stack"; import { type FC, type PropsWithChildren } from "react"; +import { Stack } from "components/Stack/Stack"; export const AppPreview: FC = ({ children }) => { return ( diff --git a/site/src/modules/resources/AppLink/ShareIcon.tsx b/site/src/modules/resources/AppLink/ShareIcon.tsx index 478509fa0932e..61c1e8719af52 100644 --- a/site/src/modules/resources/AppLink/ShareIcon.tsx +++ b/site/src/modules/resources/AppLink/ShareIcon.tsx @@ -1,8 +1,8 @@ -import PublicOutlinedIcon from "@mui/icons-material/PublicOutlined"; import GroupOutlinedIcon from "@mui/icons-material/GroupOutlined"; import LaunchOutlinedIcon from "@mui/icons-material/LaunchOutlined"; -import * as TypesGen from "api/typesGenerated"; +import PublicOutlinedIcon from "@mui/icons-material/PublicOutlined"; import Tooltip from "@mui/material/Tooltip"; +import type * as TypesGen from "api/typesGenerated"; export interface ShareIconProps { app: TypesGen.WorkspaceApp; diff --git a/site/src/modules/resources/PortForwardButton.stories.tsx b/site/src/modules/resources/PortForwardButton.stories.tsx index ddf683d37b078..9dd79d4d03eec 100644 --- a/site/src/modules/resources/PortForwardButton.stories.tsx +++ b/site/src/modules/resources/PortForwardButton.stories.tsx @@ -1,4 +1,3 @@ -import { PortForwardButton } from "./PortForwardButton"; import type { Meta, StoryObj } from "@storybook/react"; import { MockListeningPortsResponse, @@ -7,6 +6,7 @@ import { MockWorkspaceAgent, } from "testHelpers/entities"; import { withDashboardProvider } from "testHelpers/storybook"; +import { PortForwardButton } from "./PortForwardButton"; const meta: Meta = { title: "modules/resources/PortForwardButton", diff --git a/site/src/modules/resources/PortForwardButton.tsx b/site/src/modules/resources/PortForwardButton.tsx index f7dd36c4410f9..aa99722080fdc 100644 --- a/site/src/modules/resources/PortForwardButton.tsx +++ b/site/src/modules/resources/PortForwardButton.tsx @@ -1,22 +1,39 @@ +import { type Interpolation, type Theme, useTheme } from "@emotion/react"; +import CloseIcon from "@mui/icons-material/Close"; +import KeyboardArrowDown from "@mui/icons-material/KeyboardArrowDown"; +import LockIcon from "@mui/icons-material/Lock"; +import LockOpenIcon from "@mui/icons-material/LockOpen"; +import OpenInNewOutlined from "@mui/icons-material/OpenInNewOutlined"; +import SensorsIcon from "@mui/icons-material/Sensors"; +import LoadingButton from "@mui/lab/LoadingButton"; import Button from "@mui/material/Button"; -import Link from "@mui/material/Link"; import CircularProgress from "@mui/material/CircularProgress"; -import OpenInNewOutlined from "@mui/icons-material/OpenInNewOutlined"; -import { type Interpolation, type Theme, useTheme } from "@emotion/react"; +import FormControl from "@mui/material/FormControl"; +import Link from "@mui/material/Link"; +import MenuItem from "@mui/material/MenuItem"; +import Select from "@mui/material/Select"; +import Stack from "@mui/material/Stack"; +import TextField from "@mui/material/TextField"; +import type { FormikContextType} from "formik"; +import { useFormik } from "formik"; import { type FC } from "react"; import { useQuery, useMutation } from "react-query"; -import { docs } from "utils/docs"; +import * as Yup from "yup"; import { getAgentListeningPorts } from "api/api"; import { - WorkspaceAppSharingLevels, + deleteWorkspacePortShare, + upsertWorkspacePortShare, + workspacePortShares, +} from "api/queries/workspaceportsharing"; +import { + WorkspaceAppSharingLevels} from "api/typesGenerated"; +import type { + UpsertWorkspaceAgentPortShareRequest, type Template, type WorkspaceAgent, type WorkspaceAgentListeningPort, - type WorkspaceAgentPortShareLevel, - UpsertWorkspaceAgentPortShareRequest, + type WorkspaceAgentPortShareLevel } from "api/typesGenerated"; -import { portForwardURL } from "utils/portForward"; -import { type ClassName, useClassName } from "hooks/useClassName"; import { HelpTooltipLink, HelpTooltipText, @@ -27,26 +44,11 @@ import { PopoverContent, PopoverTrigger, } from "components/Popover/Popover"; -import KeyboardArrowDown from "@mui/icons-material/KeyboardArrowDown"; -import Stack from "@mui/material/Stack"; -import Select from "@mui/material/Select"; -import MenuItem from "@mui/material/MenuItem"; -import FormControl from "@mui/material/FormControl"; -import TextField from "@mui/material/TextField"; -import SensorsIcon from "@mui/icons-material/Sensors"; -import LockIcon from "@mui/icons-material/Lock"; -import LockOpenIcon from "@mui/icons-material/LockOpen"; -import CloseIcon from "@mui/icons-material/Close"; -import { - deleteWorkspacePortShare, - upsertWorkspacePortShare, - workspacePortShares, -} from "api/queries/workspaceportsharing"; +import { type ClassName, useClassName } from "hooks/useClassName"; import { useDashboard } from "modules/dashboard/useDashboard"; -import * as Yup from "yup"; -import { FormikContextType, useFormik } from "formik"; +import { docs } from "utils/docs"; import { getFormHelpers } from "utils/formUtils"; -import { LoadingButton } from "@mui/lab"; +import { portForwardURL } from "utils/portForward"; export interface PortForwardButtonProps { host: string; diff --git a/site/src/modules/resources/PortForwardPopoverView.stories.tsx b/site/src/modules/resources/PortForwardPopoverView.stories.tsx index 94e101e66b91d..a2dd7bd801372 100644 --- a/site/src/modules/resources/PortForwardPopoverView.stories.tsx +++ b/site/src/modules/resources/PortForwardPopoverView.stories.tsx @@ -1,4 +1,3 @@ -import { PortForwardPopoverView } from "./PortForwardButton"; import type { Meta, StoryObj } from "@storybook/react"; import { MockListeningPortsResponse, @@ -7,6 +6,7 @@ import { MockWorkspace, MockWorkspaceAgent, } from "testHelpers/entities"; +import { PortForwardPopoverView } from "./PortForwardButton"; const meta: Meta = { title: "modules/resources/PortForwardPopoverView", diff --git a/site/src/modules/resources/PortForwardPopoverView.test.tsx b/site/src/modules/resources/PortForwardPopoverView.test.tsx index c04cd74b3724c..7ab9276330793 100644 --- a/site/src/modules/resources/PortForwardPopoverView.test.tsx +++ b/site/src/modules/resources/PortForwardPopoverView.test.tsx @@ -1,4 +1,5 @@ import { screen } from "@testing-library/react"; +import { QueryClientProvider, QueryClient } from "react-query"; import { MockListeningPortsResponse, MockTemplate, @@ -7,7 +8,6 @@ import { } from "testHelpers/entities"; import { renderComponent } from "testHelpers/renderHelpers"; import { PortForwardPopoverView } from "./PortForwardButton"; -import { QueryClientProvider, QueryClient } from "react-query"; describe("Port Forward Popover View", () => { it("renders component", async () => { diff --git a/site/src/modules/resources/ResourceAvatar.stories.tsx b/site/src/modules/resources/ResourceAvatar.stories.tsx index 96013aef5d7b2..6b8a419490e00 100644 --- a/site/src/modules/resources/ResourceAvatar.stories.tsx +++ b/site/src/modules/resources/ResourceAvatar.stories.tsx @@ -1,6 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockWorkspaceResource } from "testHelpers/entities"; import { ResourceAvatar } from "./ResourceAvatar"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "modules/resources/ResourceAvatar", diff --git a/site/src/modules/resources/ResourceAvatar.tsx b/site/src/modules/resources/ResourceAvatar.tsx index a3a917b2f543f..4722892d7a87b 100644 --- a/site/src/modules/resources/ResourceAvatar.tsx +++ b/site/src/modules/resources/ResourceAvatar.tsx @@ -1,5 +1,5 @@ -import { type FC, useId } from "react"; import { visuallyHidden } from "@mui/utils"; +import { type FC, useId } from "react"; import type { WorkspaceResource } from "api/typesGenerated"; import { Avatar } from "components/Avatar/Avatar"; import { ExternalImage } from "components/ExternalImage/ExternalImage"; diff --git a/site/src/modules/resources/ResourceCard.stories.tsx b/site/src/modules/resources/ResourceCard.stories.tsx index c054223240bbd..7bc3b4bb0503c 100644 --- a/site/src/modules/resources/ResourceCard.stories.tsx +++ b/site/src/modules/resources/ResourceCard.stories.tsx @@ -1,12 +1,12 @@ +import type { Meta, StoryObj } from "@storybook/react"; +import { type WorkspaceAgent } from "api/typesGenerated"; +import { ProxyContext, getPreferredProxy } from "contexts/ProxyContext"; import { MockProxyLatencies, MockWorkspaceResource, } from "testHelpers/entities"; -import { ResourceCard } from "./ResourceCard"; -import { ProxyContext, getPreferredProxy } from "contexts/ProxyContext"; -import type { Meta, StoryObj } from "@storybook/react"; -import { type WorkspaceAgent } from "api/typesGenerated"; import { AgentRowPreview } from "./AgentRowPreview"; +import { ResourceCard } from "./ResourceCard"; const meta: Meta = { title: "modules/resources/ResourceCard", diff --git a/site/src/modules/resources/ResourceCard.tsx b/site/src/modules/resources/ResourceCard.tsx index a379dcc49e660..d56e6afaf6b0f 100644 --- a/site/src/modules/resources/ResourceCard.tsx +++ b/site/src/modules/resources/ResourceCard.tsx @@ -1,10 +1,10 @@ +import { type Interpolation, type Theme } from "@emotion/react"; import IconButton from "@mui/material/IconButton"; import Tooltip from "@mui/material/Tooltip"; -import { type Interpolation, type Theme } from "@emotion/react"; import { Children, type FC, type PropsWithChildren, useState } from "react"; import type { WorkspaceAgent, WorkspaceResource } from "api/typesGenerated"; -import { DropdownArrow } from "components/DropdownArrow/DropdownArrow"; import { CopyableValue } from "components/CopyableValue/CopyableValue"; +import { DropdownArrow } from "components/DropdownArrow/DropdownArrow"; import { MemoizedInlineMarkdown } from "components/Markdown/Markdown"; import { Stack } from "components/Stack/Stack"; import { ResourceAvatar } from "./ResourceAvatar"; diff --git a/site/src/modules/resources/Resources.stories.tsx b/site/src/modules/resources/Resources.stories.tsx index f9e64f3801909..7d69c0ba64a35 100644 --- a/site/src/modules/resources/Resources.stories.tsx +++ b/site/src/modules/resources/Resources.stories.tsx @@ -1,13 +1,13 @@ +import type { Meta, StoryObj } from "@storybook/react"; +import { type WorkspaceAgent } from "api/typesGenerated"; +import { ProxyContext, getPreferredProxy } from "contexts/ProxyContext"; import { MockProxyLatencies, MockWorkspaceResource, MockWorkspaceResourceMultipleAgents, } from "testHelpers/entities"; -import { Resources } from "./Resources"; -import { ProxyContext, getPreferredProxy } from "contexts/ProxyContext"; -import type { Meta, StoryObj } from "@storybook/react"; -import { type WorkspaceAgent } from "api/typesGenerated"; import { AgentRowPreview } from "./AgentRowPreview"; +import { Resources } from "./Resources"; const meta: Meta = { title: "modules/resources/Resources", diff --git a/site/src/modules/resources/Resources.tsx b/site/src/modules/resources/Resources.tsx index 114a3eb9d083f..f38ffa16588b8 100644 --- a/site/src/modules/resources/Resources.tsx +++ b/site/src/modules/resources/Resources.tsx @@ -1,5 +1,5 @@ -import Button from "@mui/material/Button"; import { type Interpolation, type Theme, useTheme } from "@emotion/react"; +import Button from "@mui/material/Button"; import { type FC, useState } from "react"; import type { WorkspaceAgent, WorkspaceResource } from "api/typesGenerated"; import { DropdownArrow } from "components/DropdownArrow/DropdownArrow"; diff --git a/site/src/modules/resources/SSHButton/SSHButton.stories.tsx b/site/src/modules/resources/SSHButton/SSHButton.stories.tsx index 7bc5f2a396878..a27e5102746ca 100644 --- a/site/src/modules/resources/SSHButton/SSHButton.stories.tsx +++ b/site/src/modules/resources/SSHButton/SSHButton.stories.tsx @@ -1,6 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockWorkspace, MockWorkspaceAgent } from "testHelpers/entities"; import { SSHButton } from "./SSHButton"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "modules/resources/SSHButton", diff --git a/site/src/modules/resources/SSHButton/SSHButton.tsx b/site/src/modules/resources/SSHButton/SSHButton.tsx index d4f8f374f8aba..045f6d414ae17 100644 --- a/site/src/modules/resources/SSHButton/SSHButton.tsx +++ b/site/src/modules/resources/SSHButton/SSHButton.tsx @@ -1,21 +1,21 @@ import { type Interpolation, type Theme } from "@emotion/react"; +import KeyboardArrowDown from "@mui/icons-material/KeyboardArrowDown"; +import Button from "@mui/material/Button"; import { type FC } from "react"; +import { CodeExample } from "components/CodeExample/CodeExample"; import { HelpTooltipLink, HelpTooltipLinksGroup, HelpTooltipText, } from "components/HelpTooltip/HelpTooltip"; -import { docs } from "utils/docs"; -import { type ClassName, useClassName } from "hooks/useClassName"; -import { CodeExample } from "components/CodeExample/CodeExample"; import { Popover, PopoverContent, PopoverTrigger, } from "components/Popover/Popover"; import { Stack } from "components/Stack/Stack"; -import Button from "@mui/material/Button"; -import KeyboardArrowDown from "@mui/icons-material/KeyboardArrowDown"; +import { type ClassName, useClassName } from "hooks/useClassName"; +import { docs } from "utils/docs"; export interface SSHButtonProps { workspaceName: string; diff --git a/site/src/modules/resources/SensitiveValue.tsx b/site/src/modules/resources/SensitiveValue.tsx index 738b9a437ae72..3866fae958e35 100644 --- a/site/src/modules/resources/SensitiveValue.tsx +++ b/site/src/modules/resources/SensitiveValue.tsx @@ -1,9 +1,9 @@ -import IconButton from "@mui/material/IconButton"; -import Tooltip from "@mui/material/Tooltip"; +import { css, type Interpolation, type Theme } from "@emotion/react"; import VisibilityOffOutlined from "@mui/icons-material/VisibilityOffOutlined"; import VisibilityOutlined from "@mui/icons-material/VisibilityOutlined"; +import IconButton from "@mui/material/IconButton"; +import Tooltip from "@mui/material/Tooltip"; import { type FC, useState } from "react"; -import { css, type Interpolation, type Theme } from "@emotion/react"; import { CopyableValue } from "components/CopyableValue/CopyableValue"; const Language = { diff --git a/site/src/modules/resources/TerminalLink/TerminalLink.stories.tsx b/site/src/modules/resources/TerminalLink/TerminalLink.stories.tsx index 48a4d46d90132..9562b479d7a17 100644 --- a/site/src/modules/resources/TerminalLink/TerminalLink.stories.tsx +++ b/site/src/modules/resources/TerminalLink/TerminalLink.stories.tsx @@ -1,6 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockWorkspace } from "testHelpers/entities"; import { TerminalLink } from "./TerminalLink"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "modules/resources/TerminalLink", diff --git a/site/src/modules/resources/TerminalLink/TerminalLink.tsx b/site/src/modules/resources/TerminalLink/TerminalLink.tsx index 13bfb5b9381dd..0e33241b2c19f 100644 --- a/site/src/modules/resources/TerminalLink/TerminalLink.tsx +++ b/site/src/modules/resources/TerminalLink/TerminalLink.tsx @@ -3,8 +3,8 @@ import { type FC } from "react"; import type * as TypesGen from "api/typesGenerated"; import { TerminalIcon } from "components/Icons/TerminalIcon"; import { generateRandomString } from "utils/random"; -import { DisplayAppNameMap } from "../AppLink/AppLink"; import { AgentButton } from "../AgentButton"; +import { DisplayAppNameMap } from "../AppLink/AppLink"; export const Language = { terminalTitle: (identifier: string): string => `Terminal - ${identifier}`, diff --git a/site/src/modules/resources/VSCodeDesktopButton/VSCodeDesktopButton.stories.tsx b/site/src/modules/resources/VSCodeDesktopButton/VSCodeDesktopButton.stories.tsx index aef3c3933fbf8..0822288de00aa 100644 --- a/site/src/modules/resources/VSCodeDesktopButton/VSCodeDesktopButton.stories.tsx +++ b/site/src/modules/resources/VSCodeDesktopButton/VSCodeDesktopButton.stories.tsx @@ -1,6 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockWorkspace, MockWorkspaceAgent } from "testHelpers/entities"; import { VSCodeDesktopButton } from "./VSCodeDesktopButton"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "modules/resources/VSCodeDesktopButton", diff --git a/site/src/modules/resources/XRayScanAlert.tsx b/site/src/modules/resources/XRayScanAlert.tsx index de8117be5ce21..276b961e88017 100644 --- a/site/src/modules/resources/XRayScanAlert.tsx +++ b/site/src/modules/resources/XRayScanAlert.tsx @@ -1,5 +1,5 @@ -import Button from "@mui/material/Button"; import { type Interpolation, type Theme } from "@emotion/react"; +import Button from "@mui/material/Button"; import { type FC } from "react"; import type { JFrogXrayScan } from "api/typesGenerated"; import { ExternalImage } from "components/ExternalImage/ExternalImage"; diff --git a/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.tsx b/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.tsx index 80a274adceae6..e6aa299a437b9 100644 --- a/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.tsx +++ b/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.tsx @@ -1,11 +1,11 @@ import { type Interpolation, type Theme } from "@emotion/react"; import Button from "@mui/material/Button"; import Link from "@mui/material/Link"; +import { type FC, type HTMLAttributes } from "react"; +import { Link as RouterLink } from "react-router-dom"; import type { TemplateExample } from "api/typesGenerated"; import { ExternalImage } from "components/ExternalImage/ExternalImage"; import { Pill } from "components/Pill/Pill"; -import { type FC, type HTMLAttributes } from "react"; -import { Link as RouterLink } from "react-router-dom"; type TemplateExampleCardProps = HTMLAttributes & { example: TemplateExample; diff --git a/site/src/modules/templates/TemplateFiles/TemplateFileTree.stories.tsx b/site/src/modules/templates/TemplateFiles/TemplateFileTree.stories.tsx index a1b805681d72c..1950c0198cdca 100644 --- a/site/src/modules/templates/TemplateFiles/TemplateFileTree.stories.tsx +++ b/site/src/modules/templates/TemplateFiles/TemplateFileTree.stories.tsx @@ -1,8 +1,8 @@ +import { useTheme } from "@emotion/react"; import type { Meta, StoryObj } from "@storybook/react"; import { chromatic } from "testHelpers/chromatic"; +import type { FileTree } from "utils/filetree"; import { TemplateFileTree } from "./TemplateFileTree"; -import { FileTree } from "utils/filetree"; -import { useTheme } from "@emotion/react"; const fileTree: FileTree = { "main.tf": "resource aws_instance my_instance {}", diff --git a/site/src/modules/templates/TemplateFiles/TemplateFileTree.tsx b/site/src/modules/templates/TemplateFiles/TemplateFileTree.tsx index 0c7b83e09390a..a0e3abf1499a1 100644 --- a/site/src/modules/templates/TemplateFiles/TemplateFileTree.tsx +++ b/site/src/modules/templates/TemplateFiles/TemplateFileTree.tsx @@ -1,14 +1,14 @@ +import { css } from "@emotion/react"; import ChevronRightIcon from "@mui/icons-material/ChevronRight"; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; -import TreeView from "@mui/lab/TreeView"; +import FormatAlignLeftOutlined from "@mui/icons-material/FormatAlignLeftOutlined"; import TreeItem from "@mui/lab/TreeItem"; +import TreeView from "@mui/lab/TreeView"; import Menu from "@mui/material/Menu"; import MenuItem from "@mui/material/MenuItem"; import { type CSSProperties, type FC, useState } from "react"; -import { css } from "@emotion/react"; -import { FileTree } from "utils/filetree"; import { DockerIcon } from "components/Icons/DockerIcon"; -import FormatAlignLeftOutlined from "@mui/icons-material/FormatAlignLeftOutlined"; +import type { FileTree } from "utils/filetree"; const sortFileTree = (fileTree: FileTree) => (a: string, b: string) => { const contentA = fileTree[a]; diff --git a/site/src/modules/templates/TemplateFiles/TemplateFiles.tsx b/site/src/modules/templates/TemplateFiles/TemplateFiles.tsx index a46aef5bd76b3..8e26bd970cd2e 100644 --- a/site/src/modules/templates/TemplateFiles/TemplateFiles.tsx +++ b/site/src/modules/templates/TemplateFiles/TemplateFiles.tsx @@ -1,13 +1,13 @@ import { useTheme, type Interpolation, type Theme } from "@emotion/react"; -import { useMemo, type FC, useCallback } from "react"; -import { SyntaxHighlighter } from "components/SyntaxHighlighter/SyntaxHighlighter"; -import { TemplateVersionFiles } from "utils/templateVersion"; +import EditOutlined from "@mui/icons-material/EditOutlined"; import RadioButtonCheckedOutlined from "@mui/icons-material/RadioButtonCheckedOutlined"; -import { FileTree } from "utils/filetree"; import set from "lodash/fp/set"; -import { TemplateFileTree } from "./TemplateFileTree"; +import { useMemo, type FC, useCallback } from "react"; import { Link } from "react-router-dom"; -import EditOutlined from "@mui/icons-material/EditOutlined"; +import { SyntaxHighlighter } from "components/SyntaxHighlighter/SyntaxHighlighter"; +import type { FileTree } from "utils/filetree"; +import type { TemplateVersionFiles } from "utils/templateVersion"; +import { TemplateFileTree } from "./TemplateFileTree"; interface TemplateFilesProps { currentFiles: TemplateVersionFiles; diff --git a/site/src/modules/templates/TemplateScheduleAutostart/TemplateScheduleAutostart.tsx b/site/src/modules/templates/TemplateScheduleAutostart/TemplateScheduleAutostart.tsx index 21681dafdd56d..29e273aed4646 100644 --- a/site/src/modules/templates/TemplateScheduleAutostart/TemplateScheduleAutostart.tsx +++ b/site/src/modules/templates/TemplateScheduleAutostart/TemplateScheduleAutostart.tsx @@ -1,8 +1,8 @@ -import { type FC } from "react"; -import { TemplateAutostartRequirementDaysValue } from "utils/schedule"; import Button from "@mui/material/Button"; -import { Stack } from "components/Stack/Stack"; import FormHelperText from "@mui/material/FormHelperText"; +import { type FC } from "react"; +import { Stack } from "components/Stack/Stack"; +import type { TemplateAutostartRequirementDaysValue } from "utils/schedule"; export interface TemplateScheduleAutostartProps { allow_user_autostart?: boolean; diff --git a/site/src/modules/templates/useWatchVersionLogs.ts b/site/src/modules/templates/useWatchVersionLogs.ts index 62ac4a3a16412..ff856171d1a2b 100644 --- a/site/src/modules/templates/useWatchVersionLogs.ts +++ b/site/src/modules/templates/useWatchVersionLogs.ts @@ -1,6 +1,6 @@ -import { watchBuildLogsByTemplateVersionId } from "api/api"; -import { ProvisionerJobLog, TemplateVersion } from "api/typesGenerated"; import { useState, useEffect } from "react"; +import { watchBuildLogsByTemplateVersionId } from "api/api"; +import type { ProvisionerJobLog, TemplateVersion } from "api/typesGenerated"; export const useWatchVersionLogs = ( templateVersion: TemplateVersion | undefined, diff --git a/site/src/modules/workspaces/WorkspaceBuild/WorkspaceBuildData.tsx b/site/src/modules/workspaces/WorkspaceBuild/WorkspaceBuildData.tsx index 2b165cd956636..b418400e67ec2 100644 --- a/site/src/modules/workspaces/WorkspaceBuild/WorkspaceBuildData.tsx +++ b/site/src/modules/workspaces/WorkspaceBuild/WorkspaceBuildData.tsx @@ -1,6 +1,7 @@ -import { Interpolation, Theme, useTheme } from "@emotion/react"; +import type { Interpolation, Theme} from "@emotion/react"; +import { useTheme } from "@emotion/react"; import Skeleton from "@mui/material/Skeleton"; -import { WorkspaceBuild } from "api/typesGenerated"; +import type { WorkspaceBuild } from "api/typesGenerated"; import { BuildIcon } from "components/BuildIcon/BuildIcon"; import { createDayString } from "utils/createDayString"; import { diff --git a/site/src/modules/workspaces/WorkspaceBuildLogs/Logs.tsx b/site/src/modules/workspaces/WorkspaceBuildLogs/Logs.tsx index cf189dd8d965b..a88a1f6143dc8 100644 --- a/site/src/modules/workspaces/WorkspaceBuildLogs/Logs.tsx +++ b/site/src/modules/workspaces/WorkspaceBuildLogs/Logs.tsx @@ -1,8 +1,8 @@ import { type Interpolation, type Theme } from "@emotion/react"; -import type { LogLevel } from "api/typesGenerated"; +import AnsiToHTML from "ansi-to-html"; import dayjs from "dayjs"; import { type FC, type ReactNode, useMemo } from "react"; -import AnsiToHTML from "ansi-to-html"; +import type { LogLevel } from "api/typesGenerated"; import { MONOSPACE_FONT_FAMILY } from "theme/constants"; export const DEFAULT_LOG_LINE_SIDE_PADDING = 24; diff --git a/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx b/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx index 3e9490ba1cbd1..647500e92059c 100644 --- a/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx +++ b/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx @@ -1,9 +1,9 @@ +import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import dayjs from "dayjs"; import { type FC, Fragment, type HTMLAttributes } from "react"; import type { ProvisionerJobLog } from "api/typesGenerated"; import { BODY_FONT_FAMILY, MONOSPACE_FONT_FAMILY } from "theme/constants"; import { DEFAULT_LOG_LINE_SIDE_PADDING, Logs } from "./Logs"; -import { type Interpolation, type Theme, useTheme } from "@emotion/react"; const Language = { seconds: "seconds", diff --git a/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx b/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx index 2f2d87ecd0822..bd9d201cc1524 100644 --- a/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx +++ b/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx @@ -1,10 +1,10 @@ -import RefreshIcon from "@mui/icons-material/Refresh"; +import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import InfoIcon from "@mui/icons-material/InfoOutlined"; -import Skeleton from "@mui/material/Skeleton"; +import RefreshIcon from "@mui/icons-material/Refresh"; import Link from "@mui/material/Link"; +import Skeleton from "@mui/material/Skeleton"; import { type FC } from "react"; import { useQuery } from "react-query"; -import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import { templateVersion } from "api/queries/templates"; import { HelpTooltip, diff --git a/site/src/modules/workspaces/WorkspaceStatusBadge/DormantDeletionText.tsx b/site/src/modules/workspaces/WorkspaceStatusBadge/DormantDeletionText.tsx index 3d5e5a3ed5bd4..2e45892506548 100644 --- a/site/src/modules/workspaces/WorkspaceStatusBadge/DormantDeletionText.tsx +++ b/site/src/modules/workspaces/WorkspaceStatusBadge/DormantDeletionText.tsx @@ -1,7 +1,7 @@ import { type FC } from "react"; import type { Workspace } from "api/typesGenerated"; -import { displayDormantDeletion } from "utils/dormant"; import { useDashboard } from "modules/dashboard/useDashboard"; +import { displayDormantDeletion } from "utils/dormant"; interface DormantDeletionTextProps { workspace: Workspace; diff --git a/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.stories.tsx b/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.stories.tsx index d41703505b93d..572ac83aae577 100644 --- a/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.stories.tsx @@ -1,3 +1,5 @@ +import type { Meta, StoryObj } from "@storybook/react"; +import { DashboardContext } from "modules/dashboard/DashboardProvider"; import { MockCanceledWorkspace, MockCancelingWorkspace, @@ -15,8 +17,6 @@ import { MockAppearanceConfig, } from "testHelpers/entities"; import { WorkspaceStatusBadge } from "./WorkspaceStatusBadge"; -import { DashboardContext } from "modules/dashboard/DashboardProvider"; -import type { Meta, StoryObj } from "@storybook/react"; const MockedAppearance = { config: MockAppearanceConfig, diff --git a/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.tsx b/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.tsx index ad3f1d06496bb..e7743cb9e8340 100644 --- a/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.tsx +++ b/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.tsx @@ -1,18 +1,18 @@ +import AutoDeleteIcon from "@mui/icons-material/AutoDelete"; +import ErrorOutline from "@mui/icons-material/ErrorOutline"; +import RecyclingIcon from "@mui/icons-material/Recycling"; import Tooltip, { type TooltipProps, tooltipClasses, } from "@mui/material/Tooltip"; -import ErrorOutline from "@mui/icons-material/ErrorOutline"; -import RecyclingIcon from "@mui/icons-material/Recycling"; -import AutoDeleteIcon from "@mui/icons-material/AutoDelete"; +import { formatDistanceToNow } from "date-fns"; import { type FC, type ReactNode } from "react"; import type { Workspace } from "api/typesGenerated"; -import { Pill } from "components/Pill/Pill"; import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; -import { DormantDeletionText } from "./DormantDeletionText"; -import { getDisplayWorkspaceStatus } from "utils/workspace"; +import { Pill } from "components/Pill/Pill"; import { useClassName } from "hooks/useClassName"; -import { formatDistanceToNow } from "date-fns"; +import { getDisplayWorkspaceStatus } from "utils/workspace"; +import { DormantDeletionText } from "./DormantDeletionText"; export type WorkspaceStatusBadgeProps = { workspace: Workspace; diff --git a/site/src/pages/AuditPage/AuditFilter.tsx b/site/src/pages/AuditPage/AuditFilter.tsx index e0e73ff99727f..b07e92899f4b2 100644 --- a/site/src/pages/AuditPage/AuditFilter.tsx +++ b/site/src/pages/AuditPage/AuditFilter.tsx @@ -1,17 +1,20 @@ import capitalize from "lodash/capitalize"; import { type FC } from "react"; import { AuditActions, ResourceTypes } from "api/typesGenerated"; -import { UserFilterMenu, UserMenu } from "components/Filter/UserFilter"; +import type { + useFilter} from "components/Filter/filter"; import { Filter, FilterMenu, MenuSkeleton, OptionItem, - SearchFieldSkeleton, - useFilter, + SearchFieldSkeleton } from "components/Filter/filter"; -import { UseFilterMenuOptions, useFilterMenu } from "components/Filter/menu"; -import { BaseOption } from "components/Filter/options"; +import type { UseFilterMenuOptions} from "components/Filter/menu"; +import { useFilterMenu } from "components/Filter/menu"; +import type { BaseOption } from "components/Filter/options"; +import type { UserFilterMenu} from "components/Filter/UserFilter"; +import { UserMenu } from "components/Filter/UserFilter"; import { docs } from "utils/docs"; const PRESET_FILTERS = [ diff --git a/site/src/pages/AuditPage/AuditHelpTooltip.tsx b/site/src/pages/AuditPage/AuditHelpTooltip.tsx index 7118bdd2390d6..a871a4208b6f0 100644 --- a/site/src/pages/AuditPage/AuditHelpTooltip.tsx +++ b/site/src/pages/AuditPage/AuditHelpTooltip.tsx @@ -1,4 +1,4 @@ -import { FC } from "react"; +import type { FC } from "react"; import { HelpTooltip, HelpTooltipContent, diff --git a/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.stories.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.stories.tsx index ae84490d48e90..956ef1df1d903 100644 --- a/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.stories.tsx +++ b/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.stories.tsx @@ -1,5 +1,4 @@ import type { Meta, StoryObj } from "@storybook/react"; -import { AuditLogDescription } from "./AuditLogDescription"; import { MockAuditLog, MockAuditLogSuccessfulLogin, @@ -7,6 +6,7 @@ import { MockAuditLogWithWorkspaceBuild, MockWorkspaceCreateAuditLogForDifferentOwner, } from "testHelpers/entities"; +import { AuditLogDescription } from "./AuditLogDescription"; const meta: Meta = { title: "pages/AuditPage/AuditLogDescription", diff --git a/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.tsx index 9e59cceb4e3df..704cc2892fdf3 100644 --- a/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.tsx +++ b/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.tsx @@ -1,7 +1,7 @@ +import Link from "@mui/material/Link"; import { type FC } from "react"; -import { AuditLog } from "api/typesGenerated"; import { Link as RouterLink } from "react-router-dom"; -import Link from "@mui/material/Link"; +import type { AuditLog } from "api/typesGenerated"; import { BuildAuditDescription } from "./BuildAuditDescription"; interface AuditLogDescriptionProps { diff --git a/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/BuildAuditDescription.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/BuildAuditDescription.tsx index 9be162db6defe..36b09b1ffbf7b 100644 --- a/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/BuildAuditDescription.tsx +++ b/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/BuildAuditDescription.tsx @@ -1,7 +1,7 @@ -import type { AuditLog } from "api/typesGenerated"; +import Link from "@mui/material/Link"; import { type FC, useMemo } from "react"; import { Link as RouterLink } from "react-router-dom"; -import Link from "@mui/material/Link"; +import type { AuditLog } from "api/typesGenerated"; interface BuildAuditDescriptionProps { auditLog: AuditLog; diff --git a/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx index b72420c2c9d03..2f888de37b043 100644 --- a/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx +++ b/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx @@ -1,8 +1,8 @@ import { type Interpolation, type Theme } from "@emotion/react"; import { type FC } from "react"; import type { AuditDiff } from "api/typesGenerated"; -import colors from "theme/tailwindColors"; import { MONOSPACE_FONT_FAMILY } from "theme/constants"; +import colors from "theme/tailwindColors"; const getDiffValue = (value: unknown): string => { if (typeof value === "string") { diff --git a/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/auditUtils.ts b/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/auditUtils.ts index ed3cd917ca3d5..6b6ead3cb76c7 100644 --- a/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/auditUtils.ts +++ b/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/auditUtils.ts @@ -1,4 +1,4 @@ -import { AuditDiff } from "api/typesGenerated"; +import type { AuditDiff } from "api/typesGenerated"; interface GroupMember { user_id: string; diff --git a/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.tsx index 23724c06bc2a0..00c6f23af9a37 100644 --- a/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.tsx +++ b/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.tsx @@ -4,14 +4,14 @@ import TableCell from "@mui/material/TableCell"; import { type FC, useState } from "react"; import userAgentParser from "ua-parser-js"; import type { AuditLog } from "api/typesGenerated"; -import { type ThemeRole } from "theme/roles"; import { DropdownArrow } from "components/DropdownArrow/DropdownArrow"; import { Pill } from "components/Pill/Pill"; import { Stack } from "components/Stack/Stack"; import { TimelineEntry } from "components/Timeline/TimelineEntry"; import { UserAvatar } from "components/UserAvatar/UserAvatar"; -import { AuditLogDiff } from "./AuditLogDiff/AuditLogDiff"; +import { type ThemeRole } from "theme/roles"; import { AuditLogDescription } from "./AuditLogDescription/AuditLogDescription"; +import { AuditLogDiff } from "./AuditLogDiff/AuditLogDiff"; import { determineGroupDiff } from "./AuditLogDiff/auditUtils"; const httpStatusColor = (httpStatus: number): ThemeRole => { diff --git a/site/src/pages/AuditPage/AuditPage.test.tsx b/site/src/pages/AuditPage/AuditPage.test.tsx index 8be345bba6031..ae7a8a1d93ec3 100644 --- a/site/src/pages/AuditPage/AuditPage.test.tsx +++ b/site/src/pages/AuditPage/AuditPage.test.tsx @@ -1,7 +1,8 @@ import { screen, waitFor } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; -import * as API from "api/api"; import { rest } from "msw"; +import * as API from "api/api"; +import { DEFAULT_RECORDS_PER_PAGE } from "components/PaginationWidget/utils"; import { MockAuditLog, MockAuditLog2, @@ -12,10 +13,8 @@ import { waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; - import * as CreateDayString from "utils/createDayString"; import AuditPage from "./AuditPage"; -import { DEFAULT_RECORDS_PER_PAGE } from "components/PaginationWidget/utils"; interface RenderPageOptions { filter?: string; diff --git a/site/src/pages/AuditPage/AuditPage.tsx b/site/src/pages/AuditPage/AuditPage.tsx index f9785379f4451..3af6808f6faa4 100644 --- a/site/src/pages/AuditPage/AuditPage.tsx +++ b/site/src/pages/AuditPage/AuditPage.tsx @@ -1,13 +1,13 @@ import { type FC } from "react"; import { Helmet } from "react-helmet-async"; import { useSearchParams } from "react-router-dom"; -import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; -import { pageTitle } from "utils/page"; import { paginatedAudits } from "api/queries/audits"; -import { usePaginatedQuery } from "hooks/usePaginatedQuery"; +import { useFilter } from "components/Filter/filter"; import { useUserFilterMenu } from "components/Filter/UserFilter"; import { isNonInitialPage } from "components/PaginationWidget/utils"; -import { useFilter } from "components/Filter/filter"; +import { usePaginatedQuery } from "hooks/usePaginatedQuery"; +import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; +import { pageTitle } from "utils/page"; import { useActionFilterMenu, useResourceTypeFilterMenu } from "./AuditFilter"; import { AuditPageView } from "./AuditPageView"; diff --git a/site/src/pages/AuditPage/AuditPageView.stories.tsx b/site/src/pages/AuditPage/AuditPageView.stories.tsx index 69aa64977e92a..a988d3b4b607e 100644 --- a/site/src/pages/AuditPage/AuditPageView.stories.tsx +++ b/site/src/pages/AuditPage/AuditPageView.stories.tsx @@ -1,18 +1,18 @@ -import { Meta, StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; import { type ComponentProps } from "react"; -import { chromaticWithTablet } from "testHelpers/chromatic"; -import { MockAuditLog, MockAuditLog2, MockUser } from "testHelpers/entities"; +import { + MockMenu, + getDefaultFilterProps, +} from "components/Filter/storyHelpers"; import { mockInitialRenderResult, mockSuccessResult, } from "components/PaginationWidget/PaginationContainer.mocks"; import { type UsePaginatedQueryResult } from "hooks/usePaginatedQuery"; +import { chromaticWithTablet } from "testHelpers/chromatic"; +import { MockAuditLog, MockAuditLog2, MockUser } from "testHelpers/entities"; import { AuditPageView } from "./AuditPageView"; -import { - MockMenu, - getDefaultFilterProps, -} from "components/Filter/storyHelpers"; type FilterProps = ComponentProps["filterProps"]; diff --git a/site/src/pages/AuditPage/AuditPageView.tsx b/site/src/pages/AuditPage/AuditPageView.tsx index 84cabc9d36944..dda2c50400a09 100644 --- a/site/src/pages/AuditPage/AuditPageView.tsx +++ b/site/src/pages/AuditPage/AuditPageView.tsx @@ -13,17 +13,17 @@ import { PageHeaderSubtitle, PageHeaderTitle, } from "components/PageHeader/PageHeader"; -import { Stack } from "components/Stack/Stack"; -import { TableLoader } from "components/TableLoader/TableLoader"; -import { Timeline } from "components/Timeline/Timeline"; -import { Paywall } from "components/Paywall/Paywall"; import { type PaginationResult, PaginationContainer, } from "components/PaginationWidget/PaginationContainer"; +import { Paywall } from "components/Paywall/Paywall"; +import { Stack } from "components/Stack/Stack"; +import { TableLoader } from "components/TableLoader/TableLoader"; +import { Timeline } from "components/Timeline/Timeline"; import { docs } from "utils/docs"; -import { AuditHelpTooltip } from "./AuditHelpTooltip"; import { AuditFilter } from "./AuditFilter"; +import { AuditHelpTooltip } from "./AuditHelpTooltip"; import { AuditLogRow } from "./AuditLogRow/AuditLogRow"; export const Language = { diff --git a/site/src/pages/CliAuthPage/CliAuthPage.tsx b/site/src/pages/CliAuthPage/CliAuthPage.tsx index 381ff88507cd8..662348c16784c 100644 --- a/site/src/pages/CliAuthPage/CliAuthPage.tsx +++ b/site/src/pages/CliAuthPage/CliAuthPage.tsx @@ -1,9 +1,9 @@ import { type FC } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; +import { apiKey } from "api/queries/users"; import { pageTitle } from "utils/page"; import { CliAuthPageView } from "./CliAuthPageView"; -import { apiKey } from "api/queries/users"; export const CliAuthenticationPage: FC = () => { const { data } = useQuery(apiKey()); diff --git a/site/src/pages/CliAuthPage/CliAuthPageView.stories.tsx b/site/src/pages/CliAuthPage/CliAuthPageView.stories.tsx index 0108db8907754..9f08ad1cd3295 100644 --- a/site/src/pages/CliAuthPage/CliAuthPageView.stories.tsx +++ b/site/src/pages/CliAuthPage/CliAuthPageView.stories.tsx @@ -1,5 +1,5 @@ -import { CliAuthPageView } from "./CliAuthPageView"; import type { Meta, StoryObj } from "@storybook/react"; +import { CliAuthPageView } from "./CliAuthPageView"; const meta: Meta = { title: "pages/CliAuthPage", diff --git a/site/src/pages/CliAuthPage/CliAuthPageView.tsx b/site/src/pages/CliAuthPage/CliAuthPageView.tsx index cdcbeabdaa78c..413652e49ac7a 100644 --- a/site/src/pages/CliAuthPage/CliAuthPageView.tsx +++ b/site/src/pages/CliAuthPage/CliAuthPageView.tsx @@ -1,11 +1,11 @@ import { type Interpolation, type Theme } from "@emotion/react"; +import { visuallyHidden } from "@mui/utils"; import { type FC } from "react"; import { Link as RouterLink } from "react-router-dom"; import { CodeExample } from "components/CodeExample/CodeExample"; +import { FullScreenLoader } from "components/Loader/FullScreenLoader"; import { SignInLayout } from "components/SignInLayout/SignInLayout"; import { Welcome } from "components/Welcome/Welcome"; -import { FullScreenLoader } from "components/Loader/FullScreenLoader"; -import { visuallyHidden } from "@mui/utils"; export interface CliAuthPageViewProps { sessionToken?: string; diff --git a/site/src/pages/CreateTemplatePage/BuildLogsDrawer.stories.tsx b/site/src/pages/CreateTemplatePage/BuildLogsDrawer.stories.tsx index 8ecd2fe712b6a..c2414cfcd3069 100644 --- a/site/src/pages/CreateTemplatePage/BuildLogsDrawer.stories.tsx +++ b/site/src/pages/CreateTemplatePage/BuildLogsDrawer.stories.tsx @@ -1,12 +1,12 @@ -import { JobError } from "api/queries/templates"; -import { BuildLogsDrawer } from "./BuildLogsDrawer"; import type { Meta, StoryObj } from "@storybook/react"; +import { JobError } from "api/queries/templates"; import { MockProvisionerJob, MockTemplateVersion, MockWorkspaceBuildLogs, } from "testHelpers/entities"; import { withWebSocket } from "testHelpers/storybook"; +import { BuildLogsDrawer } from "./BuildLogsDrawer"; const meta: Meta = { title: "pages/CreateTemplatePage/BuildLogsDrawer", diff --git a/site/src/pages/CreateTemplatePage/BuildLogsDrawer.tsx b/site/src/pages/CreateTemplatePage/BuildLogsDrawer.tsx index 19a5fe572fddc..e9a175c61482e 100644 --- a/site/src/pages/CreateTemplatePage/BuildLogsDrawer.tsx +++ b/site/src/pages/CreateTemplatePage/BuildLogsDrawer.tsx @@ -1,17 +1,18 @@ -import Drawer from "@mui/material/Drawer"; +import type { Interpolation, Theme } from "@emotion/react"; import Close from "@mui/icons-material/Close"; +import WarningOutlined from "@mui/icons-material/WarningOutlined"; +import Button from "@mui/material/Button"; +import Drawer from "@mui/material/Drawer"; import IconButton from "@mui/material/IconButton"; import { visuallyHidden } from "@mui/utils"; -import { FC, useLayoutEffect, useRef } from "react"; -import { TemplateVersion } from "api/typesGenerated"; -import { WorkspaceBuildLogs } from "modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; -import { Interpolation, Theme } from "@emotion/react"; -import { navHeight } from "theme/constants"; -import { useWatchVersionLogs } from "modules/templates/useWatchVersionLogs"; +import type { FC} from "react"; +import { useLayoutEffect, useRef } from "react"; import { JobError } from "api/queries/templates"; -import Button from "@mui/material/Button"; +import type { TemplateVersion } from "api/typesGenerated"; import { Loader } from "components/Loader/Loader"; -import WarningOutlined from "@mui/icons-material/WarningOutlined"; +import { useWatchVersionLogs } from "modules/templates/useWatchVersionLogs"; +import { WorkspaceBuildLogs } from "modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; +import { navHeight } from "theme/constants"; type BuildLogsDrawerProps = { error: unknown; diff --git a/site/src/pages/CreateTemplatePage/CreateTemplateForm.stories.tsx b/site/src/pages/CreateTemplatePage/CreateTemplateForm.stories.tsx index 583a3e8cc4172..e79da49a5337e 100644 --- a/site/src/pages/CreateTemplatePage/CreateTemplateForm.stories.tsx +++ b/site/src/pages/CreateTemplatePage/CreateTemplateForm.stories.tsx @@ -1,3 +1,4 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockTemplate, MockTemplateExample, @@ -8,7 +9,6 @@ import { MockTemplateVersionVariable5, } from "testHelpers/entities"; import { CreateTemplateForm } from "./CreateTemplateForm"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/CreateTemplatePage/CreateTemplateForm", diff --git a/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx b/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx index b4e5677525488..29e8ccd30fd18 100644 --- a/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx +++ b/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx @@ -1,8 +1,8 @@ import TextField from "@mui/material/TextField"; import { useFormik } from "formik"; -import { type FC } from "react"; import camelCase from "lodash/camelCase"; import capitalize from "lodash/capitalize"; +import { type FC } from "react"; import * as Yup from "yup"; import type { ProvisionerJobLog, @@ -11,6 +11,14 @@ import type { TemplateVersionVariable, VariableValue, } from "api/typesGenerated"; +import { + HorizontalForm, + FormSection, + FormFields, + FormFooter, +} from "components/Form/Form"; +import { IconField } from "components/IconField/IconField"; +import { sortedDays } from "modules/templates/TemplateScheduleAutostart/TemplateScheduleAutostart"; import { SelectedTemplate } from "pages/CreateWorkspacePage/SelectedTemplate"; import { nameValidator, @@ -22,14 +30,6 @@ import { type TemplateAutostartRequirementDaysValue, type TemplateAutostopRequirementDaysValue, } from "utils/schedule"; -import { sortedDays } from "modules/templates/TemplateScheduleAutostart/TemplateScheduleAutostart"; -import { IconField } from "components/IconField/IconField"; -import { - HorizontalForm, - FormSection, - FormFields, - FormFooter, -} from "components/Form/Form"; import { TemplateUpload, type TemplateUploadProps } from "./TemplateUpload"; import { VariableInput } from "./VariableInput"; diff --git a/site/src/pages/CreateTemplatePage/CreateTemplatePage.test.tsx b/site/src/pages/CreateTemplatePage/CreateTemplatePage.test.tsx index 19883db6487a5..38eacc38fd30e 100644 --- a/site/src/pages/CreateTemplatePage/CreateTemplatePage.test.tsx +++ b/site/src/pages/CreateTemplatePage/CreateTemplatePage.test.tsx @@ -1,5 +1,3 @@ -import { renderWithAuth } from "testHelpers/renderHelpers"; -import CreateTemplatePage from "./CreateTemplatePage"; import { screen, waitFor, within } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import * as API from "api/api"; @@ -12,6 +10,8 @@ import { MockTemplate, MockOrganization, } from "testHelpers/entities"; +import { renderWithAuth } from "testHelpers/renderHelpers"; +import CreateTemplatePage from "./CreateTemplatePage"; const renderPage = async (searchParams: URLSearchParams) => { // Render with the example ID so we don't need to upload a file diff --git a/site/src/pages/CreateTemplatePage/CreateTemplatePage.tsx b/site/src/pages/CreateTemplatePage/CreateTemplatePage.tsx index 6f260933c1505..e427fa6b32ff8 100644 --- a/site/src/pages/CreateTemplatePage/CreateTemplatePage.tsx +++ b/site/src/pages/CreateTemplatePage/CreateTemplatePage.tsx @@ -1,16 +1,16 @@ import { useState, type FC, useRef } from "react"; import { Helmet } from "react-helmet-async"; +import { useMutation } from "react-query"; import { useNavigate, useSearchParams } from "react-router-dom"; -import { pageTitle } from "utils/page"; +import { createTemplate } from "api/queries/templates"; +import type { TemplateVersion } from "api/typesGenerated"; import { FullPageHorizontalForm } from "components/FullPageForm/FullPageHorizontalForm"; +import { pageTitle } from "utils/page"; +import { BuildLogsDrawer } from "./BuildLogsDrawer"; import { DuplicateTemplateView } from "./DuplicateTemplateView"; import { ImportStarterTemplateView } from "./ImportStarterTemplateView"; +import type { CreateTemplatePageViewProps } from "./types"; import { UploadTemplateView } from "./UploadTemplateView"; -import { BuildLogsDrawer } from "./BuildLogsDrawer"; -import { useMutation } from "react-query"; -import { createTemplate } from "api/queries/templates"; -import { CreateTemplatePageViewProps } from "./types"; -import { TemplateVersion } from "api/typesGenerated"; const CreateTemplatePage: FC = () => { const navigate = useNavigate(); diff --git a/site/src/pages/CreateTemplatePage/DuplicateTemplateView.tsx b/site/src/pages/CreateTemplatePage/DuplicateTemplateView.tsx index 933b2ef36df39..aa2e47cdf902b 100644 --- a/site/src/pages/CreateTemplatePage/DuplicateTemplateView.tsx +++ b/site/src/pages/CreateTemplatePage/DuplicateTemplateView.tsx @@ -8,13 +8,13 @@ import { templateVersionVariables, JobError, } from "api/queries/templates"; -import { useOrganizationId } from "contexts/auth/useOrganizationId"; -import { useDashboard } from "modules/dashboard/useDashboard"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Loader } from "components/Loader/Loader"; +import { useOrganizationId } from "contexts/auth/useOrganizationId"; +import { useDashboard } from "modules/dashboard/useDashboard"; import { CreateTemplateForm } from "./CreateTemplateForm"; +import type { CreateTemplatePageViewProps } from "./types"; import { firstVersionFromFile, getFormPermissions, newTemplate } from "./utils"; -import { CreateTemplatePageViewProps } from "./types"; export const DuplicateTemplateView: FC = ({ onCreateTemplate, diff --git a/site/src/pages/CreateTemplatePage/ImportStarterTemplateView.tsx b/site/src/pages/CreateTemplatePage/ImportStarterTemplateView.tsx index ec3e9c1008d23..9522e2ef7c42c 100644 --- a/site/src/pages/CreateTemplatePage/ImportStarterTemplateView.tsx +++ b/site/src/pages/CreateTemplatePage/ImportStarterTemplateView.tsx @@ -7,17 +7,17 @@ import { templateExamples, templateVersionVariables, } from "api/queries/templates"; -import { useOrganizationId } from "contexts/auth/useOrganizationId"; -import { useDashboard } from "modules/dashboard/useDashboard"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Loader } from "components/Loader/Loader"; +import { useOrganizationId } from "contexts/auth/useOrganizationId"; +import { useDashboard } from "modules/dashboard/useDashboard"; import { CreateTemplateForm } from "./CreateTemplateForm"; +import type { CreateTemplatePageViewProps } from "./types"; import { firstVersionFromExample, getFormPermissions, newTemplate, } from "./utils"; -import { CreateTemplatePageViewProps } from "./types"; export const ImportStarterTemplateView: FC = ({ onCreateTemplate, diff --git a/site/src/pages/CreateTemplatePage/TemplateUpload.tsx b/site/src/pages/CreateTemplatePage/TemplateUpload.tsx index 298f9e50aef9c..139a79774feec 100644 --- a/site/src/pages/CreateTemplatePage/TemplateUpload.tsx +++ b/site/src/pages/CreateTemplatePage/TemplateUpload.tsx @@ -1,7 +1,7 @@ import Link from "@mui/material/Link"; -import { FileUpload } from "components/FileUpload/FileUpload"; -import { FC } from "react"; +import type { FC } from "react"; import { Link as RouterLink } from "react-router-dom"; +import { FileUpload } from "components/FileUpload/FileUpload"; export interface TemplateUploadProps { isUploading: boolean; diff --git a/site/src/pages/CreateTemplatePage/UploadTemplateView.tsx b/site/src/pages/CreateTemplatePage/UploadTemplateView.tsx index da2b737d75a40..d409177a07b0b 100644 --- a/site/src/pages/CreateTemplatePage/UploadTemplateView.tsx +++ b/site/src/pages/CreateTemplatePage/UploadTemplateView.tsx @@ -1,17 +1,17 @@ +import type { FC } from "react"; import { useQuery, useMutation } from "react-query"; import { useNavigate } from "react-router-dom"; +import { uploadFile } from "api/queries/files"; import { templateVersionLogs, JobError, templateVersionVariables, } from "api/queries/templates"; -import { uploadFile } from "api/queries/files"; import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { useDashboard } from "modules/dashboard/useDashboard"; import { CreateTemplateForm } from "./CreateTemplateForm"; +import type { CreateTemplatePageViewProps } from "./types"; import { firstVersionFromFile, getFormPermissions, newTemplate } from "./utils"; -import { FC } from "react"; -import { CreateTemplatePageViewProps } from "./types"; export const UploadTemplateView: FC = ({ onCreateTemplate, diff --git a/site/src/pages/CreateTemplatePage/VariableInput.tsx b/site/src/pages/CreateTemplatePage/VariableInput.tsx index 3a28260c88ab5..7fac814fb4818 100644 --- a/site/src/pages/CreateTemplatePage/VariableInput.tsx +++ b/site/src/pages/CreateTemplatePage/VariableInput.tsx @@ -3,9 +3,9 @@ import FormControlLabel from "@mui/material/FormControlLabel"; import Radio from "@mui/material/Radio"; import RadioGroup from "@mui/material/RadioGroup"; import TextField from "@mui/material/TextField"; -import { Stack } from "components/Stack/Stack"; import { type FC } from "react"; import type { TemplateVersionVariable } from "api/typesGenerated"; +import { Stack } from "components/Stack/Stack"; const isBoolean = (variable: TemplateVersionVariable) => { return variable.type === "bool"; diff --git a/site/src/pages/CreateTemplatePage/types.ts b/site/src/pages/CreateTemplatePage/types.ts index d635d66a31bd1..74bf1399b7b73 100644 --- a/site/src/pages/CreateTemplatePage/types.ts +++ b/site/src/pages/CreateTemplatePage/types.ts @@ -1,4 +1,4 @@ -import { CreateTemplateOptions } from "api/queries/templates"; +import type { CreateTemplateOptions } from "api/queries/templates"; export type CreateTemplatePageViewProps = { onCreateTemplate: (options: CreateTemplateOptions) => Promise; diff --git a/site/src/pages/CreateTemplatePage/utils.ts b/site/src/pages/CreateTemplatePage/utils.ts index b9b9a85bde791..811d9979f2174 100644 --- a/site/src/pages/CreateTemplatePage/utils.ts +++ b/site/src/pages/CreateTemplatePage/utils.ts @@ -1,11 +1,11 @@ -import { +import type { Entitlements, ProvisionerType, TemplateExample, VariableValue, } from "api/typesGenerated"; import { calculateAutostopRequirementDaysValue } from "utils/schedule"; -import { CreateTemplateData } from "./CreateTemplateForm"; +import type { CreateTemplateData } from "./CreateTemplateForm"; const provisioner: ProvisionerType = // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Playwright needs to use a different provisioner type! diff --git a/site/src/pages/CreateTokenPage/CreateTokenForm.tsx b/site/src/pages/CreateTokenPage/CreateTokenForm.tsx index befb3a30327c5..649576e3bc0b4 100644 --- a/site/src/pages/CreateTokenPage/CreateTokenForm.tsx +++ b/site/src/pages/CreateTokenPage/CreateTokenForm.tsx @@ -1,9 +1,9 @@ import { css } from "@emotion/css"; -import { type FC, useState, useEffect } from "react"; -import TextField from "@mui/material/TextField"; import MenuItem from "@mui/material/MenuItem"; -import type { FormikContextType } from "formik"; +import TextField from "@mui/material/TextField"; import dayjs from "dayjs"; +import type { FormikContextType } from "formik"; +import { type FC, useState, useEffect } from "react"; import { useNavigate } from "react-router-dom"; import { FormFields, diff --git a/site/src/pages/CreateTokenPage/CreateTokenPage.test.tsx b/site/src/pages/CreateTokenPage/CreateTokenPage.test.tsx index cb167247818de..f58eed5d1e6b2 100644 --- a/site/src/pages/CreateTokenPage/CreateTokenPage.test.tsx +++ b/site/src/pages/CreateTokenPage/CreateTokenPage.test.tsx @@ -1,11 +1,11 @@ +import { screen, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import * as API from "api/api"; import { renderWithAuth, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; import { CreateTokenPage } from "./CreateTokenPage"; -import * as API from "api/api"; -import { screen, within } from "@testing-library/react"; -import userEvent from "@testing-library/user-event"; describe("TokenPage", () => { it("shows the success modal", async () => { diff --git a/site/src/pages/CreateTokenPage/CreateTokenPage.tsx b/site/src/pages/CreateTokenPage/CreateTokenPage.tsx index e48cba07c55fc..6e5710402af2a 100644 --- a/site/src/pages/CreateTokenPage/CreateTokenPage.tsx +++ b/site/src/pages/CreateTokenPage/CreateTokenPage.tsx @@ -1,18 +1,19 @@ +import { useFormik } from "formik"; import { type FC, useState } from "react"; import { Helmet } from "react-helmet-async"; -import { pageTitle } from "utils/page"; -import { FullPageHorizontalForm } from "components/FullPageForm/FullPageHorizontalForm"; -import { useNavigate } from "react-router-dom"; -import { useFormik } from "formik"; -import { Loader } from "components/Loader/Loader"; -import { displaySuccess, displayError } from "components/GlobalSnackbar/utils"; import { useMutation, useQuery } from "react-query"; +import { useNavigate } from "react-router-dom"; import { createToken, getTokenConfig } from "api/api"; -import { CreateTokenForm } from "./CreateTokenForm"; -import { NANO_HOUR, CreateTokenData } from "./utils"; -import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; -import { CodeExample } from "components/CodeExample/CodeExample"; import { ErrorAlert } from "components/Alert/ErrorAlert"; +import { CodeExample } from "components/CodeExample/CodeExample"; +import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; +import { FullPageHorizontalForm } from "components/FullPageForm/FullPageHorizontalForm"; +import { displaySuccess, displayError } from "components/GlobalSnackbar/utils"; +import { Loader } from "components/Loader/Loader"; +import { pageTitle } from "utils/page"; +import { CreateTokenForm } from "./CreateTokenForm"; +import type { CreateTokenData } from "./utils"; +import { NANO_HOUR } from "./utils"; const initialValues: CreateTokenData = { name: "", diff --git a/site/src/pages/CreateTokenPage/utils.test.tsx b/site/src/pages/CreateTokenPage/utils.test.tsx index edbde7ae95c35..1b001766b88af 100644 --- a/site/src/pages/CreateTokenPage/utils.test.tsx +++ b/site/src/pages/CreateTokenPage/utils.test.tsx @@ -1,8 +1,9 @@ +import type { + LifetimeDay} from "./utils"; import { filterByMaxTokenLifetime, determineDefaultLtValue, lifetimeDayPresets, - LifetimeDay, NANO_HOUR, } from "./utils"; diff --git a/site/src/pages/CreateUserPage/CreateUserForm.stories.tsx b/site/src/pages/CreateUserPage/CreateUserForm.stories.tsx index b4e1a3d535e69..c87b52a030648 100644 --- a/site/src/pages/CreateUserPage/CreateUserForm.stories.tsx +++ b/site/src/pages/CreateUserPage/CreateUserForm.stories.tsx @@ -1,7 +1,7 @@ import { action } from "@storybook/addon-actions"; -import { StoryObj, Meta } from "@storybook/react"; -import { CreateUserForm } from "./CreateUserForm"; +import type { StoryObj, Meta } from "@storybook/react"; import { mockApiError } from "testHelpers/entities"; +import { CreateUserForm } from "./CreateUserForm"; const meta: Meta = { title: "pages/CreateUserPage", diff --git a/site/src/pages/CreateUserPage/CreateUserForm.tsx b/site/src/pages/CreateUserPage/CreateUserForm.tsx index 5a355d031ddb6..43535b8ff1e31 100644 --- a/site/src/pages/CreateUserPage/CreateUserForm.tsx +++ b/site/src/pages/CreateUserPage/CreateUserForm.tsx @@ -1,20 +1,21 @@ -import TextField from "@mui/material/TextField"; -import MenuItem from "@mui/material/MenuItem"; import Link from "@mui/material/Link"; -import { FormikContextType, useFormik } from "formik"; -import { FC } from "react"; +import MenuItem from "@mui/material/MenuItem"; +import TextField from "@mui/material/TextField"; +import type { FormikContextType} from "formik"; +import { useFormik } from "formik"; +import type { FC } from "react"; import * as Yup from "yup"; import { hasApiFieldErrors, isApiError } from "api/errors"; -import * as TypesGen from "api/typesGenerated"; +import type * as TypesGen from "api/typesGenerated"; +import { ErrorAlert } from "components/Alert/ErrorAlert"; +import { FormFooter } from "components/FormFooter/FormFooter"; +import { FullPageForm } from "components/FullPageForm/FullPageForm"; +import { Stack } from "components/Stack/Stack"; import { getFormHelpers, nameValidator, onChangeTrimmed, } from "utils/formUtils"; -import { FormFooter } from "components/FormFooter/FormFooter"; -import { FullPageForm } from "components/FullPageForm/FullPageForm"; -import { Stack } from "components/Stack/Stack"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; export const Language = { emailLabel: "Email", diff --git a/site/src/pages/CreateUserPage/CreateUserPage.test.tsx b/site/src/pages/CreateUserPage/CreateUserPage.test.tsx index 7662fd7c86835..2787b26244bc7 100644 --- a/site/src/pages/CreateUserPage/CreateUserPage.test.tsx +++ b/site/src/pages/CreateUserPage/CreateUserPage.test.tsx @@ -1,11 +1,11 @@ import { fireEvent, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; -import { Language as FormLanguage } from "./CreateUserForm"; import { Language as FooterLanguage } from "components/FormFooter/FormFooter"; import { renderWithAuth, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; +import { Language as FormLanguage } from "./CreateUserForm"; import { CreateUserPage } from "./CreateUserPage"; const renderCreateUserPage = async () => { diff --git a/site/src/pages/CreateUserPage/CreateUserPage.tsx b/site/src/pages/CreateUserPage/CreateUserPage.tsx index 117bbe4c72ea7..2d04095f92452 100644 --- a/site/src/pages/CreateUserPage/CreateUserPage.tsx +++ b/site/src/pages/CreateUserPage/CreateUserPage.tsx @@ -2,11 +2,11 @@ import { type FC } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { useNavigate } from "react-router-dom"; -import { pageTitle } from "utils/page"; import { authMethods, createUser } from "api/queries/users"; -import { useOrganizationId } from "contexts/auth/useOrganizationId"; -import { Margins } from "components/Margins/Margins"; import { displaySuccess } from "components/GlobalSnackbar/utils"; +import { Margins } from "components/Margins/Margins"; +import { useOrganizationId } from "contexts/auth/useOrganizationId"; +import { pageTitle } from "utils/page"; import { CreateUserForm } from "./CreateUserForm"; export const Language = { diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx index 083ad01c7432d..b39227e639b77 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx @@ -20,13 +20,14 @@ import { Loader } from "components/Loader/Loader"; import { useMe } from "contexts/auth/useMe"; import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { useEffectEvent } from "hooks/hookPolyfills"; +import { useDashboard } from "modules/dashboard/useDashboard"; +import { generateWorkspaceName } from "modules/workspaces/generateWorkspaceName"; import { pageTitle } from "utils/page"; -import { AutofillBuildParameter } from "utils/richParameters"; +import type { AutofillBuildParameter } from "utils/richParameters"; import { paramsUsedToCreateWorkspace } from "utils/workspace"; import { CreateWorkspacePageView } from "./CreateWorkspacePageView"; -import { CreateWSPermissions, createWorkspaceChecks } from "./permissions"; -import { generateWorkspaceName } from "modules/workspaces/generateWorkspaceName"; -import { useDashboard } from "modules/dashboard/useDashboard"; +import type { CreateWSPermissions} from "./permissions"; +import { createWorkspaceChecks } from "./permissions"; export const createWorkspaceModes = ["form", "auto", "duplicate"] as const; export type CreateWorkspaceMode = (typeof createWorkspaceModes)[number]; diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx index d83edb55a3e88..c205b82333251 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; import { chromatic } from "testHelpers/chromatic"; import { mockApiError, diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx index 9bff96124662a..1fe3cbb56b5fe 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx @@ -1,35 +1,23 @@ import { type Interpolation, type Theme } from "@emotion/react"; -import TextField from "@mui/material/TextField"; import Button from "@mui/material/Button"; import FormHelperText from "@mui/material/FormHelperText"; -import { FormikContextType, useFormik } from "formik"; +import TextField from "@mui/material/TextField"; +import type { FormikContextType} from "formik"; +import { useFormik } from "formik"; import { type FC, useEffect, useState, useMemo, useCallback } from "react"; import { useSearchParams } from "react-router-dom"; import * as Yup from "yup"; import type * as TypesGen from "api/typesGenerated"; -import { - getFormHelpers, - nameValidator, - onChangeTrimmed, -} from "utils/formUtils"; +import { Alert } from "components/Alert/Alert"; +import { ErrorAlert } from "components/Alert/ErrorAlert"; +import { Avatar } from "components/Avatar/Avatar"; import { FormFields, FormSection, FormFooter, HorizontalForm, } from "components/Form/Form"; -import { UserAutocomplete } from "components/UserAutocomplete/UserAutocomplete"; -import { - type AutofillBuildParameter, - getInitialRichParameterValues, - useValidationSchemaForRichParameters, -} from "utils/richParameters"; -import { ExternalAuthButton } from "./ExternalAuthButton"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; -import { Stack } from "components/Stack/Stack"; -import { Alert } from "components/Alert/Alert"; import { Margins } from "components/Margins/Margins"; -import { Avatar } from "components/Avatar/Avatar"; import { PageHeader, PageHeaderTitle, @@ -37,11 +25,24 @@ import { } from "components/PageHeader/PageHeader"; import { Pill } from "components/Pill/Pill"; import { RichParameterInput } from "components/RichParameterInput/RichParameterInput"; +import { Stack } from "components/Stack/Stack"; +import { UserAutocomplete } from "components/UserAutocomplete/UserAutocomplete"; import { generateWorkspaceName } from "modules/workspaces/generateWorkspaceName"; +import { + getFormHelpers, + nameValidator, + onChangeTrimmed, +} from "utils/formUtils"; +import { + type AutofillBuildParameter, + getInitialRichParameterValues, + useValidationSchemaForRichParameters, +} from "utils/richParameters"; import type { CreateWorkspaceMode, ExternalAuthPollingState, } from "./CreateWorkspacePage"; +import { ExternalAuthButton } from "./ExternalAuthButton"; import type { CreateWSPermissions } from "./permissions"; export const Language = { diff --git a/site/src/pages/CreateWorkspacePage/ExternalAuthButton.stories.tsx b/site/src/pages/CreateWorkspacePage/ExternalAuthButton.stories.tsx index 6fe8457d06b89..a8694af0d2705 100644 --- a/site/src/pages/CreateWorkspacePage/ExternalAuthButton.stories.tsx +++ b/site/src/pages/CreateWorkspacePage/ExternalAuthButton.stories.tsx @@ -1,6 +1,6 @@ -import { TemplateVersionExternalAuth } from "api/typesGenerated"; -import { ExternalAuthButton } from "./ExternalAuthButton"; import type { Meta, StoryObj } from "@storybook/react"; +import type { TemplateVersionExternalAuth } from "api/typesGenerated"; +import { ExternalAuthButton } from "./ExternalAuthButton"; const MockExternalAuth: TemplateVersionExternalAuth = { id: "", diff --git a/site/src/pages/CreateWorkspacePage/ExternalAuthButton.tsx b/site/src/pages/CreateWorkspacePage/ExternalAuthButton.tsx index 331ea0f22f9e4..b7a5d7089b1f0 100644 --- a/site/src/pages/CreateWorkspacePage/ExternalAuthButton.tsx +++ b/site/src/pages/CreateWorkspacePage/ExternalAuthButton.tsx @@ -1,7 +1,7 @@ import ReplayIcon from "@mui/icons-material/Replay"; +import LoadingButton from "@mui/lab/LoadingButton"; import Button from "@mui/material/Button"; import Tooltip from "@mui/material/Tooltip"; -import LoadingButton from "@mui/lab/LoadingButton"; import { visuallyHidden } from "@mui/utils"; import { type FC } from "react"; import type { TemplateVersionExternalAuth } from "api/typesGenerated"; diff --git a/site/src/pages/CreateWorkspacePage/SelectedTemplate.stories.tsx b/site/src/pages/CreateWorkspacePage/SelectedTemplate.stories.tsx index 520088a5b159f..b4d8c5ff5c040 100644 --- a/site/src/pages/CreateWorkspacePage/SelectedTemplate.stories.tsx +++ b/site/src/pages/CreateWorkspacePage/SelectedTemplate.stories.tsx @@ -1,6 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockTemplate } from "testHelpers/entities"; import { SelectedTemplate } from "./SelectedTemplate"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/CreateWorkspacePage/SelectedTemplate", diff --git a/site/src/pages/CreateWorkspacePage/SelectedTemplate.tsx b/site/src/pages/CreateWorkspacePage/SelectedTemplate.tsx index 08bd2b71c576f..245af94e0a2f2 100644 --- a/site/src/pages/CreateWorkspacePage/SelectedTemplate.tsx +++ b/site/src/pages/CreateWorkspacePage/SelectedTemplate.tsx @@ -1,8 +1,8 @@ +import { type Interpolation, type Theme } from "@emotion/react"; import { type FC } from "react"; import type { Template, TemplateExample } from "api/typesGenerated"; import { ExternalAvatar } from "components/Avatar/Avatar"; import { Stack } from "components/Stack/Stack"; -import { type Interpolation, type Theme } from "@emotion/react"; export interface SelectedTemplateProps { template: Template | TemplateExample; diff --git a/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.test.tsx b/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.test.tsx index d4a72e694e03e..feb8a1fdfa408 100644 --- a/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.test.tsx +++ b/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.test.tsx @@ -1,10 +1,10 @@ import { waitFor } from "@testing-library/react"; -import * as M from "../../testHelpers/entities"; import { type Workspace } from "api/typesGenerated"; -import { useWorkspaceDuplication } from "./useWorkspaceDuplication"; import { MockWorkspace } from "testHelpers/entities"; -import CreateWorkspacePage from "./CreateWorkspacePage"; import { renderHookWithAuth } from "testHelpers/renderHelpers"; +import * as M from "../../testHelpers/entities"; +import CreateWorkspacePage from "./CreateWorkspacePage"; +import { useWorkspaceDuplication } from "./useWorkspaceDuplication"; function render(workspace?: Workspace) { return renderHookWithAuth( diff --git a/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.ts b/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.ts index c1777eb3d2b5c..c9321927da740 100644 --- a/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.ts +++ b/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.ts @@ -1,8 +1,8 @@ import { useCallback } from "react"; import { useQuery } from "react-query"; import { useNavigate } from "react-router-dom"; -import type { Workspace, WorkspaceBuildParameter } from "api/typesGenerated"; import { workspaceBuildParameters } from "api/queries/workspaceBuilds"; +import type { Workspace, WorkspaceBuildParameter } from "api/typesGenerated"; import { type CreateWorkspaceMode } from "./CreateWorkspacePage"; function getDuplicationUrlParams( diff --git a/site/src/pages/DeploySettingsPage/AppearanceSettingsPage/AppearanceSettingsPage.tsx b/site/src/pages/DeploySettingsPage/AppearanceSettingsPage/AppearanceSettingsPage.tsx index fe5bd57fc42ca..b3ff13bc35a84 100644 --- a/site/src/pages/DeploySettingsPage/AppearanceSettingsPage/AppearanceSettingsPage.tsx +++ b/site/src/pages/DeploySettingsPage/AppearanceSettingsPage/AppearanceSettingsPage.tsx @@ -1,12 +1,12 @@ import { type FC } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQueryClient } from "react-query"; +import { getErrorMessage } from "api/errors"; +import { updateAppearance } from "api/queries/appearance"; import type { UpdateAppearanceConfig } from "api/typesGenerated"; +import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; import { useDashboard } from "modules/dashboard/useDashboard"; import { pageTitle } from "utils/page"; -import { updateAppearance } from "api/queries/appearance"; -import { getErrorMessage } from "api/errors"; -import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; import { AppearanceSettingsPageView } from "./AppearanceSettingsPageView"; // ServiceBanner is unlike the other Deployment Settings pages because it diff --git a/site/src/pages/DeploySettingsPage/AppearanceSettingsPage/AppearanceSettingsPageView.stories.tsx b/site/src/pages/DeploySettingsPage/AppearanceSettingsPage/AppearanceSettingsPageView.stories.tsx index 92aed8f7d1aa8..60e0581ddc661 100644 --- a/site/src/pages/DeploySettingsPage/AppearanceSettingsPage/AppearanceSettingsPageView.stories.tsx +++ b/site/src/pages/DeploySettingsPage/AppearanceSettingsPage/AppearanceSettingsPageView.stories.tsx @@ -1,5 +1,5 @@ -import { AppearanceSettingsPageView } from "./AppearanceSettingsPageView"; import type { Meta, StoryObj } from "@storybook/react"; +import { AppearanceSettingsPageView } from "./AppearanceSettingsPageView"; const meta: Meta = { title: "pages/DeploySettingsPage/AppearanceSettingsPageView", diff --git a/site/src/pages/DeploySettingsPage/AppearanceSettingsPage/AppearanceSettingsPageView.tsx b/site/src/pages/DeploySettingsPage/AppearanceSettingsPage/AppearanceSettingsPageView.tsx index bcfaee2d1c14e..07203567a0a02 100644 --- a/site/src/pages/DeploySettingsPage/AppearanceSettingsPage/AppearanceSettingsPageView.tsx +++ b/site/src/pages/DeploySettingsPage/AppearanceSettingsPage/AppearanceSettingsPageView.tsx @@ -1,13 +1,13 @@ -import InputAdornment from "@mui/material/InputAdornment"; +import { useTheme } from "@emotion/react"; import Button from "@mui/material/Button"; import FormControlLabel from "@mui/material/FormControlLabel"; +import InputAdornment from "@mui/material/InputAdornment"; +import Link from "@mui/material/Link"; import Switch from "@mui/material/Switch"; import TextField from "@mui/material/TextField"; -import Link from "@mui/material/Link"; -import { useTheme } from "@emotion/react"; +import { useFormik } from "formik"; import { type FC, useState } from "react"; import { BlockPicker } from "react-color"; -import { useFormik } from "formik"; import type { UpdateAppearanceConfig } from "api/typesGenerated"; import { Badges, @@ -16,10 +16,10 @@ import { EntitledBadge, } from "components/Badges/Badges"; import { Stack } from "components/Stack/Stack"; -import { getFormHelpers } from "utils/formUtils"; import colors from "theme/tailwindColors"; -import { Header } from "../Header"; +import { getFormHelpers } from "utils/formUtils"; import { Fieldset } from "../Fieldset"; +import { Header } from "../Header"; export type AppearanceSettingsPageViewProps = { appearance: UpdateAppearanceConfig; diff --git a/site/src/pages/DeploySettingsPage/DeploySettingsLayout.tsx b/site/src/pages/DeploySettingsPage/DeploySettingsLayout.tsx index 96a2ab6fcd991..e693b4f5873c4 100644 --- a/site/src/pages/DeploySettingsPage/DeploySettingsLayout.tsx +++ b/site/src/pages/DeploySettingsPage/DeploySettingsLayout.tsx @@ -1,13 +1,13 @@ import { createContext, type FC, Suspense, useContext } from "react"; import { useQuery } from "react-query"; import { Outlet } from "react-router-dom"; -import { DeploymentConfig } from "api/api"; +import type { DeploymentConfig } from "api/api"; import { deploymentConfig } from "api/queries/deployment"; -import { RequirePermission } from "contexts/auth/RequirePermission"; -import { usePermissions } from "contexts/auth/usePermissions"; import { Loader } from "components/Loader/Loader"; import { Margins } from "components/Margins/Margins"; import { Stack } from "components/Stack/Stack"; +import { RequirePermission } from "contexts/auth/RequirePermission"; +import { usePermissions } from "contexts/auth/usePermissions"; import { Sidebar } from "./Sidebar"; type DeploySettingsContextValue = { diff --git a/site/src/pages/DeploySettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPageView.stories.tsx b/site/src/pages/DeploySettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPageView.stories.tsx index 311d20109e129..22a57140511f5 100644 --- a/site/src/pages/DeploySettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPageView.stories.tsx +++ b/site/src/pages/DeploySettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPageView.stories.tsx @@ -1,5 +1,5 @@ -import { ExternalAuthSettingsPageView } from "./ExternalAuthSettingsPageView"; import type { Meta, StoryObj } from "@storybook/react"; +import { ExternalAuthSettingsPageView } from "./ExternalAuthSettingsPageView"; const meta: Meta = { title: "pages/DeploySettingsPage/ExternalAuthSettingsPageView", diff --git a/site/src/pages/DeploySettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPageView.tsx b/site/src/pages/DeploySettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPageView.tsx index 6e93f0002dfbf..dba3c5502b3ce 100644 --- a/site/src/pages/DeploySettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPageView.tsx +++ b/site/src/pages/DeploySettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPageView.tsx @@ -1,16 +1,16 @@ import { css } from "@emotion/react"; -import { type FC } from "react"; import Table from "@mui/material/Table"; import TableBody from "@mui/material/TableBody"; import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; +import { type FC } from "react"; import type { DeploymentValues, ExternalAuthConfig } from "api/typesGenerated"; import { Alert } from "components/Alert/Alert"; import { EnterpriseBadge } from "components/Badges/Badges"; -import { Header } from "../Header"; import { docs } from "utils/docs"; +import { Header } from "../Header"; export type ExternalAuthSettingsPageViewProps = { config: DeploymentValues; diff --git a/site/src/pages/DeploySettingsPage/Fieldset.tsx b/site/src/pages/DeploySettingsPage/Fieldset.tsx index d3baea71a3b12..d91ab95f23bae 100644 --- a/site/src/pages/DeploySettingsPage/Fieldset.tsx +++ b/site/src/pages/DeploySettingsPage/Fieldset.tsx @@ -1,6 +1,6 @@ -import type { FC, ReactNode, FormEventHandler } from "react"; -import Button from "@mui/material/Button"; import { type CSSObject, useTheme } from "@emotion/react"; +import Button from "@mui/material/Button"; +import type { FC, ReactNode, FormEventHandler } from "react"; interface FieldsetProps { children: ReactNode; diff --git a/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPage.tsx b/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPage.tsx index dfbff8789d289..c4615dc0f5a32 100644 --- a/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPage.tsx +++ b/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPage.tsx @@ -1,10 +1,10 @@ import { type FC } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; -import { pageTitle } from "utils/page"; import { deploymentDAUs } from "api/queries/deployment"; import { entitlements } from "api/queries/entitlements"; import { availableExperiments } from "api/queries/experiments"; +import { pageTitle } from "utils/page"; import { useDeploySettings } from "../DeploySettingsLayout"; import { GeneralSettingsPageView } from "./GeneralSettingsPageView"; diff --git a/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.stories.tsx b/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.stories.tsx index 836ef020c78d1..c945ef9381f87 100644 --- a/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.stories.tsx +++ b/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; import { mockApiError, MockDeploymentDAUResponse, diff --git a/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.tsx b/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.tsx index 9fab366a2a2b7..2ce819aa96726 100644 --- a/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.tsx +++ b/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.tsx @@ -5,17 +5,17 @@ import type { Entitlements, Experiments, } from "api/typesGenerated"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; import { ActiveUserChart, ActiveUsersTitle, } from "components/ActiveUserChart/ActiveUserChart"; +import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Stack } from "components/Stack/Stack"; +import { useDeploymentOptions } from "utils/deployOptions"; +import { docs } from "utils/docs"; import { Header } from "../Header"; import OptionsTable from "../OptionsTable"; import { ChartSection } from "./ChartSection"; -import { useDeploymentOptions } from "utils/deployOptions"; -import { docs } from "utils/docs"; export type GeneralSettingsPageViewProps = { deploymentOptions: ClibaseOption[]; diff --git a/site/src/pages/DeploySettingsPage/Header.tsx b/site/src/pages/DeploySettingsPage/Header.tsx index 2fbb31bd0261e..f84c35d518fa1 100644 --- a/site/src/pages/DeploySettingsPage/Header.tsx +++ b/site/src/pages/DeploySettingsPage/Header.tsx @@ -1,7 +1,7 @@ -import Button from "@mui/material/Button"; +import { useTheme } from "@emotion/react"; import LaunchOutlined from "@mui/icons-material/LaunchOutlined"; +import Button from "@mui/material/Button"; import type { FC, ReactNode } from "react"; -import { useTheme } from "@emotion/react"; import { Stack } from "components/Stack/Stack"; interface HeaderProps { diff --git a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/AddNewLicensePage.tsx b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/AddNewLicensePage.tsx index 1abca04845884..98758f22f7b5b 100644 --- a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/AddNewLicensePage.tsx +++ b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/AddNewLicensePage.tsx @@ -1,11 +1,11 @@ +import type { FC } from "react"; +import { Helmet } from "react-helmet-async"; import { useMutation } from "react-query"; +import { useNavigate } from "react-router-dom"; import { createLicense } from "api/api"; import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; -import { FC } from "react"; -import { useNavigate } from "react-router-dom"; -import { AddNewLicensePageView } from "./AddNewLicensePageView"; import { pageTitle } from "utils/page"; -import { Helmet } from "react-helmet-async"; +import { AddNewLicensePageView } from "./AddNewLicensePageView"; const AddNewLicensePage: FC = () => { const navigate = useNavigate(); diff --git a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/AddNewLicensePageView.tsx b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/AddNewLicensePageView.tsx index 2da53d75d3212..dfe97366943fa 100644 --- a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/AddNewLicensePageView.tsx +++ b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/AddNewLicensePageView.tsx @@ -1,15 +1,15 @@ +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; import Button from "@mui/material/Button"; import TextField from "@mui/material/TextField"; -import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; import { type FC } from "react"; import { Link as RouterLink } from "react-router-dom"; +import { ErrorAlert } from "components/Alert/ErrorAlert"; import { FileUpload } from "components/FileUpload/FileUpload"; import { displayError } from "components/GlobalSnackbar/utils"; import { Stack } from "components/Stack/Stack"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; -import { DividerWithText } from "./DividerWithText"; import { Fieldset } from "../Fieldset"; import { Header } from "../Header"; +import { DividerWithText } from "./DividerWithText"; type AddNewLicenseProps = { onSaveLicenseKey: (license: string) => void; diff --git a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicenseCard.test.tsx b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicenseCard.test.tsx index 8f8a980628d50..6c5a114eaf2cb 100644 --- a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicenseCard.test.tsx +++ b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicenseCard.test.tsx @@ -1,7 +1,7 @@ import { screen } from "@testing-library/react"; +import { MockLicenseResponse } from "testHelpers/entities"; import { render } from "testHelpers/renderHelpers"; import { LicenseCard } from "./LicenseCard"; -import { MockLicenseResponse } from "testHelpers/entities"; describe("LicenseCard", () => { it("renders (smoke test)", async () => { diff --git a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicenseCard.tsx b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicenseCard.tsx index 07f199a507aa4..362fefa1d322c 100644 --- a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicenseCard.tsx +++ b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicenseCard.tsx @@ -1,9 +1,9 @@ import { type CSSObject, type Interpolation, type Theme } from "@emotion/react"; import Button from "@mui/material/Button"; import Paper from "@mui/material/Paper"; +import { compareAsc } from "date-fns"; import dayjs from "dayjs"; import { type FC, useState } from "react"; -import { compareAsc } from "date-fns"; import { type GetLicensesResponse } from "api/api"; import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { Pill } from "components/Pill/Pill"; diff --git a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPage.tsx b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPage.tsx index 16420749e7164..cc18458937ff5 100644 --- a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPage.tsx +++ b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPage.tsx @@ -1,14 +1,15 @@ -import { useMutation, useQuery, useQueryClient } from "react-query"; -import { getLicenses, removeLicense } from "api/api"; -import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; -import { FC, useEffect } from "react"; +import type { FC} from "react"; +import { useEffect } from "react"; import { Helmet } from "react-helmet-async"; +import { useMutation, useQuery, useQueryClient } from "react-query"; import { useSearchParams } from "react-router-dom"; import useToggle from "react-use/lib/useToggle"; -import { pageTitle } from "utils/page"; -import LicensesSettingsPageView from "./LicensesSettingsPageView"; +import { getLicenses, removeLicense } from "api/api"; import { getErrorMessage } from "api/errors"; import { entitlements, refreshEntitlements } from "api/queries/entitlements"; +import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; +import { pageTitle } from "utils/page"; +import LicensesSettingsPageView from "./LicensesSettingsPageView"; const LicensesSettingsPage: FC = () => { const queryClient = useQueryClient(); diff --git a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPageView.tsx b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPageView.tsx index 896417f9034c6..f22186501620c 100644 --- a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPageView.tsx +++ b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPageView.tsx @@ -1,19 +1,19 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; -import Button from "@mui/material/Button"; -import Skeleton from "@mui/material/Skeleton"; import AddIcon from "@mui/icons-material/AddOutlined"; import RefreshIcon from "@mui/icons-material/Refresh"; +import LoadingButton from "@mui/lab/LoadingButton"; +import Button from "@mui/material/Button"; import MuiLink from "@mui/material/Link"; +import Skeleton from "@mui/material/Skeleton"; import Tooltip from "@mui/material/Tooltip"; -import LoadingButton from "@mui/lab/LoadingButton"; import { type FC } from "react"; import Confetti from "react-confetti"; import { Link } from "react-router-dom"; import useWindowSize from "react-use/lib/useWindowSize"; import type { GetLicensesResponse } from "api/api"; import { Stack } from "components/Stack/Stack"; -import { LicenseCard } from "./LicenseCard"; import { Header } from "../Header"; +import { LicenseCard } from "./LicenseCard"; type Props = { showConfetti: boolean; diff --git a/site/src/pages/DeploySettingsPage/NetworkSettingsPage/NetworkSettingsPageView.stories.tsx b/site/src/pages/DeploySettingsPage/NetworkSettingsPage/NetworkSettingsPageView.stories.tsx index 493476353209b..b3e921e01c603 100644 --- a/site/src/pages/DeploySettingsPage/NetworkSettingsPage/NetworkSettingsPageView.stories.tsx +++ b/site/src/pages/DeploySettingsPage/NetworkSettingsPage/NetworkSettingsPageView.stories.tsx @@ -1,6 +1,6 @@ -import { ClibaseGroup } from "api/typesGenerated"; -import { NetworkSettingsPageView } from "./NetworkSettingsPageView"; import type { Meta, StoryObj } from "@storybook/react"; +import type { ClibaseGroup } from "api/typesGenerated"; +import { NetworkSettingsPageView } from "./NetworkSettingsPageView"; const group: ClibaseGroup = { name: "Networking", diff --git a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPage.tsx b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPage.tsx index c76ce96f34592..bcefd0cd31792 100644 --- a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPage.tsx +++ b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPage.tsx @@ -1,11 +1,11 @@ +import type { FC } from "react"; +import { Helmet } from "react-helmet-async"; import { useMutation, useQueryClient } from "react-query"; +import { useNavigate } from "react-router-dom"; import { postApp } from "api/queries/oauth2"; import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; -import { FC } from "react"; -import { useNavigate } from "react-router-dom"; -import { CreateOAuth2AppPageView } from "./CreateOAuth2AppPageView"; import { pageTitle } from "utils/page"; -import { Helmet } from "react-helmet-async"; +import { CreateOAuth2AppPageView } from "./CreateOAuth2AppPageView"; const CreateOAuth2AppPage: FC = () => { const navigate = useNavigate(); diff --git a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPageView.tsx b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPageView.tsx index 6215251885d50..2c13ce1953b51 100644 --- a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPageView.tsx +++ b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPageView.tsx @@ -1,12 +1,12 @@ -import Button from "@mui/material/Button"; import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import Button from "@mui/material/Button"; import { type FC } from "react"; import { Link } from "react-router-dom"; import type * as TypesGen from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Stack } from "components/Stack/Stack"; -import { OAuth2AppForm } from "./OAuth2AppForm"; import { Header } from "../Header"; +import { OAuth2AppForm } from "./OAuth2AppForm"; type CreateOAuth2AppProps = { isUpdating: boolean; diff --git a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPage.tsx b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPage.tsx index 16e07632ef631..c685e8902db5d 100644 --- a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPage.tsx +++ b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPage.tsx @@ -1,12 +1,13 @@ +import type { FC} from "react"; +import { useState } from "react"; +import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; -import type * as TypesGen from "api/typesGenerated"; +import { useNavigate, useParams } from "react-router-dom"; import * as oauth2 from "api/queries/oauth2"; +import type * as TypesGen from "api/typesGenerated"; import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; -import { FC, useState } from "react"; -import { useNavigate, useParams } from "react-router-dom"; -import { EditOAuth2AppPageView } from "./EditOAuth2AppPageView"; import { pageTitle } from "utils/page"; -import { Helmet } from "react-helmet-async"; +import { EditOAuth2AppPageView } from "./EditOAuth2AppPageView"; const EditOAuth2AppPage: FC = () => { const navigate = useNavigate(); diff --git a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPageView.tsx b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPageView.tsx index 2a28ad668d340..1c905deb65474 100644 --- a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPageView.tsx +++ b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPageView.tsx @@ -1,9 +1,9 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import CopyIcon from "@mui/icons-material/FileCopyOutlined"; import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; -import Divider from "@mui/material/Divider"; import LoadingButton from "@mui/lab/LoadingButton"; import Button from "@mui/material/Button"; +import Divider from "@mui/material/Divider"; import Table from "@mui/material/Table"; import TableBody from "@mui/material/TableBody"; import TableCell from "@mui/material/TableCell"; @@ -23,8 +23,8 @@ import { Loader } from "components/Loader/Loader"; import { Stack } from "components/Stack/Stack"; import { TableLoader } from "components/TableLoader/TableLoader"; import { createDayString } from "utils/createDayString"; -import { OAuth2AppForm } from "./OAuth2AppForm"; import { Header } from "../Header"; +import { OAuth2AppForm } from "./OAuth2AppForm"; export type MutatingResource = { updateApp: boolean; diff --git a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.tsx b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.tsx index 39f1ad6e30d35..c350c9a4ed069 100644 --- a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.tsx +++ b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.tsx @@ -11,17 +11,17 @@ import TableRow from "@mui/material/TableRow"; import { type FC } from "react"; import { Link, useNavigate } from "react-router-dom"; import type * as TypesGen from "api/typesGenerated"; -import { AvatarData } from "components/AvatarData/AvatarData"; +import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Avatar } from "components/Avatar/Avatar"; +import { AvatarData } from "components/AvatarData/AvatarData"; import { Badges, DisabledBadge, EnterpriseBadge, EntitledBadge, } from "components/Badges/Badges"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; -import { TableLoader } from "components/TableLoader/TableLoader"; import { Stack } from "components/Stack/Stack"; +import { TableLoader } from "components/TableLoader/TableLoader"; import { useClickableTableRow } from "hooks/useClickableTableRow"; import { Header } from "../Header"; diff --git a/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPage.tsx b/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPage.tsx index 520e8a6b25060..a4a6d323324cc 100644 --- a/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPage.tsx +++ b/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPage.tsx @@ -1,7 +1,7 @@ import { type FC } from "react"; import { Helmet } from "react-helmet-async"; -import { pageTitle } from "utils/page"; import { useDashboard } from "modules/dashboard/useDashboard"; +import { pageTitle } from "utils/page"; import { useDeploySettings } from "../DeploySettingsLayout"; import { ObservabilitySettingsPageView } from "./ObservabilitySettingsPageView"; diff --git a/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.stories.tsx b/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.stories.tsx index 122f73b7f7f0b..e3c7ed4c12077 100644 --- a/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.stories.tsx +++ b/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.stories.tsx @@ -1,6 +1,6 @@ -import { ObservabilitySettingsPageView } from "./ObservabilitySettingsPageView"; import type { Meta, StoryObj } from "@storybook/react"; -import { ClibaseGroup } from "api/typesGenerated"; +import type { ClibaseGroup } from "api/typesGenerated"; +import { ObservabilitySettingsPageView } from "./ObservabilitySettingsPageView"; const group: ClibaseGroup = { name: "Introspection", diff --git a/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.tsx b/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.tsx index bd067fd9e74d4..552d56fff3f3a 100644 --- a/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.tsx +++ b/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.tsx @@ -1,7 +1,5 @@ import { type FC } from "react"; import type { ClibaseOption } from "api/typesGenerated"; -import { deploymentGroupHasParent } from "utils/deployOptions"; -import { docs } from "utils/docs"; import { Badges, DisabledBadge, @@ -9,6 +7,8 @@ import { EnterpriseBadge, } from "components/Badges/Badges"; import { Stack } from "components/Stack/Stack"; +import { deploymentGroupHasParent } from "utils/deployOptions"; +import { docs } from "utils/docs"; import { Header } from "../Header"; import OptionsTable from "../OptionsTable"; diff --git a/site/src/pages/DeploySettingsPage/Option.tsx b/site/src/pages/DeploySettingsPage/Option.tsx index f022f18a92786..0007ab5a11c02 100644 --- a/site/src/pages/DeploySettingsPage/Option.tsx +++ b/site/src/pages/DeploySettingsPage/Option.tsx @@ -1,8 +1,8 @@ -import CheckCircleOutlined from "@mui/icons-material/CheckCircleOutlined"; import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; +import CheckCircleOutlined from "@mui/icons-material/CheckCircleOutlined"; import { type FC, type HTMLAttributes, type PropsWithChildren } from "react"; -import { MONOSPACE_FONT_FAMILY } from "theme/constants"; import { DisabledBadge, EnabledBadge } from "components/Badges/Badges"; +import { MONOSPACE_FONT_FAMILY } from "theme/constants"; export const OptionName: FC = ({ children }) => { return {children}; diff --git a/site/src/pages/DeploySettingsPage/OptionsTable.tsx b/site/src/pages/DeploySettingsPage/OptionsTable.tsx index d027d27367af5..c6b694bc36fc0 100644 --- a/site/src/pages/DeploySettingsPage/OptionsTable.tsx +++ b/site/src/pages/DeploySettingsPage/OptionsTable.tsx @@ -1,3 +1,4 @@ +import { css } from "@emotion/react"; import Table from "@mui/material/Table"; import TableBody from "@mui/material/TableBody"; import TableCell from "@mui/material/TableCell"; @@ -5,7 +6,6 @@ import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; import { type FC } from "react"; -import { css } from "@emotion/react"; import type { ClibaseOption } from "api/typesGenerated"; import { OptionConfig, diff --git a/site/src/pages/DeploySettingsPage/SecuritySettingsPage/SecuritySettingsPage.tsx b/site/src/pages/DeploySettingsPage/SecuritySettingsPage/SecuritySettingsPage.tsx index e82f00a4b4a2e..a1e75543f2745 100644 --- a/site/src/pages/DeploySettingsPage/SecuritySettingsPage/SecuritySettingsPage.tsx +++ b/site/src/pages/DeploySettingsPage/SecuritySettingsPage/SecuritySettingsPage.tsx @@ -1,9 +1,9 @@ import { type FC } from "react"; import { Helmet } from "react-helmet-async"; -import { pageTitle } from "utils/page"; import { useDashboard } from "modules/dashboard/useDashboard"; -import { SecuritySettingsPageView } from "./SecuritySettingsPageView"; +import { pageTitle } from "utils/page"; import { useDeploySettings } from "../DeploySettingsLayout"; +import { SecuritySettingsPageView } from "./SecuritySettingsPageView"; const SecuritySettingsPage: FC = () => { const { deploymentValues: deploymentValues } = useDeploySettings(); diff --git a/site/src/pages/DeploySettingsPage/SecuritySettingsPage/SecuritySettingsPageView.stories.tsx b/site/src/pages/DeploySettingsPage/SecuritySettingsPage/SecuritySettingsPageView.stories.tsx index f866e7d139c8e..f98945f25ce30 100644 --- a/site/src/pages/DeploySettingsPage/SecuritySettingsPage/SecuritySettingsPageView.stories.tsx +++ b/site/src/pages/DeploySettingsPage/SecuritySettingsPage/SecuritySettingsPageView.stories.tsx @@ -1,6 +1,6 @@ -import { SecuritySettingsPageView } from "./SecuritySettingsPageView"; import type { Meta, StoryObj } from "@storybook/react"; -import { ClibaseGroup, ClibaseOption } from "api/typesGenerated"; +import type { ClibaseGroup, ClibaseOption } from "api/typesGenerated"; +import { SecuritySettingsPageView } from "./SecuritySettingsPageView"; const group: ClibaseGroup = { name: "Networking", diff --git a/site/src/pages/DeploySettingsPage/Sidebar.tsx b/site/src/pages/DeploySettingsPage/Sidebar.tsx index c7f6961676dbb..4a05d8fad2720 100644 --- a/site/src/pages/DeploySettingsPage/Sidebar.tsx +++ b/site/src/pages/DeploySettingsPage/Sidebar.tsx @@ -1,12 +1,12 @@ import Brush from "@mui/icons-material/Brush"; +import HubOutlinedIcon from "@mui/icons-material/HubOutlined"; +import InsertChartIcon from "@mui/icons-material/InsertChart"; import LaunchOutlined from "@mui/icons-material/LaunchOutlined"; -import ApprovalIcon from "@mui/icons-material/VerifiedUserOutlined"; import LockRounded from "@mui/icons-material/LockOutlined"; -import InsertChartIcon from "@mui/icons-material/InsertChart"; +import MonitorHeartOutlined from "@mui/icons-material/MonitorHeartOutlined"; import Globe from "@mui/icons-material/PublicOutlined"; -import HubOutlinedIcon from "@mui/icons-material/HubOutlined"; +import ApprovalIcon from "@mui/icons-material/VerifiedUserOutlined"; import VpnKeyOutlined from "@mui/icons-material/VpnKeyOutlined"; -import MonitorHeartOutlined from "@mui/icons-material/MonitorHeartOutlined"; // import Token from "@mui/icons-material/Token"; import { type FC } from "react"; import { GitIcon } from "components/Icons/GitIcon"; diff --git a/site/src/pages/DeploySettingsPage/UserAuthSettingsPage/UserAuthSettingsPageView.stories.tsx b/site/src/pages/DeploySettingsPage/UserAuthSettingsPage/UserAuthSettingsPageView.stories.tsx index 700ec926df6be..e599945453a24 100644 --- a/site/src/pages/DeploySettingsPage/UserAuthSettingsPage/UserAuthSettingsPageView.stories.tsx +++ b/site/src/pages/DeploySettingsPage/UserAuthSettingsPage/UserAuthSettingsPageView.stories.tsx @@ -1,6 +1,6 @@ -import { ClibaseGroup } from "api/typesGenerated"; -import { UserAuthSettingsPageView } from "./UserAuthSettingsPageView"; import type { Meta, StoryObj } from "@storybook/react"; +import type { ClibaseGroup } from "api/typesGenerated"; +import { UserAuthSettingsPageView } from "./UserAuthSettingsPageView"; const oidcGroup: ClibaseGroup = { name: "OIDC", diff --git a/site/src/pages/DeploySettingsPage/UserAuthSettingsPage/UserAuthSettingsPageView.tsx b/site/src/pages/DeploySettingsPage/UserAuthSettingsPage/UserAuthSettingsPageView.tsx index 5e4349c75ce58..85f253f5ed916 100644 --- a/site/src/pages/DeploySettingsPage/UserAuthSettingsPage/UserAuthSettingsPageView.tsx +++ b/site/src/pages/DeploySettingsPage/UserAuthSettingsPage/UserAuthSettingsPageView.tsx @@ -1,13 +1,13 @@ import type { ClibaseOption } from "api/typesGenerated"; import { Badges, DisabledBadge, EnabledBadge } from "components/Badges/Badges"; import { Stack } from "components/Stack/Stack"; -import { Header } from "../Header"; -import OptionsTable from "../OptionsTable"; import { deploymentGroupHasParent, useDeploymentOptions, } from "utils/deployOptions"; import { docs } from "utils/docs"; +import { Header } from "../Header"; +import OptionsTable from "../OptionsTable"; export type UserAuthSettingsPageViewProps = { options: ClibaseOption[]; diff --git a/site/src/pages/DeploySettingsPage/optionValue.test.ts b/site/src/pages/DeploySettingsPage/optionValue.test.ts index 73a17e4bc4950..c379c42affc3f 100644 --- a/site/src/pages/DeploySettingsPage/optionValue.test.ts +++ b/site/src/pages/DeploySettingsPage/optionValue.test.ts @@ -1,5 +1,5 @@ +import type { ClibaseOption } from "api/typesGenerated"; import { optionValue } from "./optionValue"; -import { ClibaseOption } from "api/typesGenerated"; const defaultOption: ClibaseOption = { name: "", diff --git a/site/src/pages/DeploySettingsPage/optionValue.ts b/site/src/pages/DeploySettingsPage/optionValue.ts index 1deb3a4fe1bdd..e632dfab5a78d 100644 --- a/site/src/pages/DeploySettingsPage/optionValue.ts +++ b/site/src/pages/DeploySettingsPage/optionValue.ts @@ -1,5 +1,5 @@ -import { ClibaseOption } from "api/typesGenerated"; import { intervalToDuration, formatDuration } from "date-fns"; +import type { ClibaseOption } from "api/typesGenerated"; // optionValue is a helper function to format the value of a specific deployment options export function optionValue( diff --git a/site/src/pages/ExternalAuthPage/ExternalAuthPage.tsx b/site/src/pages/ExternalAuthPage/ExternalAuthPage.tsx index ac818cf848411..d108a62b7368e 100644 --- a/site/src/pages/ExternalAuthPage/ExternalAuthPage.tsx +++ b/site/src/pages/ExternalAuthPage/ExternalAuthPage.tsx @@ -1,17 +1,17 @@ import Button from "@mui/material/Button"; -import { useQuery, useQueryClient } from "react-query"; import { isAxiosError } from "axios"; import { type FC } from "react"; +import { useQuery, useQueryClient } from "react-query"; import { useParams, useSearchParams } from "react-router-dom"; -import { ApiErrorResponse } from "api/errors"; +import type { ApiErrorResponse } from "api/errors"; import { externalAuthDevice, externalAuthProvider, exchangeExternalAuthDevice, } from "api/queries/externalAuth"; -import { usePermissions } from "contexts/auth/usePermissions"; import { SignInLayout } from "components/SignInLayout/SignInLayout"; import { Welcome } from "components/Welcome/Welcome"; +import { usePermissions } from "contexts/auth/usePermissions"; import ExternalAuthPageView from "./ExternalAuthPageView"; const ExternalAuthPage: FC = () => { diff --git a/site/src/pages/ExternalAuthPage/ExternalAuthPageView.stories.tsx b/site/src/pages/ExternalAuthPage/ExternalAuthPageView.stories.tsx index eec8dd76c82b4..345a870cd6af6 100644 --- a/site/src/pages/ExternalAuthPage/ExternalAuthPageView.stories.tsx +++ b/site/src/pages/ExternalAuthPage/ExternalAuthPageView.stories.tsx @@ -1,7 +1,8 @@ -import { Meta, StoryFn } from "@storybook/react"; -import ExternalAuthPageView, { +import type { Meta, StoryFn } from "@storybook/react"; +import type { ExternalAuthPageViewProps, } from "./ExternalAuthPageView"; +import ExternalAuthPageView from "./ExternalAuthPageView"; export default { title: "pages/ExternalAuthPage", diff --git a/site/src/pages/ExternalAuthPage/ExternalAuthPageView.tsx b/site/src/pages/ExternalAuthPage/ExternalAuthPageView.tsx index 95773089cd126..f271d083e5b33 100644 --- a/site/src/pages/ExternalAuthPage/ExternalAuthPageView.tsx +++ b/site/src/pages/ExternalAuthPage/ExternalAuthPageView.tsx @@ -5,6 +5,7 @@ import AlertTitle from "@mui/material/AlertTitle"; import CircularProgress from "@mui/material/CircularProgress"; import Link from "@mui/material/Link"; import Tooltip from "@mui/material/Tooltip"; +import { type FC, type ReactNode } from "react"; import type { ApiErrorResponse } from "api/errors"; import type { ExternalAuth, ExternalAuthDevice } from "api/typesGenerated"; import { Alert, AlertDetail } from "components/Alert/Alert"; @@ -12,7 +13,6 @@ import { Avatar } from "components/Avatar/Avatar"; import { CopyButton } from "components/CopyButton/CopyButton"; import { SignInLayout } from "components/SignInLayout/SignInLayout"; import { Welcome } from "components/Welcome/Welcome"; -import { type FC, type ReactNode } from "react"; export interface ExternalAuthPageViewProps { externalAuth: ExternalAuth; diff --git a/site/src/pages/GroupsPage/CreateGroupPageView.stories.tsx b/site/src/pages/GroupsPage/CreateGroupPageView.stories.tsx index 960a510c00ce6..1d6a214d9abe3 100644 --- a/site/src/pages/GroupsPage/CreateGroupPageView.stories.tsx +++ b/site/src/pages/GroupsPage/CreateGroupPageView.stories.tsx @@ -1,6 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { mockApiError } from "testHelpers/entities"; import { CreateGroupPageView } from "./CreateGroupPageView"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/GroupsPage/CreateGroupPageView", diff --git a/site/src/pages/GroupsPage/CreateGroupPageView.tsx b/site/src/pages/GroupsPage/CreateGroupPageView.tsx index 79a3b81f72007..83d81ff8dd0ce 100644 --- a/site/src/pages/GroupsPage/CreateGroupPageView.tsx +++ b/site/src/pages/GroupsPage/CreateGroupPageView.tsx @@ -3,6 +3,7 @@ import { type FormikTouched, useFormik } from "formik"; import { type FC } from "react"; import { useNavigate } from "react-router-dom"; import * as Yup from "yup"; +import { isApiValidationError } from "api/errors"; import type { CreateGroupRequest } from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { FormFooter } from "components/FormFooter/FormFooter"; @@ -11,7 +12,6 @@ import { IconField } from "components/IconField/IconField"; import { Margins } from "components/Margins/Margins"; import { Stack } from "components/Stack/Stack"; import { getFormHelpers, onChangeTrimmed } from "utils/formUtils"; -import { isApiValidationError } from "api/errors"; const validationSchema = Yup.object({ name: Yup.string().required().label("Name"), diff --git a/site/src/pages/GroupsPage/GroupPage.tsx b/site/src/pages/GroupsPage/GroupPage.tsx index a27241f370bee..1eee04c011da2 100644 --- a/site/src/pages/GroupsPage/GroupPage.tsx +++ b/site/src/pages/GroupsPage/GroupPage.tsx @@ -1,3 +1,8 @@ +import { type Interpolation, type Theme } from "@emotion/react"; +import DeleteOutline from "@mui/icons-material/DeleteOutline"; +import PersonAdd from "@mui/icons-material/PersonAdd"; +import SettingsOutlined from "@mui/icons-material/SettingsOutlined"; +import LoadingButton from "@mui/lab/LoadingButton"; import Button from "@mui/material/Button"; import Table from "@mui/material/Table"; import TableBody from "@mui/material/TableBody"; @@ -5,33 +10,11 @@ import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; -import DeleteOutline from "@mui/icons-material/DeleteOutline"; -import PersonAdd from "@mui/icons-material/PersonAdd"; -import SettingsOutlined from "@mui/icons-material/SettingsOutlined"; -import type { Group, ReducedUser, User } from "api/typesGenerated"; -import { AvatarData } from "components/AvatarData/AvatarData"; -import { DeleteDialog } from "components/Dialogs/DeleteDialog/DeleteDialog"; -import { EmptyState } from "components/EmptyState/EmptyState"; -import { Loader } from "components/Loader/Loader"; -import { Margins } from "components/Margins/Margins"; -import { - PageHeader, - PageHeaderSubtitle, - PageHeaderTitle, -} from "components/PageHeader/PageHeader"; -import { Stack } from "components/Stack/Stack"; -import { UserAutocomplete } from "components/UserAutocomplete/UserAutocomplete"; import { type FC, useState } from "react"; import { Helmet } from "react-helmet-async"; -import { Link as RouterLink, useNavigate, useParams } from "react-router-dom"; -import { pageTitle } from "utils/page"; -import { - PaginationStatus, - TableToolbar, -} from "components/TableToolbar/TableToolbar"; -import { UserAvatar } from "components/UserAvatar/UserAvatar"; -import { isEveryoneGroup } from "utils/groups"; import { useMutation, useQuery, useQueryClient } from "react-query"; +import { Link as RouterLink, useNavigate, useParams } from "react-router-dom"; +import { getErrorMessage } from "api/errors"; import { addMember, deleteGroup, @@ -39,11 +22,14 @@ import { groupPermissions, removeMember, } from "api/queries/groups"; +import type { Group, ReducedUser, User } from "api/typesGenerated"; +import { AvatarData } from "components/AvatarData/AvatarData"; +import { DeleteDialog } from "components/Dialogs/DeleteDialog/DeleteDialog"; +import { EmptyState } from "components/EmptyState/EmptyState"; import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; -import { getErrorMessage } from "api/errors"; import { LastSeen } from "components/LastSeen/LastSeen"; -import { type Interpolation, type Theme } from "@emotion/react"; -import LoadingButton from "@mui/lab/LoadingButton"; +import { Loader } from "components/Loader/Loader"; +import { Margins } from "components/Margins/Margins"; import { MoreMenu, MoreMenuContent, @@ -51,6 +37,20 @@ import { MoreMenuTrigger, ThreeDotsButton, } from "components/MoreMenu/MoreMenu"; +import { + PageHeader, + PageHeaderSubtitle, + PageHeaderTitle, +} from "components/PageHeader/PageHeader"; +import { Stack } from "components/Stack/Stack"; +import { + PaginationStatus, + TableToolbar, +} from "components/TableToolbar/TableToolbar"; +import { UserAutocomplete } from "components/UserAutocomplete/UserAutocomplete"; +import { UserAvatar } from "components/UserAvatar/UserAvatar"; +import { isEveryoneGroup } from "utils/groups"; +import { pageTitle } from "utils/page"; export const GroupPage: FC = () => { const { groupId } = useParams() as { groupId: string }; diff --git a/site/src/pages/GroupsPage/GroupsPage.tsx b/site/src/pages/GroupsPage/GroupsPage.tsx index bb809ca1d2eaf..a26d19e3d7a54 100644 --- a/site/src/pages/GroupsPage/GroupsPage.tsx +++ b/site/src/pages/GroupsPage/GroupsPage.tsx @@ -3,10 +3,10 @@ import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { getErrorMessage } from "api/errors"; import { groups } from "api/queries/groups"; +import { displayError } from "components/GlobalSnackbar/utils"; import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { usePermissions } from "contexts/auth/usePermissions"; import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; -import { displayError } from "components/GlobalSnackbar/utils"; import { pageTitle } from "utils/page"; import GroupsPageView from "./GroupsPageView"; diff --git a/site/src/pages/GroupsPage/GroupsPageView.stories.tsx b/site/src/pages/GroupsPage/GroupsPageView.stories.tsx index 8143a75d71bf6..705ddd07fb376 100644 --- a/site/src/pages/GroupsPage/GroupsPageView.stories.tsx +++ b/site/src/pages/GroupsPage/GroupsPageView.stories.tsx @@ -1,6 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockGroup } from "testHelpers/entities"; import { GroupsPageView } from "./GroupsPageView"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/GroupsPage", diff --git a/site/src/pages/GroupsPage/GroupsPageView.tsx b/site/src/pages/GroupsPage/GroupsPageView.tsx index a71ffe1867832..55e8018a4b797 100644 --- a/site/src/pages/GroupsPage/GroupsPageView.tsx +++ b/site/src/pages/GroupsPage/GroupsPageView.tsx @@ -1,30 +1,30 @@ import { type Interpolation, type Theme } from "@emotion/react"; +import AddOutlined from "@mui/icons-material/AddOutlined"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import AvatarGroup from "@mui/material/AvatarGroup"; import Button from "@mui/material/Button"; +import Skeleton from "@mui/material/Skeleton"; import Table from "@mui/material/Table"; import TableBody from "@mui/material/TableBody"; import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; -import Skeleton from "@mui/material/Skeleton"; -import AddOutlined from "@mui/icons-material/AddOutlined"; -import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; -import AvatarGroup from "@mui/material/AvatarGroup"; +import { type FC } from "react"; +import { Link as RouterLink, useNavigate } from "react-router-dom"; +import type { Group } from "api/typesGenerated"; import { AvatarData } from "components/AvatarData/AvatarData"; +import { AvatarDataSkeleton } from "components/AvatarData/AvatarDataSkeleton"; import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; import { EmptyState } from "components/EmptyState/EmptyState"; +import { GroupAvatar } from "components/GroupAvatar/GroupAvatar"; +import { Paywall } from "components/Paywall/Paywall"; import { TableLoaderSkeleton, TableRowSkeleton, } from "components/TableLoader/TableLoader"; import { UserAvatar } from "components/UserAvatar/UserAvatar"; -import { type FC } from "react"; -import { Link as RouterLink, useNavigate } from "react-router-dom"; -import { Paywall } from "components/Paywall/Paywall"; -import type { Group } from "api/typesGenerated"; -import { GroupAvatar } from "components/GroupAvatar/GroupAvatar"; import { docs } from "utils/docs"; -import { AvatarDataSkeleton } from "components/AvatarData/AvatarDataSkeleton"; export type GroupsPageViewProps = { groups: Group[] | undefined; diff --git a/site/src/pages/GroupsPage/SettingsGroupPage.tsx b/site/src/pages/GroupsPage/SettingsGroupPage.tsx index c42468062dba5..a84212079f567 100644 --- a/site/src/pages/GroupsPage/SettingsGroupPage.tsx +++ b/site/src/pages/GroupsPage/SettingsGroupPage.tsx @@ -1,12 +1,12 @@ -import { FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; -import { useNavigate, useParams } from "react-router-dom"; -import { pageTitle } from "utils/page"; -import SettingsGroupPageView from "./SettingsGroupPageView"; import { useMutation, useQuery, useQueryClient } from "react-query"; +import { useNavigate, useParams } from "react-router-dom"; +import { getErrorMessage } from "api/errors"; import { group, patchGroup } from "api/queries/groups"; import { displayError } from "components/GlobalSnackbar/utils"; -import { getErrorMessage } from "api/errors"; +import { pageTitle } from "utils/page"; +import SettingsGroupPageView from "./SettingsGroupPageView"; export const SettingsGroupPage: FC = () => { const { groupId } = useParams() as { groupId: string }; diff --git a/site/src/pages/GroupsPage/SettingsGroupPageView.stories.tsx b/site/src/pages/GroupsPage/SettingsGroupPageView.stories.tsx index a40740db736d6..48463eb1fc0a2 100644 --- a/site/src/pages/GroupsPage/SettingsGroupPageView.stories.tsx +++ b/site/src/pages/GroupsPage/SettingsGroupPageView.stories.tsx @@ -1,6 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockGroup } from "testHelpers/entities"; import { SettingsGroupPageView } from "./SettingsGroupPageView"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/GroupsPage/SettingsGroupPageView", diff --git a/site/src/pages/GroupsPage/SettingsGroupPageView.tsx b/site/src/pages/GroupsPage/SettingsGroupPageView.tsx index 33410e87b8bc1..6998268ef74fb 100644 --- a/site/src/pages/GroupsPage/SettingsGroupPageView.tsx +++ b/site/src/pages/GroupsPage/SettingsGroupPageView.tsx @@ -1,19 +1,19 @@ import TextField from "@mui/material/TextField"; -import { Group } from "api/typesGenerated"; +import { useFormik } from "formik"; +import type { FC } from "react"; +import * as Yup from "yup"; +import type { Group } from "api/typesGenerated"; import { FormFooter } from "components/FormFooter/FormFooter"; import { FullPageForm } from "components/FullPageForm/FullPageForm"; -import { Loader } from "components/Loader/Loader"; import { IconField } from "components/IconField/IconField"; +import { Loader } from "components/Loader/Loader"; import { Margins } from "components/Margins/Margins"; -import { useFormik } from "formik"; -import { FC } from "react"; +import { Stack } from "components/Stack/Stack"; import { getFormHelpers, nameValidator, onChangeTrimmed, } from "utils/formUtils"; -import * as Yup from "yup"; -import { Stack } from "components/Stack/Stack"; import { isEveryoneGroup } from "utils/groups"; type FormData = { diff --git a/site/src/pages/HealthPage/AccessURLPage.stories.tsx b/site/src/pages/HealthPage/AccessURLPage.stories.tsx index 1fddaa03acb5a..a5c58afa2c539 100644 --- a/site/src/pages/HealthPage/AccessURLPage.stories.tsx +++ b/site/src/pages/HealthPage/AccessURLPage.stories.tsx @@ -1,4 +1,4 @@ -import { StoryObj, Meta } from "@storybook/react"; +import type { StoryObj, Meta } from "@storybook/react"; import { AccessURLPage } from "./AccessURLPage"; import { generateMeta } from "./storybook"; diff --git a/site/src/pages/HealthPage/AccessURLPage.tsx b/site/src/pages/HealthPage/AccessURLPage.tsx index d39ed5e504ee2..2534e793c0684 100644 --- a/site/src/pages/HealthPage/AccessURLPage.tsx +++ b/site/src/pages/HealthPage/AccessURLPage.tsx @@ -1,4 +1,8 @@ +import { Helmet } from "react-helmet-async"; import { useOutletContext } from "react-router-dom"; +import type { HealthcheckReport } from "api/typesGenerated"; +import { Alert } from "components/Alert/Alert"; +import { pageTitle } from "utils/page"; import { Header, HeaderTitle, @@ -9,10 +13,6 @@ import { GridDataValue, HealthyDot, } from "./Content"; -import { HealthcheckReport } from "api/typesGenerated"; -import { Alert } from "components/Alert/Alert"; -import { Helmet } from "react-helmet-async"; -import { pageTitle } from "utils/page"; import { DismissWarningButton } from "./DismissWarningButton"; export const AccessURLPage = () => { diff --git a/site/src/pages/HealthPage/Content.tsx b/site/src/pages/HealthPage/Content.tsx index a55a5f6b515ed..39c5580270d1d 100644 --- a/site/src/pages/HealthPage/Content.tsx +++ b/site/src/pages/HealthPage/Content.tsx @@ -1,20 +1,21 @@ /* eslint-disable jsx-a11y/heading-has-content -- infer from props */ -import { +import { css } from "@emotion/css"; +import { useTheme } from "@emotion/react"; +import CheckCircleOutlined from "@mui/icons-material/CheckCircleOutlined"; +import DoNotDisturbOnOutlined from "@mui/icons-material/DoNotDisturbOnOutlined"; +import ErrorOutline from "@mui/icons-material/ErrorOutline"; +import Link from "@mui/material/Link"; +import type { ComponentProps, HTMLAttributes, - ReactElement, + ReactElement} from "react"; +import { cloneElement, forwardRef, } from "react"; -import CheckCircleOutlined from "@mui/icons-material/CheckCircleOutlined"; -import ErrorOutline from "@mui/icons-material/ErrorOutline"; -import { healthyColor } from "./healthyColor"; +import type { HealthMessage, HealthSeverity } from "api/typesGenerated"; import { docs } from "utils/docs"; -import { css } from "@emotion/css"; -import DoNotDisturbOnOutlined from "@mui/icons-material/DoNotDisturbOnOutlined"; -import { HealthMessage, HealthSeverity } from "api/typesGenerated"; -import Link from "@mui/material/Link"; -import { useTheme } from "@emotion/react"; +import { healthyColor } from "./healthyColor"; const CONTENT_PADDING = 36; diff --git a/site/src/pages/HealthPage/DERPPage.stories.tsx b/site/src/pages/HealthPage/DERPPage.stories.tsx index 194552361f568..786f6da859ffa 100644 --- a/site/src/pages/HealthPage/DERPPage.stories.tsx +++ b/site/src/pages/HealthPage/DERPPage.stories.tsx @@ -1,4 +1,4 @@ -import { StoryObj, Meta } from "@storybook/react"; +import type { StoryObj, Meta } from "@storybook/react"; import { DERPPage } from "./DERPPage"; import { generateMeta } from "./storybook"; diff --git a/site/src/pages/HealthPage/DERPPage.tsx b/site/src/pages/HealthPage/DERPPage.tsx index fc6c4e14f84d5..61d7a14032072 100644 --- a/site/src/pages/HealthPage/DERPPage.tsx +++ b/site/src/pages/HealthPage/DERPPage.tsx @@ -1,16 +1,16 @@ +import { useTheme } from "@emotion/react"; +import LocationOnOutlined from "@mui/icons-material/LocationOnOutlined"; +import Button from "@mui/material/Button"; +import { type FC } from "react"; +import { Helmet } from "react-helmet-async"; import { Link, useOutletContext } from "react-router-dom"; import type { HealthMessage, HealthSeverity, HealthcheckReport, } from "api/typesGenerated"; -import Button from "@mui/material/Button"; -import LocationOnOutlined from "@mui/icons-material/LocationOnOutlined"; import { Alert } from "components/Alert/Alert"; -import { Helmet } from "react-helmet-async"; import { pageTitle } from "utils/page"; -import { useTheme } from "@emotion/react"; -import { type FC } from "react"; import { Header, HeaderTitle, diff --git a/site/src/pages/HealthPage/DERPRegionPage.stories.tsx b/site/src/pages/HealthPage/DERPRegionPage.stories.tsx index d462403be0c26..511048bee7c45 100644 --- a/site/src/pages/HealthPage/DERPRegionPage.stories.tsx +++ b/site/src/pages/HealthPage/DERPRegionPage.stories.tsx @@ -1,6 +1,6 @@ -import { StoryObj, Meta } from "@storybook/react"; -import { DERPRegionPage } from "./DERPRegionPage"; +import type { StoryObj, Meta } from "@storybook/react"; import { MockHealth } from "testHelpers/entities"; +import { DERPRegionPage } from "./DERPRegionPage"; import { generateMeta } from "./storybook"; const firstRegionId = Object.values(MockHealth.derp.regions)[0].region diff --git a/site/src/pages/HealthPage/DERPRegionPage.tsx b/site/src/pages/HealthPage/DERPRegionPage.tsx index 211d8a8f30724..ef38e3635b464 100644 --- a/site/src/pages/HealthPage/DERPRegionPage.tsx +++ b/site/src/pages/HealthPage/DERPRegionPage.tsx @@ -1,8 +1,9 @@ -import Tooltip from "@mui/material/Tooltip"; +import type { Interpolation, Theme} from "@emotion/react"; +import { useTheme } from "@emotion/react"; +import ArrowBackOutlined from "@mui/icons-material/ArrowBackOutlined"; import CodeOutlined from "@mui/icons-material/CodeOutlined"; import TagOutlined from "@mui/icons-material/TagOutlined"; -import ArrowBackOutlined from "@mui/icons-material/ArrowBackOutlined"; -import { Interpolation, Theme, useTheme } from "@emotion/react"; +import Tooltip from "@mui/material/Tooltip"; import { type FC } from "react"; import { Helmet } from "react-helmet-async"; import { Link, useOutletContext, useParams } from "react-router-dom"; @@ -11,8 +12,8 @@ import type { HealthSeverity, HealthcheckReport, } from "api/typesGenerated"; -import { getLatencyColor } from "utils/latency"; import { Alert } from "components/Alert/Alert"; +import { getLatencyColor } from "utils/latency"; import { pageTitle } from "utils/page"; import { Header, diff --git a/site/src/pages/HealthPage/DatabasePage.stories.tsx b/site/src/pages/HealthPage/DatabasePage.stories.tsx index f2ec5c5d0cf57..c354e501ac664 100644 --- a/site/src/pages/HealthPage/DatabasePage.stories.tsx +++ b/site/src/pages/HealthPage/DatabasePage.stories.tsx @@ -1,4 +1,4 @@ -import { StoryObj, Meta } from "@storybook/react"; +import type { StoryObj, Meta } from "@storybook/react"; import { DatabasePage } from "./DatabasePage"; import { generateMeta } from "./storybook"; diff --git a/site/src/pages/HealthPage/DatabasePage.tsx b/site/src/pages/HealthPage/DatabasePage.tsx index 1bd5a0a15e708..e094ee6a1a39d 100644 --- a/site/src/pages/HealthPage/DatabasePage.tsx +++ b/site/src/pages/HealthPage/DatabasePage.tsx @@ -1,4 +1,8 @@ +import { Helmet } from "react-helmet-async"; import { useOutletContext } from "react-router-dom"; +import type { HealthcheckReport } from "api/typesGenerated"; +import { Alert } from "components/Alert/Alert"; +import { pageTitle } from "utils/page"; import { Header, HeaderTitle, @@ -9,10 +13,6 @@ import { GridDataValue, HealthyDot, } from "./Content"; -import { HealthcheckReport } from "api/typesGenerated"; -import { Alert } from "components/Alert/Alert"; -import { Helmet } from "react-helmet-async"; -import { pageTitle } from "utils/page"; import { DismissWarningButton } from "./DismissWarningButton"; export const DatabasePage = () => { diff --git a/site/src/pages/HealthPage/DismissWarningButton.tsx b/site/src/pages/HealthPage/DismissWarningButton.tsx index 558ba04f52471..a24a066ddab8a 100644 --- a/site/src/pages/HealthPage/DismissWarningButton.tsx +++ b/site/src/pages/HealthPage/DismissWarningButton.tsx @@ -1,11 +1,11 @@ -import NotificationOutlined from "@mui/icons-material/NotificationsOutlined"; import NotificationsOffOutlined from "@mui/icons-material/NotificationsOffOutlined"; -import { healthSettings, updateHealthSettings } from "api/queries/debug"; -import { useMutation, useQuery, useQueryClient } from "react-query"; -import { displaySuccess } from "components/GlobalSnackbar/utils"; +import NotificationOutlined from "@mui/icons-material/NotificationsOutlined"; import LoadingButton from "@mui/lab/LoadingButton"; import Skeleton from "@mui/material/Skeleton"; -import { HealthSection } from "api/typesGenerated"; +import { useMutation, useQuery, useQueryClient } from "react-query"; +import { healthSettings, updateHealthSettings } from "api/queries/debug"; +import type { HealthSection } from "api/typesGenerated"; +import { displaySuccess } from "components/GlobalSnackbar/utils"; export const DismissWarningButton = (props: { healthcheck: HealthSection }) => { const queryClient = useQueryClient(); diff --git a/site/src/pages/HealthPage/HealthLayout.tsx b/site/src/pages/HealthPage/HealthLayout.tsx index df8b6fa166bca..4f3cecd574f3d 100644 --- a/site/src/pages/HealthPage/HealthLayout.tsx +++ b/site/src/pages/HealthPage/HealthLayout.tsx @@ -1,22 +1,22 @@ -import IconButton from "@mui/material/IconButton"; -import Tooltip from "@mui/material/Tooltip"; -import CircularProgress from "@mui/material/CircularProgress"; -import ReplayIcon from "@mui/icons-material/Replay"; -import NotificationsOffOutlined from "@mui/icons-material/NotificationsOffOutlined"; import { cx } from "@emotion/css"; import { useTheme } from "@emotion/react"; +import NotificationsOffOutlined from "@mui/icons-material/NotificationsOffOutlined"; +import ReplayIcon from "@mui/icons-material/Replay"; +import CircularProgress from "@mui/material/CircularProgress"; +import IconButton from "@mui/material/IconButton"; +import Tooltip from "@mui/material/Tooltip"; +import kebabCase from "lodash/fp/kebabCase"; import { type FC, Suspense } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { NavLink, Outlet } from "react-router-dom"; -import kebabCase from "lodash/fp/kebabCase"; import { health, refreshHealth } from "api/queries/debug"; import type { HealthSeverity } from "api/typesGenerated"; +import { Loader } from "components/Loader/Loader"; import { type ClassName, useClassName } from "hooks/useClassName"; -import { pageTitle } from "utils/page"; -import { createDayString } from "utils/createDayString"; import { DashboardFullPage } from "modules/dashboard/DashboardLayout"; -import { Loader } from "components/Loader/Loader"; +import { createDayString } from "utils/createDayString"; +import { pageTitle } from "utils/page"; import { HealthIcon } from "./Content"; export const HealthLayout: FC = () => { diff --git a/site/src/pages/HealthPage/ProvisionerDaemonsPage.stories.tsx b/site/src/pages/HealthPage/ProvisionerDaemonsPage.stories.tsx index b80a20c1ed159..8dc1af5e560c2 100644 --- a/site/src/pages/HealthPage/ProvisionerDaemonsPage.stories.tsx +++ b/site/src/pages/HealthPage/ProvisionerDaemonsPage.stories.tsx @@ -1,4 +1,4 @@ -import { StoryObj, Meta } from "@storybook/react"; +import type { StoryObj, Meta } from "@storybook/react"; import { ProvisionerDaemonsPage } from "./ProvisionerDaemonsPage"; import { generateMeta } from "./storybook"; diff --git a/site/src/pages/HealthPage/ProvisionerDaemonsPage.tsx b/site/src/pages/HealthPage/ProvisionerDaemonsPage.tsx index 4788703ebb77b..bace1d9740799 100644 --- a/site/src/pages/HealthPage/ProvisionerDaemonsPage.tsx +++ b/site/src/pages/HealthPage/ProvisionerDaemonsPage.tsx @@ -1,3 +1,18 @@ +import { useTheme } from "@emotion/react"; +import Business from "@mui/icons-material/Business"; +import CloseIcon from "@mui/icons-material/Close"; +import Person from "@mui/icons-material/Person"; +import Sell from "@mui/icons-material/Sell"; +import SwapHoriz from "@mui/icons-material/SwapHoriz"; +import IconButton from "@mui/material/IconButton"; +import Tooltip from "@mui/material/Tooltip"; +import { type FC } from "react"; +import { Helmet } from "react-helmet-async"; +import { useOutletContext } from "react-router-dom"; +import type { HealthcheckReport } from "api/typesGenerated"; +import { Alert } from "components/Alert/Alert"; +import { createDayString } from "utils/createDayString"; +import { pageTitle } from "utils/page"; import { BooleanPill, Header, @@ -7,22 +22,7 @@ import { Main, Pill, } from "./Content"; -import { Helmet } from "react-helmet-async"; -import { pageTitle } from "utils/page"; -import { useTheme } from "@emotion/react"; import { DismissWarningButton } from "./DismissWarningButton"; -import { Alert } from "components/Alert/Alert"; -import type { HealthcheckReport } from "api/typesGenerated"; -import { createDayString } from "utils/createDayString"; -import { type FC } from "react"; -import { useOutletContext } from "react-router-dom"; -import Business from "@mui/icons-material/Business"; -import Person from "@mui/icons-material/Person"; -import SwapHoriz from "@mui/icons-material/SwapHoriz"; -import Tooltip from "@mui/material/Tooltip"; -import Sell from "@mui/icons-material/Sell"; -import CloseIcon from "@mui/icons-material/Close"; -import IconButton from "@mui/material/IconButton"; export const ProvisionerDaemonsPage: FC = () => { const healthStatus = useOutletContext(); diff --git a/site/src/pages/HealthPage/WebsocketPage.stories.tsx b/site/src/pages/HealthPage/WebsocketPage.stories.tsx index 4eba44bc48b58..78431c4c50694 100644 --- a/site/src/pages/HealthPage/WebsocketPage.stories.tsx +++ b/site/src/pages/HealthPage/WebsocketPage.stories.tsx @@ -1,6 +1,6 @@ -import { StoryObj, Meta } from "@storybook/react"; -import { WebsocketPage } from "./WebsocketPage"; +import type { StoryObj, Meta } from "@storybook/react"; import { generateMeta } from "./storybook"; +import { WebsocketPage } from "./WebsocketPage"; const meta: Meta = { title: "pages/Health/Websocket", diff --git a/site/src/pages/HealthPage/WebsocketPage.tsx b/site/src/pages/HealthPage/WebsocketPage.tsx index 45376b6c87549..f22a8b680cf80 100644 --- a/site/src/pages/HealthPage/WebsocketPage.tsx +++ b/site/src/pages/HealthPage/WebsocketPage.tsx @@ -1,4 +1,12 @@ +import { useTheme } from "@emotion/react"; +import CodeOutlined from "@mui/icons-material/CodeOutlined"; +import Tooltip from "@mui/material/Tooltip"; +import { Helmet } from "react-helmet-async"; import { useOutletContext } from "react-router-dom"; +import type { HealthcheckReport } from "api/typesGenerated"; +import { Alert } from "components/Alert/Alert"; +import { MONOSPACE_FONT_FAMILY } from "theme/constants"; +import { pageTitle } from "utils/page"; import { Header, HeaderTitle, @@ -7,14 +15,6 @@ import { Pill, SectionLabel, } from "./Content"; -import { HealthcheckReport } from "api/typesGenerated"; -import CodeOutlined from "@mui/icons-material/CodeOutlined"; -import Tooltip from "@mui/material/Tooltip"; -import { useTheme } from "@emotion/react"; -import { MONOSPACE_FONT_FAMILY } from "theme/constants"; -import { Alert } from "components/Alert/Alert"; -import { pageTitle } from "utils/page"; -import { Helmet } from "react-helmet-async"; import { DismissWarningButton } from "./DismissWarningButton"; export const WebsocketPage = () => { diff --git a/site/src/pages/HealthPage/WorkspaceProxyPage.stories.tsx b/site/src/pages/HealthPage/WorkspaceProxyPage.stories.tsx index 92e031014079a..576f9c0bb38a5 100644 --- a/site/src/pages/HealthPage/WorkspaceProxyPage.stories.tsx +++ b/site/src/pages/HealthPage/WorkspaceProxyPage.stories.tsx @@ -1,6 +1,6 @@ -import { StoryObj, Meta } from "@storybook/react"; -import { WorkspaceProxyPage } from "./WorkspaceProxyPage"; +import type { StoryObj, Meta } from "@storybook/react"; import { generateMeta } from "./storybook"; +import { WorkspaceProxyPage } from "./WorkspaceProxyPage"; const meta: Meta = { title: "pages/Health/WorkspaceProxy", diff --git a/site/src/pages/HealthPage/WorkspaceProxyPage.tsx b/site/src/pages/HealthPage/WorkspaceProxyPage.tsx index c2058cc364b7d..2f8d97a0f24ea 100644 --- a/site/src/pages/HealthPage/WorkspaceProxyPage.tsx +++ b/site/src/pages/HealthPage/WorkspaceProxyPage.tsx @@ -1,4 +1,14 @@ +import { useTheme } from "@emotion/react"; +import PublicOutlined from "@mui/icons-material/PublicOutlined"; +import TagOutlined from "@mui/icons-material/TagOutlined"; +import Tooltip from "@mui/material/Tooltip"; +import { type FC } from "react"; +import { Helmet } from "react-helmet-async"; import { useOutletContext } from "react-router-dom"; +import type { HealthcheckReport } from "api/typesGenerated"; +import { Alert } from "components/Alert/Alert"; +import { createDayString } from "utils/createDayString"; +import { pageTitle } from "utils/page"; import { BooleanPill, Header, @@ -8,16 +18,6 @@ import { Main, Pill, } from "./Content"; -import type { HealthcheckReport } from "api/typesGenerated"; -import { useTheme } from "@emotion/react"; -import { createDayString } from "utils/createDayString"; -import PublicOutlined from "@mui/icons-material/PublicOutlined"; -import Tooltip from "@mui/material/Tooltip"; -import TagOutlined from "@mui/icons-material/TagOutlined"; -import { Alert } from "components/Alert/Alert"; -import { type FC } from "react"; -import { Helmet } from "react-helmet-async"; -import { pageTitle } from "utils/page"; import { DismissWarningButton } from "./DismissWarningButton"; export const WorkspaceProxyPage: FC = () => { diff --git a/site/src/pages/HealthPage/storybook.tsx b/site/src/pages/HealthPage/storybook.tsx index 741009c84d324..2a472de86b082 100644 --- a/site/src/pages/HealthPage/storybook.tsx +++ b/site/src/pages/HealthPage/storybook.tsx @@ -1,9 +1,11 @@ import type { Meta } from "@storybook/react"; +import type { + RouteDefinition} from "storybook-addon-react-router-v6"; import { reactRouterParameters, - reactRouterOutlet, - RouteDefinition, + reactRouterOutlet } from "storybook-addon-react-router-v6"; +import { HEALTH_QUERY_KEY, HEALTH_QUERY_SETTINGS_KEY } from "api/queries/debug"; import { chromatic } from "testHelpers/chromatic"; import { MockAppearanceConfig, @@ -13,9 +15,8 @@ import { MockHealth, MockHealthSettings, } from "testHelpers/entities"; -import { HEALTH_QUERY_KEY, HEALTH_QUERY_SETTINGS_KEY } from "api/queries/debug"; -import { HealthLayout } from "./HealthLayout"; import { withDashboardProvider } from "testHelpers/storybook"; +import { HealthLayout } from "./HealthLayout"; type MetaOptions = { element: RouteDefinition; diff --git a/site/src/pages/IconsPage/IconsPage.tsx b/site/src/pages/IconsPage/IconsPage.tsx index 53e378f846cc7..aae0aaa5f01b1 100644 --- a/site/src/pages/IconsPage/IconsPage.tsx +++ b/site/src/pages/IconsPage/IconsPage.tsx @@ -1,11 +1,11 @@ -import TextField from "@mui/material/TextField"; -import InputAdornment from "@mui/material/InputAdornment"; -import Tooltip from "@mui/material/Tooltip"; +import { useTheme } from "@emotion/react"; +import ClearIcon from "@mui/icons-material/CloseOutlined"; +import SearchIcon from "@mui/icons-material/SearchOutlined"; import IconButton from "@mui/material/IconButton"; +import InputAdornment from "@mui/material/InputAdornment"; import Link from "@mui/material/Link"; -import SearchIcon from "@mui/icons-material/SearchOutlined"; -import ClearIcon from "@mui/icons-material/CloseOutlined"; -import { useTheme } from "@emotion/react"; +import TextField from "@mui/material/TextField"; +import Tooltip from "@mui/material/Tooltip"; import { type FC, type ReactNode, useMemo, useState } from "react"; import { Helmet } from "react-helmet-async"; import uFuzzy from "ufuzzy"; @@ -18,11 +18,11 @@ import { PageHeaderTitle, } from "components/PageHeader/PageHeader"; import { Stack } from "components/Stack/Stack"; -import icons from "theme/icons.json"; import { defaultParametersForBuiltinIcons, parseImageParameters, } from "theme/externalImages"; +import icons from "theme/icons.json"; import { pageTitle } from "utils/page"; const iconsWithoutSuffix = icons.map((icon) => icon.split(".")[0]); diff --git a/site/src/pages/LoginPage/LoginPage.test.tsx b/site/src/pages/LoginPage/LoginPage.test.tsx index 1795a9c70120a..494db98c22abf 100644 --- a/site/src/pages/LoginPage/LoginPage.test.tsx +++ b/site/src/pages/LoginPage/LoginPage.test.tsx @@ -2,7 +2,6 @@ import { fireEvent, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { rest } from "msw"; import { createMemoryRouter } from "react-router-dom"; -import { Language } from "./SignInForm"; import { render, renderWithRouter, @@ -10,6 +9,7 @@ import { } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; import { LoginPage } from "./LoginPage"; +import { Language } from "./SignInForm"; describe("LoginPage", () => { beforeEach(() => { diff --git a/site/src/pages/LoginPage/LoginPageView.stories.tsx b/site/src/pages/LoginPage/LoginPageView.stories.tsx index 503444f49ee0b..48ea6e31d73f9 100644 --- a/site/src/pages/LoginPage/LoginPageView.stories.tsx +++ b/site/src/pages/LoginPage/LoginPageView.stories.tsx @@ -1,3 +1,4 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockAuthMethodsAll, MockAuthMethodsExternal, @@ -5,7 +6,6 @@ import { mockApiError, } from "testHelpers/entities"; import { LoginPageView } from "./LoginPageView"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/LoginPage", diff --git a/site/src/pages/LoginPage/LoginPageView.tsx b/site/src/pages/LoginPage/LoginPageView.tsx index a19401bd6bd52..8e1265fe71cf9 100644 --- a/site/src/pages/LoginPage/LoginPageView.tsx +++ b/site/src/pages/LoginPage/LoginPageView.tsx @@ -2,10 +2,10 @@ import { type Interpolation, type Theme } from "@emotion/react"; import { type FC } from "react"; import { useLocation } from "react-router-dom"; import type { AuthMethods } from "api/typesGenerated"; +import { CoderIcon } from "components/Icons/CoderIcon"; +import { Loader } from "components/Loader/Loader"; import { getApplicationName, getLogoURL } from "utils/appearance"; import { retrieveRedirect } from "utils/redirect"; -import { Loader } from "components/Loader/Loader"; -import { CoderIcon } from "components/Icons/CoderIcon"; import { SignInForm } from "./SignInForm"; export interface LoginPageViewProps { diff --git a/site/src/pages/LoginPage/OAuthSignInForm.tsx b/site/src/pages/LoginPage/OAuthSignInForm.tsx index 299040b768a4f..e23467f4843f8 100644 --- a/site/src/pages/LoginPage/OAuthSignInForm.tsx +++ b/site/src/pages/LoginPage/OAuthSignInForm.tsx @@ -1,10 +1,10 @@ -import Button from "@mui/material/Button"; import GitHubIcon from "@mui/icons-material/GitHub"; import KeyIcon from "@mui/icons-material/VpnKey"; +import Button from "@mui/material/Button"; +import { visuallyHidden } from "@mui/utils"; import { type FC, useId } from "react"; -import { Language } from "./SignInForm"; import type { AuthMethods } from "api/typesGenerated"; -import { visuallyHidden } from "@mui/utils"; +import { Language } from "./SignInForm"; const iconStyles = { width: 16, diff --git a/site/src/pages/LoginPage/PasswordSignInForm.tsx b/site/src/pages/LoginPage/PasswordSignInForm.tsx index eb60407f5a305..5f1256557b16e 100644 --- a/site/src/pages/LoginPage/PasswordSignInForm.tsx +++ b/site/src/pages/LoginPage/PasswordSignInForm.tsx @@ -1,11 +1,11 @@ -import { Stack } from "components/Stack/Stack"; +import LoadingButton from "@mui/lab/LoadingButton"; import TextField from "@mui/material/TextField"; -import { getFormHelpers, onChangeTrimmed } from "utils/formUtils"; -import { Language } from "./SignInForm"; import { useFormik } from "formik"; +import type { FC } from "react"; import * as Yup from "yup"; -import { FC } from "react"; -import LoadingButton from "@mui/lab/LoadingButton"; +import { Stack } from "components/Stack/Stack"; +import { getFormHelpers, onChangeTrimmed } from "utils/formUtils"; +import { Language } from "./SignInForm"; type PasswordSignInFormProps = { onSubmit: (credentials: { email: string; password: string }) => void; diff --git a/site/src/pages/LoginPage/SignInForm.stories.tsx b/site/src/pages/LoginPage/SignInForm.stories.tsx index 28c1305ad11d4..524bcb13039f0 100644 --- a/site/src/pages/LoginPage/SignInForm.stories.tsx +++ b/site/src/pages/LoginPage/SignInForm.stories.tsx @@ -1,6 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { mockApiError } from "testHelpers/entities"; import { SignInForm } from "./SignInForm"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/LoginPage/SignInForm", diff --git a/site/src/pages/LoginPage/SignInForm.tsx b/site/src/pages/LoginPage/SignInForm.tsx index 11bdc402abca4..e67c7ba5c2bac 100644 --- a/site/src/pages/LoginPage/SignInForm.tsx +++ b/site/src/pages/LoginPage/SignInForm.tsx @@ -4,8 +4,8 @@ import type { AuthMethods } from "api/typesGenerated"; import { Alert } from "components/Alert/Alert"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { getApplicationName } from "utils/appearance"; -import { PasswordSignInForm } from "./PasswordSignInForm"; import { OAuthSignInForm } from "./OAuthSignInForm"; +import { PasswordSignInForm } from "./PasswordSignInForm"; export const Language = { emailLabel: "Email", diff --git a/site/src/pages/SetupPage/SetupPage.test.tsx b/site/src/pages/SetupPage/SetupPage.test.tsx index f196b2f9b0b3d..5c4f05290d48d 100644 --- a/site/src/pages/SetupPage/SetupPage.test.tsx +++ b/site/src/pages/SetupPage/SetupPage.test.tsx @@ -2,6 +2,7 @@ import { screen, waitFor } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { rest } from "msw"; import { createMemoryRouter } from "react-router-dom"; +import { MockUser } from "testHelpers/entities"; import { renderWithRouter, waitForLoaderToBeRemoved, @@ -9,7 +10,6 @@ import { import { server } from "testHelpers/server"; import { SetupPage } from "./SetupPage"; import { Language as PageViewLanguage } from "./SetupPageView"; -import { MockUser } from "testHelpers/entities"; const fillForm = async ({ username = "someuser", diff --git a/site/src/pages/SetupPage/SetupPage.tsx b/site/src/pages/SetupPage/SetupPage.tsx index c49256df12181..30c3211b61c78 100644 --- a/site/src/pages/SetupPage/SetupPage.tsx +++ b/site/src/pages/SetupPage/SetupPage.tsx @@ -2,10 +2,10 @@ import { type FC } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation } from "react-query"; import { Navigate, useNavigate } from "react-router-dom"; -import { pageTitle } from "utils/page"; import { createFirstUser } from "api/queries/users"; -import { useAuth } from "contexts/auth/useAuth"; import { FullScreenLoader } from "components/Loader/FullScreenLoader"; +import { useAuth } from "contexts/auth/useAuth"; +import { pageTitle } from "utils/page"; import { SetupPageView } from "./SetupPageView"; export const SetupPage: FC = () => { diff --git a/site/src/pages/SetupPage/SetupPageView.tsx b/site/src/pages/SetupPage/SetupPageView.tsx index bfd4a3937d418..bb58a48d9ea21 100644 --- a/site/src/pages/SetupPage/SetupPageView.tsx +++ b/site/src/pages/SetupPage/SetupPageView.tsx @@ -1,24 +1,24 @@ +import LoadingButton from "@mui/lab/LoadingButton"; +import Autocomplete from "@mui/material/Autocomplete"; import Checkbox from "@mui/material/Checkbox"; import Link from "@mui/material/Link"; +import MenuItem from "@mui/material/MenuItem"; import TextField from "@mui/material/TextField"; -import LoadingButton from "@mui/lab/LoadingButton"; import { type FormikContextType, useFormik } from "formik"; import { type FC } from "react"; import * as Yup from "yup"; import type * as TypesGen from "api/typesGenerated"; +import { FormFields, VerticalForm } from "components/Form/Form"; +import { CoderIcon } from "components/Icons/CoderIcon"; +import { SignInLayout } from "components/SignInLayout/SignInLayout"; +import { Stack } from "components/Stack/Stack"; +import { docs } from "utils/docs"; import { getFormHelpers, nameValidator, onChangeTrimmed, } from "utils/formUtils"; -import { docs } from "utils/docs"; -import { SignInLayout } from "components/SignInLayout/SignInLayout"; -import { FormFields, VerticalForm } from "components/Form/Form"; -import { CoderIcon } from "components/Icons/CoderIcon"; -import MenuItem from "@mui/material/MenuItem"; import { countries } from "./countries"; -import Autocomplete from "@mui/material/Autocomplete"; -import { Stack } from "components/Stack/Stack"; export const Language = { emailLabel: "Email", diff --git a/site/src/pages/StarterTemplatePage/StarterTemplatePage.tsx b/site/src/pages/StarterTemplatePage/StarterTemplatePage.tsx index 21f11bea6641d..32f54cd821482 100644 --- a/site/src/pages/StarterTemplatePage/StarterTemplatePage.tsx +++ b/site/src/pages/StarterTemplatePage/StarterTemplatePage.tsx @@ -3,8 +3,8 @@ import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { useParams } from "react-router-dom"; import { templateExamples } from "api/queries/templates"; -import { pageTitle } from "utils/page"; import { useOrganizationId } from "contexts/auth/useOrganizationId"; +import { pageTitle } from "utils/page"; import { StarterTemplatePageView } from "./StarterTemplatePageView"; const StarterTemplatePage: FC = () => { diff --git a/site/src/pages/StarterTemplatePage/StarterTemplatePageView.stories.tsx b/site/src/pages/StarterTemplatePage/StarterTemplatePageView.stories.tsx index 271423f760de7..27667ce6d8e62 100644 --- a/site/src/pages/StarterTemplatePage/StarterTemplatePageView.stories.tsx +++ b/site/src/pages/StarterTemplatePage/StarterTemplatePageView.stories.tsx @@ -1,8 +1,8 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { chromatic } from "testHelpers/chromatic"; import { mockApiError, MockTemplateExample } from "testHelpers/entities"; import { StarterTemplatePageView } from "./StarterTemplatePageView"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/StarterTemplatePage", diff --git a/site/src/pages/StarterTemplatePage/StarterTemplatePageView.tsx b/site/src/pages/StarterTemplatePage/StarterTemplatePageView.tsx index 2907f97b5b533..19b90d44b9caf 100644 --- a/site/src/pages/StarterTemplatePage/StarterTemplatePageView.tsx +++ b/site/src/pages/StarterTemplatePage/StarterTemplatePageView.tsx @@ -1,5 +1,12 @@ -import Button from "@mui/material/Button"; import { useTheme } from "@emotion/react"; +import PlusIcon from "@mui/icons-material/AddOutlined"; +import ViewCodeIcon from "@mui/icons-material/OpenInNewOutlined"; +import Button from "@mui/material/Button"; +import { type FC } from "react"; +import { Link } from "react-router-dom"; +import type { TemplateExample } from "api/typesGenerated"; +import { ErrorAlert } from "components/Alert/ErrorAlert"; +import { ExternalImage } from "components/ExternalImage/ExternalImage"; import { Loader } from "components/Loader/Loader"; import { Margins } from "components/Margins/Margins"; import { MemoizedMarkdown } from "components/Markdown/Markdown"; @@ -8,14 +15,7 @@ import { PageHeaderSubtitle, PageHeaderTitle, } from "components/PageHeader/PageHeader"; -import { type FC } from "react"; -import ViewCodeIcon from "@mui/icons-material/OpenInNewOutlined"; -import PlusIcon from "@mui/icons-material/AddOutlined"; import { Stack } from "components/Stack/Stack"; -import { Link } from "react-router-dom"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; -import type { TemplateExample } from "api/typesGenerated"; -import { ExternalImage } from "components/ExternalImage/ExternalImage"; export interface StarterTemplatePageViewProps { starterTemplate?: TemplateExample; diff --git a/site/src/pages/StarterTemplatesPage/StarterTemplatesPage.test.tsx b/site/src/pages/StarterTemplatesPage/StarterTemplatesPage.test.tsx index a1f25f937a0b1..7109f0d287d23 100644 --- a/site/src/pages/StarterTemplatesPage/StarterTemplatesPage.test.tsx +++ b/site/src/pages/StarterTemplatesPage/StarterTemplatesPage.test.tsx @@ -1,14 +1,14 @@ import { render, screen } from "@testing-library/react"; -import StarterTemplatesPage from "./StarterTemplatesPage"; -import { AppProviders } from "App"; +import { rest } from "msw"; import { RouterProvider, createMemoryRouter } from "react-router-dom"; +import { AppProviders } from "App"; import { RequireAuth } from "contexts/auth/RequireAuth"; -import { rest } from "msw"; import { MockTemplateExample, MockTemplateExample2, } from "testHelpers/entities"; import { server } from "testHelpers/server"; +import StarterTemplatesPage from "./StarterTemplatesPage"; test("does not display the scratch template", async () => { server.use( diff --git a/site/src/pages/StarterTemplatesPage/StarterTemplatesPage.tsx b/site/src/pages/StarterTemplatesPage/StarterTemplatesPage.tsx index e24a37026700a..078bcab3280af 100644 --- a/site/src/pages/StarterTemplatesPage/StarterTemplatesPage.tsx +++ b/site/src/pages/StarterTemplatesPage/StarterTemplatesPage.tsx @@ -2,11 +2,11 @@ import { type FC } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { templateExamples } from "api/queries/templates"; +import type { TemplateExample } from "api/typesGenerated"; import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { pageTitle } from "utils/page"; import { getTemplatesByTag } from "utils/starterTemplates"; import { StarterTemplatesPageView } from "./StarterTemplatesPageView"; -import { TemplateExample } from "api/typesGenerated"; const StarterTemplatesPage: FC = () => { const organizationId = useOrganizationId(); diff --git a/site/src/pages/StarterTemplatesPage/StarterTemplatesPageView.stories.tsx b/site/src/pages/StarterTemplatesPage/StarterTemplatesPageView.stories.tsx index b57a8b60ee413..228e8cae4ed9d 100644 --- a/site/src/pages/StarterTemplatesPage/StarterTemplatesPageView.stories.tsx +++ b/site/src/pages/StarterTemplatesPage/StarterTemplatesPageView.stories.tsx @@ -1,3 +1,4 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { chromatic } from "testHelpers/chromatic"; import { mockApiError, @@ -6,7 +7,6 @@ import { } from "testHelpers/entities"; import { getTemplatesByTag } from "utils/starterTemplates"; import { StarterTemplatesPageView } from "./StarterTemplatesPageView"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/StarterTemplatesPage", diff --git a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.test.tsx b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.test.tsx index d77181f9590b1..580df7f645c7c 100644 --- a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.test.tsx +++ b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.test.tsx @@ -1,17 +1,17 @@ -import { - renderWithAuth, - waitForLoaderToBeRemoved, -} from "testHelpers/renderHelpers"; -import TemplateEmbedPage from "./TemplateEmbedPage"; +import { screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import * as API from "api/api"; import { TemplateLayout } from "pages/TemplatePage/TemplateLayout"; import { MockTemplate, MockTemplateVersionParameter1 as parameter1, MockTemplateVersionParameter2 as parameter2, } from "testHelpers/entities"; -import * as API from "api/api"; -import userEvent from "@testing-library/user-event"; -import { screen } from "@testing-library/react"; +import { + renderWithAuth, + waitForLoaderToBeRemoved, +} from "testHelpers/renderHelpers"; +import TemplateEmbedPage from "./TemplateEmbedPage"; test("Users can fill the parameters and copy the open in coder url", async () => { jest diff --git a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.tsx b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.tsx index 6cf91723adc09..57716e0b91fe5 100644 --- a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.tsx +++ b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPage.tsx @@ -4,19 +4,19 @@ import Button from "@mui/material/Button"; import FormControlLabel from "@mui/material/FormControlLabel"; import Radio from "@mui/material/Radio"; import RadioGroup from "@mui/material/RadioGroup"; +import { type FC, useEffect, useState } from "react"; +import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { getTemplateVersionRichParameters } from "api/api"; -import { Template, TemplateVersionParameter } from "api/typesGenerated"; +import type { Template, TemplateVersionParameter } from "api/typesGenerated"; import { FormSection, VerticalForm } from "components/Form/Form"; import { Loader } from "components/Loader/Loader"; -import { useTemplateLayoutContext } from "pages/TemplatePage/TemplateLayout"; +import { RichParameterInput } from "components/RichParameterInput/RichParameterInput"; import { useClipboard } from "hooks/useClipboard"; -import { type FC, useEffect, useState } from "react"; -import { Helmet } from "react-helmet-async"; +import { useTemplateLayoutContext } from "pages/TemplatePage/TemplateLayout"; import { pageTitle } from "utils/page"; import { getInitialRichParameterValues } from "utils/richParameters"; import { paramsUsedToCreateWorkspace } from "utils/workspace"; -import { RichParameterInput } from "components/RichParameterInput/RichParameterInput"; type ButtonValues = Record; diff --git a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageView.stories.tsx b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageView.stories.tsx index 785d9007eb8b8..2a824caf01626 100644 --- a/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageView.stories.tsx +++ b/site/src/pages/TemplatePage/TemplateEmbedPage/TemplateEmbedPageView.stories.tsx @@ -1,6 +1,4 @@ import type { Meta, StoryObj } from "@storybook/react"; - -import { TemplateEmbedPageView } from "./TemplateEmbedPage"; import { MockTemplate, MockTemplateVersionParameter1, @@ -8,6 +6,7 @@ import { MockTemplateVersionParameter3, MockTemplateVersionParameter4, } from "testHelpers/entities"; +import { TemplateEmbedPageView } from "./TemplateEmbedPage"; const meta: Meta = { title: "pages/TemplatePage/TemplateEmbedPageView", diff --git a/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.test.tsx b/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.test.tsx index eda7fd600fb89..c18f2024d0fb6 100644 --- a/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.test.tsx +++ b/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.test.tsx @@ -1,12 +1,12 @@ import { render, screen } from "@testing-library/react"; +import { rest } from "msw"; +import { RouterProvider, createMemoryRouter } from "react-router-dom"; import { AppProviders } from "App"; import { RequireAuth } from "contexts/auth/RequireAuth"; -import { RouterProvider, createMemoryRouter } from "react-router-dom"; -import { TemplateLayout } from "../TemplateLayout"; -import TemplateFilesPage from "./TemplateFilesPage"; import { MockTemplate } from "testHelpers/entities"; import { server } from "testHelpers/server"; -import { rest } from "msw"; +import { TemplateLayout } from "../TemplateLayout"; +import TemplateFilesPage from "./TemplateFilesPage"; // Occasionally, Jest encounters HTML5 canvas errors. As the SyntaxHighlight is // not required for these tests, we can safely mock it. diff --git a/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.tsx b/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.tsx index 12600c4cf4078..2b4fd6d232e10 100644 --- a/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.tsx +++ b/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.tsx @@ -3,9 +3,9 @@ import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { previousTemplateVersion, templateFiles } from "api/queries/templates"; import { Loader } from "components/Loader/Loader"; +import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { TemplateFiles } from "modules/templates/TemplateFiles/TemplateFiles"; import { useTemplateLayoutContext } from "pages/TemplatePage/TemplateLayout"; -import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { getTemplatePageTitle } from "../utils"; const TemplateFilesPage: FC = () => { diff --git a/site/src/pages/TemplatePage/TemplateInsightsPage/DateRange.tsx b/site/src/pages/TemplatePage/TemplateInsightsPage/DateRange.tsx index b7cf7fa142635..2fdaefb7dfdbb 100644 --- a/site/src/pages/TemplatePage/TemplateInsightsPage/DateRange.tsx +++ b/site/src/pages/TemplatePage/TemplateInsightsPage/DateRange.tsx @@ -1,10 +1,8 @@ -import { type Interpolation, type Theme } from "@emotion/react"; -import { type ComponentProps, type FC, useRef, useState } from "react"; import "react-date-range/dist/styles.css"; import "react-date-range/dist/theme/default.css"; -import Button from "@mui/material/Button"; +import { type Interpolation, type Theme } from "@emotion/react"; import ArrowRightAltOutlined from "@mui/icons-material/ArrowRightAltOutlined"; -import { DateRangePicker, createStaticRanges } from "react-date-range"; +import Button from "@mui/material/Button"; import { addDays, addHours, @@ -14,6 +12,8 @@ import { startOfHour, subDays, } from "date-fns"; +import { type ComponentProps, type FC, useRef, useState } from "react"; +import { DateRangePicker, createStaticRanges } from "react-date-range"; import { Popover, PopoverContent, diff --git a/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx b/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx index 188f5c3a77589..384f8c7c9325f 100644 --- a/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx +++ b/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx @@ -1,11 +1,34 @@ -import LinearProgress from "@mui/material/LinearProgress"; -import Tooltip from "@mui/material/Tooltip"; -import Link from "@mui/material/Link"; -import CheckCircleOutlined from "@mui/icons-material/CheckCircleOutlined"; +import { useTheme } from "@emotion/react"; import CancelOutlined from "@mui/icons-material/CancelOutlined"; +import CheckCircleOutlined from "@mui/icons-material/CheckCircleOutlined"; import LinkOutlined from "@mui/icons-material/LinkOutlined"; -import { useQuery } from "react-query"; +import LinearProgress from "@mui/material/LinearProgress"; +import Link from "@mui/material/Link"; +import Tooltip from "@mui/material/Tooltip"; +import chroma from "chroma-js"; +import { + subDays, + addWeeks, + format, + startOfDay, + startOfHour, + addHours, +} from "date-fns"; +import { + type FC, + type HTMLAttributes, + type PropsWithChildren, + type ReactNode, + useId, +} from "react"; import { Helmet } from "react-helmet-async"; +import { useQuery } from "react-query"; +import { entitlements } from "api/queries/entitlements"; +import { + insightsTemplate, + insightsUserActivity, + insightsUserLatency, +} from "api/queries/insights"; import type { Entitlements, Template, @@ -16,32 +39,10 @@ import type { UserActivityInsightsResponse, UserLatencyInsightsResponse, } from "api/typesGenerated"; -import { useTheme } from "@emotion/react"; -import { - type FC, - type HTMLAttributes, - type PropsWithChildren, - type ReactNode, - useId, -} from "react"; -import chroma from "chroma-js"; -import { - subDays, - addWeeks, - format, - startOfDay, - startOfHour, - addHours, -} from "date-fns"; -import { useSearchParams } from "react-router-dom"; -import "react-date-range/dist/styles.css"; -import "react-date-range/dist/theme/default.css"; - import { ActiveUsersTitle, ActiveUserChart, } from "components/ActiveUserChart/ActiveUserChart"; -import { useTemplateLayoutContext } from "pages/TemplatePage/TemplateLayout"; import { HelpTooltip, HelpTooltipTitle, @@ -49,19 +50,16 @@ import { HelpTooltipContent, HelpTooltipTrigger, } from "components/HelpTooltip/HelpTooltip"; +import { Loader } from "components/Loader/Loader"; import { UserAvatar } from "components/UserAvatar/UserAvatar"; +import { useTemplateLayoutContext } from "pages/TemplatePage/TemplateLayout"; import { getLatencyColor } from "utils/latency"; -import { Loader } from "components/Loader/Loader"; -import { - insightsTemplate, - insightsUserActivity, - insightsUserLatency, -} from "api/queries/insights"; -import { entitlements } from "api/queries/entitlements"; import { getTemplatePageTitle } from "../utils"; -import { DateRange as DailyPicker, DateRangeValue } from "./DateRange"; +import type { DateRangeValue } from "./DateRange"; +import { DateRange as DailyPicker } from "./DateRange"; +import type { InsightsInterval} from "./IntervalMenu"; +import { IntervalMenu } from "./IntervalMenu"; import { lastWeeks } from "./utils"; -import { InsightsInterval, IntervalMenu } from "./IntervalMenu"; import { WeekPicker, numberOfWeeksOptions } from "./WeekPicker"; const DEFAULT_NUMBER_OF_WEEKS = numberOfWeeksOptions[0]; diff --git a/site/src/pages/TemplatePage/TemplateInsightsPage/WeekPicker.tsx b/site/src/pages/TemplatePage/TemplateInsightsPage/WeekPicker.tsx index 6b4525566eb3b..5e5cde3a9dbc4 100644 --- a/site/src/pages/TemplatePage/TemplateInsightsPage/WeekPicker.tsx +++ b/site/src/pages/TemplatePage/TemplateInsightsPage/WeekPicker.tsx @@ -3,9 +3,9 @@ import ExpandMoreOutlined from "@mui/icons-material/ExpandMoreOutlined"; import Button from "@mui/material/Button"; import Menu from "@mui/material/Menu"; import MenuItem from "@mui/material/MenuItem"; -import { type FC, useState, useRef } from "react"; -import { DateRangeValue } from "./DateRange"; import { differenceInWeeks } from "date-fns"; +import { type FC, useState, useRef } from "react"; +import type { DateRangeValue } from "./DateRange"; import { lastWeeks } from "./utils"; // There is no point in showing the period > 6 months. We prune stats older than diff --git a/site/src/pages/TemplatePage/TemplateLayout.tsx b/site/src/pages/TemplatePage/TemplateLayout.tsx index cfb0f0e1d0d94..0ba642a5908b0 100644 --- a/site/src/pages/TemplatePage/TemplateLayout.tsx +++ b/site/src/pages/TemplatePage/TemplateLayout.tsx @@ -7,17 +7,17 @@ import { } from "react"; import { useQuery } from "react-query"; import { Outlet, useLocation, useNavigate, useParams } from "react-router-dom"; -import type { AuthorizationRequest } from "api/typesGenerated"; import { checkAuthorization, getTemplateByName, getTemplateVersion, } from "api/api"; -import { useOrganizationId } from "contexts/auth/useOrganizationId"; +import type { AuthorizationRequest } from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; -import { Margins } from "components/Margins/Margins"; import { Loader } from "components/Loader/Loader"; +import { Margins } from "components/Margins/Margins"; import { TAB_PADDING_Y, TabLink, Tabs, TabsList } from "components/Tabs/Tabs"; +import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { TemplatePageHeader } from "./TemplatePageHeader"; const templatePermissions = ( diff --git a/site/src/pages/TemplatePage/TemplatePageHeader.stories.tsx b/site/src/pages/TemplatePage/TemplatePageHeader.stories.tsx index 7def82b032720..e17651d3b5427 100644 --- a/site/src/pages/TemplatePage/TemplatePageHeader.stories.tsx +++ b/site/src/pages/TemplatePage/TemplatePageHeader.stories.tsx @@ -1,6 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockTemplate, MockTemplateVersion } from "testHelpers/entities"; import { TemplatePageHeader } from "./TemplatePageHeader"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/TemplatePage/TemplatePageHeader", diff --git a/site/src/pages/TemplatePage/TemplatePageHeader.tsx b/site/src/pages/TemplatePage/TemplatePageHeader.tsx index cfa686d93d4df..7c05c60770572 100644 --- a/site/src/pages/TemplatePage/TemplatePageHeader.tsx +++ b/site/src/pages/TemplatePage/TemplatePageHeader.tsx @@ -1,31 +1,25 @@ -import { type FC } from "react"; -import { Link as RouterLink, useNavigate } from "react-router-dom"; -import { useDeletionDialogState } from "./useDeletionDialogState"; +import AddIcon from "@mui/icons-material/AddOutlined"; +import DeleteIcon from "@mui/icons-material/DeleteOutlined"; +import EditIcon from "@mui/icons-material/EditOutlined"; +import CopyIcon from "@mui/icons-material/FileCopyOutlined"; +import SettingsIcon from "@mui/icons-material/SettingsOutlined"; +import Button from "@mui/material/Button"; +import Divider from "@mui/material/Divider"; +import { type FC } from "react"; import { useQuery } from "react-query"; +import { Link as RouterLink, useNavigate } from "react-router-dom"; import { workspaces } from "api/queries/workspaces"; -import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; -import { +import type { AuthorizationResponse, Template, TemplateVersion, } from "api/typesGenerated"; - import { Avatar } from "components/Avatar/Avatar"; +import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { DeleteDialog } from "components/Dialogs/DeleteDialog/DeleteDialog"; -import { Stack } from "components/Stack/Stack"; import { Margins } from "components/Margins/Margins"; -import { - PageHeader, - PageHeaderTitle, - PageHeaderSubtitle, -} from "components/PageHeader/PageHeader"; -import Button from "@mui/material/Button"; -import AddIcon from "@mui/icons-material/AddOutlined"; -import SettingsIcon from "@mui/icons-material/SettingsOutlined"; -import DeleteIcon from "@mui/icons-material/DeleteOutlined"; -import EditIcon from "@mui/icons-material/EditOutlined"; -import CopyIcon from "@mui/icons-material/FileCopyOutlined"; +import { MemoizedInlineMarkdown } from "components/Markdown/Markdown"; import { MoreMenu, MoreMenuContent, @@ -33,9 +27,14 @@ import { MoreMenuTrigger, ThreeDotsButton, } from "components/MoreMenu/MoreMenu"; -import Divider from "@mui/material/Divider"; +import { + PageHeader, + PageHeaderTitle, + PageHeaderSubtitle, +} from "components/PageHeader/PageHeader"; import { Pill } from "components/Pill/Pill"; -import { MemoizedInlineMarkdown } from "components/Markdown/Markdown"; +import { Stack } from "components/Stack/Stack"; +import { useDeletionDialogState } from "./useDeletionDialogState"; type TemplateMenuProps = { templateName: string; diff --git a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateStats.stories.tsx b/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateStats.stories.tsx index 244d2cd2c6cf7..c13a612657515 100644 --- a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateStats.stories.tsx +++ b/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateStats.stories.tsx @@ -1,6 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockTemplate, MockTemplateVersion } from "testHelpers/entities"; import { TemplateStats } from "./TemplateStats"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/TemplatePage/TemplateStats", diff --git a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateStats.tsx b/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateStats.tsx index a846698cdcf4d..48be7e55f14f3 100644 --- a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateStats.tsx +++ b/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateStats.tsx @@ -1,12 +1,12 @@ -import { Stats, StatsItem } from "components/Stats/Stats"; -import { FC } from "react"; +import type { FC } from "react"; import { Link } from "react-router-dom"; +import type { Template, TemplateVersion } from "api/typesGenerated"; +import { Stats, StatsItem } from "components/Stats/Stats"; import { createDayString } from "utils/createDayString"; import { formatTemplateBuildTime, formatTemplateActiveDevelopers, } from "utils/templates"; -import { Template, TemplateVersion } from "api/typesGenerated"; const Language = { usedByLabel: "Used by", diff --git a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPage.tsx b/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPage.tsx index 69149d336233f..c0460c5b59d74 100644 --- a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPage.tsx +++ b/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPage.tsx @@ -1,10 +1,10 @@ -import { useTemplateLayoutContext } from "pages/TemplatePage/TemplateLayout"; -import { FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; -import { getTemplatePageTitle } from "../utils"; -import { TemplateSummaryPageView } from "./TemplateSummaryPageView"; import { useQuery } from "react-query"; import { getTemplateVersionResources } from "api/api"; +import { useTemplateLayoutContext } from "pages/TemplatePage/TemplateLayout"; +import { getTemplatePageTitle } from "../utils"; +import { TemplateSummaryPageView } from "./TemplateSummaryPageView"; export const TemplateSummaryPage: FC = () => { const { template, activeVersion } = useTemplateLayoutContext(); diff --git a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.stories.tsx b/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.stories.tsx index 0af2aa64884e4..15f17b0dfeeee 100644 --- a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.stories.tsx +++ b/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; import { MockTemplate, MockTemplateVersion, diff --git a/site/src/pages/TemplatePage/TemplateVersionsPage/TemplateVersionsPage.tsx b/site/src/pages/TemplatePage/TemplateVersionsPage/TemplateVersionsPage.tsx index 86bed4cf7082e..5d50f110d00de 100644 --- a/site/src/pages/TemplatePage/TemplateVersionsPage/TemplateVersionsPage.tsx +++ b/site/src/pages/TemplatePage/TemplateVersionsPage/TemplateVersionsPage.tsx @@ -1,3 +1,5 @@ +import { useState } from "react"; +import { Helmet } from "react-helmet-async"; import { useMutation, useQuery } from "react-query"; import { archiveTemplateVersion, @@ -8,10 +10,8 @@ import { getErrorMessage } from "api/errors"; import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; import { useTemplateLayoutContext } from "pages/TemplatePage/TemplateLayout"; -import { VersionsTable } from "./VersionsTable"; -import { useState } from "react"; -import { Helmet } from "react-helmet-async"; import { getTemplatePageTitle } from "../utils"; +import { VersionsTable } from "./VersionsTable"; const TemplateVersionsPage = () => { const { template, permissions } = useTemplateLayoutContext(); diff --git a/site/src/pages/TemplatePage/TemplateVersionsPage/VersionRow.tsx b/site/src/pages/TemplatePage/TemplateVersionsPage/VersionRow.tsx index 15f6c351943c1..07f9db564ffc2 100644 --- a/site/src/pages/TemplatePage/TemplateVersionsPage/VersionRow.tsx +++ b/site/src/pages/TemplatePage/TemplateVersionsPage/VersionRow.tsx @@ -4,11 +4,11 @@ import TableCell from "@mui/material/TableCell"; import { type FC } from "react"; import { useNavigate } from "react-router-dom"; import type { TemplateVersion } from "api/typesGenerated"; +import { InfoTooltip } from "components/InfoTooltip/InfoTooltip"; import { Pill } from "components/Pill/Pill"; import { Stack } from "components/Stack/Stack"; import { TimelineEntry } from "components/Timeline/TimelineEntry"; import { UserAvatar } from "components/UserAvatar/UserAvatar"; -import { InfoTooltip } from "components/InfoTooltip/InfoTooltip"; import { useClickableTableRow } from "hooks/useClickableTableRow"; export interface VersionRowProps { diff --git a/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.stories.tsx b/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.stories.tsx index 44e1feba47c12..b6067213b68b2 100644 --- a/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.stories.tsx +++ b/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.stories.tsx @@ -1,4 +1,5 @@ import { action } from "@storybook/addon-actions"; +import type { Meta, StoryObj } from "@storybook/react"; import { MockCanceledProvisionerJob, MockCancelingProvisionerJob, @@ -8,7 +9,6 @@ import { MockTemplateVersion, } from "testHelpers/entities"; import { VersionsTable } from "./VersionsTable"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/TemplatePage/VersionsTable", diff --git a/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.tsx b/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.tsx index 91a724a5d81cd..0ebcc7b9ea2d0 100644 --- a/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.tsx +++ b/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.tsx @@ -3,11 +3,11 @@ import TableBody from "@mui/material/TableBody"; import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableRow from "@mui/material/TableRow"; -import { Timeline } from "components/Timeline/Timeline"; import { type FC } from "react"; import type * as TypesGen from "api/typesGenerated"; import { EmptyState } from "components/EmptyState/EmptyState"; import { TableLoader } from "components/TableLoader/TableLoader"; +import { Timeline } from "components/Timeline/Timeline"; import { VersionRow } from "./VersionRow"; export const Language = { diff --git a/site/src/pages/TemplatePage/useDeletionDialogState.test.ts b/site/src/pages/TemplatePage/useDeletionDialogState.test.ts index 1858520bff06f..63a53f3d1b682 100644 --- a/site/src/pages/TemplatePage/useDeletionDialogState.test.ts +++ b/site/src/pages/TemplatePage/useDeletionDialogState.test.ts @@ -1,7 +1,7 @@ import { act, renderHook, waitFor } from "@testing-library/react"; +import * as API from "api/api"; import { MockTemplate } from "testHelpers/entities"; import { useDeletionDialogState } from "./useDeletionDialogState"; -import * as API from "api/api"; test("delete dialog starts closed", () => { const { result } = renderHook(() => diff --git a/site/src/pages/TemplatePage/utils.ts b/site/src/pages/TemplatePage/utils.ts index f95c48e13ff31..dfb07eca79eb4 100644 --- a/site/src/pages/TemplatePage/utils.ts +++ b/site/src/pages/TemplatePage/utils.ts @@ -1,4 +1,4 @@ -import { Template } from "api/typesGenerated"; +import type { Template } from "api/typesGenerated"; import { pageTitle } from "utils/page"; export const getTemplatePageTitle = (title: string, template: Template) => { diff --git a/site/src/pages/TemplateSettingsPage/Sidebar.tsx b/site/src/pages/TemplateSettingsPage/Sidebar.tsx index 1ec5b242ea4cb..6e871705468b8 100644 --- a/site/src/pages/TemplateSettingsPage/Sidebar.tsx +++ b/site/src/pages/TemplateSettingsPage/Sidebar.tsx @@ -1,7 +1,7 @@ -import ScheduleIcon from "@mui/icons-material/TimerOutlined"; import VariablesIcon from "@mui/icons-material/CodeOutlined"; -import GeneralIcon from "@mui/icons-material/SettingsOutlined"; import SecurityIcon from "@mui/icons-material/LockOutlined"; +import GeneralIcon from "@mui/icons-material/SettingsOutlined"; +import ScheduleIcon from "@mui/icons-material/TimerOutlined"; import { type FC } from "react"; import type { Template } from "api/typesGenerated"; import { ExternalAvatar } from "components/Avatar/Avatar"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsForm.tsx b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsForm.tsx index 3c540c952214b..73d6ec4ab9ec2 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsForm.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsForm.tsx @@ -1,37 +1,37 @@ import { type Interpolation, type Theme } from "@emotion/react"; +import Checkbox from "@mui/material/Checkbox"; +import MenuItem from "@mui/material/MenuItem"; import TextField from "@mui/material/TextField"; +import { type FormikContextType, type FormikTouched, useFormik } from "formik"; +import { type FC } from "react"; +import * as Yup from "yup"; import { WorkspaceAppSharingLevels, type Template, type UpdateTemplateMeta, } from "api/typesGenerated"; -import { type FormikContextType, type FormikTouched, useFormik } from "formik"; -import { type FC } from "react"; -import { - getFormHelpers, - nameValidator, - templateDisplayNameValidator, - onChangeTrimmed, - iconValidator, -} from "utils/formUtils"; -import * as Yup from "yup"; -import { IconField } from "components/IconField/IconField"; +import { EnterpriseBadge } from "components/Badges/Badges"; import { FormFields, FormSection, HorizontalForm, FormFooter, } from "components/Form/Form"; -import { Stack } from "components/Stack/Stack"; -import Checkbox from "@mui/material/Checkbox"; import { HelpTooltip, HelpTooltipContent, HelpTooltipText, HelpTooltipTrigger, } from "components/HelpTooltip/HelpTooltip"; -import { EnterpriseBadge } from "components/Badges/Badges"; -import MenuItem from "@mui/material/MenuItem"; +import { IconField } from "components/IconField/IconField"; +import { Stack } from "components/Stack/Stack"; +import { + getFormHelpers, + nameValidator, + templateDisplayNameValidator, + onChangeTrimmed, + iconValidator, +} from "utils/formUtils"; const MAX_DESCRIPTION_CHAR_LIMIT = 128; const MAX_DESCRIPTION_MESSAGE = diff --git a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.test.tsx b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.test.tsx index a025997c77625..a0849dfdd23fd 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.test.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.test.tsx @@ -1,7 +1,7 @@ import { screen, waitFor } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import * as API from "api/api"; -import { UpdateTemplateMeta } from "api/typesGenerated"; +import type { UpdateTemplateMeta } from "api/typesGenerated"; import { Language as FooterFormLanguage } from "components/FormFooter/FormFooter"; import { MockTemplate } from "testHelpers/entities"; import { diff --git a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx index 44cd7eae4747f..703a64789c986 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx @@ -3,12 +3,12 @@ import { Helmet } from "react-helmet-async"; import { useMutation, useQueryClient } from "react-query"; import { useNavigate, useParams } from "react-router-dom"; import { updateTemplateMeta } from "api/api"; -import type { UpdateTemplateMeta } from "api/typesGenerated"; import { templateByNameKey } from "api/queries/templates"; +import type { UpdateTemplateMeta } from "api/typesGenerated"; +import { displaySuccess } from "components/GlobalSnackbar/utils"; import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { useDashboard } from "modules/dashboard/useDashboard"; import { pageTitle } from "utils/page"; -import { displaySuccess } from "components/GlobalSnackbar/utils"; import { useTemplateSettings } from "../TemplateSettingsLayout"; import { TemplateSettingsPageView } from "./TemplateSettingsPageView"; diff --git a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPage.tsx b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPage.tsx index 99b3f7efa7755..31318c930a96a 100644 --- a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPage.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPage.tsx @@ -2,12 +2,12 @@ import { type FC } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { setGroupRole, setUserRole, templateACL } from "api/queries/templates"; -import { Paywall } from "components/Paywall/Paywall"; import { displaySuccess } from "components/GlobalSnackbar/utils"; +import { Paywall } from "components/Paywall/Paywall"; import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; -import { pageTitle } from "utils/page"; import { docs } from "utils/docs"; +import { pageTitle } from "utils/page"; import { useTemplateSettings } from "../TemplateSettingsLayout"; import { TemplatePermissionsPageView } from "./TemplatePermissionsPageView"; diff --git a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.stories.tsx b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.stories.tsx index fb1c43ea2b850..618d3374925e0 100644 --- a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.stories.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.stories.tsx @@ -1,10 +1,10 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockOrganization, MockTemplateACL, MockTemplateACLEmpty, } from "testHelpers/entities"; import { TemplatePermissionsPageView } from "./TemplatePermissionsPageView"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/TemplateSettingsPage/TemplatePermissionsPageView", diff --git a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx index 5adc97e67844b..db33112b20fc9 100644 --- a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx @@ -1,3 +1,6 @@ +import { type Interpolation, type Theme } from "@emotion/react"; +import PersonAdd from "@mui/icons-material/PersonAdd"; +import LoadingButton from "@mui/lab/LoadingButton"; import MenuItem from "@mui/material/MenuItem"; import Select, { type SelectProps } from "@mui/material/Select"; import Table from "@mui/material/Table"; @@ -6,9 +9,6 @@ import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; -import PersonAdd from "@mui/icons-material/PersonAdd"; -import LoadingButton from "@mui/lab/LoadingButton"; -import { type Interpolation, type Theme } from "@emotion/react"; import { type FC, useState } from "react"; import type { Group, @@ -18,9 +18,10 @@ import type { TemplateRole, TemplateUser, } from "api/typesGenerated"; -import { getGroupSubtitle } from "utils/groups"; +import { AvatarData } from "components/AvatarData/AvatarData"; +import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; +import { EmptyState } from "components/EmptyState/EmptyState"; import { GroupAvatar } from "components/GroupAvatar/GroupAvatar"; -import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; import { MoreMenu, MoreMenuContent, @@ -28,14 +29,14 @@ import { MoreMenuTrigger, ThreeDotsButton, } from "components/MoreMenu/MoreMenu"; -import { AvatarData } from "components/AvatarData/AvatarData"; -import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; -import { EmptyState } from "components/EmptyState/EmptyState"; +import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; import { Stack } from "components/Stack/Stack"; import { TableLoader } from "components/TableLoader/TableLoader"; +import { getGroupSubtitle } from "utils/groups"; +import type { + UserOrGroupAutocompleteValue} from "./UserOrGroupAutocomplete"; import { - UserOrGroupAutocomplete, - UserOrGroupAutocompleteValue, + UserOrGroupAutocomplete } from "./UserOrGroupAutocomplete"; type AddTemplateUserOrGroupProps = { diff --git a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/UserOrGroupAutocomplete.tsx b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/UserOrGroupAutocomplete.tsx index b6e332b11ba49..31681cb79224e 100644 --- a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/UserOrGroupAutocomplete.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/UserOrGroupAutocomplete.tsx @@ -1,15 +1,15 @@ +import { css } from "@emotion/react"; +import Autocomplete from "@mui/material/Autocomplete"; import CircularProgress from "@mui/material/CircularProgress"; import TextField from "@mui/material/TextField"; -import Autocomplete from "@mui/material/Autocomplete"; import { type ChangeEvent, type FC, useState } from "react"; -import { css } from "@emotion/react"; +import { useQuery } from "react-query"; +import { templaceACLAvailable } from "api/queries/templates"; import type { Group, ReducedUser } from "api/typesGenerated"; import { AvatarData } from "components/AvatarData/AvatarData"; -import { getGroupSubtitle } from "utils/groups"; import { useDebouncedFunction } from "hooks/debounce"; -import { useQuery } from "react-query"; -import { templaceACLAvailable } from "api/queries/templates"; import { prepareQuery } from "utils/filters"; +import { getGroupSubtitle } from "utils/groups"; export type UserOrGroupAutocompleteValue = ReducedUser | Group | null; diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/ScheduleDialog.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/ScheduleDialog.tsx index 08fe8e6b65927..f0de8be9232da 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/ScheduleDialog.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/ScheduleDialog.tsx @@ -1,11 +1,11 @@ -import DialogActions from "@mui/material/DialogActions"; -import { type FC } from "react"; +import { type Interpolation, type Theme } from "@emotion/react"; import Checkbox from "@mui/material/Checkbox"; +import DialogActions from "@mui/material/DialogActions"; import FormControlLabel from "@mui/material/FormControlLabel"; import { Stack } from "@mui/system"; -import { type Interpolation, type Theme } from "@emotion/react"; -import { Dialog, DialogActionButtons } from "components/Dialogs/Dialog"; +import { type FC } from "react"; import { type ConfirmDialogProps } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; +import { Dialog, DialogActionButtons } from "components/Dialogs/Dialog"; export interface ScheduleDialogProps extends ConfirmDialogProps { readonly inactiveWorkspacesToGoDormant: number; diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx index 5c95062b7fcc1..1b03b10c44ddb 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx @@ -1,19 +1,15 @@ -import TextField from "@mui/material/TextField"; -import MenuItem from "@mui/material/MenuItem"; -import Link from "@mui/material/Link"; +import { useTheme } from "@emotion/react"; import Checkbox from "@mui/material/Checkbox"; import FormControlLabel from "@mui/material/FormControlLabel"; +import Link from "@mui/material/Link"; +import MenuItem from "@mui/material/MenuItem"; import Switch from "@mui/material/Switch"; -import { FormikTouched, useFormik } from "formik"; -import { type FC, ChangeEvent, useState, useEffect } from "react"; -import { useTheme } from "@emotion/react"; +import TextField from "@mui/material/TextField"; +import type { FormikTouched} from "formik"; +import { useFormik } from "formik"; +import { useState, useEffect } from "react"; +import type { ChangeEvent, type FC } from "react"; import type { Template, UpdateTemplateMeta } from "api/typesGenerated"; -import { getFormHelpers } from "utils/formUtils"; -import { docs } from "utils/docs"; -import { - TemplateAutostartRequirementDaysValue, - calculateAutostopRequirementDaysValue, -} from "utils/schedule"; import { FormSection, HorizontalForm, @@ -22,11 +18,21 @@ import { } from "components/Form/Form"; import { Stack } from "components/Stack/Stack"; import { TemplateScheduleAutostart } from "modules/templates/TemplateScheduleAutostart/TemplateScheduleAutostart"; +import { docs } from "utils/docs"; +import { getFormHelpers } from "utils/formUtils"; +import type { + TemplateAutostartRequirementDaysValue} from "utils/schedule"; import { - useWorkspacesToGoDormant, - useWorkspacesToBeDeleted, -} from "./useWorkspacesToBeDeleted"; -import { TemplateScheduleFormValues, getValidationSchema } from "./formHelpers"; + calculateAutostopRequirementDaysValue, +} from "utils/schedule"; +import { + AutostopRequirementDaysHelperText, + AutostopRequirementWeeksHelperText, + convertAutostopRequirementDaysValue, +} from "./AutostopRequirementHelperText"; +import type { TemplateScheduleFormValues} from "./formHelpers"; +import { getValidationSchema } from "./formHelpers"; +import { ScheduleDialog } from "./ScheduleDialog"; import { ActivityBumpHelperText, DefaultTTLHelperText, @@ -35,12 +41,10 @@ import { FailureTTLHelperText, MaxTTLHelperText, } from "./TTLHelperText"; -import { ScheduleDialog } from "./ScheduleDialog"; import { - AutostopRequirementDaysHelperText, - AutostopRequirementWeeksHelperText, - convertAutostopRequirementDaysValue, -} from "./AutostopRequirementHelperText"; + useWorkspacesToGoDormant, + useWorkspacesToBeDeleted, +} from "./useWorkspacesToBeDeleted"; const MS_HOUR_CONVERSION = 3600000; const MS_DAY_CONVERSION = 86400000; diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx index 9322e424a3731..4fc696e9e9840 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx @@ -10,7 +10,8 @@ import { renderWithTemplateSettingsLayout, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; -import { TemplateScheduleFormValues, getValidationSchema } from "./formHelpers"; +import type { TemplateScheduleFormValues} from "./formHelpers"; +import { getValidationSchema } from "./formHelpers"; import TemplateSchedulePage from "./TemplateSchedulePage"; const validFormValues: TemplateScheduleFormValues = { diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.tsx index 5c8cff6184241..b0a790ce757b6 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.tsx @@ -3,12 +3,12 @@ import { Helmet } from "react-helmet-async"; import { useMutation, useQueryClient } from "react-query"; import { useNavigate, useParams } from "react-router-dom"; import { updateTemplateMeta } from "api/api"; -import type { UpdateTemplateMeta } from "api/typesGenerated"; import { templateByNameKey } from "api/queries/templates"; +import type { UpdateTemplateMeta } from "api/typesGenerated"; +import { displaySuccess } from "components/GlobalSnackbar/utils"; import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { useDashboard } from "modules/dashboard/useDashboard"; import { pageTitle } from "utils/page"; -import { displaySuccess } from "components/GlobalSnackbar/utils"; import { useTemplateSettings } from "../TemplateSettingsLayout"; import { TemplateSchedulePageView } from "./TemplateSchedulePageView"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.stories.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.stories.tsx index 65b8a36a5cff0..ec8da157cc43a 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.stories.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.stories.tsx @@ -1,8 +1,8 @@ import { action } from "@storybook/addon-actions"; -import { Meta, StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; +import { QueryClient, QueryClientProvider } from "react-query"; import { MockTemplate } from "testHelpers/entities"; import { TemplateSchedulePageView } from "./TemplateSchedulePageView"; -import { QueryClient, QueryClientProvider } from "react-query"; const queryClient = new QueryClient({ defaultOptions: { diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/formHelpers.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/formHelpers.tsx index 8c6baa8106e7a..a4be76a2543af 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/formHelpers.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/formHelpers.tsx @@ -1,9 +1,9 @@ -import { UpdateTemplateMeta } from "api/typesGenerated"; -import { +import * as Yup from "yup"; +import type { UpdateTemplateMeta } from "api/typesGenerated"; +import type { TemplateAutostartRequirementDaysValue, TemplateAutostopRequirementDaysValue, } from "utils/schedule"; -import * as Yup from "yup"; export interface TemplateScheduleFormValues extends Omit< diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/useWorkspacesToBeDeleted.ts b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/useWorkspacesToBeDeleted.ts index 19164c48107fa..978825dd00829 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/useWorkspacesToBeDeleted.ts +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/useWorkspacesToBeDeleted.ts @@ -1,7 +1,7 @@ import { compareAsc } from "date-fns"; -import { Workspace, Template } from "api/typesGenerated"; -import { TemplateScheduleFormValues } from "./formHelpers"; +import type { Workspace, Template } from "api/typesGenerated"; import { useWorkspacesData } from "pages/WorkspacesPage/data"; +import type { TemplateScheduleFormValues } from "./formHelpers"; export const useWorkspacesToGoDormant = ( template: Template, diff --git a/site/src/pages/TemplateSettingsPage/TemplateSettingsLayout.tsx b/site/src/pages/TemplateSettingsPage/TemplateSettingsLayout.tsx index 01c4d9971697b..207b828b1ada7 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSettingsLayout.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSettingsLayout.tsx @@ -2,8 +2,6 @@ import { createContext, type FC, Suspense, useContext } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { Outlet, useParams } from "react-router-dom"; -import { pageTitle } from "utils/page"; -import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { checkAuthorization } from "api/queries/authCheck"; import { templateByName } from "api/queries/templates"; import type { AuthorizationResponse, Template } from "api/typesGenerated"; @@ -11,6 +9,8 @@ import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Loader } from "components/Loader/Loader"; import { Margins } from "components/Margins/Margins"; import { Stack } from "components/Stack/Stack"; +import { useOrganizationId } from "contexts/auth/useOrganizationId"; +import { pageTitle } from "utils/page"; import { Sidebar } from "./Sidebar"; const TemplateSettings = createContext< diff --git a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariableField.tsx b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariableField.tsx index 1c9cbfacb944a..bb9d9f069f740 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariableField.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariableField.tsx @@ -2,8 +2,9 @@ import FormControlLabel from "@mui/material/FormControlLabel"; import Radio from "@mui/material/Radio"; import RadioGroup from "@mui/material/RadioGroup"; import TextField from "@mui/material/TextField"; -import { TemplateVersionVariable } from "api/typesGenerated"; -import { FC, useState } from "react"; +import type { FC} from "react"; +import { useState } from "react"; +import type { TemplateVersionVariable } from "api/typesGenerated"; export const SensitiveVariableHelperText = () => { return ( diff --git a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesForm.tsx b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesForm.tsx index a455b3dae4618..8b6f0ae15d229 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesForm.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesForm.tsx @@ -1,19 +1,20 @@ -import { +import type { FormikContextType, FormikTouched} from "formik"; +import { useFormik } from "formik"; +import type { FC } from "react"; +import * as Yup from "yup"; +import type { CreateTemplateVersionRequest, TemplateVersion, TemplateVersionVariable, VariableValue, } from "api/typesGenerated"; -import { FormikContextType, FormikTouched, useFormik } from "formik"; -import { FC } from "react"; -import { getFormHelpers } from "utils/formUtils"; -import * as Yup from "yup"; import { FormFields, FormSection, HorizontalForm, FormFooter, } from "components/Form/Form"; +import { getFormHelpers } from "utils/formUtils"; import { SensitiveVariableHelperText, TemplateVariableField, diff --git a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.test.tsx b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.test.tsx index 2ce13b21fbf10..c123a317691e5 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.test.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.test.tsx @@ -1,11 +1,6 @@ import { screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; -import { - renderWithTemplateSettingsLayout, - waitForLoaderToBeRemoved, -} from "testHelpers/renderHelpers"; import * as API from "api/api"; -import TemplateVariablesPage from "./TemplateVariablesPage"; import { Language as FooterFormLanguage } from "components/FormFooter/FormFooter"; import { MockTemplate, @@ -14,7 +9,12 @@ import { MockTemplateVersionVariable2, MockTemplateVersion2, } from "testHelpers/entities"; +import { + renderWithTemplateSettingsLayout, + waitForLoaderToBeRemoved, +} from "testHelpers/renderHelpers"; import { delay } from "utils/delay"; +import TemplateVariablesPage from "./TemplateVariablesPage"; const validFormValues = { first_variable: "Hello world", diff --git a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.tsx b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.tsx index e98bde030a72a..50e21d83acb2e 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPage.tsx @@ -2,22 +2,22 @@ import { useCallback, type FC } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { useNavigate, useParams } from "react-router-dom"; -import type { - CreateTemplateVersionRequest, - TemplateVersionVariable, - VariableValue, -} from "api/typesGenerated"; -import { displaySuccess } from "components/GlobalSnackbar/utils"; -import { useOrganizationId } from "contexts/auth/useOrganizationId"; -import { pageTitle } from "utils/page"; import { createAndBuildTemplateVersion, templateVersion, templateVersionVariables, updateActiveTemplateVersion, } from "api/queries/templates"; +import type { + CreateTemplateVersionRequest, + TemplateVersionVariable, + VariableValue, +} from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; +import { displaySuccess } from "components/GlobalSnackbar/utils"; import { Loader } from "components/Loader/Loader"; +import { useOrganizationId } from "contexts/auth/useOrganizationId"; +import { pageTitle } from "utils/page"; import { useTemplateSettings } from "../TemplateSettingsLayout"; import { TemplateVariablesPageView } from "./TemplateVariablesPageView"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.stories.tsx b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.stories.tsx index 44564883798fc..ee03b8c3f3435 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.stories.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.stories.tsx @@ -1,3 +1,4 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { mockApiError, MockTemplateVersion, @@ -8,7 +9,6 @@ import { MockTemplateVersionVariable5, } from "testHelpers/entities"; import { TemplateVariablesPageView } from "./TemplateVariablesPageView"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/TemplateSettingsPage/TemplateVariablesPageView", diff --git a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.tsx b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.tsx index 5a2f1e9d83f22..1cf91f6e07084 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.tsx @@ -5,8 +5,8 @@ import type { TemplateVersionVariable, } from "api/typesGenerated"; import { Alert } from "components/Alert/Alert"; -import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; import { ErrorAlert } from "components/Alert/ErrorAlert"; +import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; import { Stack } from "components/Stack/Stack"; import { TemplateVariablesForm } from "./TemplateVariablesForm"; diff --git a/site/src/pages/TemplateVersionEditorPage/FileDialog.tsx b/site/src/pages/TemplateVersionEditorPage/FileDialog.tsx index e9b7e1a245176..5611db5ab0066 100644 --- a/site/src/pages/TemplateVersionEditorPage/FileDialog.tsx +++ b/site/src/pages/TemplateVersionEditorPage/FileDialog.tsx @@ -1,7 +1,7 @@ import TextField from "@mui/material/TextField"; +import { type ChangeEvent, type FC, useState } from "react"; import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { Stack } from "components/Stack/Stack"; -import { type ChangeEvent, type FC, useState } from "react"; import { type FileTree, isFolder, validatePath } from "utils/filetree"; interface CreateFileDialogProps { diff --git a/site/src/pages/TemplateVersionEditorPage/MissingTemplateVariablesDialog.tsx b/site/src/pages/TemplateVersionEditorPage/MissingTemplateVariablesDialog.tsx index 2d50c5bb86773..b28568a8ca944 100644 --- a/site/src/pages/TemplateVersionEditorPage/MissingTemplateVariablesDialog.tsx +++ b/site/src/pages/TemplateVersionEditorPage/MissingTemplateVariablesDialog.tsx @@ -1,20 +1,20 @@ import { css } from "@emotion/css"; import { type Interpolation, type Theme } from "@emotion/react"; +import Button from "@mui/material/Button"; import Dialog from "@mui/material/Dialog"; +import DialogActions from "@mui/material/DialogActions"; import DialogContent from "@mui/material/DialogContent"; import DialogContentText from "@mui/material/DialogContentText"; import DialogTitle from "@mui/material/DialogTitle"; -import { type DialogProps } from "components/Dialogs/Dialog"; import { type FC, useEffect, useState } from "react"; -import { FormFields, VerticalForm } from "components/Form/Form"; import type { TemplateVersionVariable, VariableValue, } from "api/typesGenerated"; -import DialogActions from "@mui/material/DialogActions"; -import Button from "@mui/material/Button"; -import { VariableInput } from "pages/CreateTemplatePage/VariableInput"; +import { type DialogProps } from "components/Dialogs/Dialog"; +import { FormFields, VerticalForm } from "components/Form/Form"; import { Loader } from "components/Loader/Loader"; +import { VariableInput } from "pages/CreateTemplatePage/VariableInput"; export type MissingTemplateVariablesDialogProps = Omit< DialogProps, diff --git a/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.stories.tsx b/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.stories.tsx index 818f92fac6531..5097d100cdca8 100644 --- a/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.stories.tsx +++ b/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.stories.tsx @@ -1,5 +1,5 @@ -import type { Meta, StoryObj } from "@storybook/react"; import { useArgs } from "@storybook/preview-api"; +import type { Meta, StoryObj } from "@storybook/react"; import { chromatic } from "testHelpers/chromatic"; import { MockTemplateVersion } from "testHelpers/entities"; import { ProvisionerTagsPopover } from "./ProvisionerTagsPopover"; diff --git a/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.test.tsx b/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.test.tsx index 5db8a90f80bd2..a6b793fe689f6 100644 --- a/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.test.tsx +++ b/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.test.tsx @@ -1,8 +1,8 @@ -import { renderComponent } from "testHelpers/renderHelpers"; -import { ProvisionerTagsPopover } from "./ProvisionerTagsPopover"; import { fireEvent, screen } from "@testing-library/react"; -import { MockTemplateVersion } from "testHelpers/entities"; import userEvent from "@testing-library/user-event"; +import { MockTemplateVersion } from "testHelpers/entities"; +import { renderComponent } from "testHelpers/renderHelpers"; +import { ProvisionerTagsPopover } from "./ProvisionerTagsPopover"; let tags = MockTemplateVersion.job.tags; diff --git a/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.tsx b/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.tsx index 07c5f7df0796d..76022825e0104 100644 --- a/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.tsx +++ b/site/src/pages/TemplateVersionEditorPage/ProvisionerTagsPopover.tsx @@ -1,23 +1,23 @@ -import { Stack } from "components/Stack/Stack"; +import AddIcon from "@mui/icons-material/Add"; +import ExpandMoreOutlined from "@mui/icons-material/ExpandMoreOutlined"; +import Button from "@mui/material/Button"; +import Link from "@mui/material/Link"; +import TextField from "@mui/material/TextField"; +import useTheme from "@mui/system/useTheme"; +import { useFormik } from "formik"; +import { Fragment, type FC } from "react"; +import * as Yup from "yup"; +import { FormFields, FormSection, VerticalForm } from "components/Form/Form"; import { TopbarButton } from "components/FullPageLayout/Topbar"; import { Popover, PopoverContent, PopoverTrigger, } from "components/Popover/Popover"; +import { Stack } from "components/Stack/Stack"; import { ProvisionerTag } from "pages/HealthPage/ProvisionerDaemonsPage"; -import { Fragment, type FC } from "react"; -import useTheme from "@mui/system/useTheme"; -import { useFormik } from "formik"; -import * as Yup from "yup"; -import { getFormHelpers, onChangeTrimmed } from "utils/formUtils"; -import { FormFields, FormSection, VerticalForm } from "components/Form/Form"; -import TextField from "@mui/material/TextField"; -import Button from "@mui/material/Button"; -import ExpandMoreOutlined from "@mui/icons-material/ExpandMoreOutlined"; -import AddIcon from "@mui/icons-material/Add"; -import Link from "@mui/material/Link"; import { docs } from "utils/docs"; +import { getFormHelpers, onChangeTrimmed } from "utils/formUtils"; const initialValues = { key: "", diff --git a/site/src/pages/TemplateVersionEditorPage/PublishTemplateVersionDialog.tsx b/site/src/pages/TemplateVersionEditorPage/PublishTemplateVersionDialog.tsx index d572bcdef2be9..b4e66480df7bc 100644 --- a/site/src/pages/TemplateVersionEditorPage/PublishTemplateVersionDialog.tsx +++ b/site/src/pages/TemplateVersionEditorPage/PublishTemplateVersionDialog.tsx @@ -1,15 +1,15 @@ -import { DialogProps } from "components/Dialogs/Dialog"; -import { FC } from "react"; -import { getFormHelpers } from "utils/formUtils"; -import { FormFields } from "components/Form/Form"; +import Checkbox from "@mui/material/Checkbox"; +import FormControlLabel from "@mui/material/FormControlLabel"; +import TextField from "@mui/material/TextField"; import { useFormik } from "formik"; +import type { FC } from "react"; import * as Yup from "yup"; -import { PublishVersionData } from "pages/TemplateVersionEditorPage/types"; -import TextField from "@mui/material/TextField"; import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; -import Checkbox from "@mui/material/Checkbox"; -import FormControlLabel from "@mui/material/FormControlLabel"; +import type { DialogProps } from "components/Dialogs/Dialog"; +import { FormFields } from "components/Form/Form"; import { Stack } from "components/Stack/Stack"; +import type { PublishVersionData } from "pages/TemplateVersionEditorPage/types"; +import { getFormHelpers } from "utils/formUtils"; export const Language = { versionNameLabel: "Version name", diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx index 879ddc3abbc76..e830bed8123bd 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx @@ -1,15 +1,16 @@ -import Button from "@mui/material/Button"; -import IconButton from "@mui/material/IconButton"; -import Tooltip from "@mui/material/Tooltip"; -import CreateIcon from "@mui/icons-material/AddOutlined"; -import { Link as RouterLink } from "react-router-dom"; import { type Interpolation, type Theme, useTheme } from "@emotion/react"; -import { type FC, useCallback, useEffect, useRef, useState } from "react"; -import AlertTitle from "@mui/material/AlertTitle"; -import ButtonGroup from "@mui/material/ButtonGroup"; +import CreateIcon from "@mui/icons-material/AddOutlined"; import ArrowBackOutlined from "@mui/icons-material/ArrowBackOutlined"; import CloseOutlined from "@mui/icons-material/CloseOutlined"; import PlayArrowOutlined from "@mui/icons-material/PlayArrowOutlined"; +import WarningOutlined from "@mui/icons-material/WarningOutlined"; +import AlertTitle from "@mui/material/AlertTitle"; +import Button from "@mui/material/Button"; +import ButtonGroup from "@mui/material/ButtonGroup"; +import IconButton from "@mui/material/IconButton"; +import Tooltip from "@mui/material/Tooltip"; +import { type FC, useCallback, useEffect, useRef, useState } from "react"; +import { Link as RouterLink } from "react-router-dom"; import type { ProvisionerJobLog, Template, @@ -19,13 +20,27 @@ import type { WorkspaceResource, } from "api/typesGenerated"; import { Alert, AlertDetail } from "components/Alert/Alert"; +import { Sidebar } from "components/FullPageLayout/Sidebar"; +import { + Topbar, + TopbarAvatar, + TopbarButton, + TopbarData, + TopbarDivider, + TopbarIconButton, +} from "components/FullPageLayout/Topbar"; +import { Loader } from "components/Loader/Loader"; +import { isBinaryData } from "modules/templates/TemplateFiles/isBinaryData"; +import { TemplateFileTree } from "modules/templates/TemplateFiles/TemplateFileTree"; import { TemplateResourcesTable } from "modules/templates/TemplateResourcesTable/TemplateResourcesTable"; import { WorkspaceBuildLogs } from "modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; -import { PublishVersionData } from "pages/TemplateVersionEditorPage/types"; +import type { PublishVersionData } from "pages/TemplateVersionEditorPage/types"; +import { MONOSPACE_FONT_FAMILY } from "theme/constants"; +import type { + FileTree} from "utils/filetree"; import { createFile, existsFile, - FileTree, getFileText, isFolder, moveFile, @@ -37,25 +52,11 @@ import { DeleteFileDialog, RenameFileDialog, } from "./FileDialog"; -import { TemplateFileTree } from "modules/templates/TemplateFiles/TemplateFileTree"; import { MissingTemplateVariablesDialog } from "./MissingTemplateVariablesDialog"; import { MonacoEditor } from "./MonacoEditor"; +import { ProvisionerTagsPopover } from "./ProvisionerTagsPopover"; import { PublishTemplateVersionDialog } from "./PublishTemplateVersionDialog"; import { TemplateVersionStatusBadge } from "./TemplateVersionStatusBadge"; -import { MONOSPACE_FONT_FAMILY } from "theme/constants"; -import { Loader } from "components/Loader/Loader"; -import { - Topbar, - TopbarAvatar, - TopbarButton, - TopbarData, - TopbarDivider, - TopbarIconButton, -} from "components/FullPageLayout/Topbar"; -import { Sidebar } from "components/FullPageLayout/Sidebar"; -import { ProvisionerTagsPopover } from "./ProvisionerTagsPopover"; -import WarningOutlined from "@mui/icons-material/WarningOutlined"; -import { isBinaryData } from "modules/templates/TemplateFiles/isBinaryData"; type Tab = "logs" | "resources" | undefined; // Undefined is to hide the tab diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx index 6fbd90ccf3ac5..a8b35878f9065 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx @@ -1,11 +1,14 @@ -import { - renderWithAuth, - waitForLoaderToBeRemoved, -} from "testHelpers/renderHelpers"; -import TemplateVersionEditorPage from "./TemplateVersionEditorPage"; import { render, screen, waitFor, within } from "@testing-library/react"; -import userEvent, { UserEvent } from "@testing-library/user-event"; +import type { UserEvent } from "@testing-library/user-event"; +import userEvent from "@testing-library/user-event"; +import { rest } from "msw"; +import { QueryClient } from "react-query"; +import { RouterProvider, createMemoryRouter } from "react-router-dom"; import * as api from "api/api"; +import { templateVersionVariablesKey } from "api/queries/templates"; +import type { TemplateVersion } from "api/typesGenerated"; +import { AppProviders } from "App"; +import { RequireAuth } from "contexts/auth/RequireAuth"; import { MockTemplate, MockTemplateVersion, @@ -13,15 +16,13 @@ import { MockTemplateVersionVariable2, MockWorkspaceBuildLogs, } from "testHelpers/entities"; -import { Language } from "./PublishTemplateVersionDialog"; -import { QueryClient } from "react-query"; -import { templateVersionVariablesKey } from "api/queries/templates"; -import { RouterProvider, createMemoryRouter } from "react-router-dom"; -import { RequireAuth } from "contexts/auth/RequireAuth"; +import { + renderWithAuth, + waitForLoaderToBeRemoved, +} from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; -import { rest } from "msw"; -import { AppProviders } from "App"; -import { TemplateVersion } from "api/typesGenerated"; +import { Language } from "./PublishTemplateVersionDialog"; +import TemplateVersionEditorPage from "./TemplateVersionEditorPage"; // For some reason this component in Jest is throwing a MUI style warning so, // since we don't need it for this test, we can mock it out diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx index 9a96c1ae1798b..6c075b2e9b594 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx @@ -2,14 +2,8 @@ import { type FC, useEffect, useState } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { useNavigate, useParams, useSearchParams } from "react-router-dom"; -import { TemplateVersionEditor } from "./TemplateVersionEditor"; -import { useOrganizationId } from "contexts/auth/useOrganizationId"; -import { pageTitle } from "utils/page"; import { patchTemplateVersion, updateActiveTemplateVersion } from "api/api"; -import type { - PatchTemplateVersionRequest, - TemplateVersion, -} from "api/typesGenerated"; +import { file, uploadFile } from "api/queries/files"; import { createTemplateVersion, resources, @@ -17,13 +11,20 @@ import { templateVersionByName, templateVersionVariables, } from "api/queries/templates"; -import { file, uploadFile } from "api/queries/files"; -import { TarReader, TarWriter } from "utils/tar"; -import { FileTree, traverse } from "utils/filetree"; -import { createTemplateVersionFileTree } from "utils/templateVersion"; +import type { + PatchTemplateVersionRequest, + TemplateVersion, +} from "api/typesGenerated"; import { displayError } from "components/GlobalSnackbar/utils"; import { FullScreenLoader } from "components/Loader/FullScreenLoader"; +import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { useWatchVersionLogs } from "modules/templates/useWatchVersionLogs"; +import type { FileTree} from "utils/filetree"; +import { traverse } from "utils/filetree"; +import { pageTitle } from "utils/page"; +import { TarReader, TarWriter } from "utils/tar"; +import { createTemplateVersionFileTree } from "utils/templateVersion"; +import { TemplateVersionEditor } from "./TemplateVersionEditor"; type Params = { version: string; diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionStatusBadge.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionStatusBadge.tsx index 2ec858e9eef40..e619434d7dedd 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionStatusBadge.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionStatusBadge.tsx @@ -1,9 +1,9 @@ -import { type FC, type ReactNode } from "react"; -import ErrorIcon from "@mui/icons-material/ErrorOutline"; import CheckIcon from "@mui/icons-material/CheckOutlined"; +import ErrorIcon from "@mui/icons-material/ErrorOutline"; +import { type FC, type ReactNode } from "react"; import type { TemplateVersion } from "api/typesGenerated"; -import { type ThemeRole } from "theme/roles"; import { Pill, PillSpinner } from "components/Pill/Pill"; +import { type ThemeRole } from "theme/roles"; interface TemplateVersionStatusBadgeProps { version: TemplateVersion; diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPage.test.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPage.test.tsx index 6b386ab39469f..9430866207634 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPage.test.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPage.test.tsx @@ -1,11 +1,11 @@ +import { screen, within } from "@testing-library/react"; import { renderWithAuth, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; -import TemplateVersionPage from "./TemplateVersionPage"; -import * as templateVersionUtils from "utils/templateVersion"; -import { screen, within } from "@testing-library/react"; import * as CreateDayString from "utils/createDayString"; +import * as templateVersionUtils from "utils/templateVersion"; +import TemplateVersionPage from "./TemplateVersionPage"; const TEMPLATE_NAME = "coder-ts"; const VERSION_NAME = "12345"; diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPage.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPage.tsx index bb307dac66316..917b723e48e4a 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPage.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPage.tsx @@ -2,16 +2,16 @@ import { type FC, useMemo } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { useParams } from "react-router-dom"; -import { usePermissions } from "contexts/auth/usePermissions"; -import { useOrganizationId } from "contexts/auth/useOrganizationId"; -import { pageTitle } from "utils/page"; -import TemplateVersionPageView from "./TemplateVersionPageView"; import { templateByName, templateFiles, templateVersion, templateVersionByName, } from "api/queries/templates"; +import { useOrganizationId } from "contexts/auth/useOrganizationId"; +import { usePermissions } from "contexts/auth/usePermissions"; +import { pageTitle } from "utils/page"; +import TemplateVersionPageView from "./TemplateVersionPageView"; type Params = { version: string; diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx index 8820009bd21f9..c6a58624a7da2 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx @@ -1,14 +1,15 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { mockApiError, MockTemplate, MockTemplateVersion, MockTemplateVersionWithMarkdownMessage, } from "testHelpers/entities"; +import type { + TemplateVersionPageViewProps} from "./TemplateVersionPageView"; import { - TemplateVersionPageView, - TemplateVersionPageViewProps, + TemplateVersionPageView } from "./TemplateVersionPageView"; -import type { Meta, StoryObj } from "@storybook/react"; const readmeContent = `--- name:Template test diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx index 13ccb9bb7008b..4bd2abc85aa8b 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx @@ -1,8 +1,10 @@ -import Button from "@mui/material/Button"; import AddIcon from "@mui/icons-material/Add"; import EditIcon from "@mui/icons-material/Edit"; +import Button from "@mui/material/Button"; import { type FC } from "react"; import { Link as RouterLink } from "react-router-dom"; +import type { TemplateVersion } from "api/typesGenerated"; +import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Loader } from "components/Loader/Loader"; import { Margins } from "components/Margins/Margins"; import { @@ -13,11 +15,9 @@ import { import { Stack } from "components/Stack/Stack"; import { Stats, StatsItem } from "components/Stats/Stats"; import { TemplateFiles } from "modules/templates/TemplateFiles/TemplateFiles"; -import type { TemplateVersion } from "api/typesGenerated"; -import { createDayString } from "utils/createDayString"; -import { TemplateVersionFiles } from "utils/templateVersion"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; import { TemplateUpdateMessage } from "modules/templates/TemplateUpdateMessage"; +import { createDayString } from "utils/createDayString"; +import type { TemplateVersionFiles } from "utils/templateVersion"; export interface TemplateVersionPageViewProps { versionName: string; diff --git a/site/src/pages/TemplatesPage/CreateTemplateButton.stories.tsx b/site/src/pages/TemplatesPage/CreateTemplateButton.stories.tsx index c1c965662c604..4022fd3b07086 100644 --- a/site/src/pages/TemplatesPage/CreateTemplateButton.stories.tsx +++ b/site/src/pages/TemplatesPage/CreateTemplateButton.stories.tsx @@ -1,6 +1,6 @@ -import { CreateTemplateButton } from "./CreateTemplateButton"; import type { Meta, StoryObj } from "@storybook/react"; import { userEvent, screen } from "@storybook/test"; +import { CreateTemplateButton } from "./CreateTemplateButton"; const meta: Meta = { title: "pages/TemplatesPage/CreateTemplateButton", diff --git a/site/src/pages/TemplatesPage/CreateTemplateButton.tsx b/site/src/pages/TemplatesPage/CreateTemplateButton.tsx index 12057045d6a21..f5b2b68a3e184 100644 --- a/site/src/pages/TemplatesPage/CreateTemplateButton.tsx +++ b/site/src/pages/TemplatesPage/CreateTemplateButton.tsx @@ -1,15 +1,15 @@ -import Button from "@mui/material/Button"; import AddIcon from "@mui/icons-material/AddOutlined"; +import Inventory2 from "@mui/icons-material/Inventory2"; +import NoteAddOutlined from "@mui/icons-material/NoteAddOutlined"; +import UploadOutlined from "@mui/icons-material/UploadOutlined"; +import Button from "@mui/material/Button"; +import type { FC } from "react"; import { MoreMenu, MoreMenuContent, MoreMenuItem, MoreMenuTrigger, } from "components/MoreMenu/MoreMenu"; -import NoteAddOutlined from "@mui/icons-material/NoteAddOutlined"; -import UploadOutlined from "@mui/icons-material/UploadOutlined"; -import Inventory2 from "@mui/icons-material/Inventory2"; -import { FC } from "react"; type CreateTemplateButtonProps = { onNavigate: (path: string) => void; diff --git a/site/src/pages/TemplatesPage/EmptyTemplates.tsx b/site/src/pages/TemplatesPage/EmptyTemplates.tsx index 372c3dd326a30..7a0a537482950 100644 --- a/site/src/pages/TemplatesPage/EmptyTemplates.tsx +++ b/site/src/pages/TemplatesPage/EmptyTemplates.tsx @@ -1,8 +1,8 @@ import { type Interpolation, type Theme } from "@emotion/react"; import Button from "@mui/material/Button"; import Link from "@mui/material/Link"; -import { Link as RouterLink } from "react-router-dom"; import { type FC } from "react"; +import { Link as RouterLink } from "react-router-dom"; import type { TemplateExample } from "api/typesGenerated"; import { CodeExample } from "components/CodeExample/CodeExample"; import { Stack } from "components/Stack/Stack"; diff --git a/site/src/pages/TemplatesPage/TemplatesPage.test.tsx b/site/src/pages/TemplatesPage/TemplatesPage.test.tsx index b91c4aa96e1bd..670362416338b 100644 --- a/site/src/pages/TemplatesPage/TemplatesPage.test.tsx +++ b/site/src/pages/TemplatesPage/TemplatesPage.test.tsx @@ -1,9 +1,9 @@ import { render, screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { RouterProvider, createMemoryRouter } from "react-router-dom"; import { AppProviders } from "App"; import { RequireAuth } from "contexts/auth/RequireAuth"; -import { RouterProvider, createMemoryRouter } from "react-router-dom"; import TemplatesPage from "./TemplatesPage"; -import userEvent from "@testing-library/user-event"; test("create template from scratch", async () => { const user = userEvent.setup(); diff --git a/site/src/pages/TemplatesPage/TemplatesPageView.tsx b/site/src/pages/TemplatesPage/TemplatesPageView.tsx index 9b71a3ca3e15b..dbe671b58f954 100644 --- a/site/src/pages/TemplatesPage/TemplatesPageView.tsx +++ b/site/src/pages/TemplatesPage/TemplatesPageView.tsx @@ -1,5 +1,7 @@ import { type Interpolation, type Theme } from "@emotion/react"; +import ArrowForwardOutlined from "@mui/icons-material/ArrowForwardOutlined"; import Button from "@mui/material/Button"; +import Skeleton from "@mui/material/Skeleton"; import Table from "@mui/material/Table"; import TableBody from "@mui/material/TableBody"; import TableCell from "@mui/material/TableCell"; @@ -8,12 +10,21 @@ import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; import { type FC } from "react"; import { useNavigate } from "react-router-dom"; -import { createDayString } from "utils/createDayString"; -import { - formatTemplateBuildTime, - formatTemplateActiveDevelopers, -} from "utils/templates"; +import type { Template, TemplateExample } from "api/typesGenerated"; +import { ErrorAlert } from "components/Alert/ErrorAlert"; +import { ExternalAvatar } from "components/Avatar/Avatar"; import { AvatarData } from "components/AvatarData/AvatarData"; +import { AvatarDataSkeleton } from "components/AvatarData/AvatarDataSkeleton"; +import { DeprecatedBadge } from "components/Badges/Badges"; +import { + HelpTooltip, + HelpTooltipContent, + HelpTooltipLink, + HelpTooltipLinksGroup, + HelpTooltipText, + HelpTooltipTitle, + HelpTooltipTrigger, +} from "components/HelpTooltip/HelpTooltip"; import { Margins } from "components/Margins/Margins"; import { PageHeader, @@ -25,26 +36,15 @@ import { TableLoaderSkeleton, TableRowSkeleton, } from "components/TableLoader/TableLoader"; -import { - HelpTooltip, - HelpTooltipContent, - HelpTooltipLink, - HelpTooltipLinksGroup, - HelpTooltipText, - HelpTooltipTitle, - HelpTooltipTrigger, -} from "components/HelpTooltip/HelpTooltip"; -import { EmptyTemplates } from "./EmptyTemplates"; import { useClickableTableRow } from "hooks/useClickableTableRow"; -import type { Template, TemplateExample } from "api/typesGenerated"; -import ArrowForwardOutlined from "@mui/icons-material/ArrowForwardOutlined"; -import { ExternalAvatar } from "components/Avatar/Avatar"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; +import { createDayString } from "utils/createDayString"; import { docs } from "utils/docs"; -import Skeleton from "@mui/material/Skeleton"; -import { AvatarDataSkeleton } from "components/AvatarData/AvatarDataSkeleton"; -import { DeprecatedBadge } from "components/Badges/Badges"; +import { + formatTemplateBuildTime, + formatTemplateActiveDevelopers, +} from "utils/templates"; import { CreateTemplateButton } from "./CreateTemplateButton"; +import { EmptyTemplates } from "./EmptyTemplates"; export const Language = { developerCount: (activeCount: number): string => { diff --git a/site/src/pages/TerminalPage/TerminalAlerts.tsx b/site/src/pages/TerminalPage/TerminalAlerts.tsx index ba4f8a8470b27..6497d133be036 100644 --- a/site/src/pages/TerminalPage/TerminalAlerts.tsx +++ b/site/src/pages/TerminalPage/TerminalAlerts.tsx @@ -1,7 +1,8 @@ import Button from "@mui/material/Button"; import Link from "@mui/material/Link"; -import { Alert, AlertProps } from "components/Alert/Alert"; import { type FC, useState } from "react"; +import type { AlertProps } from "components/Alert/Alert"; +import { Alert } from "components/Alert/Alert"; import { docs } from "utils/docs"; export const ErrorScriptAlert: FC = () => { diff --git a/site/src/pages/TerminalPage/TerminalPage.test.tsx b/site/src/pages/TerminalPage/TerminalPage.test.tsx index c6f9aee13629a..3199713338d23 100644 --- a/site/src/pages/TerminalPage/TerminalPage.test.tsx +++ b/site/src/pages/TerminalPage/TerminalPage.test.tsx @@ -2,19 +2,19 @@ import { waitFor } from "@testing-library/react"; import "jest-canvas-mock"; import WS from "jest-websocket-mock"; import { rest } from "msw"; +import { TextDecoder, TextEncoder } from "util"; +import * as API from "api/api"; import { MockUser, MockWorkspace, MockWorkspaceAgent, } from "testHelpers/entities"; -import { TextDecoder, TextEncoder } from "util"; import { renderWithAuth, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; import TerminalPage, { Language } from "./TerminalPage"; -import * as API from "api/api"; Object.defineProperty(window, "matchMedia", { writable: true, diff --git a/site/src/pages/TerminalPage/TerminalPage.tsx b/site/src/pages/TerminalPage/TerminalPage.tsx index 312200d24d0f7..22911b19ed44b 100644 --- a/site/src/pages/TerminalPage/TerminalPage.tsx +++ b/site/src/pages/TerminalPage/TerminalPage.tsx @@ -1,18 +1,23 @@ import { type Interpolation, type Theme } from "@emotion/react"; import { type FC, useCallback, useEffect, useRef, useState } from "react"; import { Helmet } from "react-helmet-async"; +import { useQuery } from "react-query"; import { useNavigate, useParams, useSearchParams } from "react-router-dom"; import { v4 as uuidv4 } from "uuid"; import * as XTerm from "xterm"; -import { WebglAddon } from "xterm-addon-webgl"; import { CanvasAddon } from "xterm-addon-canvas"; import { FitAddon } from "xterm-addon-fit"; -import { WebLinksAddon } from "xterm-addon-web-links"; import { Unicode11Addon } from "xterm-addon-unicode11"; +import { WebLinksAddon } from "xterm-addon-web-links"; +import { WebglAddon } from "xterm-addon-webgl"; import "xterm/css/xterm.css"; +import { deploymentConfig } from "api/queries/deployment"; +import { workspaceByOwnerAndName } from "api/queries/workspaces"; +import { useProxy } from "contexts/ProxyContext"; +import { ThemeOverride } from "contexts/ThemeProvider"; +import themes from "theme"; import { MONOSPACE_FONT_FAMILY } from "theme/constants"; import { pageTitle } from "utils/page"; -import { useProxy } from "contexts/ProxyContext"; import { openMaybePortForwardedURL } from "utils/portForward"; import { terminalWebsocketUrl } from "utils/terminal"; import { getMatchingAgentOrFirst } from "utils/workspace"; @@ -22,11 +27,6 @@ import { LoadedScriptsAlert, LoadingScriptsAlert, } from "./TerminalAlerts"; -import { useQuery } from "react-query"; -import { deploymentConfig } from "api/queries/deployment"; -import { workspaceByOwnerAndName } from "api/queries/workspaces"; -import { ThemeOverride } from "contexts/ThemeProvider"; -import themes from "theme"; export const Language = { workspaceErrorMessagePrefix: "Unable to fetch workspace: ", diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.stories.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.stories.tsx index aec4862590473..d0e2e425b9a63 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.stories.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.stories.tsx @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from "@storybook/react"; -import { AccountForm } from "./AccountForm"; import { mockApiError } from "testHelpers/entities"; +import { AccountForm } from "./AccountForm"; const meta: Meta = { title: "pages/UserSettingsPage/AccountForm", diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.test.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.test.tsx index b790ac2dfea61..253498dc3ef37 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.test.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.test.tsx @@ -1,8 +1,8 @@ import { screen } from "@testing-library/react"; +import type { UpdateUserProfileRequest } from "api/typesGenerated"; import { MockUser2 } from "testHelpers/entities"; import { render } from "testHelpers/renderHelpers"; import { AccountForm } from "./AccountForm"; -import { UpdateUserProfileRequest } from "api/typesGenerated"; // NOTE: it does not matter what the role props of MockUser are set to, // only that editable is set to true or false. This is passed from diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.tsx index e47d862234256..a9ec3e6c17543 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.tsx @@ -1,16 +1,17 @@ +import LoadingButton from "@mui/lab/LoadingButton"; import TextField from "@mui/material/TextField"; -import { FormikTouched, useFormik } from "formik"; -import { FC } from "react"; +import type { FormikTouched} from "formik"; +import { useFormik } from "formik"; +import type { FC } from "react"; import * as Yup from "yup"; +import type { UpdateUserProfileRequest } from "api/typesGenerated"; +import { ErrorAlert } from "components/Alert/ErrorAlert"; +import { Form, FormFields } from "components/Form/Form"; import { getFormHelpers, nameValidator, onChangeTrimmed, } from "utils/formUtils"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; -import { Form, FormFields } from "components/Form/Form"; -import { UpdateUserProfileRequest } from "api/typesGenerated"; -import LoadingButton from "@mui/lab/LoadingButton"; export const Language = { usernameLabel: "Username", diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountPage.test.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountPage.test.tsx index 3dc3683ae3e83..4bce60a5fe465 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountPage.test.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountPage.test.tsx @@ -1,9 +1,9 @@ import { fireEvent, screen, waitFor } from "@testing-library/react"; import * as API from "api/api"; -import * as AccountForm from "./AccountForm"; +import { mockApiError } from "testHelpers/entities"; import { renderWithAuth } from "testHelpers/renderHelpers"; +import * as AccountForm from "./AccountForm"; import { AccountPage } from "./AccountPage"; -import { mockApiError } from "testHelpers/entities"; const newData = { username: "user", diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountPage.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountPage.tsx index c2f11435806ea..724f5d1f716b0 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountPage.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountPage.tsx @@ -1,15 +1,15 @@ import { type FC } from "react"; import { useQuery } from "react-query"; import { groupsForUser } from "api/queries/groups"; +import { Stack } from "components/Stack/Stack"; import { useAuth } from "contexts/auth/useAuth"; import { useMe } from "contexts/auth/useMe"; import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { usePermissions } from "contexts/auth/usePermissions"; import { useDashboard } from "modules/dashboard/useDashboard"; -import { Stack } from "components/Stack/Stack"; import { Section } from "../Section"; -import { AccountUserGroups } from "./AccountUserGroups"; import { AccountForm } from "./AccountForm"; +import { AccountUserGroups } from "./AccountUserGroups"; export const AccountPage: FC = () => { const me = useMe(); diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.stories.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.stories.tsx index 9ce7df88124e3..0cf859b0e51f3 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.stories.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.stories.tsx @@ -1,12 +1,11 @@ -import { type Group } from "api/typesGenerated"; import { type Meta, type StoryObj } from "@storybook/react"; - -import { AccountUserGroups } from "./AccountUserGroups"; +import { type Group } from "api/typesGenerated"; import { MockGroup as MockGroup1, MockUser, mockApiError, } from "testHelpers/entities"; +import { AccountUserGroups } from "./AccountUserGroups"; const MockGroup2: Group = { ...MockGroup1, diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.tsx index e023d1bdaf3ce..48dba564a8e83 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.tsx @@ -1,5 +1,5 @@ -import Grid from "@mui/material/Grid"; import { useTheme } from "@emotion/react"; +import Grid from "@mui/material/Grid"; import { type FC } from "react"; import { isApiError } from "api/errors"; import type { Group } from "api/typesGenerated"; diff --git a/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx b/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx index b40ca1e72b616..b98cd537b8158 100644 --- a/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx +++ b/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx @@ -1,12 +1,12 @@ -import { visuallyHidden } from "@mui/utils"; import { type Interpolation } from "@emotion/react"; +import { visuallyHidden } from "@mui/utils"; import { type FC } from "react"; import type { UpdateUserAppearanceSettingsRequest } from "api/typesGenerated"; -import themes, { DEFAULT_THEME, type Theme } from "theme"; import { ErrorAlert } from "components/Alert/ErrorAlert"; -import { Stack } from "components/Stack/Stack"; import { PreviewBadge } from "components/Badges/Badges"; +import { Stack } from "components/Stack/Stack"; import { ThemeOverride } from "contexts/ThemeProvider"; +import themes, { DEFAULT_THEME, type Theme } from "theme"; export interface AppearanceFormProps { isUpdating?: boolean; diff --git a/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.test.tsx b/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.test.tsx index 623faccb0d7df..01c0ad3addfd0 100644 --- a/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.test.tsx +++ b/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.test.tsx @@ -1,9 +1,9 @@ import { screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import * as API from "api/api"; +import { MockUser } from "testHelpers/entities"; import { renderWithAuth } from "testHelpers/renderHelpers"; import { AppearancePage } from "./AppearancePage"; -import { MockUser } from "testHelpers/entities"; describe("appearance page", () => { it("does nothing when selecting current theme", async () => { diff --git a/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPage.tsx b/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPage.tsx index 44e1728a0b42c..f69780d852ba5 100644 --- a/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPage.tsx +++ b/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPage.tsx @@ -1,11 +1,11 @@ import { type FC, useState } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; +import { getErrorMessage } from "api/errors"; import { externalAuths, unlinkExternalAuths, validateExternalAuth, } from "api/queries/externalAuth"; -import { getErrorMessage } from "api/errors"; import { DeleteDialog } from "components/Dialogs/DeleteDialog/DeleteDialog"; import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; import { Section } from "../Section"; diff --git a/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.stories.tsx b/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.stories.tsx index abdd999f6abf0..f5f5cb3e21963 100644 --- a/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.stories.tsx +++ b/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.stories.tsx @@ -1,9 +1,9 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockGithubAuthLink, MockGithubExternalProvider, } from "testHelpers/entities"; import { ExternalAuthPageView } from "./ExternalAuthPageView"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/UserSettingsPage/ExternalAuthPageView", diff --git a/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx b/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx index 299d8430b1b16..4fd19ffb690a4 100644 --- a/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx +++ b/site/src/pages/UserSettingsPage/ExternalAuthPage/ExternalAuthPageView.tsx @@ -1,3 +1,4 @@ +import LoadingButton from "@mui/lab/LoadingButton"; import Divider from "@mui/material/Divider"; import Table from "@mui/material/Table"; import TableBody from "@mui/material/TableBody"; @@ -5,7 +6,6 @@ import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; -import LoadingButton from "@mui/lab/LoadingButton"; import visuallyHidden from "@mui/utils/visuallyHidden"; import { type FC, useState, useCallback, useEffect } from "react"; import { useQuery } from "react-query"; diff --git a/site/src/pages/UserSettingsPage/Layout.tsx b/site/src/pages/UserSettingsPage/Layout.tsx index 4d9ae5ce6a575..3d015b087970f 100644 --- a/site/src/pages/UserSettingsPage/Layout.tsx +++ b/site/src/pages/UserSettingsPage/Layout.tsx @@ -1,11 +1,11 @@ import { type FC, Suspense } from "react"; -import { Outlet } from "react-router-dom"; import { Helmet } from "react-helmet-async"; -import { pageTitle } from "utils/page"; -import { useMe } from "contexts/auth/useMe"; +import { Outlet } from "react-router-dom"; import { Loader } from "components/Loader/Loader"; import { Margins } from "components/Margins/Margins"; import { Stack } from "components/Stack/Stack"; +import { useMe } from "contexts/auth/useMe"; +import { pageTitle } from "utils/page"; import { Sidebar } from "./Sidebar"; const Layout: FC = () => { diff --git a/site/src/pages/UserSettingsPage/OAuth2ProviderPage/OAuth2ProviderPageView.tsx b/site/src/pages/UserSettingsPage/OAuth2ProviderPage/OAuth2ProviderPageView.tsx index efa6d9f362274..c2eba9d75de16 100644 --- a/site/src/pages/UserSettingsPage/OAuth2ProviderPage/OAuth2ProviderPageView.tsx +++ b/site/src/pages/UserSettingsPage/OAuth2ProviderPage/OAuth2ProviderPageView.tsx @@ -7,9 +7,9 @@ import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; import { type FC } from "react"; import type * as TypesGen from "api/typesGenerated"; -import { AvatarData } from "components/AvatarData/AvatarData"; -import { Avatar } from "components/Avatar/Avatar"; import { ErrorAlert } from "components/Alert/ErrorAlert"; +import { Avatar } from "components/Avatar/Avatar"; +import { AvatarData } from "components/AvatarData/AvatarData"; import { TableLoader } from "components/TableLoader/TableLoader"; export type OAuth2ProviderPageViewProps = { diff --git a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.test.tsx b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.test.tsx index bb0ddb2535bf1..daa03d50ea839 100644 --- a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.test.tsx +++ b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.test.tsx @@ -1,8 +1,8 @@ import { fireEvent, screen, within } from "@testing-library/react"; import * as API from "api/api"; +import { MockGitSSHKey, mockApiError } from "testHelpers/entities"; import { renderWithAuth } from "testHelpers/renderHelpers"; import { Language as SSHKeysPageLanguage, SSHKeysPage } from "./SSHKeysPage"; -import { MockGitSSHKey, mockApiError } from "testHelpers/entities"; describe("SSH keys Page", () => { it("shows the SSH key", async () => { diff --git a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.tsx b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.tsx index 7766badb1af15..16682479b336c 100644 --- a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.tsx +++ b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPage.tsx @@ -1,11 +1,11 @@ import { type FC, useState } from "react"; +import { useMutation, useQuery, useQueryClient } from "react-query"; +import { getErrorMessage } from "api/errors"; +import { regenerateUserSSHKey, userSSHKey } from "api/queries/sshKeys"; import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; import { Section } from "../Section"; import { SSHKeysPageView } from "./SSHKeysPageView"; -import { regenerateUserSSHKey, userSSHKey } from "api/queries/sshKeys"; -import { useMutation, useQuery, useQueryClient } from "react-query"; -import { getErrorMessage } from "api/errors"; export const Language = { title: "SSH keys", diff --git a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.stories.tsx b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.stories.tsx index a8736defdcf46..77995a5baa11c 100644 --- a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.stories.tsx +++ b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.stories.tsx @@ -1,6 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { mockApiError } from "testHelpers/entities"; import { SSHKeysPageView } from "./SSHKeysPageView"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/UserSettingsPage/SSHKeysPageView", diff --git a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx index 141d3709f35f6..bf88c9c31ccca 100644 --- a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx +++ b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx @@ -1,11 +1,11 @@ +import { useTheme } from "@emotion/react"; import Button from "@mui/material/Button"; import CircularProgress from "@mui/material/CircularProgress"; import { type FC } from "react"; -import { useTheme } from "@emotion/react"; import type { GitSSHKey } from "api/typesGenerated"; +import { ErrorAlert } from "components/Alert/ErrorAlert"; import { CodeExample } from "components/CodeExample/CodeExample"; import { Stack } from "components/Stack/Stack"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; export interface SSHKeysPageViewProps { isLoading: boolean; diff --git a/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.stories.tsx b/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.stories.tsx index 7e3054212e5fe..3af6ae972fdb9 100644 --- a/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.stories.tsx +++ b/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.stories.tsx @@ -1,7 +1,7 @@ +import { action } from "@storybook/addon-actions"; import type { Meta, StoryObj } from "@storybook/react"; -import { ScheduleForm } from "./ScheduleForm"; import { mockApiError } from "testHelpers/entities"; -import { action } from "@storybook/addon-actions"; +import { ScheduleForm } from "./ScheduleForm"; const defaultArgs = { submitting: false, diff --git a/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx b/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx index 16bb44691f70c..52d4774129d2f 100644 --- a/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx +++ b/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx @@ -1,18 +1,19 @@ -import TextField from "@mui/material/TextField"; -import MenuItem from "@mui/material/MenuItem"; import LoadingButton from "@mui/lab/LoadingButton"; -import { FormikContextType, useFormik } from "formik"; +import MenuItem from "@mui/material/MenuItem"; +import TextField from "@mui/material/TextField"; +import type { FormikContextType} from "formik"; +import { useFormik } from "formik"; import { type FC, useEffect, useState } from "react"; import * as Yup from "yup"; -import { getFormHelpers } from "utils/formUtils"; import type { UpdateUserQuietHoursScheduleRequest, UserQuietHoursScheduleResponse, } from "api/typesGenerated"; +import { Alert } from "components/Alert/Alert"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Form, FormFields } from "components/Form/Form"; import { Stack } from "components/Stack/Stack"; -import { Alert } from "components/Alert/Alert"; +import { getFormHelpers } from "utils/formUtils"; import { timeToCron, quietHoursDisplay, validTime } from "utils/schedule"; import { timeZones, getPreferredTimezone } from "utils/timeZones"; diff --git a/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.test.tsx b/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.test.tsx index 165a34ba20181..cad7bde2af6b6 100644 --- a/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.test.tsx +++ b/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.test.tsx @@ -1,10 +1,10 @@ import { fireEvent, screen, waitFor, within } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; +import { rest } from "msw"; +import { MockUser } from "testHelpers/entities"; import { renderWithAuth } from "testHelpers/renderHelpers"; -import { SchedulePage } from "./SchedulePage"; import { server } from "testHelpers/server"; -import { MockUser } from "testHelpers/entities"; -import { rest } from "msw"; +import { SchedulePage } from "./SchedulePage"; const fillForm = async ({ hour, diff --git a/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.tsx b/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.tsx index f41362232af7e..b18005ee69014 100644 --- a/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.tsx +++ b/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.tsx @@ -1,13 +1,13 @@ import { type FC } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; -import { useMe } from "contexts/auth/useMe"; -import { Loader } from "components/Loader/Loader"; import { updateUserQuietHoursSchedule, userQuietHoursSchedule, } from "api/queries/settings"; +import { ErrorAlert } from "components/Alert/ErrorAlert"; import { displaySuccess } from "components/GlobalSnackbar/utils"; +import { Loader } from "components/Loader/Loader"; +import { useMe } from "contexts/auth/useMe"; import { Section } from "../Section"; import { ScheduleForm } from "./ScheduleForm"; diff --git a/site/src/pages/UserSettingsPage/Section.tsx b/site/src/pages/UserSettingsPage/Section.tsx index 029fb33c28a08..e23ccc22a4cf7 100644 --- a/site/src/pages/UserSettingsPage/Section.tsx +++ b/site/src/pages/UserSettingsPage/Section.tsx @@ -1,5 +1,5 @@ -import { type FC, type ReactNode } from "react"; import { type Interpolation, type Theme } from "@emotion/react"; +import { type FC, type ReactNode } from "react"; type SectionLayout = "fixed" | "fluid"; diff --git a/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.stories.tsx b/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.stories.tsx index e39f914b3fd19..820ae0648df8f 100644 --- a/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.stories.tsx +++ b/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.stories.tsx @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from "@storybook/react"; -import { SecurityForm } from "./SecurityForm"; import { mockApiError } from "testHelpers/entities"; +import { SecurityForm } from "./SecurityForm"; const meta: Meta = { title: "pages/UserSettingsPage/SecurityForm", diff --git a/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.tsx b/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.tsx index 143e6213832b9..c61aeabb6b523 100644 --- a/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.tsx +++ b/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.tsx @@ -1,12 +1,13 @@ +import LoadingButton from "@mui/lab/LoadingButton"; import TextField from "@mui/material/TextField"; -import { FormikContextType, useFormik } from "formik"; -import { FC } from "react"; +import type { FormikContextType} from "formik"; +import { useFormik } from "formik"; +import type { FC } from "react"; import * as Yup from "yup"; +import { Alert } from "components/Alert/Alert"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Form, FormFields } from "components/Form/Form"; -import { Alert } from "components/Alert/Alert"; import { getFormHelpers } from "utils/formUtils"; -import LoadingButton from "@mui/lab/LoadingButton"; interface SecurityFormValues { old_password: string; diff --git a/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.test.tsx b/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.test.tsx index 7a2f4baa292b4..f2f0c73c4d7c9 100644 --- a/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.test.tsx +++ b/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.test.tsx @@ -1,15 +1,15 @@ import { fireEvent, screen, waitFor, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; import * as API from "api/api"; -import { Language } from "./SecurityForm"; +import type { OAuthConversionResponse } from "api/typesGenerated"; +import { MockAuthMethodsAll, mockApiError } from "testHelpers/entities"; import { renderWithAuth, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; +import { Language } from "./SecurityForm"; import { SecurityPage } from "./SecurityPage"; -import { MockAuthMethodsAll, mockApiError } from "testHelpers/entities"; -import userEvent from "@testing-library/user-event"; import * as SSO from "./SingleSignOnSection"; -import { OAuthConversionResponse } from "api/typesGenerated"; const renderPage = async () => { const utils = renderWithAuth(); diff --git a/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.tsx b/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.tsx index 1d2075f5776a0..f292a6b9bdda9 100644 --- a/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.tsx +++ b/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.tsx @@ -2,10 +2,10 @@ import { type ComponentProps, type FC } from "react"; import { useMutation, useQuery } from "react-query"; import { getUserLoginType } from "api/api"; import { authMethods, updatePassword } from "api/queries/users"; -import { useMe } from "contexts/auth/useMe"; +import { displaySuccess } from "components/GlobalSnackbar/utils"; import { Loader } from "components/Loader/Loader"; import { Stack } from "components/Stack/Stack"; -import { displaySuccess } from "components/GlobalSnackbar/utils"; +import { useMe } from "contexts/auth/useMe"; import { Section } from "../Section"; import { SecurityForm } from "./SecurityForm"; import { diff --git a/site/src/pages/UserSettingsPage/SecurityPage/SecurityPageView.stories.tsx b/site/src/pages/UserSettingsPage/SecurityPage/SecurityPageView.stories.tsx index 888d49d922832..6d64beead42db 100644 --- a/site/src/pages/UserSettingsPage/SecurityPage/SecurityPageView.stories.tsx +++ b/site/src/pages/UserSettingsPage/SecurityPage/SecurityPageView.stories.tsx @@ -1,12 +1,12 @@ -import type { Meta, StoryObj } from "@storybook/react"; -import { SecurityPageView } from "./SecurityPage"; import { action } from "@storybook/addon-actions"; +import type { Meta, StoryObj } from "@storybook/react"; +import set from "lodash/fp/set"; +import type { ComponentProps } from "react"; import { MockAuthMethodsPasswordOnly, MockAuthMethodsAll, } from "testHelpers/entities"; -import { ComponentProps } from "react"; -import set from "lodash/fp/set"; +import { SecurityPageView } from "./SecurityPage"; const defaultArgs: ComponentProps = { security: { diff --git a/site/src/pages/UserSettingsPage/SecurityPage/SingleSignOnSection.tsx b/site/src/pages/UserSettingsPage/SecurityPage/SingleSignOnSection.tsx index 3f58c43230558..6d743594a9c0a 100644 --- a/site/src/pages/UserSettingsPage/SecurityPage/SingleSignOnSection.tsx +++ b/site/src/pages/UserSettingsPage/SecurityPage/SingleSignOnSection.tsx @@ -1,12 +1,12 @@ import { useTheme } from "@emotion/react"; -import { type FC, useState } from "react"; -import { useMutation } from "react-query"; -import Button from "@mui/material/Button"; -import Link from "@mui/material/Link"; -import TextField from "@mui/material/TextField"; import CheckCircleOutlined from "@mui/icons-material/CheckCircleOutlined"; import GitHubIcon from "@mui/icons-material/GitHub"; import KeyIcon from "@mui/icons-material/VpnKey"; +import Button from "@mui/material/Button"; +import Link from "@mui/material/Link"; +import TextField from "@mui/material/TextField"; +import { type FC, useState } from "react"; +import { useMutation } from "react-query"; import { convertToOAUTH } from "api/api"; import { getErrorMessage } from "api/errors"; import type { @@ -15,8 +15,8 @@ import type { OIDCAuthMethod, UserLoginType, } from "api/typesGenerated"; -import { EmptyState } from "components/EmptyState/EmptyState"; import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; +import { EmptyState } from "components/EmptyState/EmptyState"; import { Stack } from "components/Stack/Stack"; import { docs } from "utils/docs"; import { Section } from "../Section"; diff --git a/site/src/pages/UserSettingsPage/Sidebar.tsx b/site/src/pages/UserSettingsPage/Sidebar.tsx index 827efbc7db501..719fa5ea80673 100644 --- a/site/src/pages/UserSettingsPage/Sidebar.tsx +++ b/site/src/pages/UserSettingsPage/Sidebar.tsx @@ -1,18 +1,18 @@ -import { type FC } from "react"; -import VpnKeyOutlined from "@mui/icons-material/VpnKeyOutlined"; -import FingerprintOutlinedIcon from "@mui/icons-material/FingerprintOutlined"; -import AccountIcon from "@mui/icons-material/Person"; import AppearanceIcon from "@mui/icons-material/Brush"; import ScheduleIcon from "@mui/icons-material/EditCalendarOutlined"; +import FingerprintOutlinedIcon from "@mui/icons-material/FingerprintOutlined"; import SecurityIcon from "@mui/icons-material/LockOutlined"; +import AccountIcon from "@mui/icons-material/Person"; +import VpnKeyOutlined from "@mui/icons-material/VpnKeyOutlined"; +import { type FC } from "react"; import type { User } from "api/typesGenerated"; -import { UserAvatar } from "components/UserAvatar/UserAvatar"; +import { GitIcon } from "components/Icons/GitIcon"; import { Sidebar as BaseSidebar, SidebarHeader, SidebarNavItem, } from "components/Sidebar/Sidebar"; -import { GitIcon } from "components/Icons/GitIcon"; +import { UserAvatar } from "components/UserAvatar/UserAvatar"; import { useDashboard } from "modules/dashboard/useDashboard"; interface SidebarProps { diff --git a/site/src/pages/UserSettingsPage/TokensPage/ConfirmDeleteDialog.stories.tsx b/site/src/pages/UserSettingsPage/TokensPage/ConfirmDeleteDialog.stories.tsx index 35cb2193d7876..c39bbc9a181d4 100644 --- a/site/src/pages/UserSettingsPage/TokensPage/ConfirmDeleteDialog.stories.tsx +++ b/site/src/pages/UserSettingsPage/TokensPage/ConfirmDeleteDialog.stories.tsx @@ -1,7 +1,7 @@ import type { Meta, StoryObj } from "@storybook/react"; +import { QueryClient, QueryClientProvider } from "react-query"; import { MockToken } from "testHelpers/entities"; import { ConfirmDeleteDialog } from "./ConfirmDeleteDialog"; -import { QueryClient, QueryClientProvider } from "react-query"; const queryClient = new QueryClient({ defaultOptions: { diff --git a/site/src/pages/UserSettingsPage/TokensPage/ConfirmDeleteDialog.tsx b/site/src/pages/UserSettingsPage/TokensPage/ConfirmDeleteDialog.tsx index 7c588251c4483..94debbb37c69b 100644 --- a/site/src/pages/UserSettingsPage/TokensPage/ConfirmDeleteDialog.tsx +++ b/site/src/pages/UserSettingsPage/TokensPage/ConfirmDeleteDialog.tsx @@ -1,9 +1,9 @@ -import { FC } from "react"; +import type { FC } from "react"; +import { getErrorMessage } from "api/errors"; +import type { APIKeyWithOwner } from "api/typesGenerated"; import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; -import { useDeleteToken } from "./hooks"; import { displaySuccess, displayError } from "components/GlobalSnackbar/utils"; -import { getErrorMessage } from "api/errors"; -import { APIKeyWithOwner } from "api/typesGenerated"; +import { useDeleteToken } from "./hooks"; export interface ConfirmDeleteDialogProps { queryKey: (string | boolean)[]; diff --git a/site/src/pages/UserSettingsPage/TokensPage/TokensPage.tsx b/site/src/pages/UserSettingsPage/TokensPage/TokensPage.tsx index 77fb7aacbc09b..a349809a7faf2 100644 --- a/site/src/pages/UserSettingsPage/TokensPage/TokensPage.tsx +++ b/site/src/pages/UserSettingsPage/TokensPage/TokensPage.tsx @@ -1,14 +1,14 @@ import { css, type Interpolation, type Theme } from "@emotion/react"; +import AddIcon from "@mui/icons-material/AddOutlined"; +import Button from "@mui/material/Button"; import { type FC, useState } from "react"; import { Link as RouterLink } from "react-router-dom"; -import Button from "@mui/material/Button"; -import AddIcon from "@mui/icons-material/AddOutlined"; import type { APIKeyWithOwner } from "api/typesGenerated"; import { Stack } from "components/Stack/Stack"; import { Section } from "../Section"; +import { ConfirmDeleteDialog } from "./ConfirmDeleteDialog"; import { useTokensData } from "./hooks"; import { TokensPageView } from "./TokensPageView"; -import { ConfirmDeleteDialog } from "./ConfirmDeleteDialog"; const cliCreateCommand = "coder tokens create"; diff --git a/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.stories.tsx b/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.stories.tsx index c536692dae497..1ab7bf662519b 100644 --- a/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.stories.tsx +++ b/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.stories.tsx @@ -1,6 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { mockApiError, MockTokens } from "testHelpers/entities"; import { TokensPageView } from "./TokensPageView"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/UserSettingsPage/TokensPageView", diff --git a/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.tsx b/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.tsx index 2566ba826bf4c..2688fc75ceef4 100644 --- a/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.tsx +++ b/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.tsx @@ -1,16 +1,16 @@ +import { useTheme } from "@emotion/react"; +import DeleteOutlineIcon from "@mui/icons-material/DeleteOutline"; +import IconButton from "@mui/material/IconButton"; import Table from "@mui/material/Table"; import TableBody from "@mui/material/TableBody"; import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; -import IconButton from "@mui/material/IconButton"; -import DeleteOutlineIcon from "@mui/icons-material/DeleteOutline"; import dayjs from "dayjs"; -import { useTheme } from "@emotion/react"; +import relativeTime from "dayjs/plugin/relativeTime"; import { type FC, type ReactNode } from "react"; import type { APIKeyWithOwner } from "api/typesGenerated"; -import relativeTime from "dayjs/plugin/relativeTime"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; import { Stack } from "components/Stack/Stack"; diff --git a/site/src/pages/UserSettingsPage/TokensPage/hooks.ts b/site/src/pages/UserSettingsPage/TokensPage/hooks.ts index 923dbda0d8d24..3ffae0dcf17be 100644 --- a/site/src/pages/UserSettingsPage/TokensPage/hooks.ts +++ b/site/src/pages/UserSettingsPage/TokensPage/hooks.ts @@ -1,6 +1,7 @@ -import { useQuery, useMutation, useQueryClient, QueryKey } from "react-query"; +import type { QueryKey } from "react-query"; +import { useQuery, useMutation, useQueryClient } from "react-query"; import { getTokens, deleteToken } from "api/api"; -import { TokensFilter } from "api/typesGenerated"; +import type { TokensFilter } from "api/typesGenerated"; // Load all tokens export const useTokensData = ({ include_all }: TokensFilter) => { diff --git a/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyRow.tsx b/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyRow.tsx index 8aad4ef234410..9c1998841d4da 100644 --- a/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyRow.tsx +++ b/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyRow.tsx @@ -1,10 +1,10 @@ -import type { Region, WorkspaceProxy } from "api/typesGenerated"; -import { AvatarData } from "components/AvatarData/AvatarData"; -import { Avatar } from "components/Avatar/Avatar"; +import { useTheme } from "@emotion/react"; import TableCell from "@mui/material/TableCell"; import TableRow from "@mui/material/TableRow"; -import { useTheme } from "@emotion/react"; import type { FC, ReactNode } from "react"; +import type { Region, WorkspaceProxy } from "api/typesGenerated"; +import { Avatar } from "components/Avatar/Avatar"; +import { AvatarData } from "components/AvatarData/AvatarData"; import { HealthyBadge, NotHealthyBadge, diff --git a/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.tsx b/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.tsx index d2c467a155b8b..03fc872ba09fd 100644 --- a/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.tsx +++ b/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.tsx @@ -6,12 +6,12 @@ import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; import { type FC } from "react"; import type { Region } from "api/typesGenerated"; +import { ErrorAlert } from "components/Alert/ErrorAlert"; import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; import { Stack } from "components/Stack/Stack"; import { TableEmpty } from "components/TableEmpty/TableEmpty"; import { TableLoader } from "components/TableLoader/TableLoader"; -import { ProxyLatencyReport } from "contexts/useProxyLatency"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; +import type { ProxyLatencyReport } from "contexts/useProxyLatency"; import { ProxyRow } from "./WorkspaceProxyRow"; export interface WorkspaceProxyViewProps { diff --git a/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorspaceProxyView.stories.tsx b/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorspaceProxyView.stories.tsx index 9e7d060004515..b215cd4a65b77 100644 --- a/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorspaceProxyView.stories.tsx +++ b/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorspaceProxyView.stories.tsx @@ -1,3 +1,4 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { mockApiError, MockWorkspaceProxies, @@ -6,7 +7,6 @@ import { MockProxyLatencies, } from "testHelpers/entities"; import { WorkspaceProxyView } from "./WorkspaceProxyView"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/UserSettingsPage/WorkspaceProxyView", diff --git a/site/src/pages/UsersPage/ResetPasswordDialog.stories.tsx b/site/src/pages/UsersPage/ResetPasswordDialog.stories.tsx index ffa8a2468415e..0d3e0f6b911e3 100644 --- a/site/src/pages/UsersPage/ResetPasswordDialog.stories.tsx +++ b/site/src/pages/UsersPage/ResetPasswordDialog.stories.tsx @@ -1,6 +1,5 @@ -import { Meta, StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; import { MockUser } from "testHelpers/entities"; - import { ResetPasswordDialog } from "./ResetPasswordDialog"; const meta: Meta = { diff --git a/site/src/pages/UsersPage/UsersFilter.tsx b/site/src/pages/UsersPage/UsersFilter.tsx index fa344fb8047f2..c7aa0cd7eac5a 100644 --- a/site/src/pages/UsersPage/UsersFilter.tsx +++ b/site/src/pages/UsersPage/UsersFilter.tsx @@ -1,18 +1,19 @@ import { useTheme } from "@emotion/react"; import { type FC } from "react"; +import type { + useFilter} from "components/Filter/filter"; import { Filter, FilterMenu, MenuSkeleton, OptionItem, - SearchFieldSkeleton, - useFilter, + SearchFieldSkeleton } from "components/Filter/filter"; -import type { BaseOption } from "components/Filter/options"; import { type UseFilterMenuOptions, useFilterMenu, } from "components/Filter/menu"; +import type { BaseOption } from "components/Filter/options"; import type { ThemeRole } from "theme/roles"; import { docs } from "utils/docs"; diff --git a/site/src/pages/UsersPage/UsersLayout.tsx b/site/src/pages/UsersPage/UsersLayout.tsx index b313aefbd7a39..7496e09c07a97 100644 --- a/site/src/pages/UsersPage/UsersLayout.tsx +++ b/site/src/pages/UsersPage/UsersLayout.tsx @@ -1,7 +1,7 @@ -import Button from "@mui/material/Button"; -import Link from "@mui/material/Link"; import GroupAdd from "@mui/icons-material/GroupAddOutlined"; import PersonAdd from "@mui/icons-material/PersonAddOutlined"; +import Button from "@mui/material/Button"; +import Link from "@mui/material/Link"; import { type FC, Suspense } from "react"; import { Link as RouterLink, @@ -9,13 +9,13 @@ import { useNavigate, useLocation, } from "react-router-dom"; +import { Loader } from "components/Loader/Loader"; +import { Margins } from "components/Margins/Margins"; +import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; +import { TAB_PADDING_Y, TabLink, Tabs, TabsList } from "components/Tabs/Tabs"; import { usePermissions } from "contexts/auth/usePermissions"; import { USERS_LINK } from "modules/dashboard/Navbar/NavbarView"; import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; -import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; -import { Margins } from "components/Margins/Margins"; -import { TAB_PADDING_Y, TabLink, Tabs, TabsList } from "components/Tabs/Tabs"; -import { Loader } from "components/Loader/Loader"; export const UsersLayout: FC = () => { const { createUser: canCreateUser, createGroup: canCreateGroup } = diff --git a/site/src/pages/UsersPage/UsersPage.test.tsx b/site/src/pages/UsersPage/UsersPage.test.tsx index 56a1f1ac1f0a9..0be617b624679 100644 --- a/site/src/pages/UsersPage/UsersPage.test.tsx +++ b/site/src/pages/UsersPage/UsersPage.test.tsx @@ -1,17 +1,17 @@ import { fireEvent, screen, within } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { rest } from "msw"; +import * as API from "api/api"; +import type { Role } from "api/typesGenerated"; import { MockUser, MockUser2, SuspendedMockUser, MockAuditorRole, } from "testHelpers/entities"; -import * as API from "api/api"; -import { Role } from "api/typesGenerated"; -import { Language as ResetPasswordDialogLanguage } from "./ResetPasswordDialog"; import { renderWithAuth } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import { Language as ResetPasswordDialogLanguage } from "./ResetPasswordDialog"; import { UsersPage } from "./UsersPage"; const renderPage = () => { diff --git a/site/src/pages/UsersPage/UsersPage.tsx b/site/src/pages/UsersPage/UsersPage.tsx index e6547824fcc4d..014bf197975c2 100644 --- a/site/src/pages/UsersPage/UsersPage.tsx +++ b/site/src/pages/UsersPage/UsersPage.tsx @@ -2,11 +2,10 @@ import { type FC, useState } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { useSearchParams, useNavigate } from "react-router-dom"; -import type { User } from "api/typesGenerated"; -import { roles } from "api/queries/roles"; -import { groupsByUserId } from "api/queries/groups"; import { getErrorMessage } from "api/errors"; import { deploymentConfig } from "api/queries/deployment"; +import { groupsByUserId } from "api/queries/groups"; +import { roles } from "api/queries/roles"; import { paginatedUsers, suspendUser, @@ -16,16 +15,17 @@ import { updateRoles, authMethods, } from "api/queries/users"; -import { useOrganizationId } from "contexts/auth/useOrganizationId"; -import { usePermissions } from "contexts/auth/usePermissions"; -import { useMe } from "contexts/auth/useMe"; -import { useDashboard } from "modules/dashboard/useDashboard"; -import { useFilter } from "components/Filter/filter"; -import { DeleteDialog } from "components/Dialogs/DeleteDialog/DeleteDialog"; +import type { User } from "api/typesGenerated"; import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; +import { DeleteDialog } from "components/Dialogs/DeleteDialog/DeleteDialog"; +import { useFilter } from "components/Filter/filter"; import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; import { isNonInitialPage } from "components/PaginationWidget/utils"; +import { useMe } from "contexts/auth/useMe"; +import { useOrganizationId } from "contexts/auth/useOrganizationId"; +import { usePermissions } from "contexts/auth/usePermissions"; import { usePaginatedQuery } from "hooks/usePaginatedQuery"; +import { useDashboard } from "modules/dashboard/useDashboard"; import { pageTitle } from "utils/page"; import { generateRandomString } from "utils/random"; import { ResetPasswordDialog } from "./ResetPasswordDialog"; diff --git a/site/src/pages/UsersPage/UsersPageView.stories.tsx b/site/src/pages/UsersPage/UsersPageView.stories.tsx index 77e1e5566f369..c6361bc1adc83 100644 --- a/site/src/pages/UsersPage/UsersPageView.stories.tsx +++ b/site/src/pages/UsersPage/UsersPageView.stories.tsx @@ -1,4 +1,11 @@ -import { Meta, StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; +import type { ComponentProps } from "react"; +import { + MockMenu, + getDefaultFilterProps, +} from "components/Filter/storyHelpers"; +import { mockSuccessResult } from "components/PaginationWidget/PaginationContainer.mocks"; +import { type UsePaginatedQueryResult } from "hooks/usePaginatedQuery"; import { MockUser, MockUser2, @@ -7,14 +14,6 @@ import { MockAuthMethodsPasswordOnly, } from "testHelpers/entities"; import { UsersPageView } from "./UsersPageView"; -import { ComponentProps } from "react"; -import { - MockMenu, - getDefaultFilterProps, -} from "components/Filter/storyHelpers"; - -import { type UsePaginatedQueryResult } from "hooks/usePaginatedQuery"; -import { mockSuccessResult } from "components/PaginationWidget/PaginationContainer.mocks"; type FilterProps = ComponentProps["filterProps"]; diff --git a/site/src/pages/UsersPage/UsersPageView.tsx b/site/src/pages/UsersPage/UsersPageView.tsx index 3216e8c4df94f..3832ee7afc090 100644 --- a/site/src/pages/UsersPage/UsersPageView.tsx +++ b/site/src/pages/UsersPage/UsersPageView.tsx @@ -1,12 +1,12 @@ import { type ComponentProps, type FC } from "react"; -import type * as TypesGen from "api/typesGenerated"; import { type GroupsByUserId } from "api/queries/groups"; +import type * as TypesGen from "api/typesGenerated"; import { PaginationContainer, type PaginationResult, } from "components/PaginationWidget/PaginationContainer"; -import { UsersTable } from "./UsersTable/UsersTable"; import { UsersFilter } from "./UsersFilter"; +import { UsersTable } from "./UsersTable/UsersTable"; export interface UsersPageViewProps { users?: TypesGen.User[]; diff --git a/site/src/pages/UsersPage/UsersTable/EditRolesButton.stories.tsx b/site/src/pages/UsersPage/UsersTable/EditRolesButton.stories.tsx index fea9065dcd3f2..1a7ba3654cd55 100644 --- a/site/src/pages/UsersPage/UsersTable/EditRolesButton.stories.tsx +++ b/site/src/pages/UsersPage/UsersTable/EditRolesButton.stories.tsx @@ -1,10 +1,10 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockOwnerRole, MockSiteRoles, MockUserAdminRole, } from "testHelpers/entities"; import { EditRolesButton } from "./EditRolesButton"; -import type { Meta, StoryObj } from "@storybook/react"; const meta: Meta = { title: "pages/UsersPage/EditRolesButton", diff --git a/site/src/pages/UsersPage/UsersTable/EditRolesButton.tsx b/site/src/pages/UsersPage/UsersTable/EditRolesButton.tsx index 9221cb2339c41..0da2ae7d288eb 100644 --- a/site/src/pages/UsersPage/UsersTable/EditRolesButton.tsx +++ b/site/src/pages/UsersPage/UsersTable/EditRolesButton.tsx @@ -1,11 +1,9 @@ import { type Interpolation, type Theme } from "@emotion/react"; +import UserIcon from "@mui/icons-material/PersonOutline"; +import Checkbox from "@mui/material/Checkbox"; import IconButton from "@mui/material/IconButton"; -import { EditSquare } from "components/Icons/EditSquare"; import { type FC } from "react"; -import { Stack } from "components/Stack/Stack"; -import Checkbox from "@mui/material/Checkbox"; -import UserIcon from "@mui/icons-material/PersonOutline"; -import { Role } from "api/typesGenerated"; +import type { Role } from "api/typesGenerated"; import { HelpTooltip, HelpTooltipContent, @@ -13,11 +11,13 @@ import { HelpTooltipTitle, HelpTooltipTrigger, } from "components/HelpTooltip/HelpTooltip"; +import { EditSquare } from "components/Icons/EditSquare"; import { Popover, PopoverContent, PopoverTrigger, } from "components/Popover/Popover"; +import { Stack } from "components/Stack/Stack"; import { type ClassName, useClassName } from "hooks/useClassName"; const roleDescriptions: Record = { diff --git a/site/src/pages/UsersPage/UsersTable/TableColumnHelpTooltip.tsx b/site/src/pages/UsersPage/UsersTable/TableColumnHelpTooltip.tsx index d26d4a64a969c..64b51411bf0ee 100644 --- a/site/src/pages/UsersPage/UsersTable/TableColumnHelpTooltip.tsx +++ b/site/src/pages/UsersPage/UsersTable/TableColumnHelpTooltip.tsx @@ -1,4 +1,4 @@ -import { FC } from "react"; +import type { FC } from "react"; import { HelpTooltip, HelpTooltipContent, diff --git a/site/src/pages/UsersPage/UsersTable/UserGroupsCell.tsx b/site/src/pages/UsersPage/UsersTable/UserGroupsCell.tsx index 695f3e344005f..cf3a51d0167d3 100644 --- a/site/src/pages/UsersPage/UsersTable/UserGroupsCell.tsx +++ b/site/src/pages/UsersPage/UsersTable/UserGroupsCell.tsx @@ -1,18 +1,18 @@ import { useTheme } from "@emotion/react"; -import { type Group } from "api/typesGenerated"; -import { Stack } from "components/Stack/Stack"; -import { Avatar } from "components/Avatar/Avatar"; -import { OverflowY } from "components/OverflowY/OverflowY"; -import TableCell from "@mui/material/TableCell"; +import GroupIcon from "@mui/icons-material/Group"; import Button from "@mui/material/Button"; import List from "@mui/material/List"; import ListItem from "@mui/material/ListItem"; -import GroupIcon from "@mui/icons-material/Group"; +import TableCell from "@mui/material/TableCell"; +import { type Group } from "api/typesGenerated"; +import { Avatar } from "components/Avatar/Avatar"; +import { OverflowY } from "components/OverflowY/OverflowY"; import { Popover, PopoverTrigger, PopoverContent, } from "components/Popover/Popover"; +import { Stack } from "components/Stack/Stack"; type GroupsCellProps = { userGroups: readonly Group[] | undefined; diff --git a/site/src/pages/UsersPage/UsersTable/UserRoleCell.tsx b/site/src/pages/UsersPage/UsersTable/UserRoleCell.tsx index dc8c43a23c50e..afebb7e49acbd 100644 --- a/site/src/pages/UsersPage/UsersTable/UserRoleCell.tsx +++ b/site/src/pages/UsersPage/UsersTable/UserRoleCell.tsx @@ -14,8 +14,8 @@ * users like that, though, know that it will be painful */ import { useTheme } from "@emotion/react"; -import TableCell from "@mui/material/TableCell"; import Stack from "@mui/material/Stack"; +import TableCell from "@mui/material/TableCell"; import { type FC } from "react"; import { type User, type Role } from "api/typesGenerated"; import { Pill } from "components/Pill/Pill"; diff --git a/site/src/pages/UsersPage/UsersTable/UsersTable.stories.tsx b/site/src/pages/UsersPage/UsersTable/UsersTable.stories.tsx index ce6b0055ed543..29a3bc3d34e49 100644 --- a/site/src/pages/UsersPage/UsersTable/UsersTable.stories.tsx +++ b/site/src/pages/UsersPage/UsersTable/UsersTable.stories.tsx @@ -1,3 +1,4 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockUser, MockUser2, @@ -10,7 +11,6 @@ import { MockAuditorRole, } from "testHelpers/entities"; import { UsersTable } from "./UsersTable"; -import type { Meta, StoryObj } from "@storybook/react"; const mockGroupsByUserId = new Map([ [MockUser.id, [MockGroup]], diff --git a/site/src/pages/UsersPage/UsersTable/UsersTable.tsx b/site/src/pages/UsersPage/UsersTable/UsersTable.tsx index c552a87e0906a..156ef927a0489 100644 --- a/site/src/pages/UsersPage/UsersTable/UsersTable.tsx +++ b/site/src/pages/UsersPage/UsersTable/UsersTable.tsx @@ -5,8 +5,8 @@ import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; import { type FC } from "react"; -import type * as TypesGen from "api/typesGenerated"; import { type GroupsByUserId } from "api/queries/groups"; +import type * as TypesGen from "api/typesGenerated"; import { Stack } from "components/Stack/Stack"; import { TableColumnHelpTooltip } from "./TableColumnHelpTooltip"; import { UsersTableBody } from "./UsersTableBody"; diff --git a/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx b/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx index 0e0a45f9f6ad8..c01eafcae9109 100644 --- a/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx +++ b/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx @@ -1,27 +1,23 @@ -import TableCell from "@mui/material/TableCell"; -import TableRow from "@mui/material/TableRow"; -import Skeleton from "@mui/material/Skeleton"; -import Divider from "@mui/material/Divider"; +import { type Interpolation, type Theme } from "@emotion/react"; +import GitHub from "@mui/icons-material/GitHub"; import HideSourceOutlined from "@mui/icons-material/HideSourceOutlined"; import KeyOutlined from "@mui/icons-material/KeyOutlined"; -import GitHub from "@mui/icons-material/GitHub"; import PasswordOutlined from "@mui/icons-material/PasswordOutlined"; import ShieldOutlined from "@mui/icons-material/ShieldOutlined"; -import { type Interpolation, type Theme } from "@emotion/react"; -import { type FC } from "react"; +import Divider from "@mui/material/Divider"; +import Skeleton from "@mui/material/Skeleton"; +import TableCell from "@mui/material/TableCell"; +import TableRow from "@mui/material/TableRow"; import dayjs from "dayjs"; import relativeTime from "dayjs/plugin/relativeTime"; -import type * as TypesGen from "api/typesGenerated"; +import { type FC } from "react"; import { type GroupsByUserId } from "api/queries/groups"; -import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; +import type * as TypesGen from "api/typesGenerated"; import { AvatarData } from "components/AvatarData/AvatarData"; import { AvatarDataSkeleton } from "components/AvatarData/AvatarDataSkeleton"; -import { EmptyState } from "components/EmptyState/EmptyState"; -import { - TableLoaderSkeleton, - TableRowSkeleton, -} from "components/TableLoader/TableLoader"; import { EnterpriseBadge } from "components/Badges/Badges"; +import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; +import { EmptyState } from "components/EmptyState/EmptyState"; import { LastSeen } from "components/LastSeen/LastSeen"; import { MoreMenu, @@ -30,8 +26,12 @@ import { MoreMenuItem, ThreeDotsButton, } from "components/MoreMenu/MoreMenu"; -import { UserRoleCell } from "./UserRoleCell"; +import { + TableLoaderSkeleton, + TableRowSkeleton, +} from "components/TableLoader/TableLoader"; import { UserGroupsCell } from "./UserGroupsCell"; +import { UserRoleCell } from "./UserRoleCell"; dayjs.extend(relativeTime); diff --git a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.test.tsx b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.test.tsx index f99cb1db2f32b..e358c50954d03 100644 --- a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.test.tsx +++ b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.test.tsx @@ -1,14 +1,14 @@ import { screen, waitFor } from "@testing-library/react"; import WS from "jest-websocket-mock"; -import { renderWithAuth } from "testHelpers/renderHelpers"; -import { WorkspaceBuildPage } from "./WorkspaceBuildPage"; +import * as API from "api/api"; import { MockWorkspace, MockWorkspaceAgent, MockWorkspaceAgentLogs, MockWorkspaceBuild, } from "testHelpers/entities"; -import * as API from "api/api"; +import { renderWithAuth } from "testHelpers/renderHelpers"; +import { WorkspaceBuildPage } from "./WorkspaceBuildPage"; import { LOGS_TAB_KEY } from "./WorkspaceBuildPageView"; afterEach(() => { diff --git a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.tsx b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.tsx index 18264239e4d41..13ec3028248bb 100644 --- a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.tsx +++ b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPage.tsx @@ -1,13 +1,13 @@ -import { FC } from "react"; +import dayjs from "dayjs"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; -import { useParams } from "react-router-dom"; -import { pageTitle } from "utils/page"; -import { WorkspaceBuildPageView } from "./WorkspaceBuildPageView"; import { useQuery } from "react-query"; +import { useParams } from "react-router-dom"; import { getWorkspaceBuilds } from "api/api"; -import dayjs from "dayjs"; import { workspaceBuildByNumber } from "api/queries/workspaceBuilds"; import { useWorkspaceBuildLogs } from "hooks/useWorkspaceBuildLogs"; +import { pageTitle } from "utils/page"; +import { WorkspaceBuildPageView } from "./WorkspaceBuildPageView"; export const WorkspaceBuildPage: FC = () => { const params = useParams() as { diff --git a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.stories.tsx b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.stories.tsx index 6be22af0c95b3..43341b8f6f923 100644 --- a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.stories.tsx +++ b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; import { MockFailedWorkspaceBuild, MockWorkspaceBuild, diff --git a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.tsx b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.tsx index e2349dda9c4aa..c1f327513a4b0 100644 --- a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.tsx +++ b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.tsx @@ -1,32 +1,32 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import { type FC } from "react"; +import { Link } from "react-router-dom"; import type { ProvisionerJobLog, WorkspaceAgent, WorkspaceBuild, } from "api/typesGenerated"; -import { Link } from "react-router-dom"; -import { displayWorkspaceBuildDuration } from "utils/workspace"; -import { DashboardFullPage } from "modules/dashboard/DashboardLayout"; +import { Alert } from "components/Alert/Alert"; import { BuildAvatar } from "components/BuildAvatar/BuildAvatar"; import { Loader } from "components/Loader/Loader"; -import { Stack } from "components/Stack/Stack"; -import { WorkspaceBuildLogs } from "modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; import { FullWidthPageHeader, PageHeaderTitle, PageHeaderSubtitle, } from "components/PageHeader/FullWidthPageHeader"; +import { Stack } from "components/Stack/Stack"; import { Stats, StatsItem } from "components/Stats/Stats"; -import { Alert } from "components/Alert/Alert"; +import { TAB_PADDING_X, TabLink, Tabs, TabsList } from "components/Tabs/Tabs"; +import { useTab } from "hooks"; +import { DashboardFullPage } from "modules/dashboard/DashboardLayout"; +import { AgentLogs, useAgentLogs } from "modules/resources/AgentLogs"; import { WorkspaceBuildData, WorkspaceBuildDataSkeleton, } from "modules/workspaces/WorkspaceBuild/WorkspaceBuildData"; +import { WorkspaceBuildLogs } from "modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; +import { displayWorkspaceBuildDuration } from "utils/workspace"; import { Sidebar, SidebarCaption, SidebarItem } from "./Sidebar"; -import { TAB_PADDING_X, TabLink, Tabs, TabsList } from "components/Tabs/Tabs"; -import { useTab } from "hooks"; -import { AgentLogs, useAgentLogs } from "modules/resources/AgentLogs"; export const LOGS_TAB_KEY = "logs"; diff --git a/site/src/pages/WorkspacePage/BuildRow.tsx b/site/src/pages/WorkspacePage/BuildRow.tsx index 1a23baff7b3f1..b6d5c39e4d090 100644 --- a/site/src/pages/WorkspacePage/BuildRow.tsx +++ b/site/src/pages/WorkspacePage/BuildRow.tsx @@ -1,5 +1,5 @@ -import TableCell from "@mui/material/TableCell"; import { type CSSObject, type Interpolation, type Theme } from "@emotion/react"; +import TableCell from "@mui/material/TableCell"; import { type FC } from "react"; import { useNavigate } from "react-router-dom"; import type { WorkspaceBuild } from "api/typesGenerated"; diff --git a/site/src/pages/WorkspacePage/ChangeVersionDialog.stories.tsx b/site/src/pages/WorkspacePage/ChangeVersionDialog.stories.tsx index d4a7a5376bcb5..387f935a50f91 100644 --- a/site/src/pages/WorkspacePage/ChangeVersionDialog.stories.tsx +++ b/site/src/pages/WorkspacePage/ChangeVersionDialog.stories.tsx @@ -1,9 +1,9 @@ +import type { Meta, StoryObj } from "@storybook/react"; import { MockTemplate, MockTemplateVersion, MockTemplateVersionWithMarkdownMessage, } from "testHelpers/entities"; -import type { Meta, StoryObj } from "@storybook/react"; import { ChangeVersionDialog } from "./ChangeVersionDialog"; const noMessage = { diff --git a/site/src/pages/WorkspacePage/ChangeVersionDialog.tsx b/site/src/pages/WorkspacePage/ChangeVersionDialog.tsx index b6269ee7be794..90872f4201db9 100644 --- a/site/src/pages/WorkspacePage/ChangeVersionDialog.tsx +++ b/site/src/pages/WorkspacePage/ChangeVersionDialog.tsx @@ -1,22 +1,22 @@ -import { type FC, useRef, useState } from "react"; -import TextField from "@mui/material/TextField"; +import { css } from "@emotion/css"; +import InfoIcon from "@mui/icons-material/InfoOutlined"; +import AlertTitle from "@mui/material/AlertTitle"; import Autocomplete from "@mui/material/Autocomplete"; import CircularProgress from "@mui/material/CircularProgress"; -import AlertTitle from "@mui/material/AlertTitle"; -import InfoIcon from "@mui/icons-material/InfoOutlined"; -import { css } from "@emotion/css"; +import TextField from "@mui/material/TextField"; +import { type FC, useRef, useState } from "react"; import type { Template, TemplateVersion } from "api/typesGenerated"; import { Alert } from "components/Alert/Alert"; -import type { DialogProps } from "components/Dialogs/Dialog"; +import { Avatar } from "components/Avatar/Avatar"; +import { AvatarData } from "components/AvatarData/AvatarData"; import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; +import type { DialogProps } from "components/Dialogs/Dialog"; import { FormFields } from "components/Form/Form"; -import { Stack } from "components/Stack/Stack"; import { Loader } from "components/Loader/Loader"; -import { AvatarData } from "components/AvatarData/AvatarData"; import { Pill } from "components/Pill/Pill"; -import { Avatar } from "components/Avatar/Avatar"; -import { createDayString } from "utils/createDayString"; +import { Stack } from "components/Stack/Stack"; import { TemplateUpdateMessage } from "modules/templates/TemplateUpdateMessage"; +import { createDayString } from "utils/createDayString"; export type ChangeVersionDialogProps = DialogProps & { template: Template | undefined; diff --git a/site/src/pages/WorkspacePage/ResourceMetadata.stories.tsx b/site/src/pages/WorkspacePage/ResourceMetadata.stories.tsx index a8d5bc51136b8..2ef603c917cca 100644 --- a/site/src/pages/WorkspacePage/ResourceMetadata.stories.tsx +++ b/site/src/pages/WorkspacePage/ResourceMetadata.stories.tsx @@ -1,5 +1,5 @@ -import { MockWorkspaceResource } from "testHelpers/entities"; import type { Meta, StoryObj } from "@storybook/react"; +import { MockWorkspaceResource } from "testHelpers/entities"; import { ResourceMetadata } from "./ResourceMetadata"; const meta: Meta = { diff --git a/site/src/pages/WorkspacePage/ResourceMetadata.tsx b/site/src/pages/WorkspacePage/ResourceMetadata.tsx index cce0af1760664..dffb88f81f164 100644 --- a/site/src/pages/WorkspacePage/ResourceMetadata.tsx +++ b/site/src/pages/WorkspacePage/ResourceMetadata.tsx @@ -6,9 +6,9 @@ import { type PropsWithChildren, } from "react"; import type { WorkspaceResource } from "api/typesGenerated"; -import { SensitiveValue } from "modules/resources/SensitiveValue"; -import { MemoizedInlineMarkdown } from "components/Markdown/Markdown"; import { CopyableValue } from "components/CopyableValue/CopyableValue"; +import { MemoizedInlineMarkdown } from "components/Markdown/Markdown"; +import { SensitiveValue } from "modules/resources/SensitiveValue"; type ResourceMetadataProps = Omit, "resource"> & { resource: WorkspaceResource; diff --git a/site/src/pages/WorkspacePage/ResourcesSidebarContent.tsx b/site/src/pages/WorkspacePage/ResourcesSidebarContent.tsx index 5db9494521b4f..ff8d1e56261a3 100644 --- a/site/src/pages/WorkspacePage/ResourcesSidebarContent.tsx +++ b/site/src/pages/WorkspacePage/ResourcesSidebarContent.tsx @@ -1,5 +1,5 @@ import { useTheme } from "@emotion/react"; -import { Workspace } from "api/typesGenerated"; +import type { Workspace } from "api/typesGenerated"; import { SidebarLink, SidebarCaption } from "components/FullPageLayout/Sidebar"; export const ResourcesSidebarContent = ({ diff --git a/site/src/pages/WorkspacePage/UpdateBuildParametersDialog.tsx b/site/src/pages/WorkspacePage/UpdateBuildParametersDialog.tsx index ea19d7ed11cc2..74f4e4bf4da9a 100644 --- a/site/src/pages/WorkspacePage/UpdateBuildParametersDialog.tsx +++ b/site/src/pages/WorkspacePage/UpdateBuildParametersDialog.tsx @@ -1,22 +1,22 @@ +import { css } from "@emotion/css"; +import { type Interpolation, type Theme } from "@emotion/react"; +import Button from "@mui/material/Button"; import Dialog from "@mui/material/Dialog"; +import DialogActions from "@mui/material/DialogActions"; import DialogContent from "@mui/material/DialogContent"; import DialogContentText from "@mui/material/DialogContentText"; import DialogTitle from "@mui/material/DialogTitle"; -import DialogActions from "@mui/material/DialogActions"; -import Button from "@mui/material/Button"; import { useFormik } from "formik"; -import * as Yup from "yup"; import { type FC } from "react"; -import { css } from "@emotion/css"; -import { type Interpolation, type Theme } from "@emotion/react"; -import { getFormHelpers } from "utils/formUtils"; -import type { DialogProps } from "components/Dialogs/Dialog"; -import { FormFields, VerticalForm } from "components/Form/Form"; +import * as Yup from "yup"; import type { TemplateVersionParameter, WorkspaceBuildParameter, } from "api/typesGenerated"; +import type { DialogProps } from "components/Dialogs/Dialog"; +import { FormFields, VerticalForm } from "components/Form/Form"; import { RichParameterInput } from "components/RichParameterInput/RichParameterInput"; +import { getFormHelpers } from "utils/formUtils"; import { getInitialRichParameterValues, useValidationSchemaForRichParameters, diff --git a/site/src/pages/WorkspacePage/Workspace.stories.tsx b/site/src/pages/WorkspacePage/Workspace.stories.tsx index cd6cedee0f692..609bb68aedbb5 100644 --- a/site/src/pages/WorkspacePage/Workspace.stories.tsx +++ b/site/src/pages/WorkspacePage/Workspace.stories.tsx @@ -1,15 +1,15 @@ import { action } from "@storybook/addon-actions"; -import { Meta, StoryObj } from "@storybook/react"; -import EventSource from "eventsourcemock"; +import type { Meta, StoryObj } from "@storybook/react"; import { withReactContext } from "storybook-react-context"; import type { ProvisionerJobLog } from "api/typesGenerated"; -import * as Mocks from "testHelpers/entities"; import { ProxyContext, getPreferredProxy } from "contexts/ProxyContext"; +import EventSource from "eventsourcemock"; import { DashboardContext } from "modules/dashboard/DashboardProvider"; import { WatchAgentMetadataContext } from "modules/resources/AgentMetadata"; +import * as Mocks from "testHelpers/entities"; +import type { WorkspacePermissions } from "./permissions"; import { Workspace } from "./Workspace"; import { WorkspaceBuildLogsSection } from "./WorkspaceBuildLogsSection"; -import { WorkspacePermissions } from "./permissions"; const MockedAppearance = { config: Mocks.MockAppearanceConfig, diff --git a/site/src/pages/WorkspacePage/Workspace.tsx b/site/src/pages/WorkspacePage/Workspace.tsx index 011b7329fd4eb..464520cb5b985 100644 --- a/site/src/pages/WorkspacePage/Workspace.tsx +++ b/site/src/pages/WorkspacePage/Workspace.tsx @@ -1,26 +1,26 @@ import { type Interpolation, type Theme } from "@emotion/react"; +import { useTheme } from "@emotion/react"; +import HistoryOutlined from "@mui/icons-material/HistoryOutlined"; +import HubOutlined from "@mui/icons-material/HubOutlined"; import AlertTitle from "@mui/material/AlertTitle"; import { type FC } from "react"; import { useNavigate } from "react-router-dom"; import type * as TypesGen from "api/typesGenerated"; import { Alert, AlertDetail } from "components/Alert/Alert"; -import { AgentRow } from "modules/resources/AgentRow"; +import { SidebarIconButton } from "components/FullPageLayout/Sidebar"; import { useTab } from "hooks"; +import { AgentRow } from "modules/resources/AgentRow"; +import { HistorySidebar } from "./HistorySidebar"; +import type { WorkspacePermissions } from "./permissions"; +import { ResourceMetadata } from "./ResourceMetadata"; +import { ResourcesSidebar } from "./ResourcesSidebar"; +import { resourceOptionValue, useResourcesNav } from "./useResourcesNav"; import { ActiveTransition, WorkspaceBuildProgress, } from "./WorkspaceBuildProgress"; import { WorkspaceDeletedBanner } from "./WorkspaceDeletedBanner"; import { WorkspaceTopbar } from "./WorkspaceTopbar"; -import { HistorySidebar } from "./HistorySidebar"; -import HistoryOutlined from "@mui/icons-material/HistoryOutlined"; -import { useTheme } from "@emotion/react"; -import { SidebarIconButton } from "components/FullPageLayout/Sidebar"; -import HubOutlined from "@mui/icons-material/HubOutlined"; -import { ResourcesSidebar } from "./ResourcesSidebar"; -import { WorkspacePermissions } from "./permissions"; -import { resourceOptionValue, useResourcesNav } from "./useResourcesNav"; -import { ResourceMetadata } from "./ResourceMetadata"; export interface WorkspaceProps { handleStart: (buildParameters?: TypesGen.WorkspaceBuildParameter[]) => void; diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx index 1cad2f77aebbb..86ff53b08188a 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx @@ -1,6 +1,8 @@ +import { useTheme } from "@emotion/react"; import ExpandMoreOutlined from "@mui/icons-material/ExpandMoreOutlined"; import Button from "@mui/material/Button"; -import { useTheme } from "@emotion/react"; +import visuallyHidden from "@mui/utils/visuallyHidden"; +import { useFormik } from "formik"; import { type FC } from "react"; import { useQuery } from "react-query"; import { getWorkspaceParameters } from "api/api"; @@ -10,29 +12,28 @@ import type { WorkspaceBuildParameter, } from "api/typesGenerated"; import { FormFields } from "components/Form/Form"; -import { Loader } from "components/Loader/Loader"; -import { RichParameterInput } from "components/RichParameterInput/RichParameterInput"; +import { TopbarButton } from "components/FullPageLayout/Topbar"; import { HelpTooltipLink, HelpTooltipLinksGroup, HelpTooltipText, HelpTooltipTitle, } from "components/HelpTooltip/HelpTooltip"; -import { useFormik } from "formik"; -import { docs } from "utils/docs"; -import { getFormHelpers } from "utils/formUtils"; -import { - AutofillBuildParameter, - getInitialRichParameterValues, -} from "utils/richParameters"; +import { Loader } from "components/Loader/Loader"; import { Popover, PopoverContent, PopoverTrigger, usePopover, } from "components/Popover/Popover"; -import { TopbarButton } from "components/FullPageLayout/Topbar"; -import visuallyHidden from "@mui/utils/visuallyHidden"; +import { RichParameterInput } from "components/RichParameterInput/RichParameterInput"; +import { docs } from "utils/docs"; +import { getFormHelpers } from "utils/formUtils"; +import type { + AutofillBuildParameter} from "utils/richParameters"; +import { + getInitialRichParameterValues, +} from "utils/richParameters"; interface BuildParametersPopoverProps { workspace: Workspace; diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx index 43827b68a4356..4d996530bdf2b 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx @@ -1,18 +1,18 @@ -import Tooltip from "@mui/material/Tooltip"; -import ButtonGroup from "@mui/material/ButtonGroup"; +import BlockIcon from "@mui/icons-material/Block"; +import OutlinedBlockIcon from "@mui/icons-material/BlockOutlined"; import CloudQueueIcon from "@mui/icons-material/CloudQueue"; import CropSquareIcon from "@mui/icons-material/CropSquare"; import PlayCircleOutlineIcon from "@mui/icons-material/PlayCircleOutline"; -import ReplayIcon from "@mui/icons-material/Replay"; -import BlockIcon from "@mui/icons-material/Block"; -import OutlinedBlockIcon from "@mui/icons-material/BlockOutlined"; import PowerSettingsNewIcon from "@mui/icons-material/PowerSettingsNew"; +import ReplayIcon from "@mui/icons-material/Replay"; import Star from "@mui/icons-material/Star"; import StarBorder from "@mui/icons-material/StarBorder"; +import ButtonGroup from "@mui/material/ButtonGroup"; +import Tooltip from "@mui/material/Tooltip"; import { type FC } from "react"; import type { Workspace, WorkspaceBuildParameter } from "api/typesGenerated"; -import { BuildParametersPopover } from "./BuildParametersPopover"; import { TopbarButton } from "components/FullPageLayout/Topbar"; +import { BuildParametersPopover } from "./BuildParametersPopover"; export interface ActionButtonProps { loading?: boolean; diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.stories.tsx index 870f1bb97bca7..284fc6d99387d 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.stories.tsx @@ -1,7 +1,7 @@ -import { Meta, StoryObj } from "@storybook/react"; -import { DebugButton } from "./DebugButton"; -import { MockWorkspace } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react"; import { userEvent, waitFor, within, expect } from "@storybook/test"; +import { MockWorkspace } from "testHelpers/entities"; +import { DebugButton } from "./DebugButton"; const meta: Meta = { title: "pages/WorkspacePage/DebugButton", diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.tsx index d93d7cefc38d8..ad247331ef646 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.tsx @@ -1,10 +1,10 @@ -import ButtonGroup from "@mui/material/ButtonGroup"; import DebugIcon from "@mui/icons-material/BugReportOutlined"; +import ButtonGroup from "@mui/material/ButtonGroup"; import { type FC } from "react"; import type { Workspace } from "api/typesGenerated"; -import { BuildParametersPopover } from "./BuildParametersPopover"; import { TopbarButton } from "components/FullPageLayout/Topbar"; -import { ActionButtonProps } from "./Buttons"; +import { BuildParametersPopover } from "./BuildParametersPopover"; +import type { ActionButtonProps } from "./Buttons"; type DebugButtonProps = Omit & { workspace: Workspace; diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.stories.tsx index 25fc7567f104e..6d5f7f9c8de3d 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.stories.tsx @@ -1,7 +1,7 @@ -import { Meta, StoryObj } from "@storybook/react"; -import { RetryButton } from "./RetryButton"; -import { MockWorkspace } from "testHelpers/entities"; +import type { Meta, StoryObj } from "@storybook/react"; import { userEvent, waitFor, within, expect } from "@storybook/test"; +import { MockWorkspace } from "testHelpers/entities"; +import { RetryButton } from "./RetryButton"; const meta: Meta = { title: "pages/WorkspacePage/RetryButton", diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.tsx index 768b50501883f..e73f9b0dd56ba 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.tsx @@ -1,10 +1,10 @@ -import ButtonGroup from "@mui/material/ButtonGroup"; import RetryIcon from "@mui/icons-material/CachedOutlined"; +import ButtonGroup from "@mui/material/ButtonGroup"; import { type FC } from "react"; import type { Workspace } from "api/typesGenerated"; -import { BuildParametersPopover } from "./BuildParametersPopover"; import { TopbarButton } from "components/FullPageLayout/Topbar"; -import { ActionButtonProps } from "./Buttons"; +import { BuildParametersPopover } from "./BuildParametersPopover"; +import type { ActionButtonProps } from "./Buttons"; type RetryButtonProps = Omit & { enableBuildParameters: boolean; diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.stories.tsx index d14e26a58570b..ce03863b69c55 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; import * as Mocks from "testHelpers/entities"; import { WorkspaceActions } from "./WorkspaceActions"; diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.tsx index 7d573d9600170..e90d844dbda70 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/WorkspaceActions.tsx @@ -1,8 +1,20 @@ +import DeleteIcon from "@mui/icons-material/DeleteOutlined"; +import DuplicateIcon from "@mui/icons-material/FileCopyOutlined"; +import HistoryIcon from "@mui/icons-material/HistoryOutlined"; +import MoreVertOutlined from "@mui/icons-material/MoreVertOutlined"; +import SettingsIcon from "@mui/icons-material/SettingsOutlined"; +import Divider from "@mui/material/Divider"; import { type FC, type ReactNode, Fragment } from "react"; -import { Workspace, WorkspaceBuildParameter } from "api/typesGenerated"; +import type { Workspace, WorkspaceBuildParameter } from "api/typesGenerated"; +import { TopbarIconButton } from "components/FullPageLayout/Topbar"; +import { + MoreMenu, + MoreMenuContent, + MoreMenuItem, + MoreMenuTrigger, +} from "components/MoreMenu/MoreMenu"; import { useWorkspaceDuplication } from "pages/CreateWorkspacePage/useWorkspaceDuplication"; import { mustUpdateWorkspace } from "utils/workspace"; -import { type ActionType, abilitiesByWorkspaceStatus } from "./constants"; import { CancelButton, DisabledButton, @@ -13,22 +25,9 @@ import { ActivateButton, FavoriteButton, } from "./Buttons"; - -import Divider from "@mui/material/Divider"; -import DuplicateIcon from "@mui/icons-material/FileCopyOutlined"; -import SettingsIcon from "@mui/icons-material/SettingsOutlined"; -import HistoryIcon from "@mui/icons-material/HistoryOutlined"; -import DeleteIcon from "@mui/icons-material/DeleteOutlined"; -import { - MoreMenu, - MoreMenuContent, - MoreMenuItem, - MoreMenuTrigger, -} from "components/MoreMenu/MoreMenu"; -import { TopbarIconButton } from "components/FullPageLayout/Topbar"; -import MoreVertOutlined from "@mui/icons-material/MoreVertOutlined"; -import { RetryButton } from "./RetryButton"; +import { type ActionType, abilitiesByWorkspaceStatus } from "./constants"; import { DebugButton } from "./DebugButton"; +import { RetryButton } from "./RetryButton"; export interface WorkspaceActionsProps { workspace: Workspace; diff --git a/site/src/pages/WorkspacePage/WorkspaceBuildProgress.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceBuildProgress.stories.tsx index b65a9ee74f4de..68424259ff68e 100644 --- a/site/src/pages/WorkspacePage/WorkspaceBuildProgress.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceBuildProgress.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; import dayjs from "dayjs"; import { MockStartingWorkspace, diff --git a/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx b/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx index 2eb8ea449b30f..6ce5a4a45cdb2 100644 --- a/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx @@ -1,12 +1,11 @@ import { css } from "@emotion/css"; import { type Interpolation, type Theme } from "@emotion/react"; import LinearProgress from "@mui/material/LinearProgress"; -import type { TransitionStats, Template, Workspace } from "api/typesGenerated"; import dayjs, { type Dayjs } from "dayjs"; -import { type FC, useEffect, useState } from "react"; -import capitalize from "lodash/capitalize"; - import duration from "dayjs/plugin/duration"; +import capitalize from "lodash/capitalize"; +import { type FC, useEffect, useState } from "react"; +import type { TransitionStats, Template, Workspace } from "api/typesGenerated"; dayjs.extend(duration); diff --git a/site/src/pages/WorkspacePage/WorkspaceDeleteDialog/WorkspaceDeleteDialog.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceDeleteDialog/WorkspaceDeleteDialog.stories.tsx index 700e0f824aecb..ec8e4beeb0ab2 100644 --- a/site/src/pages/WorkspacePage/WorkspaceDeleteDialog/WorkspaceDeleteDialog.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceDeleteDialog/WorkspaceDeleteDialog.stories.tsx @@ -1,6 +1,6 @@ -import { Meta, StoryObj } from "@storybook/react"; -import { WorkspaceDeleteDialog } from "./WorkspaceDeleteDialog"; +import type { Meta, StoryObj } from "@storybook/react"; import { MockWorkspace, MockFailedWorkspace } from "testHelpers/entities"; +import { WorkspaceDeleteDialog } from "./WorkspaceDeleteDialog"; const meta: Meta = { title: "pages/WorkspacePage/WorkspaceDeleteDialog", diff --git a/site/src/pages/WorkspacePage/WorkspaceDeleteDialog/WorkspaceDeleteDialog.tsx b/site/src/pages/WorkspacePage/WorkspaceDeleteDialog/WorkspaceDeleteDialog.tsx index ec2e71657f04a..6cac839773348 100644 --- a/site/src/pages/WorkspacePage/WorkspaceDeleteDialog/WorkspaceDeleteDialog.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceDeleteDialog/WorkspaceDeleteDialog.tsx @@ -1,11 +1,11 @@ -import { Workspace, CreateWorkspaceBuildRequest } from "api/typesGenerated"; -import { type FC, type FormEvent, useId, useState } from "react"; -import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { type Interpolation, type Theme } from "@emotion/react"; +import Checkbox from "@mui/material/Checkbox"; +import Link from "@mui/material/Link"; import TextField from "@mui/material/TextField"; +import { type FC, type FormEvent, useId, useState } from "react"; +import type { Workspace, CreateWorkspaceBuildRequest } from "api/typesGenerated"; +import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { docs } from "utils/docs"; -import Link from "@mui/material/Link"; -import Checkbox from "@mui/material/Checkbox"; interface WorkspaceDeleteDialogProps { workspace: Workspace; diff --git a/site/src/pages/WorkspacePage/WorkspaceDeletedBanner.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceDeletedBanner.stories.tsx index bc81e1b7c9b3f..081f3e90cdda1 100644 --- a/site/src/pages/WorkspacePage/WorkspaceDeletedBanner.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceDeletedBanner.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; import { WorkspaceDeletedBanner } from "./WorkspaceDeletedBanner"; const meta: Meta = { diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx index 79907806b8d87..d9940dacf4819 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx @@ -1,7 +1,7 @@ -import Button, { type ButtonProps } from "@mui/material/Button"; import { type Interpolation, type Theme, useTheme } from "@emotion/react"; +import Button, { type ButtonProps } from "@mui/material/Button"; import { type FC, type ReactNode } from "react"; -import { type ThemeRole } from "theme/roles"; +import { type AlertProps } from "components/Alert/Alert"; import { Pill } from "components/Pill/Pill"; import { Popover, @@ -9,7 +9,7 @@ import { PopoverTrigger, usePopover, } from "components/Popover/Popover"; -import { type AlertProps } from "components/Alert/Alert"; +import { type ThemeRole } from "theme/roles"; export type NotificationItem = { title: string; diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx index 644d39dd118ab..34db0fd78332a 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx @@ -1,5 +1,6 @@ import type { Meta, StoryObj } from "@storybook/react"; import { expect, userEvent, waitFor, within } from "@storybook/test"; +import { getWorkspaceResolveAutostartQueryKey } from "api/queries/workspaceQuota"; import { MockOutdatedWorkspace, MockTemplate, @@ -7,7 +8,6 @@ import { MockTemplateVersionWithMarkdownMessage, MockWorkspace, } from "testHelpers/entities"; -import { getWorkspaceResolveAutostartQueryKey } from "api/queries/workspaceQuota"; import { withDashboardProvider } from "testHelpers/storybook"; import { WorkspaceNotifications } from "./WorkspaceNotifications"; diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx index 4d967cc2abe73..a632425e67137 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx @@ -1,21 +1,22 @@ -import { workspaceResolveAutostart } from "api/queries/workspaceQuota"; -import { Template, TemplateVersion, Workspace } from "api/typesGenerated"; import { type Interpolation, type Theme } from "@emotion/react"; -import { type FC, useEffect, useState } from "react"; -import { useQuery } from "react-query"; -import dayjs from "dayjs"; -import { useDashboard } from "modules/dashboard/useDashboard"; -import formatDistanceToNow from "date-fns/formatDistanceToNow"; import InfoOutlined from "@mui/icons-material/InfoOutlined"; import WarningRounded from "@mui/icons-material/WarningRounded"; +import formatDistanceToNow from "date-fns/formatDistanceToNow"; +import dayjs from "dayjs"; +import { type FC, useEffect, useState } from "react"; +import { useQuery } from "react-query"; +import { workspaceResolveAutostart } from "api/queries/workspaceQuota"; +import type { Template, TemplateVersion, Workspace } from "api/typesGenerated"; import { MemoizedInlineMarkdown } from "components/Markdown/Markdown"; +import { useDashboard } from "modules/dashboard/useDashboard"; +import { TemplateUpdateMessage } from "modules/templates/TemplateUpdateMessage"; import type { WorkspacePermissions } from "../permissions"; +import type { + NotificationItem} from "./Notifications"; import { NotificationActionButton, - NotificationItem, Notifications, } from "./Notifications"; -import { TemplateUpdateMessage } from "modules/templates/TemplateUpdateMessage"; type WorkspaceNotificationsProps = { workspace: Workspace; diff --git a/site/src/pages/WorkspacePage/WorkspacePage.test.tsx b/site/src/pages/WorkspacePage/WorkspacePage.test.tsx index 1b262907bf39e..f45a9706b5b29 100644 --- a/site/src/pages/WorkspacePage/WorkspacePage.test.tsx +++ b/site/src/pages/WorkspacePage/WorkspacePage.test.tsx @@ -1,8 +1,9 @@ -import { TemplateVersionParameter, type Workspace } from "api/typesGenerated"; import { screen, waitFor, within } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; -import EventSourceMock from "eventsourcemock"; import { rest } from "msw"; +import * as api from "api/api"; +import type { TemplateVersionParameter, type Workspace } from "api/typesGenerated"; +import EventSourceMock from "eventsourcemock"; import { MockTemplate, MockWorkspace, @@ -17,7 +18,6 @@ import { MockDeploymentConfig, MockWorkspaceBuildDelete, } from "testHelpers/entities"; -import * as api from "api/api"; import { renderWithAuth } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; import { WorkspacePage } from "./WorkspacePage"; diff --git a/site/src/pages/WorkspacePage/WorkspacePage.tsx b/site/src/pages/WorkspacePage/WorkspacePage.tsx index f89b0d2d7ffdc..22597a4b8827e 100644 --- a/site/src/pages/WorkspacePage/WorkspacePage.tsx +++ b/site/src/pages/WorkspacePage/WorkspacePage.tsx @@ -2,19 +2,20 @@ import { type FC, useEffect } from "react"; import { useQuery, useQueryClient } from "react-query"; import { useParams } from "react-router-dom"; import { watchWorkspace } from "api/api"; -import type { Workspace } from "api/typesGenerated"; -import { workspaceBuildsKey } from "api/queries/workspaceBuilds"; +import { checkAuthorization } from "api/queries/authCheck"; import { templateByName } from "api/queries/templates"; +import { workspaceBuildsKey } from "api/queries/workspaceBuilds"; import { workspaceByOwnerAndName } from "api/queries/workspaces"; -import { checkAuthorization } from "api/queries/authCheck"; -import { useEffectEvent } from "hooks/hookPolyfills"; -import { useOrganizationId } from "contexts/auth/useOrganizationId"; -import { Navbar } from "modules/dashboard/Navbar/Navbar"; -import { ServiceBanner } from "modules/dashboard/ServiceBanner/ServiceBanner"; +import type { Workspace } from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Loader } from "components/Loader/Loader"; import { Margins } from "components/Margins/Margins"; -import { WorkspacePermissions, workspaceChecks } from "./permissions"; +import { useOrganizationId } from "contexts/auth/useOrganizationId"; +import { useEffectEvent } from "hooks/hookPolyfills"; +import { Navbar } from "modules/dashboard/Navbar/Navbar"; +import { ServiceBanner } from "modules/dashboard/ServiceBanner/ServiceBanner"; +import type { WorkspacePermissions} from "./permissions"; +import { workspaceChecks } from "./permissions"; import { WorkspaceReadyPage } from "./WorkspaceReadyPage"; export const WorkspacePage: FC = () => { diff --git a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx index 37eee8b99190a..edce7d5905d4c 100644 --- a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx @@ -5,14 +5,8 @@ import { useMutation, useQuery, useQueryClient } from "react-query"; import { useNavigate } from "react-router-dom"; import { MissingBuildParameters, restartWorkspace } from "api/api"; import { getErrorMessage } from "api/errors"; -import type * as TypesGen from "api/typesGenerated"; -import { templateVersion, templateVersions } from "api/queries/templates"; import { deploymentConfig, deploymentSSHConfig } from "api/queries/deployment"; -import { useMe } from "contexts/auth/useMe"; -import { useWorkspaceBuildLogs } from "hooks/useWorkspaceBuildLogs"; -import { useDashboard } from "modules/dashboard/useDashboard"; -import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; -import { pageTitle } from "utils/page"; +import { templateVersion, templateVersions } from "api/queries/templates"; import { activate, changeVersion, @@ -23,15 +17,22 @@ import { toggleFavorite, cancelBuild, } from "api/queries/workspaces"; -import { MemoizedInlineMarkdown } from "components/Markdown/Markdown"; -import { Stack } from "components/Stack/Stack"; +import type * as TypesGen from "api/typesGenerated"; +import type { + ConfirmDialogProps} from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { - ConfirmDialog, - ConfirmDialogProps, + ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { displayError } from "components/GlobalSnackbar/utils"; +import { MemoizedInlineMarkdown } from "components/Markdown/Markdown"; +import { Stack } from "components/Stack/Stack"; +import { useMe } from "contexts/auth/useMe"; +import { useWorkspaceBuildLogs } from "hooks/useWorkspaceBuildLogs"; +import { useDashboard } from "modules/dashboard/useDashboard"; +import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility"; +import { pageTitle } from "utils/page"; import { ChangeVersionDialog } from "./ChangeVersionDialog"; -import { WorkspacePermissions } from "./permissions"; +import type { WorkspacePermissions } from "./permissions"; import { UpdateBuildParametersDialog } from "./UpdateBuildParametersDialog"; import { Workspace } from "./Workspace"; import { WorkspaceBuildLogsSection } from "./WorkspaceBuildLogsSection"; diff --git a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.test.tsx b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.test.tsx index c13d3ffe5b9c1..4c6cebb439518 100644 --- a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.test.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.test.tsx @@ -1,16 +1,16 @@ import { render, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; +import dayjs from "dayjs"; +import { rest } from "msw"; import { type FC } from "react"; import { QueryClient, QueryClientProvider, useQuery } from "react-query"; import { RouterProvider, createMemoryRouter } from "react-router-dom"; -import dayjs from "dayjs"; -import { rest } from "msw"; import * as API from "api/api"; import { workspaceByOwnerAndName } from "api/queries/workspaces"; +import { GlobalSnackbar } from "components/GlobalSnackbar/GlobalSnackbar"; import { ThemeProvider } from "contexts/ThemeProvider"; import { MockTemplate, MockWorkspace } from "testHelpers/entities"; import { server } from "testHelpers/server"; -import { GlobalSnackbar } from "components/GlobalSnackbar/GlobalSnackbar"; import { WorkspaceScheduleControls } from "./WorkspaceScheduleControls"; const Wrapper: FC = () => { diff --git a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx index 7b027e9e36c8c..f860e8f2ce31a 100644 --- a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx @@ -1,18 +1,27 @@ import { type Interpolation, type Theme } from "@emotion/react"; -import Link, { type LinkProps } from "@mui/material/Link"; -import IconButton from "@mui/material/IconButton"; import AddIcon from "@mui/icons-material/AddOutlined"; import RemoveIcon from "@mui/icons-material/RemoveOutlined"; import ScheduleOutlined from "@mui/icons-material/ScheduleOutlined"; +import IconButton from "@mui/material/IconButton"; +import Link, { type LinkProps } from "@mui/material/Link"; import Tooltip from "@mui/material/Tooltip"; import { visuallyHidden } from "@mui/utils"; import dayjs, { type Dayjs } from "dayjs"; -import { forwardRef, type FC, useRef, useState, ReactNode } from "react"; +import { forwardRef, useRef, useState } from "react"; +import type { ReactNode , type FC } from "react"; import { useMutation, useQueryClient } from "react-query"; import { Link as RouterLink } from "react-router-dom"; -import { useTime } from "hooks/useTime"; -import { isWorkspaceOn } from "utils/workspace"; +import { getErrorMessage } from "api/errors"; +import { + updateDeadline, + workspaceByOwnerAndNameKey, +} from "api/queries/workspaces"; import type { Template, Workspace } from "api/typesGenerated"; +import { TopbarData, TopbarIcon } from "components/FullPageLayout/Topbar"; +import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; +import { Pill } from "components/Pill/Pill"; +import { useTime } from "hooks/useTime"; +import { getWorkspaceActivityStatus } from "modules/workspaces/activity"; import { autostartDisplay, autostopDisplay, @@ -21,15 +30,7 @@ import { getMaxDeadlineChange, getMinDeadline, } from "utils/schedule"; -import { getErrorMessage } from "api/errors"; -import { - updateDeadline, - workspaceByOwnerAndNameKey, -} from "api/queries/workspaces"; -import { TopbarData, TopbarIcon } from "components/FullPageLayout/Topbar"; -import { displayError, displaySuccess } from "components/GlobalSnackbar/utils"; -import { getWorkspaceActivityStatus } from "modules/workspaces/activity"; -import { Pill } from "components/Pill/Pill"; +import { isWorkspaceOn } from "utils/workspace"; export interface WorkspaceScheduleContainerProps { children?: ReactNode; diff --git a/site/src/pages/WorkspacePage/WorkspaceTopbar.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceTopbar.stories.tsx index 3671801fa4aba..739ecd699e407 100644 --- a/site/src/pages/WorkspacePage/WorkspaceTopbar.stories.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceTopbar.stories.tsx @@ -1,15 +1,15 @@ -import { Meta, StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; import { expect, userEvent, waitFor, within, screen } from "@storybook/test"; +import { addDays, addHours, addMinutes } from "date-fns"; +import { getWorkspaceQuotaQueryKey } from "api/queries/workspaceQuota"; import { MockTemplate, MockTemplateVersion, MockUser, MockWorkspace, } from "testHelpers/entities"; -import { WorkspaceTopbar } from "./WorkspaceTopbar"; import { withDashboardProvider } from "testHelpers/storybook"; -import { addDays, addHours, addMinutes } from "date-fns"; -import { getWorkspaceQuotaQueryKey } from "api/queries/workspaceQuota"; +import { WorkspaceTopbar } from "./WorkspaceTopbar"; // We want a workspace without a deadline to not pollute the screenshot const baseWorkspace = { diff --git a/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx b/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx index 2298b5d73a8ae..0d5060d5d2a2c 100644 --- a/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx @@ -1,17 +1,16 @@ -import Tooltip from "@mui/material/Tooltip"; -import Link from "@mui/material/Link"; -import MonetizationOnOutlined from "@mui/icons-material/MonetizationOnOutlined"; -import DeleteOutline from "@mui/icons-material/DeleteOutline"; -import ArrowBackOutlined from "@mui/icons-material/ArrowBackOutlined"; import { useTheme } from "@emotion/react"; +import ArrowBackOutlined from "@mui/icons-material/ArrowBackOutlined"; +import DeleteOutline from "@mui/icons-material/DeleteOutline"; +import MonetizationOnOutlined from "@mui/icons-material/MonetizationOnOutlined"; +import Link from "@mui/material/Link"; +import Tooltip from "@mui/material/Tooltip"; import { type FC } from "react"; import { useQuery } from "react-query"; import { Link as RouterLink } from "react-router-dom"; -import type * as TypesGen from "api/typesGenerated"; import { workspaceQuota } from "api/queries/workspaceQuota"; -import { WorkspaceStatusBadge } from "modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge"; -import { useDashboard } from "modules/dashboard/useDashboard"; -import { displayDormantDeletion } from "utils/dormant"; +import type * as TypesGen from "api/typesGenerated"; +import { ExternalAvatar } from "components/Avatar/Avatar"; +import { AvatarData } from "components/AvatarData/AvatarData"; import { Topbar, TopbarAvatar, @@ -20,14 +19,15 @@ import { TopbarIcon, TopbarIconButton, } from "components/FullPageLayout/Topbar"; -import { Popover, PopoverTrigger } from "components/Popover/Popover"; import { HelpTooltipContent } from "components/HelpTooltip/HelpTooltip"; -import { AvatarData } from "components/AvatarData/AvatarData"; -import { ExternalAvatar } from "components/Avatar/Avatar"; +import { Popover, PopoverTrigger } from "components/Popover/Popover"; import { UserAvatar } from "components/UserAvatar/UserAvatar"; +import { useDashboard } from "modules/dashboard/useDashboard"; +import { WorkspaceStatusBadge } from "modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge"; +import { displayDormantDeletion } from "utils/dormant"; +import type { WorkspacePermissions } from "./permissions"; import { WorkspaceActions } from "./WorkspaceActions/WorkspaceActions"; import { WorkspaceNotifications } from "./WorkspaceNotifications/WorkspaceNotifications"; -import { WorkspacePermissions } from "./permissions"; import { WorkspaceScheduleControls } from "./WorkspaceScheduleControls"; export type WorkspaceError = diff --git a/site/src/pages/WorkspacePage/permissions.ts b/site/src/pages/WorkspacePage/permissions.ts index 043a5de7086ce..343396dee167f 100644 --- a/site/src/pages/WorkspacePage/permissions.ts +++ b/site/src/pages/WorkspacePage/permissions.ts @@ -1,4 +1,4 @@ -import { Workspace, Template } from "api/typesGenerated"; +import type { Workspace, Template } from "api/typesGenerated"; export const workspaceChecks = (workspace: Workspace, template: Template) => ({ diff --git a/site/src/pages/WorkspacePage/useResourcesNav.test.tsx b/site/src/pages/WorkspacePage/useResourcesNav.test.tsx index a08fa6b726ed7..32ae3dea9d253 100644 --- a/site/src/pages/WorkspacePage/useResourcesNav.test.tsx +++ b/site/src/pages/WorkspacePage/useResourcesNav.test.tsx @@ -1,8 +1,8 @@ import { renderHook } from "@testing-library/react"; -import { resourceOptionValue, useResourcesNav } from "./useResourcesNav"; -import { WorkspaceResource } from "api/typesGenerated"; -import { MockWorkspaceResource } from "testHelpers/entities"; import { RouterProvider, createMemoryRouter } from "react-router-dom"; +import type { WorkspaceResource } from "api/typesGenerated"; +import { MockWorkspaceResource } from "testHelpers/entities"; +import { resourceOptionValue, useResourcesNav } from "./useResourcesNav"; describe("useResourcesNav", () => { it("selects the first resource if it has agents and no resource is selected", () => { diff --git a/site/src/pages/WorkspacePage/useResourcesNav.ts b/site/src/pages/WorkspacePage/useResourcesNav.ts index 313c5558a0d3e..f4611a13a62b4 100644 --- a/site/src/pages/WorkspacePage/useResourcesNav.ts +++ b/site/src/pages/WorkspacePage/useResourcesNav.ts @@ -1,7 +1,7 @@ -import { WorkspaceResource } from "api/typesGenerated"; +import { useCallback, useEffect } from "react"; +import type { WorkspaceResource } from "api/typesGenerated"; import { useTab } from "hooks"; import { useEffectEvent } from "hooks/hookPolyfills"; -import { useCallback, useEffect } from "react"; export const resourceOptionValue = (resource: WorkspaceResource) => { return `${resource.type}_${resource.name}`; diff --git a/site/src/pages/WorkspaceSettingsPage/Sidebar.tsx b/site/src/pages/WorkspaceSettingsPage/Sidebar.tsx index c80f65069ce50..aecf79b716528 100644 --- a/site/src/pages/WorkspaceSettingsPage/Sidebar.tsx +++ b/site/src/pages/WorkspaceSettingsPage/Sidebar.tsx @@ -1,8 +1,8 @@ +import ParameterIcon from "@mui/icons-material/CodeOutlined"; +import GeneralIcon from "@mui/icons-material/SettingsOutlined"; import ScheduleIcon from "@mui/icons-material/TimerOutlined"; -import type { Workspace } from "api/typesGenerated"; import { type FC } from "react"; -import GeneralIcon from "@mui/icons-material/SettingsOutlined"; -import ParameterIcon from "@mui/icons-material/CodeOutlined"; +import type { Workspace } from "api/typesGenerated"; import { Avatar } from "components/Avatar/Avatar"; import { Sidebar as BaseSidebar, diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx index 481053c1b777b..bc18143c97890 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx @@ -1,6 +1,11 @@ import { useFormik } from "formik"; import { type FC } from "react"; import * as Yup from "yup"; +import type { + TemplateVersionParameter, + Workspace, + WorkspaceBuildParameter, +} from "api/typesGenerated"; import { Alert } from "components/Alert/Alert"; import { FormFields, @@ -9,17 +14,13 @@ import { HorizontalForm, } from "components/Form/Form"; import { RichParameterInput } from "components/RichParameterInput/RichParameterInput"; +import { getFormHelpers } from "utils/formUtils"; +import type { + AutofillBuildParameter} from "utils/richParameters"; import { - AutofillBuildParameter, getInitialRichParameterValues, useValidationSchemaForRichParameters, } from "utils/richParameters"; -import { getFormHelpers } from "utils/formUtils"; -import type { - TemplateVersionParameter, - Workspace, - WorkspaceBuildParameter, -} from "api/typesGenerated"; export type WorkspaceParametersFormValues = { rich_parameter_values: WorkspaceBuildParameter[]; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.stories.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.stories.tsx index d27a5fa3d7b4d..0314fa177ace0 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.stories.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.stories.tsx @@ -1,5 +1,4 @@ -import { Meta, StoryObj } from "@storybook/react"; -import { WorkspaceParametersPageView } from "./WorkspaceParametersPage"; +import type { Meta, StoryObj } from "@storybook/react"; import { MockWorkspaceBuildParameter1, MockWorkspaceBuildParameter2, @@ -10,6 +9,7 @@ import { MockWorkspace, MockOutdatedStoppedWorkspaceRequireActiveVersion, } from "testHelpers/entities"; +import { WorkspaceParametersPageView } from "./WorkspaceParametersPage"; const meta: Meta = { title: "pages/WorkspaceSettingsPage/WorkspaceParametersPageView", diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.test.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.test.tsx index 18267f7a8f25d..99b4f692d1db2 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.test.tsx @@ -1,10 +1,5 @@ -import userEvent from "@testing-library/user-event"; -import { - renderWithWorkspaceSettingsLayout, - waitForLoaderToBeRemoved, -} from "testHelpers/renderHelpers"; -import WorkspaceParametersPage from "./WorkspaceParametersPage"; import { screen, waitFor, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; import * as api from "api/api"; import { MockWorkspace, @@ -16,6 +11,11 @@ import { MockTemplateVersionParameter4, MockWorkspaceBuildParameter4, } from "testHelpers/entities"; +import { + renderWithWorkspaceSettingsLayout, + waitForLoaderToBeRemoved, +} from "testHelpers/renderHelpers"; +import WorkspaceParametersPage from "./WorkspaceParametersPage"; test("Submit the workspace settings page successfully", async () => { // Mock the API calls that loads data diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx index d98f67f33c3a2..29f62d6389032 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx @@ -1,29 +1,30 @@ -import Button from "@mui/material/Button"; import OpenInNewOutlined from "@mui/icons-material/OpenInNewOutlined"; +import Button from "@mui/material/Button"; +import { type FC } from "react"; import { Helmet } from "react-helmet-async"; +import { useMutation, useQuery } from "react-query"; +import { useNavigate } from "react-router-dom"; import { getWorkspaceParameters, postWorkspaceBuild } from "api/api"; +import { isApiValidationError } from "api/errors"; +import { checkAuthorization } from "api/queries/authCheck"; +import { templateByName } from "api/queries/templates"; +import type { Workspace, WorkspaceBuildParameter } from "api/typesGenerated"; +import { ErrorAlert } from "components/Alert/ErrorAlert"; import { EmptyState } from "components/EmptyState/EmptyState"; +import { Loader } from "components/Loader/Loader"; +import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; +import { docs } from "utils/docs"; import { pageTitle } from "utils/page"; +import type { + WorkspacePermissions} from "../../WorkspacePage/permissions"; import { - WorkspacePermissions, workspaceChecks, } from "../../WorkspacePage/permissions"; -import { checkAuthorization } from "api/queries/authCheck"; import { useWorkspaceSettings } from "../WorkspaceSettingsLayout"; -import { templateByName } from "api/queries/templates"; -import { useMutation, useQuery } from "react-query"; -import { Loader } from "components/Loader/Loader"; import { type WorkspaceParametersFormValues, WorkspaceParametersForm, } from "./WorkspaceParametersForm"; -import { useNavigate } from "react-router-dom"; -import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; -import { type FC } from "react"; -import { isApiValidationError } from "api/errors"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; -import type { Workspace, WorkspaceBuildParameter } from "api/typesGenerated"; -import { docs } from "utils/docs"; const WorkspaceParametersPage: FC = () => { const workspace = useWorkspaceSettings(); diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.stories.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.stories.tsx index d45e265c42030..a67f17bb07c68 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.stories.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; import dayjs from "dayjs"; import advancedFormat from "dayjs/plugin/advancedFormat"; import timezone from "dayjs/plugin/timezone"; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx index 41cbe7f373e4d..c3700d8b62765 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx @@ -1,17 +1,18 @@ +import { screen } from "@testing-library/react"; +import * as API from "api/api"; +import { defaultSchedule } from "pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule"; +import { MockTemplate } from "testHelpers/entities"; +import { render } from "testHelpers/renderHelpers"; +import { timeZones } from "utils/timeZones"; +import type { + WorkspaceScheduleFormValues, + WorkspaceScheduleFormProps} from "./WorkspaceScheduleForm"; import { Language, ttlShutdownAt, validationSchema, - WorkspaceScheduleFormValues, - WorkspaceScheduleForm, - WorkspaceScheduleFormProps, + WorkspaceScheduleForm } from "./WorkspaceScheduleForm"; -import { timeZones } from "utils/timeZones"; -import * as API from "api/api"; -import { MockTemplate } from "testHelpers/entities"; -import { render } from "testHelpers/renderHelpers"; -import { defaultSchedule } from "pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule"; -import { screen } from "@testing-library/react"; const valid: WorkspaceScheduleFormValues = { autostartEnabled: true, diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.tsx index 2c2970a30618f..8f898c497d409 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.tsx @@ -7,6 +7,20 @@ import FormLabel from "@mui/material/FormLabel"; import MenuItem from "@mui/material/MenuItem"; import Switch from "@mui/material/Switch"; import TextField from "@mui/material/TextField"; +import Tooltip from "@mui/material/Tooltip"; +import { formatDuration, intervalToDuration } from "date-fns"; +import dayjs from "dayjs"; +import advancedFormat from "dayjs/plugin/advancedFormat"; +import duration from "dayjs/plugin/duration"; +import relativeTime from "dayjs/plugin/relativeTime"; +import timezone from "dayjs/plugin/timezone"; +import utc from "dayjs/plugin/utc"; +import type { FormikTouched} from "formik"; +import { useFormik } from "formik"; +import { type ChangeEvent, type FC } from "react"; +import * as Yup from "yup"; +import type { Template } from "api/typesGenerated"; +import { DisabledBadge } from "components/Badges/Badges"; import { HorizontalForm, FormFooter, @@ -14,25 +28,12 @@ import { FormFields, } from "components/Form/Form"; import { Stack } from "components/Stack/Stack"; -import dayjs from "dayjs"; -import advancedFormat from "dayjs/plugin/advancedFormat"; -import duration from "dayjs/plugin/duration"; -import relativeTime from "dayjs/plugin/relativeTime"; -import timezone from "dayjs/plugin/timezone"; -import utc from "dayjs/plugin/utc"; -import { FormikTouched, useFormik } from "formik"; import { defaultSchedule, emptySchedule, } from "pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule"; -import { type ChangeEvent, type FC } from "react"; -import * as Yup from "yup"; import { getFormHelpers } from "utils/formUtils"; import { timeZones } from "utils/timeZones"; -import Tooltip from "@mui/material/Tooltip"; -import { formatDuration, intervalToDuration } from "date-fns"; -import { DisabledBadge } from "components/Badges/Badges"; -import { Template } from "api/typesGenerated"; // REMARK: some plugins depend on utc, so it's listed first. Otherwise they're // sorted alphabetically. diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx index e91dc02ba0169..ed183b67a53f8 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx @@ -1,17 +1,18 @@ -import { renderWithWorkspaceSettingsLayout } from "testHelpers/renderHelpers"; -import userEvent from "@testing-library/user-event"; import { screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; import { rest } from "msw"; -import { server } from "testHelpers/server"; import { MockUser, MockWorkspace } from "testHelpers/entities"; +import { renderWithWorkspaceSettingsLayout } from "testHelpers/renderHelpers"; +import { server } from "testHelpers/server"; import { formValuesToAutostartRequest, formValuesToTTLRequest, } from "./formToRequest"; import { scheduleToAutostart } from "./schedule"; import { ttlMsToAutostop } from "./ttl"; +import type { + WorkspaceScheduleFormValues} from "./WorkspaceScheduleForm"; import { - WorkspaceScheduleFormValues, Language as FormLanguage, } from "./WorkspaceScheduleForm"; import { WorkspaceSchedulePage } from "./WorkspaceSchedulePage"; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx index 6dae6ab01e0a3..3b036a62021ae 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx @@ -1,34 +1,35 @@ +import dayjs from "dayjs"; +import type { FC} from "react"; +import { useState } from "react"; +import { Helmet } from "react-helmet-async"; +import { useMutation, useQuery, useQueryClient } from "react-query"; +import { useNavigate, useParams } from "react-router-dom"; +import { + putWorkspaceAutostart, + putWorkspaceAutostop, + startWorkspace, +} from "api/api"; +import { checkAuthorization } from "api/queries/authCheck"; +import { templateByName } from "api/queries/templates"; +import { workspaceByOwnerAndNameKey } from "api/queries/workspaces"; +import type * as TypesGen from "api/typesGenerated"; import { Alert } from "components/Alert/Alert"; +import { ErrorAlert } from "components/Alert/ErrorAlert"; import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { Loader } from "components/Loader/Loader"; import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; -import dayjs from "dayjs"; import { scheduleToAutostart, scheduleChanged, } from "pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule"; import { ttlMsToAutostop } from "pages/WorkspaceSettingsPage/WorkspaceSchedulePage/ttl"; import { useWorkspaceSettings } from "pages/WorkspaceSettingsPage/WorkspaceSettingsLayout"; -import { FC, useState } from "react"; -import { Helmet } from "react-helmet-async"; -import { useNavigate, useParams } from "react-router-dom"; import { pageTitle } from "utils/page"; -import * as TypesGen from "api/typesGenerated"; -import { workspaceByOwnerAndNameKey } from "api/queries/workspaces"; -import { WorkspaceScheduleForm } from "./WorkspaceScheduleForm"; import { formValuesToAutostartRequest, formValuesToTTLRequest, } from "./formToRequest"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; -import { useMutation, useQuery, useQueryClient } from "react-query"; -import { checkAuthorization } from "api/queries/authCheck"; -import { templateByName } from "api/queries/templates"; -import { - putWorkspaceAutostart, - putWorkspaceAutostop, - startWorkspace, -} from "api/api"; +import { WorkspaceScheduleForm } from "./WorkspaceScheduleForm"; const permissionsToCheck = (workspace: TypesGen.Workspace) => ({ diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/formToRequest.ts b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/formToRequest.ts index 8096512e973db..da045d7a44750 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/formToRequest.ts +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/formToRequest.ts @@ -1,5 +1,5 @@ -import * as TypesGen from "api/typesGenerated"; -import { WorkspaceScheduleFormValues } from "./WorkspaceScheduleForm"; +import type * as TypesGen from "api/typesGenerated"; +import type { WorkspaceScheduleFormValues } from "./WorkspaceScheduleForm"; export const formValuesToAutostartRequest = ( values: WorkspaceScheduleFormValues, diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule.ts b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule.ts index 72dbfb9bffeb6..995d4018a4985 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule.ts +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/schedule.ts @@ -2,11 +2,11 @@ import * as cronParser from "cron-parser"; import dayjs from "dayjs"; import timezone from "dayjs/plugin/timezone"; import utc from "dayjs/plugin/utc"; -import { extractTimezone, stripTimezone } from "utils/schedule"; -import { Autostop } from "./ttl"; -import { WorkspaceScheduleFormValues } from "./WorkspaceScheduleForm"; import map from "lodash/map"; import some from "lodash/some"; +import { extractTimezone, stripTimezone } from "utils/schedule"; +import type { Autostop } from "./ttl"; +import type { WorkspaceScheduleFormValues } from "./WorkspaceScheduleForm"; // REMARK: timezone plugin depends on UTC // diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsForm.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsForm.tsx index 132e54aaebec3..81ddb51f16484 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsForm.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsForm.tsx @@ -1,26 +1,27 @@ +import { type Theme } from "@emotion/react"; +import MenuItem from "@mui/material/MenuItem"; import TextField from "@mui/material/TextField"; +import { useFormik } from "formik"; +import upperFirst from "lodash/upperFirst"; +import { type FC } from "react"; +import * as Yup from "yup"; +import type { + AutomaticUpdates, + Workspace} from "api/typesGenerated"; +import { + AutomaticUpdateses +} from "api/typesGenerated"; import { FormFields, FormFooter, FormSection, HorizontalForm, } from "components/Form/Form"; -import { useFormik } from "formik"; -import { type FC } from "react"; -import * as Yup from "yup"; import { nameValidator, getFormHelpers, onChangeTrimmed, } from "utils/formUtils"; -import { - AutomaticUpdates, - AutomaticUpdateses, - Workspace, -} from "api/typesGenerated"; -import MenuItem from "@mui/material/MenuItem"; -import upperFirst from "lodash/upperFirst"; -import { type Theme } from "@emotion/react"; export type WorkspaceSettingsFormValues = { name: string; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsLayout.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsLayout.tsx index debd3036780fb..815275d8c4df0 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsLayout.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsLayout.tsx @@ -1,9 +1,9 @@ import { createContext, type FC, Suspense, useContext } from "react"; import { Helmet } from "react-helmet-async"; -import { Outlet, useParams } from "react-router-dom"; import { useQuery } from "react-query"; -import type { Workspace } from "api/typesGenerated"; +import { Outlet, useParams } from "react-router-dom"; import { workspaceByOwnerAndName } from "api/queries/workspaces"; +import type { Workspace } from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Loader } from "components/Loader/Loader"; import { Margins } from "components/Margins/Margins"; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPage.test.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPage.test.tsx index d6d8c9a11c1f8..4fa1bc8a4d536 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPage.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPage.test.tsx @@ -1,12 +1,12 @@ +import { screen, waitFor, within } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; +import * as api from "api/api"; +import { MockWorkspace } from "testHelpers/entities"; import { renderWithWorkspaceSettingsLayout, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; import WorkspaceSettingsPage from "./WorkspaceSettingsPage"; -import { screen, waitFor, within } from "@testing-library/react"; -import * as api from "api/api"; -import { MockWorkspace } from "testHelpers/entities"; test("Submit the workspace settings page successfully", async () => { // Mock the API calls that loads data diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPage.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPage.tsx index bf4b06e00b59c..af05809a9aca7 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPage.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPage.tsx @@ -1,12 +1,12 @@ import { Helmet } from "react-helmet-async"; +import { useMutation } from "react-query"; import { useNavigate, useParams } from "react-router-dom"; +import { patchWorkspace, updateWorkspaceAutomaticUpdates } from "api/api"; +import { displaySuccess } from "components/GlobalSnackbar/utils"; import { pageTitle } from "utils/page"; +import type { WorkspaceSettingsFormValues } from "./WorkspaceSettingsForm"; import { useWorkspaceSettings } from "./WorkspaceSettingsLayout"; import { WorkspaceSettingsPageView } from "./WorkspaceSettingsPageView"; -import { useMutation } from "react-query"; -import { displaySuccess } from "components/GlobalSnackbar/utils"; -import { patchWorkspace, updateWorkspaceAutomaticUpdates } from "api/api"; -import { WorkspaceSettingsFormValues } from "./WorkspaceSettingsForm"; const WorkspaceSettingsPage = () => { const params = useParams() as { diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPageView.stories.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPageView.stories.tsx index 18b2e697547cf..b45281c0f4a9b 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPageView.stories.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPageView.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; import { MockWorkspace } from "testHelpers/entities"; import { WorkspaceSettingsPageView } from "./WorkspaceSettingsPageView"; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPageView.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPageView.tsx index 571888ab34304..bbd35a2c0d281 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPageView.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPageView.tsx @@ -1,7 +1,7 @@ +import type { ComponentProps, FC } from "react"; +import type { Workspace } from "api/typesGenerated"; import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; -import { ComponentProps, FC } from "react"; import { WorkspaceSettingsForm } from "./WorkspaceSettingsForm"; -import { Workspace } from "api/typesGenerated"; export type WorkspaceSettingsPageViewProps = { error: unknown; diff --git a/site/src/pages/WorkspacesPage/BatchDeleteConfirmation.tsx b/site/src/pages/WorkspacesPage/BatchDeleteConfirmation.tsx index 8eddd9b637f6c..3159ac5b0d325 100644 --- a/site/src/pages/WorkspacesPage/BatchDeleteConfirmation.tsx +++ b/site/src/pages/WorkspacesPage/BatchDeleteConfirmation.tsx @@ -1,9 +1,9 @@ +import { useTheme, type Interpolation, type Theme } from "@emotion/react"; import PersonOutlinedIcon from "@mui/icons-material/PersonOutlined"; import ScheduleIcon from "@mui/icons-material/Schedule"; import { visuallyHidden } from "@mui/utils"; import dayjs from "dayjs"; import relativeTime from "dayjs/plugin/relativeTime"; -import { useTheme, type Interpolation, type Theme } from "@emotion/react"; import { type FC, type ReactNode, useState } from "react"; import type { Workspace } from "api/typesGenerated"; import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; diff --git a/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.tsx b/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.tsx index ba37c14025a6e..e15a3d984e29c 100644 --- a/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.tsx +++ b/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.tsx @@ -1,19 +1,19 @@ +import { type Interpolation, type Theme } from "@emotion/react"; +import InstallDesktopIcon from "@mui/icons-material/InstallDesktop"; import PersonOutlinedIcon from "@mui/icons-material/PersonOutlined"; import ScheduleIcon from "@mui/icons-material/Schedule"; -import InstallDesktopIcon from "@mui/icons-material/InstallDesktop"; import SettingsSuggestIcon from "@mui/icons-material/SettingsSuggest"; import dayjs from "dayjs"; import relativeTime from "dayjs/plugin/relativeTime"; -import { type Interpolation, type Theme } from "@emotion/react"; import { type FC, type ReactNode, useMemo, useState, useEffect } from "react"; import { useQueries } from "react-query"; import { getTemplateVersion } from "api/api"; import type { TemplateVersion, Workspace } from "api/typesGenerated"; -import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; -import { Stack } from "components/Stack/Stack"; import { ErrorAlert } from "components/Alert/ErrorAlert"; +import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { Loader } from "components/Loader/Loader"; import { MemoizedInlineMarkdown } from "components/Markdown/Markdown"; +import { Stack } from "components/Stack/Stack"; dayjs.extend(relativeTime); diff --git a/site/src/pages/WorkspacesPage/LastUsed.tsx b/site/src/pages/WorkspacesPage/LastUsed.tsx index 92fc549ab631c..118627283dd97 100644 --- a/site/src/pages/WorkspacesPage/LastUsed.tsx +++ b/site/src/pages/WorkspacesPage/LastUsed.tsx @@ -1,7 +1,7 @@ import { useTheme } from "@emotion/react"; -import { type FC } from "react"; import dayjs from "dayjs"; import relativeTime from "dayjs/plugin/relativeTime"; +import { type FC } from "react"; import { Stack } from "components/Stack/Stack"; import { useTime } from "hooks/useTime"; diff --git a/site/src/pages/WorkspacesPage/WorkspaceHelpTooltip.tsx b/site/src/pages/WorkspacesPage/WorkspaceHelpTooltip.tsx index e5b1db60b683e..678c926eb9993 100644 --- a/site/src/pages/WorkspacesPage/WorkspaceHelpTooltip.tsx +++ b/site/src/pages/WorkspacesPage/WorkspaceHelpTooltip.tsx @@ -1,4 +1,4 @@ -import { FC } from "react"; +import type { FC } from "react"; import { HelpTooltip, HelpTooltipContent, diff --git a/site/src/pages/WorkspacesPage/WorkspacesButton.tsx b/site/src/pages/WorkspacesPage/WorkspacesButton.tsx index ce61aaddca785..2d7ecd4e30b89 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesButton.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesButton.tsx @@ -1,24 +1,25 @@ +import AddIcon from "@mui/icons-material/AddOutlined"; +import OpenIcon from "@mui/icons-material/OpenInNewOutlined"; +import Button from "@mui/material/Button"; +import Link from "@mui/material/Link"; import { type FC, type ReactNode, useState } from "react"; -import { type Template } from "api/typesGenerated"; import { type UseQueryResult } from "react-query"; +import type { + LinkProps as RouterLinkProps} from "react-router-dom"; import { - Link as RouterLink, - LinkProps as RouterLinkProps, + Link as RouterLink } from "react-router-dom"; -import Button from "@mui/material/Button"; -import Link from "@mui/material/Link"; -import AddIcon from "@mui/icons-material/AddOutlined"; -import OpenIcon from "@mui/icons-material/OpenInNewOutlined"; +import { type Template } from "api/typesGenerated"; +import { Avatar } from "components/Avatar/Avatar"; import { Loader } from "components/Loader/Loader"; +import { SearchEmpty, searchStyles } from "components/Menu/Search"; import { OverflowY } from "components/OverflowY/OverflowY"; -import { Avatar } from "components/Avatar/Avatar"; -import { SearchBox } from "./WorkspacesSearchBox"; import { Popover, PopoverContent, PopoverTrigger, } from "components/Popover/Popover"; -import { SearchEmpty, searchStyles } from "components/Menu/Search"; +import { SearchBox } from "./WorkspacesSearchBox"; const ICON_SIZE = 18; diff --git a/site/src/pages/WorkspacesPage/WorkspacesEmpty.tsx b/site/src/pages/WorkspacesPage/WorkspacesEmpty.tsx index 3ba4893b6a777..f836d1fa73e92 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesEmpty.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesEmpty.tsx @@ -1,9 +1,9 @@ import ArrowForwardOutlined from "@mui/icons-material/ArrowForwardOutlined"; import Button from "@mui/material/Button"; +import { Link } from "react-router-dom"; import type { Template } from "api/typesGenerated"; import { Avatar } from "components/Avatar/Avatar"; import { TableEmpty } from "components/TableEmpty/TableEmpty"; -import { Link } from "react-router-dom"; export const WorkspacesEmpty = (props: { isUsingFilter: boolean; diff --git a/site/src/pages/WorkspacesPage/WorkspacesPage.test.tsx b/site/src/pages/WorkspacesPage/WorkspacesPage.test.tsx index 16afb576f85e0..103f8be66a0d6 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPage.test.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPage.test.tsx @@ -1,6 +1,8 @@ import { screen, waitFor, within } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; import { rest } from "msw"; -import * as CreateDayString from "utils/createDayString"; +import * as API from "api/api"; +import type { Workspace } from "api/typesGenerated"; import { MockStoppedWorkspace, MockWorkspace, @@ -15,10 +17,8 @@ import { waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; +import * as CreateDayString from "utils/createDayString"; import WorkspacesPage from "./WorkspacesPage"; -import userEvent from "@testing-library/user-event"; -import * as API from "api/api"; -import { Workspace } from "api/typesGenerated"; describe("WorkspacesPage", () => { beforeEach(() => { diff --git a/site/src/pages/WorkspacesPage/WorkspacesPage.tsx b/site/src/pages/WorkspacesPage/WorkspacesPage.tsx index d6ac151966764..1e507d5ed5b7d 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPage.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPage.tsx @@ -2,21 +2,21 @@ import { type FC, useEffect, useState } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { useSearchParams } from "react-router-dom"; -import type { Workspace } from "api/typesGenerated"; import { templates } from "api/queries/templates"; +import type { Workspace } from "api/typesGenerated"; +import { useFilter } from "components/Filter/filter"; +import { useUserFilterMenu } from "components/Filter/UserFilter"; import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { usePermissions } from "contexts/auth/usePermissions"; import { useEffectEvent } from "hooks/hookPolyfills"; import { usePagination } from "hooks/usePagination"; import { useDashboard } from "modules/dashboard/useDashboard"; import { pageTitle } from "utils/page"; -import { useFilter } from "components/Filter/filter"; -import { useUserFilterMenu } from "components/Filter/UserFilter"; import { useBatchActions } from "./batchActions"; -import { useWorkspacesData, useWorkspaceUpdate } from "./data"; -import { useTemplateFilterMenu, useStatusFilterMenu } from "./filter/menus"; import { BatchDeleteConfirmation } from "./BatchDeleteConfirmation"; import { BatchUpdateConfirmation } from "./BatchUpdateConfirmation"; +import { useWorkspacesData, useWorkspaceUpdate } from "./data"; +import { useTemplateFilterMenu, useStatusFilterMenu } from "./filter/menus"; import { WorkspacesPageView } from "./WorkspacesPageView"; function useSafeSearchParams() { diff --git a/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx b/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx index 73f5ac74dacf7..24824460e756a 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx @@ -1,12 +1,19 @@ -import { Meta, StoryObj } from "@storybook/react"; -import { DEFAULT_RECORDS_PER_PAGE } from "components/PaginationWidget/utils"; +import type { Meta, StoryObj } from "@storybook/react"; import dayjs from "dayjs"; import uniqueId from "lodash/uniqueId"; -import { +import type { ComponentProps } from "react"; +import type { Workspace, - WorkspaceStatus, + WorkspaceStatus} from "api/typesGenerated"; +import { WorkspaceStatuses, } from "api/typesGenerated"; +import { + MockMenu, + getDefaultFilterProps, +} from "components/Filter/storyHelpers"; +import { DEFAULT_RECORDS_PER_PAGE } from "components/PaginationWidget/utils"; +import { DashboardContext } from "modules/dashboard/DashboardProvider"; import { MockWorkspace, MockAppearanceConfig, @@ -19,12 +26,6 @@ import { MockTemplate, } from "testHelpers/entities"; import { WorkspacesPageView } from "./WorkspacesPageView"; -import { DashboardContext } from "modules/dashboard/DashboardProvider"; -import { ComponentProps } from "react"; -import { - MockMenu, - getDefaultFilterProps, -} from "components/Filter/storyHelpers"; const createWorkspace = ( status: WorkspaceStatus, diff --git a/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx b/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx index 3ddc0411203a2..98a20004d1c3d 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPageView.tsx @@ -1,32 +1,32 @@ -import { Template, Workspace } from "api/typesGenerated"; -import { PaginationWidgetBase } from "components/PaginationWidget/PaginationWidgetBase"; -import { ComponentProps } from "react"; -import { Margins } from "components/Margins/Margins"; -import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; -import { Stack } from "components/Stack/Stack"; -import { WorkspaceHelpTooltip } from "./WorkspaceHelpTooltip"; -import { WorkspacesTable } from "pages/WorkspacesPage/WorkspacesTable"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; -import { WorkspacesFilter } from "./filter/filter"; -import { hasError, isApiValidationError } from "api/errors"; -import { TableToolbar } from "components/TableToolbar/TableToolbar"; +import CloudQueue from "@mui/icons-material/CloudQueue"; import DeleteOutlined from "@mui/icons-material/DeleteOutlined"; -import { WorkspacesButton } from "./WorkspacesButton"; -import { UseQueryResult } from "react-query"; -import StopOutlined from "@mui/icons-material/StopOutlined"; +import KeyboardArrowDownOutlined from "@mui/icons-material/KeyboardArrowDownOutlined"; import PlayArrowOutlined from "@mui/icons-material/PlayArrowOutlined"; -import CloudQueue from "@mui/icons-material/CloudQueue"; +import StopOutlined from "@mui/icons-material/StopOutlined"; +import LoadingButton from "@mui/lab/LoadingButton"; +import Divider from "@mui/material/Divider"; +import type { ComponentProps } from "react"; +import type { UseQueryResult } from "react-query"; +import { hasError, isApiValidationError } from "api/errors"; +import type { Template, Workspace } from "api/typesGenerated"; +import { ErrorAlert } from "components/Alert/ErrorAlert"; +import { Margins } from "components/Margins/Margins"; import { MoreMenu, MoreMenuContent, MoreMenuItem, MoreMenuTrigger, } from "components/MoreMenu/MoreMenu"; -import KeyboardArrowDownOutlined from "@mui/icons-material/KeyboardArrowDownOutlined"; -import Divider from "@mui/material/Divider"; -import LoadingButton from "@mui/lab/LoadingButton"; +import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; import { PaginationHeader } from "components/PaginationWidget/PaginationHeader"; +import { PaginationWidgetBase } from "components/PaginationWidget/PaginationWidgetBase"; +import { Stack } from "components/Stack/Stack"; +import { TableToolbar } from "components/TableToolbar/TableToolbar"; +import { WorkspacesTable } from "pages/WorkspacesPage/WorkspacesTable"; import { mustUpdateWorkspace } from "utils/workspace"; +import { WorkspacesFilter } from "./filter/filter"; +import { WorkspaceHelpTooltip } from "./WorkspaceHelpTooltip"; +import { WorkspacesButton } from "./WorkspacesButton"; export const Language = { pageTitle: "Workspaces", diff --git a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx index f5a43babc2670..03c1b832c6533 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx @@ -1,34 +1,34 @@ +import { useTheme } from "@emotion/react"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; +import Star from "@mui/icons-material/Star"; +import Checkbox from "@mui/material/Checkbox"; +import Skeleton from "@mui/material/Skeleton"; import Table from "@mui/material/Table"; import TableBody from "@mui/material/TableBody"; import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; -import Checkbox from "@mui/material/Checkbox"; -import Skeleton from "@mui/material/Skeleton"; -import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; -import Star from "@mui/icons-material/Star"; -import { useTheme } from "@emotion/react"; import { type FC, type ReactNode } from "react"; import { useNavigate } from "react-router-dom"; import type { Template, Workspace } from "api/typesGenerated"; +import { ExternalAvatar } from "components/Avatar/Avatar"; +import { AvatarData } from "components/AvatarData/AvatarData"; +import { AvatarDataSkeleton } from "components/AvatarData/AvatarDataSkeleton"; +import { InfoTooltip } from "components/InfoTooltip/InfoTooltip"; +import { Stack } from "components/Stack/Stack"; import { TableLoaderSkeleton, TableRowSkeleton, } from "components/TableLoader/TableLoader"; import { useClickableTableRow } from "hooks/useClickableTableRow"; -import { AvatarData } from "components/AvatarData/AvatarData"; -import { ExternalAvatar } from "components/Avatar/Avatar"; -import { Stack } from "components/Stack/Stack"; -import { LastUsed } from "pages/WorkspacesPage/LastUsed"; import { WorkspaceOutdatedTooltip } from "modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip"; import { DormantStatusBadge, WorkspaceStatusBadge, } from "modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge"; +import { LastUsed } from "pages/WorkspacesPage/LastUsed"; import { getDisplayWorkspaceTemplateName } from "utils/workspace"; -import { AvatarDataSkeleton } from "components/AvatarData/AvatarDataSkeleton"; -import { InfoTooltip } from "components/InfoTooltip/InfoTooltip"; import { WorkspacesEmpty } from "./WorkspacesEmpty"; export interface WorkspacesTableProps { diff --git a/site/src/pages/WorkspacesPage/data.ts b/site/src/pages/WorkspacesPage/data.ts index 8bbda6c41780b..b2ca32808e7ab 100644 --- a/site/src/pages/WorkspacesPage/data.ts +++ b/site/src/pages/WorkspacesPage/data.ts @@ -1,13 +1,14 @@ -import { QueryKey, useMutation, useQuery, useQueryClient } from "react-query"; +import { useState } from "react"; +import type { QueryKey} from "react-query"; +import { useMutation, useQuery, useQueryClient } from "react-query"; import { getWorkspaces, updateWorkspaceVersion } from "api/api"; import { getErrorMessage } from "api/errors"; -import { +import type { Workspace, WorkspaceBuild, WorkspacesResponse, } from "api/typesGenerated"; import { displayError } from "components/GlobalSnackbar/utils"; -import { useState } from "react"; type UseWorkspacesDataParams = { page: number; diff --git a/site/src/pages/WorkspacesPage/filter/filter.tsx b/site/src/pages/WorkspacesPage/filter/filter.tsx index 1886ca818a180..20268d21519ee 100644 --- a/site/src/pages/WorkspacesPage/filter/filter.tsx +++ b/site/src/pages/WorkspacesPage/filter/filter.tsx @@ -1,17 +1,18 @@ import { useTheme } from "@emotion/react"; import { type FC } from "react"; -import { useDashboard } from "modules/dashboard/useDashboard"; import { Avatar, type AvatarProps } from "components/Avatar/Avatar"; +import type { + useFilter} from "components/Filter/filter"; import { Filter, FilterMenu, FilterSearchMenu, MenuSkeleton, OptionItem, - SearchFieldSkeleton, - useFilter, + SearchFieldSkeleton } from "components/Filter/filter"; import { type UserFilterMenu, UserMenu } from "components/Filter/UserFilter"; +import { useDashboard } from "modules/dashboard/useDashboard"; import { docs } from "utils/docs"; import type { TemplateFilterMenu, StatusFilterMenu } from "./menus"; import type { TemplateOption, StatusOption } from "./options"; diff --git a/site/src/pages/WorkspacesPage/filter/menus.ts b/site/src/pages/WorkspacesPage/filter/menus.ts index 3e805ad229451..07da7896a918a 100644 --- a/site/src/pages/WorkspacesPage/filter/menus.ts +++ b/site/src/pages/WorkspacesPage/filter/menus.ts @@ -1,8 +1,9 @@ -import { StatusOption, TemplateOption } from "./options"; import { getTemplates } from "api/api"; -import { WorkspaceStatus } from "api/typesGenerated"; +import type { WorkspaceStatus } from "api/typesGenerated"; +import type { UseFilterMenuOptions} from "components/Filter/menu"; +import { useFilterMenu } from "components/Filter/menu"; import { getDisplayWorkspaceStatus } from "utils/workspace"; -import { UseFilterMenuOptions, useFilterMenu } from "components/Filter/menu"; +import type { StatusOption, TemplateOption } from "./options"; export const useTemplateFilterMenu = ({ value, diff --git a/site/src/pages/WorkspacesPage/filter/options.ts b/site/src/pages/WorkspacesPage/filter/options.ts index a6be19e40fcc8..329e5b48612c4 100644 --- a/site/src/pages/WorkspacesPage/filter/options.ts +++ b/site/src/pages/WorkspacesPage/filter/options.ts @@ -1,4 +1,4 @@ -import { BaseOption } from "components/Filter/options"; +import type { BaseOption } from "components/Filter/options"; import type { ThemeRole } from "theme/roles"; export type StatusOption = BaseOption & { diff --git a/site/src/testHelpers/entities.ts b/site/src/testHelpers/entities.ts index 18beaf4677cfd..641984350958a 100644 --- a/site/src/testHelpers/entities.ts +++ b/site/src/testHelpers/entities.ts @@ -1,15 +1,15 @@ +import range from "lodash/range"; import { withDefaultFeatures, type GetLicensesResponse, type DeploymentConfig, } from "api/api"; -import { FieldError } from "api/errors"; -import * as TypesGen from "api/typesGenerated"; -import range from "lodash/range"; +import type { FieldError } from "api/errors"; +import type * as TypesGen from "api/typesGenerated"; import type { Permissions } from "contexts/auth/permissions"; -import { TemplateVersionFiles } from "utils/templateVersion"; -import { FileTree } from "utils/filetree"; -import { ProxyLatencyReport } from "contexts/useProxyLatency"; +import type { ProxyLatencyReport } from "contexts/useProxyLatency"; +import type { FileTree } from "utils/filetree"; +import type { TemplateVersionFiles } from "utils/templateVersion"; export const MockOrganization: TypesGen.Organization = { id: "fc0774ce-cc9e-48d4-80ae-88f7a4d4a8b0", diff --git a/site/src/testHelpers/handlers.ts b/site/src/testHelpers/handlers.ts index 77ab2ec61fd84..1edf82c2ca468 100644 --- a/site/src/testHelpers/handlers.ts +++ b/site/src/testHelpers/handlers.ts @@ -1,10 +1,10 @@ +import fs from "fs"; import { rest } from "msw"; -import { CreateWorkspaceBuildRequest } from "api/typesGenerated"; +import path from "path"; +import type { CreateWorkspaceBuildRequest } from "api/typesGenerated"; import { permissionsToCheck } from "contexts/auth/permissions"; import * as M from "./entities"; import { MockGroup, MockWorkspaceQuota } from "./entities"; -import fs from "fs"; -import path from "path"; export const handlers = [ rest.get("/api/v2/templates/:templateId/daus", async (req, res, ctx) => { diff --git a/site/src/testHelpers/renderHelpers.tsx b/site/src/testHelpers/renderHelpers.tsx index 3a58557acaf00..aa96f38f4a712 100644 --- a/site/src/testHelpers/renderHelpers.tsx +++ b/site/src/testHelpers/renderHelpers.tsx @@ -6,17 +6,17 @@ import { } from "@testing-library/react"; import { type ReactNode, useState } from "react"; import { QueryClient } from "react-query"; +import { + createMemoryRouter, + RouterProvider, + type RouteObject, +} from "react-router-dom"; import { AppProviders } from "App"; import { RequireAuth } from "contexts/auth/RequireAuth"; import { ThemeProvider } from "contexts/ThemeProvider"; import { DashboardLayout } from "modules/dashboard/DashboardLayout"; import { TemplateSettingsLayout } from "pages/TemplateSettingsPage/TemplateSettingsLayout"; import { WorkspaceSettingsLayout } from "pages/WorkspaceSettingsPage/WorkspaceSettingsLayout"; -import { - createMemoryRouter, - RouterProvider, - type RouteObject, -} from "react-router-dom"; import { MockUser } from "./entities"; function createTestQueryClient() { diff --git a/site/src/testHelpers/storybook.tsx b/site/src/testHelpers/storybook.tsx index 47bea51065cf6..ac8f062631468 100644 --- a/site/src/testHelpers/storybook.tsx +++ b/site/src/testHelpers/storybook.tsx @@ -1,5 +1,5 @@ -import { type FC } from "react"; import type { StoryContext } from "@storybook/react"; +import { type FC } from "react"; import { withDefaultFeatures } from "api/api"; import type { Entitlements } from "api/typesGenerated"; import { DashboardContext } from "modules/dashboard/DashboardProvider"; diff --git a/site/src/theme/dark/index.ts b/site/src/theme/dark/index.ts index 88d961782ddae..d953c9133ccb0 100644 --- a/site/src/theme/dark/index.ts +++ b/site/src/theme/dark/index.ts @@ -1,7 +1,7 @@ -import muiTheme from "./mui"; import { forDarkThemes } from "../externalImages"; import experimental from "./experimental"; import monaco from "./monaco"; +import muiTheme from "./mui"; import roles from "./roles"; export default { diff --git a/site/src/theme/dark/monaco.ts b/site/src/theme/dark/monaco.ts index ae020bdd1ba33..377d77cd70595 100644 --- a/site/src/theme/dark/monaco.ts +++ b/site/src/theme/dark/monaco.ts @@ -1,5 +1,5 @@ -import muiTheme from "./mui"; import type * as monaco from "monaco-editor"; +import muiTheme from "./mui"; export default { base: "vs-dark", diff --git a/site/src/theme/dark/mui.ts b/site/src/theme/dark/mui.ts index 310c116579328..0a2cda94357c3 100644 --- a/site/src/theme/dark/mui.ts +++ b/site/src/theme/dark/mui.ts @@ -1,7 +1,7 @@ import { createTheme } from "@mui/material/styles"; import { BODY_FONT_FAMILY, borderRadius } from "../constants"; -import tw from "../tailwindColors"; import { components } from "../mui"; +import tw from "../tailwindColors"; const muiTheme = createTheme({ palette: { diff --git a/site/src/theme/darkBlue/index.ts b/site/src/theme/darkBlue/index.ts index 88d961782ddae..d953c9133ccb0 100644 --- a/site/src/theme/darkBlue/index.ts +++ b/site/src/theme/darkBlue/index.ts @@ -1,7 +1,7 @@ -import muiTheme from "./mui"; import { forDarkThemes } from "../externalImages"; import experimental from "./experimental"; import monaco from "./monaco"; +import muiTheme from "./mui"; import roles from "./roles"; export default { diff --git a/site/src/theme/darkBlue/monaco.ts b/site/src/theme/darkBlue/monaco.ts index ae020bdd1ba33..377d77cd70595 100644 --- a/site/src/theme/darkBlue/monaco.ts +++ b/site/src/theme/darkBlue/monaco.ts @@ -1,5 +1,5 @@ -import muiTheme from "./mui"; import type * as monaco from "monaco-editor"; +import muiTheme from "./mui"; export default { base: "vs-dark", diff --git a/site/src/theme/darkBlue/mui.ts b/site/src/theme/darkBlue/mui.ts index 65da18b772739..654d5a3fb95f2 100644 --- a/site/src/theme/darkBlue/mui.ts +++ b/site/src/theme/darkBlue/mui.ts @@ -1,7 +1,7 @@ import { createTheme } from "@mui/material/styles"; import { BODY_FONT_FAMILY, borderRadius } from "../constants"; -import tw from "../tailwindColors"; import { components } from "../mui"; +import tw from "../tailwindColors"; const muiTheme = createTheme({ palette: { diff --git a/site/src/theme/index.ts b/site/src/theme/index.ts index 49bd61cef3dae..8ff38211a8930 100644 --- a/site/src/theme/index.ts +++ b/site/src/theme/index.ts @@ -1,12 +1,12 @@ // eslint-disable-next-line no-restricted-imports -- we still use `Theme` as a basis for our actual theme, for now. import type { Theme as MuiTheme } from "@mui/material/styles"; import type * as monaco from "monaco-editor"; -import type { NewTheme } from "./experimental"; -import type { ExternalImageModeStyles } from "./externalImages"; -import type { Roles } from "./roles"; import dark from "./dark"; import darkBlue from "./darkBlue"; +import type { NewTheme } from "./experimental"; +import type { ExternalImageModeStyles } from "./externalImages"; import light from "./light"; +import type { Roles } from "./roles"; export interface Theme extends MuiTheme { experimental: NewTheme; diff --git a/site/src/theme/light/index.ts b/site/src/theme/light/index.ts index cf8b29896c96e..f230727e0a4fc 100644 --- a/site/src/theme/light/index.ts +++ b/site/src/theme/light/index.ts @@ -1,7 +1,7 @@ -import muiTheme from "./mui"; import { forLightThemes } from "../externalImages"; import experimental from "./experimental"; import monaco from "./monaco"; +import muiTheme from "./mui"; import roles from "./roles"; export default { diff --git a/site/src/theme/light/monaco.ts b/site/src/theme/light/monaco.ts index 6dc38d2be7c36..37c3ea3f5d023 100644 --- a/site/src/theme/light/monaco.ts +++ b/site/src/theme/light/monaco.ts @@ -1,5 +1,5 @@ -import muiTheme from "./mui"; import type * as monaco from "monaco-editor"; +import muiTheme from "./mui"; export default { base: "vs", diff --git a/site/src/theme/mui.ts b/site/src/theme/mui.ts index 900e1a8f0285b..5e44ada19fcd9 100644 --- a/site/src/theme/mui.ts +++ b/site/src/theme/mui.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/no-explicit-any -- we need to hack around the MUI types a little */ -import { type ThemeOptions } from "@mui/material/styles"; // eslint-disable-next-line no-restricted-imports -- we use the classes for customization import { alertClasses } from "@mui/material/Alert"; +import { type ThemeOptions } from "@mui/material/styles"; import { BODY_FONT_FAMILY, borderRadius, diff --git a/site/src/utils/apps.test.ts b/site/src/utils/apps.test.ts index 9223668f65c8e..d6c3645c776ae 100644 --- a/site/src/utils/apps.test.ts +++ b/site/src/utils/apps.test.ts @@ -1,9 +1,9 @@ -import { createAppLinkHref } from "./apps"; import { MockWorkspace, MockWorkspaceAgent, MockWorkspaceApp, } from "testHelpers/entities"; +import { createAppLinkHref } from "./apps"; describe("create app link", () => { it("with external URL", () => { diff --git a/site/src/utils/apps.ts b/site/src/utils/apps.ts index b412984172f97..08a37d45ea84d 100644 --- a/site/src/utils/apps.ts +++ b/site/src/utils/apps.ts @@ -1,4 +1,4 @@ -import * as TypesGen from "api/typesGenerated"; +import type * as TypesGen from "api/typesGenerated"; export const createAppLinkHref = ( protocol: string, diff --git a/site/src/utils/deployOptions.ts b/site/src/utils/deployOptions.ts index 039fa9a03df49..567281e223703 100644 --- a/site/src/utils/deployOptions.ts +++ b/site/src/utils/deployOptions.ts @@ -1,5 +1,5 @@ -import { ClibaseGroup, ClibaseOption } from "api/typesGenerated"; import { useMemo } from "react"; +import type { ClibaseGroup, ClibaseOption } from "api/typesGenerated"; const deploymentOptions = ( options: ClibaseOption[], diff --git a/site/src/utils/dormant.test.ts b/site/src/utils/dormant.test.ts index babbb5ef6940b..3e5e5d28bc6ca 100644 --- a/site/src/utils/dormant.test.ts +++ b/site/src/utils/dormant.test.ts @@ -1,4 +1,4 @@ -import * as TypesGen from "api/typesGenerated"; +import type * as TypesGen from "api/typesGenerated"; import * as Mocks from "testHelpers/entities"; import { displayDormantDeletion } from "./dormant"; diff --git a/site/src/utils/dormant.ts b/site/src/utils/dormant.ts index 1265647878a82..8abec8bc508ef 100644 --- a/site/src/utils/dormant.ts +++ b/site/src/utils/dormant.ts @@ -1,4 +1,4 @@ -import { Workspace } from "api/typesGenerated"; +import type { Workspace } from "api/typesGenerated"; // This const dictates how far out we alert the user that a workspace // has an impending deletion (due to template.InactivityTTL being set) diff --git a/site/src/utils/ellipsizeText.test.ts b/site/src/utils/ellipsizeText.test.ts index 4c563a8e24b27..49d31b917cdff 100644 --- a/site/src/utils/ellipsizeText.test.ts +++ b/site/src/utils/ellipsizeText.test.ts @@ -1,5 +1,5 @@ import { ellipsizeText } from "./ellipsizeText"; -import { Nullable } from "./nullable"; +import type { Nullable } from "./nullable"; describe("ellipsizeText", () => { it.each([ diff --git a/site/src/utils/ellipsizeText.ts b/site/src/utils/ellipsizeText.ts index 3d66ad9ed966f..38d56cef0e191 100644 --- a/site/src/utils/ellipsizeText.ts +++ b/site/src/utils/ellipsizeText.ts @@ -1,4 +1,4 @@ -import { Nullable } from "./nullable"; +import type { Nullable } from "./nullable"; /** Truncates and ellipsizes text if it's longer than maxLength */ export const ellipsizeText = ( diff --git a/site/src/utils/filetree.test.ts b/site/src/utils/filetree.test.ts index 77e2c0febc97d..93bbf70ba5268 100644 --- a/site/src/utils/filetree.test.ts +++ b/site/src/utils/filetree.test.ts @@ -1,6 +1,7 @@ +import type { + FileTree} from "./filetree"; import { existsFile, - FileTree, getFileContent, isFolder, moveFile, diff --git a/site/src/utils/filetree.ts b/site/src/utils/filetree.ts index ba56d893bcb40..bcc74730f0add 100644 --- a/site/src/utils/filetree.ts +++ b/site/src/utils/filetree.ts @@ -1,7 +1,7 @@ -import set from "lodash/set"; +import get from "lodash/get"; import has from "lodash/has"; +import set from "lodash/set"; import unset from "lodash/unset"; -import get from "lodash/get"; export type FileTree = { [key: string]: FileTree | string; diff --git a/site/src/utils/formUtils.stories.tsx b/site/src/utils/formUtils.stories.tsx index f1cb43ce51797..83e3142549da6 100644 --- a/site/src/utils/formUtils.stories.tsx +++ b/site/src/utils/formUtils.stories.tsx @@ -1,10 +1,10 @@ +import TextField from "@mui/material/TextField"; +import { action } from "@storybook/addon-actions"; import type { Meta, StoryObj } from "@storybook/react"; +import { useFormik } from "formik"; import { type FC } from "react"; -import TextField from "@mui/material/TextField"; import { Form } from "components/Form/Form"; import { getFormHelpers } from "./formUtils"; -import { useFormik } from "formik"; -import { action } from "@storybook/addon-actions"; interface ExampleFormProps { value?: string; diff --git a/site/src/utils/formUtils.test.ts b/site/src/utils/formUtils.test.ts index 2460512947fb9..632dca1312bdd 100644 --- a/site/src/utils/formUtils.test.ts +++ b/site/src/utils/formUtils.test.ts @@ -1,6 +1,6 @@ -import { FormikContextType } from "formik/dist/types"; -import { getFormHelpers, nameValidator, onChangeTrimmed } from "./formUtils"; +import type { FormikContextType } from "formik/dist/types"; import { mockApiError } from "testHelpers/entities"; +import { getFormHelpers, nameValidator, onChangeTrimmed } from "./formUtils"; interface TestType { untouchedGoodField: string; diff --git a/site/src/utils/formUtils.ts b/site/src/utils/formUtils.ts index 12eb5ea341f43..ff87be1ff9a29 100644 --- a/site/src/utils/formUtils.ts +++ b/site/src/utils/formUtils.ts @@ -1,12 +1,13 @@ -import { isApiValidationError, mapApiErrorToFieldErrors } from "api/errors"; -import { FormikContextType, FormikErrors, getIn } from "formik"; -import { +import type { FormikContextType, FormikErrors} from "formik"; +import { getIn } from "formik"; +import type { ChangeEvent, ChangeEventHandler, FocusEventHandler, ReactNode, } from "react"; import * as Yup from "yup"; +import { isApiValidationError, mapApiErrorToFieldErrors } from "api/errors"; const Language = { nameRequired: (name: string): string => { diff --git a/site/src/utils/groups.ts b/site/src/utils/groups.ts index a5321d6e614f8..a5e7ea20781c5 100644 --- a/site/src/utils/groups.ts +++ b/site/src/utils/groups.ts @@ -1,4 +1,4 @@ -import { Group } from "api/typesGenerated"; +import type { Group } from "api/typesGenerated"; /** * Returns true if the provided group is the 'Everyone' group. diff --git a/site/src/utils/richParameters.ts b/site/src/utils/richParameters.ts index 12182c1c89a8f..3d4a032f32ce6 100644 --- a/site/src/utils/richParameters.ts +++ b/site/src/utils/richParameters.ts @@ -1,8 +1,8 @@ -import { +import * as Yup from "yup"; +import type { TemplateVersionParameter, WorkspaceBuildParameter, } from "api/typesGenerated"; -import * as Yup from "yup"; export type AutofillSource = "user_history" | "url" | "active_build"; diff --git a/site/src/utils/schedule.test.ts b/site/src/utils/schedule.test.ts index 595971828e5a9..116b0448d085b 100644 --- a/site/src/utils/schedule.test.ts +++ b/site/src/utils/schedule.test.ts @@ -1,6 +1,6 @@ import dayjs from "dayjs"; import duration from "dayjs/plugin/duration"; -import { Workspace } from "api/typesGenerated"; +import type { Workspace } from "api/typesGenerated"; import * as Mocks from "testHelpers/entities"; import { deadlineExtensionMax, diff --git a/site/src/utils/schedule.tsx b/site/src/utils/schedule.tsx index d1990932e3ab5..da58d9dab6d5f 100644 --- a/site/src/utils/schedule.tsx +++ b/site/src/utils/schedule.tsx @@ -1,6 +1,6 @@ import Link from "@mui/material/Link"; -import cronstrue from "cronstrue"; import cronParser from "cron-parser"; +import cronstrue from "cronstrue"; import dayjs, { type Dayjs } from "dayjs"; import duration from "dayjs/plugin/duration"; import relativeTime from "dayjs/plugin/relativeTime"; diff --git a/site/src/utils/starterTemplates.ts b/site/src/utils/starterTemplates.ts index 0caddfb9a8a07..edbc690eba052 100644 --- a/site/src/utils/starterTemplates.ts +++ b/site/src/utils/starterTemplates.ts @@ -1,4 +1,4 @@ -import { TemplateExample } from "api/typesGenerated"; +import type { TemplateExample } from "api/typesGenerated"; export type StarterTemplatesByTag = Record; diff --git a/site/src/utils/tar.test.ts b/site/src/utils/tar.test.ts index 4ed8b32876aff..c8ec4b53843c4 100644 --- a/site/src/utils/tar.test.ts +++ b/site/src/utils/tar.test.ts @@ -1,4 +1,5 @@ -import { TarReader, TarWriter, ITarFileInfo, TarFileTypeCodes } from "./tar"; +import type { ITarFileInfo} from "./tar"; +import { TarReader, TarWriter, TarFileTypeCodes } from "./tar"; const mtime = 1666666666666; diff --git a/site/src/utils/templateVersion.ts b/site/src/utils/templateVersion.ts index c43ad8715c5cc..5f6028cab7226 100644 --- a/site/src/utils/templateVersion.ts +++ b/site/src/utils/templateVersion.ts @@ -1,7 +1,7 @@ import set from "lodash/set"; -import { FileTree } from "./filetree"; -import { TarFileTypeCodes, TarReader } from "./tar"; import { isBinaryData } from "modules/templates/TemplateFiles/isBinaryData"; +import type { FileTree } from "./filetree"; +import { TarFileTypeCodes, TarReader } from "./tar"; // Content by filename export type TemplateVersionFiles = Record; diff --git a/site/src/utils/workspace.test.ts b/site/src/utils/workspace.test.ts index 3d267acf5f4dd..6d0d24e9edcb2 100644 --- a/site/src/utils/workspace.test.ts +++ b/site/src/utils/workspace.test.ts @@ -1,5 +1,5 @@ import dayjs from "dayjs"; -import * as TypesGen from "api/typesGenerated"; +import type * as TypesGen from "api/typesGenerated"; import * as Mocks from "testHelpers/entities"; import { agentVersionStatus, diff --git a/site/src/utils/workspace.tsx b/site/src/utils/workspace.tsx index 35a57c8ad680b..fd8a3262d1663 100644 --- a/site/src/utils/workspace.tsx +++ b/site/src/utils/workspace.tsx @@ -1,12 +1,12 @@ +import { type Theme } from "@emotion/react"; +import ErrorIcon from "@mui/icons-material/ErrorOutline"; +import QueuedIcon from "@mui/icons-material/HourglassEmpty"; +import PlayIcon from "@mui/icons-material/PlayArrowOutlined"; +import StopIcon from "@mui/icons-material/StopOutlined"; import dayjs from "dayjs"; import duration from "dayjs/plugin/duration"; import minMax from "dayjs/plugin/minMax"; import utc from "dayjs/plugin/utc"; -import ErrorIcon from "@mui/icons-material/ErrorOutline"; -import StopIcon from "@mui/icons-material/StopOutlined"; -import PlayIcon from "@mui/icons-material/PlayArrowOutlined"; -import QueuedIcon from "@mui/icons-material/HourglassEmpty"; -import { type Theme } from "@emotion/react"; import semver from "semver"; import type * as TypesGen from "api/typesGenerated"; import { PillSpinner } from "components/Pill/Pill"; diff --git a/site/vite.config.ts b/site/vite.config.ts index 1ca3de51cb292..542278416daac 100644 --- a/site/vite.config.ts +++ b/site/vite.config.ts @@ -1,7 +1,7 @@ import react from "@vitejs/plugin-react"; import path from "path"; -import { defineConfig, PluginOption } from "vite"; import { visualizer } from "rollup-plugin-visualizer"; +import { defineConfig, type PluginOption } from "vite"; import checker from "vite-plugin-checker"; const plugins: PluginOption[] = [ From a8ed894304a6dd9367ac7f195bc1935d3826ecd2 Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Mon, 4 Mar 2024 20:07:56 +0000 Subject: [PATCH 04/12] tsc --- site/src/api/errors.ts | 3 +-- site/src/api/queries/appearance.ts | 4 ++-- site/src/api/queries/buildInfo.ts | 4 ++-- site/src/api/queries/experiments.ts | 4 ++-- site/src/api/queries/templates.ts | 14 +++++--------- site/src/api/queries/workspaces.ts | 14 +++++++------- site/src/components/Form/Form.tsx | 16 +++++++--------- site/src/components/Popover/Popover.tsx | 15 +++++++-------- site/src/components/Tabs/Tabs.tsx | 9 +++------ site/src/modules/resources/PortForwardButton.tsx | 13 ++++++------- .../TemplateInsightsPage.tsx | 3 ++- .../TemplateScheduleForm.tsx | 13 +++++-------- .../pages/WorkspacePage/WorkspacePage.test.tsx | 4 ++-- .../WorkspacePage/WorkspaceScheduleControls.tsx | 2 +- 14 files changed, 52 insertions(+), 66 deletions(-) diff --git a/site/src/api/errors.ts b/site/src/api/errors.ts index 419454209035d..7773a84efe8c7 100644 --- a/site/src/api/errors.ts +++ b/site/src/api/errors.ts @@ -1,5 +1,4 @@ -import type { AxiosError, AxiosResponse } from "axios"; -import axios from "axios"; +import axios, { type AxiosError, type AxiosResponse } from "axios"; const Language = { errorsByCode: { diff --git a/site/src/api/queries/appearance.ts b/site/src/api/queries/appearance.ts index 3d2ac875e1ad4..c81e01dbb9337 100644 --- a/site/src/api/queries/appearance.ts +++ b/site/src/api/queries/appearance.ts @@ -1,6 +1,6 @@ -import type { QueryClient, type UseQueryOptions } from "react-query"; +import type { QueryClient, UseQueryOptions } from "react-query"; import * as API from "api/api"; -import { type AppearanceConfig } from "api/typesGenerated"; +import type { AppearanceConfig } from "api/typesGenerated"; import { getMetadataAsJSON } from "utils/metadata"; const initialAppearanceData = getMetadataAsJSON("appearance"); diff --git a/site/src/api/queries/buildInfo.ts b/site/src/api/queries/buildInfo.ts index 90eae3713c2c7..b0761f001d6d6 100644 --- a/site/src/api/queries/buildInfo.ts +++ b/site/src/api/queries/buildInfo.ts @@ -1,6 +1,6 @@ -import { type UseQueryOptions } from "react-query"; +import type { UseQueryOptions } from "react-query"; import * as API from "api/api"; -import { type BuildInfoResponse } from "api/typesGenerated"; +import type { BuildInfoResponse } from "api/typesGenerated"; import { getMetadataAsJSON } from "utils/metadata"; const initialBuildInfoData = getMetadataAsJSON("build-info"); diff --git a/site/src/api/queries/experiments.ts b/site/src/api/queries/experiments.ts index fab6fa777b186..1f7e04901ae59 100644 --- a/site/src/api/queries/experiments.ts +++ b/site/src/api/queries/experiments.ts @@ -1,6 +1,6 @@ -import { type UseQueryOptions } from "react-query"; +import type { UseQueryOptions } from "react-query"; import * as API from "api/api"; -import { type Experiments } from "api/typesGenerated"; +import type { Experiments } from "api/typesGenerated"; import { getMetadataAsJSON } from "utils/metadata"; const initialExperimentsData = getMetadataAsJSON("experiments"); diff --git a/site/src/api/queries/templates.ts b/site/src/api/queries/templates.ts index 98a3d33f3c8fb..776dee1f4b7c5 100644 --- a/site/src/api/queries/templates.ts +++ b/site/src/api/queries/templates.ts @@ -1,18 +1,14 @@ -import type { - MutationOptions, - type QueryClient, - type QueryOptions, -} from "react-query"; +import type { MutationOptions, QueryClient, QueryOptions } from "react-query"; import * as API from "api/api"; import type { CreateTemplateRequest, + CreateTemplateVersionRequest, ProvisionerJob, + ProvisionerJobStatus, UsersRequest, TemplateRole, - type Template, - type CreateTemplateVersionRequest, - type ProvisionerJobStatus, - type TemplateVersion + Template, + TemplateVersion, } from "api/typesGenerated"; import { delay } from "utils/delay"; import { getTemplateVersionFiles } from "utils/templateVersion"; diff --git a/site/src/api/queries/workspaces.ts b/site/src/api/queries/workspaces.ts index 3c16b403cffff..a6fb7ac7b65ff 100644 --- a/site/src/api/queries/workspaces.ts +++ b/site/src/api/queries/workspaces.ts @@ -2,18 +2,18 @@ import type { Dayjs } from "dayjs"; import type { QueryClient, UseMutationOptions, - type QueryOptions, + QueryOptions, } from "react-query"; import * as API from "api/api"; import { putWorkspaceExtension } from "api/api"; import type { - WorkspaceBuild, + CreateWorkspaceRequest, ProvisionerLogLevel, - type WorkspaceBuildParameter, - type Workspace, - type CreateWorkspaceRequest, - type WorkspacesResponse, - type WorkspacesRequest + Workspace, + WorkspaceBuild, + WorkspaceBuildParameter, + WorkspacesRequest, + WorkspacesResponse, } from "api/typesGenerated"; import { workspaceBuildsKey } from "./workspaceBuilds"; diff --git a/site/src/components/Form/Form.tsx b/site/src/components/Form/Form.tsx index 341e3bcf2242b..44b816e9e975b 100644 --- a/site/src/components/Form/Form.tsx +++ b/site/src/components/Form/Form.tsx @@ -1,20 +1,18 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import { createContext, - useContext, - forwardRef} from "react"; -import type { - ReactNode, - ComponentProps, + type ComponentProps, type FC, - type HTMLProps + forwardRef, + type HTMLProps, + type ReactNode, + useContext, } from "react"; import { AlphaBadge, DeprecatedBadge } from "components/Badges/Badges"; import { Stack } from "components/Stack/Stack"; import { - FormFooter as BaseFormFooter} from "../FormFooter/FormFooter"; -import type { - FormFooterProps, + FormFooter as BaseFormFooter, + type FormFooterProps, type FormFooterStyles, } from "../FormFooter/FormFooter"; diff --git a/site/src/components/Popover/Popover.tsx b/site/src/components/Popover/Popover.tsx index 8ae6f592bf244..1ed4e90a73995 100644 --- a/site/src/components/Popover/Popover.tsx +++ b/site/src/components/Popover/Popover.tsx @@ -6,22 +6,21 @@ import MuiPopover, { import { cloneElement, createContext, + type FC, + type HTMLAttributes, + type ReactElement, + type ReactNode, + type RefObject, useContext, useEffect, useId, useRef, - useState -} from "react"; -import type { - HTMLAttributes, - type FC, - type ReactElement, - type ReactNode + useState, } from "react"; type TriggerMode = "hover" | "click"; -type TriggerRef = React.RefObject; +type TriggerRef = RefObject; type TriggerElement = ReactElement<{ ref: TriggerRef; diff --git a/site/src/components/Tabs/Tabs.tsx b/site/src/components/Tabs/Tabs.tsx index 7c921f27b1324..81a7a532f6a10 100644 --- a/site/src/components/Tabs/Tabs.tsx +++ b/site/src/components/Tabs/Tabs.tsx @@ -1,9 +1,6 @@ -import type { Interpolation, Theme} from "@emotion/react"; -import { useTheme } from "@emotion/react"; -import { createContext, useContext } from "react"; -import type { HTMLAttributes, type FC } from "react"; -import type { LinkProps } from "react-router-dom"; -import { Link } from "react-router-dom"; +import { type Interpolation, type Theme, useTheme } from "@emotion/react"; +import { createContext, type FC, type HTMLAttributes, useContext } from "react"; +import { Link, type LinkProps } from "react-router-dom"; export const TAB_PADDING_Y = 12; export const TAB_PADDING_X = 16; diff --git a/site/src/modules/resources/PortForwardButton.tsx b/site/src/modules/resources/PortForwardButton.tsx index aa99722080fdc..d0803966554ca 100644 --- a/site/src/modules/resources/PortForwardButton.tsx +++ b/site/src/modules/resources/PortForwardButton.tsx @@ -14,7 +14,7 @@ import MenuItem from "@mui/material/MenuItem"; import Select from "@mui/material/Select"; import Stack from "@mui/material/Stack"; import TextField from "@mui/material/TextField"; -import type { FormikContextType} from "formik"; +import type { FormikContextType } from "formik"; import { useFormik } from "formik"; import { type FC } from "react"; import { useQuery, useMutation } from "react-query"; @@ -25,14 +25,13 @@ import { upsertWorkspacePortShare, workspacePortShares, } from "api/queries/workspaceportsharing"; -import { - WorkspaceAppSharingLevels} from "api/typesGenerated"; +import { WorkspaceAppSharingLevels } from "api/typesGenerated"; import type { + Template, UpsertWorkspaceAgentPortShareRequest, - type Template, - type WorkspaceAgent, - type WorkspaceAgentListeningPort, - type WorkspaceAgentPortShareLevel + WorkspaceAgent, + WorkspaceAgentListeningPort, + WorkspaceAgentPortShareLevel, } from "api/typesGenerated"; import { HelpTooltipLink, diff --git a/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx b/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx index 384f8c7c9325f..e54c4e10edd2f 100644 --- a/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx +++ b/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx @@ -23,6 +23,7 @@ import { } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; +import { useSearchParams } from "react-router-dom"; import { entitlements } from "api/queries/entitlements"; import { insightsTemplate, @@ -57,7 +58,7 @@ import { getLatencyColor } from "utils/latency"; import { getTemplatePageTitle } from "../utils"; import type { DateRangeValue } from "./DateRange"; import { DateRange as DailyPicker } from "./DateRange"; -import type { InsightsInterval} from "./IntervalMenu"; +import type { InsightsInterval } from "./IntervalMenu"; import { IntervalMenu } from "./IntervalMenu"; import { lastWeeks } from "./utils"; import { WeekPicker, numberOfWeeksOptions } from "./WeekPicker"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx index 1b03b10c44ddb..0502b5ba51e98 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx @@ -5,10 +5,10 @@ import Link from "@mui/material/Link"; import MenuItem from "@mui/material/MenuItem"; import Switch from "@mui/material/Switch"; import TextField from "@mui/material/TextField"; -import type { FormikTouched} from "formik"; +import type { FormikTouched } from "formik"; import { useFormik } from "formik"; import { useState, useEffect } from "react"; -import type { ChangeEvent, type FC } from "react"; +import type { ChangeEvent, FC } from "react"; import type { Template, UpdateTemplateMeta } from "api/typesGenerated"; import { FormSection, @@ -20,17 +20,14 @@ import { Stack } from "components/Stack/Stack"; import { TemplateScheduleAutostart } from "modules/templates/TemplateScheduleAutostart/TemplateScheduleAutostart"; import { docs } from "utils/docs"; import { getFormHelpers } from "utils/formUtils"; -import type { - TemplateAutostartRequirementDaysValue} from "utils/schedule"; -import { - calculateAutostopRequirementDaysValue, -} from "utils/schedule"; +import type { TemplateAutostartRequirementDaysValue } from "utils/schedule"; +import { calculateAutostopRequirementDaysValue } from "utils/schedule"; import { AutostopRequirementDaysHelperText, AutostopRequirementWeeksHelperText, convertAutostopRequirementDaysValue, } from "./AutostopRequirementHelperText"; -import type { TemplateScheduleFormValues} from "./formHelpers"; +import type { TemplateScheduleFormValues } from "./formHelpers"; import { getValidationSchema } from "./formHelpers"; import { ScheduleDialog } from "./ScheduleDialog"; import { diff --git a/site/src/pages/WorkspacePage/WorkspacePage.test.tsx b/site/src/pages/WorkspacePage/WorkspacePage.test.tsx index f45a9706b5b29..b525d6b47f412 100644 --- a/site/src/pages/WorkspacePage/WorkspacePage.test.tsx +++ b/site/src/pages/WorkspacePage/WorkspacePage.test.tsx @@ -1,9 +1,9 @@ import { screen, waitFor, within } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; +import EventSourceMock from "eventsourcemock"; import { rest } from "msw"; import * as api from "api/api"; -import type { TemplateVersionParameter, type Workspace } from "api/typesGenerated"; -import EventSourceMock from "eventsourcemock"; +import type { TemplateVersionParameter, Workspace } from "api/typesGenerated"; import { MockTemplate, MockWorkspace, diff --git a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx index f860e8f2ce31a..9d9edf158d8b0 100644 --- a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx @@ -8,7 +8,7 @@ import Tooltip from "@mui/material/Tooltip"; import { visuallyHidden } from "@mui/utils"; import dayjs, { type Dayjs } from "dayjs"; import { forwardRef, useRef, useState } from "react"; -import type { ReactNode , type FC } from "react"; +import type { FC, ReactNode } from "react"; import { useMutation, useQueryClient } from "react-query"; import { Link as RouterLink } from "react-router-dom"; import { getErrorMessage } from "api/errors"; From 79dcc2d693a6960f20947bb3cb3c5de54ea94e3f Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Mon, 4 Mar 2024 20:22:32 +0000 Subject: [PATCH 05/12] fmt --- site/e2e/helpers.ts | 9 +++------ .../src/components/ActiveUserChart/ActiveUserChart.tsx | 3 +-- site/src/components/Alert/ErrorAlert.tsx | 2 +- site/src/components/Filter/UserFilter.tsx | 2 +- site/src/components/FullPageLayout/Topbar.tsx | 2 +- .../GlobalSnackbar/EnterpriseSnackbar.stories.tsx | 1 - site/src/components/GlobalSnackbar/utils.test.ts | 4 +--- site/src/components/MoreMenu/MoreMenu.tsx | 7 ++----- .../PaginationWidget/PaginationWidgetBase.test.tsx | 7 ++----- .../RichParameterInput/RichParameterInput.tsx | 5 ++++- site/src/contexts/ProxyContext.tsx | 2 +- site/src/hooks/useClickable.test.tsx | 1 - site/src/modules/resources/AgentLogs.tsx | 10 ++-------- site/src/modules/resources/AgentRow.tsx | 7 ++----- .../workspaces/WorkspaceBuild/WorkspaceBuildData.tsx | 2 +- site/src/pages/AuditPage/AuditFilter.tsx | 9 ++++----- site/src/pages/AuditPage/AuditPageView.stories.tsx | 1 - site/src/pages/CreateTemplatePage/BuildLogsDrawer.tsx | 2 +- site/src/pages/CreateTokenPage/utils.test.tsx | 3 +-- site/src/pages/CreateUserPage/CreateUserForm.tsx | 2 +- .../pages/CreateWorkspacePage/CreateWorkspacePage.tsx | 2 +- .../CreateWorkspacePage/CreateWorkspacePageView.tsx | 2 +- .../LicensesSettingsPage/LicensesSettingsPage.tsx | 2 +- .../OAuth2AppsSettingsPage/EditOAuth2AppPage.tsx | 2 +- .../ExternalAuthPage/ExternalAuthPageView.stories.tsx | 4 +--- site/src/pages/HealthPage/Content.tsx | 10 ++-------- site/src/pages/HealthPage/DERPRegionPage.tsx | 2 +- site/src/pages/HealthPage/storybook.tsx | 5 ++--- .../StarterTemplatePageView.stories.tsx | 1 - site/src/pages/TemplatePage/TemplatePageHeader.tsx | 1 - .../TemplatePermissionsPageView.tsx | 7 ++----- .../TemplateSchedulePage/TemplateSchedulePage.test.tsx | 2 +- .../TemplateVariablesPage/TemplateVariableField.tsx | 2 +- .../TemplateVariablesPage/TemplateVariablesForm.tsx | 2 +- .../TemplateVersionEditor.tsx | 3 +-- .../TemplateVersionEditorPage.tsx | 2 +- .../TemplateVersionPageView.stories.tsx | 5 ++--- .../pages/UserSettingsPage/AccountPage/AccountForm.tsx | 2 +- .../UserSettingsPage/SchedulePage/ScheduleForm.tsx | 2 +- .../UserSettingsPage/SecurityPage/SecurityForm.tsx | 2 +- site/src/pages/UsersPage/UsersFilter.tsx | 5 ++--- .../WorkspaceActions/BuildParametersPopover.tsx | 3 +-- .../WorkspaceDeleteDialog/WorkspaceDeleteDialog.tsx | 5 ++++- .../WorkspaceNotifications/WorkspaceNotifications.tsx | 8 ++------ site/src/pages/WorkspacePage/WorkspacePage.test.tsx | 2 +- site/src/pages/WorkspacePage/WorkspacePage.tsx | 3 +-- site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx | 5 ++--- .../WorkspaceParametersForm.tsx | 3 +-- .../WorkspaceParametersPage.tsx | 3 +-- .../WorkspaceScheduleForm.test.tsx | 5 +++-- .../WorkspaceSchedulePage/WorkspaceScheduleForm.tsx | 2 +- .../WorkspaceSchedulePage.test.tsx | 7 ++----- .../WorkspaceSchedulePage/WorkspaceSchedulePage.tsx | 2 +- .../WorkspaceSettingsPage/WorkspaceSettingsForm.tsx | 8 ++------ site/src/pages/WorkspacesPage/WorkspacesButton.tsx | 7 ++----- .../WorkspacesPage/WorkspacesPageView.stories.tsx | 8 ++------ site/src/pages/WorkspacesPage/data.ts | 2 +- site/src/pages/WorkspacesPage/filter/filter.tsx | 5 ++--- site/src/pages/WorkspacesPage/filter/menus.ts | 2 +- site/src/utils/filetree.test.ts | 3 +-- site/src/utils/formUtils.ts | 2 +- site/src/utils/tar.test.ts | 2 +- 62 files changed, 86 insertions(+), 147 deletions(-) diff --git a/site/e2e/helpers.ts b/site/e2e/helpers.ts index 8ae788ea6c668..f71a7649051c3 100644 --- a/site/e2e/helpers.ts +++ b/site/e2e/helpers.ts @@ -1,7 +1,7 @@ import type { Page } from "@playwright/test"; import { expect } from "@playwright/test"; import axios from "axios"; -import type { ChildProcess} from "child_process"; +import type { ChildProcess } from "child_process"; import { exec, spawn } from "child_process"; import { randomUUID } from "crypto"; import express from "express"; @@ -22,12 +22,9 @@ import type { PlanComplete, ApplyComplete, Resource, - RichParameter} from "./provisionerGenerated"; -import { - Agent, - AppSharingLevel, - Response + RichParameter, } from "./provisionerGenerated"; +import { Agent, AppSharingLevel, Response } from "./provisionerGenerated"; // createWorkspace creates a workspace for a template. // It does not wait for it to be running, but it does navigate to the page. diff --git a/site/src/components/ActiveUserChart/ActiveUserChart.tsx b/site/src/components/ActiveUserChart/ActiveUserChart.tsx index 008b0a571e701..e6a6bb3385e6a 100644 --- a/site/src/components/ActiveUserChart/ActiveUserChart.tsx +++ b/site/src/components/ActiveUserChart/ActiveUserChart.tsx @@ -1,6 +1,5 @@ import { useTheme } from "@emotion/react"; -import type { - ChartOptions} from "chart.js"; +import type { ChartOptions } from "chart.js"; import { CategoryScale, Chart as ChartJS, diff --git a/site/src/components/Alert/ErrorAlert.tsx b/site/src/components/Alert/ErrorAlert.tsx index bd7e2e0a3a238..a4de72bb3d522 100644 --- a/site/src/components/Alert/ErrorAlert.tsx +++ b/site/src/components/Alert/ErrorAlert.tsx @@ -1,7 +1,7 @@ import AlertTitle from "@mui/material/AlertTitle"; import type { FC } from "react"; import { getErrorMessage, getErrorDetail } from "api/errors"; -import type { AlertProps} from "./Alert"; +import type { AlertProps } from "./Alert"; import { Alert, AlertDetail } from "./Alert"; export const ErrorAlert: FC< diff --git a/site/src/components/Filter/UserFilter.tsx b/site/src/components/Filter/UserFilter.tsx index 7d01445b3c8b8..135b693917dd3 100644 --- a/site/src/components/Filter/UserFilter.tsx +++ b/site/src/components/Filter/UserFilter.tsx @@ -3,7 +3,7 @@ import { getUsers } from "api/api"; import { useMe } from "contexts/auth/useMe"; import { UserAvatar } from "../UserAvatar/UserAvatar"; import { FilterSearchMenu, OptionItem } from "./filter"; -import type { UseFilterMenuOptions} from "./menu"; +import type { UseFilterMenuOptions } from "./menu"; import { useFilterMenu } from "./menu"; import type { BaseOption } from "./options"; diff --git a/site/src/components/FullPageLayout/Topbar.tsx b/site/src/components/FullPageLayout/Topbar.tsx index a7ea750b9400c..ddf73ce2c497d 100644 --- a/site/src/components/FullPageLayout/Topbar.tsx +++ b/site/src/components/FullPageLayout/Topbar.tsx @@ -12,7 +12,7 @@ import { cloneElement, forwardRef, } from "react"; -import type { AvatarProps} from "components/Avatar/Avatar"; +import type { AvatarProps } from "components/Avatar/Avatar"; import { ExternalAvatar } from "components/Avatar/Avatar"; export const Topbar: FC> = (props) => { diff --git a/site/src/components/GlobalSnackbar/EnterpriseSnackbar.stories.tsx b/site/src/components/GlobalSnackbar/EnterpriseSnackbar.stories.tsx index 751a5b60cdfd0..604ed9b830d1d 100644 --- a/site/src/components/GlobalSnackbar/EnterpriseSnackbar.stories.tsx +++ b/site/src/components/GlobalSnackbar/EnterpriseSnackbar.stories.tsx @@ -1,7 +1,6 @@ import type { Meta, StoryObj } from "@storybook/react"; import { EnterpriseSnackbar } from "./EnterpriseSnackbar"; - const meta: Meta = { title: "components/EnterpriseSnackbar", component: EnterpriseSnackbar, diff --git a/site/src/components/GlobalSnackbar/utils.test.ts b/site/src/components/GlobalSnackbar/utils.test.ts index ae135e0d46121..9317d337eae5f 100644 --- a/site/src/components/GlobalSnackbar/utils.test.ts +++ b/site/src/components/GlobalSnackbar/utils.test.ts @@ -1,6 +1,4 @@ -import type { - NotificationMsg, - NotificationTextPrefixed} from "./utils"; +import type { NotificationMsg, NotificationTextPrefixed } from "./utils"; import { displayError, displaySuccess, diff --git a/site/src/components/MoreMenu/MoreMenu.tsx b/site/src/components/MoreMenu/MoreMenu.tsx index c99e5c54e86fe..be7de491f4cc6 100644 --- a/site/src/components/MoreMenu/MoreMenu.tsx +++ b/site/src/components/MoreMenu/MoreMenu.tsx @@ -5,17 +5,14 @@ import type { MenuProps } from "@mui/material/Menu"; import Menu from "@mui/material/Menu"; import type { MenuItemProps } from "@mui/material/MenuItem"; import MenuItem from "@mui/material/MenuItem"; -import type { - ReactNode, - HTMLProps, - ReactElement} from "react"; +import type { ReactNode, HTMLProps, ReactElement } from "react"; import { useRef, useState, createContext, useContext, cloneElement, - forwardRef + forwardRef, } from "react"; type MoreMenuContextValue = { diff --git a/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx b/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx index bf2da105a8b93..03f152fc0b182 100644 --- a/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx +++ b/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx @@ -1,11 +1,8 @@ import { screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { renderWithAuth } from "testHelpers/renderHelpers"; -import type { - PaginationWidgetBaseProps} from "./PaginationWidgetBase"; -import { - PaginationWidgetBase -} from "./PaginationWidgetBase"; +import type { PaginationWidgetBaseProps } from "./PaginationWidgetBase"; +import { PaginationWidgetBase } from "./PaginationWidgetBase"; type SampleProps = Omit; diff --git a/site/src/components/RichParameterInput/RichParameterInput.tsx b/site/src/components/RichParameterInput/RichParameterInput.tsx index 095df2591d13d..df23145d15548 100644 --- a/site/src/components/RichParameterInput/RichParameterInput.tsx +++ b/site/src/components/RichParameterInput/RichParameterInput.tsx @@ -14,7 +14,10 @@ import { ExternalImage } from "components/ExternalImage/ExternalImage"; import { MemoizedMarkdown } from "components/Markdown/Markdown"; import { Pill } from "components/Pill/Pill"; import { Stack } from "components/Stack/Stack"; -import type { AutofillBuildParameter, AutofillSource } from "utils/richParameters"; +import type { + AutofillBuildParameter, + AutofillSource, +} from "utils/richParameters"; import { MultiTextField } from "./MultiTextField"; const isBoolean = (parameter: TemplateVersionParameter) => { diff --git a/site/src/contexts/ProxyContext.tsx b/site/src/contexts/ProxyContext.tsx index 092002ee883f4..55082950696a2 100644 --- a/site/src/contexts/ProxyContext.tsx +++ b/site/src/contexts/ProxyContext.tsx @@ -11,7 +11,7 @@ import { useQuery } from "react-query"; import { getWorkspaceProxies, getWorkspaceProxyRegions } from "api/api"; import type { Region, WorkspaceProxy } from "api/typesGenerated"; import { usePermissions } from "contexts/auth/usePermissions"; -import type { ProxyLatencyReport} from "./useProxyLatency"; +import type { ProxyLatencyReport } from "./useProxyLatency"; import { useProxyLatency } from "./useProxyLatency"; export interface ProxyContextValue { diff --git a/site/src/hooks/useClickable.test.tsx b/site/src/hooks/useClickable.test.tsx index 2b976e02f1620..dce6e383ea50e 100644 --- a/site/src/hooks/useClickable.test.tsx +++ b/site/src/hooks/useClickable.test.tsx @@ -1,4 +1,3 @@ - import { render, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { diff --git a/site/src/modules/resources/AgentLogs.tsx b/site/src/modules/resources/AgentLogs.tsx index 4755fdcbda325..b514806657e28 100644 --- a/site/src/modules/resources/AgentLogs.tsx +++ b/site/src/modules/resources/AgentLogs.tsx @@ -1,13 +1,7 @@ import type { Interpolation, Theme } from "@emotion/react"; import Tooltip from "@mui/material/Tooltip"; -import type { - ComponentProps} from "react"; -import { - forwardRef, - useEffect, - useMemo, - useState, -} from "react"; +import type { ComponentProps } from "react"; +import { forwardRef, useEffect, useMemo, useState } from "react"; import { FixedSizeList as List } from "react-window"; import * as API from "api/api"; import type { WorkspaceAgentLogSource } from "api/typesGenerated"; diff --git a/site/src/modules/resources/AgentRow.tsx b/site/src/modules/resources/AgentRow.tsx index 84cef64544e55..877970cd2e518 100644 --- a/site/src/modules/resources/AgentRow.tsx +++ b/site/src/modules/resources/AgentRow.tsx @@ -23,11 +23,8 @@ import type { import { DropdownArrow } from "components/DropdownArrow/DropdownArrow"; import { Stack } from "components/Stack/Stack"; import { useProxy } from "contexts/ProxyContext"; -import type { - Line} from "modules/workspaces/WorkspaceBuildLogs/Logs"; -import { - logLineHeight, -} from "modules/workspaces/WorkspaceBuildLogs/Logs"; +import type { Line } from "modules/workspaces/WorkspaceBuildLogs/Logs"; +import { logLineHeight } from "modules/workspaces/WorkspaceBuildLogs/Logs"; import { AgentLatency } from "./AgentLatency"; import { AgentLogs, useAgentLogs } from "./AgentLogs"; import { AgentMetadata } from "./AgentMetadata"; diff --git a/site/src/modules/workspaces/WorkspaceBuild/WorkspaceBuildData.tsx b/site/src/modules/workspaces/WorkspaceBuild/WorkspaceBuildData.tsx index b418400e67ec2..f0fc5341eef36 100644 --- a/site/src/modules/workspaces/WorkspaceBuild/WorkspaceBuildData.tsx +++ b/site/src/modules/workspaces/WorkspaceBuild/WorkspaceBuildData.tsx @@ -1,4 +1,4 @@ -import type { Interpolation, Theme} from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import { useTheme } from "@emotion/react"; import Skeleton from "@mui/material/Skeleton"; import type { WorkspaceBuild } from "api/typesGenerated"; diff --git a/site/src/pages/AuditPage/AuditFilter.tsx b/site/src/pages/AuditPage/AuditFilter.tsx index b07e92899f4b2..370678ecf3010 100644 --- a/site/src/pages/AuditPage/AuditFilter.tsx +++ b/site/src/pages/AuditPage/AuditFilter.tsx @@ -1,19 +1,18 @@ import capitalize from "lodash/capitalize"; import { type FC } from "react"; import { AuditActions, ResourceTypes } from "api/typesGenerated"; -import type { - useFilter} from "components/Filter/filter"; +import type { useFilter } from "components/Filter/filter"; import { Filter, FilterMenu, MenuSkeleton, OptionItem, - SearchFieldSkeleton + SearchFieldSkeleton, } from "components/Filter/filter"; -import type { UseFilterMenuOptions} from "components/Filter/menu"; +import type { UseFilterMenuOptions } from "components/Filter/menu"; import { useFilterMenu } from "components/Filter/menu"; import type { BaseOption } from "components/Filter/options"; -import type { UserFilterMenu} from "components/Filter/UserFilter"; +import type { UserFilterMenu } from "components/Filter/UserFilter"; import { UserMenu } from "components/Filter/UserFilter"; import { docs } from "utils/docs"; diff --git a/site/src/pages/AuditPage/AuditPageView.stories.tsx b/site/src/pages/AuditPage/AuditPageView.stories.tsx index a988d3b4b607e..5b080f2e80a17 100644 --- a/site/src/pages/AuditPage/AuditPageView.stories.tsx +++ b/site/src/pages/AuditPage/AuditPageView.stories.tsx @@ -13,7 +13,6 @@ import { chromaticWithTablet } from "testHelpers/chromatic"; import { MockAuditLog, MockAuditLog2, MockUser } from "testHelpers/entities"; import { AuditPageView } from "./AuditPageView"; - type FilterProps = ComponentProps["filterProps"]; const defaultFilterProps = getDefaultFilterProps({ diff --git a/site/src/pages/CreateTemplatePage/BuildLogsDrawer.tsx b/site/src/pages/CreateTemplatePage/BuildLogsDrawer.tsx index e9a175c61482e..5cff895fee24f 100644 --- a/site/src/pages/CreateTemplatePage/BuildLogsDrawer.tsx +++ b/site/src/pages/CreateTemplatePage/BuildLogsDrawer.tsx @@ -5,7 +5,7 @@ import Button from "@mui/material/Button"; import Drawer from "@mui/material/Drawer"; import IconButton from "@mui/material/IconButton"; import { visuallyHidden } from "@mui/utils"; -import type { FC} from "react"; +import type { FC } from "react"; import { useLayoutEffect, useRef } from "react"; import { JobError } from "api/queries/templates"; import type { TemplateVersion } from "api/typesGenerated"; diff --git a/site/src/pages/CreateTokenPage/utils.test.tsx b/site/src/pages/CreateTokenPage/utils.test.tsx index 1b001766b88af..da9bf85c65907 100644 --- a/site/src/pages/CreateTokenPage/utils.test.tsx +++ b/site/src/pages/CreateTokenPage/utils.test.tsx @@ -1,5 +1,4 @@ -import type { - LifetimeDay} from "./utils"; +import type { LifetimeDay } from "./utils"; import { filterByMaxTokenLifetime, determineDefaultLtValue, diff --git a/site/src/pages/CreateUserPage/CreateUserForm.tsx b/site/src/pages/CreateUserPage/CreateUserForm.tsx index 43535b8ff1e31..d218bdc345629 100644 --- a/site/src/pages/CreateUserPage/CreateUserForm.tsx +++ b/site/src/pages/CreateUserPage/CreateUserForm.tsx @@ -1,7 +1,7 @@ import Link from "@mui/material/Link"; import MenuItem from "@mui/material/MenuItem"; import TextField from "@mui/material/TextField"; -import type { FormikContextType} from "formik"; +import type { FormikContextType } from "formik"; import { useFormik } from "formik"; import type { FC } from "react"; import * as Yup from "yup"; diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx index b39227e639b77..088ff1ea9f19f 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx @@ -26,7 +26,7 @@ import { pageTitle } from "utils/page"; import type { AutofillBuildParameter } from "utils/richParameters"; import { paramsUsedToCreateWorkspace } from "utils/workspace"; import { CreateWorkspacePageView } from "./CreateWorkspacePageView"; -import type { CreateWSPermissions} from "./permissions"; +import type { CreateWSPermissions } from "./permissions"; import { createWorkspaceChecks } from "./permissions"; export const createWorkspaceModes = ["form", "auto", "duplicate"] as const; diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx index 1fe3cbb56b5fe..425251839b77f 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx @@ -2,7 +2,7 @@ import { type Interpolation, type Theme } from "@emotion/react"; import Button from "@mui/material/Button"; import FormHelperText from "@mui/material/FormHelperText"; import TextField from "@mui/material/TextField"; -import type { FormikContextType} from "formik"; +import type { FormikContextType } from "formik"; import { useFormik } from "formik"; import { type FC, useEffect, useState, useMemo, useCallback } from "react"; import { useSearchParams } from "react-router-dom"; diff --git a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPage.tsx b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPage.tsx index cc18458937ff5..1db05538ec4b6 100644 --- a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPage.tsx +++ b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPage.tsx @@ -1,4 +1,4 @@ -import type { FC} from "react"; +import type { FC } from "react"; import { useEffect } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; diff --git a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPage.tsx b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPage.tsx index c685e8902db5d..87c2de540f89a 100644 --- a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPage.tsx +++ b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPage.tsx @@ -1,4 +1,4 @@ -import type { FC} from "react"; +import type { FC } from "react"; import { useState } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; diff --git a/site/src/pages/ExternalAuthPage/ExternalAuthPageView.stories.tsx b/site/src/pages/ExternalAuthPage/ExternalAuthPageView.stories.tsx index 345a870cd6af6..acba42a077cd1 100644 --- a/site/src/pages/ExternalAuthPage/ExternalAuthPageView.stories.tsx +++ b/site/src/pages/ExternalAuthPage/ExternalAuthPageView.stories.tsx @@ -1,7 +1,5 @@ import type { Meta, StoryFn } from "@storybook/react"; -import type { - ExternalAuthPageViewProps, -} from "./ExternalAuthPageView"; +import type { ExternalAuthPageViewProps } from "./ExternalAuthPageView"; import ExternalAuthPageView from "./ExternalAuthPageView"; export default { diff --git a/site/src/pages/HealthPage/Content.tsx b/site/src/pages/HealthPage/Content.tsx index 39c5580270d1d..0c2a3d59c5f9b 100644 --- a/site/src/pages/HealthPage/Content.tsx +++ b/site/src/pages/HealthPage/Content.tsx @@ -5,14 +5,8 @@ import CheckCircleOutlined from "@mui/icons-material/CheckCircleOutlined"; import DoNotDisturbOnOutlined from "@mui/icons-material/DoNotDisturbOnOutlined"; import ErrorOutline from "@mui/icons-material/ErrorOutline"; import Link from "@mui/material/Link"; -import type { - ComponentProps, - HTMLAttributes, - ReactElement} from "react"; -import { - cloneElement, - forwardRef, -} from "react"; +import type { ComponentProps, HTMLAttributes, ReactElement } from "react"; +import { cloneElement, forwardRef } from "react"; import type { HealthMessage, HealthSeverity } from "api/typesGenerated"; import { docs } from "utils/docs"; import { healthyColor } from "./healthyColor"; diff --git a/site/src/pages/HealthPage/DERPRegionPage.tsx b/site/src/pages/HealthPage/DERPRegionPage.tsx index ef38e3635b464..fd3ee629f2435 100644 --- a/site/src/pages/HealthPage/DERPRegionPage.tsx +++ b/site/src/pages/HealthPage/DERPRegionPage.tsx @@ -1,4 +1,4 @@ -import type { Interpolation, Theme} from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import { useTheme } from "@emotion/react"; import ArrowBackOutlined from "@mui/icons-material/ArrowBackOutlined"; import CodeOutlined from "@mui/icons-material/CodeOutlined"; diff --git a/site/src/pages/HealthPage/storybook.tsx b/site/src/pages/HealthPage/storybook.tsx index 2a472de86b082..37ebf269d0293 100644 --- a/site/src/pages/HealthPage/storybook.tsx +++ b/site/src/pages/HealthPage/storybook.tsx @@ -1,9 +1,8 @@ import type { Meta } from "@storybook/react"; -import type { - RouteDefinition} from "storybook-addon-react-router-v6"; +import type { RouteDefinition } from "storybook-addon-react-router-v6"; import { reactRouterParameters, - reactRouterOutlet + reactRouterOutlet, } from "storybook-addon-react-router-v6"; import { HEALTH_QUERY_KEY, HEALTH_QUERY_SETTINGS_KEY } from "api/queries/debug"; import { chromatic } from "testHelpers/chromatic"; diff --git a/site/src/pages/StarterTemplatePage/StarterTemplatePageView.stories.tsx b/site/src/pages/StarterTemplatePage/StarterTemplatePageView.stories.tsx index 27667ce6d8e62..d2f4ebf6155a0 100644 --- a/site/src/pages/StarterTemplatePage/StarterTemplatePageView.stories.tsx +++ b/site/src/pages/StarterTemplatePage/StarterTemplatePageView.stories.tsx @@ -3,7 +3,6 @@ import { chromatic } from "testHelpers/chromatic"; import { mockApiError, MockTemplateExample } from "testHelpers/entities"; import { StarterTemplatePageView } from "./StarterTemplatePageView"; - const meta: Meta = { title: "pages/StarterTemplatePage", parameters: { chromatic }, diff --git a/site/src/pages/TemplatePage/TemplatePageHeader.tsx b/site/src/pages/TemplatePage/TemplatePageHeader.tsx index 7c05c60770572..f772b29e9601a 100644 --- a/site/src/pages/TemplatePage/TemplatePageHeader.tsx +++ b/site/src/pages/TemplatePage/TemplatePageHeader.tsx @@ -1,4 +1,3 @@ - import AddIcon from "@mui/icons-material/AddOutlined"; import DeleteIcon from "@mui/icons-material/DeleteOutlined"; import EditIcon from "@mui/icons-material/EditOutlined"; diff --git a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx index db33112b20fc9..62690d1408fac 100644 --- a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx @@ -33,11 +33,8 @@ import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; import { Stack } from "components/Stack/Stack"; import { TableLoader } from "components/TableLoader/TableLoader"; import { getGroupSubtitle } from "utils/groups"; -import type { - UserOrGroupAutocompleteValue} from "./UserOrGroupAutocomplete"; -import { - UserOrGroupAutocomplete -} from "./UserOrGroupAutocomplete"; +import type { UserOrGroupAutocompleteValue } from "./UserOrGroupAutocomplete"; +import { UserOrGroupAutocomplete } from "./UserOrGroupAutocomplete"; type AddTemplateUserOrGroupProps = { organizationId: string; diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx index 4fc696e9e9840..89b728fe41441 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx @@ -10,7 +10,7 @@ import { renderWithTemplateSettingsLayout, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; -import type { TemplateScheduleFormValues} from "./formHelpers"; +import type { TemplateScheduleFormValues } from "./formHelpers"; import { getValidationSchema } from "./formHelpers"; import TemplateSchedulePage from "./TemplateSchedulePage"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariableField.tsx b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariableField.tsx index bb9d9f069f740..6f583af145cbf 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariableField.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariableField.tsx @@ -2,7 +2,7 @@ import FormControlLabel from "@mui/material/FormControlLabel"; import Radio from "@mui/material/Radio"; import RadioGroup from "@mui/material/RadioGroup"; import TextField from "@mui/material/TextField"; -import type { FC} from "react"; +import type { FC } from "react"; import { useState } from "react"; import type { TemplateVersionVariable } from "api/typesGenerated"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesForm.tsx b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesForm.tsx index 8b6f0ae15d229..1ba61ceb9ee22 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesForm.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesForm.tsx @@ -1,4 +1,4 @@ -import type { FormikContextType, FormikTouched} from "formik"; +import type { FormikContextType, FormikTouched } from "formik"; import { useFormik } from "formik"; import type { FC } from "react"; import * as Yup from "yup"; diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx index e830bed8123bd..341169c6f8ab6 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx @@ -36,8 +36,7 @@ import { TemplateResourcesTable } from "modules/templates/TemplateResourcesTable import { WorkspaceBuildLogs } from "modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; import type { PublishVersionData } from "pages/TemplateVersionEditorPage/types"; import { MONOSPACE_FONT_FAMILY } from "theme/constants"; -import type { - FileTree} from "utils/filetree"; +import type { FileTree } from "utils/filetree"; import { createFile, existsFile, diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx index 6c075b2e9b594..5a46de145e17a 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx @@ -19,7 +19,7 @@ import { displayError } from "components/GlobalSnackbar/utils"; import { FullScreenLoader } from "components/Loader/FullScreenLoader"; import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { useWatchVersionLogs } from "modules/templates/useWatchVersionLogs"; -import type { FileTree} from "utils/filetree"; +import type { FileTree } from "utils/filetree"; import { traverse } from "utils/filetree"; import { pageTitle } from "utils/page"; import { TarReader, TarWriter } from "utils/tar"; diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx index c6a58624a7da2..1d04cf599182d 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx @@ -5,10 +5,9 @@ import { MockTemplateVersion, MockTemplateVersionWithMarkdownMessage, } from "testHelpers/entities"; -import type { - TemplateVersionPageViewProps} from "./TemplateVersionPageView"; import { - TemplateVersionPageView + TemplateVersionPageView, + type TemplateVersionPageViewProps, } from "./TemplateVersionPageView"; const readmeContent = `--- diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.tsx index a9ec3e6c17543..de667b3821156 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.tsx @@ -1,6 +1,6 @@ import LoadingButton from "@mui/lab/LoadingButton"; import TextField from "@mui/material/TextField"; -import type { FormikTouched} from "formik"; +import type { FormikTouched } from "formik"; import { useFormik } from "formik"; import type { FC } from "react"; import * as Yup from "yup"; diff --git a/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx b/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx index 52d4774129d2f..607fda13d53c1 100644 --- a/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx +++ b/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx @@ -1,7 +1,7 @@ import LoadingButton from "@mui/lab/LoadingButton"; import MenuItem from "@mui/material/MenuItem"; import TextField from "@mui/material/TextField"; -import type { FormikContextType} from "formik"; +import type { FormikContextType } from "formik"; import { useFormik } from "formik"; import { type FC, useEffect, useState } from "react"; import * as Yup from "yup"; diff --git a/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.tsx b/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.tsx index c61aeabb6b523..ec562f520ee59 100644 --- a/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.tsx +++ b/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.tsx @@ -1,6 +1,6 @@ import LoadingButton from "@mui/lab/LoadingButton"; import TextField from "@mui/material/TextField"; -import type { FormikContextType} from "formik"; +import type { FormikContextType } from "formik"; import { useFormik } from "formik"; import type { FC } from "react"; import * as Yup from "yup"; diff --git a/site/src/pages/UsersPage/UsersFilter.tsx b/site/src/pages/UsersPage/UsersFilter.tsx index c7aa0cd7eac5a..204301e50e4ef 100644 --- a/site/src/pages/UsersPage/UsersFilter.tsx +++ b/site/src/pages/UsersPage/UsersFilter.tsx @@ -1,13 +1,12 @@ import { useTheme } from "@emotion/react"; import { type FC } from "react"; -import type { - useFilter} from "components/Filter/filter"; +import type { useFilter } from "components/Filter/filter"; import { Filter, FilterMenu, MenuSkeleton, OptionItem, - SearchFieldSkeleton + SearchFieldSkeleton, } from "components/Filter/filter"; import { type UseFilterMenuOptions, diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx index 86ff53b08188a..bfc815c0309ad 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx @@ -29,9 +29,8 @@ import { import { RichParameterInput } from "components/RichParameterInput/RichParameterInput"; import { docs } from "utils/docs"; import { getFormHelpers } from "utils/formUtils"; -import type { - AutofillBuildParameter} from "utils/richParameters"; import { + type AutofillBuildParameter, getInitialRichParameterValues, } from "utils/richParameters"; diff --git a/site/src/pages/WorkspacePage/WorkspaceDeleteDialog/WorkspaceDeleteDialog.tsx b/site/src/pages/WorkspacePage/WorkspaceDeleteDialog/WorkspaceDeleteDialog.tsx index 6cac839773348..660cb5fa0e125 100644 --- a/site/src/pages/WorkspacePage/WorkspaceDeleteDialog/WorkspaceDeleteDialog.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceDeleteDialog/WorkspaceDeleteDialog.tsx @@ -3,7 +3,10 @@ import Checkbox from "@mui/material/Checkbox"; import Link from "@mui/material/Link"; import TextField from "@mui/material/TextField"; import { type FC, type FormEvent, useId, useState } from "react"; -import type { Workspace, CreateWorkspaceBuildRequest } from "api/typesGenerated"; +import type { + Workspace, + CreateWorkspaceBuildRequest, +} from "api/typesGenerated"; import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { docs } from "utils/docs"; diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx index a632425e67137..6b59e7e0b4c4b 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx @@ -11,12 +11,8 @@ import { MemoizedInlineMarkdown } from "components/Markdown/Markdown"; import { useDashboard } from "modules/dashboard/useDashboard"; import { TemplateUpdateMessage } from "modules/templates/TemplateUpdateMessage"; import type { WorkspacePermissions } from "../permissions"; -import type { - NotificationItem} from "./Notifications"; -import { - NotificationActionButton, - Notifications, -} from "./Notifications"; +import type { NotificationItem } from "./Notifications"; +import { NotificationActionButton, Notifications } from "./Notifications"; type WorkspaceNotificationsProps = { workspace: Workspace; diff --git a/site/src/pages/WorkspacePage/WorkspacePage.test.tsx b/site/src/pages/WorkspacePage/WorkspacePage.test.tsx index b525d6b47f412..548fb777e4ba9 100644 --- a/site/src/pages/WorkspacePage/WorkspacePage.test.tsx +++ b/site/src/pages/WorkspacePage/WorkspacePage.test.tsx @@ -1,9 +1,9 @@ import { screen, waitFor, within } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; -import EventSourceMock from "eventsourcemock"; import { rest } from "msw"; import * as api from "api/api"; import type { TemplateVersionParameter, Workspace } from "api/typesGenerated"; +import EventSourceMock from "eventsourcemock"; import { MockTemplate, MockWorkspace, diff --git a/site/src/pages/WorkspacePage/WorkspacePage.tsx b/site/src/pages/WorkspacePage/WorkspacePage.tsx index 22597a4b8827e..d96fb36efc94f 100644 --- a/site/src/pages/WorkspacePage/WorkspacePage.tsx +++ b/site/src/pages/WorkspacePage/WorkspacePage.tsx @@ -14,8 +14,7 @@ import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { useEffectEvent } from "hooks/hookPolyfills"; import { Navbar } from "modules/dashboard/Navbar/Navbar"; import { ServiceBanner } from "modules/dashboard/ServiceBanner/ServiceBanner"; -import type { WorkspacePermissions} from "./permissions"; -import { workspaceChecks } from "./permissions"; +import { workspaceChecks, type WorkspacePermissions } from "./permissions"; import { WorkspaceReadyPage } from "./WorkspaceReadyPage"; export const WorkspacePage: FC = () => { diff --git a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx index edce7d5905d4c..a959cf0edb6e4 100644 --- a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx @@ -18,10 +18,9 @@ import { cancelBuild, } from "api/queries/workspaces"; import type * as TypesGen from "api/typesGenerated"; -import type { - ConfirmDialogProps} from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { - ConfirmDialog + ConfirmDialog, + type ConfirmDialogProps, } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { displayError } from "components/GlobalSnackbar/utils"; import { MemoizedInlineMarkdown } from "components/Markdown/Markdown"; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx index bc18143c97890..7c615b048cd20 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx @@ -15,8 +15,7 @@ import { } from "components/Form/Form"; import { RichParameterInput } from "components/RichParameterInput/RichParameterInput"; import { getFormHelpers } from "utils/formUtils"; -import type { - AutofillBuildParameter} from "utils/richParameters"; +import type { AutofillBuildParameter } from "utils/richParameters"; import { getInitialRichParameterValues, useValidationSchemaForRichParameters, diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx index 29f62d6389032..60c97962ee1d2 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx @@ -15,10 +15,9 @@ import { Loader } from "components/Loader/Loader"; import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; import { docs } from "utils/docs"; import { pageTitle } from "utils/page"; -import type { - WorkspacePermissions} from "../../WorkspacePage/permissions"; import { workspaceChecks, + type WorkspacePermissions, } from "../../WorkspacePage/permissions"; import { useWorkspaceSettings } from "../WorkspaceSettingsLayout"; import { diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx index c3700d8b62765..d251ed5118637 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx @@ -6,12 +6,13 @@ import { render } from "testHelpers/renderHelpers"; import { timeZones } from "utils/timeZones"; import type { WorkspaceScheduleFormValues, - WorkspaceScheduleFormProps} from "./WorkspaceScheduleForm"; + WorkspaceScheduleFormProps, +} from "./WorkspaceScheduleForm"; import { Language, ttlShutdownAt, validationSchema, - WorkspaceScheduleForm + WorkspaceScheduleForm, } from "./WorkspaceScheduleForm"; const valid: WorkspaceScheduleFormValues = { diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.tsx index 8f898c497d409..71d663b33ce5d 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.tsx @@ -15,7 +15,7 @@ import duration from "dayjs/plugin/duration"; import relativeTime from "dayjs/plugin/relativeTime"; import timezone from "dayjs/plugin/timezone"; import utc from "dayjs/plugin/utc"; -import type { FormikTouched} from "formik"; +import type { FormikTouched } from "formik"; import { useFormik } from "formik"; import { type ChangeEvent, type FC } from "react"; import * as Yup from "yup"; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx index ed183b67a53f8..f6c67c12ee7d6 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx @@ -10,11 +10,8 @@ import { } from "./formToRequest"; import { scheduleToAutostart } from "./schedule"; import { ttlMsToAutostop } from "./ttl"; -import type { - WorkspaceScheduleFormValues} from "./WorkspaceScheduleForm"; -import { - Language as FormLanguage, -} from "./WorkspaceScheduleForm"; +import type { WorkspaceScheduleFormValues } from "./WorkspaceScheduleForm"; +import { Language as FormLanguage } from "./WorkspaceScheduleForm"; import { WorkspaceSchedulePage } from "./WorkspaceSchedulePage"; const validValues: WorkspaceScheduleFormValues = { diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx index 3b036a62021ae..a0e236069068a 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx @@ -1,5 +1,5 @@ import dayjs from "dayjs"; -import type { FC} from "react"; +import type { FC } from "react"; import { useState } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsForm.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsForm.tsx index 81ddb51f16484..74ca3bdd971d2 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsForm.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsForm.tsx @@ -5,12 +5,8 @@ import { useFormik } from "formik"; import upperFirst from "lodash/upperFirst"; import { type FC } from "react"; import * as Yup from "yup"; -import type { - AutomaticUpdates, - Workspace} from "api/typesGenerated"; -import { - AutomaticUpdateses -} from "api/typesGenerated"; +import type { AutomaticUpdates, Workspace } from "api/typesGenerated"; +import { AutomaticUpdateses } from "api/typesGenerated"; import { FormFields, FormFooter, diff --git a/site/src/pages/WorkspacesPage/WorkspacesButton.tsx b/site/src/pages/WorkspacesPage/WorkspacesButton.tsx index 2d7ecd4e30b89..5690c9271aa8b 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesButton.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesButton.tsx @@ -4,11 +4,8 @@ import Button from "@mui/material/Button"; import Link from "@mui/material/Link"; import { type FC, type ReactNode, useState } from "react"; import { type UseQueryResult } from "react-query"; -import type { - LinkProps as RouterLinkProps} from "react-router-dom"; -import { - Link as RouterLink -} from "react-router-dom"; +import type { LinkProps as RouterLinkProps } from "react-router-dom"; +import { Link as RouterLink } from "react-router-dom"; import { type Template } from "api/typesGenerated"; import { Avatar } from "components/Avatar/Avatar"; import { Loader } from "components/Loader/Loader"; diff --git a/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx b/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx index 24824460e756a..e5bbaf8c6c4cb 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx @@ -2,12 +2,8 @@ import type { Meta, StoryObj } from "@storybook/react"; import dayjs from "dayjs"; import uniqueId from "lodash/uniqueId"; import type { ComponentProps } from "react"; -import type { - Workspace, - WorkspaceStatus} from "api/typesGenerated"; -import { - WorkspaceStatuses, -} from "api/typesGenerated"; +import type { Workspace, WorkspaceStatus } from "api/typesGenerated"; +import { WorkspaceStatuses } from "api/typesGenerated"; import { MockMenu, getDefaultFilterProps, diff --git a/site/src/pages/WorkspacesPage/data.ts b/site/src/pages/WorkspacesPage/data.ts index b2ca32808e7ab..d4b939fe9af2e 100644 --- a/site/src/pages/WorkspacesPage/data.ts +++ b/site/src/pages/WorkspacesPage/data.ts @@ -1,5 +1,5 @@ import { useState } from "react"; -import type { QueryKey} from "react-query"; +import type { QueryKey } from "react-query"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { getWorkspaces, updateWorkspaceVersion } from "api/api"; import { getErrorMessage } from "api/errors"; diff --git a/site/src/pages/WorkspacesPage/filter/filter.tsx b/site/src/pages/WorkspacesPage/filter/filter.tsx index 20268d21519ee..8d7036056754a 100644 --- a/site/src/pages/WorkspacesPage/filter/filter.tsx +++ b/site/src/pages/WorkspacesPage/filter/filter.tsx @@ -1,15 +1,14 @@ import { useTheme } from "@emotion/react"; import { type FC } from "react"; import { Avatar, type AvatarProps } from "components/Avatar/Avatar"; -import type { - useFilter} from "components/Filter/filter"; +import type { useFilter } from "components/Filter/filter"; import { Filter, FilterMenu, FilterSearchMenu, MenuSkeleton, OptionItem, - SearchFieldSkeleton + SearchFieldSkeleton, } from "components/Filter/filter"; import { type UserFilterMenu, UserMenu } from "components/Filter/UserFilter"; import { useDashboard } from "modules/dashboard/useDashboard"; diff --git a/site/src/pages/WorkspacesPage/filter/menus.ts b/site/src/pages/WorkspacesPage/filter/menus.ts index 07da7896a918a..fc790798869f8 100644 --- a/site/src/pages/WorkspacesPage/filter/menus.ts +++ b/site/src/pages/WorkspacesPage/filter/menus.ts @@ -1,6 +1,6 @@ import { getTemplates } from "api/api"; import type { WorkspaceStatus } from "api/typesGenerated"; -import type { UseFilterMenuOptions} from "components/Filter/menu"; +import type { UseFilterMenuOptions } from "components/Filter/menu"; import { useFilterMenu } from "components/Filter/menu"; import { getDisplayWorkspaceStatus } from "utils/workspace"; import type { StatusOption, TemplateOption } from "./options"; diff --git a/site/src/utils/filetree.test.ts b/site/src/utils/filetree.test.ts index 93bbf70ba5268..712139066b9a6 100644 --- a/site/src/utils/filetree.test.ts +++ b/site/src/utils/filetree.test.ts @@ -1,5 +1,4 @@ -import type { - FileTree} from "./filetree"; +import type { FileTree } from "./filetree"; import { existsFile, getFileContent, diff --git a/site/src/utils/formUtils.ts b/site/src/utils/formUtils.ts index ff87be1ff9a29..e7c13e6347ec6 100644 --- a/site/src/utils/formUtils.ts +++ b/site/src/utils/formUtils.ts @@ -1,4 +1,4 @@ -import type { FormikContextType, FormikErrors} from "formik"; +import type { FormikContextType, FormikErrors } from "formik"; import { getIn } from "formik"; import type { ChangeEvent, diff --git a/site/src/utils/tar.test.ts b/site/src/utils/tar.test.ts index c8ec4b53843c4..5ca2719b26e90 100644 --- a/site/src/utils/tar.test.ts +++ b/site/src/utils/tar.test.ts @@ -1,4 +1,4 @@ -import type { ITarFileInfo} from "./tar"; +import type { ITarFileInfo } from "./tar"; import { TarReader, TarWriter, TarFileTypeCodes } from "./tar"; const mtime = 1666666666666; From 4efd2909d043ae0ca86e6cbef0c42eb3d857058c Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Mon, 4 Mar 2024 22:25:29 +0000 Subject: [PATCH 06/12] fix a bunch of weird things --- site/e2e/helpers.ts | 21 ++-- site/src/api/api.ts | 2 +- site/src/api/queries/settings.ts | 8 +- site/src/api/queries/workspaces.ts | 2 +- .../ActiveUserChart/ActiveUserChart.tsx | 2 +- site/src/components/Alert/ErrorAlert.tsx | 3 +- site/src/components/Badges/Badges.tsx | 8 +- .../components/BuildAvatar/BuildAvatar.tsx | 3 +- site/src/components/Dialogs/Dialog.tsx | 8 +- site/src/components/Filter/UserFilter.tsx | 3 +- .../FullPageForm/FullPageForm.stories.tsx | 6 +- site/src/components/FullPageLayout/Topbar.tsx | 13 +-- .../components/GlobalSnackbar/utils.test.ts | 3 +- site/src/components/Icons/CoderIcon.tsx | 3 +- site/src/components/Icons/DockerIcon.tsx | 3 +- site/src/components/Icons/EditSquare.tsx | 3 +- site/src/components/Icons/ErrorIcon.tsx | 3 +- site/src/components/Icons/FileCopyIcon.tsx | 5 +- site/src/components/Icons/GitIcon.tsx | 5 +- site/src/components/Icons/GitlabIcon.tsx | 3 +- site/src/components/Icons/JetBrainsIcon.tsx | 5 +- site/src/components/Icons/MarkdownIcon.tsx | 3 +- site/src/components/Icons/RocketIcon.tsx | 5 +- site/src/components/Icons/TerminalIcon.tsx | 5 +- site/src/components/Icons/TerraformIcon.tsx | 3 +- site/src/components/Icons/VSCodeIcon.tsx | 5 +- .../components/Icons/VSCodeInsidersIcon.tsx | 5 +- site/src/components/MoreMenu/MoreMenu.tsx | 48 +++++---- .../PaginationWidgetBase.test.tsx | 6 +- .../RichParameterInput/RichParameterInput.tsx | 3 +- site/src/contexts/ProxyContext.tsx | 3 +- .../modules/dashboard/DashboardProvider.tsx | 2 +- site/src/modules/resources/AgentLogs.tsx | 9 +- .../modules/resources/AgentRow.stories.tsx | 100 +++++++----------- site/src/modules/resources/AgentRow.test.tsx | 3 +- site/src/modules/resources/AgentRow.tsx | 6 +- .../resources/AgentRowPreview.test.tsx | 7 +- .../modules/resources/PortForwardButton.tsx | 17 ++- .../resources/ResourceCard.stories.tsx | 2 +- .../modules/resources/Resources.stories.tsx | 2 +- .../templates/TemplateFiles/TemplateFiles.tsx | 2 +- site/src/pages/AuditPage/AuditFilter.tsx | 11 +- .../CreateTemplatePage/BuildLogsDrawer.tsx | 3 +- .../pages/CreateTokenPage/CreateTokenPage.tsx | 3 +- site/src/pages/CreateTokenPage/utils.test.tsx | 4 +- .../pages/CreateUserPage/CreateUserForm.tsx | 3 +- .../CreateWorkspacePage.tsx | 3 +- .../CreateWorkspacePageView.tsx | 3 +- .../useWorkspaceDuplication.test.tsx | 17 ++- .../LicensesSettingsPage.tsx | 3 +- .../EditOAuth2AppPage.tsx | 3 +- .../ExternalAuthPageView.stories.tsx | 5 +- site/src/pages/HealthPage/Content.tsx | 63 +++++++---- site/src/pages/HealthPage/DERPRegionPage.tsx | 3 +- .../TemplateInsightsPage.tsx | 6 +- 55 files changed, 233 insertions(+), 245 deletions(-) diff --git a/site/e2e/helpers.ts b/site/e2e/helpers.ts index f71a7649051c3..a1c0208302ddb 100644 --- a/site/e2e/helpers.ts +++ b/site/e2e/helpers.ts @@ -1,8 +1,7 @@ import type { Page } from "@playwright/test"; import { expect } from "@playwright/test"; import axios from "axios"; -import type { ChildProcess } from "child_process"; -import { exec, spawn } from "child_process"; +import { type ChildProcess, exec, spawn } from "child_process"; import { randomUUID } from "crypto"; import express from "express"; import capitalize from "lodash/capitalize"; @@ -16,15 +15,17 @@ import type { import { TarWriter } from "utils/tar"; import { prometheusPort, agentPProfPort } from "./constants"; import { port } from "./playwright.config"; -import type { - App, - ParseComplete, - PlanComplete, - ApplyComplete, - Resource, - RichParameter, +import { + Agent, + type App, + AppSharingLevel, + type ParseComplete, + type PlanComplete, + type ApplyComplete, + type Resource, + Response, + type RichParameter, } from "./provisionerGenerated"; -import { Agent, AppSharingLevel, Response } from "./provisionerGenerated"; // createWorkspace creates a workspace for a template. // It does not wait for it to be running, but it does navigate to the page. diff --git a/site/src/api/api.ts b/site/src/api/api.ts index 193e372228dbf..c550cdecde7b9 100644 --- a/site/src/api/api.ts +++ b/site/src/api/api.ts @@ -1,7 +1,7 @@ import axios, { isAxiosError } from "axios"; import type dayjs from "dayjs"; import userAgentParser from "ua-parser-js"; -import { delay } from "../utils/delay"; +import { delay } from "utils/delay"; import * as TypesGen from "./typesGenerated"; // This needs to include the `../`, otherwise it breaks when importing into // vscode-coder. diff --git a/site/src/api/queries/settings.ts b/site/src/api/queries/settings.ts index 9f405bd4e50b4..4a086cf18532c 100644 --- a/site/src/api/queries/settings.ts +++ b/site/src/api/queries/settings.ts @@ -1,8 +1,8 @@ -import { type QueryClient, type QueryOptions } from "react-query"; +import type { QueryClient, QueryOptions } from "react-query"; import * as API from "api/api"; -import { - type UserQuietHoursScheduleResponse, - type UpdateUserQuietHoursScheduleRequest, +import type { + UpdateUserQuietHoursScheduleRequest, + UserQuietHoursScheduleResponse, } from "api/typesGenerated"; export const userQuietHoursScheduleKey = (userId: string) => [ diff --git a/site/src/api/queries/workspaces.ts b/site/src/api/queries/workspaces.ts index a6fb7ac7b65ff..816cc5613e99d 100644 --- a/site/src/api/queries/workspaces.ts +++ b/site/src/api/queries/workspaces.ts @@ -1,8 +1,8 @@ import type { Dayjs } from "dayjs"; import type { QueryClient, - UseMutationOptions, QueryOptions, + UseMutationOptions, } from "react-query"; import * as API from "api/api"; import { putWorkspaceExtension } from "api/api"; diff --git a/site/src/components/ActiveUserChart/ActiveUserChart.tsx b/site/src/components/ActiveUserChart/ActiveUserChart.tsx index e6a6bb3385e6a..4b010a70879fe 100644 --- a/site/src/components/ActiveUserChart/ActiveUserChart.tsx +++ b/site/src/components/ActiveUserChart/ActiveUserChart.tsx @@ -1,8 +1,8 @@ import { useTheme } from "@emotion/react"; -import type { ChartOptions } from "chart.js"; import { CategoryScale, Chart as ChartJS, + type ChartOptions, defaults, Filler, Legend, diff --git a/site/src/components/Alert/ErrorAlert.tsx b/site/src/components/Alert/ErrorAlert.tsx index a4de72bb3d522..ce9247d2800d2 100644 --- a/site/src/components/Alert/ErrorAlert.tsx +++ b/site/src/components/Alert/ErrorAlert.tsx @@ -1,8 +1,7 @@ import AlertTitle from "@mui/material/AlertTitle"; import type { FC } from "react"; import { getErrorMessage, getErrorDetail } from "api/errors"; -import type { AlertProps } from "./Alert"; -import { Alert, AlertDetail } from "./Alert"; +import { Alert, AlertDetail, type AlertProps } from "./Alert"; export const ErrorAlert: FC< Omit & { error: unknown } diff --git a/site/src/components/Badges/Badges.tsx b/site/src/components/Badges/Badges.tsx index f2e14b39b9a25..b6a1550e43c33 100644 --- a/site/src/components/Badges/Badges.tsx +++ b/site/src/components/Badges/Badges.tsx @@ -1,7 +1,11 @@ import { type Interpolation, type Theme } from "@emotion/react"; import Tooltip from "@mui/material/Tooltip"; -import { forwardRef } from "react"; -import type { FC, HTMLAttributes, PropsWithChildren } from "react"; +import { + type FC, + forwardRef, + type HTMLAttributes, + type PropsWithChildren, +} from "react"; import { Stack } from "components/Stack/Stack"; const styles = { diff --git a/site/src/components/BuildAvatar/BuildAvatar.tsx b/site/src/components/BuildAvatar/BuildAvatar.tsx index f82a22fde081a..c3d84b6304ded 100644 --- a/site/src/components/BuildAvatar/BuildAvatar.tsx +++ b/site/src/components/BuildAvatar/BuildAvatar.tsx @@ -3,8 +3,7 @@ import { useTheme } from "@emotion/react"; import Badge from "@mui/material/Badge"; import { type FC } from "react"; import type { WorkspaceBuild } from "api/typesGenerated"; -import type { AvatarProps } from "components/Avatar/Avatar"; -import { Avatar } from "components/Avatar/Avatar"; +import { Avatar, type AvatarProps } from "components/Avatar/Avatar"; import { BuildIcon } from "components/BuildIcon/BuildIcon"; import { useClassName } from "hooks/useClassName"; import { getDisplayWorkspaceBuildStatus } from "utils/workspace"; diff --git a/site/src/components/Dialogs/Dialog.tsx b/site/src/components/Dialogs/Dialog.tsx index b2033b1003301..f4f90530cc3b5 100644 --- a/site/src/components/Dialogs/Dialog.tsx +++ b/site/src/components/Dialogs/Dialog.tsx @@ -1,8 +1,8 @@ import { type Interpolation, type Theme } from "@emotion/react"; -import type { LoadingButtonProps } from "@mui/lab/LoadingButton"; -import LoadingButton from "@mui/lab/LoadingButton"; -import type { DialogProps as MuiDialogProps } from "@mui/material/Dialog"; -import MuiDialog from "@mui/material/Dialog"; +import LoadingButton, { type LoadingButtonProps } from "@mui/lab/LoadingButton"; +import MuiDialog, { + type DialogProps as MuiDialogProps, +} from "@mui/material/Dialog"; import { type FC, type ReactNode } from "react"; import type { ConfirmDialogType } from "./types"; diff --git a/site/src/components/Filter/UserFilter.tsx b/site/src/components/Filter/UserFilter.tsx index 135b693917dd3..4e1b149a6a90a 100644 --- a/site/src/components/Filter/UserFilter.tsx +++ b/site/src/components/Filter/UserFilter.tsx @@ -3,8 +3,7 @@ import { getUsers } from "api/api"; import { useMe } from "contexts/auth/useMe"; import { UserAvatar } from "../UserAvatar/UserAvatar"; import { FilterSearchMenu, OptionItem } from "./filter"; -import type { UseFilterMenuOptions } from "./menu"; -import { useFilterMenu } from "./menu"; +import { useFilterMenu, type UseFilterMenuOptions } from "./menu"; import type { BaseOption } from "./options"; export type UserOption = BaseOption & { diff --git a/site/src/components/FullPageForm/FullPageForm.stories.tsx b/site/src/components/FullPageForm/FullPageForm.stories.tsx index e7fdb6aec4738..d0355ff205b79 100644 --- a/site/src/components/FullPageForm/FullPageForm.stories.tsx +++ b/site/src/components/FullPageForm/FullPageForm.stories.tsx @@ -1,12 +1,12 @@ import TextField from "@mui/material/TextField"; import { action } from "@storybook/addon-actions"; import type { Meta, StoryObj } from "@storybook/react"; +import { type FC } from "react"; import { FormFooter } from "../FormFooter/FormFooter"; import { Stack } from "../Stack/Stack"; -import type { FullPageFormProps } from "./FullPageForm"; -import { FullPageForm } from "./FullPageForm"; +import { FullPageForm, type FullPageFormProps } from "./FullPageForm"; -const Template = (props: FullPageFormProps) => ( +const Template: FC = (props) => (
{ diff --git a/site/src/components/FullPageLayout/Topbar.tsx b/site/src/components/FullPageLayout/Topbar.tsx index ddf73ce2c497d..5cdd2deff26bc 100644 --- a/site/src/components/FullPageLayout/Topbar.tsx +++ b/site/src/components/FullPageLayout/Topbar.tsx @@ -1,19 +1,16 @@ import { css } from "@emotion/css"; import { useTheme } from "@emotion/react"; -import type { ButtonProps } from "@mui/material/Button"; -import Button from "@mui/material/Button"; -import type { IconButtonProps } from "@mui/material/IconButton"; -import IconButton from "@mui/material/IconButton"; +import Button, { type ButtonProps } from "@mui/material/Button"; +import IconButton, { type IconButtonProps } from "@mui/material/IconButton"; import { + cloneElement, type FC, type ForwardedRef, + forwardRef, type HTMLAttributes, type ReactElement, - cloneElement, - forwardRef, } from "react"; -import type { AvatarProps } from "components/Avatar/Avatar"; -import { ExternalAvatar } from "components/Avatar/Avatar"; +import { type AvatarProps, ExternalAvatar } from "components/Avatar/Avatar"; export const Topbar: FC> = (props) => { const theme = useTheme(); diff --git a/site/src/components/GlobalSnackbar/utils.test.ts b/site/src/components/GlobalSnackbar/utils.test.ts index 9317d337eae5f..eabff82c282a6 100644 --- a/site/src/components/GlobalSnackbar/utils.test.ts +++ b/site/src/components/GlobalSnackbar/utils.test.ts @@ -1,9 +1,10 @@ -import type { NotificationMsg, NotificationTextPrefixed } from "./utils"; import { displayError, displaySuccess, isNotificationTextPrefixed, MsgType, + type NotificationMsg, + type NotificationTextPrefixed, SnackbarEventType, } from "./utils"; diff --git a/site/src/components/Icons/CoderIcon.tsx b/site/src/components/Icons/CoderIcon.tsx index c2a7e7ccda4bb..36500790f1109 100644 --- a/site/src/components/Icons/CoderIcon.tsx +++ b/site/src/components/Icons/CoderIcon.tsx @@ -1,5 +1,4 @@ -import type { SvgIconProps } from "@mui/material/SvgIcon"; -import SvgIcon from "@mui/material/SvgIcon"; +import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; /** * CoderIcon represents the cloud with brackets Coder brand icon. It does not diff --git a/site/src/components/Icons/DockerIcon.tsx b/site/src/components/Icons/DockerIcon.tsx index 6f16074e2b1f9..6307b1ed711d1 100644 --- a/site/src/components/Icons/DockerIcon.tsx +++ b/site/src/components/Icons/DockerIcon.tsx @@ -1,5 +1,4 @@ -import type { SvgIconProps } from "@mui/material/SvgIcon"; -import SvgIcon from "@mui/material/SvgIcon"; +import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; export const DockerIcon = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/EditSquare.tsx b/site/src/components/Icons/EditSquare.tsx index 6caf9af675978..9d6ef812ceb5a 100644 --- a/site/src/components/Icons/EditSquare.tsx +++ b/site/src/components/Icons/EditSquare.tsx @@ -1,5 +1,4 @@ -import type { SvgIconProps } from "@mui/material/SvgIcon"; -import SvgIcon from "@mui/material/SvgIcon"; +import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; export const EditSquare = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/ErrorIcon.tsx b/site/src/components/Icons/ErrorIcon.tsx index b71103c38d8fc..1ceb61011374c 100644 --- a/site/src/components/Icons/ErrorIcon.tsx +++ b/site/src/components/Icons/ErrorIcon.tsx @@ -1,5 +1,4 @@ -import type { SvgIconProps } from "@mui/material/SvgIcon"; -import SvgIcon from "@mui/material/SvgIcon"; +import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; export const ErrorIcon = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/FileCopyIcon.tsx b/site/src/components/Icons/FileCopyIcon.tsx index 84ecc86d71f24..1de5cfe4fc9f9 100644 --- a/site/src/components/Icons/FileCopyIcon.tsx +++ b/site/src/components/Icons/FileCopyIcon.tsx @@ -1,7 +1,6 @@ -import type { SvgIconProps } from "@mui/material/SvgIcon"; -import SvgIcon from "@mui/material/SvgIcon"; +import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; -export const FileCopyIcon = (props: SvgIconProps) => ( +export const FileCopyIcon = (props: SvgIconProps): JSX.Element => ( ( +export const GitIcon = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/GitlabIcon.tsx b/site/src/components/Icons/GitlabIcon.tsx index 17685d39507e8..aae6d96e1c915 100644 --- a/site/src/components/Icons/GitlabIcon.tsx +++ b/site/src/components/Icons/GitlabIcon.tsx @@ -1,5 +1,4 @@ -import type { SvgIconProps } from "@mui/material/SvgIcon"; -import SvgIcon from "@mui/material/SvgIcon"; +import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; export const GitlabIcon = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/JetBrainsIcon.tsx b/site/src/components/Icons/JetBrainsIcon.tsx index 64cdd5c818d6a..676218941c560 100644 --- a/site/src/components/Icons/JetBrainsIcon.tsx +++ b/site/src/components/Icons/JetBrainsIcon.tsx @@ -1,7 +1,6 @@ -import type { SvgIconProps } from "@mui/material/SvgIcon"; -import SvgIcon from "@mui/material/SvgIcon"; +import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; -export const JetBrainsIcon = (props: SvgIconProps) => ( +export const JetBrainsIcon = (props: SvgIconProps): JSX.Element => ( ( diff --git a/site/src/components/Icons/RocketIcon.tsx b/site/src/components/Icons/RocketIcon.tsx index 15dc0fb391a96..5279a7dab7fad 100644 --- a/site/src/components/Icons/RocketIcon.tsx +++ b/site/src/components/Icons/RocketIcon.tsx @@ -1,7 +1,6 @@ -import type { SvgIconProps } from "@mui/material/SvgIcon"; -import SvgIcon from "@mui/material/SvgIcon"; +import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; -export const RocketIcon = (props: SvgIconProps) => ( +export const RocketIcon = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/TerminalIcon.tsx b/site/src/components/Icons/TerminalIcon.tsx index 616cf5c5bbdc0..5b46f39f86d59 100644 --- a/site/src/components/Icons/TerminalIcon.tsx +++ b/site/src/components/Icons/TerminalIcon.tsx @@ -1,7 +1,6 @@ -import type { SvgIconProps } from "@mui/material/SvgIcon"; -import SvgIcon from "@mui/material/SvgIcon"; +import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; -export const TerminalIcon = (props: SvgIconProps) => ( +export const TerminalIcon = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/TerraformIcon.tsx b/site/src/components/Icons/TerraformIcon.tsx index 2c15b8e9879cf..a71d7c393644d 100644 --- a/site/src/components/Icons/TerraformIcon.tsx +++ b/site/src/components/Icons/TerraformIcon.tsx @@ -1,5 +1,4 @@ -import type { SvgIconProps } from "@mui/material/SvgIcon"; -import SvgIcon from "@mui/material/SvgIcon"; +import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; export const TerraformIcon = (props: SvgIconProps): JSX.Element => ( diff --git a/site/src/components/Icons/VSCodeIcon.tsx b/site/src/components/Icons/VSCodeIcon.tsx index d51916ea553bd..97e0c130e21a0 100644 --- a/site/src/components/Icons/VSCodeIcon.tsx +++ b/site/src/components/Icons/VSCodeIcon.tsx @@ -1,7 +1,6 @@ -import type { SvgIconProps } from "@mui/material/SvgIcon"; -import SvgIcon from "@mui/material/SvgIcon"; +import SvgIcon, { type SvgIconProps } from "@mui/material/SvgIcon"; -export const VSCodeIcon = (props: SvgIconProps) => ( +export const VSCodeIcon = (props: SvgIconProps): JSX.Element => ( ( +export const VSCodeInsidersIcon = (props: SvgIconProps): JSX.Element => ( ( undefined, ); -export const MoreMenu = (props: { children: ReactNode }) => { +export const MoreMenu: FC = ({ children }) => { const triggerRef = useRef(null); const [isOpen, setIsOpen] = useState(false); @@ -40,7 +40,7 @@ export const MoreMenu = (props: { children: ReactNode }) => { return ( - {props.children} + {children} ); }; @@ -55,10 +55,10 @@ const useMoreMenuContext = () => { return ctx; }; -export const MoreMenuTrigger = ({ +export const MoreMenuTrigger: FC> = ({ children, ...props -}: HTMLProps) => { +}) => { const menu = useMoreMenuContext(); return cloneElement(children as ReactElement, { @@ -84,7 +84,9 @@ export const ThreeDotsButton = forwardRef( }, ); -export const MoreMenuContent = (props: Omit) => { +export const MoreMenuContent: FC> = ( + props, +) => { const menu = useMoreMenuContext(); return ( @@ -99,10 +101,16 @@ export const MoreMenuContent = (props: Omit) => { ); }; -export const MoreMenuItem = ( - props: MenuItemProps & { closeOnClick?: boolean; danger?: boolean }, -) => { - const { closeOnClick = true, danger = false, ...menuItemProps } = props; +interface MoreMenuItemProps extends MenuItemProps { + closeOnClick?: boolean; + danger?: boolean; +} + +export const MoreMenuItem: FC = ({ + closeOnClick = true, + danger = false, + ...menuItemProps +}) => { const ctx = useContext(MoreMenuContext); if (!ctx) { diff --git a/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx b/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx index 03f152fc0b182..3a47a4330737b 100644 --- a/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx +++ b/site/src/components/PaginationWidget/PaginationWidgetBase.test.tsx @@ -1,8 +1,10 @@ import { screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { renderWithAuth } from "testHelpers/renderHelpers"; -import type { PaginationWidgetBaseProps } from "./PaginationWidgetBase"; -import { PaginationWidgetBase } from "./PaginationWidgetBase"; +import { + PaginationWidgetBase, + type PaginationWidgetBaseProps, +} from "./PaginationWidgetBase"; type SampleProps = Omit; diff --git a/site/src/components/RichParameterInput/RichParameterInput.tsx b/site/src/components/RichParameterInput/RichParameterInput.tsx index df23145d15548..117ff85ec1b80 100644 --- a/site/src/components/RichParameterInput/RichParameterInput.tsx +++ b/site/src/components/RichParameterInput/RichParameterInput.tsx @@ -5,8 +5,7 @@ import FormControlLabel from "@mui/material/FormControlLabel"; import FormHelperText from "@mui/material/FormHelperText"; import Radio from "@mui/material/Radio"; import RadioGroup from "@mui/material/RadioGroup"; -import type { TextFieldProps } from "@mui/material/TextField"; -import TextField from "@mui/material/TextField"; +import TextField, { type TextFieldProps } from "@mui/material/TextField"; import Tooltip from "@mui/material/Tooltip"; import { type FC, type ReactNode, useState } from "react"; import type { TemplateVersionParameter } from "api/typesGenerated"; diff --git a/site/src/contexts/ProxyContext.tsx b/site/src/contexts/ProxyContext.tsx index 55082950696a2..0f8526c70dd73 100644 --- a/site/src/contexts/ProxyContext.tsx +++ b/site/src/contexts/ProxyContext.tsx @@ -11,8 +11,7 @@ import { useQuery } from "react-query"; import { getWorkspaceProxies, getWorkspaceProxyRegions } from "api/api"; import type { Region, WorkspaceProxy } from "api/typesGenerated"; import { usePermissions } from "contexts/auth/usePermissions"; -import type { ProxyLatencyReport } from "./useProxyLatency"; -import { useProxyLatency } from "./useProxyLatency"; +import { useProxyLatency, type ProxyLatencyReport } from "./useProxyLatency"; export interface ProxyContextValue { // proxy is **always** the workspace proxy that should be used. diff --git a/site/src/modules/dashboard/DashboardProvider.tsx b/site/src/modules/dashboard/DashboardProvider.tsx index 536f34e5781f2..88cd74cdb5ce3 100644 --- a/site/src/modules/dashboard/DashboardProvider.tsx +++ b/site/src/modules/dashboard/DashboardProvider.tsx @@ -1,7 +1,7 @@ import { + createContext, type FC, type PropsWithChildren, - createContext, useCallback, useState, } from "react"; diff --git a/site/src/modules/resources/AgentLogs.tsx b/site/src/modules/resources/AgentLogs.tsx index b514806657e28..16515efb7c04e 100644 --- a/site/src/modules/resources/AgentLogs.tsx +++ b/site/src/modules/resources/AgentLogs.tsx @@ -1,7 +1,12 @@ import type { Interpolation, Theme } from "@emotion/react"; import Tooltip from "@mui/material/Tooltip"; -import type { ComponentProps } from "react"; -import { forwardRef, useEffect, useMemo, useState } from "react"; +import { + type ComponentProps, + forwardRef, + useEffect, + useMemo, + useState, +} from "react"; import { FixedSizeList as List } from "react-window"; import * as API from "api/api"; import type { WorkspaceAgentLogSource } from "api/typesGenerated"; diff --git a/site/src/modules/resources/AgentRow.stories.tsx b/site/src/modules/resources/AgentRow.stories.tsx index 73fc0dd89f2e9..1d97b129fde59 100644 --- a/site/src/modules/resources/AgentRow.stories.tsx +++ b/site/src/modules/resources/AgentRow.stories.tsx @@ -1,31 +1,9 @@ import type { Meta, StoryObj } from "@storybook/react"; import { ProxyContext, getPreferredProxy } from "contexts/ProxyContext"; import { chromatic } from "testHelpers/chromatic"; -import { - MockPrimaryWorkspaceProxy, - MockWorkspaceProxies, - MockWorkspace, - MockWorkspaceAgent, - MockWorkspaceAgentConnecting, - MockWorkspaceAgentOff, - MockWorkspaceAgentOutdated, - MockWorkspaceAgentReady, - MockWorkspaceAgentShutdownError, - MockWorkspaceAgentShutdownTimeout, - MockWorkspaceAgentShuttingDown, - MockWorkspaceAgentStartError, - MockWorkspaceAgentStarting, - MockWorkspaceAgentStartTimeout, - MockWorkspaceAgentTimeout, - MockWorkspaceAgentLogSource, - MockWorkspaceAgentDeprecated, - MockWorkspaceApp, - MockProxyLatencies, - MockListeningPortsResponse, -} from "testHelpers/entities"; +import * as M from "testHelpers/entities"; import { withDashboardProvider } from "testHelpers/storybook"; -import type { LineWithID } from "./AgentRow"; -import { AgentRow } from "./AgentRow"; +import { AgentRow, type LineWithID } from "./AgentRow"; const defaultAgentMetadata = [ { @@ -101,7 +79,7 @@ const storybookLogs: LineWithID[] = [ level: "info", output: line, time: "", - source_id: MockWorkspaceAgentLogSource.id, + source_id: M.MockWorkspaceAgentLogSource.id, })); const meta: Meta = { @@ -110,8 +88,8 @@ const meta: Meta = { chromatic, queries: [ { - key: ["portForward", MockWorkspaceAgent.id], - data: MockListeningPortsResponse, + key: ["portForward", M.MockWorkspaceAgent.id], + data: M.MockListeningPortsResponse, }, ], }, @@ -120,10 +98,10 @@ const meta: Meta = { args: { storybookLogs, agent: { - ...MockWorkspaceAgent, + ...M.MockWorkspaceAgent, logs_length: storybookLogs.length, }, - workspace: MockWorkspace, + workspace: M.MockWorkspace, showApps: true, storybookAgentMetadata: defaultAgentMetadata, }, @@ -131,7 +109,7 @@ const meta: Meta = { (Story) => ( ( { @@ -300,8 +278,8 @@ export const ShowingPortForward: Story = { export const Outdated: Story = { args: { - agent: MockWorkspaceAgentOutdated, - workspace: MockWorkspace, + agent: M.MockWorkspaceAgentOutdated, + workspace: M.MockWorkspace, serverVersion: "v99.999.9999+c1cdf14", serverAPIVersion: "1.0", }, @@ -309,8 +287,8 @@ export const Outdated: Story = { export const Deprecated: Story = { args: { - agent: MockWorkspaceAgentDeprecated, - workspace: MockWorkspace, + agent: M.MockWorkspaceAgentDeprecated, + workspace: M.MockWorkspace, serverVersion: "v99.999.9999+c1cdf14", serverAPIVersion: "2.0", }, @@ -322,11 +300,11 @@ export const WithXRayScan: Story = { { key: [ "xray", - { agentId: MockWorkspaceAgent.id, workspaceId: MockWorkspace.id }, + { agentId: M.MockWorkspaceAgent.id, workspaceId: M.MockWorkspace.id }, ], data: { - workspace_id: MockWorkspace.id, - agent_id: MockWorkspaceAgent.id, + workspace_id: M.MockWorkspace.id, + agent_id: M.MockWorkspaceAgent.id, critical: 10, high: 3, medium: 5, diff --git a/site/src/modules/resources/AgentRow.test.tsx b/site/src/modules/resources/AgentRow.test.tsx index 0ad222fc09740..4ae3f1536b659 100644 --- a/site/src/modules/resources/AgentRow.test.tsx +++ b/site/src/modules/resources/AgentRow.test.tsx @@ -8,8 +8,7 @@ import { renderWithAuth, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; -import type { AgentRowProps } from "./AgentRow"; -import { AgentRow } from "./AgentRow"; +import { AgentRow, type AgentRowProps } from "./AgentRow"; import { DisplayAppNameMap } from "./AppLink/AppLink"; jest.mock("modules/resources/AgentMetadata", () => { diff --git a/site/src/modules/resources/AgentRow.tsx b/site/src/modules/resources/AgentRow.tsx index 877970cd2e518..9620eb093cc99 100644 --- a/site/src/modules/resources/AgentRow.tsx +++ b/site/src/modules/resources/AgentRow.tsx @@ -23,8 +23,10 @@ import type { import { DropdownArrow } from "components/DropdownArrow/DropdownArrow"; import { Stack } from "components/Stack/Stack"; import { useProxy } from "contexts/ProxyContext"; -import type { Line } from "modules/workspaces/WorkspaceBuildLogs/Logs"; -import { logLineHeight } from "modules/workspaces/WorkspaceBuildLogs/Logs"; +import { + type Line, + logLineHeight, +} from "modules/workspaces/WorkspaceBuildLogs/Logs"; import { AgentLatency } from "./AgentLatency"; import { AgentLogs, useAgentLogs } from "./AgentLogs"; import { AgentMetadata } from "./AgentMetadata"; diff --git a/site/src/modules/resources/AgentRowPreview.test.tsx b/site/src/modules/resources/AgentRowPreview.test.tsx index 8fabb2a1c3087..340aa4a1be68a 100644 --- a/site/src/modules/resources/AgentRowPreview.test.tsx +++ b/site/src/modules/resources/AgentRowPreview.test.tsx @@ -1,6 +1,9 @@ import { screen } from "@testing-library/react"; -import type { WorkspaceAgent, DisplayApp } from "api/typesGenerated"; -import { DisplayApps } from "api/typesGenerated"; +import { + DisplayApps, + type DisplayApp, + type WorkspaceAgent, +} from "api/typesGenerated"; import { MockWorkspaceAgent } from "testHelpers/entities"; import { renderComponent } from "testHelpers/renderHelpers"; import { AgentRowPreview } from "./AgentRowPreview"; diff --git a/site/src/modules/resources/PortForwardButton.tsx b/site/src/modules/resources/PortForwardButton.tsx index d0803966554ca..22938c556ee5e 100644 --- a/site/src/modules/resources/PortForwardButton.tsx +++ b/site/src/modules/resources/PortForwardButton.tsx @@ -14,8 +14,7 @@ import MenuItem from "@mui/material/MenuItem"; import Select from "@mui/material/Select"; import Stack from "@mui/material/Stack"; import TextField from "@mui/material/TextField"; -import type { FormikContextType } from "formik"; -import { useFormik } from "formik"; +import { type FormikContextType, useFormik } from "formik"; import { type FC } from "react"; import { useQuery, useMutation } from "react-query"; import * as Yup from "yup"; @@ -25,13 +24,13 @@ import { upsertWorkspacePortShare, workspacePortShares, } from "api/queries/workspaceportsharing"; -import { WorkspaceAppSharingLevels } from "api/typesGenerated"; -import type { - Template, - UpsertWorkspaceAgentPortShareRequest, - WorkspaceAgent, - WorkspaceAgentListeningPort, - WorkspaceAgentPortShareLevel, +import { + type Template, + type UpsertWorkspaceAgentPortShareRequest, + type WorkspaceAgent, + type WorkspaceAgentListeningPort, + type WorkspaceAgentPortShareLevel, + WorkspaceAppSharingLevels, } from "api/typesGenerated"; import { HelpTooltipLink, diff --git a/site/src/modules/resources/ResourceCard.stories.tsx b/site/src/modules/resources/ResourceCard.stories.tsx index 7bc3b4bb0503c..b0a23fd04bc30 100644 --- a/site/src/modules/resources/ResourceCard.stories.tsx +++ b/site/src/modules/resources/ResourceCard.stories.tsx @@ -1,5 +1,5 @@ import type { Meta, StoryObj } from "@storybook/react"; -import { type WorkspaceAgent } from "api/typesGenerated"; +import type { WorkspaceAgent } from "api/typesGenerated"; import { ProxyContext, getPreferredProxy } from "contexts/ProxyContext"; import { MockProxyLatencies, diff --git a/site/src/modules/resources/Resources.stories.tsx b/site/src/modules/resources/Resources.stories.tsx index 7d69c0ba64a35..c5f2fe3c55405 100644 --- a/site/src/modules/resources/Resources.stories.tsx +++ b/site/src/modules/resources/Resources.stories.tsx @@ -1,5 +1,5 @@ import type { Meta, StoryObj } from "@storybook/react"; -import { type WorkspaceAgent } from "api/typesGenerated"; +import type { WorkspaceAgent } from "api/typesGenerated"; import { ProxyContext, getPreferredProxy } from "contexts/ProxyContext"; import { MockProxyLatencies, diff --git a/site/src/modules/templates/TemplateFiles/TemplateFiles.tsx b/site/src/modules/templates/TemplateFiles/TemplateFiles.tsx index 8e26bd970cd2e..415feae8932f5 100644 --- a/site/src/modules/templates/TemplateFiles/TemplateFiles.tsx +++ b/site/src/modules/templates/TemplateFiles/TemplateFiles.tsx @@ -2,7 +2,7 @@ import { useTheme, type Interpolation, type Theme } from "@emotion/react"; import EditOutlined from "@mui/icons-material/EditOutlined"; import RadioButtonCheckedOutlined from "@mui/icons-material/RadioButtonCheckedOutlined"; import set from "lodash/fp/set"; -import { useMemo, type FC, useCallback } from "react"; +import { type FC, useCallback, useMemo } from "react"; import { Link } from "react-router-dom"; import { SyntaxHighlighter } from "components/SyntaxHighlighter/SyntaxHighlighter"; import type { FileTree } from "utils/filetree"; diff --git a/site/src/pages/AuditPage/AuditFilter.tsx b/site/src/pages/AuditPage/AuditFilter.tsx index 370678ecf3010..46bade08dfb09 100644 --- a/site/src/pages/AuditPage/AuditFilter.tsx +++ b/site/src/pages/AuditPage/AuditFilter.tsx @@ -1,19 +1,20 @@ import capitalize from "lodash/capitalize"; import { type FC } from "react"; import { AuditActions, ResourceTypes } from "api/typesGenerated"; -import type { useFilter } from "components/Filter/filter"; import { Filter, FilterMenu, MenuSkeleton, OptionItem, SearchFieldSkeleton, + type useFilter, } from "components/Filter/filter"; -import type { UseFilterMenuOptions } from "components/Filter/menu"; -import { useFilterMenu } from "components/Filter/menu"; +import { + useFilterMenu, + type UseFilterMenuOptions, +} from "components/Filter/menu"; import type { BaseOption } from "components/Filter/options"; -import type { UserFilterMenu } from "components/Filter/UserFilter"; -import { UserMenu } from "components/Filter/UserFilter"; +import { UserMenu, type UserFilterMenu } from "components/Filter/UserFilter"; import { docs } from "utils/docs"; const PRESET_FILTERS = [ diff --git a/site/src/pages/CreateTemplatePage/BuildLogsDrawer.tsx b/site/src/pages/CreateTemplatePage/BuildLogsDrawer.tsx index 5cff895fee24f..85d8ad1157cdc 100644 --- a/site/src/pages/CreateTemplatePage/BuildLogsDrawer.tsx +++ b/site/src/pages/CreateTemplatePage/BuildLogsDrawer.tsx @@ -5,8 +5,7 @@ import Button from "@mui/material/Button"; import Drawer from "@mui/material/Drawer"; import IconButton from "@mui/material/IconButton"; import { visuallyHidden } from "@mui/utils"; -import type { FC } from "react"; -import { useLayoutEffect, useRef } from "react"; +import { type FC, useLayoutEffect, useRef } from "react"; import { JobError } from "api/queries/templates"; import type { TemplateVersion } from "api/typesGenerated"; import { Loader } from "components/Loader/Loader"; diff --git a/site/src/pages/CreateTokenPage/CreateTokenPage.tsx b/site/src/pages/CreateTokenPage/CreateTokenPage.tsx index 6e5710402af2a..4ea1f98144671 100644 --- a/site/src/pages/CreateTokenPage/CreateTokenPage.tsx +++ b/site/src/pages/CreateTokenPage/CreateTokenPage.tsx @@ -12,8 +12,7 @@ import { displaySuccess, displayError } from "components/GlobalSnackbar/utils"; import { Loader } from "components/Loader/Loader"; import { pageTitle } from "utils/page"; import { CreateTokenForm } from "./CreateTokenForm"; -import type { CreateTokenData } from "./utils"; -import { NANO_HOUR } from "./utils"; +import { type CreateTokenData, NANO_HOUR } from "./utils"; const initialValues: CreateTokenData = { name: "", diff --git a/site/src/pages/CreateTokenPage/utils.test.tsx b/site/src/pages/CreateTokenPage/utils.test.tsx index da9bf85c65907..ae097a9efea96 100644 --- a/site/src/pages/CreateTokenPage/utils.test.tsx +++ b/site/src/pages/CreateTokenPage/utils.test.tsx @@ -1,7 +1,7 @@ -import type { LifetimeDay } from "./utils"; import { - filterByMaxTokenLifetime, determineDefaultLtValue, + filterByMaxTokenLifetime, + type LifetimeDay, lifetimeDayPresets, NANO_HOUR, } from "./utils"; diff --git a/site/src/pages/CreateUserPage/CreateUserForm.tsx b/site/src/pages/CreateUserPage/CreateUserForm.tsx index d218bdc345629..135d80a176ab1 100644 --- a/site/src/pages/CreateUserPage/CreateUserForm.tsx +++ b/site/src/pages/CreateUserPage/CreateUserForm.tsx @@ -1,8 +1,7 @@ import Link from "@mui/material/Link"; import MenuItem from "@mui/material/MenuItem"; import TextField from "@mui/material/TextField"; -import type { FormikContextType } from "formik"; -import { useFormik } from "formik"; +import { type FormikContextType, useFormik } from "formik"; import type { FC } from "react"; import * as Yup from "yup"; import { hasApiFieldErrors, isApiError } from "api/errors"; diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx index 088ff1ea9f19f..66395c674725d 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx @@ -26,8 +26,7 @@ import { pageTitle } from "utils/page"; import type { AutofillBuildParameter } from "utils/richParameters"; import { paramsUsedToCreateWorkspace } from "utils/workspace"; import { CreateWorkspacePageView } from "./CreateWorkspacePageView"; -import type { CreateWSPermissions } from "./permissions"; -import { createWorkspaceChecks } from "./permissions"; +import { createWorkspaceChecks, type CreateWSPermissions } from "./permissions"; export const createWorkspaceModes = ["form", "auto", "duplicate"] as const; export type CreateWorkspaceMode = (typeof createWorkspaceModes)[number]; diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx index 425251839b77f..95bc9fc1adec2 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx @@ -2,8 +2,7 @@ import { type Interpolation, type Theme } from "@emotion/react"; import Button from "@mui/material/Button"; import FormHelperText from "@mui/material/FormHelperText"; import TextField from "@mui/material/TextField"; -import type { FormikContextType } from "formik"; -import { useFormik } from "formik"; +import { type FormikContextType, useFormik } from "formik"; import { type FC, useEffect, useState, useMemo, useCallback } from "react"; import { useSearchParams } from "react-router-dom"; import * as Yup from "yup"; diff --git a/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.test.tsx b/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.test.tsx index feb8a1fdfa408..50e6b1f5eaf70 100644 --- a/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.test.tsx +++ b/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.test.tsx @@ -1,8 +1,7 @@ import { waitFor } from "@testing-library/react"; import { type Workspace } from "api/typesGenerated"; -import { MockWorkspace } from "testHelpers/entities"; +import * as M from "testHelpers/entities"; import { renderHookWithAuth } from "testHelpers/renderHelpers"; -import * as M from "../../testHelpers/entities"; import CreateWorkspacePage from "./CreateWorkspacePage"; import { useWorkspaceDuplication } from "./useWorkspaceDuplication"; @@ -34,7 +33,7 @@ async function performNavigation( return waitFor(() => { expect(router.state.location.pathname).toEqual( - `/templates/${MockWorkspace.template_name}/workspace`, + `/templates/${M.MockWorkspace.template_name}/workspace`, ); }); } @@ -51,19 +50,19 @@ describe(`${useWorkspaceDuplication.name}`, () => { }); it("Will become ready when workspace is provided and build params are successfully fetched", async () => { - const { result } = await render(MockWorkspace); + const { result } = await render(M.MockWorkspace); expect(result.current.isDuplicationReady).toBe(false); await waitFor(() => expect(result.current.isDuplicationReady).toBe(true)); }); it("Is able to navigate the user to the workspace creation page", async () => { - const { result, router } = await render(MockWorkspace); + const { result, router } = await render(M.MockWorkspace); await performNavigation(result, router); }); test("Navigating populates the URL search params with the workspace's build params", async () => { - const { result, router } = await render(MockWorkspace); + const { result, router } = await render(M.MockWorkspace); await performNavigation(result, router); const parsedParams = new URLSearchParams(router.state.location.search); @@ -82,14 +81,14 @@ describe(`${useWorkspaceDuplication.name}`, () => { }); test("Navigating appends other necessary metadata to the search params", async () => { - const { result, router } = await render(MockWorkspace); + const { result, router } = await render(M.MockWorkspace); await performNavigation(result, router); const parsedParams = new URLSearchParams(router.state.location.search); const extraMetadataEntries = [ ["mode", "duplicate"], - ["name", `${MockWorkspace.name}-copy`], - ["version", MockWorkspace.template_active_version_id], + ["name", `${M.MockWorkspace.name}-copy`], + ["version", M.MockWorkspace.template_active_version_id], ] as const; for (const [key, value] of extraMetadataEntries) { diff --git a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPage.tsx b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPage.tsx index 1db05538ec4b6..8f172cf1155a1 100644 --- a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPage.tsx +++ b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPage.tsx @@ -1,5 +1,4 @@ -import type { FC } from "react"; -import { useEffect } from "react"; +import { type FC, useEffect } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { useSearchParams } from "react-router-dom"; diff --git a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPage.tsx b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPage.tsx index 87c2de540f89a..c23b76970a9be 100644 --- a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPage.tsx +++ b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/EditOAuth2AppPage.tsx @@ -1,5 +1,4 @@ -import type { FC } from "react"; -import { useState } from "react"; +import { type FC, useState } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { useNavigate, useParams } from "react-router-dom"; diff --git a/site/src/pages/ExternalAuthPage/ExternalAuthPageView.stories.tsx b/site/src/pages/ExternalAuthPage/ExternalAuthPageView.stories.tsx index acba42a077cd1..676597bdb4617 100644 --- a/site/src/pages/ExternalAuthPage/ExternalAuthPageView.stories.tsx +++ b/site/src/pages/ExternalAuthPage/ExternalAuthPageView.stories.tsx @@ -1,6 +1,7 @@ import type { Meta, StoryFn } from "@storybook/react"; -import type { ExternalAuthPageViewProps } from "./ExternalAuthPageView"; -import ExternalAuthPageView from "./ExternalAuthPageView"; +import ExternalAuthPageView, { + type ExternalAuthPageViewProps, +} from "./ExternalAuthPageView"; export default { title: "pages/ExternalAuthPage", diff --git a/site/src/pages/HealthPage/Content.tsx b/site/src/pages/HealthPage/Content.tsx index 0c2a3d59c5f9b..20e4764151ef5 100644 --- a/site/src/pages/HealthPage/Content.tsx +++ b/site/src/pages/HealthPage/Content.tsx @@ -5,15 +5,21 @@ import CheckCircleOutlined from "@mui/icons-material/CheckCircleOutlined"; import DoNotDisturbOnOutlined from "@mui/icons-material/DoNotDisturbOnOutlined"; import ErrorOutline from "@mui/icons-material/ErrorOutline"; import Link from "@mui/material/Link"; -import type { ComponentProps, HTMLAttributes, ReactElement } from "react"; -import { cloneElement, forwardRef } from "react"; -import type { HealthMessage, HealthSeverity } from "api/typesGenerated"; +import { + cloneElement, + type ComponentProps, + type FC, + forwardRef, + type HTMLAttributes, + type ReactElement, +} from "react"; +import type { HealthCode, HealthSeverity } from "api/typesGenerated"; import { docs } from "utils/docs"; import { healthyColor } from "./healthyColor"; const CONTENT_PADDING = 36; -export const Header = (props: HTMLAttributes) => { +export const Header: FC> = (props) => { return (
) => { ); }; -export const HeaderTitle = (props: HTMLAttributes) => { +export const HeaderTitle: FC> = (props) => { return (

) => { ); }; -export const HealthIcon = ({ - size, - severity, -}: { +interface HealthIconProps { size: number; severity: HealthSeverity; -}) => { +} + +export const HealthIcon: FC = ({ size, severity }) => { const theme = useTheme(); const color = healthyColor(theme, severity); const Icon = severity === "error" ? ErrorOutline : CheckCircleOutlined; @@ -58,7 +63,11 @@ export const HealthIcon = ({ return ; }; -export const HealthyDot = ({ severity }: { severity: HealthSeverity }) => { +interface HealthyDotProps { + severity: HealthSeverity; +} + +export const HealthyDot: FC = ({ severity }) => { const theme = useTheme(); return ( @@ -73,7 +82,7 @@ export const HealthyDot = ({ severity }: { severity: HealthSeverity }) => { ); }; -export const Main = (props: HTMLAttributes) => { +export const Main: FC> = (props) => { return (
) => { ); }; -export const GridData = (props: HTMLAttributes) => { +export const GridData: FC> = (props) => { return (
) => { ); }; -export const GridDataLabel = (props: HTMLAttributes) => { +export const GridDataLabel: FC> = (props) => { const theme = useTheme(); return ( ) => { ); }; -export const GridDataValue = (props: HTMLAttributes) => { +export const GridDataValue: FC> = (props) => { const theme = useTheme(); return ( ) => { ); }; -export const SectionLabel = (props: HTMLAttributes) => { +export const SectionLabel: FC> = (props) => { return (

, "icon" | "value"> & { value: boolean; }; -export const BooleanPill = (props: BooleanPillProps) => { - const { value, children, ...divProps } = props; +export const BooleanPill: FC = ({ + value, + children, + ...divProps +}) => { const theme = useTheme(); const color = value ? theme.palette.success.light : theme.palette.error.light; @@ -204,9 +216,8 @@ export const BooleanPill = (props: BooleanPillProps) => { type LogsProps = { lines: string[] } & HTMLAttributes; -export const Logs = (props: LogsProps) => { +export const Logs: FC = ({ lines, ...divProps }) => { const theme = useTheme(); - const { lines, ...divProps } = props; return (
{ ); }; -export const HealthMessageDocsLink = (msg: HealthMessage) => { +interface HealthMessageDocsLinkProps { + code: HealthCode; +} + +export const HealthMessageDocsLink: FC = ({ + code, +}) => { return ( - Docs for {msg.code} + Docs for {code} ); }; diff --git a/site/src/pages/HealthPage/DERPRegionPage.tsx b/site/src/pages/HealthPage/DERPRegionPage.tsx index fd3ee629f2435..359edefe23d56 100644 --- a/site/src/pages/HealthPage/DERPRegionPage.tsx +++ b/site/src/pages/HealthPage/DERPRegionPage.tsx @@ -1,5 +1,4 @@ -import type { Interpolation, Theme } from "@emotion/react"; -import { useTheme } from "@emotion/react"; +import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import ArrowBackOutlined from "@mui/icons-material/ArrowBackOutlined"; import CodeOutlined from "@mui/icons-material/CodeOutlined"; import TagOutlined from "@mui/icons-material/TagOutlined"; diff --git a/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx b/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx index e54c4e10edd2f..c9a7c75e167af 100644 --- a/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx +++ b/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx @@ -56,10 +56,8 @@ import { UserAvatar } from "components/UserAvatar/UserAvatar"; import { useTemplateLayoutContext } from "pages/TemplatePage/TemplateLayout"; import { getLatencyColor } from "utils/latency"; import { getTemplatePageTitle } from "../utils"; -import type { DateRangeValue } from "./DateRange"; -import { DateRange as DailyPicker } from "./DateRange"; -import type { InsightsInterval } from "./IntervalMenu"; -import { IntervalMenu } from "./IntervalMenu"; +import { DateRange as DailyPicker, type DateRangeValue } from "./DateRange"; +import { IntervalMenu, type InsightsInterval } from "./IntervalMenu"; import { lastWeeks } from "./utils"; import { WeekPicker, numberOfWeeksOptions } from "./WeekPicker"; From 04f8cd6e3a9a3e046d7a10573731de74085954c1 Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Mon, 4 Mar 2024 22:48:00 +0000 Subject: [PATCH 07/12] =?UTF-8?q?=F0=9F=A7=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TemplateScheduleForm.tsx | 18 ++++++++++-------- .../TemplateSchedulePage.test.tsx | 6 ++++-- .../TemplateVariableField.tsx | 5 ++--- .../TemplateVariablesForm.tsx | 3 +-- .../TemplateVersionEditorPage.test.tsx | 3 +-- .../WorkspaceNotifications.tsx | 7 +++++-- .../WorkspaceScheduleControls.tsx | 3 +-- .../WorkspaceParametersForm.tsx | 2 +- .../WorkspaceScheduleForm.test.tsx | 6 ++---- .../WorkspaceSchedulePage.tsx | 3 +-- .../pages/WorkspacesPage/WorkspacesButton.tsx | 6 ++++-- 11 files changed, 32 insertions(+), 30 deletions(-) diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx index 0502b5ba51e98..9dcee449e0153 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx @@ -5,10 +5,8 @@ import Link from "@mui/material/Link"; import MenuItem from "@mui/material/MenuItem"; import Switch from "@mui/material/Switch"; import TextField from "@mui/material/TextField"; -import type { FormikTouched } from "formik"; -import { useFormik } from "formik"; -import { useState, useEffect } from "react"; -import type { ChangeEvent, FC } from "react"; +import { type FormikTouched, useFormik } from "formik"; +import { type ChangeEvent, type FC, useState, useEffect } from "react"; import type { Template, UpdateTemplateMeta } from "api/typesGenerated"; import { FormSection, @@ -20,15 +18,19 @@ import { Stack } from "components/Stack/Stack"; import { TemplateScheduleAutostart } from "modules/templates/TemplateScheduleAutostart/TemplateScheduleAutostart"; import { docs } from "utils/docs"; import { getFormHelpers } from "utils/formUtils"; -import type { TemplateAutostartRequirementDaysValue } from "utils/schedule"; -import { calculateAutostopRequirementDaysValue } from "utils/schedule"; +import { + calculateAutostopRequirementDaysValue, + type TemplateAutostartRequirementDaysValue, +} from "utils/schedule"; import { AutostopRequirementDaysHelperText, AutostopRequirementWeeksHelperText, convertAutostopRequirementDaysValue, } from "./AutostopRequirementHelperText"; -import type { TemplateScheduleFormValues } from "./formHelpers"; -import { getValidationSchema } from "./formHelpers"; +import { + getValidationSchema, + type TemplateScheduleFormValues, +} from "./formHelpers"; import { ScheduleDialog } from "./ScheduleDialog"; import { ActivityBumpHelperText, diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx index 89b728fe41441..b8880f17c4ff4 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.test.tsx @@ -10,8 +10,10 @@ import { renderWithTemplateSettingsLayout, waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; -import type { TemplateScheduleFormValues } from "./formHelpers"; -import { getValidationSchema } from "./formHelpers"; +import { + getValidationSchema, + type TemplateScheduleFormValues, +} from "./formHelpers"; import TemplateSchedulePage from "./TemplateSchedulePage"; const validFormValues: TemplateScheduleFormValues = { diff --git a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariableField.tsx b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariableField.tsx index 6f583af145cbf..a5de3308e497e 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariableField.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariableField.tsx @@ -2,11 +2,10 @@ import FormControlLabel from "@mui/material/FormControlLabel"; import Radio from "@mui/material/Radio"; import RadioGroup from "@mui/material/RadioGroup"; import TextField from "@mui/material/TextField"; -import type { FC } from "react"; -import { useState } from "react"; +import { type FC, useState } from "react"; import type { TemplateVersionVariable } from "api/typesGenerated"; -export const SensitiveVariableHelperText = () => { +export const SensitiveVariableHelperText: FC = () => { return ( This variable is sensitive. The previous value will be used if empty. diff --git a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesForm.tsx b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesForm.tsx index 1ba61ceb9ee22..ce43d1a20e662 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesForm.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesForm.tsx @@ -1,5 +1,4 @@ -import type { FormikContextType, FormikTouched } from "formik"; -import { useFormik } from "formik"; +import { type FormikContextType, type FormikTouched, useFormik } from "formik"; import type { FC } from "react"; import * as Yup from "yup"; import type { diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx index a8b35878f9065..40aea4af27951 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx @@ -1,6 +1,5 @@ import { render, screen, waitFor, within } from "@testing-library/react"; -import type { UserEvent } from "@testing-library/user-event"; -import userEvent from "@testing-library/user-event"; +import userEvent, { type UserEvent } from "@testing-library/user-event"; import { rest } from "msw"; import { QueryClient } from "react-query"; import { RouterProvider, createMemoryRouter } from "react-router-dom"; diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx index 6b59e7e0b4c4b..2034894ae5df5 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx @@ -11,8 +11,11 @@ import { MemoizedInlineMarkdown } from "components/Markdown/Markdown"; import { useDashboard } from "modules/dashboard/useDashboard"; import { TemplateUpdateMessage } from "modules/templates/TemplateUpdateMessage"; import type { WorkspacePermissions } from "../permissions"; -import type { NotificationItem } from "./Notifications"; -import { NotificationActionButton, Notifications } from "./Notifications"; +import { + NotificationActionButton, + Notifications, + type NotificationItem, +} from "./Notifications"; type WorkspaceNotificationsProps = { workspace: Workspace; diff --git a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx index 9d9edf158d8b0..919bbed29780f 100644 --- a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx @@ -7,8 +7,7 @@ import Link, { type LinkProps } from "@mui/material/Link"; import Tooltip from "@mui/material/Tooltip"; import { visuallyHidden } from "@mui/utils"; import dayjs, { type Dayjs } from "dayjs"; -import { forwardRef, useRef, useState } from "react"; -import type { FC, ReactNode } from "react"; +import { type FC, forwardRef, type ReactNode, useRef, useState } from "react"; import { useMutation, useQueryClient } from "react-query"; import { Link as RouterLink } from "react-router-dom"; import { getErrorMessage } from "api/errors"; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx index 7c615b048cd20..c3843c0578b04 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx @@ -15,8 +15,8 @@ import { } from "components/Form/Form"; import { RichParameterInput } from "components/RichParameterInput/RichParameterInput"; import { getFormHelpers } from "utils/formUtils"; -import type { AutofillBuildParameter } from "utils/richParameters"; import { + type AutofillBuildParameter, getInitialRichParameterValues, useValidationSchemaForRichParameters, } from "utils/richParameters"; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx index d251ed5118637..01cda7dcbbdbd 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx @@ -4,15 +4,13 @@ import { defaultSchedule } from "pages/WorkspaceSettingsPage/WorkspaceSchedulePa import { MockTemplate } from "testHelpers/entities"; import { render } from "testHelpers/renderHelpers"; import { timeZones } from "utils/timeZones"; -import type { - WorkspaceScheduleFormValues, - WorkspaceScheduleFormProps, -} from "./WorkspaceScheduleForm"; import { Language, ttlShutdownAt, validationSchema, WorkspaceScheduleForm, + type WorkspaceScheduleFormValues, + type WorkspaceScheduleFormProps, } from "./WorkspaceScheduleForm"; const valid: WorkspaceScheduleFormValues = { diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx index a0e236069068a..2cb2e4cabcb14 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx @@ -1,6 +1,5 @@ import dayjs from "dayjs"; -import type { FC } from "react"; -import { useState } from "react"; +import { type FC, useState } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { useNavigate, useParams } from "react-router-dom"; diff --git a/site/src/pages/WorkspacesPage/WorkspacesButton.tsx b/site/src/pages/WorkspacesPage/WorkspacesButton.tsx index 5690c9271aa8b..e2d7ef54809fb 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesButton.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesButton.tsx @@ -4,8 +4,10 @@ import Button from "@mui/material/Button"; import Link from "@mui/material/Link"; import { type FC, type ReactNode, useState } from "react"; import { type UseQueryResult } from "react-query"; -import type { LinkProps as RouterLinkProps } from "react-router-dom"; -import { Link as RouterLink } from "react-router-dom"; +import { + Link as RouterLink, + type LinkProps as RouterLinkProps, +} from "react-router-dom"; import { type Template } from "api/typesGenerated"; import { Avatar } from "components/Avatar/Avatar"; import { Loader } from "components/Loader/Loader"; From 874ec1a6e8821040ec9b03be0d5e676e73b51183 Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Tue, 5 Mar 2024 21:52:06 +0000 Subject: [PATCH 08/12] update some scripts --- Makefile | 32 ++++++++++++++++++++++---------- offlinedocs/package.json | 11 +++++------ package.json | 3 ++- site/package.json | 7 +++---- 4 files changed, 32 insertions(+), 21 deletions(-) diff --git a/Makefile b/Makefile index 6205bca0e40e9..2dbff53cf426d 100644 --- a/Makefile +++ b/Makefile @@ -382,32 +382,44 @@ install: build/coder_$(VERSION)_$(GOOS)_$(GOARCH)$(GOOS_BIN_EXT) cp "$<" "$$output_file" .PHONY: install -fmt: fmt/prettier fmt/terraform fmt/shfmt fmt/go +BOLD := $(shell tput bold) +GREEN := $(shell tput setaf 2) +RESET := $(shell tput sgr0) + +fmt: fmt/eslint fmt/prettier fmt/terraform fmt/shfmt fmt/go .PHONY: fmt fmt/go: + echo "$(GREEN)==>$(RESET) $(BOLD)fmt/go$(RESET)" # VS Code users should check out # https://github.com/mvdan/gofumpt#visual-studio-code go run mvdan.cc/gofumpt@v0.4.0 -w -l . .PHONY: fmt/go +fmt/eslint: + echo "$(GREEN)==>$(RESET) $(BOLD)fmt/eslint$(RESET)" + cd site + pnpm run lint:fix +.PHONY: fmt/eslint + fmt/prettier: - echo "--- prettier" + echo "$(GREEN)==>$(RESET) $(BOLD)fmt/prettier$(RESET)" cd site # Avoid writing files in CI to reduce file write activity ifdef CI pnpm run format:check else - pnpm run format:write + pnpm run format endif .PHONY: fmt/prettier fmt/terraform: $(wildcard *.tf) + echo "$(GREEN)==>$(RESET) $(BOLD)fmt/terraform$(RESET)" terraform fmt -recursive .PHONY: fmt/terraform fmt/shfmt: $(SHELL_SRC_FILES) - echo "--- shfmt" + echo "$(GREEN)==>$(RESET) $(BOLD)fmt/shfmt$(RESET)" # Only do diff check in CI, errors on diff. ifdef CI shfmt -d $(SHELL_SRC_FILES) @@ -574,7 +586,7 @@ provisionerd/proto/provisionerd.pb.go: provisionerd/proto/provisionerd.proto site/src/api/typesGenerated.ts: $(wildcard scripts/apitypings/*) $(shell find ./codersdk $(FIND_EXCLUSIONS) -type f -name '*.go') go run ./scripts/apitypings/ > $@ - pnpm run format:write:only "$@" + pnpm exec prettier --write "$@" site/e2e/provisionerGenerated.ts: provisionerd/proto/provisionerd.pb.go provisionersdk/proto/provisioner.pb.go cd site @@ -583,7 +595,7 @@ site/e2e/provisionerGenerated.ts: provisionerd/proto/provisionerd.pb.go provisio site/src/theme/icons.json: $(wildcard scripts/gensite/*) $(wildcard site/static/icon/*) go run ./scripts/gensite/ -icons "$@" - pnpm run format:write:only "$@" + pnpm exec prettier --write "$@" examples/examples.gen.json: scripts/examplegen/main.go examples/examples.go $(shell find ./examples/templates) go run ./scripts/examplegen/main.go > examples/examples.gen.json @@ -593,19 +605,19 @@ coderd/rbac/object_gen.go: scripts/rbacgen/main.go coderd/rbac/object.go docs/admin/prometheus.md: scripts/metricsdocgen/main.go scripts/metricsdocgen/metrics go run scripts/metricsdocgen/main.go - pnpm run format:write:only ./docs/admin/prometheus.md + pnpm exec prettier --write ./docs/admin/prometheus.md docs/cli.md: scripts/clidocgen/main.go examples/examples.gen.json $(GO_SRC_FILES) CI=true BASE_PATH="." go run ./scripts/clidocgen - pnpm run format:write:only ./docs/cli.md ./docs/cli/*.md ./docs/manifest.json + pnpm exec prettier --write ./docs/cli.md ./docs/cli/*.md ./docs/manifest.json docs/admin/audit-logs.md: coderd/database/querier.go scripts/auditdocgen/main.go enterprise/audit/table.go coderd/rbac/object_gen.go go run scripts/auditdocgen/main.go - pnpm run format:write:only ./docs/admin/audit-logs.md + pnpm exec prettier --write ./docs/admin/audit-logs.md coderd/apidoc/swagger.json: $(shell find ./scripts/apidocgen $(FIND_EXCLUSIONS) -type f) $(wildcard coderd/*.go) $(wildcard enterprise/coderd/*.go) $(wildcard codersdk/*.go) $(wildcard enterprise/wsproxy/wsproxysdk/*.go) $(DB_GEN_FILES) .swaggo docs/manifest.json coderd/rbac/object_gen.go ./scripts/apidocgen/generate.sh - pnpm run format:write:only ./docs/api ./docs/manifest.json ./coderd/apidoc/swagger.json + pnpm exec prettier --write ./docs/api ./docs/manifest.json ./coderd/apidoc/swagger.json update-golden-files: \ cli/testdata/.gen-golden \ diff --git a/offlinedocs/package.json b/offlinedocs/package.json index 1799d6ce539e3..e5a9b5fd8e31f 100644 --- a/offlinedocs/package.json +++ b/offlinedocs/package.json @@ -4,15 +4,14 @@ "private": true, "scripts": { "dev": "pnpm copy-images && next dev", - "build": "pnpm exec next build", - "start": "pnpm exec next start", + "build": "next build", + "start": "next start", "export": "pnpm copy-images && next build", "copy-images": "sh ./scripts/copyImages.sh", "lint": "pnpm run lint:types", - "lint:fix": "FIX=true pnpm lint", - "lint:types": "pnpm exec tsc --noEmit", - "format:check": "pnpm exec prettier --cache --check './**/*.{css,html,js,json,jsx,md,ts,tsx,yaml,yml}'", - "format:write": "pnpm exec prettier --cache --write './**/*.{css,html,js,json,jsx,md,ts,tsx,yaml,yml}'" + "lint:types": "tsc --noEmit", + "format": "prettier --cache --write './**/*.{css,html,js,json,jsx,md,ts,tsx,yaml,yml}'", + "format:check": "prettier --cache --check './**/*.{css,html,js,json,jsx,md,ts,tsx,yaml,yml}'" }, "dependencies": { "@chakra-ui/react": "2.8.0", diff --git a/package.json b/package.json index 2286328d3902d..e24ef62c3fb33 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,8 @@ "name": "coder", "version": "0.0.0", "scripts": { - "format:write:only": "prettier --cache --write" + "format": "prettier --cache --write", + "storybook": "pnpm run -C site/ storybook" }, "devDependencies": { "prettier": "3.0.0" diff --git a/site/package.json b/site/package.json index 96c0702183ee3..d2b3d72824bc0 100644 --- a/site/package.json +++ b/site/package.json @@ -9,11 +9,10 @@ "check:all": "pnpm format:check && pnpm lint && pnpm test", "chromatic": "chromatic", "dev": "vite", + "format": "prettier --cache --write '../**/*.{css,html,js,json,jsx,md,ts,tsx,yaml,yml}'", "format:check": "prettier --cache --check '../**/*.{css,html,js,json,jsx,md,ts,tsx,yaml,yml}'", - "format:write": "prettier --cache --write '../**/*.{css,html,js,json,jsx,md,ts,tsx,yaml,yml}'", - "format:write:only": "prettier --cache --write", - "lint": "pnpm run lint:types && pnpm exec jest --selectProjects lint", - "lint:fix": "FIX=true pnpm lint", + "lint": "pnpm run lint:types && jest --selectProjects lint", + "lint:fix": "eslint --fix e2e/ src/", "lint:types": "tsc -p .", "playwright:install": "playwright install --with-deps chromium", "playwright:test": "playwright test --config=e2e/playwright.config.ts", From 0c0204166a855138663bbc298967dcd97c833e92 Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Tue, 5 Mar 2024 22:48:29 +0000 Subject: [PATCH 09/12] =?UTF-8?q?=F0=9F=A7=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/e2e/helpers.ts | 3 +-- site/src/api/queries/audits.ts | 4 ++-- site/src/api/queries/templates.ts | 2 +- site/src/api/queries/users.ts | 12 ++++++------ site/src/api/queries/workspaceBuilds.ts | 8 ++++---- site/src/components/Abbr/Abbr.tsx | 2 +- .../components/ActiveUserChart/ActiveUserChart.tsx | 4 ++-- .../src/components/AvatarCard/AvatarCard.stories.tsx | 2 +- site/src/components/AvatarCard/AvatarCard.tsx | 2 +- site/src/components/Badges/Badges.tsx | 2 +- site/src/components/BuildAvatar/BuildAvatar.tsx | 2 +- site/src/components/CodeExample/CodeExample.tsx | 2 +- site/src/components/CopyableValue/CopyableValue.tsx | 2 +- .../Dialogs/ConfirmDialog/ConfirmDialog.tsx | 4 ++-- .../components/Dialogs/DeleteDialog/DeleteDialog.tsx | 2 +- site/src/components/Dialogs/Dialog.tsx | 4 ++-- .../DropdownArrow/DropdownArrow.stories.tsx | 2 +- site/src/components/DropdownArrow/DropdownArrow.tsx | 4 ++-- site/src/components/Expander/Expander.tsx | 4 ++-- site/src/components/Filter/UserFilter.tsx | 4 ++-- site/src/components/Form/Form.tsx | 2 +- site/src/components/FormFooter/FormFooter.tsx | 2 +- .../components/FullPageForm/FullPageForm.stories.tsx | 2 +- site/src/components/FullPageForm/FullPageForm.tsx | 2 +- .../FullPageForm/FullPageHorizontalForm.tsx | 2 +- site/src/components/FullPageLayout/Sidebar.tsx | 2 +- .../components/GlobalSnackbar/EnterpriseSnackbar.tsx | 4 ++-- .../src/components/GlobalSnackbar/GlobalSnackbar.tsx | 2 +- site/src/components/GroupAvatar/GroupAvatar.tsx | 2 +- site/src/components/HelpTooltip/HelpTooltip.tsx | 2 +- site/src/components/IconField/EmojiPicker.tsx | 2 +- site/src/components/InfoTooltip/InfoTooltip.tsx | 2 +- site/src/components/LastSeen/LastSeen.tsx | 2 +- site/src/components/Latency/Latency.tsx | 2 +- site/src/components/Loader/Loader.tsx | 2 +- site/src/components/Margins/Margins.tsx | 2 +- site/src/components/Markdown/Markdown.tsx | 2 +- site/src/components/OverflowY/OverflowY.tsx | 2 +- .../components/PageHeader/FullWidthPageHeader.tsx | 2 +- site/src/components/PageHeader/PageHeader.tsx | 2 +- site/src/components/PaginationWidget/PageButtons.tsx | 2 +- .../PaginationWidget/PaginationContainer.tsx | 4 ++-- .../components/PaginationWidget/PaginationHeader.tsx | 2 +- .../PaginationWidget/PaginationWidgetBase.tsx | 2 +- site/src/components/Paywall/Paywall.tsx | 4 ++-- site/src/components/Pill/Pill.tsx | 2 +- .../components/RichParameterInput/MultiTextField.tsx | 4 ++-- .../RichParameterInput/RichParameterInput.tsx | 2 +- site/src/components/Sidebar/Sidebar.tsx | 4 ++-- site/src/components/SignInLayout/SignInLayout.tsx | 4 ++-- .../SyntaxHighlighter/SyntaxHighlighter.tsx | 2 +- site/src/components/TableEmpty/TableEmpty.tsx | 2 +- site/src/components/TableToolbar/TableToolbar.tsx | 2 +- site/src/components/Timeline/TimelineDateRow.tsx | 2 +- site/src/components/UserAvatar/UserAvatar.tsx | 2 +- site/src/components/Welcome/Welcome.tsx | 4 ++-- site/src/contexts/ProxyContext.test.tsx | 2 +- site/src/contexts/ProxyContext.tsx | 2 +- site/src/contexts/auth/RequirePermission.tsx | 2 +- site/src/hooks/events.ts | 2 +- site/src/hooks/useClickable.test.tsx | 10 +++++----- site/src/hooks/useClickableTableRow.ts | 4 ++-- .../dashboard/DeploymentBanner/DeploymentBanner.tsx | 2 +- .../dashboard/LicenseBanner/LicenseBanner.tsx | 2 +- site/src/modules/dashboard/Navbar/Navbar.tsx | 2 +- .../dashboard/Navbar/UserDropdown/UserDropdown.tsx | 2 +- .../dashboard/ServiceBanner/ServiceBanner.tsx | 2 +- .../dashboard/ServiceBanner/ServiceBannerView.tsx | 2 +- site/src/modules/dashboard/useUpdateCheck.test.tsx | 2 +- site/src/modules/resources/AgentLatency.tsx | 2 +- site/src/modules/resources/AgentMetadata.tsx | 2 +- site/src/modules/resources/AgentOutdatedTooltip.tsx | 2 +- site/src/modules/resources/AgentRow.tsx | 2 +- site/src/modules/resources/AgentRowPreview.tsx | 4 ++-- site/src/modules/resources/AgentStatus.tsx | 4 ++-- site/src/modules/resources/AgentVersion.tsx | 2 +- site/src/modules/resources/AppLink/AppPreview.tsx | 2 +- site/src/modules/resources/AppLink/BaseIcon.tsx | 2 +- site/src/modules/resources/PortForwardButton.tsx | 2 +- site/src/modules/resources/ResourceCard.tsx | 2 +- site/src/modules/resources/SSHButton/SSHButton.tsx | 4 ++-- .../modules/resources/TerminalLink/TerminalLink.tsx | 2 +- site/src/modules/resources/XRayScanAlert.tsx | 4 ++-- .../TemplateExampleCard/TemplateExampleCard.tsx | 4 ++-- .../TemplateResourcesTable.tsx | 2 +- .../TemplateScheduleAutostart.tsx | 2 +- site/src/modules/templates/TemplateUpdateMessage.tsx | 4 ++-- .../workspaces/WorkspaceBuild/WorkspaceBuildData.tsx | 3 +-- .../modules/workspaces/WorkspaceBuildLogs/Logs.tsx | 2 +- .../WorkspaceOutdatedTooltip.tsx | 2 +- .../WorkspaceStatusBadge/DormantDeletionText.tsx | 2 +- .../WorkspaceStatusBadge/WorkspaceStatusBadge.tsx | 2 +- 92 files changed, 125 insertions(+), 127 deletions(-) diff --git a/site/e2e/helpers.ts b/site/e2e/helpers.ts index a1c0208302ddb..d42ab90fb58b9 100644 --- a/site/e2e/helpers.ts +++ b/site/e2e/helpers.ts @@ -1,5 +1,4 @@ -import type { Page } from "@playwright/test"; -import { expect } from "@playwright/test"; +import { expect, type Page } from "@playwright/test"; import axios from "axios"; import { type ChildProcess, exec, spawn } from "child_process"; import { randomUUID } from "crypto"; diff --git a/site/src/api/queries/audits.ts b/site/src/api/queries/audits.ts index b469e7749b292..6430767480714 100644 --- a/site/src/api/queries/audits.ts +++ b/site/src/api/queries/audits.ts @@ -1,7 +1,7 @@ import { getAuditLogs } from "api/api"; -import { type AuditLogResponse } from "api/typesGenerated"; +import type { AuditLogResponse } from "api/typesGenerated"; import { useFilterParamsKey } from "components/Filter/filter"; -import { type UsePaginatedQueryOptions } from "hooks/usePaginatedQuery"; +import type { UsePaginatedQueryOptions } from "hooks/usePaginatedQuery"; export function paginatedAudits( searchParams: URLSearchParams, diff --git a/site/src/api/queries/templates.ts b/site/src/api/queries/templates.ts index 776dee1f4b7c5..003ade05adaec 100644 --- a/site/src/api/queries/templates.ts +++ b/site/src/api/queries/templates.ts @@ -6,8 +6,8 @@ import type { ProvisionerJob, ProvisionerJobStatus, UsersRequest, - TemplateRole, Template, + TemplateRole, TemplateVersion, } from "api/typesGenerated"; import { delay } from "utils/delay"; diff --git a/site/src/api/queries/users.ts b/site/src/api/queries/users.ts index 906472d068385..3aa0b009a2527 100644 --- a/site/src/api/queries/users.ts +++ b/site/src/api/queries/users.ts @@ -1,8 +1,8 @@ -import { - type UseMutationOptions, - type QueryClient, - type QueryKey, - type UseQueryOptions, +import type { + QueryClient, + QueryKey, + UseMutationOptions, + UseQueryOptions, } from "react-query"; import * as API from "api/api"; import type { @@ -15,7 +15,7 @@ import type { User, GenerateAPIKeyResponse, } from "api/typesGenerated"; -import { type UsePaginatedQueryOptions } from "hooks/usePaginatedQuery"; +import type { UsePaginatedQueryOptions } from "hooks/usePaginatedQuery"; import { prepareQuery } from "utils/filters"; import { getMetadataAsJSON } from "utils/metadata"; import { getAuthorizationKey } from "./authCheck"; diff --git a/site/src/api/queries/workspaceBuilds.ts b/site/src/api/queries/workspaceBuilds.ts index 6e5141bd7678f..8960068b6169c 100644 --- a/site/src/api/queries/workspaceBuilds.ts +++ b/site/src/api/queries/workspaceBuilds.ts @@ -1,9 +1,9 @@ import type { QueryOptions, UseInfiniteQueryOptions } from "react-query"; import * as API from "api/api"; -import { - type WorkspaceBuild, - type WorkspaceBuildParameter, - type WorkspaceBuildsRequest, +import type { + WorkspaceBuild, + WorkspaceBuildParameter, + WorkspaceBuildsRequest, } from "api/typesGenerated"; export function workspaceBuildParametersKey(workspaceBuildId: string) { diff --git a/site/src/components/Abbr/Abbr.tsx b/site/src/components/Abbr/Abbr.tsx index 9fba0618a57cf..d58da3539f110 100644 --- a/site/src/components/Abbr/Abbr.tsx +++ b/site/src/components/Abbr/Abbr.tsx @@ -1,4 +1,4 @@ -import { type FC, type HTMLAttributes } from "react"; +import type { FC, HTMLAttributes } from "react"; export type Pronunciation = "shorthand" | "acronym" | "initialism"; diff --git a/site/src/components/ActiveUserChart/ActiveUserChart.tsx b/site/src/components/ActiveUserChart/ActiveUserChart.tsx index 4b010a70879fe..c66f882bf5c43 100644 --- a/site/src/components/ActiveUserChart/ActiveUserChart.tsx +++ b/site/src/components/ActiveUserChart/ActiveUserChart.tsx @@ -1,3 +1,4 @@ +import "chartjs-adapter-date-fns"; import { useTheme } from "@emotion/react"; import { CategoryScale, @@ -13,10 +14,9 @@ import { Tooltip, PointElement, } from "chart.js"; -import "chartjs-adapter-date-fns"; import annotationPlugin from "chartjs-plugin-annotation"; import dayjs from "dayjs"; -import { type FC } from "react"; +import type { FC } from "react"; import { Line } from "react-chartjs-2"; import { HelpTooltip, diff --git a/site/src/components/AvatarCard/AvatarCard.stories.tsx b/site/src/components/AvatarCard/AvatarCard.stories.tsx index 9f0204a9c844c..f1247a1bcc9f0 100644 --- a/site/src/components/AvatarCard/AvatarCard.stories.tsx +++ b/site/src/components/AvatarCard/AvatarCard.stories.tsx @@ -1,4 +1,4 @@ -import { type Meta, type StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; import { AvatarCard } from "./AvatarCard"; const meta: Meta = { diff --git a/site/src/components/AvatarCard/AvatarCard.tsx b/site/src/components/AvatarCard/AvatarCard.tsx index fd5946fcc1bc2..0f3a880443f36 100644 --- a/site/src/components/AvatarCard/AvatarCard.tsx +++ b/site/src/components/AvatarCard/AvatarCard.tsx @@ -1,5 +1,5 @@ import { type CSSObject, useTheme } from "@emotion/react"; -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; import { Avatar } from "components/Avatar/Avatar"; type AvatarCardProps = { diff --git a/site/src/components/Badges/Badges.tsx b/site/src/components/Badges/Badges.tsx index b6a1550e43c33..152e7735fd27f 100644 --- a/site/src/components/Badges/Badges.tsx +++ b/site/src/components/Badges/Badges.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import Tooltip from "@mui/material/Tooltip"; import { type FC, diff --git a/site/src/components/BuildAvatar/BuildAvatar.tsx b/site/src/components/BuildAvatar/BuildAvatar.tsx index c3d84b6304ded..4ac90fe669546 100644 --- a/site/src/components/BuildAvatar/BuildAvatar.tsx +++ b/site/src/components/BuildAvatar/BuildAvatar.tsx @@ -1,7 +1,7 @@ import { css, cx } from "@emotion/css"; import { useTheme } from "@emotion/react"; import Badge from "@mui/material/Badge"; -import { type FC } from "react"; +import type { FC } from "react"; import type { WorkspaceBuild } from "api/typesGenerated"; import { Avatar, type AvatarProps } from "components/Avatar/Avatar"; import { BuildIcon } from "components/BuildIcon/BuildIcon"; diff --git a/site/src/components/CodeExample/CodeExample.tsx b/site/src/components/CodeExample/CodeExample.tsx index a03e9dd24e801..6a01a18eea41c 100644 --- a/site/src/components/CodeExample/CodeExample.tsx +++ b/site/src/components/CodeExample/CodeExample.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import { visuallyHidden } from "@mui/utils"; import { type FC, type KeyboardEvent, type MouseEvent, useRef } from "react"; import { MONOSPACE_FONT_FAMILY } from "theme/constants"; diff --git a/site/src/components/CopyableValue/CopyableValue.tsx b/site/src/components/CopyableValue/CopyableValue.tsx index 8c1373269921a..8ec6bb25bc014 100644 --- a/site/src/components/CopyableValue/CopyableValue.tsx +++ b/site/src/components/CopyableValue/CopyableValue.tsx @@ -1,5 +1,5 @@ import Tooltip, { type TooltipProps } from "@mui/material/Tooltip"; -import { type FC, type HTMLAttributes } from "react"; +import type { FC, HTMLAttributes } from "react"; import { useClickable } from "hooks/useClickable"; import { useClipboard } from "hooks/useClipboard"; diff --git a/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.tsx b/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.tsx index 6944917f0c1b9..8c2d4c4d5589f 100644 --- a/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.tsx +++ b/site/src/components/Dialogs/ConfirmDialog/ConfirmDialog.tsx @@ -1,6 +1,6 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import DialogActions from "@mui/material/DialogActions"; -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; import { Dialog, DialogActionButtons, diff --git a/site/src/components/Dialogs/DeleteDialog/DeleteDialog.tsx b/site/src/components/Dialogs/DeleteDialog/DeleteDialog.tsx index a459d32caf7ae..6210cbe14fab9 100644 --- a/site/src/components/Dialogs/DeleteDialog/DeleteDialog.tsx +++ b/site/src/components/Dialogs/DeleteDialog/DeleteDialog.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import TextField from "@mui/material/TextField"; import { type FC, type FormEvent, useId, useState } from "react"; import { Stack } from "../../Stack/Stack"; diff --git a/site/src/components/Dialogs/Dialog.tsx b/site/src/components/Dialogs/Dialog.tsx index f4f90530cc3b5..a0abeb74fb0b8 100644 --- a/site/src/components/Dialogs/Dialog.tsx +++ b/site/src/components/Dialogs/Dialog.tsx @@ -1,9 +1,9 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import LoadingButton, { type LoadingButtonProps } from "@mui/lab/LoadingButton"; import MuiDialog, { type DialogProps as MuiDialogProps, } from "@mui/material/Dialog"; -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; import type { ConfirmDialogType } from "./types"; export interface DialogActionButtonsProps { diff --git a/site/src/components/DropdownArrow/DropdownArrow.stories.tsx b/site/src/components/DropdownArrow/DropdownArrow.stories.tsx index b7ef74d0f1304..edf2b209a6273 100644 --- a/site/src/components/DropdownArrow/DropdownArrow.stories.tsx +++ b/site/src/components/DropdownArrow/DropdownArrow.stories.tsx @@ -1,4 +1,4 @@ -import { type Meta, type StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from "@storybook/react"; import { chromatic } from "testHelpers/chromatic"; import { DropdownArrow } from "./DropdownArrow"; diff --git a/site/src/components/DropdownArrow/DropdownArrow.tsx b/site/src/components/DropdownArrow/DropdownArrow.tsx index 34e78417ea70e..e0d79d6b12305 100644 --- a/site/src/components/DropdownArrow/DropdownArrow.tsx +++ b/site/src/components/DropdownArrow/DropdownArrow.tsx @@ -1,7 +1,7 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import KeyboardArrowDown from "@mui/icons-material/KeyboardArrowDown"; import KeyboardArrowUp from "@mui/icons-material/KeyboardArrowUp"; -import { type FC } from "react"; +import type { FC } from "react"; interface ArrowProps { margin?: boolean; diff --git a/site/src/components/Expander/Expander.tsx b/site/src/components/Expander/Expander.tsx index 6d3ff6160ce02..4f6029cfc4221 100644 --- a/site/src/components/Expander/Expander.tsx +++ b/site/src/components/Expander/Expander.tsx @@ -1,7 +1,7 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import Collapse from "@mui/material/Collapse"; import Link from "@mui/material/Link"; -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; import { DropdownArrow } from "components/DropdownArrow/DropdownArrow"; export interface ExpanderProps { diff --git a/site/src/components/Filter/UserFilter.tsx b/site/src/components/Filter/UserFilter.tsx index 4e1b149a6a90a..eae40953c199e 100644 --- a/site/src/components/Filter/UserFilter.tsx +++ b/site/src/components/Filter/UserFilter.tsx @@ -1,9 +1,9 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { getUsers } from "api/api"; import { useMe } from "contexts/auth/useMe"; import { UserAvatar } from "../UserAvatar/UserAvatar"; import { FilterSearchMenu, OptionItem } from "./filter"; -import { useFilterMenu, type UseFilterMenuOptions } from "./menu"; +import { type UseFilterMenuOptions, useFilterMenu } from "./menu"; import type { BaseOption } from "./options"; export type UserOption = BaseOption & { diff --git a/site/src/components/Form/Form.tsx b/site/src/components/Form/Form.tsx index 44b816e9e975b..2dbbf58dd9806 100644 --- a/site/src/components/Form/Form.tsx +++ b/site/src/components/Form/Form.tsx @@ -1,7 +1,7 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import { - createContext, type ComponentProps, + createContext, type FC, forwardRef, type HTMLProps, diff --git a/site/src/components/FormFooter/FormFooter.tsx b/site/src/components/FormFooter/FormFooter.tsx index cdb9cbb057746..4c672cf8d8ee9 100644 --- a/site/src/components/FormFooter/FormFooter.tsx +++ b/site/src/components/FormFooter/FormFooter.tsx @@ -1,7 +1,7 @@ import type { Interpolation, Theme } from "@emotion/react"; import LoadingButton from "@mui/lab/LoadingButton"; import Button from "@mui/material/Button"; -import { type FC } from "react"; +import type { FC } from "react"; export const Language = { cancelLabel: "Cancel", diff --git a/site/src/components/FullPageForm/FullPageForm.stories.tsx b/site/src/components/FullPageForm/FullPageForm.stories.tsx index d0355ff205b79..09dc7d5bb3e75 100644 --- a/site/src/components/FullPageForm/FullPageForm.stories.tsx +++ b/site/src/components/FullPageForm/FullPageForm.stories.tsx @@ -1,7 +1,7 @@ import TextField from "@mui/material/TextField"; import { action } from "@storybook/addon-actions"; import type { Meta, StoryObj } from "@storybook/react"; -import { type FC } from "react"; +import type { FC } from "react"; import { FormFooter } from "../FormFooter/FormFooter"; import { Stack } from "../Stack/Stack"; import { FullPageForm, type FullPageFormProps } from "./FullPageForm"; diff --git a/site/src/components/FullPageForm/FullPageForm.tsx b/site/src/components/FullPageForm/FullPageForm.tsx index 57e51c32a21a7..5ccf9a291a11c 100644 --- a/site/src/components/FullPageForm/FullPageForm.tsx +++ b/site/src/components/FullPageForm/FullPageForm.tsx @@ -1,4 +1,4 @@ -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; import { Margins } from "components/Margins/Margins"; import { PageHeader, diff --git a/site/src/components/FullPageForm/FullPageHorizontalForm.tsx b/site/src/components/FullPageForm/FullPageHorizontalForm.tsx index 9bf7c042b4045..adbf0d4616a01 100644 --- a/site/src/components/FullPageForm/FullPageHorizontalForm.tsx +++ b/site/src/components/FullPageForm/FullPageHorizontalForm.tsx @@ -1,5 +1,5 @@ import Button from "@mui/material/Button"; -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; import { Margins } from "components/Margins/Margins"; import { PageHeader, diff --git a/site/src/components/FullPageLayout/Sidebar.tsx b/site/src/components/FullPageLayout/Sidebar.tsx index 93f782cd20770..17db7f081829d 100644 --- a/site/src/components/FullPageLayout/Sidebar.tsx +++ b/site/src/components/FullPageLayout/Sidebar.tsx @@ -1,5 +1,5 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; -import { type ComponentProps, type FC, type HTMLAttributes } from "react"; +import type { ComponentProps, FC, HTMLAttributes } from "react"; import { Link, type LinkProps } from "react-router-dom"; import { TopbarIconButton } from "./Topbar"; diff --git a/site/src/components/GlobalSnackbar/EnterpriseSnackbar.tsx b/site/src/components/GlobalSnackbar/EnterpriseSnackbar.tsx index bc39eca1d4f4f..350e031ba13b1 100644 --- a/site/src/components/GlobalSnackbar/EnterpriseSnackbar.tsx +++ b/site/src/components/GlobalSnackbar/EnterpriseSnackbar.tsx @@ -1,10 +1,10 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import CloseIcon from "@mui/icons-material/Close"; import IconButton from "@mui/material/IconButton"; import Snackbar, { type SnackbarProps as MuiSnackbarProps, } from "@mui/material/Snackbar"; -import { type FC } from "react"; +import type { FC } from "react"; import { type ClassName, useClassName } from "hooks/useClassName"; type EnterpriseSnackbarVariant = "error" | "info" | "success"; diff --git a/site/src/components/GlobalSnackbar/GlobalSnackbar.tsx b/site/src/components/GlobalSnackbar/GlobalSnackbar.tsx index ba259b1cdf15a..f300ef5fc451a 100644 --- a/site/src/components/GlobalSnackbar/GlobalSnackbar.tsx +++ b/site/src/components/GlobalSnackbar/GlobalSnackbar.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import { type FC, useState } from "react"; import { useCustomEvent } from "hooks/events"; import { ErrorIcon } from "../Icons/ErrorIcon"; diff --git a/site/src/components/GroupAvatar/GroupAvatar.tsx b/site/src/components/GroupAvatar/GroupAvatar.tsx index 4ef362517181a..8538ccc9147cf 100644 --- a/site/src/components/GroupAvatar/GroupAvatar.tsx +++ b/site/src/components/GroupAvatar/GroupAvatar.tsx @@ -1,6 +1,6 @@ import Group from "@mui/icons-material/Group"; import Badge from "@mui/material/Badge"; -import { type FC } from "react"; +import type { FC } from "react"; import { Avatar } from "components/Avatar/Avatar"; import { type ClassName, useClassName } from "hooks/useClassName"; diff --git a/site/src/components/HelpTooltip/HelpTooltip.tsx b/site/src/components/HelpTooltip/HelpTooltip.tsx index 153d2792a3078..31e2fe1fb260d 100644 --- a/site/src/components/HelpTooltip/HelpTooltip.tsx +++ b/site/src/components/HelpTooltip/HelpTooltip.tsx @@ -1,4 +1,4 @@ -import { type CSSObject } from "@emotion/css"; +import type { CSSObject } from "@emotion/css"; import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; import HelpIcon from "@mui/icons-material/HelpOutline"; import OpenInNewIcon from "@mui/icons-material/OpenInNew"; diff --git a/site/src/components/IconField/EmojiPicker.tsx b/site/src/components/IconField/EmojiPicker.tsx index f8d2ae069509f..5a03740b69c14 100644 --- a/site/src/components/IconField/EmojiPicker.tsx +++ b/site/src/components/IconField/EmojiPicker.tsx @@ -1,6 +1,6 @@ import data from "@emoji-mart/data/sets/14/twitter.json"; import EmojiMart, { type EmojiMartProps } from "@emoji-mart/react"; -import { type FC } from "react"; +import type { FC } from "react"; import icons from "theme/icons.json"; const custom = [ diff --git a/site/src/components/InfoTooltip/InfoTooltip.tsx b/site/src/components/InfoTooltip/InfoTooltip.tsx index df2001dab58fb..b0143b18a203f 100644 --- a/site/src/components/InfoTooltip/InfoTooltip.tsx +++ b/site/src/components/InfoTooltip/InfoTooltip.tsx @@ -1,5 +1,5 @@ import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; import { HelpTooltip, HelpTooltipContent, diff --git a/site/src/components/LastSeen/LastSeen.tsx b/site/src/components/LastSeen/LastSeen.tsx index 72e8e310a979e..69b1a14dda401 100644 --- a/site/src/components/LastSeen/LastSeen.tsx +++ b/site/src/components/LastSeen/LastSeen.tsx @@ -1,7 +1,7 @@ import { useTheme } from "@emotion/react"; import dayjs from "dayjs"; import relativeTime from "dayjs/plugin/relativeTime"; -import { type FC, type HTMLAttributes } from "react"; +import type { FC, HTMLAttributes } from "react"; dayjs.extend(relativeTime); diff --git a/site/src/components/Latency/Latency.tsx b/site/src/components/Latency/Latency.tsx index 90cab0acdb8f6..6553d8af69765 100644 --- a/site/src/components/Latency/Latency.tsx +++ b/site/src/components/Latency/Latency.tsx @@ -3,7 +3,7 @@ import HelpOutline from "@mui/icons-material/HelpOutline"; import CircularProgress from "@mui/material/CircularProgress"; import Tooltip from "@mui/material/Tooltip"; import { visuallyHidden } from "@mui/utils"; -import { type FC } from "react"; +import type { FC } from "react"; import { Abbr } from "components/Abbr/Abbr"; import { getLatencyColor } from "utils/latency"; diff --git a/site/src/components/Loader/Loader.tsx b/site/src/components/Loader/Loader.tsx index 5b7142bef4ae9..ef0072a5b3d68 100644 --- a/site/src/components/Loader/Loader.tsx +++ b/site/src/components/Loader/Loader.tsx @@ -1,5 +1,5 @@ import CircularProgress from "@mui/material/CircularProgress"; -import { type FC, type HTMLAttributes } from "react"; +import type { FC, HTMLAttributes } from "react"; interface LoaderProps extends HTMLAttributes { size?: number; diff --git a/site/src/components/Margins/Margins.tsx b/site/src/components/Margins/Margins.tsx index 04304197a1bbe..9c03d2626174d 100644 --- a/site/src/components/Margins/Margins.tsx +++ b/site/src/components/Margins/Margins.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { containerWidth, containerWidthMedium, diff --git a/site/src/components/Markdown/Markdown.tsx b/site/src/components/Markdown/Markdown.tsx index f8a7178dd3f81..d06d2eca7a653 100644 --- a/site/src/components/Markdown/Markdown.tsx +++ b/site/src/components/Markdown/Markdown.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import Link from "@mui/material/Link"; import Table from "@mui/material/Table"; import TableBody from "@mui/material/TableBody"; diff --git a/site/src/components/OverflowY/OverflowY.tsx b/site/src/components/OverflowY/OverflowY.tsx index fe055df8285b3..bd659540e125c 100644 --- a/site/src/components/OverflowY/OverflowY.tsx +++ b/site/src/components/OverflowY/OverflowY.tsx @@ -1,7 +1,7 @@ /** * @file Provides reusable vertical overflow behavior. */ -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; type OverflowYProps = { children?: ReactNode; diff --git a/site/src/components/PageHeader/FullWidthPageHeader.tsx b/site/src/components/PageHeader/FullWidthPageHeader.tsx index 117e988a815dc..2dd041642d3c5 100644 --- a/site/src/components/PageHeader/FullWidthPageHeader.tsx +++ b/site/src/components/PageHeader/FullWidthPageHeader.tsx @@ -1,5 +1,5 @@ import { type CSSObject, useTheme } from "@emotion/react"; -import { type FC, type PropsWithChildren, type ReactNode } from "react"; +import type { FC, PropsWithChildren, ReactNode } from "react"; interface FullWidthPageHeaderProps { children?: ReactNode; diff --git a/site/src/components/PageHeader/PageHeader.tsx b/site/src/components/PageHeader/PageHeader.tsx index 9c81e3dc4dfcd..036a209d03c6c 100644 --- a/site/src/components/PageHeader/PageHeader.tsx +++ b/site/src/components/PageHeader/PageHeader.tsx @@ -1,4 +1,4 @@ -import { type FC, type PropsWithChildren, type ReactNode } from "react"; +import type { FC, PropsWithChildren, ReactNode } from "react"; import { Stack } from "../Stack/Stack"; export interface PageHeaderProps { diff --git a/site/src/components/PaginationWidget/PageButtons.tsx b/site/src/components/PaginationWidget/PageButtons.tsx index 47e4d31f6bb53..0d66c585cd2b8 100644 --- a/site/src/components/PaginationWidget/PageButtons.tsx +++ b/site/src/components/PaginationWidget/PageButtons.tsx @@ -1,6 +1,6 @@ import { useTheme } from "@emotion/react"; import Button from "@mui/material/Button"; -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; type NumberedPageButtonProps = { pageNumber: number; diff --git a/site/src/components/PaginationWidget/PaginationContainer.tsx b/site/src/components/PaginationWidget/PaginationContainer.tsx index 8b8b15f689807..79ef148d03c50 100644 --- a/site/src/components/PaginationWidget/PaginationContainer.tsx +++ b/site/src/components/PaginationWidget/PaginationContainer.tsx @@ -1,5 +1,5 @@ -import { type FC, type HTMLAttributes } from "react"; -import { type PaginationResultInfo } from "hooks/usePaginatedQuery"; +import type { FC, HTMLAttributes } from "react"; +import type { PaginationResultInfo } from "hooks/usePaginatedQuery"; import { PaginationHeader } from "./PaginationHeader"; import { PaginationWidgetBase } from "./PaginationWidgetBase"; diff --git a/site/src/components/PaginationWidget/PaginationHeader.tsx b/site/src/components/PaginationWidget/PaginationHeader.tsx index 114fca3510841..0f0906d83c862 100644 --- a/site/src/components/PaginationWidget/PaginationHeader.tsx +++ b/site/src/components/PaginationWidget/PaginationHeader.tsx @@ -1,6 +1,6 @@ import { useTheme } from "@emotion/react"; import Skeleton from "@mui/material/Skeleton"; -import { type FC } from "react"; +import type { FC } from "react"; type PaginationHeaderProps = { paginationUnitLabel: string; diff --git a/site/src/components/PaginationWidget/PaginationWidgetBase.tsx b/site/src/components/PaginationWidget/PaginationWidgetBase.tsx index 1dc2745c244e1..b3edcc26e1450 100644 --- a/site/src/components/PaginationWidget/PaginationWidgetBase.tsx +++ b/site/src/components/PaginationWidget/PaginationWidgetBase.tsx @@ -2,7 +2,7 @@ import { useTheme } from "@emotion/react"; import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; import useMediaQuery from "@mui/material/useMediaQuery"; -import { type FC } from "react"; +import type { FC } from "react"; import { PlaceholderPageButton, NumberedPageButton } from "./PageButtons"; import { PaginationNavButton } from "./PaginationNavButton"; import { buildPagedList } from "./utils"; diff --git a/site/src/components/Paywall/Paywall.tsx b/site/src/components/Paywall/Paywall.tsx index 193b2a5466170..30d1754bddd8b 100644 --- a/site/src/components/Paywall/Paywall.tsx +++ b/site/src/components/Paywall/Paywall.tsx @@ -1,8 +1,8 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import TaskAltIcon from "@mui/icons-material/TaskAlt"; import Button from "@mui/material/Button"; import Link from "@mui/material/Link"; -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; import { EnterpriseBadge } from "components/Badges/Badges"; import { Stack } from "components/Stack/Stack"; import { docs } from "utils/docs"; diff --git a/site/src/components/Pill/Pill.tsx b/site/src/components/Pill/Pill.tsx index 467318185045b..c281e8463cdfb 100644 --- a/site/src/components/Pill/Pill.tsx +++ b/site/src/components/Pill/Pill.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import CircularProgress, { type CircularProgressProps, } from "@mui/material/CircularProgress"; diff --git a/site/src/components/RichParameterInput/MultiTextField.tsx b/site/src/components/RichParameterInput/MultiTextField.tsx index 7adcda6fc1e86..5415a71b63ce6 100644 --- a/site/src/components/RichParameterInput/MultiTextField.tsx +++ b/site/src/components/RichParameterInput/MultiTextField.tsx @@ -1,7 +1,7 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import Chip from "@mui/material/Chip"; import FormHelperText from "@mui/material/FormHelperText"; -import { type FC } from "react"; +import type { FC } from "react"; export type MultiTextFieldProps = { label: string; diff --git a/site/src/components/RichParameterInput/RichParameterInput.tsx b/site/src/components/RichParameterInput/RichParameterInput.tsx index 117ff85ec1b80..d7d7a4f2e59cf 100644 --- a/site/src/components/RichParameterInput/RichParameterInput.tsx +++ b/site/src/components/RichParameterInput/RichParameterInput.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import ErrorOutline from "@mui/icons-material/ErrorOutline"; import Button from "@mui/material/Button"; import FormControlLabel from "@mui/material/FormControlLabel"; diff --git a/site/src/components/Sidebar/Sidebar.tsx b/site/src/components/Sidebar/Sidebar.tsx index 396bec9a48b97..a89170cffd4d4 100644 --- a/site/src/components/Sidebar/Sidebar.tsx +++ b/site/src/components/Sidebar/Sidebar.tsx @@ -1,6 +1,6 @@ import { cx } from "@emotion/css"; -import { type CSSObject, type Interpolation, type Theme } from "@emotion/react"; -import { type ElementType, type FC, type ReactNode } from "react"; +import type { CSSObject, Interpolation, Theme } from "@emotion/react"; +import type { ElementType, FC, ReactNode } from "react"; import { Link, NavLink } from "react-router-dom"; import { Stack } from "components/Stack/Stack"; import { type ClassName, useClassName } from "hooks/useClassName"; diff --git a/site/src/components/SignInLayout/SignInLayout.tsx b/site/src/components/SignInLayout/SignInLayout.tsx index e033a2024a06c..c17c4c7d75007 100644 --- a/site/src/components/SignInLayout/SignInLayout.tsx +++ b/site/src/components/SignInLayout/SignInLayout.tsx @@ -1,5 +1,5 @@ -import { type Interpolation, type Theme } from "@emotion/react"; -import { type FC, type PropsWithChildren } from "react"; +import type { Interpolation, Theme } from "@emotion/react"; +import type { FC, PropsWithChildren } from "react"; export const SignInLayout: FC = ({ children }) => { return ( diff --git a/site/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx b/site/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx index 63192398911d0..5a13fe0b6dad5 100644 --- a/site/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx +++ b/site/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx @@ -1,7 +1,7 @@ import { useTheme } from "@emotion/react"; import Editor, { DiffEditor, loader } from "@monaco-editor/react"; import * as monaco from "monaco-editor"; -import { type ComponentProps, type FC } from "react"; +import type { ComponentProps, FC } from "react"; import { useCoderTheme } from "./coderTheme"; loader.config({ monaco }); diff --git a/site/src/components/TableEmpty/TableEmpty.tsx b/site/src/components/TableEmpty/TableEmpty.tsx index be7d0917d0b81..b314840fa9ed5 100644 --- a/site/src/components/TableEmpty/TableEmpty.tsx +++ b/site/src/components/TableEmpty/TableEmpty.tsx @@ -1,6 +1,6 @@ import TableCell from "@mui/material/TableCell"; import TableRow from "@mui/material/TableRow"; -import { type FC } from "react"; +import type { FC } from "react"; import { EmptyState, type EmptyStateProps, diff --git a/site/src/components/TableToolbar/TableToolbar.tsx b/site/src/components/TableToolbar/TableToolbar.tsx index bee49cac87fd7..73c95f93c3d94 100644 --- a/site/src/components/TableToolbar/TableToolbar.tsx +++ b/site/src/components/TableToolbar/TableToolbar.tsx @@ -1,5 +1,5 @@ import Skeleton from "@mui/material/Skeleton"; -import { type FC, type PropsWithChildren } from "react"; +import type { FC, PropsWithChildren } from "react"; export const TableToolbar: FC = ({ children }) => { return ( diff --git a/site/src/components/Timeline/TimelineDateRow.tsx b/site/src/components/Timeline/TimelineDateRow.tsx index d6995d5eaf855..706ada1e296f8 100644 --- a/site/src/components/Timeline/TimelineDateRow.tsx +++ b/site/src/components/Timeline/TimelineDateRow.tsx @@ -1,7 +1,7 @@ import { css, useTheme } from "@emotion/react"; import TableCell from "@mui/material/TableCell"; import TableRow from "@mui/material/TableRow"; -import { type FC } from "react"; +import type { FC } from "react"; import { createDisplayDate } from "./utils"; export interface TimelineDateRow { diff --git a/site/src/components/UserAvatar/UserAvatar.tsx b/site/src/components/UserAvatar/UserAvatar.tsx index 92bea34519021..1de3e6e368a1a 100644 --- a/site/src/components/UserAvatar/UserAvatar.tsx +++ b/site/src/components/UserAvatar/UserAvatar.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Avatar, type AvatarProps } from "components/Avatar/Avatar"; export type UserAvatarProps = { diff --git a/site/src/components/Welcome/Welcome.tsx b/site/src/components/Welcome/Welcome.tsx index 4863fa15c2c3c..7111a5121279d 100644 --- a/site/src/components/Welcome/Welcome.tsx +++ b/site/src/components/Welcome/Welcome.tsx @@ -1,5 +1,5 @@ -import { type Interpolation, type Theme } from "@emotion/react"; -import { type FC, type PropsWithChildren } from "react"; +import type { Interpolation, Theme } from "@emotion/react"; +import type { FC, PropsWithChildren } from "react"; import { CoderIcon } from "../Icons/CoderIcon"; const Language = { diff --git a/site/src/contexts/ProxyContext.test.tsx b/site/src/contexts/ProxyContext.test.tsx index 93c0d64dbbe7f..5378c93a29083 100644 --- a/site/src/contexts/ProxyContext.test.tsx +++ b/site/src/contexts/ProxyContext.test.tsx @@ -1,3 +1,4 @@ +import "testHelpers/localStorage"; import { screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { rest } from "msw"; @@ -8,7 +9,6 @@ import { MockHealthyWildWorkspaceProxy, MockUnhealthyWildWorkspaceProxy, } from "testHelpers/entities"; -import "testHelpers/localStorage"; import { renderWithAuth, waitForLoaderToBeRemoved, diff --git a/site/src/contexts/ProxyContext.tsx b/site/src/contexts/ProxyContext.tsx index 0f8526c70dd73..fbcd6948d1c3e 100644 --- a/site/src/contexts/ProxyContext.tsx +++ b/site/src/contexts/ProxyContext.tsx @@ -11,7 +11,7 @@ import { useQuery } from "react-query"; import { getWorkspaceProxies, getWorkspaceProxyRegions } from "api/api"; import type { Region, WorkspaceProxy } from "api/typesGenerated"; import { usePermissions } from "contexts/auth/usePermissions"; -import { useProxyLatency, type ProxyLatencyReport } from "./useProxyLatency"; +import { type ProxyLatencyReport, useProxyLatency } from "./useProxyLatency"; export interface ProxyContextValue { // proxy is **always** the workspace proxy that should be used. diff --git a/site/src/contexts/auth/RequirePermission.tsx b/site/src/contexts/auth/RequirePermission.tsx index 51bdd394f6470..cc9701c188d36 100644 --- a/site/src/contexts/auth/RequirePermission.tsx +++ b/site/src/contexts/auth/RequirePermission.tsx @@ -1,4 +1,4 @@ -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; import { Navigate } from "react-router-dom"; export interface RequirePermissionProps { diff --git a/site/src/hooks/events.ts b/site/src/hooks/events.ts index 1b660d85feb1f..a1fb6da32026d 100644 --- a/site/src/hooks/events.ts +++ b/site/src/hooks/events.ts @@ -1,5 +1,5 @@ import { useEffect } from "react"; -import { type CustomEventListener } from "utils/events"; +import type { CustomEventListener } from "utils/events"; import { useEffectEvent } from "./hookPolyfills"; /** diff --git a/site/src/hooks/useClickable.test.tsx b/site/src/hooks/useClickable.test.tsx index dce6e383ea50e..e622db8e38ccc 100644 --- a/site/src/hooks/useClickable.test.tsx +++ b/site/src/hooks/useClickable.test.tsx @@ -1,10 +1,10 @@ import { render, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; -import { - type ElementType, - type FC, - type MouseEventHandler, - type PropsWithChildren, +import type { + ElementType, + FC, + MouseEventHandler, + PropsWithChildren, } from "react"; import { type ClickableAriaRole, useClickable } from "./useClickable"; diff --git a/site/src/hooks/useClickableTableRow.ts b/site/src/hooks/useClickableTableRow.ts index 686e23fe328ba..fafcf616c47e8 100644 --- a/site/src/hooks/useClickableTableRow.ts +++ b/site/src/hooks/useClickableTableRow.ts @@ -14,8 +14,8 @@ * problems are fixed. */ import { type CSSObject, useTheme } from "@emotion/react"; -import { type TableRowProps } from "@mui/material/TableRow"; -import { type MouseEventHandler } from "react"; +import type { TableRowProps } from "@mui/material/TableRow"; +import type { MouseEventHandler } from "react"; import { type ClickableAriaRole, type UseClickableResult, diff --git a/site/src/modules/dashboard/DeploymentBanner/DeploymentBanner.tsx b/site/src/modules/dashboard/DeploymentBanner/DeploymentBanner.tsx index 4f32b3a33da4a..ee37bed62ee95 100644 --- a/site/src/modules/dashboard/DeploymentBanner/DeploymentBanner.tsx +++ b/site/src/modules/dashboard/DeploymentBanner/DeploymentBanner.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { useQuery } from "react-query"; import { health } from "api/queries/debug"; import { deploymentStats } from "api/queries/deployment"; diff --git a/site/src/modules/dashboard/LicenseBanner/LicenseBanner.tsx b/site/src/modules/dashboard/LicenseBanner/LicenseBanner.tsx index 1acba81f52043..fe3cc6d26ba3a 100644 --- a/site/src/modules/dashboard/LicenseBanner/LicenseBanner.tsx +++ b/site/src/modules/dashboard/LicenseBanner/LicenseBanner.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { useDashboard } from "modules/dashboard/useDashboard"; import { LicenseBannerView } from "./LicenseBannerView"; diff --git a/site/src/modules/dashboard/Navbar/Navbar.tsx b/site/src/modules/dashboard/Navbar/Navbar.tsx index 3e618bbc876f8..37d7c7573498a 100644 --- a/site/src/modules/dashboard/Navbar/Navbar.tsx +++ b/site/src/modules/dashboard/Navbar/Navbar.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { useAuth } from "contexts/auth/useAuth"; import { useMe } from "contexts/auth/useMe"; import { usePermissions } from "contexts/auth/usePermissions"; diff --git a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdown.tsx b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdown.tsx index d08d538583c18..35f7cbeb0bf3b 100644 --- a/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdown.tsx +++ b/site/src/modules/dashboard/Navbar/UserDropdown/UserDropdown.tsx @@ -1,6 +1,6 @@ import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; import Badge from "@mui/material/Badge"; -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; import type * as TypesGen from "api/typesGenerated"; import { DropdownArrow } from "components/DropdownArrow/DropdownArrow"; import { diff --git a/site/src/modules/dashboard/ServiceBanner/ServiceBanner.tsx b/site/src/modules/dashboard/ServiceBanner/ServiceBanner.tsx index 94e350b89eb2c..cedd4ba4e77f0 100644 --- a/site/src/modules/dashboard/ServiceBanner/ServiceBanner.tsx +++ b/site/src/modules/dashboard/ServiceBanner/ServiceBanner.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { useDashboard } from "modules/dashboard/useDashboard"; import { ServiceBannerView } from "./ServiceBannerView"; diff --git a/site/src/modules/dashboard/ServiceBanner/ServiceBannerView.tsx b/site/src/modules/dashboard/ServiceBanner/ServiceBannerView.tsx index b76b517f9e745..c747285550208 100644 --- a/site/src/modules/dashboard/ServiceBanner/ServiceBannerView.tsx +++ b/site/src/modules/dashboard/ServiceBanner/ServiceBannerView.tsx @@ -1,5 +1,5 @@ import { css, type Interpolation, type Theme } from "@emotion/react"; -import { type FC } from "react"; +import type { FC } from "react"; import { InlineMarkdown } from "components/Markdown/Markdown"; import { Pill } from "components/Pill/Pill"; import { readableForegroundColor } from "utils/colors"; diff --git a/site/src/modules/dashboard/useUpdateCheck.test.tsx b/site/src/modules/dashboard/useUpdateCheck.test.tsx index 47c220e8a8af9..92cb2b5f9f030 100644 --- a/site/src/modules/dashboard/useUpdateCheck.test.tsx +++ b/site/src/modules/dashboard/useUpdateCheck.test.tsx @@ -1,6 +1,6 @@ import { act, renderHook, waitFor } from "@testing-library/react"; import { rest } from "msw"; -import { type FC, type PropsWithChildren } from "react"; +import type { FC, PropsWithChildren } from "react"; import { QueryClient, QueryClientProvider } from "react-query"; import { MockUpdateCheck } from "testHelpers/entities"; import { server } from "testHelpers/server"; diff --git a/site/src/modules/resources/AgentLatency.tsx b/site/src/modules/resources/AgentLatency.tsx index 473aef63eda1d..0fb367cd18abb 100644 --- a/site/src/modules/resources/AgentLatency.tsx +++ b/site/src/modules/resources/AgentLatency.tsx @@ -1,5 +1,5 @@ import { type Theme, useTheme } from "@emotion/react"; -import { type FC } from "react"; +import type { FC } from "react"; import type { WorkspaceAgent, DERPRegion } from "api/typesGenerated"; import { HelpTooltipText, diff --git a/site/src/modules/resources/AgentMetadata.tsx b/site/src/modules/resources/AgentMetadata.tsx index 425c9309235e3..e0413554fe713 100644 --- a/site/src/modules/resources/AgentMetadata.tsx +++ b/site/src/modules/resources/AgentMetadata.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import Skeleton from "@mui/material/Skeleton"; import Tooltip from "@mui/material/Tooltip"; import dayjs from "dayjs"; diff --git a/site/src/modules/resources/AgentOutdatedTooltip.tsx b/site/src/modules/resources/AgentOutdatedTooltip.tsx index c3a22f58666d9..cd01a15365c2e 100644 --- a/site/src/modules/resources/AgentOutdatedTooltip.tsx +++ b/site/src/modules/resources/AgentOutdatedTooltip.tsx @@ -1,6 +1,6 @@ import { useTheme } from "@emotion/react"; import RefreshIcon from "@mui/icons-material/RefreshOutlined"; -import { type FC } from "react"; +import type { FC } from "react"; import type { WorkspaceAgent } from "api/typesGenerated"; import { HelpTooltip, diff --git a/site/src/modules/resources/AgentRow.tsx b/site/src/modules/resources/AgentRow.tsx index 9620eb093cc99..fb299abfb9f10 100644 --- a/site/src/modules/resources/AgentRow.tsx +++ b/site/src/modules/resources/AgentRow.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import Collapse from "@mui/material/Collapse"; import Skeleton from "@mui/material/Skeleton"; import { diff --git a/site/src/modules/resources/AgentRowPreview.tsx b/site/src/modules/resources/AgentRowPreview.tsx index b23af73f88a0c..1d2bb4a76e850 100644 --- a/site/src/modules/resources/AgentRowPreview.tsx +++ b/site/src/modules/resources/AgentRowPreview.tsx @@ -1,5 +1,5 @@ -import { type Interpolation, type Theme } from "@emotion/react"; -import { type FC } from "react"; +import type { Interpolation, Theme } from "@emotion/react"; +import type { FC } from "react"; import type { WorkspaceAgent } from "api/typesGenerated"; import { TerminalIcon } from "components/Icons/TerminalIcon"; import { VSCodeIcon } from "components/Icons/VSCodeIcon"; diff --git a/site/src/modules/resources/AgentStatus.tsx b/site/src/modules/resources/AgentStatus.tsx index c9e2f600ed705..c59d315895956 100644 --- a/site/src/modules/resources/AgentStatus.tsx +++ b/site/src/modules/resources/AgentStatus.tsx @@ -1,8 +1,8 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import WarningRounded from "@mui/icons-material/WarningRounded"; import Link from "@mui/material/Link"; import Tooltip from "@mui/material/Tooltip"; -import { type FC } from "react"; +import type { FC } from "react"; import type { WorkspaceAgent } from "api/typesGenerated"; import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; import { diff --git a/site/src/modules/resources/AgentVersion.tsx b/site/src/modules/resources/AgentVersion.tsx index 4b35ca6baec26..bba87833f3999 100644 --- a/site/src/modules/resources/AgentVersion.tsx +++ b/site/src/modules/resources/AgentVersion.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import type { WorkspaceAgent } from "api/typesGenerated"; import { agentVersionStatus, getDisplayVersionStatus } from "utils/workspace"; import { AgentOutdatedTooltip } from "./AgentOutdatedTooltip"; diff --git a/site/src/modules/resources/AppLink/AppPreview.tsx b/site/src/modules/resources/AppLink/AppPreview.tsx index 5e6becb25adc5..7472245db7ffd 100644 --- a/site/src/modules/resources/AppLink/AppPreview.tsx +++ b/site/src/modules/resources/AppLink/AppPreview.tsx @@ -1,4 +1,4 @@ -import { type FC, type PropsWithChildren } from "react"; +import type { FC, PropsWithChildren } from "react"; import { Stack } from "components/Stack/Stack"; export const AppPreview: FC = ({ children }) => { diff --git a/site/src/modules/resources/AppLink/BaseIcon.tsx b/site/src/modules/resources/AppLink/BaseIcon.tsx index 0d0738b22ac8d..d2ae779c2b895 100644 --- a/site/src/modules/resources/AppLink/BaseIcon.tsx +++ b/site/src/modules/resources/AppLink/BaseIcon.tsx @@ -1,5 +1,5 @@ import ComputerIcon from "@mui/icons-material/Computer"; -import { type FC } from "react"; +import type { FC } from "react"; import type { WorkspaceApp } from "api/typesGenerated"; interface BaseIconProps { diff --git a/site/src/modules/resources/PortForwardButton.tsx b/site/src/modules/resources/PortForwardButton.tsx index 22938c556ee5e..87cb08862441e 100644 --- a/site/src/modules/resources/PortForwardButton.tsx +++ b/site/src/modules/resources/PortForwardButton.tsx @@ -15,7 +15,7 @@ import Select from "@mui/material/Select"; import Stack from "@mui/material/Stack"; import TextField from "@mui/material/TextField"; import { type FormikContextType, useFormik } from "formik"; -import { type FC } from "react"; +import type { FC } from "react"; import { useQuery, useMutation } from "react-query"; import * as Yup from "yup"; import { getAgentListeningPorts } from "api/api"; diff --git a/site/src/modules/resources/ResourceCard.tsx b/site/src/modules/resources/ResourceCard.tsx index d56e6afaf6b0f..962d428e22eca 100644 --- a/site/src/modules/resources/ResourceCard.tsx +++ b/site/src/modules/resources/ResourceCard.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import IconButton from "@mui/material/IconButton"; import Tooltip from "@mui/material/Tooltip"; import { Children, type FC, type PropsWithChildren, useState } from "react"; diff --git a/site/src/modules/resources/SSHButton/SSHButton.tsx b/site/src/modules/resources/SSHButton/SSHButton.tsx index 045f6d414ae17..d4b8662705eab 100644 --- a/site/src/modules/resources/SSHButton/SSHButton.tsx +++ b/site/src/modules/resources/SSHButton/SSHButton.tsx @@ -1,7 +1,7 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import KeyboardArrowDown from "@mui/icons-material/KeyboardArrowDown"; import Button from "@mui/material/Button"; -import { type FC } from "react"; +import type { FC } from "react"; import { CodeExample } from "components/CodeExample/CodeExample"; import { HelpTooltipLink, diff --git a/site/src/modules/resources/TerminalLink/TerminalLink.tsx b/site/src/modules/resources/TerminalLink/TerminalLink.tsx index 0e33241b2c19f..370c5fe1d6550 100644 --- a/site/src/modules/resources/TerminalLink/TerminalLink.tsx +++ b/site/src/modules/resources/TerminalLink/TerminalLink.tsx @@ -1,5 +1,5 @@ import Link from "@mui/material/Link"; -import { type FC } from "react"; +import type { FC } from "react"; import type * as TypesGen from "api/typesGenerated"; import { TerminalIcon } from "components/Icons/TerminalIcon"; import { generateRandomString } from "utils/random"; diff --git a/site/src/modules/resources/XRayScanAlert.tsx b/site/src/modules/resources/XRayScanAlert.tsx index 276b961e88017..e1b28a0e3ee22 100644 --- a/site/src/modules/resources/XRayScanAlert.tsx +++ b/site/src/modules/resources/XRayScanAlert.tsx @@ -1,6 +1,6 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import Button from "@mui/material/Button"; -import { type FC } from "react"; +import type { FC } from "react"; import type { JFrogXrayScan } from "api/typesGenerated"; import { ExternalImage } from "components/ExternalImage/ExternalImage"; diff --git a/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.tsx b/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.tsx index e6aa299a437b9..0770931d0be26 100644 --- a/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.tsx +++ b/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.tsx @@ -1,7 +1,7 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import Button from "@mui/material/Button"; import Link from "@mui/material/Link"; -import { type FC, type HTMLAttributes } from "react"; +import type { FC, HTMLAttributes } from "react"; import { Link as RouterLink } from "react-router-dom"; import type { TemplateExample } from "api/typesGenerated"; import { ExternalImage } from "components/ExternalImage/ExternalImage"; diff --git a/site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.tsx b/site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.tsx index 9d8e95114abb6..22f613780eaf9 100644 --- a/site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.tsx +++ b/site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import type { WorkspaceResource } from "api/typesGenerated"; import { AgentRowPreview } from "modules/resources/AgentRowPreview"; import { Resources } from "modules/resources/Resources"; diff --git a/site/src/modules/templates/TemplateScheduleAutostart/TemplateScheduleAutostart.tsx b/site/src/modules/templates/TemplateScheduleAutostart/TemplateScheduleAutostart.tsx index 29e273aed4646..35d26499f89f4 100644 --- a/site/src/modules/templates/TemplateScheduleAutostart/TemplateScheduleAutostart.tsx +++ b/site/src/modules/templates/TemplateScheduleAutostart/TemplateScheduleAutostart.tsx @@ -1,6 +1,6 @@ import Button from "@mui/material/Button"; import FormHelperText from "@mui/material/FormHelperText"; -import { type FC } from "react"; +import type { FC } from "react"; import { Stack } from "components/Stack/Stack"; import type { TemplateAutostartRequirementDaysValue } from "utils/schedule"; diff --git a/site/src/modules/templates/TemplateUpdateMessage.tsx b/site/src/modules/templates/TemplateUpdateMessage.tsx index 402bbaf8522e8..a5f181e3cba77 100644 --- a/site/src/modules/templates/TemplateUpdateMessage.tsx +++ b/site/src/modules/templates/TemplateUpdateMessage.tsx @@ -1,5 +1,5 @@ -import { type Interpolation, type Theme } from "@emotion/react"; -import { type FC } from "react"; +import type { Interpolation, Theme } from "@emotion/react"; +import type { FC } from "react"; import { MemoizedMarkdown } from "components/Markdown/Markdown"; interface TemplateUpdateMessageProps { diff --git a/site/src/modules/workspaces/WorkspaceBuild/WorkspaceBuildData.tsx b/site/src/modules/workspaces/WorkspaceBuild/WorkspaceBuildData.tsx index f0fc5341eef36..346a58cdaf746 100644 --- a/site/src/modules/workspaces/WorkspaceBuild/WorkspaceBuildData.tsx +++ b/site/src/modules/workspaces/WorkspaceBuild/WorkspaceBuildData.tsx @@ -1,5 +1,4 @@ -import type { Interpolation, Theme } from "@emotion/react"; -import { useTheme } from "@emotion/react"; +import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import Skeleton from "@mui/material/Skeleton"; import type { WorkspaceBuild } from "api/typesGenerated"; import { BuildIcon } from "components/BuildIcon/BuildIcon"; diff --git a/site/src/modules/workspaces/WorkspaceBuildLogs/Logs.tsx b/site/src/modules/workspaces/WorkspaceBuildLogs/Logs.tsx index a88a1f6143dc8..6d253e2055261 100644 --- a/site/src/modules/workspaces/WorkspaceBuildLogs/Logs.tsx +++ b/site/src/modules/workspaces/WorkspaceBuildLogs/Logs.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import AnsiToHTML from "ansi-to-html"; import dayjs from "dayjs"; import { type FC, type ReactNode, useMemo } from "react"; diff --git a/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx b/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx index bd9d201cc1524..bafc2b035bf15 100644 --- a/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx +++ b/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx @@ -3,7 +3,7 @@ import InfoIcon from "@mui/icons-material/InfoOutlined"; import RefreshIcon from "@mui/icons-material/Refresh"; import Link from "@mui/material/Link"; import Skeleton from "@mui/material/Skeleton"; -import { type FC } from "react"; +import type { FC } from "react"; import { useQuery } from "react-query"; import { templateVersion } from "api/queries/templates"; import { diff --git a/site/src/modules/workspaces/WorkspaceStatusBadge/DormantDeletionText.tsx b/site/src/modules/workspaces/WorkspaceStatusBadge/DormantDeletionText.tsx index 2e45892506548..27aea1359d2df 100644 --- a/site/src/modules/workspaces/WorkspaceStatusBadge/DormantDeletionText.tsx +++ b/site/src/modules/workspaces/WorkspaceStatusBadge/DormantDeletionText.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import type { Workspace } from "api/typesGenerated"; import { useDashboard } from "modules/dashboard/useDashboard"; import { displayDormantDeletion } from "utils/dormant"; diff --git a/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.tsx b/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.tsx index e7743cb9e8340..3be084e572188 100644 --- a/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.tsx +++ b/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.tsx @@ -6,7 +6,7 @@ import Tooltip, { tooltipClasses, } from "@mui/material/Tooltip"; import { formatDistanceToNow } from "date-fns"; -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; import type { Workspace } from "api/typesGenerated"; import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; import { Pill } from "components/Pill/Pill"; From 288ed0e1f0ed36a002a135e6004e0f223379f1e0 Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Tue, 5 Mar 2024 22:57:00 +0000 Subject: [PATCH 10/12] =?UTF-8?q?=F0=9F=A7=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/src/pages/404Page/404Page.tsx | 2 +- site/src/pages/AuditPage/AuditFilter.tsx | 4 ++-- .../AuditLogDescription/AuditLogDescription.tsx | 2 +- .../AuditPage/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx | 4 ++-- site/src/pages/AuditPage/AuditLogRow/AuditLogRow.tsx | 4 ++-- site/src/pages/AuditPage/AuditPage.tsx | 2 +- site/src/pages/AuditPage/AuditPageView.stories.tsx | 4 ++-- site/src/pages/AuditPage/AuditPageView.tsx | 2 +- site/src/pages/CliAuthPage/CliAuthPage.tsx | 2 +- site/src/pages/CliAuthPage/CliAuthPageView.tsx | 4 ++-- site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx | 8 ++++---- .../pages/CreateTemplatePage/DuplicateTemplateView.tsx | 2 +- .../CreateTemplatePage/ImportStarterTemplateView.tsx | 2 +- site/src/pages/CreateTemplatePage/VariableInput.tsx | 4 ++-- site/src/pages/CreateUserPage/CreateUserPage.tsx | 2 +- .../pages/CreateWorkspacePage/CreateWorkspacePageView.tsx | 2 +- site/src/pages/CreateWorkspacePage/ExternalAuthButton.tsx | 2 +- site/src/pages/CreateWorkspacePage/SelectedTemplate.tsx | 4 ++-- .../CreateWorkspacePage/useWorkspaceDuplication.test.tsx | 2 +- .../pages/CreateWorkspacePage/useWorkspaceDuplication.ts | 2 +- .../AppearanceSettingsPage/AppearanceSettingsPage.tsx | 2 +- .../ExternalAuthSettingsPage/ExternalAuthSettingsPage.tsx | 2 +- .../ExternalAuthSettingsPageView.tsx | 2 +- .../GeneralSettingsPage/ChartSection.tsx | 2 +- .../GeneralSettingsPage/GeneralSettingsPage.tsx | 2 +- .../GeneralSettingsPage/GeneralSettingsPageView.tsx | 2 +- .../LicensesSettingsPage/AddNewLicensePageView.tsx | 2 +- .../LicensesSettingsPage/DividerWithText.tsx | 4 ++-- .../LicensesSettingsPage/LicenseCard.tsx | 4 ++-- .../LicensesSettingsPage/LicensesSettingsPageView.tsx | 2 +- .../NetworkSettingsPage/NetworkSettingsPage.tsx | 2 +- .../NetworkSettingsPage/NetworkSettingsPageView.tsx | 2 +- .../OAuth2AppsSettingsPage/CreateOAuth2AppPageView.tsx | 2 +- .../OAuth2AppsSettingsPage/OAuth2AppForm.tsx | 2 +- .../OAuth2AppsSettingsPage/OAuth2AppsSettingsPage.tsx | 2 +- .../OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.tsx | 2 +- .../ObservabilitySettingsPage.tsx | 2 +- .../ObservabilitySettingsPageView.tsx | 2 +- site/src/pages/DeploySettingsPage/Option.tsx | 2 +- site/src/pages/DeploySettingsPage/OptionsTable.tsx | 2 +- .../SecuritySettingsPage/SecuritySettingsPage.tsx | 2 +- .../SecuritySettingsPage/SecuritySettingsPageView.tsx | 2 +- site/src/pages/DeploySettingsPage/Sidebar.tsx | 3 +-- .../UserAuthSettingsPage/UserAuthSettingsPage.tsx | 2 +- 44 files changed, 56 insertions(+), 57 deletions(-) diff --git a/site/src/pages/404Page/404Page.tsx b/site/src/pages/404Page/404Page.tsx index 3d9fdcdf5020b..cc0380d10fd9b 100644 --- a/site/src/pages/404Page/404Page.tsx +++ b/site/src/pages/404Page/404Page.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; export const NotFoundPage: FC = () => { return ( diff --git a/site/src/pages/AuditPage/AuditFilter.tsx b/site/src/pages/AuditPage/AuditFilter.tsx index 46bade08dfb09..e02100e11e448 100644 --- a/site/src/pages/AuditPage/AuditFilter.tsx +++ b/site/src/pages/AuditPage/AuditFilter.tsx @@ -1,5 +1,5 @@ import capitalize from "lodash/capitalize"; -import { type FC } from "react"; +import type { FC } from "react"; import { AuditActions, ResourceTypes } from "api/typesGenerated"; import { Filter, @@ -14,7 +14,7 @@ import { type UseFilterMenuOptions, } from "components/Filter/menu"; import type { BaseOption } from "components/Filter/options"; -import { UserMenu, type UserFilterMenu } from "components/Filter/UserFilter"; +import { type UserFilterMenu, UserMenu } from "components/Filter/UserFilter"; import { docs } from "utils/docs"; const PRESET_FILTERS = [ diff --git a/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.tsx index 704cc2892fdf3..3eea4ca12d6a1 100644 --- a/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.tsx +++ b/site/src/pages/AuditPage/AuditLogRow/AuditLogDescription/AuditLogDescription.tsx @@ -1,5 +1,5 @@ import Link from "@mui/material/Link"; -import { type FC } from "react"; +import type { FC } from "react"; import { Link as RouterLink } from "react-router-dom"; import type { AuditLog } from "api/typesGenerated"; import { BuildAuditDescription } from "./BuildAuditDescription"; diff --git a/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx index 2f888de37b043..87a8cdc8eb432 100644 --- a/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx +++ b/site/src/pages/AuditPage/AuditLogRow/AuditLogDiff/AuditLogDiff.tsx @@ -1,5 +1,5 @@ -import { type Interpolation, type Theme } from "@emotion/react"; -import { type FC } from "react"; +import type { Interpolation, Theme } from "@emotion/react"; +import type { FC } from "react"; import type { AuditDiff } from "api/typesGenerated"; import { MONOSPACE_FONT_FAMILY } from "theme/constants"; import colors from "theme/tailwindColors"; diff --git a/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.tsx b/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.tsx index 00c6f23af9a37..15e1a8e8254b4 100644 --- a/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.tsx +++ b/site/src/pages/AuditPage/AuditLogRow/AuditLogRow.tsx @@ -1,4 +1,4 @@ -import { type CSSObject, type Interpolation, type Theme } from "@emotion/react"; +import type { CSSObject, Interpolation, Theme } from "@emotion/react"; import Collapse from "@mui/material/Collapse"; import TableCell from "@mui/material/TableCell"; import { type FC, useState } from "react"; @@ -9,7 +9,7 @@ import { Pill } from "components/Pill/Pill"; import { Stack } from "components/Stack/Stack"; import { TimelineEntry } from "components/Timeline/TimelineEntry"; import { UserAvatar } from "components/UserAvatar/UserAvatar"; -import { type ThemeRole } from "theme/roles"; +import type { ThemeRole } from "theme/roles"; import { AuditLogDescription } from "./AuditLogDescription/AuditLogDescription"; import { AuditLogDiff } from "./AuditLogDiff/AuditLogDiff"; import { determineGroupDiff } from "./AuditLogDiff/auditUtils"; diff --git a/site/src/pages/AuditPage/AuditPage.tsx b/site/src/pages/AuditPage/AuditPage.tsx index 3af6808f6faa4..d014972ef13a8 100644 --- a/site/src/pages/AuditPage/AuditPage.tsx +++ b/site/src/pages/AuditPage/AuditPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useSearchParams } from "react-router-dom"; import { paginatedAudits } from "api/queries/audits"; diff --git a/site/src/pages/AuditPage/AuditPageView.stories.tsx b/site/src/pages/AuditPage/AuditPageView.stories.tsx index 5b080f2e80a17..fa6ac9f17f066 100644 --- a/site/src/pages/AuditPage/AuditPageView.stories.tsx +++ b/site/src/pages/AuditPage/AuditPageView.stories.tsx @@ -1,5 +1,5 @@ import type { Meta, StoryObj } from "@storybook/react"; -import { type ComponentProps } from "react"; +import type { ComponentProps } from "react"; import { MockMenu, getDefaultFilterProps, @@ -8,7 +8,7 @@ import { mockInitialRenderResult, mockSuccessResult, } from "components/PaginationWidget/PaginationContainer.mocks"; -import { type UsePaginatedQueryResult } from "hooks/usePaginatedQuery"; +import type { UsePaginatedQueryResult } from "hooks/usePaginatedQuery"; import { chromaticWithTablet } from "testHelpers/chromatic"; import { MockAuditLog, MockAuditLog2, MockUser } from "testHelpers/entities"; import { AuditPageView } from "./AuditPageView"; diff --git a/site/src/pages/AuditPage/AuditPageView.tsx b/site/src/pages/AuditPage/AuditPageView.tsx index dda2c50400a09..a6aa69128ad19 100644 --- a/site/src/pages/AuditPage/AuditPageView.tsx +++ b/site/src/pages/AuditPage/AuditPageView.tsx @@ -3,7 +3,7 @@ import TableBody from "@mui/material/TableBody"; import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableRow from "@mui/material/TableRow"; -import { type ComponentProps, type FC } from "react"; +import type { ComponentProps, FC } from "react"; import type { AuditLog } from "api/typesGenerated"; import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; import { EmptyState } from "components/EmptyState/EmptyState"; diff --git a/site/src/pages/CliAuthPage/CliAuthPage.tsx b/site/src/pages/CliAuthPage/CliAuthPage.tsx index 662348c16784c..eeb9223f139e4 100644 --- a/site/src/pages/CliAuthPage/CliAuthPage.tsx +++ b/site/src/pages/CliAuthPage/CliAuthPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { apiKey } from "api/queries/users"; diff --git a/site/src/pages/CliAuthPage/CliAuthPageView.tsx b/site/src/pages/CliAuthPage/CliAuthPageView.tsx index 413652e49ac7a..a157c0bb4dbd0 100644 --- a/site/src/pages/CliAuthPage/CliAuthPageView.tsx +++ b/site/src/pages/CliAuthPage/CliAuthPageView.tsx @@ -1,6 +1,6 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import { visuallyHidden } from "@mui/utils"; -import { type FC } from "react"; +import type { FC } from "react"; import { Link as RouterLink } from "react-router-dom"; import { CodeExample } from "components/CodeExample/CodeExample"; import { FullScreenLoader } from "components/Loader/FullScreenLoader"; diff --git a/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx b/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx index 29e8ccd30fd18..d687fe5e25ce4 100644 --- a/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx +++ b/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx @@ -2,7 +2,7 @@ import TextField from "@mui/material/TextField"; import { useFormik } from "formik"; import camelCase from "lodash/camelCase"; import capitalize from "lodash/capitalize"; -import { type FC } from "react"; +import type { FC } from "react"; import * as Yup from "yup"; import type { ProvisionerJobLog, @@ -26,9 +26,9 @@ import { onChangeTrimmed, templateDisplayNameValidator, } from "utils/formUtils"; -import { - type TemplateAutostartRequirementDaysValue, - type TemplateAutostopRequirementDaysValue, +import type { + TemplateAutostartRequirementDaysValue, + TemplateAutostopRequirementDaysValue, } from "utils/schedule"; import { TemplateUpload, type TemplateUploadProps } from "./TemplateUpload"; import { VariableInput } from "./VariableInput"; diff --git a/site/src/pages/CreateTemplatePage/DuplicateTemplateView.tsx b/site/src/pages/CreateTemplatePage/DuplicateTemplateView.tsx index aa2e47cdf902b..0a965aef2a3e6 100644 --- a/site/src/pages/CreateTemplatePage/DuplicateTemplateView.tsx +++ b/site/src/pages/CreateTemplatePage/DuplicateTemplateView.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { useQuery } from "react-query"; import { useNavigate, useSearchParams } from "react-router-dom"; import { diff --git a/site/src/pages/CreateTemplatePage/ImportStarterTemplateView.tsx b/site/src/pages/CreateTemplatePage/ImportStarterTemplateView.tsx index 9522e2ef7c42c..1e38865e53f66 100644 --- a/site/src/pages/CreateTemplatePage/ImportStarterTemplateView.tsx +++ b/site/src/pages/CreateTemplatePage/ImportStarterTemplateView.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { useQuery } from "react-query"; import { useNavigate, useSearchParams } from "react-router-dom"; import { diff --git a/site/src/pages/CreateTemplatePage/VariableInput.tsx b/site/src/pages/CreateTemplatePage/VariableInput.tsx index 7fac814fb4818..71d2ac6d99050 100644 --- a/site/src/pages/CreateTemplatePage/VariableInput.tsx +++ b/site/src/pages/CreateTemplatePage/VariableInput.tsx @@ -1,9 +1,9 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import FormControlLabel from "@mui/material/FormControlLabel"; import Radio from "@mui/material/Radio"; import RadioGroup from "@mui/material/RadioGroup"; import TextField from "@mui/material/TextField"; -import { type FC } from "react"; +import type { FC } from "react"; import type { TemplateVersionVariable } from "api/typesGenerated"; import { Stack } from "components/Stack/Stack"; diff --git a/site/src/pages/CreateUserPage/CreateUserPage.tsx b/site/src/pages/CreateUserPage/CreateUserPage.tsx index 2d04095f92452..d283c42fbd001 100644 --- a/site/src/pages/CreateUserPage/CreateUserPage.tsx +++ b/site/src/pages/CreateUserPage/CreateUserPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { useNavigate } from "react-router-dom"; diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx index 95bc9fc1adec2..f886d39e85687 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import Button from "@mui/material/Button"; import FormHelperText from "@mui/material/FormHelperText"; import TextField from "@mui/material/TextField"; diff --git a/site/src/pages/CreateWorkspacePage/ExternalAuthButton.tsx b/site/src/pages/CreateWorkspacePage/ExternalAuthButton.tsx index b7a5d7089b1f0..62487dc228327 100644 --- a/site/src/pages/CreateWorkspacePage/ExternalAuthButton.tsx +++ b/site/src/pages/CreateWorkspacePage/ExternalAuthButton.tsx @@ -3,7 +3,7 @@ import LoadingButton from "@mui/lab/LoadingButton"; import Button from "@mui/material/Button"; import Tooltip from "@mui/material/Tooltip"; import { visuallyHidden } from "@mui/utils"; -import { type FC } from "react"; +import type { FC } from "react"; import type { TemplateVersionExternalAuth } from "api/typesGenerated"; import { ExternalImage } from "components/ExternalImage/ExternalImage"; import { Pill } from "components/Pill/Pill"; diff --git a/site/src/pages/CreateWorkspacePage/SelectedTemplate.tsx b/site/src/pages/CreateWorkspacePage/SelectedTemplate.tsx index 245af94e0a2f2..4fa1486863e12 100644 --- a/site/src/pages/CreateWorkspacePage/SelectedTemplate.tsx +++ b/site/src/pages/CreateWorkspacePage/SelectedTemplate.tsx @@ -1,5 +1,5 @@ -import { type Interpolation, type Theme } from "@emotion/react"; -import { type FC } from "react"; +import type { Interpolation, Theme } from "@emotion/react"; +import type { FC } from "react"; import type { Template, TemplateExample } from "api/typesGenerated"; import { ExternalAvatar } from "components/Avatar/Avatar"; import { Stack } from "components/Stack/Stack"; diff --git a/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.test.tsx b/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.test.tsx index 50e6b1f5eaf70..9dab4129ec410 100644 --- a/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.test.tsx +++ b/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.test.tsx @@ -1,5 +1,5 @@ import { waitFor } from "@testing-library/react"; -import { type Workspace } from "api/typesGenerated"; +import type { Workspace } from "api/typesGenerated"; import * as M from "testHelpers/entities"; import { renderHookWithAuth } from "testHelpers/renderHelpers"; import CreateWorkspacePage from "./CreateWorkspacePage"; diff --git a/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.ts b/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.ts index c9321927da740..042eb4f6ce45e 100644 --- a/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.ts +++ b/site/src/pages/CreateWorkspacePage/useWorkspaceDuplication.ts @@ -3,7 +3,7 @@ import { useQuery } from "react-query"; import { useNavigate } from "react-router-dom"; import { workspaceBuildParameters } from "api/queries/workspaceBuilds"; import type { Workspace, WorkspaceBuildParameter } from "api/typesGenerated"; -import { type CreateWorkspaceMode } from "./CreateWorkspacePage"; +import type { CreateWorkspaceMode } from "./CreateWorkspacePage"; function getDuplicationUrlParams( workspaceParams: readonly WorkspaceBuildParameter[], diff --git a/site/src/pages/DeploySettingsPage/AppearanceSettingsPage/AppearanceSettingsPage.tsx b/site/src/pages/DeploySettingsPage/AppearanceSettingsPage/AppearanceSettingsPage.tsx index b3ff13bc35a84..2f05eacb9a20a 100644 --- a/site/src/pages/DeploySettingsPage/AppearanceSettingsPage/AppearanceSettingsPage.tsx +++ b/site/src/pages/DeploySettingsPage/AppearanceSettingsPage/AppearanceSettingsPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQueryClient } from "react-query"; import { getErrorMessage } from "api/errors"; diff --git a/site/src/pages/DeploySettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPage.tsx b/site/src/pages/DeploySettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPage.tsx index 2c214875a9a77..ada99d128ce50 100644 --- a/site/src/pages/DeploySettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPage.tsx +++ b/site/src/pages/DeploySettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { pageTitle } from "utils/page"; import { useDeploySettings } from "../DeploySettingsLayout"; diff --git a/site/src/pages/DeploySettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPageView.tsx b/site/src/pages/DeploySettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPageView.tsx index dba3c5502b3ce..8edb242860c21 100644 --- a/site/src/pages/DeploySettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPageView.tsx +++ b/site/src/pages/DeploySettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPageView.tsx @@ -5,7 +5,7 @@ import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; -import { type FC } from "react"; +import type { FC } from "react"; import type { DeploymentValues, ExternalAuthConfig } from "api/typesGenerated"; import { Alert } from "components/Alert/Alert"; import { EnterpriseBadge } from "components/Badges/Badges"; diff --git a/site/src/pages/DeploySettingsPage/GeneralSettingsPage/ChartSection.tsx b/site/src/pages/DeploySettingsPage/GeneralSettingsPage/ChartSection.tsx index 298681706b3d0..0ee6af26da5e4 100644 --- a/site/src/pages/DeploySettingsPage/GeneralSettingsPage/ChartSection.tsx +++ b/site/src/pages/DeploySettingsPage/GeneralSettingsPage/ChartSection.tsx @@ -1,6 +1,6 @@ import { useTheme } from "@emotion/react"; import Paper from "@mui/material/Paper"; -import { type HTMLProps, type ReactNode, type FC } from "react"; +import type { FC, HTMLProps, ReactNode } from "react"; export interface ChartSectionProps { /** diff --git a/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPage.tsx b/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPage.tsx index c4615dc0f5a32..4f9f627a0b2dc 100644 --- a/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPage.tsx +++ b/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { deploymentDAUs } from "api/queries/deployment"; diff --git a/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.tsx b/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.tsx index 2ce819aa96726..210c496c397fe 100644 --- a/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.tsx +++ b/site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import type { ClibaseOption, DAUsResponse, diff --git a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/AddNewLicensePageView.tsx b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/AddNewLicensePageView.tsx index dfe97366943fa..7e7be4aa97114 100644 --- a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/AddNewLicensePageView.tsx +++ b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/AddNewLicensePageView.tsx @@ -1,7 +1,7 @@ import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; import Button from "@mui/material/Button"; import TextField from "@mui/material/TextField"; -import { type FC } from "react"; +import type { FC } from "react"; import { Link as RouterLink } from "react-router-dom"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { FileUpload } from "components/FileUpload/FileUpload"; diff --git a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/DividerWithText.tsx b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/DividerWithText.tsx index 4fd1c5e3137fd..7ee07803b8482 100644 --- a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/DividerWithText.tsx +++ b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/DividerWithText.tsx @@ -1,5 +1,5 @@ -import { type Interpolation, type Theme } from "@emotion/react"; -import { type FC, type PropsWithChildren } from "react"; +import type { Interpolation, Theme } from "@emotion/react"; +import type { FC, PropsWithChildren } from "react"; export const DividerWithText: FC = ({ children }) => { return ( diff --git a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicenseCard.tsx b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicenseCard.tsx index 362fefa1d322c..e22330e663eb4 100644 --- a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicenseCard.tsx +++ b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicenseCard.tsx @@ -1,10 +1,10 @@ -import { type CSSObject, type Interpolation, type Theme } from "@emotion/react"; +import type { CSSObject, Interpolation, Theme } from "@emotion/react"; import Button from "@mui/material/Button"; import Paper from "@mui/material/Paper"; import { compareAsc } from "date-fns"; import dayjs from "dayjs"; import { type FC, useState } from "react"; -import { type GetLicensesResponse } from "api/api"; +import type { GetLicensesResponse } from "api/api"; import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { Pill } from "components/Pill/Pill"; import { Stack } from "components/Stack/Stack"; diff --git a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPageView.tsx b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPageView.tsx index f22186501620c..08c2db5862cd8 100644 --- a/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPageView.tsx +++ b/site/src/pages/DeploySettingsPage/LicensesSettingsPage/LicensesSettingsPageView.tsx @@ -6,7 +6,7 @@ import Button from "@mui/material/Button"; import MuiLink from "@mui/material/Link"; import Skeleton from "@mui/material/Skeleton"; import Tooltip from "@mui/material/Tooltip"; -import { type FC } from "react"; +import type { FC } from "react"; import Confetti from "react-confetti"; import { Link } from "react-router-dom"; import useWindowSize from "react-use/lib/useWindowSize"; diff --git a/site/src/pages/DeploySettingsPage/NetworkSettingsPage/NetworkSettingsPage.tsx b/site/src/pages/DeploySettingsPage/NetworkSettingsPage/NetworkSettingsPage.tsx index cf53427f2d58a..1c5832f129707 100644 --- a/site/src/pages/DeploySettingsPage/NetworkSettingsPage/NetworkSettingsPage.tsx +++ b/site/src/pages/DeploySettingsPage/NetworkSettingsPage/NetworkSettingsPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { pageTitle } from "utils/page"; import { useDeploySettings } from "../DeploySettingsLayout"; diff --git a/site/src/pages/DeploySettingsPage/NetworkSettingsPage/NetworkSettingsPageView.tsx b/site/src/pages/DeploySettingsPage/NetworkSettingsPage/NetworkSettingsPageView.tsx index bc849f5c1dbbb..6b18a73b54922 100644 --- a/site/src/pages/DeploySettingsPage/NetworkSettingsPage/NetworkSettingsPageView.tsx +++ b/site/src/pages/DeploySettingsPage/NetworkSettingsPage/NetworkSettingsPageView.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import type { ClibaseOption } from "api/typesGenerated"; import { Badges, EnabledBadge, DisabledBadge } from "components/Badges/Badges"; import { Stack } from "components/Stack/Stack"; diff --git a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPageView.tsx b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPageView.tsx index 2c13ce1953b51..07553c91432aa 100644 --- a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPageView.tsx +++ b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/CreateOAuth2AppPageView.tsx @@ -1,6 +1,6 @@ import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; import Button from "@mui/material/Button"; -import { type FC } from "react"; +import type { FC } from "react"; import { Link } from "react-router-dom"; import type * as TypesGen from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; diff --git a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/OAuth2AppForm.tsx b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/OAuth2AppForm.tsx index 6cfa546c41aef..58b77a675a618 100644 --- a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/OAuth2AppForm.tsx +++ b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/OAuth2AppForm.tsx @@ -1,6 +1,6 @@ import LoadingButton from "@mui/lab/LoadingButton"; import TextField from "@mui/material/TextField"; -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; import { isApiValidationError, mapApiErrorToFieldErrors } from "api/errors"; import type * as TypesGen from "api/typesGenerated"; import { Stack } from "components/Stack/Stack"; diff --git a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPage.tsx b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPage.tsx index 7077d2f2c732c..c45a8cd46f961 100644 --- a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPage.tsx +++ b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { getApps } from "api/queries/oauth2"; diff --git a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.tsx b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.tsx index c350c9a4ed069..fee462f872ae5 100644 --- a/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.tsx +++ b/site/src/pages/DeploySettingsPage/OAuth2AppsSettingsPage/OAuth2AppsSettingsPageView.tsx @@ -8,7 +8,7 @@ import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; -import { type FC } from "react"; +import type { FC } from "react"; import { Link, useNavigate } from "react-router-dom"; import type * as TypesGen from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; diff --git a/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPage.tsx b/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPage.tsx index a4a6d323324cc..668d878353aa4 100644 --- a/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPage.tsx +++ b/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useDashboard } from "modules/dashboard/useDashboard"; import { pageTitle } from "utils/page"; diff --git a/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.tsx b/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.tsx index 552d56fff3f3a..75dcb0970759b 100644 --- a/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.tsx +++ b/site/src/pages/DeploySettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPageView.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import type { ClibaseOption } from "api/typesGenerated"; import { Badges, diff --git a/site/src/pages/DeploySettingsPage/Option.tsx b/site/src/pages/DeploySettingsPage/Option.tsx index 0007ab5a11c02..de9ead5cb9233 100644 --- a/site/src/pages/DeploySettingsPage/Option.tsx +++ b/site/src/pages/DeploySettingsPage/Option.tsx @@ -1,6 +1,6 @@ import { css, type Interpolation, type Theme, useTheme } from "@emotion/react"; import CheckCircleOutlined from "@mui/icons-material/CheckCircleOutlined"; -import { type FC, type HTMLAttributes, type PropsWithChildren } from "react"; +import type { FC, HTMLAttributes, PropsWithChildren } from "react"; import { DisabledBadge, EnabledBadge } from "components/Badges/Badges"; import { MONOSPACE_FONT_FAMILY } from "theme/constants"; diff --git a/site/src/pages/DeploySettingsPage/OptionsTable.tsx b/site/src/pages/DeploySettingsPage/OptionsTable.tsx index c6b694bc36fc0..2bfcf199bdb76 100644 --- a/site/src/pages/DeploySettingsPage/OptionsTable.tsx +++ b/site/src/pages/DeploySettingsPage/OptionsTable.tsx @@ -5,7 +5,7 @@ import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; -import { type FC } from "react"; +import type { FC } from "react"; import type { ClibaseOption } from "api/typesGenerated"; import { OptionConfig, diff --git a/site/src/pages/DeploySettingsPage/SecuritySettingsPage/SecuritySettingsPage.tsx b/site/src/pages/DeploySettingsPage/SecuritySettingsPage/SecuritySettingsPage.tsx index a1e75543f2745..9968349dbfe97 100644 --- a/site/src/pages/DeploySettingsPage/SecuritySettingsPage/SecuritySettingsPage.tsx +++ b/site/src/pages/DeploySettingsPage/SecuritySettingsPage/SecuritySettingsPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useDashboard } from "modules/dashboard/useDashboard"; import { pageTitle } from "utils/page"; diff --git a/site/src/pages/DeploySettingsPage/SecuritySettingsPage/SecuritySettingsPageView.tsx b/site/src/pages/DeploySettingsPage/SecuritySettingsPage/SecuritySettingsPageView.tsx index 032f404970692..9b702114b8909 100644 --- a/site/src/pages/DeploySettingsPage/SecuritySettingsPage/SecuritySettingsPageView.tsx +++ b/site/src/pages/DeploySettingsPage/SecuritySettingsPage/SecuritySettingsPageView.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import type { ClibaseOption } from "api/typesGenerated"; import { Badges, diff --git a/site/src/pages/DeploySettingsPage/Sidebar.tsx b/site/src/pages/DeploySettingsPage/Sidebar.tsx index 4a05d8fad2720..15cf879e87c6d 100644 --- a/site/src/pages/DeploySettingsPage/Sidebar.tsx +++ b/site/src/pages/DeploySettingsPage/Sidebar.tsx @@ -7,8 +7,7 @@ import MonitorHeartOutlined from "@mui/icons-material/MonitorHeartOutlined"; import Globe from "@mui/icons-material/PublicOutlined"; import ApprovalIcon from "@mui/icons-material/VerifiedUserOutlined"; import VpnKeyOutlined from "@mui/icons-material/VpnKeyOutlined"; -// import Token from "@mui/icons-material/Token"; -import { type FC } from "react"; +import type { FC } from "react"; import { GitIcon } from "components/Icons/GitIcon"; import { Sidebar as BaseSidebar, diff --git a/site/src/pages/DeploySettingsPage/UserAuthSettingsPage/UserAuthSettingsPage.tsx b/site/src/pages/DeploySettingsPage/UserAuthSettingsPage/UserAuthSettingsPage.tsx index 044ccf344c551..2e8876abb544f 100644 --- a/site/src/pages/DeploySettingsPage/UserAuthSettingsPage/UserAuthSettingsPage.tsx +++ b/site/src/pages/DeploySettingsPage/UserAuthSettingsPage/UserAuthSettingsPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { pageTitle } from "utils/page"; import { useDeploySettings } from "../DeploySettingsLayout"; From 3e13fc55bfd5721f70468116eab36126be22b7e1 Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Tue, 5 Mar 2024 23:07:47 +0000 Subject: [PATCH 11/12] =?UTF-8?q?=F0=9F=92=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/.eslintrc.yaml | 14 ++++++++------ site/jest.setup.ts | 2 +- site/src/App.tsx | 10 ++++------ .../pages/ExternalAuthPage/ExternalAuthPage.tsx | 2 +- .../ExternalAuthPage/ExternalAuthPageView.tsx | 4 ++-- site/src/pages/GroupsPage/CreateGroupPage.tsx | 2 +- site/src/pages/GroupsPage/CreateGroupPageView.tsx | 2 +- site/src/pages/GroupsPage/GroupPage.tsx | 2 +- site/src/pages/GroupsPage/GroupsPageView.tsx | 4 ++-- .../pages/HealthPage/AccessURLPage.stories.tsx | 8 ++++---- site/src/pages/HealthPage/DERPPage.tsx | 2 +- site/src/pages/HealthPage/DERPRegionPage.tsx | 2 +- .../pages/HealthPage/ProvisionerDaemonsPage.tsx | 2 +- .../pages/HealthPage/WebsocketPage.stories.tsx | 8 ++++---- .../HealthPage/WorkspaceProxyPage.stories.tsx | 8 ++++---- site/src/pages/HealthPage/WorkspaceProxyPage.tsx | 2 +- site/src/pages/HealthPage/storybook.tsx | 2 +- site/src/pages/LoginPage/LoginPage.tsx | 2 +- site/src/pages/LoginPage/LoginPageView.tsx | 4 ++-- site/src/pages/LoginPage/SignInForm.tsx | 4 ++-- site/src/pages/SetupPage/SetupPage.tsx | 2 +- site/src/pages/SetupPage/SetupPageView.tsx | 2 +- .../StarterTemplatePage/StarterTemplatePage.tsx | 2 +- .../StarterTemplatePageView.tsx | 2 +- .../StarterTemplatesPage/StarterTemplatesPage.tsx | 2 +- .../StarterTemplatesPageView.tsx | 4 ++-- .../TemplateFilesPage/TemplateFilesPage.tsx | 2 +- .../TemplateInsightsPage/DateRange.tsx | 2 +- .../TemplateInsightsPage/TemplateInsightsPage.tsx | 2 +- .../src/pages/TemplatePage/TemplatePageHeader.tsx | 2 +- .../TemplateVersionsPage/VersionRow.tsx | 4 ++-- .../TemplateVersionsPage/VersionsTable.tsx | 2 +- site/src/pages/TemplateSettingsPage/Sidebar.tsx | 2 +- .../TemplateSettingsForm.tsx | 4 ++-- .../TemplateSettingsPage.tsx | 2 +- .../TemplateSettingsPageView.tsx | 2 +- .../TemplatePermissionsPage.tsx | 2 +- .../TemplatePermissionsPageView.tsx | 8 +++++--- .../AutostopRequirementHelperText.tsx | 2 +- .../TemplateSchedulePage/ScheduleDialog.tsx | 6 +++--- .../TemplateSchedulePage/TemplateSchedulePage.tsx | 2 +- .../TemplateSchedulePageView.tsx | 2 +- .../TemplateVariablesPageView.tsx | 2 +- .../MissingTemplateVariablesDialog.tsx | 4 ++-- .../TemplateVersionEditor.tsx | 15 +++++---------- .../TemplateVersionEditorPage.test.tsx | 7 +++---- .../TemplateVersionEditorPage.tsx | 3 +-- .../TemplateVersionStatusBadge.tsx | 4 ++-- .../TemplateVersionPageView.tsx | 2 +- site/src/pages/TemplatesPage/EmptyTemplates.tsx | 4 ++-- site/src/pages/TemplatesPage/TemplatesPage.tsx | 2 +- .../src/pages/TemplatesPage/TemplatesPageView.tsx | 4 ++-- site/src/router.tsx | 9 +++++---- site/src/testHelpers/storybook.tsx | 2 +- site/src/theme/dark/experimental.ts | 2 +- site/src/theme/darkBlue/experimental.ts | 2 +- site/src/theme/externalImages.ts | 2 +- site/src/theme/light/experimental.ts | 2 +- site/src/theme/mui.ts | 2 +- site/src/utils/filetree.test.ts | 2 +- site/src/utils/formUtils.stories.tsx | 2 +- site/src/utils/formUtils.ts | 3 +-- site/src/utils/schedule.tsx | 2 +- site/src/utils/tar.test.ts | 8 ++++++-- site/src/utils/workspace.tsx | 2 +- 65 files changed, 116 insertions(+), 117 deletions(-) diff --git a/site/.eslintrc.yaml b/site/.eslintrc.yaml index 42470093d03fc..b28b1bac77066 100644 --- a/site/.eslintrc.yaml +++ b/site/.eslintrc.yaml @@ -52,12 +52,6 @@ overrides: testing-library/prefer-screen-queries: "off" root: true rules: - "@typescript-eslint/brace-style": - ["error", "1tbs", { "allowSingleLine": false }] - "@typescript-eslint/consistent-type-imports": - - error - - fixStyle: inline-type-imports - "@typescript-eslint/method-signature-style": ["error", "property"] # TODO: Investigate whether to enable this rule & fix and/or disable all its complaints "@typescript-eslint/no-misused-promises": "off" # TODO: Investigate whether to enable this rule & fix and/or disable all its complaints @@ -78,6 +72,14 @@ rules: "@typescript-eslint/restrict-template-expressions": "off" # TODO: Investigate whether to enable this rule & fix and/or disable all its complaints "@typescript-eslint/unbound-method": "off" + + "@typescript-eslint/brace-style": + ["error", "1tbs", { "allowSingleLine": false }] + "@typescript-eslint/consistent-type-imports": + - error + - fixStyle: inline-type-imports + "@typescript-eslint/method-signature-style": ["error", "property"] + "@typescript-eslint/no-import-type-side-effects": "error" # We're disabling the `no-namespace` rule to use a pattern of defining an interface, # and then defining functions that operate on that data via namespace. This is helpful for # dealing with immutable objects. This is a common pattern that shows up in some other diff --git a/site/jest.setup.ts b/site/jest.setup.ts index 789649ad6bf52..b584fb38414cd 100644 --- a/site/jest.setup.ts +++ b/site/jest.setup.ts @@ -1,9 +1,9 @@ import "@testing-library/jest-dom"; +import "jest-location-mock"; import { cleanup } from "@testing-library/react"; import { Blob } from "buffer"; import crypto from "crypto"; import jestFetchMock from "jest-fetch-mock"; -import "jest-location-mock"; import { useMemo } from "react"; import { TextEncoder, TextDecoder } from "util"; import type { Region } from "api/typesGenerated"; diff --git a/site/src/App.tsx b/site/src/App.tsx index aca962c9e6bae..9b0a554b107af 100644 --- a/site/src/App.tsx +++ b/site/src/App.tsx @@ -1,16 +1,14 @@ +import "./theme/globalFonts"; import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; import { type FC, type ReactNode, useEffect, useState } from "react"; import { HelmetProvider } from "react-helmet-async"; -import { router } from "./router"; -import { ThemeProvider } from "./contexts/ThemeProvider"; -import { AuthProvider } from "./contexts/auth/AuthProvider"; +import { QueryClient, QueryClientProvider } from "react-query"; +import { RouterProvider } from "react-router-dom"; import { ErrorBoundary } from "./components/ErrorBoundary/ErrorBoundary"; import { GlobalSnackbar } from "./components/GlobalSnackbar/GlobalSnackbar"; import { AuthProvider } from "./contexts/auth/AuthProvider"; import { ThemeProvider } from "./contexts/ThemeProvider"; -import "./theme/globalFonts"; -import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; -import { RouterProvider } from "react-router-dom"; +import { router } from "./router"; const defaultQueryClient = new QueryClient({ defaultOptions: { diff --git a/site/src/pages/ExternalAuthPage/ExternalAuthPage.tsx b/site/src/pages/ExternalAuthPage/ExternalAuthPage.tsx index d108a62b7368e..bd8756c3ede85 100644 --- a/site/src/pages/ExternalAuthPage/ExternalAuthPage.tsx +++ b/site/src/pages/ExternalAuthPage/ExternalAuthPage.tsx @@ -1,6 +1,6 @@ import Button from "@mui/material/Button"; import { isAxiosError } from "axios"; -import { type FC } from "react"; +import type { FC } from "react"; import { useQuery, useQueryClient } from "react-query"; import { useParams, useSearchParams } from "react-router-dom"; import type { ApiErrorResponse } from "api/errors"; diff --git a/site/src/pages/ExternalAuthPage/ExternalAuthPageView.tsx b/site/src/pages/ExternalAuthPage/ExternalAuthPageView.tsx index f271d083e5b33..59ec57e76ede1 100644 --- a/site/src/pages/ExternalAuthPage/ExternalAuthPageView.tsx +++ b/site/src/pages/ExternalAuthPage/ExternalAuthPageView.tsx @@ -1,11 +1,11 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import OpenInNewIcon from "@mui/icons-material/OpenInNew"; import RefreshIcon from "@mui/icons-material/Refresh"; import AlertTitle from "@mui/material/AlertTitle"; import CircularProgress from "@mui/material/CircularProgress"; import Link from "@mui/material/Link"; import Tooltip from "@mui/material/Tooltip"; -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; import type { ApiErrorResponse } from "api/errors"; import type { ExternalAuth, ExternalAuthDevice } from "api/typesGenerated"; import { Alert, AlertDetail } from "components/Alert/Alert"; diff --git a/site/src/pages/GroupsPage/CreateGroupPage.tsx b/site/src/pages/GroupsPage/CreateGroupPage.tsx index 8804773bb75df..e014c8537b90a 100644 --- a/site/src/pages/GroupsPage/CreateGroupPage.tsx +++ b/site/src/pages/GroupsPage/CreateGroupPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQueryClient } from "react-query"; import { useNavigate } from "react-router-dom"; diff --git a/site/src/pages/GroupsPage/CreateGroupPageView.tsx b/site/src/pages/GroupsPage/CreateGroupPageView.tsx index 83d81ff8dd0ce..5e5d044cc6310 100644 --- a/site/src/pages/GroupsPage/CreateGroupPageView.tsx +++ b/site/src/pages/GroupsPage/CreateGroupPageView.tsx @@ -1,6 +1,6 @@ import TextField from "@mui/material/TextField"; import { type FormikTouched, useFormik } from "formik"; -import { type FC } from "react"; +import type { FC } from "react"; import { useNavigate } from "react-router-dom"; import * as Yup from "yup"; import { isApiValidationError } from "api/errors"; diff --git a/site/src/pages/GroupsPage/GroupPage.tsx b/site/src/pages/GroupsPage/GroupPage.tsx index 1eee04c011da2..f1f3a7bd24fc9 100644 --- a/site/src/pages/GroupsPage/GroupPage.tsx +++ b/site/src/pages/GroupsPage/GroupPage.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import DeleteOutline from "@mui/icons-material/DeleteOutline"; import PersonAdd from "@mui/icons-material/PersonAdd"; import SettingsOutlined from "@mui/icons-material/SettingsOutlined"; diff --git a/site/src/pages/GroupsPage/GroupsPageView.tsx b/site/src/pages/GroupsPage/GroupsPageView.tsx index 55e8018a4b797..da87bb6e07580 100644 --- a/site/src/pages/GroupsPage/GroupsPageView.tsx +++ b/site/src/pages/GroupsPage/GroupsPageView.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import AddOutlined from "@mui/icons-material/AddOutlined"; import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; import AvatarGroup from "@mui/material/AvatarGroup"; @@ -10,7 +10,7 @@ import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; -import { type FC } from "react"; +import type { FC } from "react"; import { Link as RouterLink, useNavigate } from "react-router-dom"; import type { Group } from "api/typesGenerated"; import { AvatarData } from "components/AvatarData/AvatarData"; diff --git a/site/src/pages/HealthPage/AccessURLPage.stories.tsx b/site/src/pages/HealthPage/AccessURLPage.stories.tsx index 9940517a75f8e..5d937a8efc1a7 100644 --- a/site/src/pages/HealthPage/AccessURLPage.stories.tsx +++ b/site/src/pages/HealthPage/AccessURLPage.stories.tsx @@ -1,9 +1,9 @@ -import { StoryObj } from "@storybook/react"; -import { AccessURLPage } from "./AccessURLPage"; -import { generateMeta } from "./storybook"; +import type { StoryObj } from "@storybook/react"; import { HEALTH_QUERY_KEY } from "api/queries/debug"; +import type { HealthcheckReport } from "api/typesGenerated"; import { MockHealth } from "testHelpers/entities"; -import { HealthcheckReport } from "api/typesGenerated"; +import { AccessURLPage } from "./AccessURLPage"; +import { generateMeta } from "./storybook"; const meta = { title: "pages/Health/AccessURL", diff --git a/site/src/pages/HealthPage/DERPPage.tsx b/site/src/pages/HealthPage/DERPPage.tsx index 61d7a14032072..9f0033bfcfa66 100644 --- a/site/src/pages/HealthPage/DERPPage.tsx +++ b/site/src/pages/HealthPage/DERPPage.tsx @@ -1,7 +1,7 @@ import { useTheme } from "@emotion/react"; import LocationOnOutlined from "@mui/icons-material/LocationOnOutlined"; import Button from "@mui/material/Button"; -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { Link, useOutletContext } from "react-router-dom"; import type { diff --git a/site/src/pages/HealthPage/DERPRegionPage.tsx b/site/src/pages/HealthPage/DERPRegionPage.tsx index 359edefe23d56..39f37b4455b61 100644 --- a/site/src/pages/HealthPage/DERPRegionPage.tsx +++ b/site/src/pages/HealthPage/DERPRegionPage.tsx @@ -3,7 +3,7 @@ import ArrowBackOutlined from "@mui/icons-material/ArrowBackOutlined"; import CodeOutlined from "@mui/icons-material/CodeOutlined"; import TagOutlined from "@mui/icons-material/TagOutlined"; import Tooltip from "@mui/material/Tooltip"; -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { Link, useOutletContext, useParams } from "react-router-dom"; import type { diff --git a/site/src/pages/HealthPage/ProvisionerDaemonsPage.tsx b/site/src/pages/HealthPage/ProvisionerDaemonsPage.tsx index bace1d9740799..63ee9280987c5 100644 --- a/site/src/pages/HealthPage/ProvisionerDaemonsPage.tsx +++ b/site/src/pages/HealthPage/ProvisionerDaemonsPage.tsx @@ -6,7 +6,7 @@ import Sell from "@mui/icons-material/Sell"; import SwapHoriz from "@mui/icons-material/SwapHoriz"; import IconButton from "@mui/material/IconButton"; import Tooltip from "@mui/material/Tooltip"; -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useOutletContext } from "react-router-dom"; import type { HealthcheckReport } from "api/typesGenerated"; diff --git a/site/src/pages/HealthPage/WebsocketPage.stories.tsx b/site/src/pages/HealthPage/WebsocketPage.stories.tsx index d8235d74b6f16..bb82b87e396ad 100644 --- a/site/src/pages/HealthPage/WebsocketPage.stories.tsx +++ b/site/src/pages/HealthPage/WebsocketPage.stories.tsx @@ -1,9 +1,9 @@ -import { StoryObj } from "@storybook/react"; -import { WebsocketPage } from "./WebsocketPage"; -import { generateMeta } from "./storybook"; +import type { StoryObj } from "@storybook/react"; import { HEALTH_QUERY_KEY } from "api/queries/debug"; -import { HealthcheckReport } from "api/typesGenerated"; +import type { HealthcheckReport } from "api/typesGenerated"; import { MockHealth } from "testHelpers/entities"; +import { generateMeta } from "./storybook"; +import { WebsocketPage } from "./WebsocketPage"; const meta = { title: "pages/Health/Websocket", diff --git a/site/src/pages/HealthPage/WorkspaceProxyPage.stories.tsx b/site/src/pages/HealthPage/WorkspaceProxyPage.stories.tsx index 408ba7741ceb2..9cc29a0f247ec 100644 --- a/site/src/pages/HealthPage/WorkspaceProxyPage.stories.tsx +++ b/site/src/pages/HealthPage/WorkspaceProxyPage.stories.tsx @@ -1,9 +1,9 @@ -import { StoryObj } from "@storybook/react"; -import { WorkspaceProxyPage } from "./WorkspaceProxyPage"; -import { generateMeta } from "./storybook"; -import { HealthcheckReport } from "api/typesGenerated"; +import type { StoryObj } from "@storybook/react"; import { HEALTH_QUERY_KEY } from "api/queries/debug"; +import type { HealthcheckReport } from "api/typesGenerated"; import { MockHealth } from "testHelpers/entities"; +import { generateMeta } from "./storybook"; +import { WorkspaceProxyPage } from "./WorkspaceProxyPage"; const meta = { title: "pages/Health/WorkspaceProxy", diff --git a/site/src/pages/HealthPage/WorkspaceProxyPage.tsx b/site/src/pages/HealthPage/WorkspaceProxyPage.tsx index 2f8d97a0f24ea..ae387874e82be 100644 --- a/site/src/pages/HealthPage/WorkspaceProxyPage.tsx +++ b/site/src/pages/HealthPage/WorkspaceProxyPage.tsx @@ -2,7 +2,7 @@ import { useTheme } from "@emotion/react"; import PublicOutlined from "@mui/icons-material/PublicOutlined"; import TagOutlined from "@mui/icons-material/TagOutlined"; import Tooltip from "@mui/material/Tooltip"; -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useOutletContext } from "react-router-dom"; import type { HealthcheckReport } from "api/typesGenerated"; diff --git a/site/src/pages/HealthPage/storybook.tsx b/site/src/pages/HealthPage/storybook.tsx index 9889982a4cb03..76f96cfab36ec 100644 --- a/site/src/pages/HealthPage/storybook.tsx +++ b/site/src/pages/HealthPage/storybook.tsx @@ -1,8 +1,8 @@ import type { Meta } from "@storybook/react"; -import type { RouteDefinition } from "storybook-addon-react-router-v6"; import { reactRouterParameters, reactRouterOutlet, + type RouteDefinition, } from "storybook-addon-react-router-v6"; import { HEALTH_QUERY_KEY, HEALTH_QUERY_SETTINGS_KEY } from "api/queries/debug"; import { chromatic } from "testHelpers/chromatic"; diff --git a/site/src/pages/LoginPage/LoginPage.tsx b/site/src/pages/LoginPage/LoginPage.tsx index dd34ff9b3aba6..1836cf6384c3a 100644 --- a/site/src/pages/LoginPage/LoginPage.tsx +++ b/site/src/pages/LoginPage/LoginPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { Navigate, useLocation, useNavigate } from "react-router-dom"; import { useAuth } from "contexts/auth/useAuth"; diff --git a/site/src/pages/LoginPage/LoginPageView.tsx b/site/src/pages/LoginPage/LoginPageView.tsx index 8e1265fe71cf9..b3039e5ad9da1 100644 --- a/site/src/pages/LoginPage/LoginPageView.tsx +++ b/site/src/pages/LoginPage/LoginPageView.tsx @@ -1,5 +1,5 @@ -import { type Interpolation, type Theme } from "@emotion/react"; -import { type FC } from "react"; +import type { Interpolation, Theme } from "@emotion/react"; +import type { FC } from "react"; import { useLocation } from "react-router-dom"; import type { AuthMethods } from "api/typesGenerated"; import { CoderIcon } from "components/Icons/CoderIcon"; diff --git a/site/src/pages/LoginPage/SignInForm.tsx b/site/src/pages/LoginPage/SignInForm.tsx index e67c7ba5c2bac..4efc0fbf7adfd 100644 --- a/site/src/pages/LoginPage/SignInForm.tsx +++ b/site/src/pages/LoginPage/SignInForm.tsx @@ -1,5 +1,5 @@ -import { type Interpolation, type Theme } from "@emotion/react"; -import { type FC, type ReactNode } from "react"; +import type { Interpolation, Theme } from "@emotion/react"; +import type { FC, ReactNode } from "react"; import type { AuthMethods } from "api/typesGenerated"; import { Alert } from "components/Alert/Alert"; import { ErrorAlert } from "components/Alert/ErrorAlert"; diff --git a/site/src/pages/SetupPage/SetupPage.tsx b/site/src/pages/SetupPage/SetupPage.tsx index 30c3211b61c78..9a7128be2bd27 100644 --- a/site/src/pages/SetupPage/SetupPage.tsx +++ b/site/src/pages/SetupPage/SetupPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation } from "react-query"; import { Navigate, useNavigate } from "react-router-dom"; diff --git a/site/src/pages/SetupPage/SetupPageView.tsx b/site/src/pages/SetupPage/SetupPageView.tsx index bb58a48d9ea21..af673acacc333 100644 --- a/site/src/pages/SetupPage/SetupPageView.tsx +++ b/site/src/pages/SetupPage/SetupPageView.tsx @@ -5,7 +5,7 @@ import Link from "@mui/material/Link"; import MenuItem from "@mui/material/MenuItem"; import TextField from "@mui/material/TextField"; import { type FormikContextType, useFormik } from "formik"; -import { type FC } from "react"; +import type { FC } from "react"; import * as Yup from "yup"; import type * as TypesGen from "api/typesGenerated"; import { FormFields, VerticalForm } from "components/Form/Form"; diff --git a/site/src/pages/StarterTemplatePage/StarterTemplatePage.tsx b/site/src/pages/StarterTemplatePage/StarterTemplatePage.tsx index 32f54cd821482..676e940160b67 100644 --- a/site/src/pages/StarterTemplatePage/StarterTemplatePage.tsx +++ b/site/src/pages/StarterTemplatePage/StarterTemplatePage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { useParams } from "react-router-dom"; diff --git a/site/src/pages/StarterTemplatePage/StarterTemplatePageView.tsx b/site/src/pages/StarterTemplatePage/StarterTemplatePageView.tsx index 19b90d44b9caf..4e3a165f34c80 100644 --- a/site/src/pages/StarterTemplatePage/StarterTemplatePageView.tsx +++ b/site/src/pages/StarterTemplatePage/StarterTemplatePageView.tsx @@ -2,7 +2,7 @@ import { useTheme } from "@emotion/react"; import PlusIcon from "@mui/icons-material/AddOutlined"; import ViewCodeIcon from "@mui/icons-material/OpenInNewOutlined"; import Button from "@mui/material/Button"; -import { type FC } from "react"; +import type { FC } from "react"; import { Link } from "react-router-dom"; import type { TemplateExample } from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; diff --git a/site/src/pages/StarterTemplatesPage/StarterTemplatesPage.tsx b/site/src/pages/StarterTemplatesPage/StarterTemplatesPage.tsx index 078bcab3280af..342523d81ec3e 100644 --- a/site/src/pages/StarterTemplatesPage/StarterTemplatesPage.tsx +++ b/site/src/pages/StarterTemplatesPage/StarterTemplatesPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { templateExamples } from "api/queries/templates"; diff --git a/site/src/pages/StarterTemplatesPage/StarterTemplatesPageView.tsx b/site/src/pages/StarterTemplatesPage/StarterTemplatesPageView.tsx index ffee1751d8b26..e0a6c4b975747 100644 --- a/site/src/pages/StarterTemplatesPage/StarterTemplatesPageView.tsx +++ b/site/src/pages/StarterTemplatesPage/StarterTemplatesPageView.tsx @@ -1,5 +1,5 @@ -import { type Interpolation, type Theme } from "@emotion/react"; -import { type FC } from "react"; +import type { Interpolation, Theme } from "@emotion/react"; +import type { FC } from "react"; import { Link, useSearchParams } from "react-router-dom"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Loader } from "components/Loader/Loader"; diff --git a/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.tsx b/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.tsx index 2b4fd6d232e10..473dafdef4253 100644 --- a/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.tsx +++ b/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { previousTemplateVersion, templateFiles } from "api/queries/templates"; diff --git a/site/src/pages/TemplatePage/TemplateInsightsPage/DateRange.tsx b/site/src/pages/TemplatePage/TemplateInsightsPage/DateRange.tsx index 2fdaefb7dfdbb..65f85d31799a2 100644 --- a/site/src/pages/TemplatePage/TemplateInsightsPage/DateRange.tsx +++ b/site/src/pages/TemplatePage/TemplateInsightsPage/DateRange.tsx @@ -1,6 +1,6 @@ import "react-date-range/dist/styles.css"; import "react-date-range/dist/theme/default.css"; -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import ArrowRightAltOutlined from "@mui/icons-material/ArrowRightAltOutlined"; import Button from "@mui/material/Button"; import { diff --git a/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx b/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx index c9a7c75e167af..b20ec3f370670 100644 --- a/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx +++ b/site/src/pages/TemplatePage/TemplateInsightsPage/TemplateInsightsPage.tsx @@ -57,7 +57,7 @@ import { useTemplateLayoutContext } from "pages/TemplatePage/TemplateLayout"; import { getLatencyColor } from "utils/latency"; import { getTemplatePageTitle } from "../utils"; import { DateRange as DailyPicker, type DateRangeValue } from "./DateRange"; -import { IntervalMenu, type InsightsInterval } from "./IntervalMenu"; +import { type InsightsInterval, IntervalMenu } from "./IntervalMenu"; import { lastWeeks } from "./utils"; import { WeekPicker, numberOfWeeksOptions } from "./WeekPicker"; diff --git a/site/src/pages/TemplatePage/TemplatePageHeader.tsx b/site/src/pages/TemplatePage/TemplatePageHeader.tsx index f772b29e9601a..7b74d2924da69 100644 --- a/site/src/pages/TemplatePage/TemplatePageHeader.tsx +++ b/site/src/pages/TemplatePage/TemplatePageHeader.tsx @@ -5,7 +5,7 @@ import CopyIcon from "@mui/icons-material/FileCopyOutlined"; import SettingsIcon from "@mui/icons-material/SettingsOutlined"; import Button from "@mui/material/Button"; import Divider from "@mui/material/Divider"; -import { type FC } from "react"; +import type { FC } from "react"; import { useQuery } from "react-query"; import { Link as RouterLink, useNavigate } from "react-router-dom"; import { workspaces } from "api/queries/workspaces"; diff --git a/site/src/pages/TemplatePage/TemplateVersionsPage/VersionRow.tsx b/site/src/pages/TemplatePage/TemplateVersionsPage/VersionRow.tsx index 07f9db564ffc2..9745689c810b1 100644 --- a/site/src/pages/TemplatePage/TemplateVersionsPage/VersionRow.tsx +++ b/site/src/pages/TemplatePage/TemplateVersionsPage/VersionRow.tsx @@ -1,7 +1,7 @@ -import { type CSSObject, type Interpolation, type Theme } from "@emotion/react"; +import type { CSSObject, Interpolation, Theme } from "@emotion/react"; import Button from "@mui/material/Button"; import TableCell from "@mui/material/TableCell"; -import { type FC } from "react"; +import type { FC } from "react"; import { useNavigate } from "react-router-dom"; import type { TemplateVersion } from "api/typesGenerated"; import { InfoTooltip } from "components/InfoTooltip/InfoTooltip"; diff --git a/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.tsx b/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.tsx index 0ebcc7b9ea2d0..3a482b66cc8f8 100644 --- a/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.tsx +++ b/site/src/pages/TemplatePage/TemplateVersionsPage/VersionsTable.tsx @@ -3,7 +3,7 @@ import TableBody from "@mui/material/TableBody"; import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableRow from "@mui/material/TableRow"; -import { type FC } from "react"; +import type { FC } from "react"; import type * as TypesGen from "api/typesGenerated"; import { EmptyState } from "components/EmptyState/EmptyState"; import { TableLoader } from "components/TableLoader/TableLoader"; diff --git a/site/src/pages/TemplateSettingsPage/Sidebar.tsx b/site/src/pages/TemplateSettingsPage/Sidebar.tsx index 6e871705468b8..c2c22bb75a90e 100644 --- a/site/src/pages/TemplateSettingsPage/Sidebar.tsx +++ b/site/src/pages/TemplateSettingsPage/Sidebar.tsx @@ -2,7 +2,7 @@ import VariablesIcon from "@mui/icons-material/CodeOutlined"; import SecurityIcon from "@mui/icons-material/LockOutlined"; import GeneralIcon from "@mui/icons-material/SettingsOutlined"; import ScheduleIcon from "@mui/icons-material/TimerOutlined"; -import { type FC } from "react"; +import type { FC } from "react"; import type { Template } from "api/typesGenerated"; import { ExternalAvatar } from "components/Avatar/Avatar"; import { diff --git a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsForm.tsx b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsForm.tsx index 73d6ec4ab9ec2..8fec6f6b1a808 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsForm.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsForm.tsx @@ -1,9 +1,9 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import Checkbox from "@mui/material/Checkbox"; import MenuItem from "@mui/material/MenuItem"; import TextField from "@mui/material/TextField"; import { type FormikContextType, type FormikTouched, useFormik } from "formik"; -import { type FC } from "react"; +import type { FC } from "react"; import * as Yup from "yup"; import { WorkspaceAppSharingLevels, diff --git a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx index 703a64789c986..a035e586e10f2 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQueryClient } from "react-query"; import { useNavigate, useParams } from "react-router-dom"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.tsx b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.tsx index 46222b8de2ec1..40303abf178d8 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.tsx @@ -1,4 +1,4 @@ -import { type ComponentProps, type FC } from "react"; +import type { ComponentProps, FC } from "react"; import type { Template, UpdateTemplateMeta } from "api/typesGenerated"; import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; import { TemplateSettingsForm } from "./TemplateSettingsForm"; diff --git a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPage.tsx b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPage.tsx index 31318c930a96a..d350829eab8bf 100644 --- a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPage.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { setGroupRole, setUserRole, templateACL } from "api/queries/templates"; diff --git a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx index 62690d1408fac..6f75099bbfb2d 100644 --- a/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import PersonAdd from "@mui/icons-material/PersonAdd"; import LoadingButton from "@mui/lab/LoadingButton"; import MenuItem from "@mui/material/MenuItem"; @@ -33,8 +33,10 @@ import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; import { Stack } from "components/Stack/Stack"; import { TableLoader } from "components/TableLoader/TableLoader"; import { getGroupSubtitle } from "utils/groups"; -import type { UserOrGroupAutocompleteValue } from "./UserOrGroupAutocomplete"; -import { UserOrGroupAutocomplete } from "./UserOrGroupAutocomplete"; +import { + UserOrGroupAutocomplete, + type UserOrGroupAutocompleteValue, +} from "./UserOrGroupAutocomplete"; type AddTemplateUserOrGroupProps = { organizationId: string; diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/AutostopRequirementHelperText.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/AutostopRequirementHelperText.tsx index 2ae948bcfcc9e..d51df9133907d 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/AutostopRequirementHelperText.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/AutostopRequirementHelperText.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import type { Template } from "api/typesGenerated"; import type { TemplateAutostopRequirementDaysValue } from "utils/schedule"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/ScheduleDialog.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/ScheduleDialog.tsx index f0de8be9232da..357c5c7c53d8b 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/ScheduleDialog.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/ScheduleDialog.tsx @@ -1,10 +1,10 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import Checkbox from "@mui/material/Checkbox"; import DialogActions from "@mui/material/DialogActions"; import FormControlLabel from "@mui/material/FormControlLabel"; import { Stack } from "@mui/system"; -import { type FC } from "react"; -import { type ConfirmDialogProps } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; +import type { FC } from "react"; +import type { ConfirmDialogProps } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; import { Dialog, DialogActionButtons } from "components/Dialogs/Dialog"; export interface ScheduleDialogProps extends ConfirmDialogProps { diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.tsx index b0a790ce757b6..59111ddd4b72e 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQueryClient } from "react-query"; import { useNavigate, useParams } from "react-router-dom"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.tsx index 8ad9c4d1391d4..2ff102d61deae 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.tsx @@ -1,4 +1,4 @@ -import { type ComponentProps, type FC } from "react"; +import type { ComponentProps, FC } from "react"; import type { Template, UpdateTemplateMeta } from "api/typesGenerated"; import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader"; import { TemplateScheduleForm } from "./TemplateScheduleForm"; diff --git a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.tsx b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.tsx index 1cf91f6e07084..7b1ad61dc0bee 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateVariablesPage/TemplateVariablesPageView.tsx @@ -1,4 +1,4 @@ -import { type ComponentProps, type FC } from "react"; +import type { ComponentProps, FC } from "react"; import type { CreateTemplateVersionRequest, TemplateVersion, diff --git a/site/src/pages/TemplateVersionEditorPage/MissingTemplateVariablesDialog.tsx b/site/src/pages/TemplateVersionEditorPage/MissingTemplateVariablesDialog.tsx index b28568a8ca944..289806fa6a79f 100644 --- a/site/src/pages/TemplateVersionEditorPage/MissingTemplateVariablesDialog.tsx +++ b/site/src/pages/TemplateVersionEditorPage/MissingTemplateVariablesDialog.tsx @@ -1,5 +1,5 @@ import { css } from "@emotion/css"; -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import Button from "@mui/material/Button"; import Dialog from "@mui/material/Dialog"; import DialogActions from "@mui/material/DialogActions"; @@ -11,7 +11,7 @@ import type { TemplateVersionVariable, VariableValue, } from "api/typesGenerated"; -import { type DialogProps } from "components/Dialogs/Dialog"; +import type { DialogProps } from "components/Dialogs/Dialog"; import { FormFields, VerticalForm } from "components/Form/Form"; import { Loader } from "components/Loader/Loader"; import { VariableInput } from "pages/CreateTemplatePage/VariableInput"; diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx index 3634461e62d77..4dbff36a1a419 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx @@ -1,11 +1,3 @@ -import Button from "@mui/material/Button"; -import IconButton from "@mui/material/IconButton"; -import Tooltip from "@mui/material/Tooltip"; -import CreateIcon from "@mui/icons-material/AddOutlined"; -import { - Link as RouterLink, - unstable_usePrompt as usePrompt, -} from "react-router-dom"; import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import CreateIcon from "@mui/icons-material/AddOutlined"; import ArrowBackOutlined from "@mui/icons-material/ArrowBackOutlined"; @@ -18,7 +10,10 @@ import ButtonGroup from "@mui/material/ButtonGroup"; import IconButton from "@mui/material/IconButton"; import Tooltip from "@mui/material/Tooltip"; import { type FC, useCallback, useEffect, useRef, useState } from "react"; -import { Link as RouterLink } from "react-router-dom"; +import { + Link as RouterLink, + unstable_usePrompt as usePrompt, +} from "react-router-dom"; import type { ProvisionerJobLog, Template, @@ -44,10 +39,10 @@ import { TemplateResourcesTable } from "modules/templates/TemplateResourcesTable import { WorkspaceBuildLogs } from "modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; import type { PublishVersionData } from "pages/TemplateVersionEditorPage/types"; import { MONOSPACE_FONT_FAMILY } from "theme/constants"; -import type { FileTree } from "utils/filetree"; import { createFile, existsFile, + type FileTree, getFileText, isFolder, moveFile, diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx index 04d60ffccd373..39f44f7d230ca 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx @@ -20,10 +20,9 @@ import { waitForLoaderToBeRemoved, } from "testHelpers/renderHelpers"; import { server } from "testHelpers/server"; -import { rest } from "msw"; -import { AppProviders } from "App"; -import { TemplateVersion } from "api/typesGenerated"; -import { MonacoEditorProps } from "./MonacoEditor"; +import type { MonacoEditorProps } from "./MonacoEditor"; +import { Language } from "./PublishTemplateVersionDialog"; +import TemplateVersionEditorPage from "./TemplateVersionEditorPage"; // For some reason this component in Jest is throwing a MUI style warning so, // since we don't need it for this test, we can mock it out diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx index db57d4ca1adce..67af391df324b 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx @@ -20,8 +20,7 @@ import { displayError } from "components/GlobalSnackbar/utils"; import { FullScreenLoader } from "components/Loader/FullScreenLoader"; import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { useWatchVersionLogs } from "modules/templates/useWatchVersionLogs"; -import type { FileTree } from "utils/filetree"; -import { traverse } from "utils/filetree"; +import { type FileTree, traverse } from "utils/filetree"; import { pageTitle } from "utils/page"; import { TarReader, TarWriter } from "utils/tar"; import { createTemplateVersionFileTree } from "utils/templateVersion"; diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionStatusBadge.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionStatusBadge.tsx index e619434d7dedd..625927020d8d4 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionStatusBadge.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionStatusBadge.tsx @@ -1,9 +1,9 @@ import CheckIcon from "@mui/icons-material/CheckOutlined"; import ErrorIcon from "@mui/icons-material/ErrorOutline"; -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; import type { TemplateVersion } from "api/typesGenerated"; import { Pill, PillSpinner } from "components/Pill/Pill"; -import { type ThemeRole } from "theme/roles"; +import type { ThemeRole } from "theme/roles"; interface TemplateVersionStatusBadgeProps { version: TemplateVersion; diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx index 4bd2abc85aa8b..c9de8562d59f6 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx @@ -1,7 +1,7 @@ import AddIcon from "@mui/icons-material/Add"; import EditIcon from "@mui/icons-material/Edit"; import Button from "@mui/material/Button"; -import { type FC } from "react"; +import type { FC } from "react"; import { Link as RouterLink } from "react-router-dom"; import type { TemplateVersion } from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; diff --git a/site/src/pages/TemplatesPage/EmptyTemplates.tsx b/site/src/pages/TemplatesPage/EmptyTemplates.tsx index 7a0a537482950..7bbf16830186f 100644 --- a/site/src/pages/TemplatesPage/EmptyTemplates.tsx +++ b/site/src/pages/TemplatesPage/EmptyTemplates.tsx @@ -1,7 +1,7 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import Button from "@mui/material/Button"; import Link from "@mui/material/Link"; -import { type FC } from "react"; +import type { FC } from "react"; import { Link as RouterLink } from "react-router-dom"; import type { TemplateExample } from "api/typesGenerated"; import { CodeExample } from "components/CodeExample/CodeExample"; diff --git a/site/src/pages/TemplatesPage/TemplatesPage.tsx b/site/src/pages/TemplatesPage/TemplatesPage.tsx index 33ca81fee0b5e..e19c39572ff25 100644 --- a/site/src/pages/TemplatesPage/TemplatesPage.tsx +++ b/site/src/pages/TemplatesPage/TemplatesPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { templateExamples, templates } from "api/queries/templates"; diff --git a/site/src/pages/TemplatesPage/TemplatesPageView.tsx b/site/src/pages/TemplatesPage/TemplatesPageView.tsx index dbe671b58f954..fd7be676da6cb 100644 --- a/site/src/pages/TemplatesPage/TemplatesPageView.tsx +++ b/site/src/pages/TemplatesPage/TemplatesPageView.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import ArrowForwardOutlined from "@mui/icons-material/ArrowForwardOutlined"; import Button from "@mui/material/Button"; import Skeleton from "@mui/material/Skeleton"; @@ -8,7 +8,7 @@ import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; -import { type FC } from "react"; +import type { FC } from "react"; import { useNavigate } from "react-router-dom"; import type { Template, TemplateExample } from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; diff --git a/site/src/router.tsx b/site/src/router.tsx index 8334ef6bdc7a2..114d53e7a24db 100644 --- a/site/src/router.tsx +++ b/site/src/router.tsx @@ -1,13 +1,14 @@ import { Suspense, lazy } from "react"; import { - Route, createBrowserRouter, - Navigate, createRoutesFromChildren, + Navigate, Outlet, + Route, } from "react-router-dom"; -import { DashboardLayout } from "./modules/dashboard/DashboardLayout"; +import { FullScreenLoader } from "./components/Loader/FullScreenLoader"; import { RequireAuth } from "./contexts/auth/RequireAuth"; +import { DashboardLayout } from "./modules/dashboard/DashboardLayout"; import AuditPage from "./pages/AuditPage/AuditPage"; import { DeploySettingsLayout } from "./pages/DeploySettingsPage/DeploySettingsLayout"; import { HealthLayout } from "./pages/HealthPage/HealthLayout"; @@ -20,7 +21,7 @@ import UserSettingsLayout from "./pages/UserSettingsPage/Layout"; import { UsersLayout } from "./pages/UsersPage/UsersLayout"; import UsersPage from "./pages/UsersPage/UsersPage"; import { WorkspaceSettingsLayout } from "./pages/WorkspaceSettingsPage/WorkspaceSettingsLayout"; -import { FullScreenLoader } from "components/Loader/FullScreenLoader"; +import WorkspacesPage from "./pages/WorkspacesPage/WorkspacesPage"; // Lazy load pages // - Pages that are secondary, not in the main navigation or not usually accessed diff --git a/site/src/testHelpers/storybook.tsx b/site/src/testHelpers/storybook.tsx index ac8f062631468..232ffb82aa103 100644 --- a/site/src/testHelpers/storybook.tsx +++ b/site/src/testHelpers/storybook.tsx @@ -1,5 +1,5 @@ import type { StoryContext } from "@storybook/react"; -import { type FC } from "react"; +import type { FC } from "react"; import { withDefaultFeatures } from "api/api"; import type { Entitlements } from "api/typesGenerated"; import { DashboardContext } from "modules/dashboard/DashboardProvider"; diff --git a/site/src/theme/dark/experimental.ts b/site/src/theme/dark/experimental.ts index 21bb98c69d62d..4fd064fcd190e 100644 --- a/site/src/theme/dark/experimental.ts +++ b/site/src/theme/dark/experimental.ts @@ -1,4 +1,4 @@ -import { type NewTheme } from "../experimental"; +import type { NewTheme } from "../experimental"; import colors from "../tailwindColors"; export default { diff --git a/site/src/theme/darkBlue/experimental.ts b/site/src/theme/darkBlue/experimental.ts index a1d3b069bb0ce..ab395a684b88b 100644 --- a/site/src/theme/darkBlue/experimental.ts +++ b/site/src/theme/darkBlue/experimental.ts @@ -1,4 +1,4 @@ -import { type NewTheme } from "../experimental"; +import type { NewTheme } from "../experimental"; import colors from "../tailwindColors"; export default { diff --git a/site/src/theme/externalImages.ts b/site/src/theme/externalImages.ts index 9d55cd20d4b07..f2e5cca580848 100644 --- a/site/src/theme/externalImages.ts +++ b/site/src/theme/externalImages.ts @@ -1,4 +1,4 @@ -import { type CSSObject } from "@emotion/react"; +import type { CSSObject } from "@emotion/react"; export type ExternalImageMode = keyof ExternalImageModeStyles; diff --git a/site/src/theme/light/experimental.ts b/site/src/theme/light/experimental.ts index 25a6929266211..60028c4d7b8b3 100644 --- a/site/src/theme/light/experimental.ts +++ b/site/src/theme/light/experimental.ts @@ -1,4 +1,4 @@ -import { type NewTheme } from "../experimental"; +import type { NewTheme } from "../experimental"; import colors from "../tailwindColors"; export default { diff --git a/site/src/theme/mui.ts b/site/src/theme/mui.ts index 5e44ada19fcd9..555aa23e641bc 100644 --- a/site/src/theme/mui.ts +++ b/site/src/theme/mui.ts @@ -2,7 +2,7 @@ -- we need to hack around the MUI types a little */ // eslint-disable-next-line no-restricted-imports -- we use the classes for customization import { alertClasses } from "@mui/material/Alert"; -import { type ThemeOptions } from "@mui/material/styles"; +import type { ThemeOptions } from "@mui/material/styles"; import { BODY_FONT_FAMILY, borderRadius, diff --git a/site/src/utils/filetree.test.ts b/site/src/utils/filetree.test.ts index 712139066b9a6..a89a990637c1d 100644 --- a/site/src/utils/filetree.test.ts +++ b/site/src/utils/filetree.test.ts @@ -1,6 +1,6 @@ -import type { FileTree } from "./filetree"; import { existsFile, + type FileTree, getFileContent, isFolder, moveFile, diff --git a/site/src/utils/formUtils.stories.tsx b/site/src/utils/formUtils.stories.tsx index 83e3142549da6..96e7031896f31 100644 --- a/site/src/utils/formUtils.stories.tsx +++ b/site/src/utils/formUtils.stories.tsx @@ -2,7 +2,7 @@ import TextField from "@mui/material/TextField"; import { action } from "@storybook/addon-actions"; import type { Meta, StoryObj } from "@storybook/react"; import { useFormik } from "formik"; -import { type FC } from "react"; +import type { FC } from "react"; import { Form } from "components/Form/Form"; import { getFormHelpers } from "./formUtils"; diff --git a/site/src/utils/formUtils.ts b/site/src/utils/formUtils.ts index e7c13e6347ec6..c48eeb301383f 100644 --- a/site/src/utils/formUtils.ts +++ b/site/src/utils/formUtils.ts @@ -1,5 +1,4 @@ -import type { FormikContextType, FormikErrors } from "formik"; -import { getIn } from "formik"; +import { type FormikContextType, type FormikErrors, getIn } from "formik"; import type { ChangeEvent, ChangeEventHandler, diff --git a/site/src/utils/schedule.tsx b/site/src/utils/schedule.tsx index da58d9dab6d5f..e252cd87f70ff 100644 --- a/site/src/utils/schedule.tsx +++ b/site/src/utils/schedule.tsx @@ -6,7 +6,7 @@ import duration from "dayjs/plugin/duration"; import relativeTime from "dayjs/plugin/relativeTime"; import timezone from "dayjs/plugin/timezone"; import utc from "dayjs/plugin/utc"; -import { type ReactNode } from "react"; +import type { ReactNode } from "react"; import { Link as RouterLink } from "react-router-dom"; import type { Template, Workspace } from "api/typesGenerated"; import { HelpTooltipTitle } from "components/HelpTooltip/HelpTooltip"; diff --git a/site/src/utils/tar.test.ts b/site/src/utils/tar.test.ts index 5ca2719b26e90..cdd337adf6697 100644 --- a/site/src/utils/tar.test.ts +++ b/site/src/utils/tar.test.ts @@ -1,5 +1,9 @@ -import type { ITarFileInfo } from "./tar"; -import { TarReader, TarWriter, TarFileTypeCodes } from "./tar"; +import { + type ITarFileInfo, + TarFileTypeCodes, + TarReader, + TarWriter, +} from "./tar"; const mtime = 1666666666666; diff --git a/site/src/utils/workspace.tsx b/site/src/utils/workspace.tsx index fd8a3262d1663..2bc789e0d0395 100644 --- a/site/src/utils/workspace.tsx +++ b/site/src/utils/workspace.tsx @@ -1,4 +1,4 @@ -import { type Theme } from "@emotion/react"; +import type { Theme } from "@emotion/react"; import ErrorIcon from "@mui/icons-material/ErrorOutline"; import QueuedIcon from "@mui/icons-material/HourglassEmpty"; import PlayIcon from "@mui/icons-material/PlayArrowOutlined"; From e92a7db7752af882580dee487f2fcd1ca16dd82a Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Tue, 5 Mar 2024 23:18:59 +0000 Subject: [PATCH 12/12] =?UTF-8?q?=F0=9F=8C=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/src/pages/TerminalPage/TerminalAlerts.tsx | 3 +-- site/src/pages/TerminalPage/TerminalPage.test.tsx | 2 +- site/src/pages/TerminalPage/TerminalPage.tsx | 4 ++-- .../UserSettingsPage/AccountPage/AccountForm.tsx | 3 +-- .../UserSettingsPage/AccountPage/AccountPage.tsx | 2 +- .../AccountPage/AccountUserGroups.stories.tsx | 4 ++-- .../AccountPage/AccountUserGroups.tsx | 2 +- .../AppearancePage/AppearanceForm.tsx | 4 ++-- .../AppearancePage/AppearancePage.tsx | 2 +- .../OAuth2ProviderPage/OAuth2ProviderPageView.tsx | 2 +- .../UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx | 2 +- .../UserSettingsPage/SchedulePage/ScheduleForm.tsx | 3 +-- .../UserSettingsPage/SchedulePage/SchedulePage.tsx | 2 +- site/src/pages/UserSettingsPage/Section.tsx | 4 ++-- .../UserSettingsPage/SecurityPage/SecurityForm.tsx | 3 +-- .../UserSettingsPage/SecurityPage/SecurityPage.tsx | 2 +- site/src/pages/UserSettingsPage/Sidebar.tsx | 2 +- .../UserSettingsPage/TokensPage/TokensPageView.tsx | 2 +- site/src/pages/UserSettingsPage/TokensPage/hooks.ts | 8 ++++++-- .../WorkspaceProxyPage/WorkspaceProxyPage.tsx | 2 +- .../WorkspaceProxyPage/WorkspaceProxyView.tsx | 2 +- site/src/pages/UsersPage/ResetPasswordDialog.tsx | 2 +- site/src/pages/UsersPage/UsersFilter.tsx | 4 ++-- site/src/pages/UsersPage/UsersPageView.stories.tsx | 2 +- site/src/pages/UsersPage/UsersPageView.tsx | 4 ++-- .../pages/UsersPage/UsersTable/EditRolesButton.tsx | 4 ++-- .../src/pages/UsersPage/UsersTable/UserGroupsCell.tsx | 2 +- site/src/pages/UsersPage/UsersTable/UserRoleCell.tsx | 4 ++-- site/src/pages/UsersPage/UsersTable/UsersTable.tsx | 4 ++-- .../src/pages/UsersPage/UsersTable/UsersTableBody.tsx | 6 +++--- site/src/pages/WorkspaceBuildPage/Sidebar.tsx | 2 +- .../WorkspaceBuildPage/WorkspaceBuildPageView.tsx | 2 +- site/src/pages/WorkspacePage/BuildRow.tsx | 4 ++-- site/src/pages/WorkspacePage/HistorySidebar.tsx | 2 +- site/src/pages/WorkspacePage/ResourceMetadata.tsx | 2 +- site/src/pages/WorkspacePage/ResourcesSidebar.tsx | 2 +- .../WorkspacePage/UpdateBuildParametersDialog.tsx | 4 ++-- site/src/pages/WorkspacePage/Workspace.tsx | 4 ++-- .../WorkspaceActions/BuildParametersPopover.tsx | 2 +- .../pages/WorkspacePage/WorkspaceActions/Buttons.tsx | 2 +- .../WorkspacePage/WorkspaceActions/DebugButton.tsx | 2 +- .../WorkspacePage/WorkspaceActions/RetryButton.tsx | 2 +- .../pages/WorkspacePage/WorkspaceActions/constants.ts | 2 +- .../pages/WorkspacePage/WorkspaceBuildProgress.tsx | 2 +- .../WorkspaceDeleteDialog/WorkspaceDeleteDialog.tsx | 2 +- .../pages/WorkspacePage/WorkspaceDeletedBanner.tsx | 2 +- .../WorkspaceNotifications/Notifications.tsx | 6 +++--- .../WorkspaceNotifications/WorkspaceNotifications.tsx | 4 ++-- .../WorkspacePage/WorkspaceScheduleControls.test.tsx | 2 +- .../pages/WorkspacePage/WorkspaceScheduleControls.tsx | 2 +- site/src/pages/WorkspacePage/WorkspaceTopbar.tsx | 2 +- site/src/pages/WorkspaceSettingsPage/Sidebar.tsx | 2 +- .../WorkspaceParametersForm.tsx | 2 +- .../WorkspaceParametersPage.tsx | 2 +- .../WorkspaceScheduleForm.test.tsx | 2 +- .../WorkspaceSchedulePage/WorkspaceScheduleForm.tsx | 5 ++--- .../WorkspaceSchedulePage.test.tsx | 6 ++++-- .../WorkspaceSettingsPage/WorkspaceSettingsForm.tsx | 11 +++++++---- .../pages/WorkspacesPage/BatchUpdateConfirmation.tsx | 2 +- site/src/pages/WorkspacesPage/LastUsed.tsx | 2 +- site/src/pages/WorkspacesPage/WorkspacesButton.tsx | 4 ++-- .../WorkspacesPage/WorkspacesPageView.stories.tsx | 7 +++++-- site/src/pages/WorkspacesPage/WorkspacesTable.tsx | 2 +- site/src/pages/WorkspacesPage/data.ts | 8 ++++++-- site/src/pages/WorkspacesPage/filter/filter.tsx | 4 ++-- site/src/pages/WorkspacesPage/filter/menus.ts | 6 ++++-- 66 files changed, 112 insertions(+), 99 deletions(-) diff --git a/site/src/pages/TerminalPage/TerminalAlerts.tsx b/site/src/pages/TerminalPage/TerminalAlerts.tsx index 6497d133be036..34cea2788168a 100644 --- a/site/src/pages/TerminalPage/TerminalAlerts.tsx +++ b/site/src/pages/TerminalPage/TerminalAlerts.tsx @@ -1,8 +1,7 @@ import Button from "@mui/material/Button"; import Link from "@mui/material/Link"; import { type FC, useState } from "react"; -import type { AlertProps } from "components/Alert/Alert"; -import { Alert } from "components/Alert/Alert"; +import { Alert, type AlertProps } from "components/Alert/Alert"; import { docs } from "utils/docs"; export const ErrorScriptAlert: FC = () => { diff --git a/site/src/pages/TerminalPage/TerminalPage.test.tsx b/site/src/pages/TerminalPage/TerminalPage.test.tsx index 3199713338d23..8978cc257aa7f 100644 --- a/site/src/pages/TerminalPage/TerminalPage.test.tsx +++ b/site/src/pages/TerminalPage/TerminalPage.test.tsx @@ -1,5 +1,5 @@ -import { waitFor } from "@testing-library/react"; import "jest-canvas-mock"; +import { waitFor } from "@testing-library/react"; import WS from "jest-websocket-mock"; import { rest } from "msw"; import { TextDecoder, TextEncoder } from "util"; diff --git a/site/src/pages/TerminalPage/TerminalPage.tsx b/site/src/pages/TerminalPage/TerminalPage.tsx index 22911b19ed44b..410c45d1d23fe 100644 --- a/site/src/pages/TerminalPage/TerminalPage.tsx +++ b/site/src/pages/TerminalPage/TerminalPage.tsx @@ -1,4 +1,5 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import "xterm/css/xterm.css"; +import type { Interpolation, Theme } from "@emotion/react"; import { type FC, useCallback, useEffect, useRef, useState } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; @@ -10,7 +11,6 @@ import { FitAddon } from "xterm-addon-fit"; import { Unicode11Addon } from "xterm-addon-unicode11"; import { WebLinksAddon } from "xterm-addon-web-links"; import { WebglAddon } from "xterm-addon-webgl"; -import "xterm/css/xterm.css"; import { deploymentConfig } from "api/queries/deployment"; import { workspaceByOwnerAndName } from "api/queries/workspaces"; import { useProxy } from "contexts/ProxyContext"; diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.tsx index de667b3821156..28c772620e97e 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountForm.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountForm.tsx @@ -1,7 +1,6 @@ import LoadingButton from "@mui/lab/LoadingButton"; import TextField from "@mui/material/TextField"; -import type { FormikTouched } from "formik"; -import { useFormik } from "formik"; +import { type FormikTouched, useFormik } from "formik"; import type { FC } from "react"; import * as Yup from "yup"; import type { UpdateUserProfileRequest } from "api/typesGenerated"; diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountPage.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountPage.tsx index 724f5d1f716b0..830b59255d7b4 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountPage.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { useQuery } from "react-query"; import { groupsForUser } from "api/queries/groups"; import { Stack } from "components/Stack/Stack"; diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.stories.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.stories.tsx index 0cf859b0e51f3..6bdbbbd3d2b7d 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.stories.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.stories.tsx @@ -1,5 +1,5 @@ -import { type Meta, type StoryObj } from "@storybook/react"; -import { type Group } from "api/typesGenerated"; +import type { Meta, StoryObj } from "@storybook/react"; +import type { Group } from "api/typesGenerated"; import { MockGroup as MockGroup1, MockUser, diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.tsx index 48dba564a8e83..bc544fe1fab30 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountUserGroups.tsx @@ -1,6 +1,6 @@ import { useTheme } from "@emotion/react"; import Grid from "@mui/material/Grid"; -import { type FC } from "react"; +import type { FC } from "react"; import { isApiError } from "api/errors"; import type { Group } from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; diff --git a/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx b/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx index b98cd537b8158..ae0d15358e0f6 100644 --- a/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx +++ b/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx @@ -1,6 +1,6 @@ -import { type Interpolation } from "@emotion/react"; +import type { Interpolation } from "@emotion/react"; import { visuallyHidden } from "@mui/utils"; -import { type FC } from "react"; +import type { FC } from "react"; import type { UpdateUserAppearanceSettingsRequest } from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { PreviewBadge } from "components/Badges/Badges"; diff --git a/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.tsx b/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.tsx index 0fcaf3c1043fa..9e0821a9a1cda 100644 --- a/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.tsx +++ b/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.tsx @@ -1,5 +1,5 @@ import CircularProgress from "@mui/material/CircularProgress"; -import { type FC } from "react"; +import type { FC } from "react"; import { useMutation, useQueryClient } from "react-query"; import { updateAppearanceSettings } from "api/queries/users"; import { Stack } from "components/Stack/Stack"; diff --git a/site/src/pages/UserSettingsPage/OAuth2ProviderPage/OAuth2ProviderPageView.tsx b/site/src/pages/UserSettingsPage/OAuth2ProviderPage/OAuth2ProviderPageView.tsx index c2eba9d75de16..b1a45703ab31a 100644 --- a/site/src/pages/UserSettingsPage/OAuth2ProviderPage/OAuth2ProviderPageView.tsx +++ b/site/src/pages/UserSettingsPage/OAuth2ProviderPage/OAuth2ProviderPageView.tsx @@ -5,7 +5,7 @@ import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; -import { type FC } from "react"; +import type { FC } from "react"; import type * as TypesGen from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Avatar } from "components/Avatar/Avatar"; diff --git a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx index bf88c9c31ccca..95903b45e824a 100644 --- a/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx +++ b/site/src/pages/UserSettingsPage/SSHKeysPage/SSHKeysPageView.tsx @@ -1,7 +1,7 @@ import { useTheme } from "@emotion/react"; import Button from "@mui/material/Button"; import CircularProgress from "@mui/material/CircularProgress"; -import { type FC } from "react"; +import type { FC } from "react"; import type { GitSSHKey } from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { CodeExample } from "components/CodeExample/CodeExample"; diff --git a/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx b/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx index 607fda13d53c1..b9853e6946bc4 100644 --- a/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx +++ b/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx @@ -1,8 +1,7 @@ import LoadingButton from "@mui/lab/LoadingButton"; import MenuItem from "@mui/material/MenuItem"; import TextField from "@mui/material/TextField"; -import type { FormikContextType } from "formik"; -import { useFormik } from "formik"; +import { type FormikContextType, useFormik } from "formik"; import { type FC, useEffect, useState } from "react"; import * as Yup from "yup"; import type { diff --git a/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.tsx b/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.tsx index b18005ee69014..9623af4cca252 100644 --- a/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.tsx +++ b/site/src/pages/UserSettingsPage/SchedulePage/SchedulePage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { useMutation, useQuery, useQueryClient } from "react-query"; import { updateUserQuietHoursSchedule, diff --git a/site/src/pages/UserSettingsPage/Section.tsx b/site/src/pages/UserSettingsPage/Section.tsx index e23ccc22a4cf7..64fa369ef68ce 100644 --- a/site/src/pages/UserSettingsPage/Section.tsx +++ b/site/src/pages/UserSettingsPage/Section.tsx @@ -1,5 +1,5 @@ -import { type Interpolation, type Theme } from "@emotion/react"; -import { type FC, type ReactNode } from "react"; +import type { Interpolation, Theme } from "@emotion/react"; +import type { FC, ReactNode } from "react"; type SectionLayout = "fixed" | "fluid"; diff --git a/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.tsx b/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.tsx index ec562f520ee59..4757476f3accb 100644 --- a/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.tsx +++ b/site/src/pages/UserSettingsPage/SecurityPage/SecurityForm.tsx @@ -1,7 +1,6 @@ import LoadingButton from "@mui/lab/LoadingButton"; import TextField from "@mui/material/TextField"; -import type { FormikContextType } from "formik"; -import { useFormik } from "formik"; +import { type FormikContextType, useFormik } from "formik"; import type { FC } from "react"; import * as Yup from "yup"; import { Alert } from "components/Alert/Alert"; diff --git a/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.tsx b/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.tsx index f292a6b9bdda9..527fb875f37cf 100644 --- a/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.tsx +++ b/site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.tsx @@ -1,4 +1,4 @@ -import { type ComponentProps, type FC } from "react"; +import type { ComponentProps, FC } from "react"; import { useMutation, useQuery } from "react-query"; import { getUserLoginType } from "api/api"; import { authMethods, updatePassword } from "api/queries/users"; diff --git a/site/src/pages/UserSettingsPage/Sidebar.tsx b/site/src/pages/UserSettingsPage/Sidebar.tsx index 719fa5ea80673..01b2ba8be88b6 100644 --- a/site/src/pages/UserSettingsPage/Sidebar.tsx +++ b/site/src/pages/UserSettingsPage/Sidebar.tsx @@ -4,7 +4,7 @@ import FingerprintOutlinedIcon from "@mui/icons-material/FingerprintOutlined"; import SecurityIcon from "@mui/icons-material/LockOutlined"; import AccountIcon from "@mui/icons-material/Person"; import VpnKeyOutlined from "@mui/icons-material/VpnKeyOutlined"; -import { type FC } from "react"; +import type { FC } from "react"; import type { User } from "api/typesGenerated"; import { GitIcon } from "components/Icons/GitIcon"; import { diff --git a/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.tsx b/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.tsx index 2688fc75ceef4..05f8358483770 100644 --- a/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.tsx +++ b/site/src/pages/UserSettingsPage/TokensPage/TokensPageView.tsx @@ -9,7 +9,7 @@ import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; import dayjs from "dayjs"; import relativeTime from "dayjs/plugin/relativeTime"; -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; import type { APIKeyWithOwner } from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; diff --git a/site/src/pages/UserSettingsPage/TokensPage/hooks.ts b/site/src/pages/UserSettingsPage/TokensPage/hooks.ts index 3ffae0dcf17be..a92252ecc8b8a 100644 --- a/site/src/pages/UserSettingsPage/TokensPage/hooks.ts +++ b/site/src/pages/UserSettingsPage/TokensPage/hooks.ts @@ -1,5 +1,9 @@ -import type { QueryKey } from "react-query"; -import { useQuery, useMutation, useQueryClient } from "react-query"; +import { + type QueryKey, + useMutation, + useQuery, + useQueryClient, +} from "react-query"; import { getTokens, deleteToken } from "api/api"; import type { TokensFilter } from "api/typesGenerated"; diff --git a/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyPage.tsx b/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyPage.tsx index ab47ed2204daa..e8559c875226e 100644 --- a/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyPage.tsx +++ b/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyPage.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import { useProxy } from "contexts/ProxyContext"; import { Section } from "../Section"; import { WorkspaceProxyView } from "./WorkspaceProxyView"; diff --git a/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.tsx b/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.tsx index 03fc872ba09fd..4c45799f2bbb8 100644 --- a/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.tsx +++ b/site/src/pages/UserSettingsPage/WorkspaceProxyPage/WorkspaceProxyView.tsx @@ -4,7 +4,7 @@ import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; -import { type FC } from "react"; +import type { FC } from "react"; import type { Region } from "api/typesGenerated"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { ChooseOne, Cond } from "components/Conditionals/ChooseOne"; diff --git a/site/src/pages/UsersPage/ResetPasswordDialog.tsx b/site/src/pages/UsersPage/ResetPasswordDialog.tsx index 381543ee5a6d7..ccfd39b565c8d 100644 --- a/site/src/pages/UsersPage/ResetPasswordDialog.tsx +++ b/site/src/pages/UsersPage/ResetPasswordDialog.tsx @@ -1,4 +1,4 @@ -import { type FC } from "react"; +import type { FC } from "react"; import type * as TypesGen from "api/typesGenerated"; import { CodeExample } from "components/CodeExample/CodeExample"; import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"; diff --git a/site/src/pages/UsersPage/UsersFilter.tsx b/site/src/pages/UsersPage/UsersFilter.tsx index 204301e50e4ef..45af4103685b5 100644 --- a/site/src/pages/UsersPage/UsersFilter.tsx +++ b/site/src/pages/UsersPage/UsersFilter.tsx @@ -1,12 +1,12 @@ import { useTheme } from "@emotion/react"; -import { type FC } from "react"; -import type { useFilter } from "components/Filter/filter"; +import type { FC } from "react"; import { Filter, FilterMenu, MenuSkeleton, OptionItem, SearchFieldSkeleton, + type useFilter, } from "components/Filter/filter"; import { type UseFilterMenuOptions, diff --git a/site/src/pages/UsersPage/UsersPageView.stories.tsx b/site/src/pages/UsersPage/UsersPageView.stories.tsx index c6361bc1adc83..84683806fb1a3 100644 --- a/site/src/pages/UsersPage/UsersPageView.stories.tsx +++ b/site/src/pages/UsersPage/UsersPageView.stories.tsx @@ -5,7 +5,7 @@ import { getDefaultFilterProps, } from "components/Filter/storyHelpers"; import { mockSuccessResult } from "components/PaginationWidget/PaginationContainer.mocks"; -import { type UsePaginatedQueryResult } from "hooks/usePaginatedQuery"; +import type { UsePaginatedQueryResult } from "hooks/usePaginatedQuery"; import { MockUser, MockUser2, diff --git a/site/src/pages/UsersPage/UsersPageView.tsx b/site/src/pages/UsersPage/UsersPageView.tsx index 3832ee7afc090..54daa3c2a922f 100644 --- a/site/src/pages/UsersPage/UsersPageView.tsx +++ b/site/src/pages/UsersPage/UsersPageView.tsx @@ -1,5 +1,5 @@ -import { type ComponentProps, type FC } from "react"; -import { type GroupsByUserId } from "api/queries/groups"; +import type { ComponentProps, FC } from "react"; +import type { GroupsByUserId } from "api/queries/groups"; import type * as TypesGen from "api/typesGenerated"; import { PaginationContainer, diff --git a/site/src/pages/UsersPage/UsersTable/EditRolesButton.tsx b/site/src/pages/UsersPage/UsersTable/EditRolesButton.tsx index 0da2ae7d288eb..14075cc754971 100644 --- a/site/src/pages/UsersPage/UsersTable/EditRolesButton.tsx +++ b/site/src/pages/UsersPage/UsersTable/EditRolesButton.tsx @@ -1,8 +1,8 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import UserIcon from "@mui/icons-material/PersonOutline"; import Checkbox from "@mui/material/Checkbox"; import IconButton from "@mui/material/IconButton"; -import { type FC } from "react"; +import type { FC } from "react"; import type { Role } from "api/typesGenerated"; import { HelpTooltip, diff --git a/site/src/pages/UsersPage/UsersTable/UserGroupsCell.tsx b/site/src/pages/UsersPage/UsersTable/UserGroupsCell.tsx index cf3a51d0167d3..b5d1f799ee71e 100644 --- a/site/src/pages/UsersPage/UsersTable/UserGroupsCell.tsx +++ b/site/src/pages/UsersPage/UsersTable/UserGroupsCell.tsx @@ -4,7 +4,7 @@ import Button from "@mui/material/Button"; import List from "@mui/material/List"; import ListItem from "@mui/material/ListItem"; import TableCell from "@mui/material/TableCell"; -import { type Group } from "api/typesGenerated"; +import type { Group } from "api/typesGenerated"; import { Avatar } from "components/Avatar/Avatar"; import { OverflowY } from "components/OverflowY/OverflowY"; import { diff --git a/site/src/pages/UsersPage/UsersTable/UserRoleCell.tsx b/site/src/pages/UsersPage/UsersTable/UserRoleCell.tsx index afebb7e49acbd..5b95dc8e19c9f 100644 --- a/site/src/pages/UsersPage/UsersTable/UserRoleCell.tsx +++ b/site/src/pages/UsersPage/UsersTable/UserRoleCell.tsx @@ -16,8 +16,8 @@ import { useTheme } from "@emotion/react"; import Stack from "@mui/material/Stack"; import TableCell from "@mui/material/TableCell"; -import { type FC } from "react"; -import { type User, type Role } from "api/typesGenerated"; +import type { FC } from "react"; +import type { Role, User } from "api/typesGenerated"; import { Pill } from "components/Pill/Pill"; import { Popover, diff --git a/site/src/pages/UsersPage/UsersTable/UsersTable.tsx b/site/src/pages/UsersPage/UsersTable/UsersTable.tsx index 156ef927a0489..ddf76343646ad 100644 --- a/site/src/pages/UsersPage/UsersTable/UsersTable.tsx +++ b/site/src/pages/UsersPage/UsersTable/UsersTable.tsx @@ -4,8 +4,8 @@ import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; -import { type FC } from "react"; -import { type GroupsByUserId } from "api/queries/groups"; +import type { FC } from "react"; +import type { GroupsByUserId } from "api/queries/groups"; import type * as TypesGen from "api/typesGenerated"; import { Stack } from "components/Stack/Stack"; import { TableColumnHelpTooltip } from "./TableColumnHelpTooltip"; diff --git a/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx b/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx index c01eafcae9109..cb96cec2ffaf1 100644 --- a/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx +++ b/site/src/pages/UsersPage/UsersTable/UsersTableBody.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import GitHub from "@mui/icons-material/GitHub"; import HideSourceOutlined from "@mui/icons-material/HideSourceOutlined"; import KeyOutlined from "@mui/icons-material/KeyOutlined"; @@ -10,8 +10,8 @@ import TableCell from "@mui/material/TableCell"; import TableRow from "@mui/material/TableRow"; import dayjs from "dayjs"; import relativeTime from "dayjs/plugin/relativeTime"; -import { type FC } from "react"; -import { type GroupsByUserId } from "api/queries/groups"; +import type { FC } from "react"; +import type { GroupsByUserId } from "api/queries/groups"; import type * as TypesGen from "api/typesGenerated"; import { AvatarData } from "components/AvatarData/AvatarData"; import { AvatarDataSkeleton } from "components/AvatarData/AvatarDataSkeleton"; diff --git a/site/src/pages/WorkspaceBuildPage/Sidebar.tsx b/site/src/pages/WorkspaceBuildPage/Sidebar.tsx index 370d51cdf6777..b8d461ebcb084 100644 --- a/site/src/pages/WorkspaceBuildPage/Sidebar.tsx +++ b/site/src/pages/WorkspaceBuildPage/Sidebar.tsx @@ -1,4 +1,4 @@ -import { type FC, type HTMLAttributes } from "react"; +import type { FC, HTMLAttributes } from "react"; export const Sidebar: FC> = ({ children, diff --git a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.tsx b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.tsx index c1f327513a4b0..e9af7be776c78 100644 --- a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.tsx +++ b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.tsx @@ -1,5 +1,5 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; -import { type FC } from "react"; +import type { FC } from "react"; import { Link } from "react-router-dom"; import type { ProvisionerJobLog, diff --git a/site/src/pages/WorkspacePage/BuildRow.tsx b/site/src/pages/WorkspacePage/BuildRow.tsx index b6d5c39e4d090..1ef8c860a9f50 100644 --- a/site/src/pages/WorkspacePage/BuildRow.tsx +++ b/site/src/pages/WorkspacePage/BuildRow.tsx @@ -1,6 +1,6 @@ -import { type CSSObject, type Interpolation, type Theme } from "@emotion/react"; +import type { CSSObject, Interpolation, Theme } from "@emotion/react"; import TableCell from "@mui/material/TableCell"; -import { type FC } from "react"; +import type { FC } from "react"; import { useNavigate } from "react-router-dom"; import type { WorkspaceBuild } from "api/typesGenerated"; import { BuildAvatar } from "components/BuildAvatar/BuildAvatar"; diff --git a/site/src/pages/WorkspacePage/HistorySidebar.tsx b/site/src/pages/WorkspacePage/HistorySidebar.tsx index 5e20afc595ea0..089f50208fba1 100644 --- a/site/src/pages/WorkspacePage/HistorySidebar.tsx +++ b/site/src/pages/WorkspacePage/HistorySidebar.tsx @@ -1,6 +1,6 @@ import ArrowDownwardOutlined from "@mui/icons-material/ArrowDownwardOutlined"; import LoadingButton from "@mui/lab/LoadingButton"; -import { type FC } from "react"; +import type { FC } from "react"; import { useInfiniteQuery } from "react-query"; import { infiniteWorkspaceBuilds } from "api/queries/workspaceBuilds"; import type { Workspace } from "api/typesGenerated"; diff --git a/site/src/pages/WorkspacePage/ResourceMetadata.tsx b/site/src/pages/WorkspacePage/ResourceMetadata.tsx index dffb88f81f164..de6ba96a51db9 100644 --- a/site/src/pages/WorkspacePage/ResourceMetadata.tsx +++ b/site/src/pages/WorkspacePage/ResourceMetadata.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import { Children, type FC, diff --git a/site/src/pages/WorkspacePage/ResourcesSidebar.tsx b/site/src/pages/WorkspacePage/ResourcesSidebar.tsx index c71d18f0d0374..422b6c0497ac8 100644 --- a/site/src/pages/WorkspacePage/ResourcesSidebar.tsx +++ b/site/src/pages/WorkspacePage/ResourcesSidebar.tsx @@ -1,6 +1,6 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import Skeleton from "@mui/material/Skeleton"; -import { type FC } from "react"; +import type { FC } from "react"; import type { WorkspaceResource } from "api/typesGenerated"; import { Sidebar, diff --git a/site/src/pages/WorkspacePage/UpdateBuildParametersDialog.tsx b/site/src/pages/WorkspacePage/UpdateBuildParametersDialog.tsx index 74f4e4bf4da9a..67691ccdaad30 100644 --- a/site/src/pages/WorkspacePage/UpdateBuildParametersDialog.tsx +++ b/site/src/pages/WorkspacePage/UpdateBuildParametersDialog.tsx @@ -1,5 +1,5 @@ import { css } from "@emotion/css"; -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import Button from "@mui/material/Button"; import Dialog from "@mui/material/Dialog"; import DialogActions from "@mui/material/DialogActions"; @@ -7,7 +7,7 @@ import DialogContent from "@mui/material/DialogContent"; import DialogContentText from "@mui/material/DialogContentText"; import DialogTitle from "@mui/material/DialogTitle"; import { useFormik } from "formik"; -import { type FC } from "react"; +import type { FC } from "react"; import * as Yup from "yup"; import type { TemplateVersionParameter, diff --git a/site/src/pages/WorkspacePage/Workspace.tsx b/site/src/pages/WorkspacePage/Workspace.tsx index 464520cb5b985..2a3caea81a08d 100644 --- a/site/src/pages/WorkspacePage/Workspace.tsx +++ b/site/src/pages/WorkspacePage/Workspace.tsx @@ -1,9 +1,9 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import { useTheme } from "@emotion/react"; import HistoryOutlined from "@mui/icons-material/HistoryOutlined"; import HubOutlined from "@mui/icons-material/HubOutlined"; import AlertTitle from "@mui/material/AlertTitle"; -import { type FC } from "react"; +import type { FC } from "react"; import { useNavigate } from "react-router-dom"; import type * as TypesGen from "api/typesGenerated"; import { Alert, AlertDetail } from "components/Alert/Alert"; diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx index bfc815c0309ad..e203ccd671366 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx @@ -3,7 +3,7 @@ import ExpandMoreOutlined from "@mui/icons-material/ExpandMoreOutlined"; import Button from "@mui/material/Button"; import visuallyHidden from "@mui/utils/visuallyHidden"; import { useFormik } from "formik"; -import { type FC } from "react"; +import type { FC } from "react"; import { useQuery } from "react-query"; import { getWorkspaceParameters } from "api/api"; import type { diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx index 4d996530bdf2b..2eb39b04d3f43 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/Buttons.tsx @@ -9,7 +9,7 @@ import Star from "@mui/icons-material/Star"; import StarBorder from "@mui/icons-material/StarBorder"; import ButtonGroup from "@mui/material/ButtonGroup"; import Tooltip from "@mui/material/Tooltip"; -import { type FC } from "react"; +import type { FC } from "react"; import type { Workspace, WorkspaceBuildParameter } from "api/typesGenerated"; import { TopbarButton } from "components/FullPageLayout/Topbar"; import { BuildParametersPopover } from "./BuildParametersPopover"; diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.tsx index ad247331ef646..33f36027b0203 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.tsx @@ -1,6 +1,6 @@ import DebugIcon from "@mui/icons-material/BugReportOutlined"; import ButtonGroup from "@mui/material/ButtonGroup"; -import { type FC } from "react"; +import type { FC } from "react"; import type { Workspace } from "api/typesGenerated"; import { TopbarButton } from "components/FullPageLayout/Topbar"; import { BuildParametersPopover } from "./BuildParametersPopover"; diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.tsx b/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.tsx index e73f9b0dd56ba..bf0db69e9fe6a 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.tsx @@ -1,6 +1,6 @@ import RetryIcon from "@mui/icons-material/CachedOutlined"; import ButtonGroup from "@mui/material/ButtonGroup"; -import { type FC } from "react"; +import type { FC } from "react"; import type { Workspace } from "api/typesGenerated"; import { TopbarButton } from "components/FullPageLayout/Topbar"; import { BuildParametersPopover } from "./BuildParametersPopover"; diff --git a/site/src/pages/WorkspacePage/WorkspaceActions/constants.ts b/site/src/pages/WorkspacePage/WorkspaceActions/constants.ts index b86736dd4ebca..3c7347cc52864 100644 --- a/site/src/pages/WorkspacePage/WorkspaceActions/constants.ts +++ b/site/src/pages/WorkspacePage/WorkspaceActions/constants.ts @@ -1,4 +1,4 @@ -import { type Workspace, type WorkspaceStatus } from "api/typesGenerated"; +import type { Workspace, WorkspaceStatus } from "api/typesGenerated"; /** * An iterable of all action types supported by the workspace UI diff --git a/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx b/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx index 6ce5a4a45cdb2..b9d844385f5d8 100644 --- a/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx @@ -1,5 +1,5 @@ import { css } from "@emotion/css"; -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import LinearProgress from "@mui/material/LinearProgress"; import dayjs, { type Dayjs } from "dayjs"; import duration from "dayjs/plugin/duration"; diff --git a/site/src/pages/WorkspacePage/WorkspaceDeleteDialog/WorkspaceDeleteDialog.tsx b/site/src/pages/WorkspacePage/WorkspaceDeleteDialog/WorkspaceDeleteDialog.tsx index 660cb5fa0e125..e60384fb5f176 100644 --- a/site/src/pages/WorkspacePage/WorkspaceDeleteDialog/WorkspaceDeleteDialog.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceDeleteDialog/WorkspaceDeleteDialog.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import Checkbox from "@mui/material/Checkbox"; import Link from "@mui/material/Link"; import TextField from "@mui/material/TextField"; diff --git a/site/src/pages/WorkspacePage/WorkspaceDeletedBanner.tsx b/site/src/pages/WorkspacePage/WorkspaceDeletedBanner.tsx index 8001319b48677..4ea3c32e6a42b 100644 --- a/site/src/pages/WorkspacePage/WorkspaceDeletedBanner.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceDeletedBanner.tsx @@ -1,5 +1,5 @@ import Button from "@mui/material/Button"; -import { type FC } from "react"; +import type { FC } from "react"; import { Alert } from "components/Alert/Alert"; export interface WorkspaceDeletedBannerProps { diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx index d9940dacf4819..238477408bed1 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/Notifications.tsx @@ -1,7 +1,7 @@ import { type Interpolation, type Theme, useTheme } from "@emotion/react"; import Button, { type ButtonProps } from "@mui/material/Button"; -import { type FC, type ReactNode } from "react"; -import { type AlertProps } from "components/Alert/Alert"; +import type { FC, ReactNode } from "react"; +import type { AlertProps } from "components/Alert/Alert"; import { Pill } from "components/Pill/Pill"; import { Popover, @@ -9,7 +9,7 @@ import { PopoverTrigger, usePopover, } from "components/Popover/Popover"; -import { type ThemeRole } from "theme/roles"; +import type { ThemeRole } from "theme/roles"; export type NotificationItem = { title: string; diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx index 2034894ae5df5..87b01932c726a 100644 --- a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import InfoOutlined from "@mui/icons-material/InfoOutlined"; import WarningRounded from "@mui/icons-material/WarningRounded"; import formatDistanceToNow from "date-fns/formatDistanceToNow"; @@ -13,8 +13,8 @@ import { TemplateUpdateMessage } from "modules/templates/TemplateUpdateMessage"; import type { WorkspacePermissions } from "../permissions"; import { NotificationActionButton, - Notifications, type NotificationItem, + Notifications, } from "./Notifications"; type WorkspaceNotificationsProps = { diff --git a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.test.tsx b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.test.tsx index 4c6cebb439518..7a46607293d54 100644 --- a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.test.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.test.tsx @@ -2,7 +2,7 @@ import { render, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import dayjs from "dayjs"; import { rest } from "msw"; -import { type FC } from "react"; +import type { FC } from "react"; import { QueryClient, QueryClientProvider, useQuery } from "react-query"; import { RouterProvider, createMemoryRouter } from "react-router-dom"; import * as API from "api/api"; diff --git a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx index 919bbed29780f..6b156c8fca38e 100644 --- a/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import AddIcon from "@mui/icons-material/AddOutlined"; import RemoveIcon from "@mui/icons-material/RemoveOutlined"; import ScheduleOutlined from "@mui/icons-material/ScheduleOutlined"; diff --git a/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx b/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx index 0d5060d5d2a2c..23cfba1d9a66a 100644 --- a/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx @@ -4,7 +4,7 @@ import DeleteOutline from "@mui/icons-material/DeleteOutline"; import MonetizationOnOutlined from "@mui/icons-material/MonetizationOnOutlined"; import Link from "@mui/material/Link"; import Tooltip from "@mui/material/Tooltip"; -import { type FC } from "react"; +import type { FC } from "react"; import { useQuery } from "react-query"; import { Link as RouterLink } from "react-router-dom"; import { workspaceQuota } from "api/queries/workspaceQuota"; diff --git a/site/src/pages/WorkspaceSettingsPage/Sidebar.tsx b/site/src/pages/WorkspaceSettingsPage/Sidebar.tsx index aecf79b716528..b2c374121de27 100644 --- a/site/src/pages/WorkspaceSettingsPage/Sidebar.tsx +++ b/site/src/pages/WorkspaceSettingsPage/Sidebar.tsx @@ -1,7 +1,7 @@ import ParameterIcon from "@mui/icons-material/CodeOutlined"; import GeneralIcon from "@mui/icons-material/SettingsOutlined"; import ScheduleIcon from "@mui/icons-material/TimerOutlined"; -import { type FC } from "react"; +import type { FC } from "react"; import type { Workspace } from "api/typesGenerated"; import { Avatar } from "components/Avatar/Avatar"; import { diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx index c3843c0578b04..3c4e68075c8ab 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx @@ -1,5 +1,5 @@ import { useFormik } from "formik"; -import { type FC } from "react"; +import type { FC } from "react"; import * as Yup from "yup"; import type { TemplateVersionParameter, diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx index 60c97962ee1d2..c10accb30e9a0 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.tsx @@ -1,6 +1,6 @@ import OpenInNewOutlined from "@mui/icons-material/OpenInNewOutlined"; import Button from "@mui/material/Button"; -import { type FC } from "react"; +import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery } from "react-query"; import { useNavigate } from "react-router-dom"; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx index 01cda7dcbbdbd..22d6eaa4df141 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx @@ -9,8 +9,8 @@ import { ttlShutdownAt, validationSchema, WorkspaceScheduleForm, - type WorkspaceScheduleFormValues, type WorkspaceScheduleFormProps, + type WorkspaceScheduleFormValues, } from "./WorkspaceScheduleForm"; const valid: WorkspaceScheduleFormValues = { diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.tsx index 71d663b33ce5d..15a58bf423c99 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.tsx @@ -15,9 +15,8 @@ import duration from "dayjs/plugin/duration"; import relativeTime from "dayjs/plugin/relativeTime"; import timezone from "dayjs/plugin/timezone"; import utc from "dayjs/plugin/utc"; -import type { FormikTouched } from "formik"; -import { useFormik } from "formik"; -import { type ChangeEvent, type FC } from "react"; +import { type FormikTouched, useFormik } from "formik"; +import type { ChangeEvent, FC } from "react"; import * as Yup from "yup"; import type { Template } from "api/typesGenerated"; import { DisabledBadge } from "components/Badges/Badges"; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx index f6c67c12ee7d6..6803e2c16acba 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceSchedulePage.test.tsx @@ -10,8 +10,10 @@ import { } from "./formToRequest"; import { scheduleToAutostart } from "./schedule"; import { ttlMsToAutostop } from "./ttl"; -import type { WorkspaceScheduleFormValues } from "./WorkspaceScheduleForm"; -import { Language as FormLanguage } from "./WorkspaceScheduleForm"; +import { + Language as FormLanguage, + type WorkspaceScheduleFormValues, +} from "./WorkspaceScheduleForm"; import { WorkspaceSchedulePage } from "./WorkspaceSchedulePage"; const validValues: WorkspaceScheduleFormValues = { diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsForm.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsForm.tsx index 74ca3bdd971d2..8ef7386f01534 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsForm.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsForm.tsx @@ -1,12 +1,15 @@ -import { type Theme } from "@emotion/react"; +import type { Theme } from "@emotion/react"; import MenuItem from "@mui/material/MenuItem"; import TextField from "@mui/material/TextField"; import { useFormik } from "formik"; import upperFirst from "lodash/upperFirst"; -import { type FC } from "react"; +import type { FC } from "react"; import * as Yup from "yup"; -import type { AutomaticUpdates, Workspace } from "api/typesGenerated"; -import { AutomaticUpdateses } from "api/typesGenerated"; +import { + type AutomaticUpdates, + AutomaticUpdateses, + type Workspace, +} from "api/typesGenerated"; import { FormFields, FormFooter, diff --git a/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.tsx b/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.tsx index e15a3d984e29c..fd7ff519de8b6 100644 --- a/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.tsx +++ b/site/src/pages/WorkspacesPage/BatchUpdateConfirmation.tsx @@ -1,4 +1,4 @@ -import { type Interpolation, type Theme } from "@emotion/react"; +import type { Interpolation, Theme } from "@emotion/react"; import InstallDesktopIcon from "@mui/icons-material/InstallDesktop"; import PersonOutlinedIcon from "@mui/icons-material/PersonOutlined"; import ScheduleIcon from "@mui/icons-material/Schedule"; diff --git a/site/src/pages/WorkspacesPage/LastUsed.tsx b/site/src/pages/WorkspacesPage/LastUsed.tsx index 118627283dd97..386f158671f6a 100644 --- a/site/src/pages/WorkspacesPage/LastUsed.tsx +++ b/site/src/pages/WorkspacesPage/LastUsed.tsx @@ -1,7 +1,7 @@ import { useTheme } from "@emotion/react"; import dayjs from "dayjs"; import relativeTime from "dayjs/plugin/relativeTime"; -import { type FC } from "react"; +import type { FC } from "react"; import { Stack } from "components/Stack/Stack"; import { useTime } from "hooks/useTime"; diff --git a/site/src/pages/WorkspacesPage/WorkspacesButton.tsx b/site/src/pages/WorkspacesPage/WorkspacesButton.tsx index e2d7ef54809fb..b8e03a2582886 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesButton.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesButton.tsx @@ -3,12 +3,12 @@ import OpenIcon from "@mui/icons-material/OpenInNewOutlined"; import Button from "@mui/material/Button"; import Link from "@mui/material/Link"; import { type FC, type ReactNode, useState } from "react"; -import { type UseQueryResult } from "react-query"; +import type { UseQueryResult } from "react-query"; import { Link as RouterLink, type LinkProps as RouterLinkProps, } from "react-router-dom"; -import { type Template } from "api/typesGenerated"; +import type { Template } from "api/typesGenerated"; import { Avatar } from "components/Avatar/Avatar"; import { Loader } from "components/Loader/Loader"; import { SearchEmpty, searchStyles } from "components/Menu/Search"; diff --git a/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx b/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx index e5bbaf8c6c4cb..69578553cd5c0 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesPageView.stories.tsx @@ -2,8 +2,11 @@ import type { Meta, StoryObj } from "@storybook/react"; import dayjs from "dayjs"; import uniqueId from "lodash/uniqueId"; import type { ComponentProps } from "react"; -import type { Workspace, WorkspaceStatus } from "api/typesGenerated"; -import { WorkspaceStatuses } from "api/typesGenerated"; +import { + type Workspace, + type WorkspaceStatus, + WorkspaceStatuses, +} from "api/typesGenerated"; import { MockMenu, getDefaultFilterProps, diff --git a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx index 03c1b832c6533..66d958bd3e143 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx @@ -9,7 +9,7 @@ import TableCell from "@mui/material/TableCell"; import TableContainer from "@mui/material/TableContainer"; import TableHead from "@mui/material/TableHead"; import TableRow from "@mui/material/TableRow"; -import { type FC, type ReactNode } from "react"; +import type { FC, ReactNode } from "react"; import { useNavigate } from "react-router-dom"; import type { Template, Workspace } from "api/typesGenerated"; import { ExternalAvatar } from "components/Avatar/Avatar"; diff --git a/site/src/pages/WorkspacesPage/data.ts b/site/src/pages/WorkspacesPage/data.ts index d4b939fe9af2e..a785d00d03122 100644 --- a/site/src/pages/WorkspacesPage/data.ts +++ b/site/src/pages/WorkspacesPage/data.ts @@ -1,6 +1,10 @@ import { useState } from "react"; -import type { QueryKey } from "react-query"; -import { useMutation, useQuery, useQueryClient } from "react-query"; +import { + type QueryKey, + useMutation, + useQuery, + useQueryClient, +} from "react-query"; import { getWorkspaces, updateWorkspaceVersion } from "api/api"; import { getErrorMessage } from "api/errors"; import type { diff --git a/site/src/pages/WorkspacesPage/filter/filter.tsx b/site/src/pages/WorkspacesPage/filter/filter.tsx index 8d7036056754a..74b534d5d5d6b 100644 --- a/site/src/pages/WorkspacesPage/filter/filter.tsx +++ b/site/src/pages/WorkspacesPage/filter/filter.tsx @@ -1,7 +1,6 @@ import { useTheme } from "@emotion/react"; -import { type FC } from "react"; +import type { FC } from "react"; import { Avatar, type AvatarProps } from "components/Avatar/Avatar"; -import type { useFilter } from "components/Filter/filter"; import { Filter, FilterMenu, @@ -9,6 +8,7 @@ import { MenuSkeleton, OptionItem, SearchFieldSkeleton, + type useFilter, } from "components/Filter/filter"; import { type UserFilterMenu, UserMenu } from "components/Filter/UserFilter"; import { useDashboard } from "modules/dashboard/useDashboard"; diff --git a/site/src/pages/WorkspacesPage/filter/menus.ts b/site/src/pages/WorkspacesPage/filter/menus.ts index fc790798869f8..8c469cf85a5be 100644 --- a/site/src/pages/WorkspacesPage/filter/menus.ts +++ b/site/src/pages/WorkspacesPage/filter/menus.ts @@ -1,7 +1,9 @@ import { getTemplates } from "api/api"; import type { WorkspaceStatus } from "api/typesGenerated"; -import type { UseFilterMenuOptions } from "components/Filter/menu"; -import { useFilterMenu } from "components/Filter/menu"; +import { + useFilterMenu, + type UseFilterMenuOptions, +} from "components/Filter/menu"; import { getDisplayWorkspaceStatus } from "utils/workspace"; import type { StatusOption, TemplateOption } from "./options";