diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..90011de --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,15 @@ +services: + app: + environment: + NODE_ENV: development + WATCHPACK_POLLING: "true" + command: sh -c "npm install && npm run dev" + volumes: + - .:/app + - app_node_modules:/app/node_modules + - app_next:/app/.next + restart: unless-stopped + +volumes: + app_node_modules: + app_next: diff --git a/next.config.ts b/next.config.ts index 58daf53..ac288db 100644 --- a/next.config.ts +++ b/next.config.ts @@ -48,6 +48,10 @@ const nextConfig: NextConfig = { allowedDevOrigins: [ "https://precontributive-tribally-dione.ngrok-free.dev", "https://*.ngrok-free.dev", + "https://*.ngrok-free.app", + "https://brave-destined-gelding.ngrok-free.app", + "brave-destined-gelding.ngrok-free.app", + "*.ngrok-free.app", "https://*.ngrok.io", ], reactCompiler: true, diff --git a/saad.commands b/saad.commands new file mode 100644 index 0000000..5b2318f --- /dev/null +++ b/saad.commands @@ -0,0 +1,3 @@ +docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build + +docker compose -f docker-compose.yml -f docker-compose.dev.yml down diff --git a/src/app/dashboard/orders/[orderId]/page.tsx b/src/app/dashboard/orders/[orderId]/page.tsx index 71188ed..9bb47f0 100644 --- a/src/app/dashboard/orders/[orderId]/page.tsx +++ b/src/app/dashboard/orders/[orderId]/page.tsx @@ -169,8 +169,8 @@ export default function OrderDetailsPage() { {/* Order Summary & Status - Symmetric Top Grid */}
{/* Order Date */} -
-
+
+
Order Date
@@ -180,8 +180,8 @@ export default function OrderDetailsPage() {
{/* Total Amount */} -
-
+
+
Total Amount
@@ -191,13 +191,13 @@ export default function OrderDetailsPage() {
{/* Payment Status */} -
- +
+ Payment Status
{/* Fulfillment Status */} -
- +
+ Fulfillment Status
{/* Left Column - Customer & Shipping */} -
+
{/* Customer — always shown; placeholder when nothing is linked */}
@@ -295,11 +295,10 @@ export default function OrderDetailsPage() {
)}
-
- {/* Centered Order Items Card */} -
-
+ {/* Middle Column - Order Items */} +
+
Order Items @@ -373,9 +372,10 @@ export default function OrderDetailsPage() {

{order.note}

)} +
+
-
) } diff --git a/src/app/globals.css b/src/app/globals.css index d05e89a..1ac9212 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -26,9 +26,10 @@ html[data-theme="light"] { --background: #f8fafc; --foreground: #020617; --primary: var(--color-indigo-accent); - --glass-bg: rgba(255, 255, 255, 0.9); - --glass-border: rgba(148, 163, 184, 0.35); - --glass-card: rgba(255, 255, 255, 0.95); + /* Slightly darker glass so containers/text contrast stays crisp in light mode */ + --glass-bg: rgba(255, 255, 255, 0.82); + --glass-border: rgba(148, 163, 184, 0.55); + --glass-card: rgba(255, 255, 255, 0.88); --dashboard-bg: #f9fafb; --dashboard-mesh: radial-gradient(ellipse 80% 50% at 50% -20%, rgba(191, 219, 254, 0.6), transparent), radial-gradient(ellipse 60% 40% at 100% 50%, rgba(221, 214, 254, 0.5), transparent), @@ -99,6 +100,14 @@ html[data-theme="light"] .text-slate-200 { color: #374151 !important; } +html[data-theme="light"] .text-slate-500 { + color: #475569 !important; +} + +html[data-theme="light"] .text-slate-600 { + color: #334155 !important; +} + /* Sidebar & header backgrounds in light mode */ html[data-theme="light"] .bg-slate-900\/70 { background-color: rgba(255, 255, 255, 0.98) !important; @@ -112,11 +121,57 @@ html[data-theme="light"] .bg-slate-900\/50 { /* Small chips / badges that were pure white text */ html[data-theme="light"] .bg-white\/10 { - background-color: rgba(15, 23, 42, 0.04); + /* Darken a bit for better legibility on glass */ + background-color: rgba(15, 23, 42, 0.065) !important; +} + +html[data-theme="light"] .border-white\/10 { + border-color: rgba(148, 163, 184, 0.45) !important; } html[data-theme="light"] .bg-white\/5 { - background-color: rgba(15, 23, 42, 0.03); + background-color: rgba(15, 23, 42, 0.045) !important; +} + +html[data-theme="light"] .border-white\/5 { + border-color: rgba(148, 163, 184, 0.25) !important; +} + +/* ------------------------------ */ +/* Dark mode contrast improvements */ +/* ------------------------------ */ +/* Many components use Tailwind text/border colors (e.g. text-slate-400) + on top of glass backgrounds (bg-white/5, border-white/10). In dark mode + some of these become too low-contrast, so we raise their readability + globally without touching component logic. */ +html:not([data-theme="light"]) .text-slate-400 { + color: #cbd5e1 !important; +} +html:not([data-theme="light"]) .text-slate-500 { + color: #94a3b8 !important; +} +html:not([data-theme="light"]) .text-slate-300 { + color: #e2e8f0 !important; +} +html:not([data-theme="light"]) .text-slate-200 { + color: #e5e7eb !important; +} +html:not([data-theme="light"]) .text-slate-600 { + color: #a3b3c6 !important; +} + +/* Make glass container backgrounds and borders more visible */ +html:not([data-theme="light"]) .bg-white\/5 { + background-color: rgba(255, 255, 255, 0.065) !important; +} +html:not([data-theme="light"]) .bg-white\/10 { + background-color: rgba(255, 255, 255, 0.125) !important; +} +html:not([data-theme="light"]) .border-white\/5 { + border-color: rgba(255, 255, 255, 0.14) !important; +} +html:not([data-theme="light"]) .border-white\/10 { + border-color: rgba(148, 163, 184, 0.42) !important; } diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index fb8f3cb..1c09b96 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -99,6 +99,10 @@ export function Sidebar({ showLogo = true, className }: SidebarProps) { const pathname = usePathname() const { theme } = useTheme() const isLight = theme === "light" + const isRouteActive = (href: string) => { + if (href === "/dashboard") return pathname === "/dashboard" + return pathname === href || pathname.startsWith(`${href}/`) + } return (
- {route.subRoutes && pathname.startsWith(route.href) && ( + {route.subRoutes && isRouteActive(route.href) && (
{route.subRoutes.map((sub) => (