Repository: temporalio/ui
Pull request #418 (2022-04-12 14:26:51)

Bump svelte/kit to 1.0.0-next.311 and rename layout resets
## What was changed
Upgraded @svelte/kit to 1.0.0-next.311 and @sveltejs/adapter-static to 1.0.0-next.29. Due to this upgrade, needed to rename layout resets to named layouts.

## Why?
This upgrade fixes the issue with svelte not adding navigation history correctly on <a>, which caused the wrong navigation behavior on back button.

cloudflare-pages[bot]: ## Deploying with &nbsp;<a href="https://pages.dev"><img alt="Cloudflare Pages" src="https://user-images.githubusercontent.com/23264/106598434-9e719e00-654f-11eb-9e59-6167043cfa01.png" width="16"></a> &nbsp;Cloudflare Pages

<table><tr><td><strong>Latest commit:</strong> </td><td>
<code>99972b4</code>
</td></tr>
<tr><td><strong>Status:</strong></td><td>⚡️&nbsp; Build in progress...</td></tr>
</table>

[View logs](https://dash.cloudflare.com/?to=/:account/pages/view/temporal-pizza/05c62172-26c1-4cde-a9bd-17669382022c)


Patch:
diff --git a/package-lock.json b/package-lock.json
index dcf91c5f..179a7974 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -22,8 +22,8 @@
       "devDependencies": {
         "@crownframework/svelte-error-boundary": "^1.0.3",
         "@grpc/grpc-js": "^1.3.7",
-        "@sveltejs/adapter-static": "^1.0.0-next.28",
-        "@sveltejs/kit": "^1.0.0-next.288",
+        "@sveltejs/adapter-static": "^1.0.0-next.29",
+        "@sveltejs/kit": "^1.0.0-next.311",
         "@temporalio/proto": "^0.3.1",
         "@types/base-64": "^1.0.0",
         "@types/jest": "^27.0.1",
@@ -1303,23 +1303,23 @@
       }
     },
     "node_modules/@sveltejs/adapter-static": {
-      "version": "1.0.0-next.28",
-      "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.28.tgz",
-      "integrity": "sha512-c4xLyeSwnbGQxe4f1SLpHTbxZDm3TEr43scR3tOlVgQN+mnAL9aDdl3nTtdzWmrUDmDEmY4GriAwLyFLZuINLw==",
+      "version": "1.0.0-next.29",
+      "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.29.tgz",
+      "integrity": "sha512-0hjGnfT3BRyoHnzJ2w0/xL+xICRpKneDTm45ZzggiRrc0r71WJfF6toGeg8N4QUQnj8EJ3Itm453gsS1kt7VUQ==",
       "dev": true,
       "dependencies": {
         "tiny-glob": "^0.2.9"
       }
     },
     "node_modules/@sveltejs/kit": {
-      "version": "1.0.0-next.288",
-      "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.288.tgz",
-      "integrity": "sha512-6ky4CUFNGKoU1QV+fY2LOIB7atHdUCIMRx3pX21B2g9yZzQzkot0zHBrMMBSKF0/4Wx19PLEWrlGxlhakYmi8Q==",
+      "version": "1.0.0-next.311",
+      "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.311.tgz",
+      "integrity": "sha512-OkRIi0XBXcs16J+H+6fgOeFYxKu05gamY08KHAQ5cohjymUODGWIwaIfwAuNkZAcEEr8Vh2ejp4UcaxNzD53lQ==",
       "dev": true,
       "dependencies": {
         "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32",
         "sade": "^1.7.4",
-        "vite": "^2.8.0"
+        "vite": "^2.9.0"
       },
       "bin": {
         "svelte-kit": "svelte-kit.js"
@@ -3830,6 +3830,22 @@
         "esbuild-windows-arm64": "0.13.15"
       }
     },
+    "node_modules/esbuild-android-64": {
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz",
+      "integrity": "sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
     "node_modules/esbuild-android-arm64": {
       "version": "0.13.15",
       "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz",
@@ -4190,9 +4206,9 @@
       ]
     },
     "node_modules/esbuild-linux-riscv64": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.23.tgz",
-      "integrity": "sha512-fbL3ggK2wY0D8I5raPIMPhpCvODFE+Bhb5QGtNP3r5aUsRR6TQV+ZBXIaw84iyvKC8vlXiA4fWLGhghAd/h/Zg==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz",
+      "integrity": "sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==",
       "cpu": [
         "riscv64"
       ],
@@ -4206,9 +4222,9 @@
       }
     },
     "node_modules/esbuild-linux-s390x": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.23.tgz",
-      "integrity": "sha512-GHMDCyfy7+FaNSO8RJ8KCFsnax8fLUsOrj9q5Gi2JmZMY0Zhp75keb5abTFCq2/Oy6KVcT0Dcbyo/bFb4rIFJA==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz",
+      "integrity": "sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==",
       "cpu": [
         "s390x"
       ],
@@ -8284,9 +8300,19 @@
       }
     },
     "node_modules/postcss": {
-      "version": "8.4.7",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.7.tgz",
-      "integrity": "sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A==",
+      "version": "8.4.12",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz",
+      "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==",
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/postcss"
+        }
+      ],
       "dependencies": {
         "nanoid": "^3.3.1",
         "picocolors": "^1.0.0",
@@ -8294,10 +8320,6 @@
       },
       "engines": {
         "node": "^10 || ^12 || >=14"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/postcss/"
       }
     },
     "node_modules/postcss-calc": {
@@ -11356,13 +11378,13 @@
       }
     },
     "node_modules/vite": {
-      "version": "2.8.5",
-      "resolved": "https://registry.npmjs.org/vite/-/vite-2.8.5.tgz",
-      "integrity": "sha512-C/7EGNa1ugWejol6nOcd/0d8PR70Nzd+XXwsPbnNOfzZw0NN2xyXfmw/GNDHgr5fcaTSO4gjxCJCrwNhQUMhmA==",
+      "version": "2.9.1",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.1.tgz",
+      "integrity": "sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==",
       "dev": true,
       "dependencies": {
-        "esbuild": "^0.14.14",
-        "postcss": "^8.4.6",
+        "esbuild": "^0.14.27",
+        "postcss": "^8.4.12",
         "resolve": "^1.22.0",
         "rollup": "^2.59.0"
       },
@@ -11393,9 +11415,9 @@
       }
     },
     "node_modules/vite/node_modules/esbuild": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.23.tgz",
-      "integrity": "sha512-XjnIcZ9KB6lfonCa+jRguXyRYcldmkyZ99ieDksqW/C8bnyEX299yA4QH2XcgijCgaddEZePPTgvx/2imsq7Ig==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.36.tgz",
+      "integrity": "sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==",
       "dev": true,
       "hasInstallScript": true,
       "bin": {
@@ -11405,31 +11427,32 @@
         "node": ">=12"
       },
       "optionalDependencies": {
-        "esbuild-android-arm64": "0.14.23",
-        "esbuild-darwin-64": "0.14.23",
-        "esbuild-darwin-arm64": "0.14.23",
-        "esbuild-freebsd-64": "0.14.23",
-        "esbuild-freebsd-arm64": "0.14.23",
-        "esbuild-linux-32": "0.14.23",
-        "esbuild-linux-64": "0.14.23",
-        "esbuild-linux-arm": "0.14.23",
-        "esbuild-linux-arm64": "0.14.23",
-        "esbuild-linux-mips64le": "0.14.23",
-        "esbuild-linux-ppc64le": "0.14.23",
-        "esbuild-linux-riscv64": "0.14.23",
-        "esbuild-linux-s390x": "0.14.23",
-        "esbuild-netbsd-64": "0.14.23",
-        "esbuild-openbsd-64": "0.14.23",
-        "esbuild-sunos-64": "0.14.23",
-        "esbuild-windows-32": "0.14.23",
-        "esbuild-windows-64": "0.14.23",
-        "esbuild-windows-arm64": "0.14.23"
+        "esbuild-android-64": "0.14.36",
+        "esbuild-android-arm64": "0.14.36",
+        "esbuild-darwin-64": "0.14.36",
+        "esbuild-darwin-arm64": "0.14.36",
+        "esbuild-freebsd-64": "0.14.36",
+        "esbuild-freebsd-arm64": "0.14.36",
+        "esbuild-linux-32": "0.14.36",
+        "esbuild-linux-64": "0.14.36",
+        "esbuild-linux-arm": "0.14.36",
+        "esbuild-linux-arm64": "0.14.36",
+        "esbuild-linux-mips64le": "0.14.36",
+        "esbuild-linux-ppc64le": "0.14.36",
+        "esbuild-linux-riscv64": "0.14.36",
+        "esbuild-linux-s390x": "0.14.36",
+        "esbuild-netbsd-64": "0.14.36",
+        "esbuild-openbsd-64": "0.14.36",
+        "esbuild-sunos-64": "0.14.36",
+        "esbuild-windows-32": "0.14.36",
+        "esbuild-windows-64": "0.14.36",
+        "esbuild-windows-arm64": "0.14.36"
       }
     },
     "node_modules/vite/node_modules/esbuild-android-arm64": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.23.tgz",
