diff --git a/eslint.config.mjs b/eslint.config.mjs index 0f0b715..fc46073 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -6,7 +6,7 @@ import globals from 'globals' export default [ { - ignores: ['node_modules', '.next', 'dist', 'coverage'], + ignores: ['node_modules', '.next', 'dist', 'coverage', 'src/styles/m3-scss/**'], }, js.configs.recommended, ...tseslint.configs.recommended, diff --git a/package-lock.json b/package-lock.json index 8ad3d21..54f9793 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,7 +51,7 @@ "next-themes": "^0.4.6", "pyodide": "^0.27.0", "react": "^19.2.3", - "react-dom": "^19.0.0", + "react-dom": "^19.2.3", "react-error-boundary": "^6.0.0", "react-hook-form": "^7.54.2", "react-redux": "^9.2.0", @@ -8340,15 +8340,15 @@ } }, "node_modules/react-dom": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", - "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", "license": "MIT", "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.0" + "react": "^19.2.3" } }, "node_modules/react-error-boundary": { diff --git a/package.json b/package.json index c277f16..dce8ed6 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "next-themes": "^0.4.6", "pyodide": "^0.27.0", "react": "^19.2.3", - "react-dom": "^19.0.0", + "react-dom": "^19.2.3", "react-error-boundary": "^6.0.0", "react-hook-form": "^7.54.2", "react-redux": "^9.2.0", diff --git a/playwright.config.ts b/playwright.config.ts index 27452ad..135a3e1 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,8 +1,10 @@ import { defineConfig, devices } from "@playwright/test" export default defineConfig({ - testDir: "./tests/e2e", + // Run both general e2e and MD3 conformance suites + testDir: "./tests", timeout: 60_000, + globalSetup: "./tests/e2e/setup/global-setup.ts", expect: { timeout: 10_000, }, @@ -30,7 +32,7 @@ export default defineConfig({ }, ], webServer: { - command: "PORT=3002 npm run dev -- --hostname 0.0.0.0", + command: "npm run dev -- -p 3002 -H 0.0.0.0", port: 3002, reuseExistingServer: !process.env.CI, timeout: 120_000, diff --git a/src/app/PageLayout.tsx b/src/app/PageLayout.tsx index 5c69154..6f4bd8a 100644 --- a/src/app/PageLayout.tsx +++ b/src/app/PageLayout.tsx @@ -6,10 +6,16 @@ import { Navigation } from '@/components/layout/navigation/Navigation'; import { NavigationSidebar } from '@/components/layout/navigation/NavigationSidebar'; import { useNavigation } from '@/components/layout/navigation/useNavigation'; import { BackendIndicator } from '@/components/layout/BackendIndicator'; +import { AppStatusAlerts } from '@/components/layout/AppStatusAlerts'; import { ReactNode } from 'react'; export function PageLayout({ children }: { children: ReactNode }) { const { menuOpen } = useNavigation(); + const safePad = '0.5rem'; + const safeAreaPadding = { + paddingLeft: `max(${safePad}, env(safe-area-inset-left, 0px))`, + paddingRight: `max(${safePad}, env(safe-area-inset-right, 0px))`, + }; return (