From 43fb78cea7995c0bb2aaa1aee9dbe5744d7bd0aa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Apr 2026 05:57:36 +0000 Subject: [PATCH 1/6] Initial plan From 4e42a7d3780a1881d7c911fb5ea7e145b85e2981 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Apr 2026 06:01:09 +0000 Subject: [PATCH 2/6] chore: initial accessibility implementation plan Agent-Logs-Url: https://github.com/OpenCalendarApp/OpenCalendar/sessions/dd4cadc4-405a-4005-b29f-579e9a7e90b8 Co-authored-by: WFord26 <117926366+WFord26@users.noreply.github.com> --- packages/client/tsconfig.tsbuildinfo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client/tsconfig.tsbuildinfo b/packages/client/tsconfig.tsbuildinfo index 5106c6d..b80d22f 100644 --- a/packages/client/tsconfig.tsbuildinfo +++ b/packages/client/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../node_modules/typescript/lib/lib.scripthost.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/typescript/lib/lib.es2022.full.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/react/index.d.ts","../../node_modules/@types/react/jsx-runtime.d.ts","../../node_modules/@remix-run/router/dist/history.d.ts","../../node_modules/@remix-run/router/dist/utils.d.ts","../../node_modules/@remix-run/router/dist/router.d.ts","../../node_modules/@remix-run/router/dist/index.d.ts","../../node_modules/react-router/dist/lib/context.d.ts","../../node_modules/react-router/dist/lib/components.d.ts","../../node_modules/react-router/dist/lib/hooks.d.ts","../../node_modules/react-router/dist/lib/deprecations.d.ts","../../node_modules/react-router/dist/index.d.ts","../../node_modules/react-router-dom/dist/dom.d.ts","../../node_modules/react-router-dom/dist/index.d.ts","../shared/dist/types.d.ts","../../node_modules/zod/v3/helpers/typealiases.d.cts","../../node_modules/zod/v3/helpers/util.d.cts","../../node_modules/zod/v3/index.d.cts","../../node_modules/zod/v3/zoderror.d.cts","../../node_modules/zod/v3/locales/en.d.cts","../../node_modules/zod/v3/errors.d.cts","../../node_modules/zod/v3/helpers/parseutil.d.cts","../../node_modules/zod/v3/helpers/enumutil.d.cts","../../node_modules/zod/v3/helpers/errorutil.d.cts","../../node_modules/zod/v3/helpers/partialutil.d.cts","../../node_modules/zod/v3/standard-schema.d.cts","../../node_modules/zod/v3/types.d.cts","../../node_modules/zod/v3/external.d.cts","../../node_modules/zod/index.d.cts","../shared/dist/schemas.d.ts","../shared/dist/contracts.d.ts","../shared/dist/index.d.ts","./src/auth/storage.ts","./src/api/client.ts","./src/context/authcontext.tsx","./src/components/adminroute.tsx","../../node_modules/lucide-react/dist/lucide-react.d.ts","./src/components/brandlogo.tsx","./src/components/layout.tsx","./src/pages/adminauditpage.tsx","./src/context/toastcontext.tsx","./src/pages/adminbrandingpage.tsx","./src/pages/adminoverviewpage.tsx","./src/pages/adminssopage.tsx","./src/pages/adminuserspage.tsx","./src/components/createprojectmodal.tsx","./src/components/onboardingwizard.tsx","./src/pages/dashboardpage.tsx","./src/pages/forgotpasswordpage.tsx","./src/pages/loginpage.tsx","./src/utils/timezone.ts","./src/context/timezonecontext.tsx","./src/components/timezoneselect.tsx","./src/components/addtimeblockmodal.tsx","./src/components/availabilitysolvermodal.tsx","./src/components/confirmdialog.tsx","./src/pages/projectdetailpage.tsx","./src/utils/usetenantbranding.ts","./src/pages/publicbookingpage.tsx","./src/pages/reschedulepage.tsx","./src/pages/resetpasswordpage.tsx","./src/pages/setuppage.tsx","./src/app.tsx","../../node_modules/@types/react-dom/client.d.ts","./src/main.tsx","../../node_modules/vite/types/hmrpayload.d.ts","../../node_modules/vite/types/customevent.d.ts","../../node_modules/vite/types/hot.d.ts","../../node_modules/vite/types/importglob.d.ts","../../node_modules/vite/types/importmeta.d.ts","../../node_modules/vite/client.d.ts","./src/vite-env.d.ts","../../node_modules/@types/react-dom/index.d.ts"],"fileIdsList":[[69,70,71],[69,70],[69],[67],[64,65,66],[72],[67,72,77,78],[72,73,74,75,76],[67,72,73],[67,72],[72,74],[135],[131],[132],[133,134],[93],[84,85],[81,82,84,86,87,92],[82,84],[92],[84],[81,82,84,87,88,89,90,91],[81,82,83],[68,98],[68,79,100,101,104,105,107,108,109,110,113,114,115,122,124,125,126,127],[68],[67,68,97,99,106,116,117,118],[68,79,100],[67,68,97,99,102,117],[67,68,97,99,102,106],[68,79,100,102,103],[67,68,97,99,100,102,106],[68,117],[67,68,97,98,99],[67,68,116],[67,68,102],[67,68,79,100,106,117,128,129,136],[67,68,97,99],[67,68,97,98,99,106],[67,68,97,99,106],[67,68,79,97,99,100,102,106,111,112],[67,68,79,99,103],[67,68,79,97,99,100,102,103,106],[67,68,79,97,99,100,102,106,116,117,118,119,120,121],[67,68,79,97,99,102,103,106,116,117,118,123],[67,68,79,97,99,102,103,106,116,117,118,121,123],[67,68,79,99,103,106],[67,68,79,97,99,100,103,106],[136],[94,95],[80,95,96],[94]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3cbad9a1ba4453443026ed38e4b8be018abb26565fa7c944376463ad9df07c41","impliedFormat":1},{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"035312d4945d13efa134ae482f6dc56a1a9346f7ac3be7ccbad5741058ce87f3","affectsGlobalScope":true,"impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"5af7c35a9c5c4760fd084fedb6ba4c7059ac9598b410093e5312ac10616bf17b","impliedFormat":1},{"version":"628617cf218aee4f080a5e54edc412f3fbfb4eab94cc16f327da8d357b550230","impliedFormat":1},{"version":"3c8c1edb7ed8a842cb14d9f2ba6863183168a9fc8d6aa15dec221ebf8b946393","impliedFormat":1},{"version":"0a6e1a3f199d6cc3df0410b4df05a914987b1e152c4beacfd0c5142e15302cac","impliedFormat":1},{"version":"ec3c1376b4f34b271b1815674546fe09a2f449b0773afd381bbce7eb2f96a731","impliedFormat":1},{"version":"c2a262a3157e868d279327daf428dd629bd485f825800c8e62b001e6c879aff6","impliedFormat":1},{"version":"f7e84f314f9276b44b707289446303db8ef34a6c2c6d6b08d03a76e168367072","impliedFormat":1},{"version":"2b493706eb7879d42a8e8009379292b59827d612ab3a275bc476f87e60259c79","impliedFormat":1},{"version":"5542628b04d7bd4e0cd4871b6791b3b936a917ac6b819dcd20487f040acb01f1","impliedFormat":1},{"version":"f07b335f87cfac999fc1da00dfbc616837ced55be67bcaa41524d475b7394554","impliedFormat":1},{"version":"938326adb4731184e14e17fc57fca2a3b69c337ef8d6c00c65d73472fe8feca4","affectsGlobalScope":true,"impliedFormat":1},"29d3e26dd77d75b9bbd4cba7971a6a9c5873debe65ec92b63c39a364dc629e4c",{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","impliedFormat":1},"089bea171323088e3a2f708d661bb8a0006f8de68d1be01cc993b2b5c320ba35","2b5704a90a576f36b84c42d735c0d7b34002cbed1a2937acdbf654faee96e95d","0c9bc893f8484f9aadb17efe60b05f4848cce5a865028346872d024f83e34123",{"version":"09403f4e6aae0cd3cbf29afdfb4a4c5f21f054b0cce4489216aeb4c44af489ae","signature":"b87fb61f685f0cbe9fd4ad2fc8ae2163d43d2e35392a05dd25dc1596b288df4f"},{"version":"d0c698a302a3f2e877880606e9cf9b4638c6b0173fa8af673f3cd25d60531ad4","signature":"2d07beed67fe9c6b6a647ec8faccc9ec078369b713c0b0297f5c901d11b352f8"},"972924652a0c64b2744217102d7e85c59942492dd2f107fa947d1c9e641c5ac3","3f16d0ced45925afa33da11fdd8e9e175744ffb0bf5f980ab3ab5fb2d00fae44",{"version":"458d8d70f3729f673fff591021c883c593e96e00b324b187466fe8ec3e7eb658","impliedFormat":1},{"version":"7c51786a5f830c629b0356b177cdcdf1124c07f7901a6cb7a8a1989eeda1e4f9","signature":"df28c777b805dfa5b9021acd4cfacdebe7d3b7c494c9035f6a6c4cfc20244c4b"},"fe30832df43aba1ef5b4e781df0d0b57528d965fd323f7ec195a44c6fb898dc8","e31e30bf3041cd54293c71c4e2a2cf129b62a225747370f05ed13ed886f11602",{"version":"270014bc409a9c9f58e877a0c52999e445f3dfda7ebdbe509436018792c4f9c3","signature":"44f4c01cab67bf0cf8dc7a77083bb3b8471d270818ca65d2cefe4fdf3286fdb7"},"b266ed6c2f8e2443a03facfd23fb5196fb39cc336a93dd6014023fd40d7ea564","5f2caf0504a350c4c7602ed61f1519d09acf4e4c70f0bbae49b1c9dd98837c51","ad442aa7c89f9a104f590471e65ff2059a54f2ecbb618d8c7d78d4a899ccba04","b8fd41de8a6a6396637503e269d76dc953793679ffa92a5d30c5863b6247aa5d","d002175dd5dada8a2280134b640adb7050e7f3fc44725b37f91eeab20433c365","21063befbd77bab5591dda851075065d6bda59ffc5830eb0c3418f26083d8f4f",{"version":"d4ad8c1fe540c2296ee37f09ecf12fd4c9fad356e6b5a9894a799478285abd3f","signature":"1a489562f07c774f00e05265a62fdbe1da73be8dd368ba6400f831451b31a119"},{"version":"43632cb35469a7b104a1e33ea620ada10de86c04ab01e34d6bba1b6bb8295821","signature":"46ed9aeb864f2fde94b5c574e49872f4eff722c43d2351ca9c9b03961571badb"},"3b81f372ddaa7e097831a58fe9c6834390742a2b8c8a0bc640b16d1eed82b6e1",{"version":"44caf1cbf0f944706d330f4cb582ad0a9cccfae1ecfd25ac4a38a063a0051b89","signature":"db22275efcb4b8ef4b205239321be50a9517b883f5b6e3c5a47f0b87406c4039"},{"version":"24bea49481be1f35b82cc39db08a269f17f0f797d845c4df2f1a022473de0a5a","signature":"1533e6283e30a00a9faee26f881e5d54e77e3fdf74c782c5e8a695b6ece39786"},{"version":"2631c97e1601b60b9b753bcbf53e43b58165c5d17421f90e86900d2c67f121aa","signature":"a2254c56e5e914a9214e6bdc5be66a856c520a6f2825d3db7bb821e6eb339a52"},"328f65210caef5e847058a3702eb24ffd40807f3926aecd5882608af2abcf66c","d7cffb96efe2afe1ee0a3ce0737a1973a59fe6a0adfcd9b9a14bfecd34d655f3",{"version":"5d52b396f7222c48fe81349d640f0586a23f0404f55229931c7f85b5fa228b61","signature":"d7158edb0d5e4094c1486f1ac86645a0ff146c1a24313bd12cfde7857410edad"},{"version":"2e988e762802b38ed7e3e21d85ae09f6113cc05b325f5aaa10b6c08274d74693","signature":"a70849fbf7c997575dc7c107c8967bb79e29181b387307ffe776a3ffd842a2c7"},"0ea376bc3e3356979a882c28eda9817d636a372928734d6ae4c9b49a19f47d6c","c8b1cc19b425a6b9a4862b2cb2f2fd9f136932aa536125492b6f6f6ecab465c5","56e8a37669816e45588406353698087f0728333653eaa450775fafa28215e5bb",{"version":"967f7e56aaa5b84bb5678b964c134834035c9a6dec6da5056b99ababbb75644c","signature":"1c01f7f4a3f6f1a9d9f7cf5c6d4ac980963a877ad59070d451c7fd7c41f88823"},"28e74b473af5bd4900b0793a80e93ab49b33546ca9e0fbe74a37ea3e58635989","29483491a6c202ae20d4aa94f298e5e1b8e255d827d1c70c00719542f5c73eef",{"version":"05321b823dd3781d0b6aac8700bfdc0c9181d56479fe52ba6a40c9196fd661a8","impliedFormat":1},"5b1adafff6e046b3edfad188d1cd9fda8c2e27ab7b72057bcbf1caeaa6169d73",{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"19efad8495a7a6b064483fccd1d2b427403dd84e67819f86d1c6ee3d7abf749c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1eef826bc4a19de22155487984e345a34c9cd511dd1170edc7a447cb8231dd4a","affectsGlobalScope":true,"impliedFormat":99},"65996936fbb042915f7b74a200fcdde7e410f32a669b1ab9597cfaa4b0faddb5",{"version":"17ed71200119e86ccef2d96b73b02ce8854b76ad6bd21b5021d4269bec527b5f","impliedFormat":1}],"root":[[98,101],[103,128],130,137],"options":{"composite":true,"declaration":true,"esModuleInterop":true,"jsx":4,"module":99,"noUncheckedIndexedAccess":true,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[72,1],[71,2],[70,3],[129,4],[138,4],[67,5],[68,4],[102,4],[78,6],[79,7],[77,8],[74,9],[73,10],[76,11],[75,9],[136,12],[132,13],[133,14],[135,15],[94,16],[86,17],[93,18],[87,19],[90,20],[83,16],[85,21],[92,22],[84,23],[99,24],[128,25],[98,26],[119,27],[101,28],[120,29],[103,26],[121,26],[111,30],[104,31],[112,32],[118,33],[100,34],[117,35],[106,36],[130,37],[105,38],[107,39],[108,38],[109,40],[110,40],[113,41],[114,42],[115,43],[122,44],[124,45],[125,46],[126,47],[127,48],[116,26],[123,38],[137,49],[96,50],[97,51],[95,52]],"affectedFilesPendingEmit":[[99,19],[128,19],[119,19],[101,16],[120,19],[111,19],[104,19],[112,19],[100,19],[130,16],[105,19],[107,19],[108,19],[109,19],[110,19],[113,19],[114,19],[115,19],[122,19],[124,19],[125,19],[126,19],[127,19],[123,19]],"emitSignatures":[[99,"9e11b6e9f3e77f68ce3bb2377ae62e22ade61010c5c22edced2ccace2a91a016"],[100,"f61fb775a03257f39057c36a5e98d9eb89c7b109d6ac800d665663c31e66e2d4"],[101,"540e7e1f9b2b6991326631abb7858d93df2d5cc74fb39588226f0cc48f9675ef"],[104,"5063bf5807df8e429e588171d340458204431be0440c0630c94eb26fec5c93ea"],[105,"5ecd1db56e3414097a46fdc5005ebffc9c9be1c3453cc59b2293e846cbdb87a5"],107,[108,"2e1cfd3ec49a29ab6102b1739321fb774facc9684daaf6ec91a90b306c4e67a3"],[109,"84389b186d81b25ae22d80a0e22d2b213733cfe27a1e9012988c780166a6bfa2"],[110,"b032df53b780361744e111504121d7673638cbf3656618dbefe7b639c3ebf355"],[111,"c7847e69c0f0cac6afacf50d49342a65ff6d715c8b85560fdb259c7759140cf9"],[112,"05c79c57676e8f629882dc3947ff7f073ba73d902c9ac3fc31945373d3d2c8ad"],[115,"2871c24b62911c332d45f5b6ed9c2d468747d329b7d1251a78755d35011ec449"],[119,"6e5d750c4f37edcd56fcb6031d4a16cef7fb2fdff2d4b0a3f81fade0c4181903"],120,123,[124,"2a975a2560b7e6dbc169a223b3dd8b7dbe029727673e2f63f25ebc914ff0a3e9"],[125,"8a504b38e556772781cb971dc8c60029b7d74f51ca4a9992d9f4adc8d9d029a6"],[127,"07c73a5f93a94e7246a980f0a2feb8ad8ecf758bf5b834be661158f67826772c"],[128,"d5a0087418b779ed08c272149eb0a60f2280ea2f0b53a9001993b82cc923c247"],[130,"f2679080b084cba762e53cb7865d911bde1411f19f95ed074ddb1267cd33a3ec"]],"latestChangedDtsFile":"./dist/pages/SetupPage.d.ts","version":"5.9.3"} \ No newline at end of file +{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../node_modules/typescript/lib/lib.scripthost.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/typescript/lib/lib.es2022.full.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/react/index.d.ts","../../node_modules/@types/react/jsx-runtime.d.ts","../../node_modules/@remix-run/router/dist/history.d.ts","../../node_modules/@remix-run/router/dist/utils.d.ts","../../node_modules/@remix-run/router/dist/router.d.ts","../../node_modules/@remix-run/router/dist/index.d.ts","../../node_modules/react-router/dist/lib/context.d.ts","../../node_modules/react-router/dist/lib/components.d.ts","../../node_modules/react-router/dist/lib/hooks.d.ts","../../node_modules/react-router/dist/lib/deprecations.d.ts","../../node_modules/react-router/dist/index.d.ts","../../node_modules/react-router-dom/dist/dom.d.ts","../../node_modules/react-router-dom/dist/index.d.ts","./src/auth/storage.ts","./src/api/client.ts","./src/context/AuthContext.tsx","./src/components/AdminRoute.tsx","../../node_modules/lucide-react/dist/lucide-react.d.ts","./src/components/BrandLogo.tsx","./src/components/Layout.tsx","./src/pages/AdminAuditPage.tsx","./src/context/ToastContext.tsx","./src/pages/AdminBrandingPage.tsx","./src/pages/AdminOverviewPage.tsx","./src/pages/AdminSsoPage.tsx","./src/pages/AdminUsersPage.tsx","./src/components/CreateProjectModal.tsx","./src/components/OnboardingWizard.tsx","./src/pages/DashboardPage.tsx","./src/pages/ForgotPasswordPage.tsx","./src/pages/LoginPage.tsx","./src/utils/timezone.ts","./src/context/TimezoneContext.tsx","./src/components/TimeZoneSelect.tsx","./src/components/AddTimeBlockModal.tsx","./src/components/AvailabilitySolverModal.tsx","./src/components/ConfirmDialog.tsx","./src/pages/ProjectDetailPage.tsx","./src/utils/useTenantBranding.ts","./src/pages/PublicBookingPage.tsx","./src/pages/ReschedulePage.tsx","./src/pages/ResetPasswordPage.tsx","./src/pages/SetupPage.tsx","./src/App.tsx","../../node_modules/@types/react-dom/client.d.ts","./src/main.tsx","../../node_modules/vite/types/hmrPayload.d.ts","../../node_modules/vite/types/customEvent.d.ts","../../node_modules/vite/types/hot.d.ts","../../node_modules/vite/types/importGlob.d.ts","../../node_modules/vite/types/importMeta.d.ts","../../node_modules/vite/client.d.ts","./src/vite-env.d.ts","../../node_modules/@types/react-dom/index.d.ts"],"fileIdsList":[[69,70,71],[69,70],[69],[67],[64,65,66],[72],[67,72,77,78],[72,73,74,75,76],[67,72,73],[67,72],[72,74],[117],[113],[114],[115,116],[68,79,82,83,86,87,89,90,91,92,95,96,97,104,106,107,108,109],[68,80],[68],[67,68,81,88,98,99,100],[68,79,82],[67,68,81,84,99],[67,68,81,84,88],[68,79,82,84,85],[67,68,81,82,84,88],[68,99],[67,68,80,81],[67,68,98],[67,68,84],[67,68,79,82,88,99,110,111,118],[67,68,81],[67,68,80,81,88],[67,68,81,88],[67,68,79,81,82,84,88,93,94],[67,68,79,81,85],[67,68,79,81,82,84,85,88],[67,68,79,81,82,84,88,98,99,100,101,102,103],[67,68,79,81,84,85,88,98,99,100,105],[67,68,79,81,84,85,88,98,99,100,103,105],[67,68,79,81,85,88],[67,68,79,81,82,85,88],[118]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3cbad9a1ba4453443026ed38e4b8be018abb26565fa7c944376463ad9df07c41","impliedFormat":1},{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"035312d4945d13efa134ae482f6dc56a1a9346f7ac3be7ccbad5741058ce87f3","affectsGlobalScope":true,"impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"5af7c35a9c5c4760fd084fedb6ba4c7059ac9598b410093e5312ac10616bf17b","impliedFormat":1},{"version":"628617cf218aee4f080a5e54edc412f3fbfb4eab94cc16f327da8d357b550230","impliedFormat":1},{"version":"3c8c1edb7ed8a842cb14d9f2ba6863183168a9fc8d6aa15dec221ebf8b946393","impliedFormat":1},{"version":"0a6e1a3f199d6cc3df0410b4df05a914987b1e152c4beacfd0c5142e15302cac","impliedFormat":1},{"version":"ec3c1376b4f34b271b1815674546fe09a2f449b0773afd381bbce7eb2f96a731","impliedFormat":1},{"version":"c2a262a3157e868d279327daf428dd629bd485f825800c8e62b001e6c879aff6","impliedFormat":1},{"version":"f7e84f314f9276b44b707289446303db8ef34a6c2c6d6b08d03a76e168367072","impliedFormat":1},{"version":"2b493706eb7879d42a8e8009379292b59827d612ab3a275bc476f87e60259c79","impliedFormat":1},{"version":"5542628b04d7bd4e0cd4871b6791b3b936a917ac6b819dcd20487f040acb01f1","impliedFormat":1},{"version":"f07b335f87cfac999fc1da00dfbc616837ced55be67bcaa41524d475b7394554","impliedFormat":1},{"version":"938326adb4731184e14e17fc57fca2a3b69c337ef8d6c00c65d73472fe8feca4","affectsGlobalScope":true,"impliedFormat":1},{"version":"09403f4e6aae0cd3cbf29afdfb4a4c5f21f054b0cce4489216aeb4c44af489ae","signature":"b87fb61f685f0cbe9fd4ad2fc8ae2163d43d2e35392a05dd25dc1596b288df4f"},{"version":"d0c698a302a3f2e877880606e9cf9b4638c6b0173fa8af673f3cd25d60531ad4","signature":"2d07beed67fe9c6b6a647ec8faccc9ec078369b713c0b0297f5c901d11b352f8"},{"version":"972924652a0c64b2744217102d7e85c59942492dd2f107fa947d1c9e641c5ac3","signature":"f61fb775a03257f39057c36a5e98d9eb89c7b109d6ac800d665663c31e66e2d4"},{"version":"3f16d0ced45925afa33da11fdd8e9e175744ffb0bf5f980ab3ab5fb2d00fae44","signature":"540e7e1f9b2b6991326631abb7858d93df2d5cc74fb39588226f0cc48f9675ef"},{"version":"458d8d70f3729f673fff591021c883c593e96e00b324b187466fe8ec3e7eb658","impliedFormat":1},{"version":"7c51786a5f830c629b0356b177cdcdf1124c07f7901a6cb7a8a1989eeda1e4f9","signature":"df28c777b805dfa5b9021acd4cfacdebe7d3b7c494c9035f6a6c4cfc20244c4b"},{"version":"fe30832df43aba1ef5b4e781df0d0b57528d965fd323f7ec195a44c6fb898dc8","signature":"5063bf5807df8e429e588171d340458204431be0440c0630c94eb26fec5c93ea"},{"version":"e31e30bf3041cd54293c71c4e2a2cf129b62a225747370f05ed13ed886f11602","signature":"5ecd1db56e3414097a46fdc5005ebffc9c9be1c3453cc59b2293e846cbdb87a5"},{"version":"270014bc409a9c9f58e877a0c52999e445f3dfda7ebdbe509436018792c4f9c3","signature":"44f4c01cab67bf0cf8dc7a77083bb3b8471d270818ca65d2cefe4fdf3286fdb7"},{"version":"b266ed6c2f8e2443a03facfd23fb5196fb39cc336a93dd6014023fd40d7ea564","signature":"847ee05c51b248c4d6c642e5ad35ffe33ef2cfe496948e2d1558bd98800c5a44"},{"version":"5f2caf0504a350c4c7602ed61f1519d09acf4e4c70f0bbae49b1c9dd98837c51","signature":"2e1cfd3ec49a29ab6102b1739321fb774facc9684daaf6ec91a90b306c4e67a3"},{"version":"ad442aa7c89f9a104f590471e65ff2059a54f2ecbb618d8c7d78d4a899ccba04","signature":"84389b186d81b25ae22d80a0e22d2b213733cfe27a1e9012988c780166a6bfa2"},{"version":"b8fd41de8a6a6396637503e269d76dc953793679ffa92a5d30c5863b6247aa5d","signature":"b032df53b780361744e111504121d7673638cbf3656618dbefe7b639c3ebf355"},{"version":"d002175dd5dada8a2280134b640adb7050e7f3fc44725b37f91eeab20433c365","signature":"c7847e69c0f0cac6afacf50d49342a65ff6d715c8b85560fdb259c7759140cf9"},{"version":"21063befbd77bab5591dda851075065d6bda59ffc5830eb0c3418f26083d8f4f","signature":"05c79c57676e8f629882dc3947ff7f073ba73d902c9ac3fc31945373d3d2c8ad"},{"version":"d4ad8c1fe540c2296ee37f09ecf12fd4c9fad356e6b5a9894a799478285abd3f","signature":"1a489562f07c774f00e05265a62fdbe1da73be8dd368ba6400f831451b31a119"},{"version":"43632cb35469a7b104a1e33ea620ada10de86c04ab01e34d6bba1b6bb8295821","signature":"46ed9aeb864f2fde94b5c574e49872f4eff722c43d2351ca9c9b03961571badb"},{"version":"3b81f372ddaa7e097831a58fe9c6834390742a2b8c8a0bc640b16d1eed82b6e1","signature":"2871c24b62911c332d45f5b6ed9c2d468747d329b7d1251a78755d35011ec449"},{"version":"44caf1cbf0f944706d330f4cb582ad0a9cccfae1ecfd25ac4a38a063a0051b89","signature":"db22275efcb4b8ef4b205239321be50a9517b883f5b6e3c5a47f0b87406c4039"},{"version":"24bea49481be1f35b82cc39db08a269f17f0f797d845c4df2f1a022473de0a5a","signature":"1533e6283e30a00a9faee26f881e5d54e77e3fdf74c782c5e8a695b6ece39786"},{"version":"2631c97e1601b60b9b753bcbf53e43b58165c5d17421f90e86900d2c67f121aa","signature":"a2254c56e5e914a9214e6bdc5be66a856c520a6f2825d3db7bb821e6eb339a52"},{"version":"328f65210caef5e847058a3702eb24ffd40807f3926aecd5882608af2abcf66c","signature":"b72eadf8b09bd2f43af396d5bae1130abba3e4de4e91ac085b33ca245924420a"},{"version":"d7cffb96efe2afe1ee0a3ce0737a1973a59fe6a0adfcd9b9a14bfecd34d655f3","signature":"260d637ad8b9dc008f9c9a999e56203c1aa6ce47c128910feb1aaa918785192c"},{"version":"5d52b396f7222c48fe81349d640f0586a23f0404f55229931c7f85b5fa228b61","signature":"d7158edb0d5e4094c1486f1ac86645a0ff146c1a24313bd12cfde7857410edad"},{"version":"2e988e762802b38ed7e3e21d85ae09f6113cc05b325f5aaa10b6c08274d74693","signature":"a70849fbf7c997575dc7c107c8967bb79e29181b387307ffe776a3ffd842a2c7"},{"version":"0ea376bc3e3356979a882c28eda9817d636a372928734d6ae4c9b49a19f47d6c","signature":"e642ecd6578b56ce5e64bf06425dc285a2a1408aff4622247579b5a728f48632"},{"version":"c8b1cc19b425a6b9a4862b2cb2f2fd9f136932aa536125492b6f6f6ecab465c5","signature":"2a975a2560b7e6dbc169a223b3dd8b7dbe029727673e2f63f25ebc914ff0a3e9"},{"version":"56e8a37669816e45588406353698087f0728333653eaa450775fafa28215e5bb","signature":"8a504b38e556772781cb971dc8c60029b7d74f51ca4a9992d9f4adc8d9d029a6"},{"version":"967f7e56aaa5b84bb5678b964c134834035c9a6dec6da5056b99ababbb75644c","signature":"1c01f7f4a3f6f1a9d9f7cf5c6d4ac980963a877ad59070d451c7fd7c41f88823"},{"version":"28e74b473af5bd4900b0793a80e93ab49b33546ca9e0fbe74a37ea3e58635989","signature":"07c73a5f93a94e7246a980f0a2feb8ad8ecf758bf5b834be661158f67826772c"},{"version":"29483491a6c202ae20d4aa94f298e5e1b8e255d827d1c70c00719542f5c73eef","signature":"d5a0087418b779ed08c272149eb0a60f2280ea2f0b53a9001993b82cc923c247"},{"version":"05321b823dd3781d0b6aac8700bfdc0c9181d56479fe52ba6a40c9196fd661a8","impliedFormat":1},{"version":"5b1adafff6e046b3edfad188d1cd9fda8c2e27ab7b72057bcbf1caeaa6169d73","signature":"f2679080b084cba762e53cb7865d911bde1411f19f95ed074ddb1267cd33a3ec"},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"19efad8495a7a6b064483fccd1d2b427403dd84e67819f86d1c6ee3d7abf749c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1eef826bc4a19de22155487984e345a34c9cd511dd1170edc7a447cb8231dd4a","affectsGlobalScope":true,"impliedFormat":99},"65996936fbb042915f7b74a200fcdde7e410f32a669b1ab9597cfaa4b0faddb5",{"version":"17ed71200119e86ccef2d96b73b02ce8854b76ad6bd21b5021d4269bec527b5f","impliedFormat":1}],"root":[[80,83],[85,110],112,119],"options":{"composite":true,"declaration":true,"esModuleInterop":true,"jsx":4,"module":99,"noUncheckedIndexedAccess":true,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[72,1],[71,2],[70,3],[111,4],[120,4],[67,5],[68,4],[84,4],[78,6],[79,7],[77,8],[74,9],[73,10],[76,11],[75,9],[118,12],[114,13],[115,14],[117,15],[110,16],[81,17],[80,18],[101,19],[83,20],[102,21],[85,18],[103,18],[93,22],[86,23],[94,24],[100,25],[82,26],[99,27],[88,28],[112,29],[87,30],[89,31],[90,30],[91,32],[92,32],[95,33],[96,34],[97,35],[104,36],[106,37],[107,38],[108,39],[109,40],[98,18],[105,30],[119,41]],"semanticDiagnosticsPerFile":[[82,[{"start":268,"length":22,"messageText":"Output file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/dist/index.d.ts' has not been built from source file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/src/index.ts'.","category":1,"code":6305}]],[87,[{"start":119,"length":22,"messageText":"Output file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/dist/index.d.ts' has not been built from source file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/src/index.ts'.","category":1,"code":6305}]],[89,[{"start":143,"length":22,"messageText":"Output file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/dist/index.d.ts' has not been built from source file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/src/index.ts'.","category":1,"code":6305}]],[90,[{"start":122,"length":22,"messageText":"Output file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/dist/index.d.ts' has not been built from source file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/src/index.ts'.","category":1,"code":6305},{"start":2091,"length":3,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | number | symbol' is not assignable to type 'Key | null | undefined'.","category":1,"code":2322,"next":[{"messageText":"Type 'symbol' is not assignable to type 'Key | null | undefined'.","category":1,"code":2322}]},"relatedInformation":[{"file":"../../node_modules/@types/react/index.d.ts","start":8384,"length":3,"messageText":"The expected type comes from property 'key' which is declared here on type 'DetailedHTMLProps, HTMLLIElement>'","category":3,"code":6500}]}]],[91,[{"start":182,"length":22,"messageText":"Output file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/dist/index.d.ts' has not been built from source file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/src/index.ts'.","category":1,"code":6305},{"start":3775,"length":4,"messageText":"Parameter 'prev' implicitly has an 'any' type.","category":1,"code":7006},{"start":4058,"length":4,"messageText":"Parameter 'prev' implicitly has an 'any' type.","category":1,"code":7006},{"start":4379,"length":4,"messageText":"Parameter 'prev' implicitly has an 'any' type.","category":1,"code":7006},{"start":4713,"length":4,"messageText":"Parameter 'prev' implicitly has an 'any' type.","category":1,"code":7006},{"start":5041,"length":4,"messageText":"Parameter 'prev' implicitly has an 'any' type.","category":1,"code":7006},{"start":5336,"length":4,"messageText":"Parameter 'prev' implicitly has an 'any' type.","category":1,"code":7006},{"start":6058,"length":4,"messageText":"Parameter 'prev' implicitly has an 'any' type.","category":1,"code":7006},{"start":6362,"length":4,"messageText":"Parameter 'prev' implicitly has an 'any' type.","category":1,"code":7006},{"start":6779,"length":4,"messageText":"Parameter 'prev' implicitly has an 'any' type.","category":1,"code":7006},{"start":7061,"length":4,"messageText":"Parameter 'prev' implicitly has an 'any' type.","category":1,"code":7006},{"start":7298,"length":4,"messageText":"Parameter 'prev' implicitly has an 'any' type.","category":1,"code":7006},{"start":7538,"length":4,"messageText":"Parameter 'prev' implicitly has an 'any' type.","category":1,"code":7006},{"start":7821,"length":4,"messageText":"Parameter 'prev' implicitly has an 'any' type.","category":1,"code":7006},{"start":8159,"length":4,"messageText":"Parameter 'prev' implicitly has an 'any' type.","category":1,"code":7006}]],[92,[{"start":215,"length":22,"messageText":"Output file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/dist/index.d.ts' has not been built from source file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/src/index.ts'.","category":1,"code":6305},{"start":1898,"length":4,"messageText":"Parameter 'user' implicitly has an 'any' type.","category":1,"code":7006},{"start":1994,"length":4,"messageText":"Parameter 'user' implicitly has an 'any' type.","category":1,"code":7006}]],[93,[{"start":155,"length":22,"messageText":"Output file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/dist/index.d.ts' has not been built from source file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/src/index.ts'.","category":1,"code":6305}]],[94,[{"start":233,"length":22,"messageText":"Output file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/dist/index.d.ts' has not been built from source file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/src/index.ts'.","category":1,"code":6305}]],[95,[{"start":449,"length":22,"messageText":"Output file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/dist/index.d.ts' has not been built from source file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/src/index.ts'.","category":1,"code":6305}]],[97,[{"start":245,"length":22,"messageText":"Output file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/dist/index.d.ts' has not been built from source file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/src/index.ts'.","category":1,"code":6305}]],[101,[{"start":257,"length":22,"messageText":"Output file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/dist/index.d.ts' has not been built from source file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/src/index.ts'.","category":1,"code":6305}]],[102,[{"start":215,"length":22,"messageText":"Output file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/dist/index.d.ts' has not been built from source file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/src/index.ts'.","category":1,"code":6305},{"start":4179,"length":10,"messageText":"Parameter 'suggestion' implicitly has an 'any' type.","category":1,"code":7006}]],[104,[{"start":433,"length":22,"messageText":"Output file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/dist/index.d.ts' has not been built from source file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/src/index.ts'.","category":1,"code":6305},{"start":6923,"length":5,"messageText":"Parameter 'block' implicitly has an 'any' type.","category":1,"code":7006},{"start":6961,"length":7,"messageText":"Parameter 'booking' implicitly has an 'any' type.","category":1,"code":7006},{"start":7446,"length":4,"messageText":"Parameter 'left' implicitly has an 'any' type.","category":1,"code":7006},{"start":7452,"length":5,"messageText":"Parameter 'right' implicitly has an 'any' type.","category":1,"code":7006},{"start":13741,"length":8,"messageText":"Parameter 'engineer' implicitly has an 'any' type.","category":1,"code":7006},{"start":21035,"length":5,"messageText":"Parameter 'block' implicitly has an 'any' type.","category":1,"code":7006},{"start":21109,"length":7,"messageText":"Parameter 'booking' implicitly has an 'any' type.","category":1,"code":7006},{"start":21541,"length":8,"messageText":"Parameter 'engineer' implicitly has an 'any' type.","category":1,"code":7006}]],[105,[{"start":112,"length":22,"messageText":"Output file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/dist/index.d.ts' has not been built from source file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/src/index.ts'.","category":1,"code":6305}]],[106,[{"start":385,"length":22,"messageText":"Output file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/dist/index.d.ts' has not been built from source file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/src/index.ts'.","category":1,"code":6305},{"start":5147,"length":4,"messageText":"Parameter 'slot' implicitly has an 'any' type.","category":1,"code":7006},{"start":5418,"length":4,"messageText":"Parameter 'slot' implicitly has an 'any' type.","category":1,"code":7006},{"start":13451,"length":8,"messageText":"Parameter 'engineer' implicitly has an 'any' type.","category":1,"code":7006},{"start":15439,"length":8,"messageText":"Parameter 'engineer' implicitly has an 'any' type.","category":1,"code":7006}]],[107,[{"start":289,"length":22,"messageText":"Output file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/dist/index.d.ts' has not been built from source file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/src/index.ts'.","category":1,"code":6305},{"start":9184,"length":8,"messageText":"Parameter 'engineer' implicitly has an 'any' type.","category":1,"code":7006}]],[109,[{"start":192,"length":22,"messageText":"Output file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/dist/index.d.ts' has not been built from source file '/home/runner/work/OpenCalendar/OpenCalendar/packages/shared/src/index.ts'.","category":1,"code":6305}]]],"latestChangedDtsFile":"./dist/utils/useTenantBranding.d.ts","version":"5.9.3"} \ No newline at end of file From 2d0a9d1b08f8efcdadf2959b0b0173a7684b56ec Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Apr 2026 06:08:01 +0000 Subject: [PATCH 3/6] feat: accessibility improvements - focus trapping, ARIA live regions, keyboard navigation, state indicators Agent-Logs-Url: https://github.com/OpenCalendarApp/OpenCalendar/sessions/dd4cadc4-405a-4005-b29f-579e9a7e90b8 Co-authored-by: WFord26 <117926366+WFord26@users.noreply.github.com> --- .../src/components/AddTimeBlockModal.tsx | 28 +++- .../components/AvailabilitySolverModal.tsx | 21 ++- .../client/src/components/ConfirmDialog.tsx | 23 +++- .../src/components/CreateProjectModal.tsx | 21 ++- packages/client/src/context/ToastContext.tsx | 54 ++++++-- .../client/src/pages/PublicBookingPage.tsx | 124 +++++++++--------- packages/client/src/styles/global.css | 108 +++++++++++++++ packages/client/src/utils/useFocusTrap.ts | 73 +++++++++++ packages/client/tsconfig.tsbuildinfo | 2 +- 9 files changed, 365 insertions(+), 89 deletions(-) create mode 100644 packages/client/src/utils/useFocusTrap.ts diff --git a/packages/client/src/components/AddTimeBlockModal.tsx b/packages/client/src/components/AddTimeBlockModal.tsx index 9fd7b06..d5e284e 100644 --- a/packages/client/src/components/AddTimeBlockModal.tsx +++ b/packages/client/src/components/AddTimeBlockModal.tsx @@ -15,6 +15,7 @@ import { TimeZoneSelect } from './TimeZoneSelect.js'; import { useTimezone } from '../context/TimezoneContext.js'; import { useToast } from '../context/ToastContext.js'; import { getCurrentDateKeyInTimeZone, toIsoStringInTimeZone } from '../utils/timezone.js'; +import { useFocusTrap } from '../utils/useFocusTrap.js'; interface AddTimeBlockModalProps { project: ProjectDetail; @@ -147,6 +148,7 @@ export function AddTimeBlockModal({ }: AddTimeBlockModalProps): JSX.Element { const { showToast } = useToast(); const { timeZone } = useTimezone(); + const containerRef = useFocusTrap(); const defaultDate = useMemo(() => getCurrentDateKeyInTimeZone(timeZone), [timeZone]); const [defaultYearPart, defaultMonthPart] = defaultDate.split('-'); const defaultYear = Number(defaultYearPart || 1970); @@ -217,6 +219,17 @@ export function AddTimeBlockModal({ })(); }, [isPm]); + // Close modal on Escape + useEffect(() => { + function handleEscape(event: KeyboardEvent): void { + if (event.key === 'Escape' && !pending) { + onClose(); + } + } + document.addEventListener('keydown', handleEscape); + return () => document.removeEventListener('keydown', handleEscape); + }, [onClose, pending]); + function toggleEngineer(engineerId: number): void { setSelectedEngineerIds((prev) => prev.includes(engineerId) @@ -372,9 +385,9 @@ export function AddTimeBlockModal({ } return ( -
-
-