-      "integrity": "sha512-k9sXem++mINrZty1v4FVt6nC5BQCFG4K2geCIUUqHNlTdFnuvcqsY7prcKZLFhqVC1rbcJAr9VSUGFL/vD4vsw==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz",
+      "integrity": "sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==",
       "cpu": [
         "arm64"
       ],
@@ -11443,9 +11466,9 @@
       }
     },
     "node_modules/vite/node_modules/esbuild-darwin-64": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.23.tgz",
-      "integrity": "sha512-lB0XRbtOYYL1tLcYw8BoBaYsFYiR48RPrA0KfA/7RFTr4MV7Bwy/J4+7nLsVnv9FGuQummM3uJ93J3ptaTqFug==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz",
+      "integrity": "sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==",
       "cpu": [
         "x64"
       ],
@@ -11459,9 +11482,9 @@
       }
     },
     "node_modules/vite/node_modules/esbuild-darwin-arm64": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.23.tgz",
-      "integrity": "sha512-yat73Z/uJ5tRcfRiI4CCTv0FSnwErm3BJQeZAh+1tIP0TUNh6o+mXg338Zl5EKChD+YGp6PN+Dbhs7qa34RxSw==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz",
+      "integrity": "sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==",
       "cpu": [
         "arm64"
       ],
@@ -11475,9 +11498,9 @@
       }
     },
     "node_modules/vite/node_modules/esbuild-freebsd-64": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.23.tgz",
-      "integrity": "sha512-/1xiTjoLuQ+LlbfjJdKkX45qK/M7ARrbLmyf7x3JhyQGMjcxRYVR6Dw81uH3qlMHwT4cfLW4aEVBhP1aNV7VsA==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz",
+      "integrity": "sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==",
       "cpu": [
         "x64"
       ],
@@ -11491,9 +11514,9 @@
       }
     },
     "node_modules/vite/node_modules/esbuild-freebsd-arm64": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.23.tgz",
-      "integrity": "sha512-uyPqBU/Zcp6yEAZS4LKj5jEE0q2s4HmlMBIPzbW6cTunZ8cyvjG6YWpIZXb1KK3KTJDe62ltCrk3VzmWHp+iLg==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz",
+      "integrity": "sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==",
       "cpu": [
         "arm64"
       ],
@@ -11507,9 +11530,9 @@
       }
     },
     "node_modules/vite/node_modules/esbuild-linux-32": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.23.tgz",
-      "integrity": "sha512-37R/WMkQyUfNhbH7aJrr1uCjDVdnPeTHGeDhZPUNhfoHV0lQuZNCKuNnDvlH/u/nwIYZNdVvz1Igv5rY/zfrzQ==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz",
+      "integrity": "sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==",
       "cpu": [
         "ia32"
       ],
@@ -11523,9 +11546,9 @@
       }
     },
     "node_modules/vite/node_modules/esbuild-linux-64": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.23.tgz",
-      "integrity": "sha512-H0gztDP60qqr8zoFhAO64waoN5yBXkmYCElFklpd6LPoobtNGNnDe99xOQm28+fuD75YJ7GKHzp/MLCLhw2+vQ==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz",
+      "integrity": "sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==",
       "cpu": [
         "x64"
       ],
@@ -11539,9 +11562,9 @@
       }
     },
     "node_modules/vite/node_modules/esbuild-linux-arm": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.23.tgz",
-      "integrity": "sha512-x64CEUxi8+EzOAIpCUeuni0bZfzPw/65r8tC5cy5zOq9dY7ysOi5EVQHnzaxS+1NmV+/RVRpmrzGw1QgY2Xpmw==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz",
+      "integrity": "sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==",
       "cpu": [
         "arm"
       ],
@@ -11555,9 +11578,9 @@
       }
     },
     "node_modules/vite/node_modules/esbuild-linux-arm64": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.23.tgz",
-      "integrity": "sha512-c4MLOIByNHR55n3KoYf9hYDfBRghMjOiHLaoYLhkQkIabb452RWi+HsNgB41sUpSlOAqfpqKPFNg7VrxL3UX9g==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz",
+      "integrity": "sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==",
       "cpu": [
         "arm64"
       ],
@@ -11571,9 +11594,9 @@
       }
     },
     "node_modules/vite/node_modules/esbuild-linux-mips64le": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.23.tgz",
-      "integrity": "sha512-kHKyKRIAedYhKug2EJpyJxOUj3VYuamOVA1pY7EimoFPzaF3NeY7e4cFBAISC/Av0/tiV0xlFCt9q0HJ68IBIw==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz",
+      "integrity": "sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==",
       "cpu": [
         "mips64el"
       ],
@@ -11587,9 +11610,9 @@
       }
     },
     "node_modules/vite/node_modules/esbuild-linux-ppc64le": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.23.tgz",
-      "integrity": "sha512-7ilAiJEPuJJnJp/LiDO0oJm5ygbBPzhchJJh9HsHZzeqO+3PUzItXi+8PuicY08r0AaaOe25LA7sGJ0MzbfBag==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz",
+      "integrity": "sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==",
       "cpu": [
         "ppc64"
       ],
@@ -11603,9 +11626,9 @@
       }
     },
     "node_modules/vite/node_modules/esbuild-netbsd-64": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.23.tgz",
-      "integrity": "sha512-ovk2EX+3rrO1M2lowJfgMb/JPN1VwVYrx0QPUyudxkxLYrWeBxDKQvc6ffO+kB4QlDyTfdtAURrVzu3JeNdA2g==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz",
+      "integrity": "sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==",
       "cpu": [
         "x64"
       ],
@@ -11619,9 +11642,9 @@
       }
     },
     "node_modules/vite/node_modules/esbuild-openbsd-64": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.23.tgz",
-      "integrity": "sha512-uYYNqbVR+i7k8ojP/oIROAHO9lATLN7H2QeXKt2H310Fc8FJj4y3Wce6hx0VgnJ4k1JDrgbbiXM8rbEgQyg8KA==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz",
+      "integrity": "sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==",
       "cpu": [
         "x64"
       ],
@@ -11635,9 +11658,9 @@
       }
     },
     "node_modules/vite/node_modules/esbuild-sunos-64": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.23.tgz",
-      "integrity": "sha512-hAzeBeET0+SbScknPzS2LBY6FVDpgE+CsHSpe6CEoR51PApdn2IB0SyJX7vGelXzlyrnorM4CAsRyb9Qev4h9g==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz",
+      "integrity": "sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==",
       "cpu": [
         "x64"
       ],
@@ -11651,9 +11674,9 @@
       }
     },
     "node_modules/vite/node_modules/esbuild-windows-32": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.23.tgz",
-      "integrity": "sha512-Kttmi3JnohdaREbk6o9e25kieJR379TsEWF0l39PQVHXq3FR6sFKtVPgY8wk055o6IB+rllrzLnbqOw/UV60EA==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz",
+      "integrity": "sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==",
       "cpu": [
         "ia32"
       ],
@@ -11667,9 +11690,9 @@
       }
     },
     "node_modules/vite/node_modules/esbuild-windows-64": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.23.tgz",
