diff --git a/examples/vite.config.ts b/examples/vite.config.ts index 72bbf5a15..e69fd0a8c 100644 --- a/examples/vite.config.ts +++ b/examples/vite.config.ts @@ -19,11 +19,7 @@ export default defineConfig(async ({ command, mode }) => { return { base: `/${base}`, envPrefix: 'SEAM_', - plugins: [ - tsconfigPaths(), - // @ts-expect-error https://github.com/vitejs/vite-plugin-react/issues/104 - react(), - ], + plugins: [tsconfigPaths(), react()], resolve: { alias: { '@seamapi/react/elements.js': fileURLToPath( diff --git a/package-lock.json b/package-lock.json index ca3179494..edc9701af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -222,22 +222,22 @@ } }, "node_modules/@babel/core": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.20.tgz", - "integrity": "sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz", + "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.22.15", + "@babel/generator": "^7.23.0", "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.22.20", - "@babel/helpers": "^7.22.15", - "@babel/parser": "^7.22.16", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.0", + "@babel/parser": "^7.23.0", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.22.20", - "@babel/types": "^7.22.19", - "convert-source-map": "^1.7.0", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", @@ -251,13 +251,19 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "node_modules/@babel/generator": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz", - "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -372,13 +378,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -397,12 +403,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz", - "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -421,9 +427,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz", - "integrity": "sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -572,14 +578,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", - "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", + "version": "7.23.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", + "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", "dev": true, "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -671,9 +677,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.16", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", - "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1124,9 +1130,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz", - "integrity": "sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", + "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1211,9 +1217,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz", - "integrity": "sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", + "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1415,12 +1421,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", - "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", + "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1431,12 +1437,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.15.tgz", - "integrity": "sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", + "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" }, @@ -1448,15 +1454,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", - "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", + "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-module-transforms": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1596,9 +1602,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz", - "integrity": "sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", + "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2105,15 +2111,15 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.15.tgz", - "integrity": "sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.0.tgz", + "integrity": "sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.22.15", "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", "@babel/plugin-transform-typescript": "^7.22.15" }, "engines": { @@ -2258,9 +2264,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", - "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "version": "7.23.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz", + "integrity": "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2283,19 +2289,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.20.tgz", - "integrity": "sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz", + "integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.22.15", + "@babel/generator": "^7.23.0", "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.22.5", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.16", - "@babel/types": "^7.22.19", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2304,13 +2310,13 @@ } }, "node_modules/@babel/types": { - "version": "7.22.19", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz", - "integrity": "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.19", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2340,9 +2346,9 @@ } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.1.tgz", - "integrity": "sha512-xrvsmVUtefWMWQsGgFffqWSK03pZ1vfDki4IVIIUxxDKnGBzqNgv0A7SB1oXtVNEkcVO8xi1ZrTL29HhSu5kGA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.2.tgz", + "integrity": "sha512-sLYGdAdEY2x7TSw9FtmdaTrh2wFtRJO5VMbBrA8tEqEod7GEggFmxTSK9XqExib3yMuYNcvcTdCZIP6ukdjAIA==", "dev": true, "funding": [ { @@ -2358,13 +2364,13 @@ "node": "^14 || ^16 || >=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^2.2.0" + "@csstools/css-tokenizer": "^2.2.1" } }, "node_modules/@csstools/css-tokenizer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.0.tgz", - "integrity": "sha512-wErmsWCbsmig8sQKkM6pFhr/oPha1bHfvxsUY5CYSQxwyhA9Ulrs8EqCgClhg4Tgg2XapVstGqSVcz0xOYizZA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.1.tgz", + "integrity": "sha512-Zmsf2f/CaEPWEVgw29odOj+WEVoiJy9s9NOv5GgNY9mZ1CZ7394By6wONrONrTsnNDv6F9hR02nvFihrGVGHBg==", "dev": true, "funding": [ { @@ -2381,9 +2387,9 @@ } }, "node_modules/@csstools/media-query-list-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.4.tgz", - "integrity": "sha512-V/OUXYX91tAC1CDsiY+HotIcJR+vPtzrX8pCplCpT++i8ThZZsq5F5dzZh/bDM3WUOjrvC1ljed1oSJxMfjqhw==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.5.tgz", + "integrity": "sha512-IxVBdYzR8pYe89JiyXQuYk4aVVoCPhMJkz6ElRwlVysjwURTsTk/bmY/z4FfeRE+CRBMlykPwXEVUg8lThv7AQ==", "dev": true, "funding": [ { @@ -2399,8 +2405,8 @@ "node": "^14 || ^16 || >=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.3.1", - "@csstools/css-tokenizer": "^2.2.0" + "@csstools/css-parser-algorithms": "^2.3.2", + "@csstools/css-tokenizer": "^2.2.1" } }, "node_modules/@csstools/selector-specificity": { @@ -2581,36 +2587,6 @@ "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==", "dev": true }, - "node_modules/@esbuild-kit/cjs-loader": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.4.tgz", - "integrity": "sha512-NfsJX4PdzhwSkfJukczyUiZGc7zNNWZcEAyqeISpDnn0PTfzMJR1aR8xAIPskBejIxBJbIgCCMzbaYa9SXepIg==", - "dev": true, - "dependencies": { - "@esbuild-kit/core-utils": "^3.2.3", - "get-tsconfig": "^4.7.0" - } - }, - "node_modules/@esbuild-kit/core-utils": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.3.2.tgz", - "integrity": "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==", - "dev": true, - "dependencies": { - "esbuild": "~0.18.20", - "source-map-support": "^0.5.21" - } - }, - "node_modules/@esbuild-kit/esm-loader": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.6.5.tgz", - "integrity": "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==", - "dev": true, - "dependencies": { - "@esbuild-kit/core-utils": "^3.3.2", - "get-tsconfig": "^4.7.0" - } - }, "node_modules/@esbuild/android-arm": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", @@ -2979,9 +2955,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", - "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.0.tgz", + "integrity": "sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -3017,9 +2993,9 @@ "dev": true }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.22.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", + "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3056,9 +3032,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", - "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", + "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3457,15 +3433,15 @@ } }, "node_modules/@mui/base": { - "version": "5.0.0-beta.16", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.16.tgz", - "integrity": "sha512-OYxhC81c9bO0wobGcM8rrY5bRwpCXAI21BL0P2wz/2vTv4ek7ALz9+U5M8wgdmtRNUhmCmAB4L2WRwFRf5Cd8Q==", + "version": "5.0.0-beta.17", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.17.tgz", + "integrity": "sha512-xNbk7iOXrglNdIxFBN0k3ySsPIFLWCnFxqsAYl7CIcDkD9low4kJ7IUuy6ctwx/HAy2fenrT3KXHr1sGjAMgpQ==", "dev": true, "dependencies": { "@babel/runtime": "^7.22.15", "@floating-ui/react-dom": "^2.0.2", "@mui/types": "^7.2.4", - "@mui/utils": "^5.14.10", + "@mui/utils": "^5.14.11", "@popperjs/core": "^2.11.8", "clsx": "^2.0.0", "prop-types": "^15.8.1" @@ -3489,9 +3465,9 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.10.tgz", - "integrity": "sha512-kPHu/NhZq1k+vSZR5wq3AyUfD4bnfWAeuKpps0+8PS7ZHQ2Lyv1cXJh+PlFdCIOa0PK98rk3JPwMzS8BMhdHwQ==", + "version": "5.14.11", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.11.tgz", + "integrity": "sha512-uY8FLQURhXe3f3O4dS5OSGML9KDm9+IE226cBu78jarVIzdQGPlXwGIlSI9VJR8MvZDA6C0+6XfWDhWCHruC5Q==", "dev": true, "funding": { "type": "opencollective", @@ -3499,9 +3475,9 @@ } }, "node_modules/@mui/icons-material": { - "version": "5.14.9", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.9.tgz", - "integrity": "sha512-xTRQbDsogsJo7tY5Og8R9zbuG2q+KIPVIM6JQoKxtJlz9DPOw1u0T2fGrvwD+XAOVifQf6epNMcGCDLfJAz4Nw==", + "version": "5.14.11", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.11.tgz", + "integrity": "sha512-aHReLasBuS/+hhPzbZCgZ0eTcZ2QRnoC2WNK7XvdAf3l+LjC1flzjh6GWw1tZJ5NHnZ+bivdwtLFQ8XTR96JkA==", "dev": true, "dependencies": { "@babel/runtime": "^7.22.15" @@ -3525,17 +3501,17 @@ } }, "node_modules/@mui/material": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.10.tgz", - "integrity": "sha512-ejFMppnO+lzBXpzju+N4SSz0Mhmi5sihXUGcr5FxpgB6bfUP0Lpe32O0Sw/3s8xlmLEvG1fqVT0rRyAVMlCA+A==", + "version": "5.14.11", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.11.tgz", + "integrity": "sha512-DnSdJzcR7lwG12JA5L2t8JF+RDzMygu5rCNW+logWb/KW2/TRzwLyVWO+CorHTBjBRd38DBxnwOCDiYkDd+N3A==", "dev": true, "dependencies": { "@babel/runtime": "^7.22.15", - "@mui/base": "5.0.0-beta.16", - "@mui/core-downloads-tracker": "^5.14.10", - "@mui/system": "^5.14.10", + "@mui/base": "5.0.0-beta.17", + "@mui/core-downloads-tracker": "^5.14.11", + "@mui/system": "^5.14.11", "@mui/types": "^7.2.4", - "@mui/utils": "^5.14.10", + "@mui/utils": "^5.14.11", "@types/react-transition-group": "^4.4.6", "clsx": "^2.0.0", "csstype": "^3.1.2", @@ -3570,13 +3546,13 @@ } }, "node_modules/@mui/private-theming": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.10.tgz", - "integrity": "sha512-f67xOj3H06wWDT9xBg7hVL/HSKNF+HG1Kx0Pm23skkbEqD2Ef2Lif64e5nPdmWVv+7cISCYtSuE2aeuzrZe78w==", + "version": "5.14.11", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.11.tgz", + "integrity": "sha512-MSnNNzTu9pfKLCKs1ZAKwOTgE4bz+fQA0fNr8Jm7NDmuWmw0CaN9Vq2/MHsatE7+S0A25IAKby46Uv1u53rKVQ==", "dev": true, "dependencies": { "@babel/runtime": "^7.22.15", - "@mui/utils": "^5.14.10", + "@mui/utils": "^5.14.11", "prop-types": "^15.8.1" }, "engines": { @@ -3597,9 +3573,9 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.10.tgz", - "integrity": "sha512-EJckxmQHrsBvDbFu1trJkvjNw/1R7jfNarnqPSnL+jEQawCkQIqVELWLrlOa611TFtxSJGkdUfCFXeJC203HVg==", + "version": "5.14.11", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.11.tgz", + "integrity": "sha512-jdUlqRgTYQ8RMtPX4MbRZqar6W2OiIb6J5KEFbIu4FqvPrk44Each4ppg/LAqp1qNlBYq5i+7Q10MYLMpDxX9A==", "dev": true, "dependencies": { "@babel/runtime": "^7.22.15", @@ -3629,16 +3605,16 @@ } }, "node_modules/@mui/system": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.10.tgz", - "integrity": "sha512-QQmtTG/R4gjmLiL5ECQ7kRxLKDm8aKKD7seGZfbINtRVJDyFhKChA1a+K2bfqIAaBo1EMDv+6FWNT1Q5cRKjFA==", + "version": "5.14.11", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.11.tgz", + "integrity": "sha512-yl8xV+y0k7j6dzBsHabKwoShmjqLa8kTxrhUI3JpqLG358VRVMJRW/ES0HhvfcCi4IVXde+Tc2P3K1akGL8zoA==", "dev": true, "dependencies": { "@babel/runtime": "^7.22.15", - "@mui/private-theming": "^5.14.10", - "@mui/styled-engine": "^5.14.10", + "@mui/private-theming": "^5.14.11", + "@mui/styled-engine": "^5.14.11", "@mui/types": "^7.2.4", - "@mui/utils": "^5.14.10", + "@mui/utils": "^5.14.11", "clsx": "^2.0.0", "csstype": "^3.1.2", "prop-types": "^15.8.1" @@ -3683,9 +3659,9 @@ } }, "node_modules/@mui/utils": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.10.tgz", - "integrity": "sha512-Rn+vYQX7FxkcW0riDX/clNUwKuOJFH45HiULxwmpgnzQoQr3A0lb+QYwaZ+FAkZrR7qLoHKmLQlcItu6LT0y/Q==", + "version": "5.14.11", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.11.tgz", + "integrity": "sha512-fmkIiCPKyDssYrJ5qk+dime1nlO3dmWfCtaPY/uVBqCRMBZ11JhddB9m8sjI2mgqQQwRJG5bq3biaosNdU/s4Q==", "dev": true, "dependencies": { "@babel/runtime": "^7.22.15", @@ -4524,9 +4500,9 @@ } }, "node_modules/@seamapi/fake-seam-connect": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@seamapi/fake-seam-connect/-/fake-seam-connect-1.14.0.tgz", - "integrity": "sha512-lePIE5DsGr93g5NsEG3j/k43MeQS0ENcQbjbYOijZS37Nrvj/qvVk5lJH1iRnKn79RdmpFdBhnidKQiODd5VRg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@seamapi/fake-seam-connect/-/fake-seam-connect-1.15.0.tgz", + "integrity": "sha512-BsHq/SetsHkQw/eS/nk9AlRRHTaiQUEQ3sfwNrTVoLyqkkt3AXtdhvMrj7K/cHAK8nu/kVYXgJPbwJRSfGCz5g==", "dev": true, "bin": { "fake-seam-connect": "dist/server.js" @@ -4557,19 +4533,19 @@ "integrity": "sha512-FrYD1xadah/TtAP6VJ04lDD5h9rdDj/d8wH/jMYTtHqZBv9z2btdvEU8vTxdjdkFmo1b/BH+t3R1wi/mYhCCNg==" }, "node_modules/@storybook/addon-actions": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.4.2.tgz", - "integrity": "sha512-aKHyYjxcWaOTf/7B8x4EmUNkDAiYJZyJfGTYg2TDEDs89x7/9slujAA01qIgOp74C9nWkHDUVdm7/J+h3kWJWw==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.4.5.tgz", + "integrity": "sha512-FkjJWmPN/+duLSkRwfa2bwlwjKfY6yCXYn7CRzn3rb64B8f50NB79zAgVLHjkJh9l6T3DIlWtol6vqPHj1aRpw==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.2", - "@storybook/components": "7.4.2", - "@storybook/core-events": "7.4.2", + "@storybook/client-logger": "7.4.5", + "@storybook/components": "7.4.5", + "@storybook/core-events": "7.4.5", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.4.2", - "@storybook/preview-api": "7.4.2", - "@storybook/theming": "7.4.2", - "@storybook/types": "7.4.2", + "@storybook/manager-api": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", "dequal": "^2.0.2", "lodash": "^4.17.21", "polished": "^4.2.2", @@ -4597,19 +4573,19 @@ } }, "node_modules/@storybook/addon-backgrounds": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.4.2.tgz", - "integrity": "sha512-Vl6Vw1NzO5jRqlAEpG017z6N79Drlp7Wpw8O9+69/dKtTNmuLqLnPxWrn4nL2CNvghHToLMpToSAFpRo2fBZBg==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.4.5.tgz", + "integrity": "sha512-fTq9E1WrYH/9hwDemFVLVcaI2iSSuwWnvY/8tqGrY9xhQF5dIpeHf+z8+HWXpau7e6Z0/WiYR+1vwAcIKt95LQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.2", - "@storybook/components": "7.4.2", - "@storybook/core-events": "7.4.2", + "@storybook/client-logger": "7.4.5", + "@storybook/components": "7.4.5", + "@storybook/core-events": "7.4.5", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.4.2", - "@storybook/preview-api": "7.4.2", - "@storybook/theming": "7.4.2", - "@storybook/types": "7.4.2", + "@storybook/manager-api": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", "memoizerific": "^1.11.3", "ts-dedent": "^2.0.0" }, @@ -4631,21 +4607,21 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.4.2.tgz", - "integrity": "sha512-qzSac1bulSa7mqkfBfyAqbP9PbIio5CjGJ5VyT055ab50e13gj1eS3I9EJHCupYb19E3f465QatrGhoaTsE4hg==", - "dev": true, - "dependencies": { - "@storybook/blocks": "7.4.2", - "@storybook/client-logger": "7.4.2", - "@storybook/components": "7.4.2", - "@storybook/core-common": "7.4.2", - "@storybook/core-events": "7.4.2", - "@storybook/manager-api": "7.4.2", - "@storybook/node-logger": "7.4.2", - "@storybook/preview-api": "7.4.2", - "@storybook/theming": "7.4.2", - "@storybook/types": "7.4.2", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.4.5.tgz", + "integrity": "sha512-Mxs56jt44HIbZ4gJa0AII1U8GqEGFsvcM5Iob0ETNpxCW5Kj5iHly/4Ws0RFWPH/krrQKaLpWXaUxKmbtEzhJA==", + "dev": true, + "dependencies": { + "@storybook/blocks": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/components": "7.4.5", + "@storybook/core-common": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/manager-api": "7.4.5", + "@storybook/node-logger": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" }, @@ -4694,26 +4670,26 @@ } }, "node_modules/@storybook/addon-docs": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.4.2.tgz", - "integrity": "sha512-MV49/bGTibk2kvufk1+JEkDe2Ii/wfh5s+zO6a7p/FRy9zK0hQy3nEc56VpQ3+KzgDr0uyZI+mYq26OPwBuKRg==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.4.5.tgz", + "integrity": "sha512-KjFVeq8oL7ZC1gsk8iY3Nn0RrHHUpczmOTCd8FeVNmKD4vq+dkPb/8bJLy+jArmIZ8vRhknpTh6kp1BqB7qHGQ==", "dev": true, "dependencies": { "@jest/transform": "^29.3.1", "@mdx-js/react": "^2.1.5", - "@storybook/blocks": "7.4.2", - "@storybook/client-logger": "7.4.2", - "@storybook/components": "7.4.2", - "@storybook/csf-plugin": "7.4.2", - "@storybook/csf-tools": "7.4.2", + "@storybook/blocks": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/components": "7.4.5", + "@storybook/csf-plugin": "7.4.5", + "@storybook/csf-tools": "7.4.5", "@storybook/global": "^5.0.0", "@storybook/mdx2-csf": "^1.0.0", - "@storybook/node-logger": "7.4.2", - "@storybook/postinstall": "7.4.2", - "@storybook/preview-api": "7.4.2", - "@storybook/react-dom-shim": "7.4.2", - "@storybook/theming": "7.4.2", - "@storybook/types": "7.4.2", + "@storybook/node-logger": "7.4.5", + "@storybook/postinstall": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/react-dom-shim": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", "fs-extra": "^11.1.0", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", @@ -4729,24 +4705,24 @@ } }, "node_modules/@storybook/addon-essentials": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.4.2.tgz", - "integrity": "sha512-9VqVe8pUogA9TIAl9xxNSdqU1zfXXdZW6J3BfT3r0DolU4nLusejs2xIu6smhEjZ1KYD6V30Uy9HDft/GRCSnw==", - "dev": true, - "dependencies": { - "@storybook/addon-actions": "7.4.2", - "@storybook/addon-backgrounds": "7.4.2", - "@storybook/addon-controls": "7.4.2", - "@storybook/addon-docs": "7.4.2", - "@storybook/addon-highlight": "7.4.2", - "@storybook/addon-measure": "7.4.2", - "@storybook/addon-outline": "7.4.2", - "@storybook/addon-toolbars": "7.4.2", - "@storybook/addon-viewport": "7.4.2", - "@storybook/core-common": "7.4.2", - "@storybook/manager-api": "7.4.2", - "@storybook/node-logger": "7.4.2", - "@storybook/preview-api": "7.4.2", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.4.5.tgz", + "integrity": "sha512-H7zZWJXZP0UU2kXfo9zlQfjIKHuuqYBK7PZ2/SL5y08mTrbtt1BfqYScz3xRvHocaFcsBWCXdy8jJULT4KFUpw==", + "dev": true, + "dependencies": { + "@storybook/addon-actions": "7.4.5", + "@storybook/addon-backgrounds": "7.4.5", + "@storybook/addon-controls": "7.4.5", + "@storybook/addon-docs": "7.4.5", + "@storybook/addon-highlight": "7.4.5", + "@storybook/addon-measure": "7.4.5", + "@storybook/addon-outline": "7.4.5", + "@storybook/addon-toolbars": "7.4.5", + "@storybook/addon-viewport": "7.4.5", + "@storybook/core-common": "7.4.5", + "@storybook/manager-api": "7.4.5", + "@storybook/node-logger": "7.4.5", + "@storybook/preview-api": "7.4.5", "ts-dedent": "^2.0.0" }, "funding": { @@ -4759,14 +4735,14 @@ } }, "node_modules/@storybook/addon-highlight": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.4.2.tgz", - "integrity": "sha512-HpwQiYil9RlMz303wQ9+ElW6W+Z0baqBUemlQ1JJZ6Wm47mgVVy8vLPcdH3JQkv7E34f51apPKVKFqq49xDqaA==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.4.5.tgz", + "integrity": "sha512-6Ru411+Iis4m2weKb8kB1eEssLvCHwFqAf4fjcOC//O5Vaf5+beHYZJUm/rzD0k/oUHfLCBwDBSBY5TLRegkdA==", "dev": true, "dependencies": { - "@storybook/core-events": "7.4.2", + "@storybook/core-events": "7.4.5", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.4.2" + "@storybook/preview-api": "7.4.5" }, "funding": { "type": "opencollective", @@ -4774,19 +4750,19 @@ } }, "node_modules/@storybook/addon-links": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.4.2.tgz", - "integrity": "sha512-XAspek8kkfiGq3NVt8SD108m54/dJWo+iDSmW3t/BQj2+sDPW8EpOg93X08YGoGMD8FSLOToeVC2Qi+kmAV0iw==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.4.5.tgz", + "integrity": "sha512-eKczq3U5KfPLaxMUzzVQQrGVtzDshUmrSEEuWKf9ZbK3mh5yVuagIBb88edgUX58vZ3TJMvqQzq1+BtUoPHQ6Q==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.2", - "@storybook/core-events": "7.4.2", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.4.2", - "@storybook/preview-api": "7.4.2", - "@storybook/router": "7.4.2", - "@storybook/types": "7.4.2", + "@storybook/manager-api": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/router": "7.4.5", + "@storybook/types": "7.4.5", "prop-types": "^15.7.2", "ts-dedent": "^2.0.0" }, @@ -4808,18 +4784,18 @@ } }, "node_modules/@storybook/addon-measure": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.4.2.tgz", - "integrity": "sha512-fewNqI3mDAGAhFOFh/rdDS3dJ3e1QDmSVMB0KDJ7K22HOF2To/H9QfXHV24osnBRu6QemSIqObry1leF+u5BmQ==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.4.5.tgz", + "integrity": "sha512-FQGZniTH67nC1YPR4ep0p+isgxwLaNAmIAyCZWXPRTkZssIrnXVwNgi0A2QkHdxZvxj8yXGFTOVXLWEPT9YvFQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.2", - "@storybook/components": "7.4.2", - "@storybook/core-events": "7.4.2", + "@storybook/client-logger": "7.4.5", + "@storybook/components": "7.4.5", + "@storybook/core-events": "7.4.5", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.4.2", - "@storybook/preview-api": "7.4.2", - "@storybook/types": "7.4.2", + "@storybook/manager-api": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/types": "7.4.5", "tiny-invariant": "^1.3.1" }, "funding": { @@ -4840,18 +4816,18 @@ } }, "node_modules/@storybook/addon-outline": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.4.2.tgz", - "integrity": "sha512-C6Zfoa6k2ef55O16GKV29T0wIYaDyiBtyd/fuTzz7hkpusSqKGFNeQyfG6hRmPv5yAib7+Pzl86cH3wGz85oTw==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.4.5.tgz", + "integrity": "sha512-eOH9BZzpehUz5FXD98OLnWgzmBFMvEB2kFfw5JiO7IRx7Fan80fx/WDQuMSNDOgLBCTTvsZ4TBMMXZHpw91WAw==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.2", - "@storybook/components": "7.4.2", - "@storybook/core-events": "7.4.2", + "@storybook/client-logger": "7.4.5", + "@storybook/components": "7.4.5", + "@storybook/core-events": "7.4.5", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.4.2", - "@storybook/preview-api": "7.4.2", - "@storybook/types": "7.4.2", + "@storybook/manager-api": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/types": "7.4.5", "ts-dedent": "^2.0.0" }, "funding": { @@ -4940,16 +4916,16 @@ } }, "node_modules/@storybook/addon-toolbars": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.4.2.tgz", - "integrity": "sha512-zSU8GpyMKo3vGxR7LQdvw5jV/6QUOfUepS3HEYGB88vlIPK7UriV8k9HB0FObEyYZKYU7wuPYBYhXApK4ZBVUA==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.4.5.tgz", + "integrity": "sha512-PZlwUTIdQ18de3zNb+627VSF4UrCGIXDdikyO9O5j2Cd0xfr5uhS6tgQ+3AT0DfUj0UIkKxilwcAt+agpNyicA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.2", - "@storybook/components": "7.4.2", - "@storybook/manager-api": "7.4.2", - "@storybook/preview-api": "7.4.2", - "@storybook/theming": "7.4.2" + "@storybook/client-logger": "7.4.5", + "@storybook/components": "7.4.5", + "@storybook/manager-api": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/theming": "7.4.5" }, "funding": { "type": "opencollective", @@ -4969,18 +4945,18 @@ } }, "node_modules/@storybook/addon-viewport": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.4.2.tgz", - "integrity": "sha512-0mlqJmHezyZG9lLpj2LKN6HTZI015T3hYuFP4MwZRj579e246DvcBTw/h3n3bjLRGglapmFqkCw9PRVMhsQ/CA==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.4.5.tgz", + "integrity": "sha512-SBLnUMIztVrqJ0fRCsVg9KZ29APLIxqAvTsYHF3twy5KB2naeCFuX3K9LxSH7vbROI6zHEfnPduz/Ykyvu9yUg==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.2", - "@storybook/components": "7.4.2", - "@storybook/core-events": "7.4.2", + "@storybook/client-logger": "7.4.5", + "@storybook/components": "7.4.5", + "@storybook/core-events": "7.4.5", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.4.2", - "@storybook/preview-api": "7.4.2", - "@storybook/theming": "7.4.2", + "@storybook/manager-api": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/theming": "7.4.5", "memoizerific": "^1.11.3", "prop-types": "^15.7.2" }, @@ -5002,14 +4978,14 @@ } }, "node_modules/@storybook/addons": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-7.4.2.tgz", - "integrity": "sha512-3snQVlTIKgzk6apNZc9sHr+0n4riiQkKGUkoHS8B1G90qj/9OyRnkDq55A7mJ9CxskqIjei5Q+hlko87g0jDsA==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-7.4.5.tgz", + "integrity": "sha512-jmdQf39XhwVi8d0J99qpk51fOAwNhYlCtVctvFWPX4qC1cq1d1pxLmTb5OBV2VHQ11BKwlKLzA7coiOgAQmNRg==", "dev": true, "dependencies": { - "@storybook/manager-api": "7.4.2", - "@storybook/preview-api": "7.4.2", - "@storybook/types": "7.4.2" + "@storybook/manager-api": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/types": "7.4.5" }, "funding": { "type": "opencollective", @@ -5021,13 +4997,13 @@ } }, "node_modules/@storybook/api": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-7.4.2.tgz", - "integrity": "sha512-PlabiAKGhngZWtArh7GbgGnfOV5kmlsvfBgcswl2gQ6a44N4gxL+8ftGvGrfX15ykFEzrtYXCCT44FmTmqS5xg==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-7.4.5.tgz", + "integrity": "sha512-NpdW54D/fG0QOHtzjMDEG9+zKjmdq1GdsfVX2YEA7s9vq9FTKpnhNSifphEmDEKzwIm64euRj7FEz8mUPbh27Q==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.2", - "@storybook/manager-api": "7.4.2" + "@storybook/client-logger": "7.4.5", + "@storybook/manager-api": "7.4.5" }, "funding": { "type": "opencollective", @@ -5047,22 +5023,22 @@ } }, "node_modules/@storybook/blocks": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.4.2.tgz", - "integrity": "sha512-ijuZBsYfQBuwMA8Lb1dT6t2PzqhkOtIdc+G5iQ/IgWLX5HT1br+Wq8o3TUWrqACM9VKIASnJk13FMAOeGggD/w==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.4.5.tgz", + "integrity": "sha512-FhAIkCT2HrzJcKsC3mL5+uG3GrbS23mYAT1h3iyPjCliZzxfCCI9UCMUXqYx4Z/FmAGJgpsQQXiBFZuoTHO9aQ==", "dev": true, "dependencies": { - "@storybook/channels": "7.4.2", - "@storybook/client-logger": "7.4.2", - "@storybook/components": "7.4.2", - "@storybook/core-events": "7.4.2", + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/components": "7.4.5", + "@storybook/core-events": "7.4.5", "@storybook/csf": "^0.1.0", - "@storybook/docs-tools": "7.4.2", + "@storybook/docs-tools": "7.4.5", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.4.2", - "@storybook/preview-api": "7.4.2", - "@storybook/theming": "7.4.2", - "@storybook/types": "7.4.2", + "@storybook/manager-api": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", "@types/lodash": "^4.14.167", "color-convert": "^2.0.1", "dequal": "^2.0.2", @@ -5086,15 +5062,15 @@ } }, "node_modules/@storybook/builder-manager": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.4.2.tgz", - "integrity": "sha512-MgdXr9QJ2sNk0fUshQ7hk4Ec9IkbPWR6alrmDByIOEU9bThx0j4OxU9uTLBy8r5uZsSL6nNtRyCvSP8YSKaQHQ==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.4.5.tgz", + "integrity": "sha512-Jhql8iZgK9cxDmG9NSTejsj5FptHni2TBa5Sea2Uz1NIBQ0OpzNdUfYVX6TN/PEq3QrWXTrAEKPqsL2qGjOrxw==", "dev": true, "dependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "7.4.2", - "@storybook/manager": "7.4.2", - "@storybook/node-logger": "7.4.2", + "@storybook/core-common": "7.4.5", + "@storybook/manager": "7.4.5", + "@storybook/node-logger": "7.4.5", "@types/ejs": "^3.1.1", "@types/find-cache-dir": "^3.2.1", "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", @@ -5114,28 +5090,28 @@ } }, "node_modules/@storybook/builder-webpack5": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.4.2.tgz", - "integrity": "sha512-NmlHRU4+jie+9z4cxuXUM49JI2ypIc6JHCiuJIqF7rONrsyCExZvPnzk8mNogox+RK1C7rP60g23rywZdxQNNA==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.4.5.tgz", + "integrity": "sha512-XSZLZ2kNlZaOJ3i2uZ9vI25cJkmQhmTVHPER+FPKM/yliqsQj7p2P9zYz/Mn0LepUheK1Y+aWWiead1r2DnNMg==", "dev": true, "dependencies": { "@babel/core": "^7.22.9", - "@storybook/addons": "7.4.2", - "@storybook/channels": "7.4.2", - "@storybook/client-api": "7.4.2", - "@storybook/client-logger": "7.4.2", - "@storybook/components": "7.4.2", - "@storybook/core-common": "7.4.2", - "@storybook/core-events": "7.4.2", - "@storybook/core-webpack": "7.4.2", + "@storybook/addons": "7.4.5", + "@storybook/channels": "7.4.5", + "@storybook/client-api": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/components": "7.4.5", + "@storybook/core-common": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/core-webpack": "7.4.5", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.4.2", - "@storybook/node-logger": "7.4.2", - "@storybook/preview": "7.4.2", - "@storybook/preview-api": "7.4.2", - "@storybook/router": "7.4.2", - "@storybook/store": "7.4.2", - "@storybook/theming": "7.4.2", + "@storybook/manager-api": "7.4.5", + "@storybook/node-logger": "7.4.5", + "@storybook/preview": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/router": "7.4.5", + "@storybook/store": "7.4.5", + "@storybook/theming": "7.4.5", "@swc/core": "^1.3.49", "@types/node": "^16.0.0", "@types/semver": "^7.3.4", @@ -5179,9 +5155,9 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { - "version": "16.18.52", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.52.tgz", - "integrity": "sha512-sm2aph6cRSsTMFYFgI+RpPLunXO9ClJkpizUVdT7KmGeyfQ14xnjTMT/f3MHcfKqevXqGT6BgVFzW8wcEoDUtA==", + "version": "16.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", + "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", "dev": true }, "node_modules/@storybook/builder-webpack5/node_modules/lru-cache": { @@ -5218,13 +5194,13 @@ "dev": true }, "node_modules/@storybook/channels": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.4.2.tgz", - "integrity": "sha512-Q95KnV+fTGaAV3S875+d5LlGg+bdC3bUnki3engODDS4ViSRHJ1bnXnqxKmAaS3O/52geIyWWR766YvwHw3avw==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.4.5.tgz", + "integrity": "sha512-zWPZn4CxPFXsrrSRQ9JD8GmTeWeFYgr3sTBpe23hnhYookCXVNJ6AcaXogrT9b2ALfbB6MiFDbZIHHTgIgbWpg==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.2", - "@storybook/core-events": "7.4.2", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", "@storybook/global": "^5.0.0", "qs": "^6.10.0", "telejson": "^7.2.0", @@ -5236,23 +5212,23 @@ } }, "node_modules/@storybook/cli": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.4.2.tgz", - "integrity": "sha512-WleObtC7OU2lT+pI2vTdXZPFMKDGbg3bkUJ+PG8+yqGg53ea5ZkwKWg9qHpXuiMkYDztqhbA8kYrny1GqFuVdg==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.4.5.tgz", + "integrity": "sha512-PlTkcHdKCugg3pD1zkBP/oFazcZsr7F3wdEmTvygfH0Cx/sQWg5wXBZCYKmf0ONRK4RKL3LVM8DRpeYiQVEFWg==", "dev": true, "dependencies": { "@babel/core": "^7.22.9", "@babel/preset-env": "^7.22.9", "@babel/types": "^7.22.5", "@ndelangen/get-tarball": "^3.0.7", - "@storybook/codemod": "7.4.2", - "@storybook/core-common": "7.4.2", - "@storybook/core-events": "7.4.2", - "@storybook/core-server": "7.4.2", - "@storybook/csf-tools": "7.4.2", - "@storybook/node-logger": "7.4.2", - "@storybook/telemetry": "7.4.2", - "@storybook/types": "7.4.2", + "@storybook/codemod": "7.4.5", + "@storybook/core-common": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/core-server": "7.4.5", + "@storybook/csf-tools": "7.4.5", + "@storybook/node-logger": "7.4.5", + "@storybook/telemetry": "7.4.5", + "@storybook/types": "7.4.5", "@types/semver": "^7.3.4", "@yarnpkg/fslib": "2.10.3", "@yarnpkg/libzip": "2.3.0", @@ -5586,13 +5562,13 @@ "dev": true }, "node_modules/@storybook/client-api": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-7.4.2.tgz", - "integrity": "sha512-nmDoEUkUqnHXUKMEs6m59rc4ZPKCVMmHhqccFFIsuLbPtsTqvbWk3Zt+CK6LoI651pafoM4V4zAY5eW0OpApIg==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-7.4.5.tgz", + "integrity": "sha512-8gUglsmlGNA0U9Ec/GJDOrqRfSIjm7uJJrq7TrmvfkLTLR1diYpoIljoXyNHU+Nhk/ebUiQkzflqzYKNzbkcYw==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.2", - "@storybook/preview-api": "7.4.2" + "@storybook/client-logger": "7.4.5", + "@storybook/preview-api": "7.4.5" }, "funding": { "type": "opencollective", @@ -5600,9 +5576,9 @@ } }, "node_modules/@storybook/client-logger": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.4.2.tgz", - "integrity": "sha512-LC8tYrYSJwF4DHRdNYh6y8hSvccwUIv5/WOZKJDmKx7mcEm6HsVuUu16C9jsl7iy6IqJYxgVz1va3WS6852E+A==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.4.5.tgz", + "integrity": "sha512-Bn6eTAjhPDUfLpvuxhKkpDpOtkadfkSmkBNBZRu3r0Dzk2J1nNyKV5K6D8dOU4PFVof4z/gXYj5bktT29jKsmw==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0" @@ -5613,18 +5589,18 @@ } }, "node_modules/@storybook/codemod": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.4.2.tgz", - "integrity": "sha512-wU+SLHG/PpLptI0aWEhPxwFPcX7uYe+Id21DKNPg/HvYaLG3N+/DPDef+lm3Vaov9w4OD74iuQ3knT67SSkvmw==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.4.5.tgz", + "integrity": "sha512-gyI2xliSv4vvnfNQN+0e3tRmT7beiq8q8iGjcBtpOhA2xrStyCR7PjbOfLXtRx2I/b50MDZMRTcckzeM3BLoWQ==", "dev": true, "dependencies": { "@babel/core": "^7.22.9", "@babel/preset-env": "^7.22.9", "@babel/types": "^7.22.5", "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.4.2", - "@storybook/node-logger": "7.4.2", - "@storybook/types": "7.4.2", + "@storybook/csf-tools": "7.4.5", + "@storybook/node-logger": "7.4.5", + "@storybook/types": "7.4.5", "@types/cross-spawn": "^6.0.2", "cross-spawn": "^7.0.3", "globby": "^11.0.2", @@ -5654,18 +5630,18 @@ } }, "node_modules/@storybook/components": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.2.tgz", - "integrity": "sha512-ecbDzSUd74vf6IwHsbQr+9mVRxKWLmwd9zJ8RHMcR8UejTRAAR/eVvYoCG331TQ8TrhTmHTy5xCVv47pm6ORkQ==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", "dev": true, "dependencies": { "@radix-ui/react-select": "^1.2.2", "@radix-ui/react-toolbar": "^1.0.4", - "@storybook/client-logger": "7.4.2", + "@storybook/client-logger": "7.4.5", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/theming": "7.4.2", - "@storybook/types": "7.4.2", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", "memoizerific": "^1.11.3", "use-resize-observer": "^9.1.0", "util-deprecate": "^1.0.2" @@ -5680,13 +5656,13 @@ } }, "node_modules/@storybook/core-client": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.4.2.tgz", - "integrity": "sha512-2K4g8ZaqBUv6oC+1/Bd6XSQ/F7hNyy8OLqnnxjoYsjUQc8DaN5wUckEEgT9WSvLQg88B/FYFtNAX5m17aySWrg==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.4.5.tgz", + "integrity": "sha512-d/qiCUZeOKY0HX/YmomxlccxJ2NKC3ttRrAsAXzJGypClKabv20X+qbeO/E7Kp5UQxIEJx1wuwJPcnlCvjgPDA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.2", - "@storybook/preview-api": "7.4.2" + "@storybook/client-logger": "7.4.5", + "@storybook/preview-api": "7.4.5" }, "funding": { "type": "opencollective", @@ -5694,14 +5670,14 @@ } }, "node_modules/@storybook/core-common": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.4.2.tgz", - "integrity": "sha512-Qj9S97TYO+jSNdC2+LrMFtZRvTnELeFnRtn/MDWhkM6mpZgRglxlZuXi5enJjqTh0dISAUxPpTtXNAJDfX99JA==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.4.5.tgz", + "integrity": "sha512-c4pBuILMD4YhSpJ+QpKtsUZpK+/rfolwOvzXfJwlN5EpYzMz6FjVR/LyX0cCT2YLI3X5YWRoCdvMxy5Aeryb8g==", "dev": true, "dependencies": { - "@storybook/core-events": "7.4.2", - "@storybook/node-logger": "7.4.2", - "@storybook/types": "7.4.2", + "@storybook/core-events": "7.4.5", + "@storybook/node-logger": "7.4.5", + "@storybook/types": "7.4.5", "@types/find-cache-dir": "^3.2.1", "@types/node": "^16.0.0", "@types/node-fetch": "^2.6.4", @@ -5729,15 +5705,15 @@ } }, "node_modules/@storybook/core-common/node_modules/@types/node": { - "version": "16.18.52", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.52.tgz", - "integrity": "sha512-sm2aph6cRSsTMFYFgI+RpPLunXO9ClJkpizUVdT7KmGeyfQ14xnjTMT/f3MHcfKqevXqGT6BgVFzW8wcEoDUtA==", + "version": "16.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", + "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", "dev": true }, "node_modules/@storybook/core-events": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.4.2.tgz", - "integrity": "sha512-WCEBw+Ew8DrccnB0hpP9TXadreoOlMnWCyuXU2XrvmK/vde009leWQIsLs1rY+L17zDVuogBms62AxrDDJmMpw==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.4.5.tgz", + "integrity": "sha512-Jzy/adSC95saYCZlgXE5j7jmiMLAXYpnBFBxEtBdXwSWEBb0zt21n1nyWBEAv9s/k2gqDXlPHKHeL5Mn6y40zA==", "dev": true, "dependencies": { "ts-dedent": "^2.0.0" @@ -5748,26 +5724,26 @@ } }, "node_modules/@storybook/core-server": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.4.2.tgz", - "integrity": "sha512-4aaFQTjb8jsbzJeCs+VTo3gdyK3r3VhQN2sxn6k/lcKjQFeO84+iqGgGmb+oWUVz2TJL+JrNh7SUXkVsMZBXVQ==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.4.5.tgz", + "integrity": "sha512-cW+Qx9Ls823577bd/s9Kv4M1MdKS8mkk6/+nYbwtAwH3hkdlb077rlk/ue0X4O9NZmCrtaJ84KNrBkeDUdFyLQ==", "dev": true, "dependencies": { "@aw-web-design/x-default-browser": "1.4.126", "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "7.4.2", - "@storybook/channels": "7.4.2", - "@storybook/core-common": "7.4.2", - "@storybook/core-events": "7.4.2", + "@storybook/builder-manager": "7.4.5", + "@storybook/channels": "7.4.5", + "@storybook/core-common": "7.4.5", + "@storybook/core-events": "7.4.5", "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.4.2", + "@storybook/csf-tools": "7.4.5", "@storybook/docs-mdx": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager": "7.4.2", - "@storybook/node-logger": "7.4.2", - "@storybook/preview-api": "7.4.2", - "@storybook/telemetry": "7.4.2", - "@storybook/types": "7.4.2", + "@storybook/manager": "7.4.5", + "@storybook/node-logger": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/telemetry": "7.4.5", + "@storybook/types": "7.4.5", "@types/detect-port": "^1.3.0", "@types/node": "^16.0.0", "@types/pretty-hrtime": "^1.0.0", @@ -5802,9 +5778,9 @@ } }, "node_modules/@storybook/core-server/node_modules/@types/node": { - "version": "16.18.52", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.52.tgz", - "integrity": "sha512-sm2aph6cRSsTMFYFgI+RpPLunXO9ClJkpizUVdT7KmGeyfQ14xnjTMT/f3MHcfKqevXqGT6BgVFzW8wcEoDUtA==", + "version": "16.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", + "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", "dev": true }, "node_modules/@storybook/core-server/node_modules/find-up": { @@ -5970,14 +5946,14 @@ "dev": true }, "node_modules/@storybook/core-webpack": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.4.2.tgz", - "integrity": "sha512-k6YBkExt1XtQSx6E25nE9lCq87hbzkwBlAhzPcFKGeKQia7Uc+l5IG73+9sWXXJ2sbL/7eCaFg4L7payo2aOkw==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.4.5.tgz", + "integrity": "sha512-W4F5/BE6Q/1hbdseSRlhi4BGIKWp0CuU9UwCL2uF4zqcDOd9QdbntUq9wAw4DpRsonQjpbnzJABlNeh7MPxPMw==", "dev": true, "dependencies": { - "@storybook/core-common": "7.4.2", - "@storybook/node-logger": "7.4.2", - "@storybook/types": "7.4.2", + "@storybook/core-common": "7.4.5", + "@storybook/node-logger": "7.4.5", + "@storybook/types": "7.4.5", "@types/node": "^16.0.0", "ts-dedent": "^2.0.0" }, @@ -5987,9 +5963,9 @@ } }, "node_modules/@storybook/core-webpack/node_modules/@types/node": { - "version": "16.18.52", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.52.tgz", - "integrity": "sha512-sm2aph6cRSsTMFYFgI+RpPLunXO9ClJkpizUVdT7KmGeyfQ14xnjTMT/f3MHcfKqevXqGT6BgVFzW8wcEoDUtA==", + "version": "16.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", + "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", "dev": true }, "node_modules/@storybook/csf": { @@ -6002,12 +5978,12 @@ } }, "node_modules/@storybook/csf-plugin": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.4.2.tgz", - "integrity": "sha512-b0yQ8oXEH0s3SGgjhOVrbjkc3C8IYGyTSnDtPwx/Dgmru/rC6LT7ZOdBegmGqBN1+6Ho0+AxFrmAmuuYK8p2rA==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.4.5.tgz", + "integrity": "sha512-8p3AnwIm3xXtQhiF7OQ0rBiP/Pn5OCMHRiT4FytRnNimGaw7gxRZ2xzM608QZHQ4A8rHfmgoM2FTwgxdC15ulA==", "dev": true, "dependencies": { - "@storybook/csf-tools": "7.4.2", + "@storybook/csf-tools": "7.4.5", "unplugin": "^1.3.1" }, "funding": { @@ -6016,9 +5992,9 @@ } }, "node_modules/@storybook/csf-tools": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.4.2.tgz", - "integrity": "sha512-5AvF2YRcYHIqQqskb3R8JvsmSWnNwkP0CGmP8Zq7zIfK/C+npKb/onv5YQlbSgh+2UrVxVdIDLc9AepBeXC3uQ==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.4.5.tgz", + "integrity": "sha512-xbm5HGYvlwF0Efivx37v9rO7Exel1/Tdb/Yv/vXn4D/hQeljNVLNz4Bomfy4EQ207rRsrGDSOHEhLUbHDimnxg==", "dev": true, "dependencies": { "@babel/generator": "^7.22.9", @@ -6026,7 +6002,7 @@ "@babel/traverse": "^7.22.8", "@babel/types": "^7.22.5", "@storybook/csf": "^0.1.0", - "@storybook/types": "7.4.2", + "@storybook/types": "7.4.5", "fs-extra": "^11.1.0", "recast": "^0.23.1", "ts-dedent": "^2.0.0" @@ -6043,14 +6019,14 @@ "dev": true }, "node_modules/@storybook/docs-tools": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.4.2.tgz", - "integrity": "sha512-MXW+xaxah+C+aqJ5178oOILqX7dCSwJMKJefIJHHwr9w6UuGRaiPG1NDYK/0N0IEv9H8pNnXPnw3R8S6x7COhQ==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.4.5.tgz", + "integrity": "sha512-ctK+yGb2nvWISSvCCzj3ZhDaAb7I2BLjbxuBGTyNPvl4V9UQ9LBYzdJwR50q+DfscxdwSHMSOE/0OnzmJdaSJA==", "dev": true, "dependencies": { - "@storybook/core-common": "7.4.2", - "@storybook/preview-api": "7.4.2", - "@storybook/types": "7.4.2", + "@storybook/core-common": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/types": "7.4.5", "@types/doctrine": "^0.0.3", "doctrine": "^3.0.0", "lodash": "^4.17.21" @@ -6067,9 +6043,9 @@ "dev": true }, "node_modules/@storybook/manager": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.4.2.tgz", - "integrity": "sha512-MtjmbAaf4hUObAa2ETQkm0+SzESoPeNm+TyzwZU5qq3Ouj4IOj2Ugd8EJPO3isdHxYt26A255tW/G9mb9v20fQ==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.4.5.tgz", + "integrity": "sha512-yoqVktWzzC0f8cXsxErOEUfT+VFfWV/W7soytIPQuJFqNaq+BqR5A7WCeoY7BIv3mdpRjo4GKwerCsgoHYeHhg==", "dev": true, "funding": { "type": "opencollective", @@ -6077,19 +6053,19 @@ } }, "node_modules/@storybook/manager-api": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.2.tgz", - "integrity": "sha512-gKPG0At9AGhF32iwjiba+ILqswc3ZFj9ZIu5HjGEmaoiOfqI6TayuHoptup0QxkI/Hx8f9mNkHCwR9COrmb69w==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", "dev": true, "dependencies": { - "@storybook/channels": "7.4.2", - "@storybook/client-logger": "7.4.2", - "@storybook/core-events": "7.4.2", + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/router": "7.4.2", - "@storybook/theming": "7.4.2", - "@storybook/types": "7.4.2", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", @@ -6147,9 +6123,9 @@ "dev": true }, "node_modules/@storybook/node-logger": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.4.2.tgz", - "integrity": "sha512-iSBjhnMpWY9Hs5KGnf/xfHjGtGl740LUg4Gce874DuL773Mdc4hdppSKr4X/Pp1/AD67mNuifSXYx3V7d6XzTQ==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.4.5.tgz", + "integrity": "sha512-fJSykphbryuEYj1qihbaTH5oOzD4NkptRxyf2uyBrpgkr5tCTq9d7GHheqaBuIdi513dsjlcIR7z5iHxW7ZD+Q==", "dev": true, "funding": { "type": "opencollective", @@ -6157,9 +6133,9 @@ } }, "node_modules/@storybook/postinstall": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.4.2.tgz", - "integrity": "sha512-L9r14KqS87HPyXw0S3pK2X29ckel/4sdBSmy9nVF8n/ADafKE0pSLKB935VL0+88eMx06aT32SMcQoqjubGKWw==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.4.5.tgz", + "integrity": "sha512-MWRjnKkUpEe2VkHNNpv3zkuMvxM2Zu9DMxFENQaEmhqUHkIFh5klfFwzhSBRexVLzIh7DA1p7mntIpY5A6lh+Q==", "dev": true, "funding": { "type": "opencollective", @@ -6167,18 +6143,18 @@ } }, "node_modules/@storybook/preset-react-webpack": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-7.4.2.tgz", - "integrity": "sha512-CWWiwZa3/0zHnc6zLvI9Sgj12gJDTktZO87/gfwq2VfbWqAEUYsKs6NE4Pm0Yg9O4/IG8DHoHIB+bTNlLp/lCA==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-7.4.5.tgz", + "integrity": "sha512-8mYHag0sGOHCjPHdEuLPM8U/FTCBIp5LaTxmpkJcNs/LprzSDI6OFWqbe+q8X7qkAL2Iz1YyqrYb4NgweqpZiA==", "dev": true, "dependencies": { "@babel/preset-flow": "^7.22.5", "@babel/preset-react": "^7.22.5", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", - "@storybook/core-webpack": "7.4.2", - "@storybook/docs-tools": "7.4.2", - "@storybook/node-logger": "7.4.2", - "@storybook/react": "7.4.2", + "@storybook/core-webpack": "7.4.5", + "@storybook/docs-tools": "7.4.5", + "@storybook/node-logger": "7.4.5", + "@storybook/react": "7.4.5", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/node": "^16.0.0", "@types/semver": "^7.3.4", @@ -6211,9 +6187,9 @@ } }, "node_modules/@storybook/preset-react-webpack/node_modules/@types/node": { - "version": "16.18.52", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.52.tgz", - "integrity": "sha512-sm2aph6cRSsTMFYFgI+RpPLunXO9ClJkpizUVdT7KmGeyfQ14xnjTMT/f3MHcfKqevXqGT6BgVFzW8wcEoDUtA==", + "version": "16.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", + "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", "dev": true }, "node_modules/@storybook/preset-react-webpack/node_modules/lru-cache": { @@ -6250,9 +6226,9 @@ "dev": true }, "node_modules/@storybook/preview": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.4.2.tgz", - "integrity": "sha512-T7rAV6qQ7tBeSvgi0RuA5EU8tm1OMhU8PcCqosWGaLhMCR0VMzw1/WGKuR11g1XmzvaAm2xGgMp82nqi4G0i7A==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.4.5.tgz", + "integrity": "sha512-hCVFoPJP0d7vFCJKaWEsDMa6LcRFcEikQ8Cy6Vo+trS8xXwvwE+vIBqyuPozl4O/MYD9iOlzjgZFNwaUUgX0Jg==", "dev": true, "funding": { "type": "opencollective", @@ -6260,17 +6236,17 @@ } }, "node_modules/@storybook/preview-api": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.4.2.tgz", - "integrity": "sha512-ihTHRYzI/sI6bD215aYppiWF+1u38TrlsNjFYJ/Grftbti5d40g5wCwvAXK41SxJNYpk6CRtfvNKOwbEAC33gg==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.4.5.tgz", + "integrity": "sha512-6xXQZPyilkGVddfZBI7tMbMMgOyIoZTYgTnwSPTMsXxO0f0TvtNDmGdwhn0I1nREHKfiQGpcQe6gwddEMnGtSg==", "dev": true, "dependencies": { - "@storybook/channels": "7.4.2", - "@storybook/client-logger": "7.4.2", - "@storybook/core-events": "7.4.2", + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/types": "7.4.2", + "@storybook/types": "7.4.5", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -6286,18 +6262,18 @@ } }, "node_modules/@storybook/react": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.4.2.tgz", - "integrity": "sha512-8bAnSOpDTiE1c9pSkIKRipvqbuZP6Hu1CYaG1RXWF8AIBsjiV9+SsR919Flj1UiCmcw4BLO/ZIvIDGny4ktHhA==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.4.5.tgz", + "integrity": "sha512-Tiylrs3uFO8QSvH1w3ueSxlAgh2fteH0edRVKaX01M/h47+QqEiZqq/dYkVDvLHngF+CCCwE3OY8nNe6L14Xkw==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.2", - "@storybook/core-client": "7.4.2", - "@storybook/docs-tools": "7.4.2", + "@storybook/client-logger": "7.4.5", + "@storybook/core-client": "7.4.5", + "@storybook/docs-tools": "7.4.5", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.4.2", - "@storybook/react-dom-shim": "7.4.2", - "@storybook/types": "7.4.2", + "@storybook/preview-api": "7.4.5", + "@storybook/react-dom-shim": "7.4.5", + "@storybook/types": "7.4.5", "@types/escodegen": "^0.0.6", "@types/estree": "^0.0.51", "@types/node": "^16.0.0", @@ -6351,9 +6327,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.4.2.tgz", - "integrity": "sha512-9Ae2As3Hf//mdFEAv58VgDbi9R5JRGne8Ai6Vspc5FZMCJIjr5kullckBi3n9uKRg2L8V7wjDRK8Cql2tEr0Yg==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.4.5.tgz", + "integrity": "sha512-/hGe8yuiWbT7L3ZsllmJPgxT9MEQE3k23FhliyKx6IGHsWoYaEsPYPZ9tygqtKY8RpqqMUKWz8+kbO79zUxaoQ==", "dev": true, "funding": { "type": "opencollective", @@ -6365,14 +6341,14 @@ } }, "node_modules/@storybook/react-webpack5": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-7.4.2.tgz", - "integrity": "sha512-pnl11MYKM3jRmHQz2dSnEDfDiApdH7ys3zH/FjImsTK6S8etMKlxGnZ58Puxj05qvrBRgpxnQSL+ZazfrEX/6w==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-7.4.5.tgz", + "integrity": "sha512-2IgGuj/s6mZZoK22i7IfSSpkE00m1t/o9+C7Vxw+m79N/cyMbfmxuNJJATV9NZMrBd65UKACTitolM+ZneqB5Q==", "dev": true, "dependencies": { - "@storybook/builder-webpack5": "7.4.2", - "@storybook/preset-react-webpack": "7.4.2", - "@storybook/react": "7.4.2", + "@storybook/builder-webpack5": "7.4.5", + "@storybook/preset-react-webpack": "7.4.5", + "@storybook/react": "7.4.5", "@types/node": "^16.0.0" }, "engines": { @@ -6398,24 +6374,24 @@ } }, "node_modules/@storybook/react-webpack5/node_modules/@types/node": { - "version": "16.18.52", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.52.tgz", - "integrity": "sha512-sm2aph6cRSsTMFYFgI+RpPLunXO9ClJkpizUVdT7KmGeyfQ14xnjTMT/f3MHcfKqevXqGT6BgVFzW8wcEoDUtA==", + "version": "16.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", + "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", "dev": true }, "node_modules/@storybook/react/node_modules/@types/node": { - "version": "16.18.52", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.52.tgz", - "integrity": "sha512-sm2aph6cRSsTMFYFgI+RpPLunXO9ClJkpizUVdT7KmGeyfQ14xnjTMT/f3MHcfKqevXqGT6BgVFzW8wcEoDUtA==", + "version": "16.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", + "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", "dev": true }, "node_modules/@storybook/router": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.4.2.tgz", - "integrity": "sha512-TFpMrmliklWNSrF84kGnh3WcLZciqIvaAjhxahqD+kx070KLqjxrsiny7UC6PUUYZdjLkbR9m8n3SFdXAVKgLw==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.4.5.tgz", + "integrity": "sha512-IM4IhiPiXsx3FAUeUOAB47uiuUS8Yd37VQcNlXLBO28GgHoTSYOrjS+VTGLIV5cAGKr8+H5pFB+q35BnlFUpkQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.2", + "@storybook/client-logger": "7.4.5", "memoizerific": "^1.11.3", "qs": "^6.10.0" }, @@ -6429,13 +6405,13 @@ } }, "node_modules/@storybook/store": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/store/-/store-7.4.2.tgz", - "integrity": "sha512-WYwhdyGEtOZlLkbGqfzsTY5IsVuQCz6J00g63bEQwxiCx3ZNco+HXGoQhV/SH3G+em2++1sh6BETFuZ5sbwmkQ==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-7.4.5.tgz", + "integrity": "sha512-uK9y9aT/PI4xjhw0gG3geTk5/JPiSNfdxy57N+HRn04ofin3dnBSYM5gxuQxVeHR2EVpvVhoM5nQsImyIQuPUg==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.2", - "@storybook/preview-api": "7.4.2" + "@storybook/client-logger": "7.4.5", + "@storybook/preview-api": "7.4.5" }, "funding": { "type": "opencollective", @@ -6443,14 +6419,14 @@ } }, "node_modules/@storybook/telemetry": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.4.2.tgz", - "integrity": "sha512-ZAh1Bjk9JVpL5j0Aj3PHr3XEDZcOrFeugVyRuuul2gAyu6SbpPhl8Dd2Wr9YJS0ZDWs3u0CgKRCeFPPAi3QosA==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.4.5.tgz", + "integrity": "sha512-JbhQXZF5sqS2c7Cf+vAtuKTdTSBDco+liUP2UGQFjqdacTRLVzxyj+YY2UH4aAQn7wpmnQ67iHnqFp0+fdYmAA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.2", - "@storybook/core-common": "7.4.2", - "@storybook/csf-tools": "7.4.2", + "@storybook/client-logger": "7.4.5", + "@storybook/core-common": "7.4.5", + "@storybook/csf-tools": "7.4.5", "chalk": "^4.1.0", "detect-package-manager": "^2.0.1", "fetch-retry": "^5.0.2", @@ -6592,13 +6568,13 @@ } }, "node_modules/@storybook/theming": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.2.tgz", - "integrity": "sha512-wVmxZHVCqDoZgUOXTS4HRV4UClLtCydRNOEuUZ7X08QIPSA1FVL3gEpTQJfgCsyBX/cwSSofAMUbzAGEVNo+9g==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", "dev": true, "dependencies": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.4.2", + "@storybook/client-logger": "7.4.5", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" }, @@ -6612,12 +6588,12 @@ } }, "node_modules/@storybook/types": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.4.2.tgz", - "integrity": "sha512-OOJ2TeS3Zzc6spHbdH+JXml0q4IHuYt9axmXAv1/pkhqHjA5072pyUacmlYNQeihpQOOsKLiCQUQlvtMy9fTnQ==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.4.5.tgz", + "integrity": "sha512-DTWFNjfRTpncjufDoUs0QnNkgHG2qThGKWL1D6sO18cYI02zWPyHWD8/cbqlvtT7XIGe3s1iUEfCTdU5GcwWBA==", "dev": true, "dependencies": { - "@storybook/channels": "7.4.2", + "@storybook/channels": "7.4.5", "@types/babel__core": "^7.0.0", "@types/express": "^4.7.0", "file-system-cache": "2.3.0" @@ -6965,13 +6941,14 @@ } }, "node_modules/@swc/core": { - "version": "1.3.85", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.85.tgz", - "integrity": "sha512-qnoxp+2O0GtvRdYnXgR1v8J7iymGGYpx6f6yCK9KxipOZOjrlKILFANYlghQxZyPUfXwK++TFxfSlX4r9wK+kg==", + "version": "1.3.90", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.90.tgz", + "integrity": "sha512-wptBxP4PldOnhmyDVj8qUcn++GRqyw1qc9wOTGtPNHz8cpuTfdfIgYGlhI4La0UYqecuaaIfLfokyuNePOMHPg==", "dev": true, "hasInstallScript": true, "dependencies": { - "@swc/types": "^0.1.4" + "@swc/counter": "^0.1.1", + "@swc/types": "^0.1.5" }, "engines": { "node": ">=10" @@ -6981,16 +6958,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.85", - "@swc/core-darwin-x64": "1.3.85", - "@swc/core-linux-arm-gnueabihf": "1.3.85", - "@swc/core-linux-arm64-gnu": "1.3.85", - "@swc/core-linux-arm64-musl": "1.3.85", - "@swc/core-linux-x64-gnu": "1.3.85", - "@swc/core-linux-x64-musl": "1.3.85", - "@swc/core-win32-arm64-msvc": "1.3.85", - "@swc/core-win32-ia32-msvc": "1.3.85", - "@swc/core-win32-x64-msvc": "1.3.85" + "@swc/core-darwin-arm64": "1.3.90", + "@swc/core-darwin-x64": "1.3.90", + "@swc/core-linux-arm-gnueabihf": "1.3.90", + "@swc/core-linux-arm64-gnu": "1.3.90", + "@swc/core-linux-arm64-musl": "1.3.90", + "@swc/core-linux-x64-gnu": "1.3.90", + "@swc/core-linux-x64-musl": "1.3.90", + "@swc/core-win32-arm64-msvc": "1.3.90", + "@swc/core-win32-ia32-msvc": "1.3.90", + "@swc/core-win32-x64-msvc": "1.3.90" }, "peerDependencies": { "@swc/helpers": "^0.5.0" @@ -7002,9 +6979,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.85", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.85.tgz", - "integrity": "sha512-jTikp+i4nO4Ofe6qGm4I3sFeebD1OvueBCHITux5tQKD6umN1c2z4CRGv6K49NIz/qEpUcdr6Qny6K+3yibVFQ==", + "version": "1.3.90", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.90.tgz", + "integrity": "sha512-he0w74HvcoufE6CZrB/U/VGVbc7021IQvYrn1geMACnq/OqMBqjdczNtdNfJAy87LZ4AOUjHDKEIjsZZu7o8nQ==", "cpu": [ "arm64" ], @@ -7018,9 +6995,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.3.85", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.85.tgz", - "integrity": "sha512-3uHYkjVU+2F+YbVYtq5rH0uCJIztFTALaS3mQEfQUZKXZ5/8jD5titTCRqFKtSlQg0CzaFZgsYsuqwYBmgN0mA==", + "version": "1.3.90", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.90.tgz", + "integrity": "sha512-hKNM0Ix0qMlAamPe0HUfaAhQVbZEL5uK6Iw8v9ew0FtVB4v7EifQ9n41wh+yCj0CjcHBPEBbQU0P6mNTxJu/RQ==", "cpu": [ "x64" ], @@ -7034,9 +7011,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.85", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.85.tgz", - "integrity": "sha512-ouHzAHsFaEOkRuoTAOI/8n2m8BQAAnb4vr/xbMhhDOmix0lp5eNsW5Iac/EcJ2uG6B3n7P2K8oycj9SWkj+pfw==", + "version": "1.3.90", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.90.tgz", + "integrity": "sha512-HumvtrqTWE8rlFuKt7If0ZL7145H/jVc4AeziVjcd+/ajpqub7IyfrLCYd5PmKMtfeSVDMsxjG0BJ0HLRxrTJA==", "cpu": [ "arm" ], @@ -7050,9 +7027,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.85", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.85.tgz", - "integrity": "sha512-/Z1CZOWiO+NqJEh1J20PIxQFHMH43upQJ1l7FJ5Z7+MyuYF8WkeJ7OSovau729pBR+38vvvccEJrMZIztfv7hQ==", + "version": "1.3.90", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.90.tgz", + "integrity": "sha512-tA7DqCS7YCwngwXZQeqQhhMm8BbydpaABw8Z/EDQ7KPK1iZ1rNjZw+aWvSpmNmEGmH1RmQ9QDS9mGRDp0faAeg==", "cpu": [ "arm64" ], @@ -7066,9 +7043,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.85", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.85.tgz", - "integrity": "sha512-gfh7CfKavi076dbMBTzfdawSGcYfZ4+1Q+8aRkSesqepKHcIWIJti8Cf3zB4a6CHNhJe+VN0Gb7DEfumydAm1w==", + "version": "1.3.90", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.90.tgz", + "integrity": "sha512-p2Vtid5BZA36fJkNUwk5HP+HJlKgTru+Ghna7pRe45ghKkkRIUk3fhkgudEvfKfhT+3AvP+GTVQ+T9k0gc9S8w==", "cpu": [ "arm64" ], @@ -7082,9 +7059,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.85", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.85.tgz", - "integrity": "sha512-lWVqjHKzofb9q1qrBM4dLqO7CIisp08/xMS5Hz9DWex1gTc5F2b6yJO6Ceqwa256GMweJcdP6A5EvEFQAiZ5dg==", + "version": "1.3.90", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.90.tgz", + "integrity": "sha512-J6pDtWaulYGXuANERuvv4CqmUbZOQrRZBCRQGZQJ6a86RWpesZqckBelnYx48wYmkgvMkF95Y3xbI3WTfoSHzw==", "cpu": [ "x64" ], @@ -7098,9 +7075,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.85", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.85.tgz", - "integrity": "sha512-EPJmlfqC05TUetnlErxNRyIp7Nc3B2w9abET6oQ/EgldeAeQnZ3M6svMViET/c2QSomgrU3rdP+Qcozkt62/4A==", + "version": "1.3.90", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.90.tgz", + "integrity": "sha512-3Gh6EA3+0K+l3MqnRON7h5bZ32xLmfcVM6QiHHJ9dBttq7YOEeEoMOCdIPMaQxJmK1VfLgZCsPYRd66MhvUSkw==", "cpu": [ "x64" ], @@ -7114,9 +7091,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.85", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.85.tgz", - "integrity": "sha512-ibckJDZw8kNosciMexwk0z75ZyUhwtiFMV9rSBpup0opa7NNCUCoERCJ1e9LRyMdhsVUoLpZg/KZiHCdTw96hQ==", + "version": "1.3.90", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.90.tgz", + "integrity": "sha512-BNaw/iJloDyaNOFV23Sr53ULlnbmzSoerTJ10v0TjSZOEIpsS0Rw6xOK1iI0voDJnRXeZeWRSxEC9DhefNtN/g==", "cpu": [ "arm64" ], @@ -7130,9 +7107,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.85", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.85.tgz", - "integrity": "sha512-hY4MpHGUVQHL1T2kgRXOigDho4DTIpVPYzJ4uyy8VQRbS7GzN5XtvdGP/fA4zp8+2BQjcig+6J7Y92SY15ouNQ==", + "version": "1.3.90", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.90.tgz", + "integrity": "sha512-SiyTethWAheE/JbxXCukAAciU//PLcmVZ2ME92MRuLMLmOhrwksjbaa7ukj9WEF3LWrherhSqTXnpj3VC1l/qw==", "cpu": [ "ia32" ], @@ -7146,9 +7123,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.85", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.85.tgz", - "integrity": "sha512-ktxWOMFJ0iqKn6WUHtXqi4CS7xkyHmrRtjllGRuGqxmLmDX/HSOfuQ55Tm1KXKk5oHLacJkUbOSF2kBrpZ8dpg==", + "version": "1.3.90", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.90.tgz", + "integrity": "sha512-OpWAW5ljKcPJ3SQ0pUuKqYfwXv7ssIhVgrH9XP9ONtdgXKWZRL9hqJQkcL55FARw/gDjKanoCM47wsTNQL+ZZA==", "cpu": [ "x64" ], @@ -7161,10 +7138,16 @@ "node": ">=10" } }, + "node_modules/@swc/counter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.1.tgz", + "integrity": "sha512-xVRaR4u9hcYjFvcSg71Lz5Bo4//CyjAAfMxa7UsaDSYxAshflUkVJWiyVWrfxC59z2kP1IzI4/1BEpnhI9o3Mw==", + "dev": true + }, "node_modules/@swc/types": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.4.tgz", - "integrity": "sha512-z/G02d+59gyyUb7KYhKi9jOhicek6QD2oMaotUyG+lUkybpXoV49dY9bj7Ah5Q+y7knK2jU67UTX9FyfGzaxQg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", "dev": true }, "node_modules/@tanstack/query-core": { @@ -7258,9 +7241,9 @@ } }, "node_modules/@types/aria-query": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz", - "integrity": "sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.2.tgz", + "integrity": "sha512-PHKZuMN+K5qgKIWhBodXzQslTo5P+K/6LqeKXS6O/4liIDdZqaX5RXrCK++LAw+y/nptN48YmUMFiQHRSWYwtQ==", "dev": true }, "node_modules/@types/babel__core": { @@ -7360,15 +7343,15 @@ "dev": true }, "node_modules/@types/ejs": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.2.tgz", - "integrity": "sha512-ZmiaE3wglXVWBM9fyVC17aGPkLo/UgaOjEiI2FXQfyczrCefORPxIe+2dVmnmk3zkVIbizjrlQzmPGhSYGXG5g==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.3.tgz", + "integrity": "sha512-mv5T/JI/bu+pbfz1o+TLl1NF0NIBbjS0Vl6Ppz1YY9DkXfzZT0lelXpfS5i3ZS3U/p90it7uERQpBvLYoK8e4A==", "dev": true }, "node_modules/@types/emscripten": { - "version": "1.39.7", - "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.7.tgz", - "integrity": "sha512-tLqYV94vuqDrXh515F/FOGtBcRMTPGvVV1LzLbtYDcQmmhtpf/gLYf+hikBbQk8MzOHNz37wpFfJbYAuSn8HqA==", + "version": "1.39.8", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.8.tgz", + "integrity": "sha512-Rk0HKcMXFUuqT32k1kXHZWgxiMvsyYsmlnjp0rLKa0MMoqXLE3T9dogDBTRfuc3SAsXu97KD3k4SKR1lHqd57w==", "dev": true }, "node_modules/@types/escodegen": { @@ -7378,9 +7361,9 @@ "dev": true }, "node_modules/@types/eslint": { - "version": "8.44.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", - "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", + "version": "8.44.3", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.3.tgz", + "integrity": "sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g==", "dev": true, "dependencies": { "@types/estree": "*", @@ -7388,9 +7371,9 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.5.tgz", + "integrity": "sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==", "dev": true, "dependencies": { "@types/eslint": "*", @@ -7404,9 +7387,9 @@ "dev": true }, "node_modules/@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "version": "4.17.18", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.18.tgz", + "integrity": "sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ==", "dev": true, "dependencies": { "@types/body-parser": "*", @@ -7416,9 +7399,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.36", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", - "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", + "version": "4.17.37", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz", + "integrity": "sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==", "dev": true, "dependencies": { "@types/node": "*", @@ -7434,9 +7417,9 @@ "dev": true }, "node_modules/@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", + "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==", "dev": true, "dependencies": { "@types/node": "*" @@ -7470,18 +7453,18 @@ "dev": true }, "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==", "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==", "dev": true, "dependencies": { "@types/istanbul-lib-report": "*" @@ -7501,9 +7484,9 @@ "peer": true }, "node_modules/@types/lodash": { - "version": "4.14.198", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.198.tgz", - "integrity": "sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg==", + "version": "4.14.199", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz", + "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==", "dev": true }, "node_modules/@types/luxon": { @@ -7513,39 +7496,39 @@ "dev": true }, "node_modules/@types/mdx": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.7.tgz", - "integrity": "sha512-BG4tyr+4amr3WsSEmHn/fXPqaCba/AYZ7dsaQTiavihQunHSIxk+uAtqsjvicNpyHN6cm+B9RVrUOtW9VzIKHw==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.8.tgz", + "integrity": "sha512-r7/zWe+f9x+zjXqGxf821qz++ld8tp6Z4jUS6qmPZUXH6tfh4riXOhAqb12tWGWAevCFtMt1goLWkQMqIJKpsA==", "dev": true }, "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.3.tgz", + "integrity": "sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg==", "dev": true }, "node_modules/@types/mime-types": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.1.tgz", - "integrity": "sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.2.tgz", + "integrity": "sha512-q9QGHMGCiBJCHEvd4ZLdasdqXv570agPsUW0CeIm/B8DzhxsYMerD0l3IlI+EQ1A2RWHY2mmM9x1YIuuWxisCg==", "dev": true }, "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.3.tgz", + "integrity": "sha512-ZYFzrvyWUNhaPomn80dsMNgMeXxNWZBdkuG/hWlUvXvbdUH8ZERNBGXnU87McuGcWDsyzX2aChCv/SVN348k3A==", "dev": true }, "node_modules/@types/node": { - "version": "18.17.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.17.tgz", - "integrity": "sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw==", + "version": "18.18.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.0.tgz", + "integrity": "sha512-3xA4X31gHT1F1l38ATDIL9GpRLdwVhnEFC8Uikv5ZLlXATwrCYyPq7ZWHxzxc3J/30SUiwiYT+bQe0/XvKlWbw==", "dev": true }, "node_modules/@types/node-fetch": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.5.tgz", - "integrity": "sha512-OZsUlr2nxvkqUFLSaY2ZbA+P1q22q+KrlxWOn/38RX+u5kTkYL2mTujEpzUhGkS+K/QCYp9oagfXG39XOzyySg==", + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==", "dev": true, "dependencies": { "@types/node": "*", @@ -7553,9 +7536,9 @@ } }, "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.2.tgz", + "integrity": "sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==", "dev": true }, "node_modules/@types/parse-json": { @@ -7571,9 +7554,9 @@ "dev": true }, "node_modules/@types/prop-types": { - "version": "15.7.6", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.6.tgz", - "integrity": "sha512-RK/kBbYOQQHLYj9Z95eh7S6t7gq4Ojt/NT8HTk8bWVhA5DaF+5SMnxHKkP4gPNN3wAZkKP+VjAf0ebtYzf+fxg==", + "version": "15.7.7", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.7.tgz", + "integrity": "sha512-FbtmBWCcSa2J4zL781Zf1p5YUBXQomPEcep9QZCfRfQgTxz3pJWiDFLebohZ9fFntX5ibzOkSsrJ0TEew8cAog==", "dev": true }, "node_modules/@types/qs": { @@ -7583,15 +7566,15 @@ "dev": true }, "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.5.tgz", + "integrity": "sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA==", "dev": true }, "node_modules/@types/react": { - "version": "18.2.22", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.22.tgz", - "integrity": "sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==", + "version": "18.2.23", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.23.tgz", + "integrity": "sha512-qHLW6n1q2+7KyBEYnrZpcsAmU/iiCh9WGCKgXvMxx89+TYdJWRjZohVIo9XTcoLhfX3+/hP0Pbulu3bCZQ9PSA==", "dev": true, "dependencies": { "@types/prop-types": "*", @@ -7600,44 +7583,44 @@ } }, "node_modules/@types/react-dom": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", - "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.8.tgz", + "integrity": "sha512-bAIvO5lN/U8sPGvs1Xm61rlRHHaq5rp5N3kp9C+NJ/Q41P8iqjkXSu0+/qu8POsjH9pNWb0OYabFez7taP7omw==", "dev": true, "dependencies": { "@types/react": "*" } }, "node_modules/@types/react-transition-group": { - "version": "4.4.6", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", - "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.7.tgz", + "integrity": "sha512-ICCyBl5mvyqYp8Qeq9B5G/fyBSRC0zx3XM3sCC6KkcMsNeAHqXBKkmat4GqdJET5jtYUpZXrxI5flve5qhi2Eg==", "dev": true, "dependencies": { "@types/react": "*" } }, "node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==" + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.3.tgz", + "integrity": "sha512-rkxEZUFIyDEZhC6EfHz6Hwos2zXewCOLBzhdgv7D55qu4OAySNwDZzxbaMpFI6XthdBa5oHhR5s6/9MSuTfw4g==" }, "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz", + "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==", "dev": true }, "node_modules/@types/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", "dev": true }, "node_modules/@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.2.tgz", + "integrity": "sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==", "dev": true, "dependencies": { "@types/mime": "^1", @@ -7645,9 +7628,9 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", - "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.3.tgz", + "integrity": "sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==", "dev": true, "dependencies": { "@types/http-errors": "*", @@ -7674,32 +7657,32 @@ "dev": true }, "node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "version": "17.0.25", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.25.tgz", + "integrity": "sha512-gy7iPgwnzNvxgAEi2bXOHWCVOG6f7xsprVJH4MjlAWeBmJ7vh/Y1kwMtUrs64ztf24zVIRCpr3n/z6gm9QIkgg==", "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.2.tgz", - "integrity": "sha512-ooaHxlmSgZTM6CHYAFRlifqh1OAr3PAQEwi7lhYhaegbnXrnh7CDcHmc3+ihhbQC7H0i4JF0psI5ehzkF6Yl6Q==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.3.tgz", + "integrity": "sha512-vntq452UHNltxsaaN+L9WyuMch8bMd9CqJ3zhzTPXXidwbf5mqqKCVXEuvRZUqLJSTLeWE65lQwyXsRGnXkCTA==", "dev": true, "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.7.2", - "@typescript-eslint/type-utils": "6.7.2", - "@typescript-eslint/utils": "6.7.2", - "@typescript-eslint/visitor-keys": "6.7.2", + "@typescript-eslint/scope-manager": "6.7.3", + "@typescript-eslint/type-utils": "6.7.3", + "@typescript-eslint/utils": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -7761,15 +7744,15 @@ "peer": true }, "node_modules/@typescript-eslint/parser": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.2.tgz", - "integrity": "sha512-KA3E4ox0ws+SPyxQf9iSI25R6b4Ne78ORhNHeVKrPQnoYsb9UhieoiRoJgrzgEeKGOXhcY1i8YtOeCHHTDa6Fw==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.3.tgz", + "integrity": "sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.7.2", - "@typescript-eslint/types": "6.7.2", - "@typescript-eslint/typescript-estree": "6.7.2", - "@typescript-eslint/visitor-keys": "6.7.2", + "@typescript-eslint/scope-manager": "6.7.3", + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/typescript-estree": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3", "debug": "^4.3.4" }, "engines": { @@ -7789,13 +7772,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.2.tgz", - "integrity": "sha512-bgi6plgyZjEqapr7u2mhxGR6E8WCzKNUFWNh6fkpVe9+yzRZeYtDTbsIBzKbcxI+r1qVWt6VIoMSNZ4r2A+6Yw==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.3.tgz", + "integrity": "sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.2", - "@typescript-eslint/visitor-keys": "6.7.2" + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -7806,14 +7789,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.2.tgz", - "integrity": "sha512-36F4fOYIROYRl0qj95dYKx6kybddLtsbmPIYNK0OBeXv2j9L5nZ17j9jmfy+bIDHKQgn2EZX+cofsqi8NPATBQ==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.3.tgz", + "integrity": "sha512-Fc68K0aTDrKIBvLnKTZ5Pf3MXK495YErrbHb1R6aTpfK5OdSFj0rVN7ib6Tx6ePrZ2gsjLqr0s98NG7l96KSQw==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.7.2", - "@typescript-eslint/utils": "6.7.2", + "@typescript-eslint/typescript-estree": "6.7.3", + "@typescript-eslint/utils": "6.7.3", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -7834,9 +7817,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.2.tgz", - "integrity": "sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.3.tgz", + "integrity": "sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -7847,13 +7830,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.2.tgz", - "integrity": "sha512-kiJKVMLkoSciGyFU0TOY0fRxnp9qq1AzVOHNeN1+B9erKFCJ4Z8WdjAkKQPP+b1pWStGFqezMLltxO+308dJTQ==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.3.tgz", + "integrity": "sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.2", - "@typescript-eslint/visitor-keys": "6.7.2", + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -7907,18 +7890,18 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.2.tgz", - "integrity": "sha512-ZCcBJug/TS6fXRTsoTkgnsvyWSiXwMNiPzBUani7hDidBdj1779qwM1FIAmpH4lvlOZNF3EScsxxuGifjpLSWQ==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.3.tgz", + "integrity": "sha512-vzLkVder21GpWRrmSR9JxGZ5+ibIUSudXlW52qeKpzUEQhRSmyZiVDDj3crAth7+5tmN1ulvgKaCU2f/bPRCzg==", "dev": true, "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.7.2", - "@typescript-eslint/types": "6.7.2", - "@typescript-eslint/typescript-estree": "6.7.2", + "@typescript-eslint/scope-manager": "6.7.3", + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/typescript-estree": "6.7.3", "semver": "^7.5.4" }, "engines": { @@ -7969,12 +7952,12 @@ "peer": true }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.2.tgz", - "integrity": "sha512-uVw9VIMFBUTz8rIeaUT3fFe8xIUx8r4ywAdlQv1ifH+6acn/XF8Y6rwJ7XNmkNMDrTW+7+vxFFPIF40nJCVsMQ==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.3.tgz", + "integrity": "sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.2", + "@typescript-eslint/types": "6.7.3", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -7986,14 +7969,15 @@ } }, "node_modules/@vitejs/plugin-react": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.4.tgz", - "integrity": "sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.1.0.tgz", + "integrity": "sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ==", "dev": true, "dependencies": { - "@babel/core": "^7.22.9", + "@babel/core": "^7.22.20", "@babel/plugin-transform-react-jsx-self": "^7.22.5", "@babel/plugin-transform-react-jsx-source": "^7.22.5", + "@types/babel__core": "^7.20.2", "react-refresh": "^0.14.0" }, "engines": { @@ -8013,9 +7997,9 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.34.4.tgz", - "integrity": "sha512-TZ5ghzhmg3COQqfBShL+zRQEInHmV9TSwghTdfkHpCTyTOr+rxo6x41vCNcVfWysWULtqtBVpY6YFNovxnESfA==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.34.5.tgz", + "integrity": "sha512-97xjhRTSdmeeHCm2nNHhT3hLsMYkAhHXm/rwj6SZ3voka8xiCJrwgtfIjoZIFEL4OO0KezGmVuHWQXcMunULIA==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.1", @@ -8038,13 +8022,13 @@ } }, "node_modules/@vitest/expect": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.4.tgz", - "integrity": "sha512-XlMKX8HyYUqB8dsY8Xxrc64J2Qs9pKMt2Z8vFTL4mBWXJsg4yoALHzJfDWi8h5nkO4Zua4zjqtapQ/IluVkSnA==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.5.tgz", + "integrity": "sha512-/3RBIV9XEH+nRpRMqDJBufKIOQaYUH2X6bt0rKSCW0MfKhXFLYsR5ivHifeajRSTsln0FwJbitxLKHSQz/Xwkw==", "dev": true, "dependencies": { - "@vitest/spy": "0.34.4", - "@vitest/utils": "0.34.4", + "@vitest/spy": "0.34.5", + "@vitest/utils": "0.34.5", "chai": "^4.3.7" }, "funding": { @@ -8052,12 +8036,12 @@ } }, "node_modules/@vitest/runner": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.4.tgz", - "integrity": "sha512-hwwdB1StERqUls8oV8YcpmTIpVeJMe4WgYuDongVzixl5hlYLT2G8afhcdADeDeqCaAmZcSgLTLtqkjPQF7x+w==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.5.tgz", + "integrity": "sha512-RDEE3ViVvl7jFSCbnBRyYuu23XxmvRTSZWW6W4M7eC5dOsK75d5LIf6uhE5Fqf809DQ1+9ICZZNxhIolWHU4og==", "dev": true, "dependencies": { - "@vitest/utils": "0.34.4", + "@vitest/utils": "0.34.5", "p-limit": "^4.0.0", "pathe": "^1.1.1" }, @@ -8093,9 +8077,9 @@ } }, "node_modules/@vitest/snapshot": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.4.tgz", - "integrity": "sha512-GCsh4coc3YUSL/o+BPUo7lHQbzpdttTxL6f4q0jRx2qVGoYz/cyTRDJHbnwks6TILi6560bVWoBpYC10PuTLHw==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.5.tgz", + "integrity": "sha512-+ikwSbhu6z2yOdtKmk/aeoDZ9QPm2g/ZO5rXT58RR9Vmu/kB2MamyDSx77dctqdZfP3Diqv4mbc/yw2kPT8rmA==", "dev": true, "dependencies": { "magic-string": "^0.30.1", @@ -8133,9 +8117,9 @@ } }, "node_modules/@vitest/spy": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.4.tgz", - "integrity": "sha512-PNU+fd7DUPgA3Ya924b1qKuQkonAW6hL7YUjkON3wmBwSTIlhOSpy04SJ0NrRsEbrXgMMj6Morh04BMf8k+w0g==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.5.tgz", + "integrity": "sha512-epsicsfhvBjRjCMOC/3k00mP/TBGQy8/P0DxOFiWyLt55gnZ99dqCfCiAsKO17BWVjn4eZRIjKvcqNmSz8gvmg==", "dev": true, "dependencies": { "tinyspy": "^2.1.1" @@ -8145,12 +8129,12 @@ } }, "node_modules/@vitest/ui": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-0.34.4.tgz", - "integrity": "sha512-gz0m0r9ErFG32r+DRdwuLJpUDpbi+jrMcw9nJZAau48Fs4LDIBg561PvczvGqyYxzbyFU7vgkSnSlSDfK0d53w==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-0.34.5.tgz", + "integrity": "sha512-nK3Ny7fQgoTJMCGXLzYL0oo1ePtruRM9eYT1Y8esQx8fHj05davqVgqWv4Kd+Yy8PfzyrduTx1EYBdSMIbQh8A==", "dev": true, "dependencies": { - "@vitest/utils": "0.34.4", + "@vitest/utils": "0.34.5", "fast-glob": "^3.3.0", "fflate": "^0.8.0", "flatted": "^3.2.7", @@ -8166,9 +8150,9 @@ } }, "node_modules/@vitest/utils": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.4.tgz", - "integrity": "sha512-yR2+5CHhp/K4ySY0Qtd+CAL9f5Yh1aXrKfAT42bq6CtlGPh92jIDDDSg7ydlRow1CP+dys4TrOrbELOyNInHSg==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.5.tgz", + "integrity": "sha512-ur6CmmYQoeHMwmGb0v+qwkwN3yopZuZyf4xt1DBBSGBed8Hf9Gmbm/5dEWqgpLPdRx6Av6jcWXrjcKfkTzg/pw==", "dev": true, "dependencies": { "diff-sequences": "^29.4.3", @@ -8903,9 +8887,9 @@ } }, "node_modules/axios": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", - "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", + "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", "dev": true, "dependencies": { "follow-redirects": "^1.15.0", @@ -9188,13 +9172,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", - "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz", + "integrity": "sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg==", "dev": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.4.2", - "core-js-compat": "^3.31.0" + "core-js-compat": "^3.32.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -9422,9 +9406,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.0.tgz", + "integrity": "sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA==", "dev": true, "funding": [ { @@ -9441,10 +9425,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", + "caniuse-lite": "^1.0.30001539", + "electron-to-chromium": "^1.4.530", "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -9749,9 +9733,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001535", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001535.tgz", - "integrity": "sha512-48jLyUkiWFfhm/afF7cQPqPjaUmSraEhK4j+FCTJpgnGGEZHqyLe3hmWH7lIooZdSzXL0ReMvHz0vKDoTBsrwg==", + "version": "1.0.30001541", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz", + "integrity": "sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw==", "dev": true, "funding": [ { @@ -9788,13 +9772,13 @@ } }, "node_modules/chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-tH8vhfA1CfuYMkALXj+wmZcqiwqOfshU9Gry+NYiiLqIddrobkBhALv6XD4yDz68qapphYI4vSaqhqAdThCAAA==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", + "check-error": "^1.0.3", "deep-eql": "^4.1.2", "get-func-name": "^2.0.0", "loupe": "^2.3.1", @@ -9840,10 +9824,13 @@ } }, "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -11532,9 +11519,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.523", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz", - "integrity": "sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==", + "version": "1.4.532", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.532.tgz", + "integrity": "sha512-piIR0QFdIGKmOJTSNg5AwxZRNWQSXlRYycqDB9Srstx4lip8KpcmRxVP6zuFWExWziHYZpJ0acX7TxqX95KBpg==", "dev": true }, "node_modules/emoji-regex": { @@ -11914,15 +11901,15 @@ } }, "node_modules/eslint": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", - "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz", + "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.49.0", + "@eslint/js": "8.50.0", "@humanwhocodes/config-array": "^0.11.11", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -12058,9 +12045,9 @@ } }, "node_modules/eslint-config-standard-with-typescript": { - "version": "39.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-39.0.0.tgz", - "integrity": "sha512-CiV2LS4NUeeRmDTDf1ocUMpMxitSyW0g+Y/N7ecElwGj188GahbcQgqfBNyVsIXQxHlZVBlOjkbg3oUI0R3KBg==", + "version": "39.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-39.1.0.tgz", + "integrity": "sha512-5+SPKis3yr6T1X6wSA7HhDuumTRMrTDMcsTrIWhdZuI+sX3e8SPGZYzuJxVxdc239Yo718dEVEVyJhHI6jUjrQ==", "dev": true, "dependencies": { "@typescript-eslint/parser": "^6.4.0", @@ -12361,9 +12348,9 @@ } }, "node_modules/eslint-plugin-storybook": { - "version": "0.6.13", - "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.6.13.tgz", - "integrity": "sha512-smd+CS0WH1jBqUEJ3znGS7DU4ayBE9z6lkQAK2yrSUv1+rq8BT/tiI5C/rKE7rmiqiAfojtNYZRhzo5HrulccQ==", + "version": "0.6.14", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.6.14.tgz", + "integrity": "sha512-IeYigPur/MvESNDo43Z+Z5UvlcEVnt0dDZmnw1odi9X2Th1R3bpGyOZsHXb9bp1pFecOpRUuoMG5xdID2TwwOg==", "dev": true, "dependencies": { "@storybook/csf": "^0.0.1", @@ -12607,9 +12594,9 @@ "dev": true }, "node_modules/eslint/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.22.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", + "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -13006,9 +12993,9 @@ "dev": true }, "node_modules/fflate": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.0.tgz", - "integrity": "sha512-FAdS4qMuFjsJj6XHbBaZeXOgaypXp8iw/Tpyuq/w3XA41jjLHT8NPA+n7czH/DDhdncq0nAyDZmPeWXh2qmdIg==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.1.tgz", + "integrity": "sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==", "dev": true }, "node_modules/file-entry-cache": { @@ -13232,18 +13219,18 @@ "dev": true }, "node_modules/flow-parser": { - "version": "0.216.1", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.216.1.tgz", - "integrity": "sha512-wstw46/C/8bRv/8RySCl15lK376j8DHxm41xFjD9eVL+jSS1UmVpbdLdA0LzGuS2v5uGgQiBLEj6mgSJQwW+MA==", + "version": "0.217.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.217.0.tgz", + "integrity": "sha512-hEa5n0dta1RcaDwJDWbnyelw07PK7+Vx0f9kDht28JOt2hXgKdKGaT3wM45euWV2DxOXtzDSTaUgGSD/FPvC2Q==", "dev": true, "engines": { "node": ">=0.4.0" } }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", "funding": [ { "type": "individual", @@ -13458,9 +13445,9 @@ "dev": true }, "node_modules/fs-monkey": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", - "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", "dev": true }, "node_modules/fs.realpath": { @@ -13535,9 +13522,9 @@ } }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "engines": { "node": "*" @@ -13627,9 +13614,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.0.tgz", - "integrity": "sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", "dev": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -13663,19 +13650,19 @@ "dev": true }, "node_modules/glob": { - "version": "10.3.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz", - "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==", + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", + "jackspeak": "^2.3.5", "minimatch": "^9.0.1", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", "path-scurry": "^1.10.1" }, "bin": { - "glob": "dist/cjs/src/bin.js" + "glob": "dist/esm/bin.mjs" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -15124,9 +15111,9 @@ } }, "node_modules/jackspeak": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.3.tgz", - "integrity": "sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -17129,9 +17116,9 @@ } }, "node_modules/postcss": { - "version": "8.4.29", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", - "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", + "version": "8.4.30", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz", + "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", "dev": true, "funding": [ { @@ -17841,9 +17828,9 @@ "dev": true }, "node_modules/react-hook-form": { - "version": "7.46.1", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.46.1.tgz", - "integrity": "sha512-0GfI31LRTBd5tqbXMGXT1Rdsv3rnvy0FjEk8Gn9/4tp6+s77T7DPZuGEpBRXOauL+NhyGT5iaXzdIM2R6F/E+w==", + "version": "7.46.2", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.46.2.tgz", + "integrity": "sha512-x1DWmHQchV7x2Rq9l99M/cQHC8JGchAnw9Z0uTz5KrPa0bTl/Inm1NR7ceOARfIrkNuQNAhuSuZPYa6k7QYn3Q==", "engines": { "node": ">=12.22.0" }, @@ -18469,9 +18456,9 @@ } }, "node_modules/rollup": { - "version": "3.29.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.2.tgz", - "integrity": "sha512-CJouHoZ27v6siztc21eEQGo0kIcE5D1gVPA571ez0mMYb25LGYGKnVNXpEj5MGlepmDWGXNjDB5q7uNiPHC11A==", + "version": "3.29.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.3.tgz", + "integrity": "sha512-T7du6Hum8jOkSWetjRgbwpM6Sy0nECYrYRSmZjayFcOddtKJWU4d17AC3HNUk7HRuqy4p+G7aEZclSHytqUmEg==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -18582,9 +18569,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.67.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.67.0.tgz", - "integrity": "sha512-SVrO9ZeX/QQyEGtuZYCVxoeAL5vGlYjJ9p4i4HFuekWl8y/LtJ7tJc10Z+ck1c8xOuoBm2MYzcLfTAffD0pl/A==", + "version": "1.68.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.68.0.tgz", + "integrity": "sha512-Lmj9lM/fef0nQswm1J2HJcEsBUba4wgNx2fea6yJHODREoMFnwRpZydBnX/RjyXw2REIwdkbqE4hrTo4qfDBUA==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -18636,9 +18623,9 @@ } }, "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", "dev": true, "optional": true, "peer": true @@ -18683,9 +18670,9 @@ } }, "node_modules/seamapi": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/seamapi/-/seamapi-8.13.0.tgz", - "integrity": "sha512-JhbklFzUDZt9xAStucZTG6J3N8sJEXYqPzZuomk1ZfcRAAJyzYnxkYXc7MWJvdNygxqkjrYbu7ioNNAvstTHzg==", + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/seamapi/-/seamapi-8.13.1.tgz", + "integrity": "sha512-d9KiN66pzWK3/aLUwBfLqY75Dkd43PndvK4Tq4KDrgEGhjplnzLVgjur6mSy1Ypyqc1XbVCqRnQsQTTj5BU5FQ==", "dependencies": { "axios": "0.25.0", "axios-retry": "3.2.5", @@ -18708,9 +18695,9 @@ } }, "node_modules/seamapi-types": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/seamapi-types/-/seamapi-types-1.24.1.tgz", - "integrity": "sha512-umlACzGNhb8o40vdIEsSJ1B4LGtOrxMnHr72ls49OwLcJl9XRe++0khGxy6pMl7qMeuraq9KAypF8b+qrYxWew==" + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/seamapi-types/-/seamapi-types-1.25.0.tgz", + "integrity": "sha512-iwoZCF/KCetGvVwYCe4gLtPKPn865qdr2k3UgxM7wH3XQ0W0Qs+E3kZCGQo5BRpa4m3UBGVzko8U/Sbcn1aTUA==" }, "node_modules/seamapi/node_modules/axios": { "version": "0.25.0", @@ -19190,9 +19177,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz", + "integrity": "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==", "dev": true }, "node_modules/sprintf-js": { @@ -19247,12 +19234,12 @@ "dev": true }, "node_modules/storybook": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.4.2.tgz", - "integrity": "sha512-UuYmdxEWEQAepfjgQFbbHTq47Xxpw16naAvJ9n/nsjMnOhYupm1ZIdWYaeNjz4LOfz+1WzgU7us0IvaBrxzl4g==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.4.5.tgz", + "integrity": "sha512-J7fidphTJ6SJHlR8f/USQE30K6ipbynLVLsTOz0bNYW/0Ua2t9u6dAYGbbq6bLikl3zxzQbdm9lXMUzmaYAdIA==", "dev": true, "dependencies": { - "@storybook/cli": "7.4.2" + "@storybook/cli": "7.4.5" }, "bin": { "sb": "index.js", @@ -20232,9 +20219,9 @@ } }, "node_modules/terser": { - "version": "5.19.4", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.4.tgz", - "integrity": "sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.20.0.tgz", + "integrity": "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -20576,9 +20563,9 @@ } }, "node_modules/tsc-alias": { - "version": "1.8.7", - "resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.8.7.tgz", - "integrity": "sha512-59Q/zUQa3miTf99mLbSqaW0hi1jt4WoG8Uhe5hSZJHQpSoFW9eEwvW7jlKMHXWvT+zrzy3SN9PE/YBhQ+WVydA==", + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.8.8.tgz", + "integrity": "sha512-OYUOd2wl0H858NvABWr/BoSKNERw3N9GTi3rHPK8Iv4O1UyUXIrTTOAZNHsjlVpXFOhpJBVARI1s+rzwLivN3Q==", "dev": true, "dependencies": { "chokidar": "^3.5.3", @@ -20693,20 +20680,20 @@ "dev": true }, "node_modules/tsx": { - "version": "3.12.10", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.12.10.tgz", - "integrity": "sha512-2+46h4xvUt1aLDNvk5YBT8Uzw+b7BolGbn7iSMucYqCXZiDc+1IMghLVdw8kKjING32JFOeO+Am9posvjkeclA==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.13.0.tgz", + "integrity": "sha512-rjmRpTu3as/5fjNq/kOkOtihgLxuIz6pbKdj9xwP4J5jOLkBxw/rjN5ANw+KyrrOXV5uB7HC8+SrrSJxT65y+A==", "dev": true, "dependencies": { - "@esbuild-kit/cjs-loader": "^2.4.2", - "@esbuild-kit/core-utils": "^3.3.0", - "@esbuild-kit/esm-loader": "^2.6.3" + "esbuild": "~0.18.20", + "get-tsconfig": "^4.7.2", + "source-map-support": "^0.5.21" }, "bin": { - "tsx": "dist/cli.js" + "tsx": "dist/cli.mjs" }, "optionalDependencies": { - "fsevents": "~2.3.2" + "fsevents": "~2.3.3" } }, "node_modules/type-check": { @@ -21074,9 +21061,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "funding": [ { @@ -21351,9 +21338,9 @@ } }, "node_modules/vite-node": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.4.tgz", - "integrity": "sha512-ho8HtiLc+nsmbwZMw8SlghESEE3KxJNp04F/jPUCLVvaURwt0d+r9LxEqCX5hvrrOQ0GSyxbYr5ZfRYhQ0yVKQ==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.5.tgz", + "integrity": "sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==", "dev": true, "dependencies": { "cac": "^6.7.14", @@ -21361,7 +21348,7 @@ "mlly": "^1.4.0", "pathe": "^1.1.1", "picocolors": "^1.0.0", - "vite": "^3.0.0 || ^4.0.0" + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" @@ -21393,19 +21380,19 @@ } }, "node_modules/vitest": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.4.tgz", - "integrity": "sha512-SE/laOsB6995QlbSE6BtkpXDeVNLJc1u2LHRG/OpnN4RsRzM3GQm4nm3PQCK5OBtrsUqnhzLdnT7se3aeNGdlw==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.5.tgz", + "integrity": "sha512-CPI68mmnr2DThSB3frSuE5RLm9wo5wU4fbDrDwWQQB1CWgq9jQVoQwnQSzYAjdoBOPoH2UtXpOgHVge/uScfZg==", "dev": true, "dependencies": { "@types/chai": "^4.3.5", "@types/chai-subset": "^1.3.3", "@types/node": "*", - "@vitest/expect": "0.34.4", - "@vitest/runner": "0.34.4", - "@vitest/snapshot": "0.34.4", - "@vitest/spy": "0.34.4", - "@vitest/utils": "0.34.4", + "@vitest/expect": "0.34.5", + "@vitest/runner": "0.34.5", + "@vitest/snapshot": "0.34.5", + "@vitest/spy": "0.34.5", + "@vitest/utils": "0.34.5", "acorn": "^8.9.0", "acorn-walk": "^8.2.0", "cac": "^6.7.14", @@ -21420,7 +21407,7 @@ "tinybench": "^2.5.0", "tinypool": "^0.7.0", "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", - "vite-node": "0.34.4", + "vite-node": "0.34.5", "why-is-node-running": "^2.2.2" }, "bin": { @@ -21708,9 +21695,9 @@ "dev": true }, "node_modules/webpack/node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz", + "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==", "dev": true }, "node_modules/webpack/node_modules/acorn": { @@ -22041,9 +22028,9 @@ "dev": true }, "node_modules/ws": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz", - "integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "dev": true, "engines": { "node": ">=10.0.0" diff --git a/src/lib/dates.ts b/src/lib/dates.ts index 0753b6d82..723611e13 100644 --- a/src/lib/dates.ts +++ b/src/lib/dates.ts @@ -1,4 +1,4 @@ -import { DateTime, IANAZone } from 'luxon' +import { DateTime } from 'luxon' export const compareByCreatedAtDesc = ( a: { created_at: string }, @@ -10,148 +10,32 @@ export const compareByCreatedAtDesc = ( return t1.toMillis() - t2.toMillis() } -/** - * Get the timezone strings supported by the user's browser. - * - * @returns string[] - */ -export function getTimezones(): string[] { - return Intl.supportedValuesOf('timeZone') +export const getSupportedTimeZones = (): string[] => { + const timeZones = new Set(Intl.supportedValuesOf('timeZone')) + timeZones.add('UTC') + return Array.from(timeZones).sort() } -/** - * Get the default browser timezone. - * - * @returns string - */ -export function getBrowserTimezone(): string { - return Intl.DateTimeFormat().resolvedOptions().timeZone -} - -/** - * Takes an IANA timezone, like America/Los_Angeles, into a more readable - * string: Los Angeles (America). - * @param timezone - * @returns string - */ -export function getTimezoneLabel(timezone: string): string { - const [region = '', city = ''] = timezone.replace(/_/g, ' ').split('/') - return `${city} (${region})` -} - -/** - * Get a timezones offset from UTC in minutes. - * - * @param timezone - * @returns minutes - */ -function getTimezoneOffsetMinutes(timezone: string): number { - return DateTime.local().setZone(timezone).offset -} - -/** - * Compares 2 timezones (America/Los_angeles) by their offset - * minutes in ascending order. - * - * @param timezoneA - * @param timezonB - * @returns number - */ -export const compareByTimezoneOffsetAsc = ( - timezoneA: string, - timezonB: string -): number => - getTimezoneOffsetMinutes(timezoneA) - getTimezoneOffsetMinutes(timezonB) - -/** - * Get the timezone offset - * America/Los_angeles -> -07:00 - * - * eg. America/Los_Angeles -> UTC-07:00 - * - * @param timezone - * @returns offset - */ -export function getTimezoneOffset(timezone: string): string { - return IANAZone.create(timezone).formatOffset(Date.now(), 'short') -} - -const formatDateReadable = ( - date: string, - options: { - showWeekday?: boolean - } = {} -): string => { - const { showWeekday = true } = options +export const getSystemTimeZone = (): string => DateTime.now().zoneName ?? 'UTC' - // '2023-04-17' to 'Mon Apr 17, 2023' / 'Apr 17, 2023' - const format = showWeekday ? 'EEE MMM d, yyyy' : 'MMM d, yyyy' - - return DateTime.fromFormat(date, 'yyyy-MM-dd').toFormat(format) +export const formatTimeZone = (timeZone: string): string => { + const offset = DateTime.now().setZone(timeZone).toFormat("'UTC'Z") + return `${timeZone.replaceAll('_', ' ')} (${offset})` } -const formatTimeReadable = (time: string): string | null => { - const dateTime = DateTime.fromFormat(time, 'HH:mm:ss') +export const serializeDateTimePickerValue = ( + dateTime: DateTime, + timeZone: string +): string | null => { if (!dateTime.isValid) { return null } - return dateTime.toFormat('h:mm a') -} - -export const formatDateTimeReadable = (dateTime: string): string => { - const [date = '', time = ''] = dateTime.split('T') - return `${formatDateReadable(date, { showWeekday: false })} at ${ - formatTimeReadable(time) ?? '' - }` + return dateTime.setZone(timeZone).toFormat("yyyy-MM-dd'T'HH:mm:ss") } -export const getNow = (): string => getDateTimeOnly(DateTime.now()) -export const get24HoursLater = (): string => - getDateTimeOnly(DateTime.now().plus({ days: 1 })) - -function getDateTimeOnly(dateTime: DateTime): string { - const date = dateTime.toFormat('yyyy-MM-dd') - const time = dateTime.toFormat('HH:mm:ss') - return `${date}T${time}` -} - -/** - * Takes a date (2023-07-20T00:00:00), and a timezone (America/Los_angeles), and - * returns an ISO8601 Date (2023-07-20T00:00:00.000-07:00). - * - * @param date - * @param timezone - * @returns ISOdate - */ -export const createIsoDate = (date: string, timezone: string): string => { - const offset = getTimezoneOffset(timezone) - return `${date}.000${offset}` -} - -/** - * Takes a ISO datetime string (2023-07-20T00:00:00.000-07:00) and returns - * the IANA timezone (America/Los_angeles). - * - * @param date - * @returns string - */ -export const getTimezoneFromIsoDate = (date: string): string | null => - DateTime.fromISO(date).zoneName - -/** - * Takes an ISO datetime string (2023-07-20T00:00:00.000-07:00) and returns a string like - * (Jul 20, 12:00 AM PDT). - * - * @param date - * @returns string - * - */ -export const formatDateAndTime = (date: string): string => - DateTime.fromISO(date).toLocaleString({ - month: 'short', - day: 'numeric', - hour: 'numeric', - minute: '2-digit', - timeZoneName: 'short', - }) +export const parseDateTimePickerValue = ( + value: string, + timeZone: string +): DateTime => + DateTime.fromISO(value).setZone(timeZone, { keepLocalTime: true }) diff --git a/src/lib/seam/components/AccessCodeDetails/AccessCodeDetails.tsx b/src/lib/seam/components/AccessCodeDetails/AccessCodeDetails.tsx index c90e37690..005709bff 100644 --- a/src/lib/seam/components/AccessCodeDetails/AccessCodeDetails.tsx +++ b/src/lib/seam/components/AccessCodeDetails/AccessCodeDetails.tsx @@ -221,28 +221,25 @@ function Duration(props: { accessCode: AccessCode }): JSX.Element { ) } -function formatDurationDate(date: string): string { - return DateTime.fromISO(date).toLocaleString({ +const formatDurationDate = (date: string): string => + DateTime.fromISO(date).toLocaleString({ month: 'short', day: 'numeric', }) -} -function formatTime(date: string): string { - return DateTime.fromISO(date).toLocaleString({ +const formatTime = (date: string): string => + DateTime.fromISO(date).toLocaleString({ hour: 'numeric', minute: '2-digit', }) -} -function formatDate(date: string): string { - return DateTime.fromISO(date).toLocaleString({ +const formatDate = (date: string): string => + DateTime.fromISO(date).toLocaleString({ weekday: 'short', month: 'long', day: 'numeric', year: 'numeric', }) -} const errorFilter = ( error: AccessCodeError | DeviceError | ConnectedAccountError diff --git a/src/lib/seam/components/AccessCodeTable/AccessCodeHealthBar.stories.tsx b/src/lib/seam/components/AccessCodeTable/AccessCodeHealthBar.stories.tsx index b4ec2d108..b07c5dac1 100644 --- a/src/lib/seam/components/AccessCodeTable/AccessCodeHealthBar.stories.tsx +++ b/src/lib/seam/components/AccessCodeTable/AccessCodeHealthBar.stories.tsx @@ -39,6 +39,8 @@ export const Content: Story = { code: '1234', status: 'setting', is_backup_access_code_available: false, + is_external_modification_allowed: false, + appearance: {}, errors: [ { error_code: 'account_disconnected', @@ -64,6 +66,8 @@ export const Content: Story = { code: '1234', status: 'setting', is_backup_access_code_available: false, + is_external_modification_allowed: true, + appearance: {}, errors: [ { error_code: 'account_disconnected', diff --git a/src/lib/seam/components/AccessCodeTable/CodeDetails.tsx b/src/lib/seam/components/AccessCodeTable/CodeDetails.tsx index 2d7c3117d..b6f5f9c45 100644 --- a/src/lib/seam/components/AccessCodeTable/CodeDetails.tsx +++ b/src/lib/seam/components/AccessCodeTable/CodeDetails.tsx @@ -52,12 +52,11 @@ function Duration(props: { accessCode: AccessCode }): JSX.Element { ) } -function formatDate(date: string): string { - return DateTime.fromISO(date).toLocaleString({ +const formatDate = (date: string): string => + DateTime.fromISO(date).toLocaleString({ month: 'long', day: 'numeric', }) -} const t = { code: 'Code', diff --git a/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.tsx b/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.tsx index 04c69bab6..1fb82d579 100644 --- a/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.tsx +++ b/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.tsx @@ -1,13 +1,14 @@ import { DateTime } from 'luxon' import type { ClimateSettingSchedule } from 'seamapi' -import { formatDateAndTime } from 'lib/dates.js' import { ClimateSettingScheduleIcon } from 'lib/icons/ClimateSettingSchedule.js' import { ClimateSettingScheduleDeviceBar } from 'lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js' import { useClimateSettingSchedule } from 'lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.js' import { DotDivider } from 'lib/ui/layout/DotDivider.js' import { ClimateSettingStatus } from 'lib/ui/thermostat/ClimateSettingStatus.js' -import { useCurrentTime } from 'lib/ui/use-current-time.js' +import { useNow } from 'lib/ui/use-now.js' + +import { formatDateTime } from './dates.js' interface ClimateSettingScheduleCardProps { climateSettingScheduleId: string @@ -74,25 +75,24 @@ function ClimateSettingScheduleTiming(props: { }): JSX.Element | null { const { climateSettingSchedule } = props - const currentTime = useCurrentTime() + const now = useNow() - if (currentTime === null) return null + if (now === null) return null const startTime = DateTime.fromISO(climateSettingSchedule.schedule_starts_at) const endTime = DateTime.fromISO(climateSettingSchedule.schedule_ends_at) - if (currentTime < startTime) + if (now < startTime) return ( - {t.starts}{' '} - {formatDateAndTime(climateSettingSchedule.schedule_starts_at)} + {t.starts} {formatDateTime(climateSettingSchedule.schedule_starts_at)} ) - if (startTime <= currentTime && currentTime <= endTime) + if (startTime <= now && now <= endTime) return ( - {t.ends} {formatDateAndTime(climateSettingSchedule.schedule_starts_at)} + {t.ends} {formatDateTime(climateSettingSchedule.schedule_starts_at)} ) diff --git a/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.tsx b/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.tsx index 694ab1cc0..92775ab35 100644 --- a/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.tsx +++ b/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.tsx @@ -3,7 +3,6 @@ import { useState } from 'react' import { useComponentTelemetry } from 'lib/telemetry/index.js' -import { formatDateAndTime } from 'lib/dates.js' import { ArrowRightIcon } from 'lib/icons/ArrowRight.js' import { ClimateSettingScheduleCard } from 'lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js' import { @@ -18,6 +17,8 @@ import { DetailSection } from 'lib/ui/layout/DetailSection.js' import { DetailSectionGroup } from 'lib/ui/layout/DetailSectionGroup.js' import { ClimateSettingStatus } from 'lib/ui/thermostat/ClimateSettingStatus.js' +import { formatDateTime } from './dates.js' + export interface ClimateSettingScheduleDetailsProps extends CommonProps { climateSettingScheduleId: string } @@ -89,13 +90,9 @@ export function ClimateSettingScheduleDetails({ - {`${formatDateAndTime( - climateSettingSchedule.schedule_starts_at - )}`} + {formatDateTime(climateSettingSchedule.schedule_starts_at)} - {`${formatDateAndTime( - climateSettingSchedule.schedule_ends_at - )}`} + {formatDateTime(climateSettingSchedule.schedule_ends_at)} @@ -113,7 +110,7 @@ export function ClimateSettingScheduleDetails({
- {formatDateAndTime(climateSettingSchedule.created_at)} + {formatDateTime(climateSettingSchedule.created_at)}
diff --git a/src/lib/seam/components/ClimateSettingScheduleDetails/dates.ts b/src/lib/seam/components/ClimateSettingScheduleDetails/dates.ts new file mode 100644 index 000000000..4a24bedde --- /dev/null +++ b/src/lib/seam/components/ClimateSettingScheduleDetails/dates.ts @@ -0,0 +1,10 @@ +import { DateTime } from 'luxon' + +export const formatDateTime = (date: string): string => + DateTime.fromISO(date).toLocaleString({ + month: 'short', + day: 'numeric', + hour: 'numeric', + minute: '2-digit', + timeZoneName: 'short', + }) diff --git a/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.tsx b/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.tsx index fdd4669e4..3c75f884b 100644 --- a/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.tsx +++ b/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.tsx @@ -48,12 +48,11 @@ function Duration(props: { ) } -function formatDate(date: string): string { - return DateTime.fromISO(date).toLocaleString({ +const formatDate = (date: string): string => + DateTime.fromISO(date).toLocaleString({ month: 'long', day: 'numeric', }) -} const t = { starts: 'Starts', diff --git a/src/lib/seam/components/CreateAccessCodeForm/CreateAccessCodeForm.tsx b/src/lib/seam/components/CreateAccessCodeForm/CreateAccessCodeForm.tsx index ae3192d4d..977b35209 100644 --- a/src/lib/seam/components/CreateAccessCodeForm/CreateAccessCodeForm.tsx +++ b/src/lib/seam/components/CreateAccessCodeForm/CreateAccessCodeForm.tsx @@ -3,7 +3,6 @@ import type { SeamError } from 'seamapi' import { useComponentTelemetry } from 'lib/telemetry/index.js' -import { createIsoDate } from 'lib/dates.js' import { useCreateAccessCode } from 'lib/seam/access-codes/use-create-access-code.js' import { type CommonProps, @@ -82,7 +81,7 @@ function useSubmitCreateAccessCode(params: { onSuccess: () => void }): { const submit = (data: AccessCodeFormSubmitData): void => { resetResponseErrors() - const { name, code, type, device, startDate, endDate, timezone } = data + const { name, code, type, device, startDate, endDate } = data if (name === '') { return } @@ -97,8 +96,8 @@ function useSubmitCreateAccessCode(params: { onSuccess: () => void }): { name, code, device_id: device.device_id, - starts_at: createIsoDate(startDate, timezone), - ends_at: createIsoDate(endDate, timezone), + starts_at: startDate, + ends_at: endDate, }, { onSuccess, diff --git a/src/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.tsx b/src/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.tsx index e2d03f607..2a4fb0e06 100644 --- a/src/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.tsx +++ b/src/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.tsx @@ -1,6 +1,5 @@ import { useComponentTelemetry } from 'lib/telemetry/index.js' -import { createIsoDate } from 'lib/dates.js' import type { CommonProps } from 'lib/seam/components/common-props.js' import { useCreateClimateSettingSchedule } from 'lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.js' import { @@ -34,8 +33,7 @@ function useSubmitCreateClimateSettingSchedule(onSuccess?: () => void): { } { const { mutate, isLoading: isSubmitting } = useCreateClimateSettingSchedule() const submit = (data: ClimateSettingScheduleFormSubmitData): void => { - const { name, deviceId, startDate, endDate, timezone, climateSetting } = - data + const { name, deviceId, startDate, endDate, climateSetting } = data if (isSubmitting) { return @@ -45,8 +43,8 @@ function useSubmitCreateClimateSettingSchedule(onSuccess?: () => void): { { name, device_id: deviceId, - schedule_starts_at: createIsoDate(startDate, timezone), - schedule_ends_at: createIsoDate(endDate, timezone), + schedule_starts_at: startDate, + schedule_ends_at: endDate, ...climateSetting, }, { diff --git a/src/lib/seam/components/EditAccessCodeForm/EditAccessCodeForm.tsx b/src/lib/seam/components/EditAccessCodeForm/EditAccessCodeForm.tsx index f98b6036e..67b5388ef 100644 --- a/src/lib/seam/components/EditAccessCodeForm/EditAccessCodeForm.tsx +++ b/src/lib/seam/components/EditAccessCodeForm/EditAccessCodeForm.tsx @@ -1,6 +1,5 @@ import { useComponentTelemetry } from 'lib/telemetry/index.js' -import { createIsoDate } from 'lib/dates.js' import { useAccessCode, type UseAccessCodeData, @@ -93,7 +92,7 @@ function useSubmitEditAccessCode( const submit = (data: AccessCodeFormSubmitData): void => { resetResponseErrors() - const { name, code, type, device, startDate, endDate, timezone } = data + const { name, code, type, device, startDate, endDate } = data if (name === '') { return } @@ -110,8 +109,8 @@ function useSubmitEditAccessCode( code, device_id: device.device_id, type: 'time_bound', - starts_at: createIsoDate(startDate, timezone), - ends_at: createIsoDate(endDate, timezone), + starts_at: startDate, + ends_at: endDate, }, { onSuccess, diff --git a/src/lib/telemetry/client.ts b/src/lib/telemetry/client.ts index ae5df7aea..e20fc01d9 100644 --- a/src/lib/telemetry/client.ts +++ b/src/lib/telemetry/client.ts @@ -246,6 +246,7 @@ interface CommonSpec { interface Context { traits?: Traits locale?: string + // According to the Common Spec this is timezone and not timeZone. timezone?: string userAgent?: string userAgentData?: string diff --git a/src/lib/ui/AccessCodeForm/AccessCodeForm.tsx b/src/lib/ui/AccessCodeForm/AccessCodeForm.tsx index 9e732868a..e1f75447b 100644 --- a/src/lib/ui/AccessCodeForm/AccessCodeForm.tsx +++ b/src/lib/ui/AccessCodeForm/AccessCodeForm.tsx @@ -1,20 +1,16 @@ import classNames from 'classnames' +import { DateTime } from 'luxon' import { useState } from 'react' import { useForm } from 'react-hook-form' import { type AccessCode, type CommonDevice, isLockDevice } from 'seamapi' -import { - get24HoursLater, - getBrowserTimezone, - getNow, - getTimezoneFromIsoDate, -} from 'lib/dates.js' +import { getSystemTimeZone } from 'lib/dates.js' import type { UseAccessCodeData } from 'lib/seam/access-codes/use-access-code.js' import { useGenerateAccessCodeCode } from 'lib/seam/access-codes/use-generate-access-code-code.js' import type { UseDeviceData } from 'lib/seam/devices/use-device.js' import { AccessCodeFormDatePicker } from 'lib/ui/AccessCodeForm/AccessCodeFormDatePicker.js' import { AccessCodeFormTimes } from 'lib/ui/AccessCodeForm/AccessCodeFormTimes.js' -import { AccessCodeFormTimezonePicker } from 'lib/ui/AccessCodeForm/AccessCodeFormTimezonePicker.js' +import { AccessCodeFormTimeZonePicker } from 'lib/ui/AccessCodeForm/AccessCodeFormTimeZonePicker.js' import { Button } from 'lib/ui/Button.js' import { FormField } from 'lib/ui/FormField.js' import { InputLabel } from 'lib/ui/InputLabel.js' @@ -30,7 +26,7 @@ export interface AccessCodeFormSubmitData { device: NonNullable startDate: string endDate: string - timezone: string + timeZone: string } export interface ResponseErrors { @@ -71,14 +67,13 @@ function Content({ accessCode?.type ?? 'ongoing' ) const [datePickerVisible, setDatePickerVisible] = useState(false) - const [timezone, setTimezone] = useState( - getAccessCodeTimezone(accessCode) ?? getBrowserTimezone() - ) - const [startDate, setStartDate] = useState( - getAccessCodeDate('starts_at', accessCode) ?? getNow() + const [timeZone, setTimeZone] = useState(getSystemTimeZone()) + + const [startDate, setStartDate] = useState( + getAccessCodeDate('starts_at', accessCode) ?? getNow(timeZone) ) - const [endDate, setEndDate] = useState( - getAccessCodeDate('ends_at', accessCode) ?? get24HoursLater() + const [endDate, setEndDate] = useState( + getAccessCodeDate('ends_at', accessCode) ?? getOneDayFromNow(timeZone) ) const save = (data: { name: string; code: string }): void => { @@ -86,14 +81,24 @@ function Content({ return } + const start = startDate.toISO() + if (start == null) { + throw new Error(`Invalid start date: ${startDate.invalidReason}`) + } + + const end = endDate.toISO() + if (end == null) { + throw new Error(`Invalid end date: ${endDate.invalidReason}`) + } + onSubmit({ name: data.name, code: data.code, type, device, - startDate, - endDate, - timezone, + startDate: start, + endDate: end, + timeZone, }) } @@ -108,19 +113,23 @@ function Content({ code: accessCode?.code ?? '', }, }) - const [timezonePickerVisible, toggleTimezonePicker] = useToggle() + const [timeZonePickerVisible, toggleTimeZonePicker] = useToggle() const { isLoading: isGeneratingCode, mutate: generateCode } = useGenerateAccessCodeCode() const submit = (): void => {} - if (timezonePickerVisible) { + if (timeZonePickerVisible) { return ( - { + setTimeZone(timeZone) + setStartDate(startDate.setZone(timeZone)) + setEndDate(endDate.setZone(timeZone)) + }} + onClose={toggleTimeZonePicker} /> ) } @@ -132,8 +141,8 @@ function Content({ setStartDate={setStartDate} endDate={endDate} setEndDate={setEndDate} - timezone={timezone} - onChangeTimezone={toggleTimezonePicker} + timeZone={timeZone} + onChangeTimeZone={toggleTimeZonePicker} onBack={() => { setDatePickerVisible(false) }} @@ -158,24 +167,6 @@ function Content({ ) } - const validateCodeLength = (value: string): boolean | string => { - if (!isLockDevice(device)) { - return true - } - - if (device.properties.supported_code_lengths == null) { - return true - } - - if (device.properties.supported_code_lengths.includes(value.length)) { - return true - } - - return t.codeLengthError( - device.properties.supported_code_lengths.join(', ') - ) - } - const hasCodeError = errors.code != null || responseErrors?.code != null const codeLengthRequirement = getCodeLengthRequirement(device) @@ -226,7 +217,8 @@ function Content({ inputProps={{ ...register('code', { required: t.codeRequiredError, - validate: validateCodeLength, + validate: (value: string) => + validateCodeLength(device, value), }), }} /> @@ -306,28 +298,26 @@ function Content({ ) } -function getAccessCodeTimezone( - accessCode?: NonNullable -): undefined | string { - if (accessCode == null) { - return undefined +const validateCodeLength = ( + device: CommonDevice, + value: string +): boolean | string => { + if (!isLockDevice(device)) { + return true } - if (accessCode.type === 'ongoing') { - return undefined + if (device.properties.supported_code_lengths == null) { + return true } - const date = accessCode.starts_at - - const timezone = getTimezoneFromIsoDate(date) - if (timezone == null) { - return undefined + if (device.properties.supported_code_lengths.includes(value.length)) { + return true } - return timezone + return t.codeLengthError(device.properties.supported_code_lengths.join(', ')) } -function getCodeLengthRequirement(device: CommonDevice): string | null { +const getCodeLengthRequirement = (device: CommonDevice): string | null => { if (!isLockDevice(device)) { return null } @@ -354,25 +344,29 @@ const sequentialNumbers = Array.from({ length: 100 }, (_, index) => index).join( '' ) -function isSequential(numbers: string): boolean { - return sequentialNumbers.includes(numbers) -} +const isSequential = (numbers: string): boolean => + sequentialNumbers.includes(numbers) -function getAccessCodeDate( +const getAccessCodeDate = ( date: 'starts_at' | 'ends_at', accessCode?: NonNullable -): string | undefined { +): DateTime | null => { if (accessCode == null) { - return undefined + return null } if (accessCode.type !== 'time_bound') { - return undefined + return null } - return accessCode[date] + return DateTime.fromISO(accessCode[date]) } +const getNow = (timeZone: string): DateTime => DateTime.now().setZone(timeZone) + +const getOneDayFromNow = (timeZone: string): DateTime => + DateTime.now().setZone(timeZone).plus({ days: 1 }) + const t = { addNewAccessCode: 'Add new access code', editAccessCode: 'Edit access code', diff --git a/src/lib/ui/AccessCodeForm/AccessCodeFormDatePicker.tsx b/src/lib/ui/AccessCodeForm/AccessCodeFormDatePicker.tsx index 08d8a404b..89026e4d2 100644 --- a/src/lib/ui/AccessCodeForm/AccessCodeFormDatePicker.tsx +++ b/src/lib/ui/AccessCodeForm/AccessCodeFormDatePicker.tsx @@ -1,4 +1,10 @@ -import { getTimezoneLabel } from 'lib/dates.js' +import type { DateTime } from 'luxon' + +import { + formatTimeZone, + parseDateTimePickerValue, + serializeDateTimePickerValue, +} from 'lib/dates.js' import { ChevronRightIcon } from 'lib/icons/ChevronRight.js' import { DateTimePicker } from 'lib/ui/DateTimePicker/DateTimePicker.js' import { FormField } from 'lib/ui/FormField.js' @@ -6,48 +12,52 @@ import { InputLabel } from 'lib/ui/InputLabel.js' import { ContentHeader } from 'lib/ui/layout/ContentHeader.js' interface AccessCodeFormDatePickerProps { - startDate: string - setStartDate: (date: string) => void - endDate: string - setEndDate: (date: string) => void - timezone: string - onChangeTimezone: () => void + startDate: DateTime + setStartDate: (dateTime: DateTime) => void + endDate: DateTime + setEndDate: (dateTime: DateTime) => void + timeZone: string + onChangeTimeZone: () => void onBack: (() => void) | undefined } export function AccessCodeFormDatePicker({ - timezone, + timeZone, onBack, startDate, setStartDate, endDate, setEndDate, - onChangeTimezone, + onChangeTimeZone, }: AccessCodeFormDatePickerProps): JSX.Element { return (
-
- {t.selectedTimezoneLabel} - - {getTimezoneLabel(timezone)} +
+ {t.selectedTimeZoneLabel} + + {formatTimeZone(timeZone)}
{t.startTimeLabel} { + setStartDate(parseDateTimePickerValue(value, timeZone)) + }} size='large' /> {t.endTimeLabel} { + setEndDate(parseDateTimePickerValue(value, timeZone)) + }} size='large' /> @@ -58,7 +68,7 @@ export function AccessCodeFormDatePicker({ const t = { timingTitle: 'Timing', - selectedTimezoneLabel: 'All times in', + selectedTimeZoneLabel: 'All times in', startTimeLabel: 'Start', endTimeLabel: 'End', } diff --git a/src/lib/ui/AccessCodeForm/AccessCodeFormTimezonePicker.tsx b/src/lib/ui/AccessCodeForm/AccessCodeFormTimeZonePicker.tsx similarity index 52% rename from src/lib/ui/AccessCodeForm/AccessCodeFormTimezonePicker.tsx rename to src/lib/ui/AccessCodeForm/AccessCodeFormTimeZonePicker.tsx index 12d3cf2ea..1e3fa5f9d 100644 --- a/src/lib/ui/AccessCodeForm/AccessCodeFormTimezonePicker.tsx +++ b/src/lib/ui/AccessCodeForm/AccessCodeFormTimeZonePicker.tsx @@ -1,30 +1,30 @@ import { useState } from 'react' import { ContentHeader } from 'lib/ui/layout/ContentHeader.js' -import { TimezonePicker } from 'lib/ui/TimezonePicker/TimezonePicker.js' +import { TimeZonePicker } from 'lib/ui/TimeZonePicker/TimeZonePicker.js' -interface AccessCodeFormTimezonePickerProps { +interface AccessCodeFormTimeZonePickerProps { value: string - onChange: (timezone: string) => void + onChange: (timeZone: string) => void onClose: () => void } -export function AccessCodeFormTimezonePicker({ +export function AccessCodeFormTimeZonePicker({ onChange, value, onClose, -}: AccessCodeFormTimezonePickerProps): JSX.Element { +}: AccessCodeFormTimeZonePickerProps): JSX.Element { const [title, setTitle] = useState(t.titleAuto) return ( -
+
- { - setTitle(manualTimezoneSelected ? t.titleManual : t.titleAuto) + onManualTimeZoneSelected={(manualTimeZoneSelected) => { + setTitle(manualTimeZoneSelected ? t.titleManual : t.titleAuto) }} />
@@ -36,5 +36,5 @@ const t = { titleAuto: 'Time Zone (automatic)', titleManual: 'Time Zone (manual)', utc: 'UTC', - setTimezoneManuallyLabel: 'Use local time zone', + setTimeZoneManuallyLabel: 'Use local time zone', } diff --git a/src/lib/ui/AccessCodeForm/AccessCodeFormTimes.tsx b/src/lib/ui/AccessCodeForm/AccessCodeFormTimes.tsx index 7831b5741..3e39585d8 100644 --- a/src/lib/ui/AccessCodeForm/AccessCodeFormTimes.tsx +++ b/src/lib/ui/AccessCodeForm/AccessCodeFormTimes.tsx @@ -1,10 +1,11 @@ -import { formatDateTimeReadable } from 'lib/dates.js' +import { DateTime } from 'luxon' + import { EditIcon } from 'lib/icons/Edit.js' import { IconButton } from 'lib/ui/IconButton.js' interface AccessCodeFormTimesProps { - startDate: string - endDate: string + startDate: DateTime + endDate: DateTime onEdit: () => void } @@ -17,9 +18,9 @@ export function AccessCodeFormTimes({
{t.startTimeLabel} - {formatDateTimeReadable(startDate)} + {formatDateTime(startDate)} {t.endTimeLabel} - {formatDateTimeReadable(endDate)} + {formatDateTime(endDate)}
@@ -28,6 +29,9 @@ export function AccessCodeFormTimes({ ) } +const formatDateTime = (dateTime: DateTime): string => + dateTime.toLocaleString(DateTime.DATETIME_FULL_WITH_SECONDS) + const t = { startTimeLabel: 'Start', endTimeLabel: 'End', diff --git a/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.tsx b/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.tsx index db3f298a3..4ba8ef686 100644 --- a/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.tsx +++ b/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.tsx @@ -3,17 +3,17 @@ import { useState } from 'react' import { useForm } from 'react-hook-form' import type { ClimateSetting } from 'seamapi' -import { getBrowserTimezone } from 'lib/dates.js' +import { getSystemTimeZone } from 'lib/dates.js' import { ClimateSettingScheduleFormDeviceSelect } from 'lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.js' import { ClimateSettingScheduleFormNameAndSchedule } from 'lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.js' -import { ClimateSettingScheduleFormTimezonePicker } from 'lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimezonePicker.js' +import { ClimateSettingScheduleFormTimeZonePicker } from 'lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.js' export interface ClimateSettingScheduleFormSubmitData { name: string deviceId: string startDate: string endDate: string - timezone: string + timeZone: string climateSetting: ClimateSetting } @@ -29,7 +29,7 @@ export interface ClimateSettingScheduleFormFields { deviceId: string startDate: string endDate: string - timezone: string + timeZone: string } export function ClimateSettingScheduleForm({ @@ -54,18 +54,18 @@ function Content({ name: '', startDate: '', endDate: '', - timezone: getBrowserTimezone(), + timeZone: getSystemTimeZone(), }, }) const deviceId = watch('deviceId') - const timezone = watch('timezone') + const timeZone = watch('timeZone') const [page, setPage] = useState< | 'device_select' | 'default_setting' | 'name_and_schedule' - | 'timezone_select' + | 'time_zone_select' | 'climate_setting' >('device_select') @@ -95,17 +95,17 @@ function Content({ onNext={() => { setPage('climate_setting') }} - onChangeTimezone={() => { - setPage('timezone_select') + onChangeTimeZone={() => { + setPage('time_zone_select') }} - timezone={timezone} + timeZone={timeZone} /> ) } - if (page === 'timezone_select') { + if (page === 'time_zone_select') { return ( - { setPage('name_and_schedule') diff --git a/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.tsx b/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.tsx index df3090cc2..5bd741ae6 100644 --- a/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.tsx +++ b/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.tsx @@ -1,6 +1,6 @@ import { type Control, Controller } from 'react-hook-form' -import { getTimezoneLabel } from 'lib/dates.js' +import { formatTimeZone } from 'lib/dates.js' import { ChevronRightIcon } from 'lib/icons/ChevronRight.js' import { useDevice } from 'lib/seam/devices/use-device.js' import { Button } from 'lib/ui/Button.js' @@ -15,22 +15,22 @@ interface ClimateSettingScheduleFormNameAndScheduleProps { title: string control: Control deviceId: string - timezone: string + timeZone: string onBack: () => void onCancel: (() => void) | undefined onNext: () => void - onChangeTimezone: () => void + onChangeTimeZone: () => void } export function ClimateSettingScheduleFormNameAndSchedule({ title, control, deviceId, - timezone, + timeZone, onBack, onCancel, onNext, - onChangeTimezone, + onChangeTimeZone, }: ClimateSettingScheduleFormNameAndScheduleProps): JSX.Element { const { device } = useDevice({ device_id: deviceId, @@ -68,10 +68,10 @@ export function ClimateSettingScheduleFormNameAndSchedule({ {t.startTimeLabel} -
- {t.selectedTimezoneLabel} - - {getTimezoneLabel(timezone)} +
+ {t.selectedTimeZoneLabel} + + {formatTimeZone(timeZone)}
@@ -116,5 +116,5 @@ const t = { cancel: 'Cancel', save: 'Save', next: 'Next', - selectedTimezoneLabel: 'All times in', + selectedTimeZoneLabel: 'All times in', } diff --git a/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimezonePicker.tsx b/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.tsx similarity index 66% rename from src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimezonePicker.tsx rename to src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.tsx index b45b811ac..396371d37 100644 --- a/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimezonePicker.tsx +++ b/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.tsx @@ -3,17 +3,17 @@ import { type Control, Controller } from 'react-hook-form' import type { ClimateSettingScheduleFormFields } from 'lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js' import { ContentHeader } from 'lib/ui/layout/ContentHeader.js' -import { TimezonePicker } from 'lib/ui/TimezonePicker/TimezonePicker.js' +import { TimeZonePicker } from 'lib/ui/TimeZonePicker/TimeZonePicker.js' -interface ClimateSettingScheduleFormTimezonePickerProps { +interface ClimateSettingScheduleFormTimeZonePickerProps { control: Control onClose: () => void } -export function ClimateSettingScheduleFormTimezonePicker({ +export function ClimateSettingScheduleFormTimeZonePicker({ control, onClose, -}: ClimateSettingScheduleFormTimezonePickerProps): JSX.Element { +}: ClimateSettingScheduleFormTimeZonePickerProps): JSX.Element { const [title, setTitle] = useState(t.titleAuto) return ( @@ -21,13 +21,13 @@ export function ClimateSettingScheduleFormTimezonePicker({
( - { - setTitle(manualTimezoneSelected ? t.titleManual : t.titleAuto) + onManualTimeZoneSelected={(manualTimeZoneSelected) => { + setTitle(manualTimeZoneSelected ? t.titleManual : t.titleAuto) }} /> )} diff --git a/src/lib/ui/LoadingToast/LoadingToast.tsx b/src/lib/ui/LoadingToast/LoadingToast.tsx index 2fb97dd89..df2bdace3 100644 --- a/src/lib/ui/LoadingToast/LoadingToast.tsx +++ b/src/lib/ui/LoadingToast/LoadingToast.tsx @@ -21,26 +21,23 @@ export function LoadingToast({ const [showToast, setShowToast] = useState(isLoading) useEffect(() => { - if (!isLoading) { - const hideTimeout = globalThis.setTimeout(() => { - setHidden(true) - }, 1000) - - const removeTimeout = globalThis.setTimeout(() => { - setShowToast(false) - }, 1500) - - return () => { - globalThis.clearTimeout(hideTimeout) - globalThis.clearTimeout(removeTimeout) - } + if (isLoading) { + setHidden(false) + setShowToast(true) + return () => {} } - setHidden(false) - setShowToast(true) + const hideTimeout = globalThis.setTimeout(() => { + setHidden(true) + }, 1000) + + const removeTimeout = globalThis.setTimeout(() => { + setShowToast(false) + }, 1500) return () => { - // noop + globalThis.clearTimeout(hideTimeout) + globalThis.clearTimeout(removeTimeout) } }, [isLoading]) diff --git a/src/lib/ui/TimeZonePicker/TimeZonePicker.stories.tsx b/src/lib/ui/TimeZonePicker/TimeZonePicker.stories.tsx new file mode 100644 index 000000000..e80a59339 --- /dev/null +++ b/src/lib/ui/TimeZonePicker/TimeZonePicker.stories.tsx @@ -0,0 +1,31 @@ +import { useArgs } from '@storybook/preview-api' +import type { Meta, StoryObj } from '@storybook/react' + +import { getSystemTimeZone } from 'lib/dates.js' +import { TimeZonePicker } from 'lib/ui/TimeZonePicker/TimeZonePicker.js' + +const meta: Meta = { + title: 'Library/TimeZonePicker', + tags: ['autodocs'], + component: TimeZonePicker, +} + +type Story = StoryObj + +export const Content: Story = { + render: (props) => { + const [, setArgs] = useArgs() + + const onChange = (timeZone: string): void => { + setArgs({ value: timeZone }) + } + + return + }, +} + +Content.args = { + value: getSystemTimeZone(), +} + +export default meta diff --git a/src/lib/ui/TimeZonePicker/TimeZonePicker.tsx b/src/lib/ui/TimeZonePicker/TimeZonePicker.tsx new file mode 100644 index 000000000..1899683f9 --- /dev/null +++ b/src/lib/ui/TimeZonePicker/TimeZonePicker.tsx @@ -0,0 +1,69 @@ +import { useEffect, useState } from 'react' + +import { + formatTimeZone, + getSupportedTimeZones, + getSystemTimeZone, +} from 'lib/dates.js' +import { Checkbox } from 'lib/ui/Checkbox.js' +import { handleString } from 'lib/ui/TextField/TextField.js' + +interface TimeZonePickerProps { + value: string + onChange: (timeZone: string) => void + onManualTimeZoneSelected?: (manualTimeZoneSelected: boolean) => void +} + +export function TimeZonePicker({ + onChange, + value, + onManualTimeZoneSelected, +}: TimeZonePickerProps): JSX.Element { + const [manualTimeZoneEnabled, setManualTimeZoneEnabled] = useState(false) + + const isBrowserTimeZoneSelected = value === getSystemTimeZone() + const isManualTimeZoneSelected = + !isBrowserTimeZoneSelected || manualTimeZoneEnabled + + useEffect(() => { + if (onManualTimeZoneSelected != null) + onManualTimeZoneSelected(isManualTimeZoneSelected) + }, [isManualTimeZoneSelected, onManualTimeZoneSelected]) + + const handleChangeManualTimeZone = (enabled: boolean): void => { + setManualTimeZoneEnabled(enabled) + if (!enabled) { + onChange(getSystemTimeZone()) + } + } + + return ( +
+ { + handleChangeManualTimeZone(!manual) + }} + className='seam-manual-time-zone-checkbox' + /> + + +
+ ) +} + +const t = { + utc: 'UTC', + setTimeZoneManuallyLabel: 'Use local time zone', +} diff --git a/src/lib/ui/TimezonePicker/TimezonePicker.stories.tsx b/src/lib/ui/TimezonePicker/TimezonePicker.stories.tsx deleted file mode 100644 index 662b92c89..000000000 --- a/src/lib/ui/TimezonePicker/TimezonePicker.stories.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { useArgs } from '@storybook/preview-api' -import type { Meta, StoryObj } from '@storybook/react' - -import { getBrowserTimezone } from 'lib/dates.js' -import { TimezonePicker } from 'lib/ui/TimezonePicker/TimezonePicker.js' - -const meta: Meta = { - title: 'Library/TimezonePicker', - tags: ['autodocs'], - component: TimezonePicker, -} - -type Story = StoryObj - -export const Content: Story = { - render: (props) => { - const [, setArgs] = useArgs() - - const onChange = (timezone: string): void => { - setArgs({ value: timezone }) - } - - return - }, -} - -Content.args = { - value: getBrowserTimezone(), -} - -export default meta diff --git a/src/lib/ui/TimezonePicker/TimezonePicker.tsx b/src/lib/ui/TimezonePicker/TimezonePicker.tsx deleted file mode 100644 index c64e14d74..000000000 --- a/src/lib/ui/TimezonePicker/TimezonePicker.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { useEffect, useState } from 'react' - -import { - getBrowserTimezone, - getTimezoneLabel, - getTimezoneOffset, - getTimezones, -} from 'lib/dates.js' -import { Checkbox } from 'lib/ui/Checkbox.js' -import { handleString } from 'lib/ui/TextField/TextField.js' - -interface TimezonePickerProps { - value: string - onChange: (timezone: string) => void - onManualTimezoneSelected?: (manualTimezoneSelected: boolean) => void -} - -export function TimezonePicker({ - onChange, - value, - onManualTimezoneSelected, -}: TimezonePickerProps): JSX.Element { - const [manualTimezoneEnabled, setManualTimezoneEnabled] = useState(false) - - const isBrowserTimezoneSelected = value === getBrowserTimezone() - const isManualTimezoneSelected = - !isBrowserTimezoneSelected || manualTimezoneEnabled - - useEffect(() => { - if (onManualTimezoneSelected != null) - onManualTimezoneSelected(isManualTimezoneSelected) - }, [isManualTimezoneSelected, onManualTimezoneSelected]) - - const handleChangeManualTimezone = (enabled: boolean): void => { - setManualTimezoneEnabled(enabled) - if (!enabled) { - onChange(getBrowserTimezone()) - } - } - - return ( -
- { - handleChangeManualTimezone(!manual) - }} - className='seam-manual-timezone-checkbox' - /> - - -
- ) -} - -const t = { - utc: 'UTC', - setTimezoneManuallyLabel: 'Use local time zone', -} diff --git a/src/lib/ui/device/BatteryStatus.tsx b/src/lib/ui/device/BatteryStatus.tsx index 7b9366a08..ea7b8d74a 100644 --- a/src/lib/ui/device/BatteryStatus.tsx +++ b/src/lib/ui/device/BatteryStatus.tsx @@ -26,15 +26,14 @@ function Content(props: { }): JSX.Element | null { const { status, level } = props - const percentage = level != null ? ` (${Math.floor(level * 100)}%)` : null - if (status === 'full') { return ( <> - {`${t.full}${ - percentage ?? '' - }`} + + {t.full} + + ) } @@ -43,9 +42,10 @@ function Content(props: { return ( <> - {`${t.high}${ - percentage ?? '' - }`} + + {t.high} + + ) } @@ -54,9 +54,10 @@ function Content(props: { return ( <> - {`${t.low}${ - percentage ?? '' - }`} + + {t.low} + + ) } @@ -65,9 +66,10 @@ function Content(props: { return ( <> - {`${t.critical}${ - percentage ?? '' - }`} + + {t.critical} + + ) } @@ -75,6 +77,13 @@ function Content(props: { return null } +function Percentage(props: { + level: number | null | undefined +}): JSX.Element | null { + if (props.level == null) return null + return <> ({Math.floor(props.level * 100)}%) +} + const t = { full: 'Good', high: 'Good', diff --git a/src/lib/ui/use-current-time.ts b/src/lib/ui/use-now.ts similarity index 87% rename from src/lib/ui/use-current-time.ts rename to src/lib/ui/use-now.ts index 38932cc45..2f4f6839f 100644 --- a/src/lib/ui/use-current-time.ts +++ b/src/lib/ui/use-now.ts @@ -3,7 +3,7 @@ import { useCallback, useState } from 'react' import { useInterval } from 'lib/ui/use-interval.js' -export function useCurrentTime(): DateTime { +export function useNow(): DateTime { const [date, setDate] = useState(DateTime.now()) const update = useCallback(() => { diff --git a/src/styles/_access-code-form.scss b/src/styles/_access-code-form.scss index 096ddd9ca..184152615 100644 --- a/src/styles/_access-code-form.scss +++ b/src/styles/_access-code-form.scss @@ -4,7 +4,7 @@ .seam-access-code-form { @include main; @include schedule-picker; - @include timezone-picker; + @include time-zone-picker; } } @@ -96,7 +96,7 @@ .seam-content { padding: 0 24px; - .seam-timezone { + .seam-time-zone { display: flex; align-items: center; font-size: 14px; @@ -127,8 +127,8 @@ } } -@mixin timezone-picker { - .seam-access-code-timezone-picker { +@mixin time-zone-picker { + .seam-access-code-time-zone-picker { .seam-content { padding: 0 24px; } diff --git a/src/styles/_climate-setting-schedule-form.scss b/src/styles/_climate-setting-schedule-form.scss index 67385f60d..b11c4e1b9 100644 --- a/src/styles/_climate-setting-schedule-form.scss +++ b/src/styles/_climate-setting-schedule-form.scss @@ -25,7 +25,7 @@ @mixin name-and-schedule { .seam-climate-setting-schedule-form-name-and-schedule { - .seam-timezone { + .seam-time-zone { display: flex; align-items: center; font-size: 14px; diff --git a/src/styles/_main.scss b/src/styles/_main.scss index 12c45f50c..de748fae6 100644 --- a/src/styles/_main.scss +++ b/src/styles/_main.scss @@ -25,7 +25,7 @@ @use './switch'; @use './climate-setting-schedule-form'; @use './climate-setting-schedule-details'; -@use './timezone-picker'; +@use './time-zone-picker'; .seam-components { // Reset @@ -47,7 +47,7 @@ @include tooltip.all; @include spinner.all; @include switch.all; - @include timezone-picker.all; + @include time-zone-picker.all; // Components @include device-details.all; diff --git a/src/styles/_timezone-picker.scss b/src/styles/_time-zone-picker.scss similarity index 73% rename from src/styles/_timezone-picker.scss rename to src/styles/_time-zone-picker.scss index d595200ef..c4ea1043f 100644 --- a/src/styles/_timezone-picker.scss +++ b/src/styles/_time-zone-picker.scss @@ -1,12 +1,12 @@ @use './colors'; @mixin all { - .seam-timezone-picker { - .seam-manual-timezone-checkbox { + .seam-time-zone-picker { + .seam-manual-time-zone-checkbox { margin-bottom: 8px; } - > .seam-timezone-select { + > .seam-time-zone-select { background: colors.$white; padding: 0 12px; width: 100%; diff --git a/test/lib/date.test.ts b/test/lib/date.test.ts index 63bcac018..91c626dc4 100644 --- a/test/lib/date.test.ts +++ b/test/lib/date.test.ts @@ -1,51 +1,82 @@ -import { expect, it } from 'vitest' +import { DateTime } from 'luxon' +import { describe, expect, it } from 'vitest' import { - compareByTimezoneOffsetAsc, - createIsoDate, - formatDateTimeReadable, - get24HoursLater, - getNow, - getTimezoneLabel, - getTimezoneOffset, + compareByCreatedAtDesc, + formatTimeZone, + getSupportedTimeZones, + getSystemTimeZone, + parseDateTimePickerValue, + serializeDateTimePickerValue, } from 'lib/dates.js' -it('should return a timezone label', () => { - expect(true).toBe(true) +describe('compareByCreatedAtDesc', () => { + it('compares two valid dates', () => { + expect( + compareByCreatedAtDesc( + { created_at: '2023-09-27T22:44:52Z' }, + { created_at: '2022-09-27T22:44:52Z' } + ) + ).toBe(31536000000) - expect(getTimezoneLabel('America/Los_angeles')).toBe('Los angeles (America)') + expect( + compareByCreatedAtDesc( + { created_at: '2022-09-27T22:44:52Z' }, + { created_at: '2023-09-27T22:44:52Z' } + ) + ).toBe(-31536000000) + }) }) -it('should compare 2 timezones by minutes', () => { - const tokyo = 9 * 60 // +9 = 540 minutes - - const losAngeles = -7 * 60 // -7 = -420 minutes - - expect(compareByTimezoneOffsetAsc('Asia/Tokyo', 'America/Los_angeles')).toBe( - tokyo - losAngeles - ) +describe('getSupportedTimeZones', () => { + it('contains time zones', () => { + expect(getSupportedTimeZones()).toContain('Africa/Maputo') + expect(getSupportedTimeZones()).toContain('Asia/Tokyo') + }) }) -it('should return offset mintues', () => { - expect(getTimezoneOffset('America/Los_angeles')).toBe('-07:00') +describe('getSystemTimeZone', () => { + it('is a supported time zone', () => { + const systemTimeZone = getSystemTimeZone() + expect(getSupportedTimeZones()).toContain(systemTimeZone) + }) }) -it('should return a readable date, and time', () => { - expect(formatDateTimeReadable('2023-04-17T13:15:00')).toBe( - 'Apr 17, 2023 at 1:15 PM' - ) -}) +describe('formatTimeZone', () => { + it('returns zone name and offset', () => { + expect(formatTimeZone('Africa/Maputo')).toBe('Africa/Maputo (UTC+2)') + expect(formatTimeZone('UTC')).toBe('UTC (UTC+0)') + }) -it('should only show current date and time', () => { - // Assert doesn't contain any timezone, or milliseconds - - expect(getNow()).not.toContain('Z') - expect(getNow()).not.toContain('.') + it('handles the case with no region', () => { + expect(formatTimeZone('Egypt')).toBe('Egypt (UTC+3)') + }) +}) - expect(get24HoursLater()).not.toContain('Z') - expect(get24HoursLater()).not.toContain('.') +describe('serializeDateTimePickerValue', () => { + it('formats without time zone', () => { + expect( + serializeDateTimePickerValue( + DateTime.fromISO('2023-09-27T22:44:52Z'), + 'UTC' + ) + ).toBe('2023-09-27T22:44:52') + expect( + serializeDateTimePickerValue( + DateTime.fromISO('2023-09-27T22:44:52+0300'), + 'Asia/Tokyo' + ) + ).toBe('2023-09-28T04:44:52') + }) }) -it('should create an ISO8601 date', () => { - expect(createIsoDate(getNow(), 'America/Los_angeles')).toContain('.000-07:00') +describe('parseDateTimePickerValue', () => { + it('keeps time with the new zone', () => { + expect(parseDateTimePickerValue('2023-09-27T22:44:52', 'UTC').toISO()).toBe( + '2023-09-27T22:44:52.000Z' + ) + expect( + parseDateTimePickerValue('2023-09-28T04:44:52', 'Asia/Tokyo').toISO() + ).toBe('2023-09-28T04:44:52.000+09:00') + }) }) diff --git a/vite.config.ts b/vite.config.ts index e56cb957a..608f5e063 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -12,11 +12,7 @@ export default defineConfig(async ({ mode }) => { throw new Error('Missing version in package.json') } const config: UserConfig = { - plugins: [ - tsconfigPaths(), - // @ts-expect-error https://github.com/vitejs/vite-plugin-react/issues/104 - react(), - ], + plugins: [tsconfigPaths(), react()], define: isBuild ? { 'process.env.NODE_ENV': "'production'",