{isPm ? 'Add Time Blocks' : 'Add Personal Time Block'}

+
+
+

{isPm ? 'Add Time Blocks' : 'Add Personal Time Block'}

void handleSubmit(event)}>
@@ -402,15 +415,22 @@ export function AddTimeBlockModal({ ))}
-
+
{calendarDayCells.map((cell) => { const isSelected = selectedDates.includes(cell.dateKey); + const label = [ + formatDateLabel(cell.dateKey), + cell.isToday ? '(today)' : '', + isSelected ? '(selected)' : '' + ].filter(Boolean).join(' '); return ( diff --git a/packages/client/src/components/AvailabilitySolverModal.tsx b/packages/client/src/components/AvailabilitySolverModal.tsx index 228a27c..430b856 100644 --- a/packages/client/src/components/AvailabilitySolverModal.tsx +++ b/packages/client/src/components/AvailabilitySolverModal.tsx @@ -9,6 +9,7 @@ import type { import { apiFetch } from '../api/client.js'; import { useTimezone } from '../context/TimezoneContext.js'; +import { useFocusTrap } from '../utils/useFocusTrap.js'; interface AvailabilitySolverModalProps { project: ProjectDetail; @@ -22,11 +23,23 @@ export function AvailabilitySolverModal({ onCreateBlock }: AvailabilitySolverModalProps): JSX.Element { const { timeZone } = useTimezone(); + const containerRef = useFocusTrap(); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [data, setData] = useState(null); + // Close modal on Escape + useEffect(() => { + function handleEscape(event: KeyboardEvent): void { + if (event.key === 'Escape') { + onClose(); + } + } + document.addEventListener('keydown', handleEscape); + return () => document.removeEventListener('keydown', handleEscape); + }, [onClose]); + useEffect(() => { let cancelled = false; @@ -86,11 +99,11 @@ export function AvailabilitySolverModal({ } return ( -
-
+
+
- -

Find a Time for Everyone

+

diff --git a/packages/client/src/components/ConfirmDialog.tsx b/packages/client/src/components/ConfirmDialog.tsx index a7b8925..3de7601 100644 --- a/packages/client/src/components/ConfirmDialog.tsx +++ b/packages/client/src/components/ConfirmDialog.tsx @@ -1,3 +1,7 @@ +import { useEffect } from 'react'; + +import { useFocusTrap } from '../utils/useFocusTrap.js'; + interface ConfirmDialogProps { title: string; message: string; @@ -19,10 +23,23 @@ export function ConfirmDialog({ onConfirm, onCancel }: ConfirmDialogProps): JSX.Element { + const containerRef = useFocusTrap(); + + // Close dialog on Escape + useEffect(() => { + function handleEscape(event: KeyboardEvent): void { + if (event.key === 'Escape' && !pending) { + onCancel(); + } + } + document.addEventListener('keydown', handleEscape); + return () => document.removeEventListener('keydown', handleEscape); + }, [onCancel, pending]); + return ( -

-
-

{title}

+
+
+

{title}

{message}

+
+ ); + } + return ( {children} -
- {toasts.map((toast) => ( -
- - {toast.tone === 'success' ? : null} - {toast.tone === 'error' ? : null} - {toast.tone === 'info' ? : null} - {toast.message} - - -
- ))} + {/* Error toasts use role="alert" (assertive) so screen readers announce them immediately */} +
+ {errorToasts.map(renderToast)} +
+ {/* Success / info toasts use aria-live="polite" to avoid interrupting the user */} +
+ {nonErrorToasts.map(renderToast)}
); diff --git a/packages/client/src/pages/PublicBookingPage.tsx b/packages/client/src/pages/PublicBookingPage.tsx index 0c899f4..444c257 100644 --- a/packages/client/src/pages/PublicBookingPage.tsx +++ b/packages/client/src/pages/PublicBookingPage.tsx @@ -397,34 +397,38 @@ export function PublicBookingPage(): JSX.Element { {slotsByDay.map((group) => (

{group.dayLabel}

-
    - {group.slots.map((slot) => ( -
  • - -
  • - ))} +
      + {group.slots.map((slot) => { + const engineerNames = slot.engineers.length > 0 + ? slot.engineers.map((engineer) => `${engineer.first_name} ${engineer.last_name}`).join(', ') + : 'Unassigned'; + const slotAriaLabel = `${formatSlotLabel(slot, timeZone)}, ${slot.remaining_slots} remaining, Engineers: ${engineerNames}`; + return ( +
    • + +
    • + ); + })}
))} @@ -439,43 +443,45 @@ export function PublicBookingPage(): JSX.Element { {fullSlotsByDay.map((group) => (

{group.dayLabel}

-
    - {group.slots.map((slot) => ( -
  • - -
  • - ))} +
      + {group.slots.map((slot) => { + const engineerNames = slot.engineers.length > 0 + ? slot.engineers.map((engineer) => `${engineer.first_name} ${engineer.last_name}`).join(', ') + : 'Unassigned'; + const slotAriaLabel = `${formatSlotLabel(slot, timeZone)}, Full — join waitlist. ${slot.waitlist_count} on waitlist. Engineers: ${engineerNames}`; + return ( +
    • + +
    • + ); + })}
))}
) : null} - {error ?

{error}

: null} + {error ?

{error}

: null}
-
+
{calendarDayCells.map((cell) => { const isSelected = selectedDates.includes(cell.dateKey); const labelParts = [formatDateLabel(cell.dateKey)]; if (cell.isToday) labelParts.push('Today'); + if (!cell.inCurrentMonth) labelParts.push('Outside current month'); const label = labelParts.join(', '); return (