-      "integrity": "sha512-JtIT0t8ymkpl6YlmOl6zoSWL5cnCgyLaBdf/SiU/Eg3C13r0NbHZWNT/RDEMKK91Y6t79kTs3vyRcNZbfu5a8g==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz",
+      "integrity": "sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==",
       "cpu": [
         "x64"
       ],
@@ -11683,9 +11706,9 @@
       }
     },
     "node_modules/vite/node_modules/esbuild-windows-arm64": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.23.tgz",
-      "integrity": "sha512-cTFaQqT2+ik9e4hePvYtRZQ3pqOvKDVNarzql0VFIzhc0tru/ZgdLoXd6epLiKT+SzoSce6V9YJ+nn6RCn6SHw==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz",
+      "integrity": "sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==",
       "cpu": [
         "arm64"
       ],
@@ -12951,23 +12974,23 @@
       }
     },
     "@sveltejs/adapter-static": {
-      "version": "1.0.0-next.28",
-      "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.28.tgz",
-      "integrity": "sha512-c4xLyeSwnbGQxe4f1SLpHTbxZDm3TEr43scR3tOlVgQN+mnAL9aDdl3nTtdzWmrUDmDEmY4GriAwLyFLZuINLw==",
+      "version": "1.0.0-next.29",
+      "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.29.tgz",
+      "integrity": "sha512-0hjGnfT3BRyoHnzJ2w0/xL+xICRpKneDTm45ZzggiRrc0r71WJfF6toGeg8N4QUQnj8EJ3Itm453gsS1kt7VUQ==",
       "dev": true,
       "requires": {
         "tiny-glob": "^0.2.9"
       }
     },
     "@sveltejs/kit": {
-      "version": "1.0.0-next.288",
-      "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.288.tgz",
-      "integrity": "sha512-6ky4CUFNGKoU1QV+fY2LOIB7atHdUCIMRx3pX21B2g9yZzQzkot0zHBrMMBSKF0/4Wx19PLEWrlGxlhakYmi8Q==",
+      "version": "1.0.0-next.311",
+      "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.311.tgz",
+      "integrity": "sha512-OkRIi0XBXcs16J+H+6fgOeFYxKu05gamY08KHAQ5cohjymUODGWIwaIfwAuNkZAcEEr8Vh2ejp4UcaxNzD53lQ==",
       "dev": true,
       "requires": {
         "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32",
         "sade": "^1.7.4",
-        "vite": "^2.8.0"
+        "vite": "^2.9.0"
       }
     },
     "@sveltejs/svelte-virtual-list": {
@@ -14892,6 +14915,13 @@
         "esbuild-windows-arm64": "0.13.15"
       }
     },
+    "esbuild-android-64": {
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz",
+      "integrity": "sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==",
+      "dev": true,
+      "optional": true
+    },
     "esbuild-android-arm64": {
       "version": "0.13.15",
       "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz",
@@ -15144,16 +15174,16 @@
       "optional": true
     },
     "esbuild-linux-riscv64": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.23.tgz",
-      "integrity": "sha512-fbL3ggK2wY0D8I5raPIMPhpCvODFE+Bhb5QGtNP3r5aUsRR6TQV+ZBXIaw84iyvKC8vlXiA4fWLGhghAd/h/Zg==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz",
+      "integrity": "sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==",
       "dev": true,
       "optional": true
     },
     "esbuild-linux-s390x": {
-      "version": "0.14.23",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.23.tgz",
-      "integrity": "sha512-GHMDCyfy7+FaNSO8RJ8KCFsnax8fLUsOrj9q5Gi2JmZMY0Zhp75keb5abTFCq2/Oy6KVcT0Dcbyo/bFb4rIFJA==",
+      "version": "0.14.36",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz",
+      "integrity": "sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==",
       "dev": true,
       "optional": true
     },
@@ -18188,9 +18218,9 @@
       "dev": true
     },
     "postcss": {
-      "version": "8.4.7",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.7.tgz",
-      "integrity": "sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A==",
+      "version": "8.4.12",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz",
+      "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==",
       "requires": {
         "nanoid": "^3.3.1",
         "picocolors": "^1.0.0",
@@ -20413,161 +20443,162 @@
       }
     },
     "vite": {
-      "version": "2.8.5",
-      "resolved": "https://registry.npmjs.org/vite/-/vite-2.8.5.tgz",
-      "integrity": "sha512-C/7EGNa1ugWejol6nOcd/0d8PR70Nzd+XXwsPbnNOfzZw0NN2xyXfmw/GNDHgr5fcaTSO4gjxCJCrwNhQUMhmA==",
+      "version": "2.9.1",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.1.tgz",
+      "integrity": "sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==",
       "dev": true,
       "requires": {
-        "esbuild": "^0.14.14",
+        "esbuild": "^0.14.27",
         "fsevents": "~2.3.2",
-        "postcss": "^8.4.6",
+        "postcss": "^8.4.12",
         "resolve": "^1.22.0",
         "rollup": "^2.59.0"
       },
       "dependencies": {
         "esbuild": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.23.tgz",
-          "integrity": "sha512-XjnIcZ9KB6lfonCa+jRguXyRYcldmkyZ99ieDksqW/C8bnyEX299yA4QH2XcgijCgaddEZePPTgvx/2imsq7Ig==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.36.tgz",
+          "integrity": "sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==",
           "dev": true,
           "requires": {
-            "esbuild-android-arm64": "0.14.23",
-            "esbuild-darwin-64": "0.14.23",
-            "esbuild-darwin-arm64": "0.14.23",
-            "esbuild-freebsd-64": "0.14.23",
-            "esbuild-freebsd-arm64": "0.14.23",
-            "esbuild-linux-32": "0.14.23",
-            "esbuild-linux-64": "0.14.23",
-            "esbuild-linux-arm": "0.14.23",
-            "esbuild-linux-arm64": "0.14.23",
-            "esbuild-linux-mips64le": "0.14.23",
-            "esbuild-linux-ppc64le": "0.14.23",
-            "esbuild-linux-riscv64": "0.14.23",
-            "esbuild-linux-s390x": "0.14.23",
-            "esbuild-netbsd-64": "0.14.23",
-            "esbuild-openbsd-64": "0.14.23",
-            "esbuild-sunos-64": "0.14.23",
-            "esbuild-windows-32": "0.14.23",
-            "esbuild-windows-64": "0.14.23",
-            "esbuild-windows-arm64": "0.14.23"
+            "esbuild-android-64": "0.14.36",
+            "esbuild-android-arm64": "0.14.36",
+            "esbuild-darwin-64": "0.14.36",
+            "esbuild-darwin-arm64": "0.14.36",
+            "esbuild-freebsd-64": "0.14.36",
+            "esbuild-freebsd-arm64": "0.14.36",
+            "esbuild-linux-32": "0.14.36",
+            "esbuild-linux-64": "0.14.36",
+            "esbuild-linux-arm": "0.14.36",
+            "esbuild-linux-arm64": "0.14.36",
+            "esbuild-linux-mips64le": "0.14.36",
+            "esbuild-linux-ppc64le": "0.14.36",
+            "esbuild-linux-riscv64": "0.14.36",
+            "esbuild-linux-s390x": "0.14.36",
+            "esbuild-netbsd-64": "0.14.36",
+            "esbuild-openbsd-64": "0.14.36",
+            "esbuild-sunos-64": "0.14.36",
+            "esbuild-windows-32": "0.14.36",
+            "esbuild-windows-64": "0.14.36",
+            "esbuild-windows-arm64": "0.14.36"
           }
         },
         "esbuild-android-arm64": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.23.tgz",
-          "integrity": "sha512-k9sXem++mINrZty1v4FVt6nC5BQCFG4K2geCIUUqHNlTdFnuvcqsY7prcKZLFhqVC1rbcJAr9VSUGFL/vD4vsw==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz",
+          "integrity": "sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==",
           "dev": true,
           "optional": true
         },
         "esbuild-darwin-64": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.23.tgz",
