diff --git a/packages/stack-server/src/app/(main)/(protected)/(outside-dashbaord)/loading.tsx b/packages/stack-server/src/app/(main)/(protected)/(outside-dashbaord)/loading.tsx
index 4349ac3a6..9795fb2ff 100644
--- a/packages/stack-server/src/app/(main)/(protected)/(outside-dashbaord)/loading.tsx
+++ b/packages/stack-server/src/app/(main)/(protected)/(outside-dashbaord)/loading.tsx
@@ -1,3 +1,5 @@
+import { SiteLoadingIndicator } from "@/components/site-loading-indicator";
+
export default function Loading() {
- return null;
+ return ;
}
diff --git a/packages/stack-server/src/app/(main)/(protected)/projects/[projectId]/loading.tsx b/packages/stack-server/src/app/(main)/(protected)/projects/[projectId]/loading.tsx
index 4349ac3a6..9795fb2ff 100644
--- a/packages/stack-server/src/app/(main)/(protected)/projects/[projectId]/loading.tsx
+++ b/packages/stack-server/src/app/(main)/(protected)/projects/[projectId]/loading.tsx
@@ -1,3 +1,5 @@
+import { SiteLoadingIndicator } from "@/components/site-loading-indicator";
+
export default function Loading() {
- return null;
+ return ;
}
diff --git a/packages/stack-server/src/app/globals.css b/packages/stack-server/src/app/globals.css
index d5b44e4be..df28bae3a 100644
--- a/packages/stack-server/src/app/globals.css
+++ b/packages/stack-server/src/app/globals.css
@@ -1,76 +1,116 @@
@tailwind base;
- @tailwind components;
- @tailwind utilities;
+@tailwind components;
+@tailwind utilities;
- @layer base {
- :root {
- --background: 0 0% 100%;
- --foreground: 240 10% 3.9%;
+@layer base {
+ :root {
+ --background: 0 0% 100%;
+ --foreground: 240 10% 3.9%;
- --card: 0 0% 100%;
- --card-foreground: 240 10% 3.9%;
+ --card: 0 0% 100%;
+ --card-foreground: 240 10% 3.9%;
- --popover: 0 0% 100%;
- --popover-foreground: 240 10% 3.9%;
+ --popover: 0 0% 100%;
+ --popover-foreground: 240 10% 3.9%;
- --primary: 240 5.9% 10%;
- --primary-foreground: 0 0% 98%;
+ --primary: 240 5.9% 10%;
+ --primary-foreground: 0 0% 98%;
- --secondary: 240 4.8% 95.9%;
- --secondary-foreground: 240 5.9% 10%;
+ --secondary: 240 4.8% 95.9%;
+ --secondary-foreground: 240 5.9% 10%;
- --muted: 240 4.8% 95.9%;
- --muted-foreground: 240 3.8% 46.1%;
+ --muted: 240 4.8% 95.9%;
+ --muted-foreground: 240 3.8% 46.1%;
- --accent: 240 4.8% 95.9%;
- --accent-foreground: 240 5.9% 10%;
+ --accent: 240 4.8% 95.9%;
+ --accent-foreground: 240 5.9% 10%;
- --destructive: 0 84.2% 60.2%;
- --destructive-foreground: 0 0% 98%;
+ --destructive: 0 84.2% 60.2%;
+ --destructive-foreground: 0 0% 98%;
- --border: 240 5.9% 90%;
- --input: 240 5.9% 90%;
- --ring: 240 10% 3.9%;
+ --border: 240 5.9% 90%;
+ --input: 240 5.9% 90%;
+ --ring: 240 10% 3.9%;
- --radius: 0.5rem;
- }
-
- .dark {
- --background: 240 10% 3.9%;
- --foreground: 0 0% 98%;
-
- --card: 240 10% 3.9%;
- --card-foreground: 0 0% 98%;
-
- --popover: 240 10% 3.9%;
- --popover-foreground: 0 0% 98%;
-
- --primary: 0 0% 98%;
- --primary-foreground: 240 5.9% 10%;
-
- --secondary: 240 3.7% 15.9%;
- --secondary-foreground: 0 0% 98%;
-
- --muted: 240 3.7% 15.9%;
- --muted-foreground: 240 5% 64.9%;
-
- --accent: 240 3.7% 15.9%;
- --accent-foreground: 0 0% 98%;
-
- --destructive: 0 62.8% 50%;
- --destructive-foreground: 0 0% 98%;
-
- --border: 240 3.7% 15.9%;
- --input: 240 3.7% 15.9%;
- --ring: 240 4.9% 83.9%;
- }
+ --radius: 0.5rem;
}
- @layer base {
- * {
- @apply border-border;
- }
- body {
- @apply bg-background text-foreground;
- }
- }
\ No newline at end of file
+ .dark {
+ --background: 240 10% 3.9%;
+ --foreground: 0 0% 98%;
+
+ --card: 240 10% 3.9%;
+ --card-foreground: 0 0% 98%;
+
+ --popover: 240 10% 3.9%;
+ --popover-foreground: 0 0% 98%;
+
+ --primary: 0 0% 98%;
+ --primary-foreground: 240 5.9% 10%;
+
+ --secondary: 240 3.7% 15.9%;
+ --secondary-foreground: 0 0% 98%;
+
+ --muted: 240 3.7% 15.9%;
+ --muted-foreground: 240 5% 64.9%;
+
+ --accent: 240 3.7% 15.9%;
+ --accent-foreground: 0 0% 98%;
+
+ --destructive: 0 62.8% 50%;
+ --destructive-foreground: 0 0% 98%;
+
+ --border: 240 3.7% 15.9%;
+ --input: 240 3.7% 15.9%;
+ --ring: 240 4.9% 83.9%;
+ }
+}
+
+@layer base {
+ * {
+ @apply border-border;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+}
+
+.loader {
+ top: 0;
+ left: 0;
+ width: 100vw;
+ height: 3px;
+ position: absolute;
+ background: transparent;
+ overflow: hidden;
+ z-index: 9999;
+}
+.loader::after {
+ content: '';
+ width: 40%;
+ height: 3px;
+ position: absolute;
+ top: 0;
+ left: 0;
+ box-sizing: border-box;
+ animation: animloader 1s linear infinite;
+ @apply bg-primary;
+}
+
+@media (min-width: 800px) {
+ .loader::after {
+ width: 20%;
+ animation: animloader 2s linear infinite;
+ }
+}
+
+@keyframes animloader {
+ 0% {
+ left: 0;
+ transform: translateX(-100%);
+ }
+ 100% {
+ left: 100%;
+ transform: translateX(0%);
+ }
+}
\ No newline at end of file
diff --git a/packages/stack-server/src/app/loading.tsx b/packages/stack-server/src/app/loading.tsx
index 4349ac3a6..9795fb2ff 100644
--- a/packages/stack-server/src/app/loading.tsx
+++ b/packages/stack-server/src/app/loading.tsx
@@ -1,3 +1,5 @@
+import { SiteLoadingIndicator } from "@/components/site-loading-indicator";
+
export default function Loading() {
- return null;
+ return ;
}
diff --git a/packages/stack-server/src/components/site-loading-indicator.tsx b/packages/stack-server/src/components/site-loading-indicator.tsx
new file mode 100644
index 000000000..76256ecbb
--- /dev/null
+++ b/packages/stack-server/src/components/site-loading-indicator.tsx
@@ -0,0 +1,3 @@
+export function SiteLoadingIndicator() {
+ return ;
+}
\ No newline at end of file