diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 29a8d474a..d3089ab4a 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -61,7 +61,7 @@ module.exports = { 'URLSearchParams', // core-js ], tailwindcss: { - config: 'tailwind.config.cjs', + config: 'tailwind.config.ts', }, }, @@ -268,7 +268,7 @@ module.exports = { 'error', { classRegex: '^(base|container|icon|item|list|outer|wrapper)?[c|C]lass(Name)?$', - config: 'tailwind.config.cjs', + config: 'tailwind.config.ts', }, ], 'tailwindcss/migration-from-tailwind-2': 'error', diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dbc2c6b3a..e384d77fb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: node:20 +image: node:21 variables: NODE_ENV: test @@ -111,9 +111,9 @@ pages: docker: stage: deploy - image: docker:24.0.6 + image: docker:24.0.7 services: - - docker:24.0.6-dind + - docker:24.0.7-dind tags: - dind # https://medium.com/devops-with-valentine/how-to-build-a-docker-image-and-push-it-to-the-gitlab-container-registry-from-a-gitlab-ci-pipeline-acac0d1f26df diff --git a/.tool-versions b/.tool-versions index 6de89a83a..b5ed8dc79 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -nodejs 20.0.0 +nodejs 21.4.0 diff --git a/Dockerfile b/Dockerfile index 2765f2053..fa790e7ad 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:20 as build +FROM node:21 as build WORKDIR /app COPY package.json . COPY yarn.lock . diff --git a/Dockerfile.dev b/Dockerfile.dev index 1e6056945..bb15e6d86 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,4 +1,4 @@ -FROM node:20 +FROM node:21 RUN apt-get update &&\ apt-get install -y inotify-tools &&\ diff --git a/package.json b/package.json index 1a0fe603f..9bf758b40 100644 --- a/package.json +++ b/package.json @@ -62,14 +62,14 @@ "@reach/popover": "^0.18.0", "@reach/rect": "^0.18.0", "@reach/tabs": "^0.18.0", - "@reduxjs/toolkit": "^1.8.1", + "@reduxjs/toolkit": "^2.0.1", "@sentry/browser": "^7.74.1", "@sentry/react": "^7.74.1", "@soapbox.pub/wasmboy": "^0.8.0", "@tabler/icons": "^2.0.0", "@tailwindcss/aspect-ratio": "^0.4.2", - "@tailwindcss/forms": "^0.5.3", - "@tailwindcss/typography": "^0.5.9", + "@tailwindcss/forms": "^0.5.7", + "@tailwindcss/typography": "^0.5.10", "@tanstack/react-query": "^5.0.0", "@types/escape-html": "^1.0.1", "@types/http-link-header": "^1.0.3", @@ -86,7 +86,7 @@ "@types/react-router-dom": "^5.3.3", "@types/react-sparklines": "^1.7.2", "@types/react-swipeable-views": "^0.13.1", - "@types/redux-mock-store": "^1.0.3", + "@types/redux-mock-store": "^1.0.6", "@types/semver": "^7.3.9", "@types/uuid": "^9.0.0", "@vitejs/plugin-react": "^4.0.4", @@ -145,7 +145,7 @@ "react-motion": "^0.5.2", "react-overlays": "^0.9.0", "react-popper": "^2.3.0", - "react-redux": "^8.0.0", + "react-redux": "^9.0.4", "react-router-dom": "^5.3.0", "react-router-dom-v5-compat": "^6.6.2", "react-router-scroll-4": "^1.0.0-beta.2", @@ -154,12 +154,12 @@ "react-sticky-box": "^2.0.0", "react-swipeable-views": "^0.14.0", "react-virtuoso": "^4.3.11", - "redux": "^4.1.1", + "redux": "^5.0.0", "redux-immutable": "^4.0.0", - "redux-thunk": "^2.2.0", - "reselect": "^4.0.0", + "redux-thunk": "^3.1.0", + "reselect": "^5.0.0", "resize-observer-polyfill": "^1.5.1", - "sass": "^1.66.1", + "sass": "^1.69.5", "semver": "^7.3.8", "stringz": "^2.0.0", "substring-trie": "^1.0.2", @@ -170,11 +170,11 @@ "typescript": "^5.1.3", "util": "^0.12.4", "uuid": "^9.0.0", - "vite": "^4.4.9", + "vite": "^5.0.10", "vite-plugin-compile-time": "^0.2.1", "vite-plugin-html": "^3.2.0", "vite-plugin-require": "^1.1.10", - "vite-plugin-static-copy": "^0.17.0", + "vite-plugin-static-copy": "^1.0.0", "wicg-inert": "^3.1.1", "zod": "^3.21.4" }, @@ -202,17 +202,17 @@ "eslint-plugin-tailwindcss": "^3.13.0", "fake-indexeddb": "^5.0.0", "husky": "^8.0.0", - "jsdom": "^22.1.0", + "jsdom": "^23.0.0", "lint-staged": ">=10", "react-intl-translations-manager": "^5.0.3", "react-refresh": "^0.14.0", "rollup-plugin-visualizer": "^5.9.2", "stylelint": "^15.10.3", "stylelint-config-standard-scss": "^11.0.0", - "tailwindcss": "^3.3.3", + "tailwindcss": "^3.4.0", "vite-plugin-checker": "^0.6.2", "vite-plugin-pwa": "^0.17.0", - "vitest": "^0.34.4" + "vitest": "^1.0.0" }, "resolutions": { "@types/react": "^18.0.26", diff --git a/src/api/hooks/groups/useGroupValidation.ts b/src/api/hooks/groups/useGroupValidation.ts index cc1062ccc..470be22a5 100644 --- a/src/api/hooks/groups/useGroupValidation.ts +++ b/src/api/hooks/groups/useGroupValidation.ts @@ -41,7 +41,7 @@ function useGroupValidation(name: string = '') { ...queryInfo, data: { ...queryInfo.data, - isValid: !queryInfo.data?.error ?? true, + isValid: !queryInfo.data?.error, }, }; } diff --git a/src/components/big-card.tsx b/src/components/big-card.tsx index 895ac1298..f71c86480 100644 --- a/src/components/big-card.tsx +++ b/src/components/big-card.tsx @@ -12,7 +12,7 @@ const BigCard: React.FC = ({ title, subtitle, children }) => { return ( -
+
{title} {subtitle && {subtitle}} diff --git a/src/components/gdpr-banner.tsx b/src/components/gdpr-banner.tsx index 288a5e421..75bc16bad 100644 --- a/src/components/gdpr-banner.tsx +++ b/src/components/gdpr-banner.tsx @@ -28,7 +28,7 @@ const GdprBanner: React.FC = () => { return ( -
+
diff --git a/src/components/site-error-boundary.tsx b/src/components/site-error-boundary.tsx index 3f39efc25..19a22a0c8 100644 --- a/src/components/site-error-boundary.tsx +++ b/src/components/site-error-boundary.tsx @@ -84,7 +84,7 @@ const SiteErrorBoundary: React.FC = ({ children }) => {
-

+

diff --git a/src/components/ui/select/select.tsx b/src/components/ui/select/select.tsx index 888868a58..4c4c6c2c1 100644 --- a/src/components/ui/select/select.tsx +++ b/src/components/ui/select/select.tsx @@ -13,7 +13,7 @@ const Select = React.forwardRef((props, ref) => { = () => { if (providers.length > 0) { return ( - + diff --git a/src/features/chats/components/chat-page/chat-page.tsx b/src/features/chats/components/chat-page/chat-page.tsx index 16b5e2d0b..344b7a90a 100644 --- a/src/features/chats/components/chat-page/chat-page.tsx +++ b/src/features/chats/components/chat-page/chat-page.tsx @@ -60,7 +60,7 @@ const ChatPage: React.FC = ({ chatId }) => {

{isOnboarded ? (
= ({ chatId }) => { data-testid='chat-page' > diff --git a/src/features/chats/components/chat-page/components/chat-page-main.tsx b/src/features/chats/components/chat-page/components/chat-page-main.tsx index 89371c4da..6a9acd1e2 100644 --- a/src/features/chats/components/chat-page/components/chat-page-main.tsx +++ b/src/features/chats/components/chat-page/components/chat-page-main.tsx @@ -121,7 +121,7 @@ const ChatPageMain = () => { history.push('/chats')} /> diff --git a/src/features/chats/components/chat-page/components/chat-page-new.tsx b/src/features/chats/components/chat-page/components/chat-page-new.tsx index 0a60c56b4..ed9535efd 100644 --- a/src/features/chats/components/chat-page/components/chat-page-new.tsx +++ b/src/features/chats/components/chat-page/components/chat-page-new.tsx @@ -24,7 +24,7 @@ const ChatPageNew: React.FC = () => { history.push('/chats')} /> diff --git a/src/features/chats/components/chat-page/components/chat-page-settings.tsx b/src/features/chats/components/chat-page/components/chat-page-settings.tsx index cb637a36e..d042b75ac 100644 --- a/src/features/chats/components/chat-page/components/chat-page-settings.tsx +++ b/src/features/chats/components/chat-page/components/chat-page-settings.tsx @@ -51,7 +51,7 @@ const ChatPageSettings = () => { history.push('/chats')} /> diff --git a/src/features/chats/components/chat-textarea.tsx b/src/features/chats/components/chat-textarea.tsx index a8269b0c0..f85d897d5 100644 --- a/src/features/chats/components/chat-textarea.tsx +++ b/src/features/chats/components/chat-textarea.tsx @@ -39,9 +39,9 @@ const ChatTextarea: React.FC = React.forwardRef(({ bg-white text-gray-900 shadow-sm placeholder:text-gray-600 focus-within:border-primary-500 - focus-within:ring-1 focus-within:ring-primary-500 dark:border-gray-800 dark:bg-gray-800 - dark:text-gray-100 dark:ring-1 dark:ring-gray-800 dark:placeholder:text-gray-600 dark:focus-within:border-primary-500 - dark:focus-within:ring-primary-500 sm:text-sm + focus-within:ring-1 focus-within:ring-primary-500 sm:text-sm dark:border-gray-800 + dark:bg-gray-800 dark:text-gray-100 dark:ring-1 dark:ring-gray-800 dark:placeholder:text-gray-600 + dark:focus-within:border-primary-500 dark:focus-within:ring-primary-500 `} > {(!!attachments?.length || isUploading) && ( diff --git a/src/features/edit-profile/components/header-picker.tsx b/src/features/edit-profile/components/header-picker.tsx index 13f555844..3176876c6 100644 --- a/src/features/edit-profile/components/header-picker.tsx +++ b/src/features/edit-profile/components/header-picker.tsx @@ -36,7 +36,7 @@ const HeaderPicker = React.forwardRef(({ src, onC