diff --git a/web/src/app/loading.tsx b/web/src/app/loading.tsx
new file mode 100644
index 000000000..e1ddebd9f
--- /dev/null
+++ b/web/src/app/loading.tsx
@@ -0,0 +1,9 @@
+import { FilterListTableSkeleton } from "@/components/filterlist-table/skeleton";
+
+export default function Loading() {
+ return (
+
+
+
+ );
+}
diff --git a/web/src/components/filterlist-table.tsx b/web/src/components/filterlist-table/index.tsx
similarity index 100%
rename from web/src/components/filterlist-table.tsx
rename to web/src/components/filterlist-table/index.tsx
diff --git a/web/src/components/filterlist-table/skeleton.tsx b/web/src/components/filterlist-table/skeleton.tsx
new file mode 100644
index 000000000..0e8677b02
--- /dev/null
+++ b/web/src/components/filterlist-table/skeleton.tsx
@@ -0,0 +1,33 @@
+import { Skeleton } from "@/components/ui/skeleton";
+
+export function FilterListTableSkeleton() {
+ return (
+
+
+
+
+
+ |
+
+ |
+
+
+
+ {[...Array(10)].map((_, i) => (
+
+ |
+
+ |
+
+ ))}
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/web/src/components/ui/skeleton.tsx b/web/src/components/ui/skeleton.tsx
new file mode 100644
index 000000000..01689981c
--- /dev/null
+++ b/web/src/components/ui/skeleton.tsx
@@ -0,0 +1,13 @@
+import { cn } from "@/lib/utils";
+
+function Skeleton({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ );
+}
+
+export { Skeleton };