From 616726b5fda624907df630829eb58b885c65c0f5 Mon Sep 17 00:00:00 2001 From: Sam Becker Date: Wed, 19 Jun 2024 13:19:24 -0500 Subject: [PATCH] Refine admin config layout --- package.json | 18 +- pnpm-lock.yaml | 382 ++++++----- src/app/admin/configuration/page.tsx | 2 +- src/components/Checklist.tsx | 7 +- src/components/ResponsiveDate.tsx | 10 +- src/components/primitives/ResponsiveText.tsx | 22 + src/site/SiteChecklistClient.tsx | 687 ++++++++++--------- src/site/SiteChecklistServer.tsx | 2 +- src/site/config.ts | 2 +- 9 files changed, 592 insertions(+), 540 deletions(-) create mode 100644 src/components/primitives/ResponsiveText.tsx diff --git a/package.json b/package.json index 0017359c..b5d19ee9 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,9 @@ "analyze": "ANALYZE=true next build" }, "dependencies": { - "@ai-sdk/openai": "^0.0.29", - "@aws-sdk/client-s3": "3.598.0", - "@aws-sdk/s3-request-presigner": "3.598.0", + "@ai-sdk/openai": "^0.0.31", + "@aws-sdk/client-s3": "3.600.0", + "@aws-sdk/s3-request-presigner": "3.600.0", "@next/bundle-analyzer": "14.2.4", "@radix-ui/react-dropdown-menu": "^2.0.6", "@tailwindcss/container-queries": "^0.1.1", @@ -19,18 +19,18 @@ "@testing-library/jest-dom": "^6.4.6", "@testing-library/react": "^16.0.0", "@types/jest": "^29.5.12", - "@types/node": "^20.14.2", + "@types/node": "^20.14.6", "@types/pg": "^8.11.6", "@types/react": "18.3.3", "@types/react-dom": "18.3.0", - "@typescript-eslint/eslint-plugin": "^7.13.0", - "@typescript-eslint/parser": "^7.13.0", + "@typescript-eslint/eslint-plugin": "^7.13.1", + "@typescript-eslint/parser": "^7.13.1", "@upstash/ratelimit": "^1.2.1", "@vercel/analytics": "^1.3.1", "@vercel/blob": "^0.23.3", "@vercel/kv": "^2.0.0", "@vercel/speed-insights": "^1.0.12", - "ai": "^3.1.36", + "ai": "^3.2.1", "autoprefixer": "10.4.19", "camelcase-keys": "^9.1.3", "clsx": "^2.1.1", @@ -39,7 +39,7 @@ "eslint": "8.57.0", "eslint-config-next": "14.2.4", "exifr": "^7.1.3", - "framer-motion": "^11.2.10", + "framer-motion": "^11.2.11", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "nanoid": "^5.0.7", @@ -57,7 +57,7 @@ "tailwindcss": "3.4.4", "ts-exif-parser": "^0.2.2", "typescript": "5.4.5", - "undici": "^6.19.0", + "undici": "^6.19.2", "use-debounce": "^10.0.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6a809a7b..2d60d9e5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,14 +9,14 @@ importers: .: dependencies: '@ai-sdk/openai': - specifier: ^0.0.29 - version: 0.0.29(zod@3.23.8) + specifier: ^0.0.31 + version: 0.0.31(zod@3.23.8) '@aws-sdk/client-s3': - specifier: 3.598.0 - version: 3.598.0 + specifier: 3.600.0 + version: 3.600.0 '@aws-sdk/s3-request-presigner': - specifier: 3.598.0 - version: 3.598.0 + specifier: 3.600.0 + version: 3.600.0 '@next/bundle-analyzer': specifier: 14.2.4 version: 14.2.4 @@ -31,7 +31,7 @@ importers: version: 0.5.7(tailwindcss@3.4.4) '@testing-library/jest-dom': specifier: ^6.4.6 - version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.2)) + version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.6)) '@testing-library/react': specifier: ^16.0.0 version: 16.0.0(@testing-library/dom@10.1.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -39,8 +39,8 @@ importers: specifier: ^29.5.12 version: 29.5.12 '@types/node': - specifier: ^20.14.2 - version: 20.14.2 + specifier: ^20.14.6 + version: 20.14.6 '@types/pg': specifier: ^8.11.6 version: 8.11.6 @@ -51,11 +51,11 @@ importers: specifier: 18.3.0 version: 18.3.0 '@typescript-eslint/eslint-plugin': - specifier: ^7.13.0 - version: 7.13.0(@typescript-eslint/parser@7.13.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) + specifier: ^7.13.1 + version: 7.13.1(@typescript-eslint/parser@7.13.1(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: ^7.13.0 - version: 7.13.0(eslint@8.57.0)(typescript@5.4.5) + specifier: ^7.13.1 + version: 7.13.1(eslint@8.57.0)(typescript@5.4.5) '@upstash/ratelimit': specifier: ^1.2.1 version: 1.2.1 @@ -72,8 +72,8 @@ importers: specifier: ^1.0.12 version: 1.0.12(next@14.2.4(@babel/core@7.24.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.17)(vue@3.4.27(typescript@5.4.5)) ai: - specifier: ^3.1.36 - version: 3.1.36(react@18.3.1)(solid-js@1.8.17)(svelte@4.2.17)(vue@3.4.27(typescript@5.4.5))(zod@3.23.8) + specifier: ^3.2.1 + version: 3.2.1(react@18.3.1)(solid-js@1.8.17)(svelte@4.2.17)(vue@3.4.27(typescript@5.4.5))(zod@3.23.8) autoprefixer: specifier: 10.4.19 version: 10.4.19(postcss@8.4.38) @@ -99,11 +99,11 @@ importers: specifier: ^7.1.3 version: 7.1.3 framer-motion: - specifier: ^11.2.10 - version: 11.2.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^11.2.11 + version: 11.2.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.14.2) + version: 29.7.0(@types/node@20.14.6) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -153,8 +153,8 @@ importers: specifier: 5.4.5 version: 5.4.5 undici: - specifier: ^6.19.0 - version: 6.19.0 + specifier: ^6.19.2 + version: 6.19.2 use-debounce: specifier: ^10.0.1 version: 10.0.1(react@18.3.1) @@ -164,14 +164,14 @@ packages: '@adobe/css-tools@4.4.0': resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==} - '@ai-sdk/openai@0.0.29': - resolution: {integrity: sha512-LctoOAlOX7bI3dQ5IA9DXBmHhhb2l59pg+aFclIp0qR86bqrB7eEH/odu8wn+yWjPy90D40aU0E1sNDYz985vA==} + '@ai-sdk/openai@0.0.31': + resolution: {integrity: sha512-7ehX2N0NzCdxUOYXutwYgu6gdWO+zS/v8pWEd7VW8QpNq3equ0VZ0j+pDUNv4f3GJ449QwySb6+V+DHM9W/pLg==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/provider-utils@0.0.14': - resolution: {integrity: sha512-PCQFN3MlC6DShS/81IFU9NVvt9OekQGiZTEowRc2AwAwWrDsv7er3UkcMswFAL/Z7xZKjgu0dZTNH1z9oUlo7A==} + '@ai-sdk/provider-utils@0.0.15': + resolution: {integrity: sha512-eTkIaZc/Ud96DYG40lLuKWJvZ2GoW/wT4KH9r1f3wGUhj5wgQN+bzgdI57z60VOEDuMmDVuILVnTLFe0HNT5Iw==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 @@ -183,17 +183,20 @@ packages: resolution: {integrity: sha512-NzkrtREQpHID1cTqY/C4CI30PVOaXWKYytDR2EcytmFgnP7Z6+CrGIA/YCnNhYAuUm6Nx+nGpRL/Hmyrv7NYzg==} engines: {node: '>=18'} - '@ai-sdk/react@0.0.2': - resolution: {integrity: sha512-segG03b5Gdt5h2Q41Ylfn88Rv5OiyXBZOi1ycQ/4MSkQX0D6WLJ8QhNIPkI5ie2qLeQA7sVqFLVuDTnpZQtDSg==} + '@ai-sdk/react@0.0.4': + resolution: {integrity: sha512-YPvp81onTxNlnOWolyjvappS5y9pMkZwWKMxrqwMimaJI4NWquPrAeHCYqzaVAb/+RKaveEGSvyYs/SD8AO6ig==} engines: {node: '>=18'} peerDependencies: react: ^18 || ^19 + zod: ^3.0.0 peerDependenciesMeta: react: optional: true + zod: + optional: true - '@ai-sdk/solid@0.0.2': - resolution: {integrity: sha512-zGj01mXzar10XwRwWGb0tQ4dLf4M3lGGdcZ2eDm79BN2U4KhNtEwyELKg+EaKdqHgfYJDyiotuqKjT4bcEFttQ==} + '@ai-sdk/solid@0.0.4': + resolution: {integrity: sha512-1X/vauXG+V0Hsb2P8kZFKaDrderTtB/7XdHZ/UkSMzTk8k0twx9OEXgztW8Rggh51t6sdI7mUoqAY5Khvjf01w==} engines: {node: '>=18'} peerDependencies: solid-js: ^1.7.7 @@ -201,8 +204,8 @@ packages: solid-js: optional: true - '@ai-sdk/svelte@0.0.2': - resolution: {integrity: sha512-q5heL7XxDzm2z3mxEESZuTx4rgOKMiKA5UkobFrUQgdJeE2jk/Efyl+1urvU8JWOZ5gokDS8beW1WA10LuuIvw==} + '@ai-sdk/svelte@0.0.4': + resolution: {integrity: sha512-LVxg9/60ARX8AQIswyDx53HQlQQH91yUOThhUA0x9s2BcxgpDgDN37imynnoZbU7lvA5M9NvwlinkmUdJzUVTA==} engines: {node: '>=18'} peerDependencies: svelte: ^3.0.0 || ^4.0.0 @@ -210,12 +213,17 @@ packages: svelte: optional: true - '@ai-sdk/ui-utils@0.0.2': - resolution: {integrity: sha512-CpWKvYO99UC72oHUts5MrJGPHEoOWrxhN4R8KjeHanZn7cosJ3bal++seSGJrwDz2ImqrpfAdRHmQtdbsCCOyQ==} + '@ai-sdk/ui-utils@0.0.4': + resolution: {integrity: sha512-vUfuqVOZV3MyFokAduQyJsnDP00qzyZut6mizFscXlCOmiiW3FAnu/XEnMEwCmf7yUG7O4v7Xa2zd4X1tsN5pg==} engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true - '@ai-sdk/vue@0.0.2': - resolution: {integrity: sha512-AfhB1YbdvqeZKheBsjeRsYZOJK2N/InC0VtWook08jiLgI47cau444Bj5dmx6401a1de/3tjw218G4rpJM/icA==} + '@ai-sdk/vue@0.0.4': + resolution: {integrity: sha512-gWyvenqPi1FC8tvczKhla4pCDTVMXvXHpiIJaBn7fRNq2vO7gDSAr9O//SCSPGY3l1aUCKLgKJbbeoXiTRSGBQ==} engines: {node: '>=18'} peerDependencies: vue: ^3.3.4 @@ -268,20 +276,20 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-s3@3.598.0': - resolution: {integrity: sha512-UMxftsgF6j1vzm4Qd9vQJHs2he1NQCWWV8esZfmNFq23OpUC2BPMxkqi13ZQ9tnTAZUNs7yFT/x4Zsi/wpRZEw==} + '@aws-sdk/client-s3@3.600.0': + resolution: {integrity: sha512-iYoKbJTputbf+ubkX6gSK/y/4uJEBRaXZ18jykLdBQ8UJuGrk2gqvV8h7OlGAhToCeysmmMqM0vDWyLt6lP8nw==} engines: {node: '>=16.0.0'} - '@aws-sdk/client-sso-oidc@3.598.0': - resolution: {integrity: sha512-jfdH1pAO9Tt8Nkta/JJLoUnwl7jaRdxToQTJfUtE+o3+0JP5sA4LfC2rBkJSWcU5BdAA+kyOs5Lv776DlN04Vg==} + '@aws-sdk/client-sso-oidc@3.600.0': + resolution: {integrity: sha512-7+I8RWURGfzvChyNQSyj5/tKrqRbzRl7H+BnTOf/4Vsw1nFOi5ROhlhD4X/Y0QCTacxnaoNcIrqnY7uGGvVRzw==} engines: {node: '>=16.0.0'} '@aws-sdk/client-sso@3.598.0': resolution: {integrity: sha512-nOI5lqPYa+YZlrrzwAJywJSw3MKVjvu6Ge2fCqQUNYMfxFB0NAaDFnl0EPjXi+sEbtCuz/uWE77poHbqiZ+7Iw==} engines: {node: '>=16.0.0'} - '@aws-sdk/client-sts@3.598.0': - resolution: {integrity: sha512-bXhz/cHL0iB9UH9IFtMaJJf4F8mV+HzncETCRFzZ9SyUMt5rP9j8A7VZknqGYSx/6mI8SsB1XJQkWSbhn6FiSQ==} + '@aws-sdk/client-sts@3.600.0': + resolution: {integrity: sha512-KQG97B7LvTtTiGmjlrG1LRAY8wUvCQzrmZVV5bjrJ/1oXAU7DITYwVbSJeX9NWg6hDuSk0VE3MFwIXS2SvfLIA==} engines: {node: '>=16.0.0'} '@aws-sdk/core@3.598.0': @@ -302,8 +310,8 @@ packages: peerDependencies: '@aws-sdk/client-sts': ^3.598.0 - '@aws-sdk/credential-provider-node@3.598.0': - resolution: {integrity: sha512-sXTlqL5I/awlF9Dg2MQ17SfrEaABVnsj2mf4jF5qQrIRhfbvQOIYdEqdy8Rn1AWlJMz/N450SGzc0XJ5owxxqw==} + '@aws-sdk/credential-provider-node@3.600.0': + resolution: {integrity: sha512-1pC7MPMYD45J7yFjA90SxpR0yaSvy+yZiq23aXhAPZLYgJBAxHLu0s0mDCk/piWGPh8+UGur5K0bVdx4B1D5hw==} engines: {node: '>=16.0.0'} '@aws-sdk/credential-provider-process@3.598.0': @@ -368,8 +376,8 @@ packages: resolution: {integrity: sha512-oYXhmTokSav4ytmWleCr3rs/1nyvZW/S0tdi6X7u+dLNL5Jee+uMxWGzgOrWK6wrQOzucLVjS4E/wA11Kv2GTw==} engines: {node: '>=16.0.0'} - '@aws-sdk/s3-request-presigner@3.598.0': - resolution: {integrity: sha512-IC06/HrZNlYxdyKH5+4A9B98NwcxJjgXOSUV581X7GpqHHspZ0T6tih8shBus3zzW8WfVqRAhJVwZtfMY55hdw==} + '@aws-sdk/s3-request-presigner@3.600.0': + resolution: {integrity: sha512-MYRwgti1DDc9/Q9AzvTQy0Ih0j4vLe0zYLV3qtSI0H8G02yRqTzet2s/76pUNOYJK9ASSgcxQ9yeV9EGKBwndQ==} engines: {node: '>=16.0.0'} '@aws-sdk/signature-v4-multi-region@3.598.0': @@ -1528,8 +1536,8 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/node@20.14.2': - resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==} + '@types/node@20.14.6': + resolution: {integrity: sha512-JbA0XIJPL1IiNnU7PFxDXyfAwcwVVrOoqyzzyQTyMeVhBzkJVMSkC1LlVsRQ2lpqiY4n6Bb9oCS6lzDKVQxbZw==} '@types/pg@8.11.6': resolution: {integrity: sha512-/2WmmBXHLsfRqzfHW7BNZ8SbYzE8OSk7i3WjFYvfgRHj7S1xj+16Je5fUKv3lVdVzk/zn9TXOqf+avFCFIE0yQ==} @@ -1555,8 +1563,8 @@ packages: '@types/yargs@17.0.32': resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} - '@typescript-eslint/eslint-plugin@7.13.0': - resolution: {integrity: sha512-FX1X6AF0w8MdVFLSdqwqN/me2hyhuQg4ykN6ZpVhh1ij/80pTvDKclX1sZB9iqex8SjQfVhwMKs3JtnnMLzG9w==} + '@typescript-eslint/eslint-plugin@7.13.1': + resolution: {integrity: sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -1566,8 +1574,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@7.13.0': - resolution: {integrity: sha512-EjMfl69KOS9awXXe83iRN7oIEXy9yYdqWfqdrFAYAAr6syP8eLEFI7ZE4939antx2mNgPRW/o1ybm2SFYkbTVA==} + '@typescript-eslint/parser@7.13.1': + resolution: {integrity: sha512-1ELDPlnLvDQ5ybTSrMhRTFDfOQEOXNM+eP+3HT/Yq7ruWpciQw+Avi73pdEbA4SooCawEWo3dtYbF68gN7Ed1A==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1586,16 +1594,16 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@7.13.0': - resolution: {integrity: sha512-ZrMCe1R6a01T94ilV13egvcnvVJ1pxShkE0+NDjDzH4nvG1wXpwsVI5bZCvE7AEDH1mXEx5tJSVR68bLgG7Dng==} + '@typescript-eslint/scope-manager@7.13.1': + resolution: {integrity: sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/scope-manager@7.2.0': resolution: {integrity: sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==} engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/type-utils@7.13.0': - resolution: {integrity: sha512-xMEtMzxq9eRkZy48XuxlBFzpVMDurUAfDu5Rz16GouAtXm0TaAoTFzqWUFPPuQYXI/CDaH/Bgx/fk/84t/Bc9A==} + '@typescript-eslint/type-utils@7.13.1': + resolution: {integrity: sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1604,16 +1612,16 @@ packages: typescript: optional: true - '@typescript-eslint/types@7.13.0': - resolution: {integrity: sha512-QWuwm9wcGMAuTsxP+qz6LBBd3Uq8I5Nv8xb0mk54jmNoCyDspnMvVsOxI6IsMmway5d1S9Su2+sCKv1st2l6eA==} + '@typescript-eslint/types@7.13.1': + resolution: {integrity: sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/types@7.2.0': resolution: {integrity: sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==} engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/typescript-estree@7.13.0': - resolution: {integrity: sha512-cAvBvUoobaoIcoqox1YatXOnSl3gx92rCZoMRPzMNisDiM12siGilSM4+dJAekuuHTibI2hVC2fYK79iSFvWjw==} + '@typescript-eslint/typescript-estree@7.13.1': + resolution: {integrity: sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -1630,14 +1638,14 @@ packages: typescript: optional: true - '@typescript-eslint/utils@7.13.0': - resolution: {integrity: sha512-jceD8RgdKORVnB4Y6BqasfIkFhl4pajB1wVxrF4akxD2QPM8GNYjgGwEzYS+437ewlqqrg7Dw+6dhdpjMpeBFQ==} + '@typescript-eslint/utils@7.13.1': + resolution: {integrity: sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/visitor-keys@7.13.0': - resolution: {integrity: sha512-nxn+dozQx+MK61nn/JP+M4eCkHDSxSLDpgE3WcQo0+fkjEolnaB5jswvIKC4K56By8MMgIho7f1PVxERHEo8rw==} + '@typescript-eslint/visitor-keys@7.13.1': + resolution: {integrity: sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/visitor-keys@7.2.0': @@ -1753,8 +1761,8 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} - ai@3.1.36: - resolution: {integrity: sha512-mYAMofD43mrdMa4m0Bd3W/xsrjJeAMBg+jBDZtWdQWb+mipE7gY0CVbcG4AgEYXkJdPFV7/I8d7fC6QKfAw5+w==} + ai@3.2.1: + resolution: {integrity: sha512-6C2rGQLeZmhbjPBOZy2IU8aGg2c9btL8QKWS+dT2Pyxik2ue28FbEsOWQ2O1DOG/5NLX6VM6yNXMlBem3N59Cg==} engines: {node: '>=18'} peerDependencies: openai: ^4.42.0 @@ -2521,8 +2529,8 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - framer-motion@11.2.10: - resolution: {integrity: sha512-/gr3PLZUVFCc86a9MqCUboVrALscrdluzTb3yew+2/qKBU8CX6nzs918/SRBRCqaPbx0TZP10CB6yFgK2C5cYQ==} + framer-motion@11.2.11: + resolution: {integrity: sha512-n+ozoEzgJu/2h9NoQMokF+CwNqIRVyuRC4RwMPwklfrrTjbVV32k9uBIgqYAwn7Jfpt5LuDVCtT57MWz1FbaLw==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 @@ -4131,8 +4139,8 @@ packages: resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} - undici@6.19.0: - resolution: {integrity: sha512-9gGwbSLgYMjp4r6M5P9bhqhx1E+RyUIHqZE0r7BmrRoqroJUG6xlVu5TXH9DnwmCPLkcaVNrcYtxUE9d3InnyQ==} + undici@6.19.2: + resolution: {integrity: sha512-JfjKqIauur3Q6biAtHJ564e3bWa8VvT+7cSiOJHFbX4Erv6CLGDpg8z+Fmg/1OI/47RA+GI2QZaF48SSaLvyBA==} engines: {node: '>=18.17'} universalify@0.2.0: @@ -4339,13 +4347,13 @@ snapshots: '@adobe/css-tools@4.4.0': {} - '@ai-sdk/openai@0.0.29(zod@3.23.8)': + '@ai-sdk/openai@0.0.31(zod@3.23.8)': dependencies: '@ai-sdk/provider': 0.0.10 - '@ai-sdk/provider-utils': 0.0.14(zod@3.23.8) + '@ai-sdk/provider-utils': 0.0.15(zod@3.23.8) zod: 3.23.8 - '@ai-sdk/provider-utils@0.0.14(zod@3.23.8)': + '@ai-sdk/provider-utils@0.0.15(zod@3.23.8)': dependencies: '@ai-sdk/provider': 0.0.10 eventsource-parser: 1.1.2 @@ -4358,19 +4366,18 @@ snapshots: dependencies: json-schema: 0.4.0 - '@ai-sdk/react@0.0.2(react@18.3.1)(zod@3.23.8)': + '@ai-sdk/react@0.0.4(react@18.3.1)(zod@3.23.8)': dependencies: - '@ai-sdk/provider-utils': 0.0.14(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.2(zod@3.23.8) + '@ai-sdk/provider-utils': 0.0.15(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.4(zod@3.23.8) swr: 2.2.0(react@18.3.1) optionalDependencies: react: 18.3.1 - transitivePeerDependencies: - - zod + zod: 3.23.8 - '@ai-sdk/solid@0.0.2(solid-js@1.8.17)(zod@3.23.8)': + '@ai-sdk/solid@0.0.4(solid-js@1.8.17)(zod@3.23.8)': dependencies: - '@ai-sdk/ui-utils': 0.0.2(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.4(zod@3.23.8) solid-swr-store: 0.10.7(solid-js@1.8.17)(swr-store@0.10.6) swr-store: 0.10.6 optionalDependencies: @@ -4378,25 +4385,26 @@ snapshots: transitivePeerDependencies: - zod - '@ai-sdk/svelte@0.0.2(svelte@4.2.17)(zod@3.23.8)': + '@ai-sdk/svelte@0.0.4(svelte@4.2.17)(zod@3.23.8)': dependencies: - '@ai-sdk/provider-utils': 0.0.14(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.2(zod@3.23.8) + '@ai-sdk/provider-utils': 0.0.15(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.4(zod@3.23.8) sswr: 2.1.0(svelte@4.2.17) optionalDependencies: svelte: 4.2.17 transitivePeerDependencies: - zod - '@ai-sdk/ui-utils@0.0.2(zod@3.23.8)': + '@ai-sdk/ui-utils@0.0.4(zod@3.23.8)': dependencies: - '@ai-sdk/provider-utils': 0.0.14(zod@3.23.8) - transitivePeerDependencies: - - zod + '@ai-sdk/provider-utils': 0.0.15(zod@3.23.8) + secure-json-parse: 2.7.0 + optionalDependencies: + zod: 3.23.8 - '@ai-sdk/vue@0.0.2(vue@3.4.27(typescript@5.4.5))(zod@3.23.8)': + '@ai-sdk/vue@0.0.4(vue@3.4.27(typescript@5.4.5))(zod@3.23.8)': dependencies: - '@ai-sdk/ui-utils': 0.0.2(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.4(zod@3.23.8) swrv: 1.0.4(vue@3.4.27(typescript@5.4.5)) optionalDependencies: vue: 3.4.27(typescript@5.4.5) @@ -4467,15 +4475,15 @@ snapshots: '@smithy/util-utf8': 2.3.0 tslib: 2.6.2 - '@aws-sdk/client-s3@3.598.0': + '@aws-sdk/client-s3@3.600.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.598.0 - '@aws-sdk/client-sts': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0) + '@aws-sdk/client-sso-oidc': 3.600.0 + '@aws-sdk/client-sts': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0) '@aws-sdk/core': 3.598.0 - '@aws-sdk/credential-provider-node': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)) + '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) '@aws-sdk/middleware-bucket-endpoint': 3.598.0 '@aws-sdk/middleware-expect-continue': 3.598.0 '@aws-sdk/middleware-flexible-checksums': 3.598.0 @@ -4530,13 +4538,13 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso-oidc@3.598.0': + '@aws-sdk/client-sso-oidc@3.600.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sts': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0) + '@aws-sdk/client-sts': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0) '@aws-sdk/core': 3.598.0 - '@aws-sdk/credential-provider-node': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)) + '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) '@aws-sdk/middleware-host-header': 3.598.0 '@aws-sdk/middleware-logger': 3.598.0 '@aws-sdk/middleware-recursion-detection': 3.598.0 @@ -4618,13 +4626,13 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)': + '@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.598.0 + '@aws-sdk/client-sso-oidc': 3.600.0 '@aws-sdk/core': 3.598.0 - '@aws-sdk/credential-provider-node': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)) + '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) '@aws-sdk/middleware-host-header': 3.598.0 '@aws-sdk/middleware-logger': 3.598.0 '@aws-sdk/middleware-recursion-detection': 3.598.0 @@ -4693,14 +4701,14 @@ snapshots: '@smithy/util-stream': 3.0.2 tslib: 2.6.2 - '@aws-sdk/credential-provider-ini@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0))': + '@aws-sdk/credential-provider-ini@3.598.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0))': dependencies: - '@aws-sdk/client-sts': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0) + '@aws-sdk/client-sts': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0) '@aws-sdk/credential-provider-env': 3.598.0 '@aws-sdk/credential-provider-http': 3.598.0 '@aws-sdk/credential-provider-process': 3.598.0 - '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0) - '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)) + '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0) + '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) '@aws-sdk/types': 3.598.0 '@smithy/credential-provider-imds': 3.1.1 '@smithy/property-provider': 3.1.1 @@ -4711,14 +4719,14 @@ snapshots: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-node@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0))': + '@aws-sdk/credential-provider-node@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0))': dependencies: '@aws-sdk/credential-provider-env': 3.598.0 '@aws-sdk/credential-provider-http': 3.598.0 - '@aws-sdk/credential-provider-ini': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0)(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)) + '@aws-sdk/credential-provider-ini': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) '@aws-sdk/credential-provider-process': 3.598.0 - '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0) - '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)) + '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0) + '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)) '@aws-sdk/types': 3.598.0 '@smithy/credential-provider-imds': 3.1.1 '@smithy/property-provider': 3.1.1 @@ -4738,10 +4746,10 @@ snapshots: '@smithy/types': 3.1.0 tslib: 2.6.2 - '@aws-sdk/credential-provider-sso@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)': + '@aws-sdk/credential-provider-sso@3.598.0(@aws-sdk/client-sso-oidc@3.600.0)': dependencies: '@aws-sdk/client-sso': 3.598.0 - '@aws-sdk/token-providers': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0) + '@aws-sdk/token-providers': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0) '@aws-sdk/types': 3.598.0 '@smithy/property-provider': 3.1.1 '@smithy/shared-ini-file-loader': 3.1.1 @@ -4751,9 +4759,9 @@ snapshots: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-web-identity@3.598.0(@aws-sdk/client-sts@3.598.0(@aws-sdk/client-sso-oidc@3.598.0))': + '@aws-sdk/credential-provider-web-identity@3.598.0(@aws-sdk/client-sts@3.600.0(@aws-sdk/client-sso-oidc@3.600.0))': dependencies: - '@aws-sdk/client-sts': 3.598.0(@aws-sdk/client-sso-oidc@3.598.0) + '@aws-sdk/client-sts': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0) '@aws-sdk/types': 3.598.0 '@smithy/property-provider': 3.1.1 '@smithy/types': 3.1.0 @@ -4858,7 +4866,7 @@ snapshots: '@smithy/util-middleware': 3.0.1 tslib: 2.6.2 - '@aws-sdk/s3-request-presigner@3.598.0': + '@aws-sdk/s3-request-presigner@3.600.0': dependencies: '@aws-sdk/signature-v4-multi-region': 3.598.0 '@aws-sdk/types': 3.598.0 @@ -4878,9 +4886,9 @@ snapshots: '@smithy/types': 3.1.0 tslib: 2.6.2 - '@aws-sdk/token-providers@3.598.0(@aws-sdk/client-sso-oidc@3.598.0)': + '@aws-sdk/token-providers@3.598.0(@aws-sdk/client-sso-oidc@3.600.0)': dependencies: - '@aws-sdk/client-sso-oidc': 3.598.0 + '@aws-sdk/client-sso-oidc': 3.600.0 '@aws-sdk/types': 3.598.0 '@smithy/property-provider': 3.1.1 '@smithy/shared-ini-file-loader': 3.1.1 @@ -5295,7 +5303,7 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.6 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -5308,14 +5316,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.6 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.14.2) + jest-config: 29.7.0(@types/node@20.14.6) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -5340,7 +5348,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.6 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -5358,7 +5366,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.14.2 + '@types/node': 20.14.6 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -5380,7 +5388,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 20.14.2 + '@types/node': 20.14.6 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -5450,7 +5458,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.14.2 + '@types/node': 20.14.6 '@types/yargs': 17.0.32 chalk: 4.1.2 @@ -6178,7 +6186,7 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.2))': + '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.6))': dependencies: '@adobe/css-tools': 4.4.0 '@babel/runtime': 7.24.5 @@ -6191,7 +6199,7 @@ snapshots: optionalDependencies: '@jest/globals': 29.7.0 '@types/jest': 29.5.12 - jest: 29.7.0(@types/node@20.14.2) + jest: 29.7.0(@types/node@20.14.6) '@testing-library/react@16.0.0(@testing-library/dom@10.1.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -6236,7 +6244,7 @@ snapshots: '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.6 '@types/istanbul-lib-coverage@2.0.6': {} @@ -6255,19 +6263,19 @@ snapshots: '@types/jsdom@20.0.1': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.6 '@types/tough-cookie': 4.0.5 parse5: 7.1.2 '@types/json5@0.0.29': {} - '@types/node@20.14.2': + '@types/node@20.14.6': dependencies: undici-types: 5.26.5 '@types/pg@8.11.6': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.6 pg-protocol: 1.6.1 pg-types: 4.0.2 @@ -6292,14 +6300,14 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@7.13.0(@typescript-eslint/parser@7.13.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.13.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.13.0 - '@typescript-eslint/type-utils': 7.13.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.13.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.13.0 + '@typescript-eslint/parser': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/type-utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.13.1 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 @@ -6310,12 +6318,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.13.0(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/parser@7.13.1(eslint@8.57.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/scope-manager': 7.13.0 - '@typescript-eslint/types': 7.13.0 - '@typescript-eslint/typescript-estree': 7.13.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.13.0 + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.13.1 debug: 4.3.4 eslint: 8.57.0 optionalDependencies: @@ -6336,20 +6344,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.13.0': + '@typescript-eslint/scope-manager@7.13.1': dependencies: - '@typescript-eslint/types': 7.13.0 - '@typescript-eslint/visitor-keys': 7.13.0 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/visitor-keys': 7.13.1 '@typescript-eslint/scope-manager@7.2.0': dependencies: '@typescript-eslint/types': 7.2.0 '@typescript-eslint/visitor-keys': 7.2.0 - '@typescript-eslint/type-utils@7.13.0(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/type-utils@7.13.1(eslint@8.57.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/typescript-estree': 7.13.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.13.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.4.5) + '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) debug: 4.3.4 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.4.5) @@ -6358,14 +6366,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@7.13.0': {} + '@typescript-eslint/types@7.13.1': {} '@typescript-eslint/types@7.2.0': {} - '@typescript-eslint/typescript-estree@7.13.0(typescript@5.4.5)': + '@typescript-eslint/typescript-estree@7.13.1(typescript@5.4.5)': dependencies: - '@typescript-eslint/types': 7.13.0 - '@typescript-eslint/visitor-keys': 7.13.0 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/visitor-keys': 7.13.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -6392,20 +6400,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.13.0(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/utils@7.13.1(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 7.13.0 - '@typescript-eslint/types': 7.13.0 - '@typescript-eslint/typescript-estree': 7.13.0(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.4.5) eslint: 8.57.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.13.0': + '@typescript-eslint/visitor-keys@7.13.1': dependencies: - '@typescript-eslint/types': 7.13.0 + '@typescript-eslint/types': 7.13.1 eslint-visitor-keys: 3.4.3 '@typescript-eslint/visitor-keys@7.2.0': @@ -6526,15 +6534,15 @@ snapshots: transitivePeerDependencies: - supports-color - ai@3.1.36(react@18.3.1)(solid-js@1.8.17)(svelte@4.2.17)(vue@3.4.27(typescript@5.4.5))(zod@3.23.8): + ai@3.2.1(react@18.3.1)(solid-js@1.8.17)(svelte@4.2.17)(vue@3.4.27(typescript@5.4.5))(zod@3.23.8): dependencies: '@ai-sdk/provider': 0.0.10 - '@ai-sdk/provider-utils': 0.0.14(zod@3.23.8) - '@ai-sdk/react': 0.0.2(react@18.3.1)(zod@3.23.8) - '@ai-sdk/solid': 0.0.2(solid-js@1.8.17)(zod@3.23.8) - '@ai-sdk/svelte': 0.0.2(svelte@4.2.17)(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.2(zod@3.23.8) - '@ai-sdk/vue': 0.0.2(vue@3.4.27(typescript@5.4.5))(zod@3.23.8) + '@ai-sdk/provider-utils': 0.0.15(zod@3.23.8) + '@ai-sdk/react': 0.0.4(react@18.3.1)(zod@3.23.8) + '@ai-sdk/solid': 0.0.4(solid-js@1.8.17)(zod@3.23.8) + '@ai-sdk/svelte': 0.0.4(svelte@4.2.17)(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.4(zod@3.23.8) + '@ai-sdk/vue': 0.0.4(vue@3.4.27(typescript@5.4.5))(zod@3.23.8) eventsource-parser: 1.1.2 json-schema: 0.4.0 jsondiffpatch: 0.6.0 @@ -6927,13 +6935,13 @@ snapshots: cookie@0.6.0: {} - create-jest@29.7.0(@types/node@20.14.2): + create-jest@29.7.0(@types/node@20.14.6): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.14.2) + jest-config: 29.7.0(@types/node@20.14.6) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -7204,7 +7212,7 @@ snapshots: eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.13.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.13.1(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) eslint-plugin-react: 7.34.1(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) @@ -7228,7 +7236,7 @@ snapshots: enhanced-resolve: 5.16.1 eslint: 8.57.0 eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.13.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.13.1(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.5 is-core-module: 2.13.1 @@ -7239,11 +7247,11 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.13.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.13.1(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 7.13.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.13.1(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -7260,7 +7268,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.13.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.13.1(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 @@ -7270,7 +7278,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.13.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.13.1(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -7281,7 +7289,7 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 7.13.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.13.1(eslint@8.57.0)(typescript@5.4.5) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -7504,7 +7512,7 @@ snapshots: fraction.js@4.3.7: {} - framer-motion@11.2.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + framer-motion@11.2.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: tslib: 2.6.2 optionalDependencies: @@ -7889,7 +7897,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.6 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.3 @@ -7909,16 +7917,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.14.2): + jest-cli@29.7.0(@types/node@20.14.6): dependencies: '@jest/core': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.14.2) + create-jest: 29.7.0(@types/node@20.14.6) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.14.2) + jest-config: 29.7.0(@types/node@20.14.6) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -7928,7 +7936,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@20.14.2): + jest-config@29.7.0(@types/node@20.14.6): dependencies: '@babel/core': 7.24.5 '@jest/test-sequencer': 29.7.0 @@ -7953,7 +7961,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.6 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -7983,7 +7991,7 @@ snapshots: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 20.14.2 + '@types/node': 20.14.6 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -7997,7 +8005,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.6 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -8007,7 +8015,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.14.2 + '@types/node': 20.14.6 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -8046,7 +8054,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.6 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -8081,7 +8089,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.6 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -8109,7 +8117,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.6 chalk: 4.1.2 cjs-module-lexer: 1.3.1 collect-v8-coverage: 1.0.2 @@ -8155,7 +8163,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.6 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -8174,7 +8182,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.2 + '@types/node': 20.14.6 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -8183,17 +8191,17 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.6 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.14.2): + jest@29.7.0(@types/node@20.14.6): dependencies: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.14.2) + jest-cli: 29.7.0(@types/node@20.14.6) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -9308,7 +9316,7 @@ snapshots: dependencies: '@fastify/busboy': 2.1.1 - undici@6.19.0: {} + undici@6.19.2: {} universalify@0.2.0: {} diff --git a/src/app/admin/configuration/page.tsx b/src/app/admin/configuration/page.tsx index 2e196094..80cbe031 100644 --- a/src/app/admin/configuration/page.tsx +++ b/src/app/admin/configuration/page.tsx @@ -7,7 +7,7 @@ export default async function AdminConfigurationPage() { return ( +
App Configuration diff --git a/src/components/Checklist.tsx b/src/components/Checklist.tsx index 62a23bab..b48c9f5b 100644 --- a/src/components/Checklist.tsx +++ b/src/components/Checklist.tsx @@ -2,15 +2,18 @@ import { ReactNode } from 'react'; import { clsx } from 'clsx/lite'; import ExperimentalBadge from './ExperimentalBadge'; import Badge from './Badge'; +import ResponsiveText from './primitives/ResponsiveText'; export default function Checklist({ title, + titleShort, icon, optional, experimental, children, }: { title: string + titleShort?: string icon?: ReactNode optional?: boolean experimental?: boolean @@ -25,7 +28,9 @@ export default function Checklist({ )}> {icon} - {title} + + {title} + {optional && Optional} {experimental && diff --git a/src/components/ResponsiveDate.tsx b/src/components/ResponsiveDate.tsx index 77606a4c..433ae5bb 100644 --- a/src/components/ResponsiveDate.tsx +++ b/src/components/ResponsiveDate.tsx @@ -19,11 +19,17 @@ export default function ResponsiveDate({ className={clsx(className, 'uppercase')} > {/* Small */} - + {formatDate(date, 'short')} {/* Medium */} - + {formatDate(date, 'medium')} {/* Large */} diff --git a/src/components/primitives/ResponsiveText.tsx b/src/components/primitives/ResponsiveText.tsx new file mode 100644 index 00000000..8a53bb68 --- /dev/null +++ b/src/components/primitives/ResponsiveText.tsx @@ -0,0 +1,22 @@ +import { ReactNode } from 'react'; + +export default function ResponsiveText({ + children, + shortText, +}: { + children: ReactNode + shortText?: string +}) { + return ( + <> + {/* Full text */} + + {children} + + {/* Short text */} + + {shortText ?? children} + + + ); +} diff --git a/src/site/SiteChecklistClient.tsx b/src/site/SiteChecklistClient.tsx index 799017fc..d2c8cd0d 100644 --- a/src/site/SiteChecklistClient.tsx +++ b/src/site/SiteChecklistClient.tsx @@ -166,360 +166,371 @@ export default function SiteChecklistClient({ ; return ( -
- } - > - +
+ } > - {databaseError && - renderConnectionError('Database', databaseError)} - {hasVercelPostgres - ? renderSubStatus('checked', 'Vercel Postgres: connected') - : renderSubStatus('optional', <> - Vercel Postgres: - {' '} - {renderLink( - // eslint-disable-next-line max-len - 'https://vercel.com/docs/storage/vercel-postgres/quickstart#create-a-postgres-database', - 'create store', - )} - {' '} - and connect to project - )} - {hasDatabase && !hasVercelPostgres && - renderSubStatus('checked', <> - Postgres-compatible: connected - {' '} - (SSL {isPostgresSslEnabled ? 'enabled' : 'disabled'}) - )} - - + {databaseError && + renderConnectionError('Database', databaseError)} + {hasVercelPostgres + ? renderSubStatus('checked', 'Vercel Postgres: connected') + : renderSubStatus('optional', <> + Vercel Postgres: + {' '} + {renderLink( // eslint-disable-next-line max-len - ? `Setup storage (new uploads go to: ${labelForStorage(currentStorage)})` - : 'Setup storage'} - status={hasStorageProvider} - isPending={hasStorageProvider && isTestingConnections} + 'https://vercel.com/docs/storage/vercel-postgres/quickstart#create-a-postgres-database', + 'create store', + )} + {' '} + and connect to project + )} + {hasDatabase && !hasVercelPostgres && + renderSubStatus('checked', <> + Postgres-compatible: connected + {' '} + (SSL {isPostgresSslEnabled ? 'enabled' : 'disabled'}) + )} + + + {storageError && + renderConnectionError('Storage', storageError)} + {hasVercelBlobStorage + ? renderSubStatus('checked', 'Vercel Blob: connected') + : renderSubStatus('optional', <> + {labelForStorage('vercel-blob')}: + {' '} + {renderLink( + // eslint-disable-next-line max-len + 'https://vercel.com/docs/storage/vercel-blob/quickstart#create-a-blob-store', + 'create store', + )} + {' '} + and connect to project + + )} + {hasCloudflareR2Storage + ? renderSubStatus('checked', 'Cloudflare R2: connected') + : renderSubStatus('optional', <> + {labelForStorage('cloudflare-r2')}: + {' '} + {renderLink( + 'https://github.com/sambecker/exif-photo-blog#cloudflare-r2', + 'create/configure bucket', + )} + )} + {hasAwsS3Storage + ? renderSubStatus('checked', 'AWS S3: connected') + : renderSubStatus('optional', <> + {labelForStorage('aws-s3')}: + {' '} + {renderLink( + 'https://github.com/sambecker/exif-photo-blog#aws-s3', + 'create/configure bucket', + )} + )} + + + } > - {storageError && - renderConnectionError('Storage', storageError)} - {hasVercelBlobStorage - ? renderSubStatus('checked', 'Vercel Blob: connected') - : renderSubStatus('optional', <> - {labelForStorage('vercel-blob')}: - {' '} + + Store auth secret in environment variable: + {!hasAuthSecret && +
+ +
+ {secret ? {secret} : } +
+ {renderCopyButton('Secret', secret)} +
+
+
+
} + {renderEnvVars(['AUTH_SECRET'])} +
+ + Store admin email/password + {' '} + in environment variables: + {renderEnvVars([ + 'ADMIN_EMAIL', + 'ADMIN_PASSWORD', + ])} + +
+ } + > + + Store in environment variable (displayed in top-right nav): + {renderEnvVars(['NEXT_PUBLIC_SITE_DOMAIN'])} + + + Store in environment variable (used in page titles): + {renderEnvVars(['NEXT_PUBLIC_SITE_TITLE'])} + + + Store in environment variable (mainly used for OG meta): + {renderEnvVars(['NEXT_PUBLIC_SITE_DESCRIPTION'])} + + + + {!simplifiedView && <> + } + experimental + optional + > + + {aiError && + renderConnectionError('OpenAI', aiError)} + Store your OpenAI secret key in order to add experimental support + for AI-generated text descriptions and enable an invisible field + called {'"Semantic Description"'} used to support CMD-K search + {renderEnvVars(['OPENAI_SECRET_KEY'])} + + + {kvError && + renderConnectionError('Vercel KV', kvError)} {renderLink( // eslint-disable-next-line max-len - 'https://vercel.com/docs/storage/vercel-blob/quickstart#create-a-blob-store', - 'create store', + 'https://vercel.com/docs/storage/vercel-kv/quickstart#create-a-kv-database', + 'Create Vercel KV store', )} - {' '} - and connect to project - - )} - {hasCloudflareR2Storage - ? renderSubStatus('checked', 'Cloudflare R2: connected') - : renderSubStatus('optional', <> - {labelForStorage('cloudflare-r2')}: {' '} - {renderLink( - 'https://github.com/sambecker/exif-photo-blog#cloudflare-r2', - 'create/configure bucket', - )} - )} - {hasAwsS3Storage - ? renderSubStatus('checked', 'AWS S3: connected') - : renderSubStatus('optional', <> - {labelForStorage('aws-s3')}: - {' '} - {renderLink( - 'https://github.com/sambecker/exif-photo-blog#aws-s3', - 'create/configure bucket', - )} - )} - - - } - > - - Store auth secret in environment variable: - {!hasAuthSecret && -
- -
- {secret ? {secret} : } -
- {renderCopyButton('Secret', secret)} -
-
-
-
} - {renderEnvVars(['AUTH_SECRET'])} -
- - Store admin email/password - {' '} - in environment variables: - {renderEnvVars([ - 'ADMIN_EMAIL', - 'ADMIN_PASSWORD', - ])} - -
- } - > - - Store in environment variable (displayed in top-right nav): - {renderEnvVars(['NEXT_PUBLIC_SITE_DOMAIN'])} - - - Store in environment variable (used in page titles): - {renderEnvVars(['NEXT_PUBLIC_SITE_TITLE'])} - - - Store in environment variable (mainly used for OG meta): - {renderEnvVars(['NEXT_PUBLIC_SITE_DESCRIPTION'])} - - - - {!simplifiedView && <> - } - experimental - optional - > - - {aiError && - renderConnectionError('OpenAI', aiError)} - Store your OpenAI secret key in order to add experimental support - for AI-generated text descriptions and enable an invisible field - called {'"Semantic Description"'} used to support CMD-K search - {renderEnvVars(['OPENAI_SECRET_KEY'])} - - - {kvError && - renderConnectionError('Vercel KV', kvError)} - {renderLink( + and connect to project in order to enable rate limiting + + - + Comma-separated fields to auto-generate when + uploading photos. Accepted values: title, caption, + tags, description, all, or none (default is {'"all"'}). + {renderEnvVars(['AI_TEXT_AUTO_GENERATED_FIELDS'])} + + + } optional > - Comma-separated fields to auto-generate when - uploading photos. Accepted values: title, caption, - tags, description, all, or none (default is {'"all"'}). - {renderEnvVars(['AI_TEXT_AUTO_GENERATED_FIELDS'])} - - - } - optional - > - - Set environment variable to {'"1"'} to enable - higher quality image storage: - {renderEnvVars(['NEXT_PUBLIC_PRO_MODE'])} - - - Set environment variable to {'"1"'} to enable static optimization, - i.e., rendering pages and images at build time: - {renderSubStatus( - arePagesStaticallyOptimized ? 'checked' : 'optional', - renderEnvVars(['NEXT_PUBLIC_STATICALLY_OPTIMIZE_PAGES']), - 'translate-y-[3.5px]', - )} - {renderSubStatus( - areOGImagesStaticallyOptimized ? 'checked' : 'optional', - renderEnvVars(['NEXT_PUBLIC_STATICALLY_OPTIMIZE_OG_IMAGES']), - 'translate-y-[3.5px]', - )} - - - Set environment variable to {'"1"'} to constrain the size - {' '} - of each photo, and enable a surrounding border: - {renderEnvVars(['NEXT_PUBLIC_MATTE_PHOTOS'])} - - - Set environment variable to {'"1"'} to prevent - image blur data being stored and displayed - {renderEnvVars(['NEXT_PUBLIC_BLUR_DISABLED'])} - - - Set environment variable to {'"1"'} to disable - collection/display of location-based data - {renderEnvVars(['NEXT_PUBLIC_GEO_PRIVACY'])} - - - Set environment variable to {'"1"'} to prevent - priority order photo field affecting photo order - {renderEnvVars(['NEXT_PUBLIC_IGNORE_PRIORITY_ORDER'])} - - - Set environment variable to {'"1"'} to enable - a public API available at /api: - {renderEnvVars(['NEXT_PUBLIC_PUBLIC_API'])} - - - Set environment variable to {'"1"'} to hide footer link: - {renderEnvVars(['NEXT_PUBLIC_HIDE_REPO_LINK'])} - - - Set environment variable to {'"1"'} to hide - {' '} - X button from share modal: - {renderEnvVars(['NEXT_PUBLIC_HIDE_SOCIAL'])} - - - Set environment variable to {'"1"'} to prevent - simulations showing up in /grid sidebar and - CMD-K search results: - {renderEnvVars(['NEXT_PUBLIC_HIDE_FILM_SIMULATIONS'])} - - - Set environment variable to {'"1"'} to hide EXIF data: - {renderEnvVars(['NEXT_PUBLIC_HIDE_EXIF_DATA'])} - - - Set environment variable to any number to enforce aspect ratio - {' '} - (default is {'"1"'}, i.e., square)—set to {'"0"'} to disable: - {renderEnvVars(['NEXT_PUBLIC_GRID_ASPECT_RATIO'])} - - - Set environment variable to {'"BOTTOM"'} to - keep OG image text bottom aligned (default is {'"top"'}): - {renderEnvVars(['NEXT_PUBLIC_OG_TEXT_ALIGNMENT'])} - - - } -
+ + Set environment variable to {'"1"'} to enable + higher quality image storage: + {renderEnvVars(['NEXT_PUBLIC_PRO_MODE'])} + + + Set environment variable to {'"1"'} to enable static optimization, + i.e., rendering pages and images at build time: + {renderSubStatus( + arePagesStaticallyOptimized ? 'checked' : 'optional', + renderEnvVars(['NEXT_PUBLIC_STATICALLY_OPTIMIZE_PAGES']), + 'translate-y-[3.5px]', + )} + {renderSubStatus( + areOGImagesStaticallyOptimized ? 'checked' : 'optional', + renderEnvVars(['NEXT_PUBLIC_STATICALLY_OPTIMIZE_OG_IMAGES']), + 'translate-y-[3.5px]', + )} + + + Set environment variable to {'"1"'} to constrain the size + {' '} + of each photo, and enable a surrounding border: + {renderEnvVars(['NEXT_PUBLIC_MATTE_PHOTOS'])} + + + Set environment variable to {'"1"'} to prevent + image blur data being stored and displayed + {renderEnvVars(['NEXT_PUBLIC_BLUR_DISABLED'])} + + + Set environment variable to {'"1"'} to disable + collection/display of location-based data + {renderEnvVars(['NEXT_PUBLIC_GEO_PRIVACY'])} + + + Set environment variable to {'"1"'} to prevent + priority order photo field affecting photo order + {renderEnvVars(['NEXT_PUBLIC_IGNORE_PRIORITY_ORDER'])} + + + Set environment variable to {'"1"'} to enable + a public API available at /api: + {renderEnvVars(['NEXT_PUBLIC_PUBLIC_API'])} + + + Set environment variable to {'"1"'} to hide footer link: + {renderEnvVars(['NEXT_PUBLIC_HIDE_REPO_LINK'])} + + + Set environment variable to {'"1"'} to hide + {' '} + X button from share modal: + {renderEnvVars(['NEXT_PUBLIC_HIDE_SOCIAL'])} + + + Set environment variable to {'"1"'} to prevent + simulations showing up in /grid sidebar and + CMD-K search results: + {renderEnvVars(['NEXT_PUBLIC_HIDE_FILM_SIMULATIONS'])} + + + Set environment variable to {'"1"'} to hide EXIF data: + {renderEnvVars(['NEXT_PUBLIC_HIDE_EXIF_DATA'])} + + + Set environment variable to any number to enforce aspect ratio + {' '} + (default is {'"1"'}, i.e., square)—set to {'"0"'} to disable: + {renderEnvVars(['NEXT_PUBLIC_GRID_ASPECT_RATIO'])} + + + Set environment variable to {'"BOTTOM"'} to + keep OG image text bottom aligned (default is {'"top"'}): + {renderEnvVars(['NEXT_PUBLIC_OG_TEXT_ALIGNMENT'])} + + + } +
+
Changes to environment variables require a redeploy or reboot of local dev server
{!simplifiedView && -
-
Base Url: {baseUrl || 'Not Defined'}
+
+
+ Base Url +    + + {baseUrl || 'Not Defined'} + +
- Commit:   - {' '} - {commitSha ? commitSha.slice(0, 7) : 'Not Found'} + Commit +      + {commitSha || 'Not Found'}
}
diff --git a/src/site/SiteChecklistServer.tsx b/src/site/SiteChecklistServer.tsx index 8078124e..1d264d19 100644 --- a/src/site/SiteChecklistServer.tsx +++ b/src/site/SiteChecklistServer.tsx @@ -8,7 +8,7 @@ export default async function SiteChecklistServer({ }: { simplifiedView?: boolean }) { - const secret = await generateAuthSecret(); + const secret = await generateAuthSecret().catch(() => 'TRY AGAIN'); const connectionErrors = await testConnectionsAction().catch(() => ({})); return (