@@ -216,7 +214,7 @@ export default function SecretaryLayout({ children }: PatientLayoutProps) {
*/}
diff --git a/components/theme-initializer.tsx b/components/theme-initializer.tsx
new file mode 100644
index 0000000..cfa2fca
--- /dev/null
+++ b/components/theme-initializer.tsx
@@ -0,0 +1,32 @@
+import Script from 'next/script';
+
+const themeScript = `
+(function() {
+ try {
+ const theme = localStorage.getItem('accessibility-theme') || 'light';
+ const contrast = localStorage.getItem('accessibility-contrast') || 'normal';
+ const fontSize = localStorage.getItem('accessibility-font-size') || '16';
+
+ const root = document.documentElement;
+
+ // Clear previous theme classes
+ root.classList.remove('light', 'dark', 'high-contrast');
+
+ // Add new theme classes
+ root.classList.add(theme);
+ if (contrast === 'high') {
+ root.classList.add('high-contrast');
+ }
+
+ // Set font size
+ root.style.fontSize = fontSize + 'px';
+
+ } catch (e) {
+ console.error('Failed to apply theme from localStorage', e);
+ }
+})();
+`;
+
+export function ThemeInitializer() {
+ return ;
+}
diff --git a/components/ui/patient-details-modal.tsx b/components/ui/patient-details-modal.tsx
index ca7b716..fea1040 100644
--- a/components/ui/patient-details-modal.tsx
+++ b/components/ui/patient-details-modal.tsx
@@ -5,8 +5,8 @@ import {
} from "@/components/ui/dialog";
interface PatientDetailsModalProps {
- patient: any;
isOpen: boolean;
+ patient: any;
onClose: () => void;
}
diff --git a/package-lock.json b/package-lock.json
index 3e5a611..61667f8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -50,8 +50,10 @@
"embla-carousel-react": "8.5.1",
"geist": "^1.3.1",
"input-otp": "1.4.1",
+ "js-cookie": "^3.0.5",
+ "jwt-decode": "^4.0.0",
"lucide-react": "^0.454.0",
- "next": "14.2.16",
+ "next": "^14.2.33",
"next-themes": "^0.4.6",
"react": "^18",
"react-day-picker": "^9.8.0",
@@ -67,6 +69,7 @@
},
"devDependencies": {
"@tailwindcss/postcss": "^4.1.9",
+ "@types/js-cookie": "^3.0.6",
"@types/node": "^22",
"@types/react": "^18",
"@types/react-dom": "^18",
@@ -215,15 +218,15 @@
}
},
"node_modules/@next/env": {
- "version": "14.2.16",
- "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.16.tgz",
- "integrity": "sha512-fLrX5TfJzHCbnZ9YUSnGW63tMV3L4nSfhgOQ0iCcX21Pt+VSTDuaLsSuL8J/2XAiVA5AnzvXDpf6pMs60QxOag==",
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.33.tgz",
+ "integrity": "sha512-CgVHNZ1fRIlxkLhIX22flAZI/HmpDaZ8vwyJ/B0SDPTBuLZ1PJ+DWMjCHhqnExfmSQzA/PbZi8OAc7PAq2w9IA==",
"license": "MIT"
},
"node_modules/@next/swc-darwin-arm64": {
- "version": "14.2.16",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.16.tgz",
- "integrity": "sha512-uFT34QojYkf0+nn6MEZ4gIWQ5aqGF11uIZ1HSxG+cSbj+Mg3+tYm8qXYd3dKN5jqKUm5rBVvf1PBRO/MeQ6rxw==",
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.33.tgz",
+ "integrity": "sha512-HqYnb6pxlsshoSTubdXKu15g3iivcbsMXg4bYpjL2iS/V6aQot+iyF4BUc2qA/J/n55YtvE4PHMKWBKGCF/+wA==",
"cpu": [
"arm64"
],
@@ -237,9 +240,9 @@
}
},
"node_modules/@next/swc-darwin-x64": {
- "version": "14.2.16",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.16.tgz",
- "integrity": "sha512-mCecsFkYezem0QiZlg2bau3Xul77VxUD38b/auAjohMA22G9KTJneUYMv78vWoCCFkleFAhY1NIvbyjj1ncG9g==",
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.33.tgz",
+ "integrity": "sha512-8HGBeAE5rX3jzKvF593XTTFg3gxeU4f+UWnswa6JPhzaR6+zblO5+fjltJWIZc4aUalqTclvN2QtTC37LxvZAA==",
"cpu": [
"x64"
],
@@ -253,9 +256,9 @@
}
},
"node_modules/@next/swc-linux-arm64-gnu": {
- "version": "14.2.16",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.16.tgz",
- "integrity": "sha512-yhkNA36+ECTC91KSyZcgWgKrYIyDnXZj8PqtJ+c2pMvj45xf7y/HrgI17hLdrcYamLfVt7pBaJUMxADtPaczHA==",
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.33.tgz",
+ "integrity": "sha512-JXMBka6lNNmqbkvcTtaX8Gu5by9547bukHQvPoLe9VRBx1gHwzf5tdt4AaezW85HAB3pikcvyqBToRTDA4DeLw==",
"cpu": [
"arm64"
],
@@ -269,9 +272,9 @@
}
},
"node_modules/@next/swc-linux-arm64-musl": {
- "version": "14.2.16",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.16.tgz",
- "integrity": "sha512-X2YSyu5RMys8R2lA0yLMCOCtqFOoLxrq2YbazFvcPOE4i/isubYjkh+JCpRmqYfEuCVltvlo+oGfj/b5T2pKUA==",
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.33.tgz",
+ "integrity": "sha512-Bm+QulsAItD/x6Ih8wGIMfRJy4G73tu1HJsrccPW6AfqdZd0Sfm5Imhgkgq2+kly065rYMnCOxTBvmvFY1BKfg==",
"cpu": [
"arm64"
],
@@ -285,9 +288,9 @@
}
},
"node_modules/@next/swc-linux-x64-gnu": {
- "version": "14.2.16",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.16.tgz",
- "integrity": "sha512-9AGcX7VAkGbc5zTSa+bjQ757tkjr6C/pKS7OK8cX7QEiK6MHIIezBLcQ7gQqbDW2k5yaqba2aDtaBeyyZh1i6Q==",
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.33.tgz",
+ "integrity": "sha512-FnFn+ZBgsVMbGDsTqo8zsnRzydvsGV8vfiWwUo1LD8FTmPTdV+otGSWKc4LJec0oSexFnCYVO4hX8P8qQKaSlg==",
"cpu": [
"x64"
],
@@ -301,9 +304,9 @@
}
},
"node_modules/@next/swc-linux-x64-musl": {
- "version": "14.2.16",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.16.tgz",
- "integrity": "sha512-Klgeagrdun4WWDaOizdbtIIm8khUDQJ/5cRzdpXHfkbY91LxBXeejL4kbZBrpR/nmgRrQvmz4l3OtttNVkz2Sg==",
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.33.tgz",
+ "integrity": "sha512-345tsIWMzoXaQndUTDv1qypDRiebFxGYx9pYkhwY4hBRaOLt8UGfiWKr9FSSHs25dFIf8ZqIFaPdy5MljdoawA==",
"cpu": [
"x64"
],
@@ -317,9 +320,9 @@
}
},
"node_modules/@next/swc-win32-arm64-msvc": {
- "version": "14.2.16",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.16.tgz",
- "integrity": "sha512-PwW8A1UC1Y0xIm83G3yFGPiOBftJK4zukTmk7DI1CebyMOoaVpd8aSy7K6GhobzhkjYvqS/QmzcfsWG2Dwizdg==",
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.33.tgz",
+ "integrity": "sha512-nscpt0G6UCTkrT2ppnJnFsYbPDQwmum4GNXYTeoTIdsmMydSKFz9Iny2jpaRupTb+Wl298+Rh82WKzt9LCcqSQ==",
"cpu": [
"arm64"
],
@@ -333,9 +336,9 @@
}
},
"node_modules/@next/swc-win32-ia32-msvc": {
- "version": "14.2.16",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.16.tgz",
- "integrity": "sha512-jhPl3nN0oKEshJBNDAo0etGMzv0j3q3VYorTSFqH1o3rwv1MQRdor27u1zhkgsHPNeY1jxcgyx1ZsCkDD1IHgg==",
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.33.tgz",
+ "integrity": "sha512-pc9LpGNKhJ0dXQhZ5QMmYxtARwwmWLpeocFmVG5Z0DzWq5Uf0izcI8tLc+qOpqxO1PWqZ5A7J1blrUIKrIFc7Q==",
"cpu": [
"ia32"
],
@@ -349,9 +352,9 @@
}
},
"node_modules/@next/swc-win32-x64-msvc": {
- "version": "14.2.16",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.16.tgz",
- "integrity": "sha512-OA7NtfxgirCjfqt+02BqxC3MIgM/JaGjw9tOe4fyZgPsqfseNiMPnCRP44Pfs+Gpo9zPN+SXaFsgP6vk8d571A==",
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.33.tgz",
+ "integrity": "sha512-nOjfZMy8B94MdisuzZo9/57xuFVLHJaDj5e/xrduJp9CV2/HrfxTRH2fbyLe+K9QT41WBLUd4iXX3R7jBp0EUg==",
"cpu": [
"x64"
],
@@ -2463,6 +2466,13 @@
"integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==",
"license": "MIT"
},
+ "node_modules/@types/js-cookie": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz",
+ "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/linkify-it": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz",
@@ -3080,12 +3090,30 @@
"jiti": "lib/jiti-cli.mjs"
}
},
+ "node_modules/js-cookie": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
+ "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"license": "MIT"
},
+ "node_modules/jwt-decode": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz",
+ "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/lightningcss": {
"version": "1.30.1",
"resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz",
@@ -3452,12 +3480,12 @@
}
},
"node_modules/next": {
- "version": "14.2.16",
- "resolved": "https://registry.npmjs.org/next/-/next-14.2.16.tgz",
- "integrity": "sha512-LcO7WnFu6lYSvCzZoo1dB+IO0xXz5uEv52HF1IUN0IqVTUIZGHuuR10I5efiLadGt+4oZqTcNZyVVEem/TM5nA==",
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/next/-/next-14.2.33.tgz",
+ "integrity": "sha512-GiKHLsD00t4ACm1p00VgrI0rUFAC9cRDGReKyERlM57aeEZkOQGcZTpIbsGn0b562FTPJWmYfKwplfO9EaT6ng==",
"license": "MIT",
"dependencies": {
- "@next/env": "14.2.16",
+ "@next/env": "14.2.33",
"@swc/helpers": "0.5.5",
"busboy": "1.6.0",
"caniuse-lite": "^1.0.30001579",
@@ -3472,15 +3500,15 @@
"node": ">=18.17.0"
},
"optionalDependencies": {
- "@next/swc-darwin-arm64": "14.2.16",
- "@next/swc-darwin-x64": "14.2.16",
- "@next/swc-linux-arm64-gnu": "14.2.16",
- "@next/swc-linux-arm64-musl": "14.2.16",
- "@next/swc-linux-x64-gnu": "14.2.16",
- "@next/swc-linux-x64-musl": "14.2.16",
- "@next/swc-win32-arm64-msvc": "14.2.16",
- "@next/swc-win32-ia32-msvc": "14.2.16",
- "@next/swc-win32-x64-msvc": "14.2.16"
+ "@next/swc-darwin-arm64": "14.2.33",
+ "@next/swc-darwin-x64": "14.2.33",
+ "@next/swc-linux-arm64-gnu": "14.2.33",
+ "@next/swc-linux-arm64-musl": "14.2.33",
+ "@next/swc-linux-x64-gnu": "14.2.33",
+ "@next/swc-linux-x64-musl": "14.2.33",
+ "@next/swc-win32-arm64-msvc": "14.2.33",
+ "@next/swc-win32-ia32-msvc": "14.2.33",
+ "@next/swc-win32-x64-msvc": "14.2.33"
},
"peerDependencies": {
"@opentelemetry/api": "^1.1.0",
diff --git a/package.json b/package.json
index 6496d66..950da4f 100644
--- a/package.json
+++ b/package.json
@@ -51,8 +51,10 @@
"embla-carousel-react": "8.5.1",
"geist": "^1.3.1",
"input-otp": "1.4.1",
+ "js-cookie": "^3.0.5",
+ "jwt-decode": "^4.0.0",
"lucide-react": "^0.454.0",
- "next": "14.2.16",
+ "next": "^14.2.33",
"next-themes": "^0.4.6",
"react": "^18",
"react-day-picker": "^9.8.0",
@@ -68,6 +70,7 @@
},
"devDependencies": {
"@tailwindcss/postcss": "^4.1.9",
+ "@types/js-cookie": "^3.0.6",
"@types/node": "^22",
"@types/react": "^18",
"@types/react-dom": "^18",
diff --git a/services/api.mjs b/services/api.mjs
index 73d3721..360c744 100644
--- a/services/api.mjs
+++ b/services/api.mjs
@@ -1,90 +1,84 @@
-
const BASE_URL = "https://yuanqfswhberkoevtmfr.supabase.co";
-const API_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ";
+const API_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ";
+export const apikey = API_KEY;
var tempToken;
export async function login() {
- const response = await fetch("https://yuanqfswhberkoevtmfr.supabase.co/auth/v1/token?grant_type=password", {
- method: "POST",
- headers: {
- "Content-Type": "application/json",
- Prefer: "return=representation",
- "apikey": API_KEY, // valor fixo
- },
- body: JSON.stringify({ email: "riseup@popcode.com.br", password: "riseup" }),
- });
+ const response = await fetch("https://yuanqfswhberkoevtmfr.supabase.co/auth/v1/token?grant_type=password", {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ Prefer: "return=representation",
+ apikey: API_KEY, // valor fixo
+ },
+ body: JSON.stringify({ email: "riseup@popcode.com.br", password: "riseup" }),
+ });
- const data = await response.json();
-
- localStorage.setItem("token", data.access_token);
-
- return data;
+ const data = await response.json();
+
+ localStorage.setItem("token", data.access_token);
+
+ return data;
}
-
let loginPromise = login();
-
-
async function request(endpoint, options = {}) {
-
- if (loginPromise) {
- try {
- await loginPromise;
- } catch (error) {
- console.error("Falha na autenticação inicial:", error);
- }
-
- loginPromise = null;
- }
-
- const token = localStorage.getItem("token");
-
- const headers = {
- "Content-Type": "application/json",
- "apikey": API_KEY,
- ...(token ? { "Authorization": `Bearer ${token}` } : {}),
- ...options.headers,
- };
-
- try {
- const response = await fetch(`${BASE_URL}${endpoint}`, {
- ...options,
- headers,
- });
-
- if (!response.ok) {
-
- let errorBody = `Status: ${response.status}`;
- try {
- const contentType = response.headers.get("content-type");
- if (contentType && contentType.includes("application/json")) {
- const jsonError = await response.json();
-
- errorBody = jsonError.message || JSON.stringify(jsonError);
- } else {
- errorBody = await response.text();
+ if (loginPromise) {
+ try {
+ await loginPromise;
+ } catch (error) {
+ console.error("Falha na autenticação inicial:", error);
}
- } catch (e) {
-
- errorBody = `Status: ${response.status} - Falha ao ler corpo do erro.`;
- }
-
- throw new Error(`Erro HTTP: ${response.status} - Detalhes: ${errorBody}`);
+
+ loginPromise = null;
}
- const contentType = response.headers.get("content-type");
- if (response.status === 204 || (contentType && !contentType.includes("application/json")) || !contentType) {
- return {};
+
+ const token = localStorage.getItem("token");
+
+ const headers = {
+ "Content-Type": "application/json",
+ apikey: API_KEY,
+ ...(token ? { Authorization: `Bearer ${token}` } : {}),
+ ...options.headers,
+ };
+
+ try {
+ const response = await fetch(`${BASE_URL}${endpoint}`, {
+ ...options,
+ headers,
+ });
+
+ if (!response.ok) {
+ let errorBody = `Status: ${response.status}`;
+ try {
+ const contentType = response.headers.get("content-type");
+ if (contentType && contentType.includes("application/json")) {
+ const jsonError = await response.json();
+
+ errorBody = jsonError.message || JSON.stringify(jsonError);
+ } else {
+ errorBody = await response.text();
+ }
+ } catch (e) {
+ errorBody = `Status: ${response.status} - Falha ao ler corpo do erro.`;
+ }
+
+ throw new Error(`Erro HTTP: ${response.status} - Detalhes: ${errorBody}`);
+ }
+ const contentType = response.headers.get("content-type");
+ if (response.status === 204 || (contentType && !contentType.includes("application/json")) || !contentType) {
+ return {};
+ }
+ return await response.json();
+ } catch (error) {
+ console.error("Erro na requisição:", error);
+ throw error;
}
- return await response.json();
- } catch (error) {
- console.error("Erro na requisição:", error);
- throw error;
- }
}
export const api = {
- get: (endpoint) => request(endpoint, { method: "GET" }),
- post: (endpoint, data) => request(endpoint, { method: "POST", body: JSON.stringify(data) }),
- patch: (endpoint, data) => request(endpoint, { method: "PATCH", body: JSON.stringify(data) }),
- delete: (endpoint) => request(endpoint, { method: "DELETE" }),
-};
\ No newline at end of file
+ get: (endpoint) => request(endpoint, { method: "GET" }),
+ post: (endpoint, data) => request(endpoint, { method: "POST", body: JSON.stringify(data) }),
+ patch: (endpoint, data) => request(endpoint, { method: "PATCH", body: JSON.stringify(data) }),
+ delete: (endpoint) => request(endpoint, { method: "DELETE" }),
+};
diff --git a/styles/globals.css b/styles/globals.css
deleted file mode 100644
index 23cc7e3..0000000
--- a/styles/globals.css
+++ /dev/null
@@ -1,125 +0,0 @@
-@import 'tailwindcss';
-@import 'tw-animate-css';
-
-@custom-variant dark (&:is(.dark *));
-
-:root {
- --background: oklch(1 0 0);
- --foreground: oklch(0.145 0 0);
- --card: oklch(1 0 0);
- --card-foreground: oklch(0.145 0 0);
- --popover: oklch(1 0 0);
- --popover-foreground: oklch(0.145 0 0);
- --primary: oklch(0.205 0 0);
- --primary-foreground: oklch(0.985 0 0);
- --secondary: oklch(0.97 0 0);
- --secondary-foreground: oklch(0.205 0 0);
- --muted: oklch(0.97 0 0);
- --muted-foreground: oklch(0.556 0 0);
- --accent: oklch(0.97 0 0);
- --accent-foreground: oklch(0.205 0 0);
- --destructive: oklch(0.577 0.245 27.325);
- --destructive-foreground: oklch(0.577 0.245 27.325);
- --border: oklch(0.922 0 0);
- --input: oklch(0.922 0 0);
- --ring: oklch(0.708 0 0);
- --chart-1: oklch(0.646 0.222 41.116);
- --chart-2: oklch(0.6 0.118 184.704);
- --chart-3: oklch(0.398 0.07 227.392);
- --chart-4: oklch(0.828 0.189 84.429);
- --chart-5: oklch(0.769 0.188 70.08);
- --radius: 0.625rem;
- --sidebar: oklch(0.985 0 0);
- --sidebar-foreground: oklch(0.145 0 0);
- --sidebar-primary: oklch(0.205 0 0);
- --sidebar-primary-foreground: oklch(0.985 0 0);
- --sidebar-accent: oklch(0.97 0 0);
- --sidebar-accent-foreground: oklch(0.205 0 0);
- --sidebar-border: oklch(0.922 0 0);
- --sidebar-ring: oklch(0.708 0 0);
-}
-
-.dark {
- --background: oklch(0.145 0 0);
- --foreground: oklch(0.985 0 0);
- --card: oklch(0.145 0 0);
- --card-foreground: oklch(0.985 0 0);
- --popover: oklch(0.145 0 0);
- --popover-foreground: oklch(0.985 0 0);
- --primary: oklch(0.985 0 0);
- --primary-foreground: oklch(0.205 0 0);
- --secondary: oklch(0.269 0 0);
- --secondary-foreground: oklch(0.985 0 0);
- --muted: oklch(0.269 0 0);
- --muted-foreground: oklch(0.708 0 0);
- --accent: oklch(0.269 0 0);
- --accent-foreground: oklch(0.985 0 0);
- --destructive: oklch(0.396 0.141 25.723);
- --destructive-foreground: oklch(0.637 0.237 25.331);
- --border: oklch(0.269 0 0);
- --input: oklch(0.269 0 0);
- --ring: oklch(0.439 0 0);
- --chart-1: oklch(0.488 0.243 264.376);
- --chart-2: oklch(0.696 0.17 162.48);
- --chart-3: oklch(0.769 0.188 70.08);
- --chart-4: oklch(0.627 0.265 303.9);
- --chart-5: oklch(0.645 0.246 16.439);
- --sidebar: oklch(0.205 0 0);
- --sidebar-foreground: oklch(0.985 0 0);
- --sidebar-primary: oklch(0.488 0.243 264.376);
- --sidebar-primary-foreground: oklch(0.985 0 0);
- --sidebar-accent: oklch(0.269 0 0);
- --sidebar-accent-foreground: oklch(0.985 0 0);
- --sidebar-border: oklch(0.269 0 0);
- --sidebar-ring: oklch(0.439 0 0);
-}
-
-@theme inline {
- --font-sans: var(--font-geist-sans);
- --font-mono: var(--font-geist-mono);
- --color-background: var(--background);
- --color-foreground: var(--foreground);
- --color-card: var(--card);
- --color-card-foreground: var(--card-foreground);
- --color-popover: var(--popover);
- --color-popover-foreground: var(--popover-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-accent: var(--accent);
- --color-accent-foreground: var(--accent-foreground);
- --color-destructive: var(--destructive);
- --color-destructive-foreground: var(--destructive-foreground);
- --color-border: var(--border);
- --color-input: var(--input);
- --color-ring: var(--ring);
- --color-chart-1: var(--chart-1);
- --color-chart-2: var(--chart-2);
- --color-chart-3: var(--chart-3);
- --color-chart-4: var(--chart-4);
- --color-chart-5: var(--chart-5);
- --radius-sm: calc(var(--radius) - 4px);
- --radius-md: calc(var(--radius) - 2px);
- --radius-lg: var(--radius);
- --radius-xl: calc(var(--radius) + 4px);
- --color-sidebar: var(--sidebar);
- --color-sidebar-foreground: var(--sidebar-foreground);
- --color-sidebar-primary: var(--sidebar-primary);
- --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
- --color-sidebar-accent: var(--sidebar-accent);
- --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
- --color-sidebar-border: var(--sidebar-border);
- --color-sidebar-ring: var(--sidebar-ring);
-}
-
-@layer base {
- * {
- @apply border-border outline-ring/50;
- }
- body {
- @apply bg-background text-foreground;
- }
-}