-          "integrity": "sha512-lB0XRbtOYYL1tLcYw8BoBaYsFYiR48RPrA0KfA/7RFTr4MV7Bwy/J4+7nLsVnv9FGuQummM3uJ93J3ptaTqFug==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz",
+          "integrity": "sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==",
           "dev": true,
           "optional": true
         },
         "esbuild-darwin-arm64": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.23.tgz",
-          "integrity": "sha512-yat73Z/uJ5tRcfRiI4CCTv0FSnwErm3BJQeZAh+1tIP0TUNh6o+mXg338Zl5EKChD+YGp6PN+Dbhs7qa34RxSw==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz",
+          "integrity": "sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==",
           "dev": true,
           "optional": true
         },
         "esbuild-freebsd-64": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.23.tgz",
-          "integrity": "sha512-/1xiTjoLuQ+LlbfjJdKkX45qK/M7ARrbLmyf7x3JhyQGMjcxRYVR6Dw81uH3qlMHwT4cfLW4aEVBhP1aNV7VsA==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz",
+          "integrity": "sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==",
           "dev": true,
           "optional": true
         },
         "esbuild-freebsd-arm64": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.23.tgz",
-          "integrity": "sha512-uyPqBU/Zcp6yEAZS4LKj5jEE0q2s4HmlMBIPzbW6cTunZ8cyvjG6YWpIZXb1KK3KTJDe62ltCrk3VzmWHp+iLg==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz",
+          "integrity": "sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==",
           "dev": true,
           "optional": true
         },
         "esbuild-linux-32": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.23.tgz",
-          "integrity": "sha512-37R/WMkQyUfNhbH7aJrr1uCjDVdnPeTHGeDhZPUNhfoHV0lQuZNCKuNnDvlH/u/nwIYZNdVvz1Igv5rY/zfrzQ==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz",
+          "integrity": "sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==",
           "dev": true,
           "optional": true
         },
         "esbuild-linux-64": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.23.tgz",
-          "integrity": "sha512-H0gztDP60qqr8zoFhAO64waoN5yBXkmYCElFklpd6LPoobtNGNnDe99xOQm28+fuD75YJ7GKHzp/MLCLhw2+vQ==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz",
+          "integrity": "sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==",
           "dev": true,
           "optional": true
         },
         "esbuild-linux-arm": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.23.tgz",
-          "integrity": "sha512-x64CEUxi8+EzOAIpCUeuni0bZfzPw/65r8tC5cy5zOq9dY7ysOi5EVQHnzaxS+1NmV+/RVRpmrzGw1QgY2Xpmw==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz",
+          "integrity": "sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==",
           "dev": true,
           "optional": true
         },
         "esbuild-linux-arm64": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.23.tgz",
-          "integrity": "sha512-c4MLOIByNHR55n3KoYf9hYDfBRghMjOiHLaoYLhkQkIabb452RWi+HsNgB41sUpSlOAqfpqKPFNg7VrxL3UX9g==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz",
+          "integrity": "sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==",
           "dev": true,
           "optional": true
         },
         "esbuild-linux-mips64le": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.23.tgz",
-          "integrity": "sha512-kHKyKRIAedYhKug2EJpyJxOUj3VYuamOVA1pY7EimoFPzaF3NeY7e4cFBAISC/Av0/tiV0xlFCt9q0HJ68IBIw==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz",
+          "integrity": "sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==",
           "dev": true,
           "optional": true
         },
         "esbuild-linux-ppc64le": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.23.tgz",
-          "integrity": "sha512-7ilAiJEPuJJnJp/LiDO0oJm5ygbBPzhchJJh9HsHZzeqO+3PUzItXi+8PuicY08r0AaaOe25LA7sGJ0MzbfBag==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz",
+          "integrity": "sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==",
           "dev": true,
           "optional": true
         },
         "esbuild-netbsd-64": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.23.tgz",
-          "integrity": "sha512-ovk2EX+3rrO1M2lowJfgMb/JPN1VwVYrx0QPUyudxkxLYrWeBxDKQvc6ffO+kB4QlDyTfdtAURrVzu3JeNdA2g==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz",
+          "integrity": "sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==",
           "dev": true,
           "optional": true
         },
         "esbuild-openbsd-64": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.23.tgz",
-          "integrity": "sha512-uYYNqbVR+i7k8ojP/oIROAHO9lATLN7H2QeXKt2H310Fc8FJj4y3Wce6hx0VgnJ4k1JDrgbbiXM8rbEgQyg8KA==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz",
+          "integrity": "sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==",
           "dev": true,
           "optional": true
         },
         "esbuild-sunos-64": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.23.tgz",
-          "integrity": "sha512-hAzeBeET0+SbScknPzS2LBY6FVDpgE+CsHSpe6CEoR51PApdn2IB0SyJX7vGelXzlyrnorM4CAsRyb9Qev4h9g==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz",
+          "integrity": "sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==",
           "dev": true,
           "optional": true
         },
         "esbuild-windows-32": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.23.tgz",
-          "integrity": "sha512-Kttmi3JnohdaREbk6o9e25kieJR379TsEWF0l39PQVHXq3FR6sFKtVPgY8wk055o6IB+rllrzLnbqOw/UV60EA==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz",
+          "integrity": "sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==",
           "dev": true,
           "optional": true
         },
         "esbuild-windows-64": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.23.tgz",
-          "integrity": "sha512-JtIT0t8ymkpl6YlmOl6zoSWL5cnCgyLaBdf/SiU/Eg3C13r0NbHZWNT/RDEMKK91Y6t79kTs3vyRcNZbfu5a8g==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz",
+          "integrity": "sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==",
           "dev": true,
           "optional": true
         },
         "esbuild-windows-arm64": {
-          "version": "0.14.23",
-          "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.23.tgz",
-          "integrity": "sha512-cTFaQqT2+ik9e4hePvYtRZQ3pqOvKDVNarzql0VFIzhc0tru/ZgdLoXd6epLiKT+SzoSce6V9YJ+nn6RCn6SHw==",
+          "version": "0.14.36",
+          "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz",
+          "integrity": "sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==",
           "dev": true,
           "optional": true
         }
