- Session stored as an encrypted (JWE) httpOnly cookie; access/refresh tokens never reach the client, client_secret never leaves the server. - winofyFetch: server-side API client matching FRONTEND_GUIDE.md's plain-success / wrapped-error (§4.1-4.2) convention, with auto token refresh. - Login page (phone -> OTP) wired to Gooyal accounts staging; request_otp verified working end-to-end. Token exchange returns invalid_client with the client_id/secret currently on hand — needs a fix from whoever issued them. - proxy.ts (Next 16's renamed middleware) gates seller/cart/checkout/orders routes, verified redirecting unauthenticated requests to /login. - Customer home page renders real store/category data fetched live from winofy-staging.winsoo.ir.
52 lines
1.4 KiB
CSS
52 lines
1.4 KiB
CSS
@import "tailwindcss";
|
|
|
|
/*
|
|
* Placeholder tokens — TODO replace with real values pulled from the Figma
|
|
* design-system page (get_variable_defs) once file access is granted.
|
|
*/
|
|
:root {
|
|
--background: #ffffff;
|
|
--foreground: #171717;
|
|
--primary: #16a34a;
|
|
--primary-foreground: #ffffff;
|
|
--secondary: #f1f5f9;
|
|
--secondary-foreground: #171717;
|
|
--muted: #f1f5f9;
|
|
--muted-foreground: #6b7280;
|
|
--border: #e5e7eb;
|
|
--destructive: #dc2626;
|
|
--destructive-foreground: #ffffff;
|
|
}
|
|
|
|
@theme inline {
|
|
--color-background: var(--background);
|
|
--color-foreground: var(--foreground);
|
|
--color-primary: var(--primary);
|
|
--color-primary-foreground: var(--primary-foreground);
|
|
--color-secondary: var(--secondary);
|
|
--color-secondary-foreground: var(--secondary-foreground);
|
|
--color-muted: var(--muted);
|
|
--color-muted-foreground: var(--muted-foreground);
|
|
--color-border: var(--border);
|
|
--color-destructive: var(--destructive);
|
|
--color-destructive-foreground: var(--destructive-foreground);
|
|
--font-sans: var(--font-vazirmatn);
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
:root {
|
|
--background: #0a0a0a;
|
|
--foreground: #ededed;
|
|
--secondary: #1f2937;
|
|
--secondary-foreground: #ededed;
|
|
--muted: #1f2937;
|
|
--muted-foreground: #9ca3af;
|
|
--border: #27272a;
|
|
}
|
|
}
|
|
|
|
body {
|
|
background: var(--background);
|
|
color: var(--foreground);
|
|
font-family: var(--font-sans), system-ui, sans-serif;
|
|
}
|