diff --git a/packages/stacks-classic/lib/components/modal/modal.test.ts b/packages/stacks-classic/lib/components/modal/modal.test.ts
index 8fef533a7b..ea9a3b3532 100644
--- a/packages/stacks-classic/lib/components/modal/modal.test.ts
+++ b/packages/stacks-classic/lib/components/modal/modal.test.ts
@@ -139,8 +139,9 @@ describe("modal", () => {
await user.click(trigger);
expect(modal).to.be.visible;
-
- await waitFor(() => expect(initialFocusEl).to.have.focus);
+ await waitFor(() => expect(initialFocusEl).to.have.focus, {
+ timeout: 20000,
+ });
});
it("should focus on the first focusable element when modal is shown and no initialFocus is specified", async () => {
diff --git a/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-dark-with-title.ico b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-dark-with-title.ico
new file mode 100644
index 0000000000..e7a02f7e9d
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-dark-with-title.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f1e44944124c52ff9e2ac166218ced4ea01fb24f5548e2dcdbc2ecc55c21215f
+size 8811
diff --git a/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-dark-withTitle.ico b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-dark-withTitle.ico
new file mode 100644
index 0000000000..456a396b44
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-dark-withTitle.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dddbb78b1154e0fd67da24fd963a9a478df6a1ea7ab7aa93f60bb90e618d5fdf
+size 8804
diff --git a/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-dark.ico b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-dark.ico
index a34c39f76e..655ea4f81b 100644
--- a/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-dark.ico
+++ b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-dark.ico
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b5b8aec3ee47957bfb3258c09c7d837479815fcc2636b1a510b82d6891e8fd6b
-size 10141
+oid sha256:dda72730120d7efa55fc8d8bced11fa70d6a09e950de74ded770eb4a20344e6b
+size 4970
diff --git a/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-dark-with-title.ico b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-dark-with-title.ico
new file mode 100644
index 0000000000..3096ac8b9e
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-dark-with-title.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:acf1c05eba84b81f31affe9746c1f1117956659dbdd8b9e7649cd0cf293d8216
+size 8795
diff --git a/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-dark-withTitle.ico b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-dark-withTitle.ico
new file mode 100644
index 0000000000..476d05430f
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-dark-withTitle.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8033adaacd353f6928864f6213b05897ec5257289840ee88bc41b7f816d9f126
+size 8786
diff --git a/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-dark.ico b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-dark.ico
index 8bf3bda3ea..7b416fc1be 100644
--- a/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-dark.ico
+++ b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-dark.ico
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9e8e491ce3392d5a7f98fe395919e8472e651c2a0d6687df4964715c5df2520a
-size 10449
+oid sha256:f6bb4127c9fe2c530c1e3b4a277e939f6de501d3cc0244d0369473a667718d18
+size 4962
diff --git a/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-light-with-title.ico b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-light-with-title.ico
new file mode 100644
index 0000000000..ec761f5360
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-light-with-title.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:106377ab17a76741a26125107a0423a4a5d4303888a1e815ed4e6a1932bb0859
+size 8789
diff --git a/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-light-withTitle.ico b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-light-withTitle.ico
new file mode 100644
index 0000000000..6d53500c16
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-light-withTitle.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d355bd17a16fae60ad90be6c6178153ea1d87c80210e73931129616aef8d9132
+size 8782
diff --git a/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-light.ico b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-light.ico
index 9779904eb7..78b905a9f2 100644
--- a/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-light.ico
+++ b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-highcontrast-light.ico
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:304f778a1b49536e633137d8ebac8e334ce660aa5fcc7781824f44f6b669b545
-size 9852
+oid sha256:7bfeb3d6a5c171a8d0d762263b1c2414949c52b76745b3220fdd70c8689e79db
+size 4912
diff --git a/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-light-with-title.ico b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-light-with-title.ico
new file mode 100644
index 0000000000..1ba0906471
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-light-with-title.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ff618adb5b8327a4a29073249b70b8c628bc392ec8c8be72713e6addbad2d649
+size 8595
diff --git a/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-light-withTitle.ico b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-light-withTitle.ico
new file mode 100644
index 0000000000..9a5bd9fb79
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-light-withTitle.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2720347a9599ce2c4b4f7f07a56e3dab10bfe0646b2e2d9f66dad927013880aa
+size 8588
diff --git a/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-light.ico b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-light.ico
index e20826f3dc..72827574f7 100644
--- a/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-light.ico
+++ b/packages/stacks-classic/screenshots/Chromium/baseline/s-empty-state-light.ico
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a89e77df3a1d709d751f94ebd59c0e439a736e201bc5c2cff2872bdb72d3afac
-size 9947
+oid sha256:4692877f28bbc9fa042e05a85f8361f1a28e8569eddba4c9ba11c8d60fb4997e
+size 4844
diff --git a/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-dark-with-title.ico b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-dark-with-title.ico
new file mode 100644
index 0000000000..290efbc349
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-dark-with-title.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bfda345117d0322843da191a69356ed40a60f2c86e7ebd22664b0a06f667f8f2
+size 12538
diff --git a/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-dark-withTitle.ico b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-dark-withTitle.ico
new file mode 100644
index 0000000000..e7f5b1bf4c
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-dark-withTitle.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f4fb1ba22e07d2c6f253e21852d3465ae92e9938997e92177bc4b3880ed31488
+size 12565
diff --git a/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-dark.ico b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-dark.ico
index 36d23e786a..44a84cb023 100644
--- a/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-dark.ico
+++ b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-dark.ico
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0ea7b4378ca813105adc1de4585ca88d62aa2c6d85f07ad7c4fac583ae5d2e63
-size 14559
+oid sha256:037b1502f9a69c255871b19cb0d8a63f8050cf826bbf7b15b817bfa1534476b0
+size 7681
diff --git a/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-dark-with-title.ico b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-dark-with-title.ico
new file mode 100644
index 0000000000..51c7c09c15
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-dark-with-title.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:895e62747b0711ff16abf4a03a2f518611252fb18e124898007fd4c6cab52808
+size 12587
diff --git a/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-dark-withTitle.ico b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-dark-withTitle.ico
new file mode 100644
index 0000000000..9cc3991640
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-dark-withTitle.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8fc5ef304dd47f1ff6a2e3dbf86ea6060552b03108f06fe56a865ce2e22fb848
+size 12613
diff --git a/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-dark.ico b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-dark.ico
index e8d2bf4e28..1e5edf2486 100644
--- a/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-dark.ico
+++ b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-dark.ico
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ffb32312369a2acab1aad1a79464400e6d957778b02d6d2368aaf26f3abc3830
-size 14607
+oid sha256:6984bb7c7acc7d900572926d77444909815670e884b2866f78990ab669df2daa
+size 7747
diff --git a/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-light-with-title.ico b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-light-with-title.ico
new file mode 100644
index 0000000000..922efdc23c
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-light-with-title.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b32e88072db1e29476df89fc603c6d356e12b231e19618773f73a27a66036435
+size 12268
diff --git a/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-light-withTitle.ico b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-light-withTitle.ico
new file mode 100644
index 0000000000..01788e8030
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-light-withTitle.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5908f7e495cb1d410b154749065448f4b5aa543b129e75c4f5f4c5b15b081714
+size 12294
diff --git a/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-light.ico b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-light.ico
index d0aa78ee1d..15ffea9273 100644
--- a/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-light.ico
+++ b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-highcontrast-light.ico
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d9fa9ca91a903c6af5830a07e592da8848916a05d66901ca2fbf0c63bb9203d1
-size 14326
+oid sha256:babf286cdfaed4239fa2bd9a622a22e00f81d83912cfb91ebb4ba5d740d8d773
+size 7608
diff --git a/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-light-with-title.ico b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-light-with-title.ico
new file mode 100644
index 0000000000..856823b3a7
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-light-with-title.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0fb5ed282c442f215e566167b0c51082d93e28d05f60d4d730afe076b4af8387
+size 12129
diff --git a/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-light-withTitle.ico b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-light-withTitle.ico
new file mode 100644
index 0000000000..79c9fedef2
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-light-withTitle.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:82682a993a09de13aa4b29e3c4e93be29a9c71706f70a509576cf4c5256239f5
+size 12155
diff --git a/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-light.ico b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-light.ico
index e65057473d..def7121f50 100644
--- a/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-light.ico
+++ b/packages/stacks-classic/screenshots/Firefox/baseline/s-empty-state-light.ico
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f7a3461edde26a19c2db0cb8f48fcd7a11f73cacef071915b1e98a9979546690
-size 14135
+oid sha256:b3e4a5d663e048339750521c1ee12db9d49c979c86e34860622019a985458646
+size 7543
diff --git a/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-dark-with-title.ico b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-dark-with-title.ico
new file mode 100644
index 0000000000..e43bc62777
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-dark-with-title.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c44c854487589df61d9733ffc6fb81723821de9aee0573f727b3daa47aaed511
+size 10535
diff --git a/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-dark-withTitle.ico b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-dark-withTitle.ico
new file mode 100644
index 0000000000..9dc9949c10
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-dark-withTitle.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:45de364e970f768f4208529f191f8efdc6095b7c8f035f5372e5bc4d85ac528d
+size 10527
diff --git a/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-dark.ico b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-dark.ico
index 8617cecd72..652317eaa8 100644
--- a/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-dark.ico
+++ b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-dark.ico
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f9575a575df5e335753b7ca26e80a9cdbb6cafb37910aea661f0fef3c675c646
-size 12124
+oid sha256:69ec21b24df946f3954c661b09076814bcfe33315d413e7f435fba4fa3c56c06
+size 6012
diff --git a/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-dark-with-title.ico b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-dark-with-title.ico
new file mode 100644
index 0000000000..9ef220430d
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-dark-with-title.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3443cda8cde6fbcd37238d132310798e8376158f8f3f04713a9e95245ee6ff8f
+size 10516
diff --git a/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-dark-withTitle.ico b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-dark-withTitle.ico
new file mode 100644
index 0000000000..19c9044442
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-dark-withTitle.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b518cbbfa5232fae6df1bcb7c9d2e8a4bb55e63c6a586aa5d0d417e859ce4cda
+size 10507
diff --git a/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-dark.ico b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-dark.ico
index 7f3a1d48fb..6fc50d752a 100644
--- a/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-dark.ico
+++ b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-dark.ico
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f32692921567602bddc548d13b2c303d2c16289c298571364e8d3a7dde23dff0
-size 12413
+oid sha256:bd13e509147261e1e98247d8a97144c692528b28d348dab6449944ccfd1e9499
+size 5983
diff --git a/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-light-with-title.ico b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-light-with-title.ico
new file mode 100644
index 0000000000..49306713b3
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-light-with-title.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7181f9fd8ac664fbf9263df5c7274593d40f140a031605fe3a59d0e13540c52c
+size 10647
diff --git a/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-light-withTitle.ico b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-light-withTitle.ico
new file mode 100644
index 0000000000..caaf8cd918
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-light-withTitle.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:77c07d37d7fae93cbd5bd0a08f192f559e150d8a0fc27b593666187f07a16d78
+size 10638
diff --git a/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-light.ico b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-light.ico
index 17322036c9..7ccb8b471f 100644
--- a/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-light.ico
+++ b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-highcontrast-light.ico
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:8b8ceddbd32608a07fdac977291f511fcbf6b493cbafbcd3108522c20c341855
-size 12216
+oid sha256:4abc5ef6b29d547d085f881b0099f4136525c829696d9a81b7634909216f8d02
+size 6012
diff --git a/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-light-with-title.ico b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-light-with-title.ico
new file mode 100644
index 0000000000..db6ef35604
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-light-with-title.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0fefd26d34d0dd0f792c5f42e24319f9161e4d9bdfdfcfcd2210d1095168d063
+size 10382
diff --git a/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-light-withTitle.ico b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-light-withTitle.ico
new file mode 100644
index 0000000000..786e5c301c
--- /dev/null
+++ b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-light-withTitle.ico
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8c45db21dc51a5905a22880ab75ebe397af7ecd315b3cf6c694fa36d6b5c5c86
+size 10372
diff --git a/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-light.ico b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-light.ico
index 52f1461b9f..f90c1a6079 100644
--- a/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-light.ico
+++ b/packages/stacks-classic/screenshots/Webkit/baseline/s-empty-state-light.ico
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:18ed145cc87bd5c25eada1c06f126488517e04b4a8ea11521f48d13c8d06305f
-size 12084
+oid sha256:f0172e907c70b655f4f490ebe7c88c6868450a4a56acec8b7c1b4c0023de3564
+size 5921
diff --git a/packages/stacks-docs/_data/site-navigation.json b/packages/stacks-docs/_data/site-navigation.json
index 9025e7277c..15f3ec9b47 100644
--- a/packages/stacks-docs/_data/site-navigation.json
+++ b/packages/stacks-docs/_data/site-navigation.json
@@ -254,7 +254,8 @@
},
{
"title": "Empty states",
- "url": "/product/components/empty-states/"
+ "url": "/product/components/empty-states/",
+ "new": true
},
{
"title": "Expandable",
diff --git a/packages/stacks-docs/product/components/empty-states.html b/packages/stacks-docs/product/components/empty-states.html
index 0ff8233f72..87d8702155 100644
--- a/packages/stacks-docs/product/components/empty-states.html
+++ b/packages/stacks-docs/product/components/empty-states.html
@@ -1,95 +1,76 @@
---
layout: page
title: Empty states
+svelte: https://beta.svelte.stackoverflow.design/?path=/docs/components-emptystate--docs
+figma: https://www.figma.com/design/do4Ug0Yws8xCfRjHe9cJfZ/Project-SHINE---Product-UI?node-id=610-18807&p=f&m=dev
description: Empty states are used when there is no data to show. Ideally they orient the user by providing feedback based on the the user’s last interaction or communicate the benefits of a feature. When appropriate, they should explain the next steps the user should take and provide guidance with a clear call-to-action.
tags: components
---
- {% header "h2", "No data" %}
+ {% header "h2", "No data or results" %}
- Used when a user hasn’t interacted with a feature yet.
+ Typical use-case for an empty state is when a feature has no data or a search/filter operation yields no results.
- {% header "h3", "No data actionable" %}
+ {% header "h3", "Actionable" %}
- If the user can take an action to fix the situation, it's best to draw attention to it, explain next steps, and provide a call-to-action.
+ If the user is able to address the situation resulting in an empty state, it is appropriate to include a button for them to do so.
Try refining your search term or trying something more general.
+
- {% header "h3", "No data non-actionable" %}
+
+ {% header "h3", "Non-actionable" %}
- If the user can’t take an action to fix the situation, it’s more appropriate to set expectations.
+ If the user can’t take an action to fix the situation, it’s appropriate to set expectations.
{% highlight html %}
- @Svg.Spot.EmptyXL.With("mb24")
-
Why is this blank? Explain it.
+ @Svg.Spot.Empty.With("native")
+
User trends not ready
+
Please check back in a few days.
{% endhighlight %}
- {% spot, "EmptyXL", "mb24" %}
-
There’s no data associated with your account yet. Please check back tomorrow.
-
-
-
-
-
- {% header "h2", "No results" %}
-
- When someone performs an action that returns nothing, a blank state can explain what happened and help get someone back on track.
-
- {% header "h3", "No results actionable" %}
-
- If the user can take an action to fix the situation, it’s best to draw attention to it and provide a call-to-action.
-
- If the user can’t take an action to fix the situation, it’s more appropriate to set expectations.
+ If desired, both the title and call-to-action may be omitted for a minimal look.
-
+
\ No newline at end of file
diff --git a/packages/stacks-docs/product/components/textarea.html b/packages/stacks-docs/product/components/textarea.html
index f56821a670..43b82e37a0 100644
--- a/packages/stacks-docs/product/components/textarea.html
+++ b/packages/stacks-docs/product/components/textarea.html
@@ -13,7 +13,7 @@
-
+
{% endhighlight %}
@@ -21,7 +21,7 @@
-
+
@@ -72,7 +72,7 @@
-
+
@Svg.Alert.With("s-input-icon")
Consider entering a description to help us better help you.
@@ -82,7 +82,7 @@
-
+
{% icon "Alert", "s-input-icon" %}
Consider entering a description to help us better help you.
diff --git a/packages/stacks-svelte/src/components/EmptyState/EmptyState.stories.svelte b/packages/stacks-svelte/src/components/EmptyState/EmptyState.stories.svelte
new file mode 100644
index 0000000000..1212d2202a
--- /dev/null
+++ b/packages/stacks-svelte/src/components/EmptyState/EmptyState.stories.svelte
@@ -0,0 +1,34 @@
+
+
+
+ {#snippet template(args)}
+
+ {#snippet description()}
+ There are no items to display at this time.
+ {/snippet}
+ {#snippet actions()}
+
+ {/snippet}
+
+ {/snippet}
+
+
+
+ {#snippet template(args)}
+
+ {#snippet description()}
+ No data found. Check back later.
+ {/snippet}
+
+ {/snippet}
+
diff --git a/packages/stacks-svelte/src/components/EmptyState/EmptyState.svelte b/packages/stacks-svelte/src/components/EmptyState/EmptyState.svelte
new file mode 100644
index 0000000000..eeeab4b3db
--- /dev/null
+++ b/packages/stacks-svelte/src/components/EmptyState/EmptyState.svelte
@@ -0,0 +1,54 @@
+
+
+
+
+ {#if title}
+
+ {title}
+
+ {/if}
+
{@render description()}
+ {#if actions}
+ {@render actions()}
+ {/if}
+
diff --git a/packages/stacks-svelte/src/components/EmptyState/EmptyState.test.ts b/packages/stacks-svelte/src/components/EmptyState/EmptyState.test.ts
new file mode 100644
index 0000000000..9a9631ab0a
--- /dev/null
+++ b/packages/stacks-svelte/src/components/EmptyState/EmptyState.test.ts
@@ -0,0 +1,46 @@
+import { expect } from "@open-wc/testing";
+import { render, screen } from "@testing-library/svelte";
+import { createRawSnippet } from "svelte";
+import EmptyState from "./EmptyState.svelte";
+
+describe("EmptyState", () => {
+ it("should render an empty state with the description content", () => {
+ render(EmptyState, {
+ description: createRawSnippet(() => ({
+ render: () =>
+ "There are no items to display at this time.",
+ })),
+ });
+ expect(screen.getByText("There are no items to display at this time."))
+ .to.exist;
+ });
+
+ it("should render an empty state with the description and call-to-action content", () => {
+ render(EmptyState, {
+ description: createRawSnippet(() => ({
+ render: () =>
+ "There are no items to display at this time.",
+ })),
+ actions: createRawSnippet(() => ({
+ render: () =>
+ '',
+ })),
+ });
+ expect(screen.getByText("There are no items to display at this time."))
+ .to.exist;
+ expect(screen.getByRole("button")).to.exist;
+ });
+
+ it("should render an empty state with the description and title content", () => {
+ render(EmptyState, {
+ description: createRawSnippet(() => ({
+ render: () =>
+ "There are no items to display at this time.",
+ })),
+ title: "No results found",
+ });
+ expect(screen.getByText("There are no items to display at this time."))
+ .to.exist;
+ expect(screen.getByText("No results found")).to.exist;
+ });
+});
diff --git a/packages/stacks-svelte/src/components/ExpandingInput/ExpandingInput.svelte b/packages/stacks-svelte/src/components/ExpandingInput/ExpandingInput.svelte
index d7d8dd8da7..bdc7025017 100644
--- a/packages/stacks-svelte/src/components/ExpandingInput/ExpandingInput.svelte
+++ b/packages/stacks-svelte/src/components/ExpandingInput/ExpandingInput.svelte
@@ -3,28 +3,35 @@
-
{value}
diff --git a/packages/stacks-svelte/src/components/PostSummary/PostSummary.svelte b/packages/stacks-svelte/src/components/PostSummary/PostSummary.svelte
index 3bc507526a..ced266bec4 100644
--- a/packages/stacks-svelte/src/components/PostSummary/PostSummary.svelte
+++ b/packages/stacks-svelte/src/components/PostSummary/PostSummary.svelte
@@ -35,8 +35,11 @@
import PopoverContent from "../Popover/PopoverContent.svelte";
import PopoverReference from "../Popover/PopoverReference.svelte";
import UserCard from "../UserCard/UserCard.svelte";
- import { IconShield } from "@stackoverflow/stacks-icons-legacy/icons";
- import { IconCheck, IconMore16V } from "@stackoverflow/stacks-icons/icons";
+ import {
+ IconShield,
+ IconEllipsisVertical,
+ } from "@stackoverflow/stacks-icons-legacy/icons";
+ import { IconCheck } from "@stackoverflow/stacks-icons/icons";
/**
* The URL to navigate to when the post title is clicked
@@ -349,7 +352,7 @@
class="s-post-summary--content-menu-button"
variant="tonal"
>
-
+ {i18nActionMenuButtonText}
diff --git a/packages/stacks-svelte/src/components/index.ts b/packages/stacks-svelte/src/components/index.ts
index e551216bc9..0ef917eeb7 100644
--- a/packages/stacks-svelte/src/components/index.ts
+++ b/packages/stacks-svelte/src/components/index.ts
@@ -3,6 +3,7 @@ export { default as Avatar } from "./Avatar/Avatar.svelte";
export { default as Badge } from "./Badge/Badge.svelte";
export { default as Bling } from "./Bling/Bling.svelte";
export { default as Button } from "./Button/Button.svelte";
+export { default as EmptyState } from "./EmptyState/EmptyState.svelte";
export { default as ExpandingInput } from "./ExpandingInput/ExpandingInput.svelte";
export { default as Icon } from "./Icon/Icon.svelte";
export { default as Link } from "./Link/Link.svelte";