diff --git a/package.json b/package.json
index 6ff29a43..adbe3a19 100644
--- a/package.json
+++ b/package.json
@@ -38,8 +38,8 @@
   "devDependencies": {
     "@crownframework/svelte-error-boundary": "^1.0.3",
     "@grpc/grpc-js": "^1.3.7",
-    "@sveltejs/adapter-static": "^1.0.0-next.28",
-    "@sveltejs/kit": "^1.0.0-next.288",
+    "@sveltejs/adapter-static": "^1.0.0-next.29",
+    "@sveltejs/kit": "^1.0.0-next.311",
     "@temporalio/proto": "^0.3.1",
     "@types/base-64": "^1.0.0",
     "@types/jest": "^27.0.1",
diff --git a/src/lib/components/event/event-compact-row.svelte b/src/lib/components/event/event-compact-row.svelte
deleted file mode 100644
index e26a1935..00000000
--- a/src/lib/components/event/event-compact-row.svelte
+++ /dev/null
@@ -1,75 +0,0 @@
-<script lang="ts">
-  import EventSingleDetail from './event-single-detail.svelte';
-  import EventGroupDetails from './event-group-details.svelte';
-  import EventDetails from './event-details.svelte';
-
-  export let eventGroup: CompactEventGroups;
-
-  $: collapsed = true;
-  $: event = eventGroup.initialEvent;
-
-  const onLinkClick = () => {
-    collapsed = !collapsed;
-  };
-
-  const onEventClick = (id: string) => {
-    event = eventGroup.events.get(id);
-  };
-</script>
-
-<article class="row">
-  <div class="cell">
-    <div>
-      <span
-        class={collapsed ? 'link collapsed' : 'link expanded'}
-        on:click|stopPropagation={onLinkClick}>{eventGroup.name}</span
-      >
-      {#if !collapsed}
-        <div class="p-4">
-          <EventGroupDetails
-            {eventGroup}
-            eventId={event.id}
-            onClick={onEventClick}
-          />
-        </div>
-      {/if}
-    </div>
-  </div>
-  <div class="cell">
-    {#if collapsed}
-      <EventSingleDetail {eventGroup} />
-    {:else}
-      <EventDetails {event} />
-    {/if}
-  </div>
-</article>
-
-<style lang="postcss">
-  .cell {
-    @apply md:table-cell md:border-b-2 text-left p-2;
-  }
-
-  .row {
-    @apply no-underline p-2 text-sm border-b-2 items-center md:text-base md:table-row last-of-type:border-b-0;
-  }
-
-  .row:hover {
-    @apply bg-gray-50;
-  }
-
-  .link {
-    @apply text-gray-900 font-medium cursor-pointer;
-  }
-
-  .row:hover .collapsed {
-    @apply text-blue-700 border-b-2 border-blue-700;
-  }
-
-  .row:hover .expanded:hover {
-    @apply text-blue-700 border-b-2 border-blue-700;
-  }
-
-  .row:last-of-type .cell {
-    @apply border-b-0 first-of-type:rounded-bl-lg  last-of-type:rounded-br-lg;
-  }
-</style>
diff --git a/src/lib/components/event/event-compact-table.svelte b/src/lib/components/event/event-compact-table.svelte
deleted file mode 100644
index 4e015d3d..00000000
--- a/src/lib/components/event/event-compact-table.svelte
+++ /dev/null
@@ -1,34 +0,0 @@
-<script lang="ts">
-  import EventCategoryMenu from '$lib/components/event/event-category-menu.svelte';
-</script>
-
-<section class="compact-table">
-  <div class="table-header md:table-header-group">
-    <div class="md:table-row hidden">
-      <div class="table-header-cell w-3/12 rounded-tl-md">
-        Event Type<EventCategoryMenu compact />
-      </div>
-      <div class="table-header-cell w-1/2 rounded-tr-md">Event Details</div>
-    </div>
-  </div>
-  <div class="table-header md:hidden rounded-t-md">
-    <div class="table-header-cell">Compact<EventCategoryMenu compact /></div>
-  </div>
-  <div class="overflow-y-auto md:table-row-group">
-    <slot />
-  </div>
-</section>
-
-<style lang="postcss">
-  .compact-table {
-    @apply md:table border-gray-300 border-2 rounded-lg w-full;
-  }
-
-  .table-header {
-    @apply bg-gray-900 text-gray-100;
-  }
-
-  .table-header-cell {
-    @apply table-cell text-left p-3;
-  }
-</style>
diff --git a/src/lib/components/event/event-details-row.svelte b/src/lib/components/event/event-details-row.svelte
new file mode 100644
index 00000000..a20dac64
--- /dev/null
+++ b/src/lib/components/event/event-details-row.svelte
@@ -0,0 +1,32 @@
+<script lang="ts">
+  import { page } from '$app/stores';
+
+  import { format } from '$lib/utilities/format-camel-case';
+  import { routeForWorkflow } from '$lib/utilities/route-for';
+  import { shouldDisplayAsWorkflowLink } from '$lib/utilities/get-single-attribute-for-event';
+
+  import CodeBlock from '../code-block.svelte';
+  import TableLink from '$lib/components/table-link.svelte';
+
+  export let key: string;
+  export let value: string | Record<string, string>;
+
+  const { workflow, namespace } = $page.params;
+</script>
+
+<article
+  class="flex flex-col lg:flex-row gap-2 lg:gap-4 py-2 last:border-b-0 border-gray-200 first:pt-0 {$$props.class}"
+>
+  <h4 class="w-1/3 text-normal">{format(key)}</h4>
+  <div class="flex-grow w-full">
+    {#if typeof value === 'object'}
+      <CodeBlock content={value} />
+    {:else if shouldDisplayAsWorkflowLink(key)}
+      <TableLink href={routeForWorkflow({ namespace, workflow, run: value })}
+        >{value}</TableLink
+      >
+    {:else}
+      <p><span class="bg-gray-300 text-gray-700 px-2">{value}</span></p>
+    {/if}
+  </div>
+</article>
diff --git a/src/lib/components/event/event-details.svelte b/src/lib/components/event/event-details.svelte
index 36a6cfa6..49bfaac6 100644
--- a/src/lib/components/event/event-details.svelte
+++ b/src/lib/components/event/event-details.svelte
@@ -1,42 +1,23 @@
 <script lang="ts">
-  import { page } from '$app/stores';
-
-  import { format } from '$lib/utilities/format-camel-case';
-  import { routeForWorkflow } from '$lib/utilities/route-for';
   import {
+    getSingleAttributeForEvent,
     shouldDisplayAttribute,
-    shouldDisplayAsWorkflowLink,
   } from '$lib/utilities/get-single-attribute-for-event';
+  import EventDetailsRow from './event-details-row.svelte';
 
-  import CodeBlock from '$lib/components/code-block.svelte';
-  import TableLink from '$lib/components/table-link.svelte';
-
-  export let event: HistoryEventWithId;
-
-  const { workflow, namespace } = $page.params;
+  export let event: IterableEvent;
+  export let summaryEvent = event;
+  export let expanded = false;
 </script>
 
 <section>
-  {#each Object.entries(event.attributes) as [key, value] (key)}
-    {#if shouldDisplayAttribute(key, value)}
-      <article
-        class="flex gap-4 py-2 last:border-b-0 border-gray-200 first:pt-0 {$$props.class}"
-      >
-        <p class="w-96">{format(key)}</p>
-        <div class="w-full">
-          {#if typeof value === 'object'}
-            <CodeBlock content={value} />
-          {:else if shouldDisplayAsWorkflowLink(key)}
-            <TableLink
-              href={routeForWorkflow({ namespace, workflow, run: value })}
-            >
-              {value}
-            </TableLink>
-          {:else}
-            <p><span class="bg-gray-300 text-gray-700 px-2">{value}</span></p>
-          {/if}
-        </div>
-      </article>
-    {/if}
-  {/each}
+  {#if expanded}
+    {#each Object.entries(event.attributes) as [key, value] (key)}
+      {#if shouldDisplayAttribute(key, value)}
+        <EventDetailsRow {key} {value} />
+      {/if}
+    {/each}
+  {:else}
+    <EventDetailsRow {...getSingleAttributeForEvent(summaryEvent)} />
+  {/if}
 </section>
diff --git a/src/lib/components/event/event-group-details.svelte b/src/lib/components/event/event-group-details.svelte
index 4d8d48b2..7ce7b24b 100644
--- a/src/lib/components/event/event-group-details.svelte
+++ b/src/lib/components/event/event-group-details.svelte
@@ -1,18 +1,22 @@
 <script lang="ts">
   export let eventGroup: CompactEventGroup | null;
-  export let eventId: string;
-  export let onClick: (id: string) => void;
+  export let selectedId: string;
 </script>
 
-<section class="overflow-y-scroll max-h-full">
+<section class="overflow-y-scroll max-h-full p-4">
   {#if eventGroup}
     <nav class="flex flex-col mb-4">
       <ul class="gap-4 w-full items-start">
         {#each [...eventGroup.events] as [id, eventInGroup] (id)}
-          <li on:click|preventDefault|stopPropagation={() => onClick(id)}>
-            <span class="event-type" class:active={id === eventId}
+          <li
+            on:click|preventDefault|stopPropagation={() => {
+              selectedId = id;
+            }}
+          >
+            <span class="event-type" class:active={id === selectedId}
               >{eventInGroup.eventType}</span
             >
+            (#{id})
           </li>
         {/each}
       </ul>
diff --git a/src/lib/components/event/event-single-detail.svelte b/src/lib/components/event/event-single-detail.svelte
deleted file mode 100644
index 98130a27..00000000
--- a/src/lib/components/event/event-single-detail.svelte
+++ /dev/null
@@ -1,35 +0,0 @@
-<script lang="ts">
-  import { page } from '$app/stores';
-  import { routeForWorkflow } from '$lib/utilities/route-for';
-  import {
-    getSingleAttributeForEvent,
-    shouldDisplayAsWorkflowLink,
-  } from '$lib/utilities/get-single-attribute-for-event';
-  import CodeBlock from '../code-block.svelte';
-  import TableLink from '$lib/components/table-link.svelte';
-
-  export let event: HistoryEventWithId | null = null;
-  export let eventGroup: CompactEventGroup | null = null;
-
-  let { key, value } = getSingleAttributeForEvent({ event, eventGroup });
-  const { workflow, namespace } = $page.params;
-</script>
-
-<section>
-  <article
-    class="flex py-2 last:border-b-0 border-gray-200 first:pt-0 {$$props.class}"
-  >
-    <h4 class="w-96 flex-grow text-normal">{key}</h4>
-    <div class="flex-grow w-full">
-      {#if eventGroup}
-        <CodeBlock content={value} />
-      {:else if shouldDisplayAsWorkflowLink(key)}
-        <TableLink href={routeForWorkflow({ namespace, workflow, run: value })}
-          >{value}</TableLink
-        >
-      {:else}
-        <p><span class="bg-gray-300 text-gray-700 px-2">{value}</span></p>
-      {/if}
-    </div>
-  </article>
-</section>
diff --git a/src/lib/components/event/event-summary-row.svelte b/src/lib/components/event/event-summary-row.svelte
index 4170c729..035f623a 100644
--- a/src/lib/components/event/event-summary-row.svelte
+++ b/src/lib/components/event/event-summary-row.svelte
@@ -1,13 +1,26 @@
 <script lang="ts">
+  import { page } from '$app/stores';
+
+  import { getGroupForEvent, isEventGroup } from '$lib/models/group-events';
+
   import { formatDate } from '$lib/utilities/format-date';
 
   import EventDetails from './event-details.svelte';
-  import EventSingleDetail from './event-single-detail.svelte';
+  import EventGroupDetails from './event-group-details.svelte';
+
+  export let event: IterableEvent;
+  export let groups: CompactEventGroups;
+  export let expandAll = false;
+  export let compact = false;
+
+  let selectedId = event.id;
 
-  export let event: HistoryEventWithId;
-  export let expandAll: boolean = false;
+  let eventGroup = isEventGroup(event)
+    ? event
+    : getGroupForEvent(event, groups);
 
   $: expanded = expandAll;
+  $: currentEvent = compact ? eventGroup.events.get(selectedId) : event;
 
   const onLinkClick = () => {
     if (!expandAll) {
@@ -18,32 +31,35 @@
 
 <article class="row" id={event.id}>
   <div class="cell">
-    <a class="text-gray-500 text-normal mx-1" href="#{event.id}">{event.id}</a>
+    <a
+      class="text-gray-500 text-normal mx-1 text-lg md:text-base"
+      href="#{event.id}">{event.id}</a
+    >
     <span
-      class="mx-2"
+      class="md:mx-2 text-lg md:text-base font-semibold"
       class:link={!expandAll}
       on:click|stopPropagation={onLinkClick}>{event.name}</span
     >
+    {#if expanded && compact}
+      <EventGroupDetails {eventGroup} bind:selectedId />
+    {/if}
   </div>
   <div class="cell links font-medium md:font-normal">
     {formatDate(event?.eventTime)}
   </div>
+
   <div class="cell links">
-    {#if expanded}
-      <EventDetails {event} />
-    {:else}
-      <EventSingleDetail {event} />
-    {/if}
+    <EventDetails event={currentEvent} {expanded} summaryEvent={event} />
   </div>
 </article>
 
 <style lang="postcss">
   .cell {
-    @apply md:table-cell md:border-b-2 text-left p-1 pt-2;
+    @apply md:table-cell md:border-b-2 text-left py-1 px-3 pt-2;
   }
 
   .row {
-    @apply no-underline p-1 text-sm border-b-2 items-center md:text-base md:table-row last-of-type:border-b-0;
+    @apply no-underline py-3 text-sm border-b-2 items-center md:text-base md:table-row last-of-type:border-b-0;
   }
 
   .row:hover {
diff --git a/src/lib/components/event/event-summary-table.svelte b/src/lib/components/event/event-summary-table.svelte
index 82f91231..21f3201e 100644
--- a/src/lib/components/event/event-summary-table.svelte
+++ b/src/lib/components/event/event-summary-table.svelte
@@ -1,19 +1,22 @@
 <script lang="ts">
   import EventCategoryMenu from '$lib/components/event/event-category-menu.svelte';
+  export let compact = false;
+
+  let title = compact ? 'Event Type' : 'Workflow Events';
 </script>
 
-<section class="summary-table">
+<section class="event-table">
   <div class="table-header-row md:table-header-group">
     <div class="md:table-row hidden">
       <div class="table-header w-3/12 rounded-tl-md">
-        Workflow Events<EventCategoryMenu />
+        {title}<EventCategoryMenu {compact} />
       </div>
       <div class="table-header w-3/12">Date & Time</div>
       <div class="table-header w-1/2 rounded-tr-md">Event Details</div>
     </div>
   </div>
   <div class="table-header-row md:hidden rounded-t-md">
-    <div class="table-header">Summary<EventCategoryMenu /></div>
+    <div class="table-header">{title}<EventCategoryMenu {compact} /></div>
   </div>
   <div class="overflow-y-auto md:table-row-group">
     <slot />
@@ -21,15 +24,15 @@
 </section>
 
 <style lang="postcss">
-  .summary-table {
-    @apply md:table border-gray-300 border-2 rounded-lg w-full max-w-full;
+  .event-table {
+    @apply md:table border-gray-900 border-2 rounded-lg w-full;
   }
 
   .table-header-row {
-    @apply bg-gray-900 text-gray-100;
+    @apply bg-gray-900 text-gray-100 px-3;
   }
 
   .table-header {
-    @apply table-cell text-left p-3;
+    @apply md:table-cell table-cell text-left px-3 py-3;
   }
 </style>
diff --git a/src/lib/components/event/view/event-summary.svelte b/src/lib/components/event/event-summary.svelte
similarity index 65%
rename from src/lib/components/event/view/event-summary.svelte
rename to src/lib/components/event/event-summary.svelte
index fe835ad5..5ae393da 100644
--- a/src/lib/components/event/view/event-summary.svelte
+++ b/src/lib/components/event/event-summary.svelte
@@ -3,16 +3,18 @@
 
   import EventSummaryTable from '$lib/components/event/event-summary-table.svelte';
   import EventSummaryRow from '$lib/components/event/event-summary-row.svelte';
-  import EventEmptyRow from '../event-empty-row.svelte';
+  import EventEmptyRow from './event-empty-row.svelte';
 
-  export let items: HistoryEventWithId[];
+  export let items: IterableEvents;
+  export let groups: CompactEventGroups;
   export let expandAll = false;
+  export let compact = false;
 </script>
 
 <Pagination {items} floatId="event-view-toggle" let:visibleItems>
-  <EventSummaryTable>
+  <EventSummaryTable {compact}>
     {#each visibleItems as event (event.id)}
-      <EventSummaryRow {event} {expandAll} />
+      <EventSummaryRow {event} {groups} {expandAll} {compact} />
     {:else}
       <EventEmptyRow />
     {/each}
diff --git a/src/lib/components/event/view/event-compact.svelte b/src/lib/components/event/view/event-compact.svelte
deleted file mode 100644
index 36829d81..00000000
--- a/src/lib/components/event/view/event-compact.svelte
+++ /dev/null
@@ -1,25 +0,0 @@
-<script lang="ts">
-  import Pagination from '$lib/components/pagination.svelte';
-  import LoadingRow from '$lib/components/loading-row.svelte';
-
-  import EventCompactTable from '$lib/components/event/event-compact-table.svelte';
-  import EventCompactRow from '$lib/components/event/event-compact-row.svelte';
-  import EventEmptyRow from '../event-empty-row.svelte';
-
-  export let items: IterableEvents;
-</script>
-
-{#await items}
-  <LoadingRow />
-{:then items}
-  <Pagination {items} floatId="event-view-toggle" let:visibleItems>
-    <EventCompactTable>
-      {#each visibleItems as eventGroup (eventGroup.id)}
-        <EventCompactRow {eventGroup} />
-      {/each}
-      {#if !items?.length}
-        <EventEmptyRow />
-      {/if}
-    </EventCompactTable>
-  </Pagination>
-{/await}
diff --git a/src/lib/models/group-events/create-event-group.ts b/src/lib/models/group-events/create-event-group.ts
index 8e83cd36..570adb75 100644
--- a/src/lib/models/group-events/create-event-group.ts
+++ b/src/lib/models/group-events/create-event-group.ts
@@ -8,6 +8,7 @@ import {
   isWorkflowExecutionSignaledEvent,
   isTimerStartedEvent,
 } from '$lib/utilities/is-event-type';
+import { getLastEvent } from './get-last-event';
 
 export const getName = (event: CommonHistoryEvent): string => {
   if (!event) return;
@@ -70,6 +71,12 @@ const createGroupFor = <K extends keyof StartingEvents>(
     timestamp,
     category,
     classification,
+    get eventTime() {
+      return getLastEvent(this)?.eventTime;
+    },
+    get attributes() {
+      return getLastEvent(this)?.attributes;
+    },
   };
 };
 
diff --git a/src/lib/models/group-events/event-groups.d.ts b/src/lib/models/group-events/event-groups.d.ts
index 51e85906..5b4d2f3f 100644
--- a/src/lib/models/group-events/event-groups.d.ts
+++ b/src/lib/models/group-events/event-groups.d.ts
@@ -5,6 +5,8 @@ type CompactEventGroup<T = EventType, E = HistoryEventWithId, Id = E['id']> = {
   eventIds: Set<Id>;
   initialEvent: HistoryEventWithId;
   timestamp: HistoryEventWithId['timestamp'];
+  eventTime: HistoryEventWithId['eventTime'];
+  attributes: HistoryEventWithId['attributes'];
 } & Pick<HistoryEventWithId, 'timestamp' | 'classification' | 'category'>;
 
 type CompactEventGroups<
diff --git a/src/lib/models/group-events/index.ts b/src/lib/models/group-events/index.ts
index 0c3f7407..d072dee1 100644
--- a/src/lib/models/group-events/index.ts
+++ b/src/lib/models/group-events/index.ts
@@ -38,11 +38,13 @@ export const groupEvents = (
 export const isEventGroup = (
   eventOrGroup: unknown,
 ): eventOrGroup is CompactEventGroup => {
+  if (eventOrGroup === undefined || eventOrGroup === null) return false;
   return has(eventOrGroup, 'events');
 };
 
 export const isEventGroups = (
   eventsOrGroups: unknown[],
 ): eventsOrGroups is CompactEventGroups => {
+  if (eventsOrGroups === undefined || eventsOrGroups === null) return false;
   return eventsOrGroups.every(isEventGroup);
 };
diff --git a/src/lib/utilities/get-single-attribute-for-event.ts b/src/lib/utilities/get-single-attribute-for-event.ts
index 5cdb6b6f..57e4a85b 100644
--- a/src/lib/utilities/get-single-attribute-for-event.ts
+++ b/src/lib/utilities/get-single-attribute-for-event.ts
@@ -1,4 +1,7 @@
-type SummaryAttribute = { key: string; value: string };
+import { isEventGroup } from '$lib/models/group-events';
+import { getLastEvent } from '$lib/models/group-events/get-last-event';
+
+type SummaryAttribute = { key: string; value: string | Record<string, any> };
 
 const emptyAttribute: SummaryAttribute = { key: '', value: '' };
 
@@ -33,10 +36,14 @@ export const shouldDisplayAsWorkflowLink = (
   return false;
 };
 
+const capitalize = (word: string): string => {
+  return word[0].toUpperCase() + word.slice(1);
+};
+
 const formatSummaryValue = (key: string, value: unknown): SummaryAttribute => {
   if (typeof value === 'object') {
     const [firstKey] = Object.keys(value);
-    return { key: `${key}.${firstKey}`, value: value[firstKey] };
+    return { key: key + capitalize(firstKey), value: value[firstKey] };
   } else {
     return { key, value: value.toString() };
   }
@@ -45,14 +52,21 @@ const formatSummaryValue = (key: string, value: unknown): SummaryAttribute => {
 /**
  * A list of the keys that should be shown in the summary view.
  */
-const preferredSummaryKeys = ['activityType'] as const;
+const preferredSummaryKeys = [
+  'failure',
+  'input',
+  'activityType',
+  'parentInitiatedEventId',
+  'workflowType',
+  'taskQueue',
+] as const;
 
 /**
  * Returns that first event attribute that is eligible to be displayed.
  */
 const getFirstDisplayAttribute = ({
   attributes,
-}: HistoryEventWithId): { key: string; value: string } => {
+}: HistoryEventWithId): SummaryAttribute => {
   for (const [key, value] of Object.entries(attributes)) {
     if (shouldDisplayAttribute(key, value)) {
       return formatSummaryValue(key, value);
@@ -65,45 +79,35 @@ const getFirstDisplayAttribute = ({
  * preferred keys. If a preferred key is found, it will be returned.
  * Otherwise, it will return the first eligible event attribute.
  */
-const getPreferredSummaryAttribute = (
-  event: HistoryEventWithId,
-): SummaryAttribute => {
+const getSummaryAttribute = (event: HistoryEventWithId): SummaryAttribute => {
   const first = getFirstDisplayAttribute(event);
 
   for (const [key, value] of Object.entries(event.attributes)) {
     for (const preferredKey of preferredSummaryKeys) {
-      if (key === preferredKey) return formatSummaryValue(key, value);
+      if (key === preferredKey && shouldDisplayAttribute(key, value))
+        return formatSummaryValue(key, value);
     }
   }
 
   return first;
 };
 
-const getSummaryForEventGroup = (
+export const getSummaryForEventGroup = (
   eventGroup: CompactEventGroup,
 ): SummaryAttribute => {
-  let input = '';
-  const attributes = eventGroup.initialEvent.attributes;
+  const event = getLastEvent(eventGroup);
 
-  for (const [key, value] of Object.entries(attributes)) {
-    if (key === 'input') input = value;
-  }
-
-  return { key: 'input', value: input };
+  return getSummaryAttribute(event);
 };
 
-export const getSingleAttributeForEvent = ({
-  event,
-  eventGroup,
-}: {
-  event: HistoryEventWithId | null;
-  eventGroup: CompactEventGroup | null;
-}): SummaryAttribute => {
-  if (!event && !eventGroup) return emptyAttribute;
-
-  if (eventGroup) {
-    return getSummaryForEventGroup(eventGroup);
+export const getSingleAttributeForEvent = (
+  event: HistoryEventWithId | CompactEventGroup,
+): SummaryAttribute => {
+  if (!event) return emptyAttribute;
+
+  if (isEventGroup(event)) {
+    return getSummaryForEventGroup(event);
   }
 
-  return getPreferredSummaryAttribute(event);
+  return getSummaryAttribute(event);
 };
diff --git a/src/routes/import/__layout.reset.svelte b/src/routes/import/__layout-import.svelte
similarity index 100%
rename from src/routes/import/__layout.reset.svelte
rename to src/routes/import/__layout-import.svelte
diff --git a/src/routes/import/events/history/compact/index.svelte b/src/routes/import/events/history/compact/index.svelte
index 331cc9d6..28284174 100644
--- a/src/routes/import/events/history/compact/index.svelte
+++ b/src/routes/import/events/history/compact/index.svelte
@@ -2,7 +2,7 @@
   import { page } from '$app/stores';
 
   import { importEventGroups } from '$lib/stores/import-events';
-  import CompactEvent from '$lib/components/event/view/event-compact.svelte';
+  import EventSummary from '$lib/components/event/event-summary.svelte';
 
   $: category = $page.url.searchParams.get('category') as EventTypeCategory;
   $: filteredEventGroups = $importEventGroups.filter(
@@ -13,4 +13,8 @@
   );
 </script>
 
-<CompactEvent items={filteredEventGroups} />
+<EventSummary
+  items={filteredEventGroups}
+  groups={$importEventGroups}
+  compact={true}
+/>
diff --git a/src/routes/import/events/history/full/index.svelte b/src/routes/import/events/history/full/index.svelte
index 9b0a40b6..067c1374 100644
--- a/src/routes/import/events/history/full/index.svelte
+++ b/src/routes/import/events/history/full/index.svelte
@@ -1,8 +1,8 @@
 <script lang="ts">
   import { page } from '$app/stores';
 
-  import { importEvents } from '$lib/stores/import-events';
-  import EventFullView from '$lib/components/event/view/event-summary.svelte';
+  import { importEvents, importEventGroups } from '$lib/stores/import-events';
+  import EventSummary from '$lib/components/event/event-summary.svelte';
 
   $: category = $page.url.searchParams.get('category') as EventTypeCategory;
   $: filteredEvents = $importEvents.filter((event) => {
@@ -11,4 +11,4 @@
   });
 </script>
 
-<EventFullView items={filteredEvents} expandAll />
+<EventSummary items={filteredEvents} groups={$importEventGroups} expandAll />
diff --git a/src/routes/import/events/history/summary/index.svelte b/src/routes/import/events/history/summary/index.svelte
index b8c6bece..74dc56cb 100644
--- a/src/routes/import/events/history/summary/index.svelte
+++ b/src/routes/import/events/history/summary/index.svelte
@@ -1,8 +1,8 @@
 <script lang="ts">
   import { page } from '$app/stores';
 
-  import { importEvents } from '$lib/stores/import-events';
-  import EventSummary from '$lib/components/event/view/event-summary.svelte';
+  import { importEvents, importEventGroups } from '$lib/stores/import-events';
+  import EventSummary from '$lib/components/event/event-summary.svelte';
 
   $: category = $page.url.searchParams.get('category') as EventTypeCategory;
   $: filteredEvents = $importEvents.filter((event) => {
@@ -11,4 +11,4 @@
   });
 </script>
 
-<EventSummary items={filteredEvents} />
+<EventSummary items={filteredEvents} groups={$importEventGroups} />
diff --git a/src/routes/login/__layout.reset.svelte b/src/routes/login/__layout-login.svelte
similarity index 100%
rename from src/routes/login/__layout.reset.svelte
rename to src/routes/login/__layout-login.svelte
diff --git a/src/routes/namespaces/[namespace]/workflows/[workflow]/[run]/history/compact/index.svelte b/src/routes/namespaces/[namespace]/workflows/[workflow]/[run]/history/compact/index.svelte
index 32725007..6dcae3cd 100644
--- a/src/routes/namespaces/[namespace]/workflows/[workflow]/[run]/history/compact/index.svelte
+++ b/src/routes/namespaces/[namespace]/workflows/[workflow]/[run]/history/compact/index.svelte
@@ -22,9 +22,9 @@
 </script>
 
 <script lang="ts">
-  import CompactEvent from '$lib/components/event/view/event-compact.svelte';
+  import EventSummary from '$lib/components/event/event-summary.svelte';
 
   export let items: IterableEvents;
 </script>
 
-<CompactEvent {items} />
+<EventSummary {items} groups={items} compact={true} />
diff --git a/src/routes/namespaces/[namespace]/workflows/[workflow]/[run]/history/full/index.svelte b/src/routes/namespaces/[namespace]/workflows/[workflow]/[run]/history/full/index.svelte
index e4f72ef9..0769a5f8 100644
--- a/src/routes/namespaces/[namespace]/workflows/[workflow]/[run]/history/full/index.svelte
+++ b/src/routes/namespaces/[namespace]/workflows/[workflow]/[run]/history/full/index.svelte
@@ -7,19 +7,22 @@
     const category = url.searchParams.get('category');
 
     const items = getEventsInCategory(stuff.events, category);
+    const groups = stuff.eventGroups;
 
     return {
       props: {
         items,
+        groups,
       },
     };
   };
 </script>
 
 <script lang="ts">
-  import EventSummary from '$lib/components/event/view/event-summary.svelte';
+  import EventSummary from '$lib/components/event/event-summary.svelte';
 
   export let items: HistoryEventWithId[];
+  export let groups: CompactEventGroups;
 </script>
 
-<EventSummary {items} expandAll />
+<EventSummary {items} {groups} expandAll />
diff --git a/src/routes/namespaces/[namespace]/workflows/[workflow]/[run]/history/summary/index.svelte b/src/routes/namespaces/[namespace]/workflows/[workflow]/[run]/history/summary/index.svelte
index ecb680a0..31435f83 100644
--- a/src/routes/namespaces/[namespace]/workflows/[workflow]/[run]/history/summary/index.svelte
+++ b/src/routes/namespaces/[namespace]/workflows/[workflow]/[run]/history/summary/index.svelte
@@ -9,10 +9,12 @@
     const events = getEventsInCategory(stuff.events, category);
 
     let items: HistoryEventWithId[] = events;
+    const groups = stuff.eventGroups;
 
     return {
       props: {
         items,
+        groups,
       },
       stuff: {
         matchingEvents: events,
@@ -22,9 +24,10 @@
 </script>
 
 <script lang="ts">
-  import EventSummary from '$lib/components/event/view/event-summary.svelte';
+  import EventSummary from '$lib/components/event/event-summary.svelte';
 
   export let items: HistoryEventWithId[];
+  export let groups: CompactEventGroups;
 </script>
 
-<EventSummary {items} />
+<EventSummary {items} {groups} />


Test patch:
diff --git a/src/lib/utilities/get-single-attribute-for-event.test.ts b/src/lib/utilities/get-single-attribute-for-event.test.ts
index d9b1ac13..5f5c704b 100644
--- a/src/lib/utilities/get-single-attribute-for-event.test.ts
+++ b/src/lib/utilities/get-single-attribute-for-event.test.ts
@@ -114,10 +114,8 @@ describe(getSingleAttributeForEvent, () => {
   };
 
   it('should return "workflowType.name" if the workflow type exists', () => {
-    expect(
-      getSingleAttributeForEvent({ event: workflowEvent, eventGroup: null }),
-    ).toStrictEqual({
-      key: 'workflowType.name',
+    expect(getSingleAttributeForEvent(workflowEvent)).toStrictEqual({
+      key: 'workflowTypeName',
       value: 'RainbowStatusesWorkflow',
     });
   });
@@ -125,39 +123,27 @@ describe(getSingleAttributeForEvent, () => {
   it('should return "taskqueue.name" if the workflow type does not exists', () => {
     const event = { ...workflowEvent };
     event.attributes.workflowType = null;
-    expect(
-      getSingleAttributeForEvent({ event, eventGroup: null }),
-    ).toStrictEqual({ key: 'taskQueue.name', value: 'rainbow-statuses' });
+    expect(getSingleAttributeForEvent(event)).toStrictEqual({
+      key: 'taskQueueName',
+      value: 'rainbow-statuses',
+    });
   });
 
-  it('should return "parentInitiatedEventId" if the workflow type and task queue does not exists', () => {
+  it('should return "parentInitiatedEventId" if the workflow type and task queue does not exist', () => {
     const event = { ...workflowEvent };
     event.attributes.workflowType = null;
     event.attributes.taskQueue = null;
-    expect(
-      getSingleAttributeForEvent({ event, eventGroup: null }),
-    ).toStrictEqual({ key: 'parentInitiatedEventId', value: '0' });
+    expect(getSingleAttributeForEvent(event)).toStrictEqual({
+      key: 'parentInitiatedEventId',
+      value: '0',
+    });
   });
 
   it('should return empty key value object if none of the attributes display', () => {
-    expect(
-      getSingleAttributeForEvent({ event: null, eventGroup: null }),
-    ).toStrictEqual({ key: '', value: '' });
-  });
-
-  it('should return "input" if passed an event group', () => {
-    const event = { ...workflowEvent };
-    const value = {
-      payloads: [
-        {
-          Hey: 'from Mars',
-          At: '2022-04-04T11:50:28.151785-05:00',
-        },
-      ],
-    };
-    expect(
-      getSingleAttributeForEvent({ event, eventGroup: workflowEventGroup }),
-    ).toStrictEqual({ key: 'input', value });
+    expect(getSingleAttributeForEvent(null)).toStrictEqual({
+      key: '',
+      value: '',
+    });
   });
 });