diff --git a/src/assets/users/_reports.php b/src/assets/users/_reports.php index faf9a075..94a0f5fa 100755 --- a/src/assets/users/_reports.php +++ b/src/assets/users/_reports.php @@ -219,7 +219,8 @@ $result = $conn->query($sql); - @@ -393,15 +394,17 @@ $result = $conn->query($sql); diff --git a/src/core/actions/mail/report_config.php b/src/core/actions/mail/report_config.php new file mode 100644 index 00000000..f26f649a --- /dev/null +++ b/src/core/actions/mail/report_config.php @@ -0,0 +1,300 @@ +isSMTP(); + $mail->Host = $_ENV['MAIL_HOST']; + $mail->SMTPAuth = true; + $mail->Username = $_ENV['MAIL_USERNAME']; + $mail->Password = $_ENV['MAIL_PASSWORD']; + $mail->SMTPSecure = $_ENV['MAIL_ENCRYPTION']; + $mail->Port = $_ENV['MAIL_PORT']; + + $mail->setFrom($_ENV['MAIL_FROM'], $_ENV['MAIL_FROM_NAME']); + $mail->addAddress($toEmail, $toName); + $mail->isHTML(true); + $mail->Subject = $subject; + $mail->Body = $body; + + $mail->send(); + return true; + } catch (Exception $e) { + error_log("Mailer Error to {$toEmail}: " . $mail->ErrorInfo); + return false; + } +} + +function sendReportNotifications($report_id, $title, $category, $priority, $location, $username, $user_email, $image_path) +{ + + $dept_email = getDepartmentEmail($category); + + $dept_name = 'IT Helpdesk'; + switch ($category) { + case 'Electrical Issue': + case 'Water & Plumbing Issue': + case 'HVAC (AC/Heating) Issue': + case 'Furniture & Fixtures Issue': + case 'Road & Pathway Damage Issue': + case 'Cleaning & Janitorial Issue': + $dept_name = 'Estate Management'; + break; + case 'Security & Safety Issue': + case 'Lost & Stolen Issue': + $dept_name = 'Security'; + break; + case 'Library & Study Issue': + $dept_name = 'Library'; + break; + } + + $domain = $_ENV['DOMAIN'] ?? $_SERVER['HTTP_HOST']; + $appname = $_ENV['APP_NAME']; + + $projectStartYear = $_ENV['PROJECT_START_YEAR']; + $currentYear = (int) date('Y'); + $startYear = min((int) $projectStartYear, $currentYear); + $yearText = ($currentYear > $startYear) ? "$startYear-" . substr((string) $currentYear, -2) : (string) $startYear; + + $isLocalhost = ( + $domain === 'localhost' || + str_starts_with($domain, 'localhost:') || + $domain === '127.0.0.1' + ); + + $scheme = $isLocalhost ? 'http://' : 'https://'; + + $baseUrl = $scheme . $domain; + $baseUrl = rtrim($baseUrl, '/'); + + $viewLink = $baseUrl . "/core/actions/submit_report.php?view_id=" . urlencode($image_path); + + $dept_subject = "{$appname} - #{$report_id} New report submission received"; + $dept_message = << + + + + + + + + + + + + +
+ + + + + + + + + + +
+

+ New Report Form Submission Received +

+
+

+ Hi {$dept_name} Team, +

+

+ {$appname} has received a report submission and the auto-email had sent a "Your Report Form Submission Received" template to the reporter. +

+

+ The report submission details are as follows: +

+
+

+ Report ID: #{$report_id}
+ Reporter ID: {$username}
+ Title: {$title}.
+ Issue Category: {$category}.
+ Priority: {$priority}.
+ Image: View the attached image.
+ Location: View the attached Location.
+

+

+ This request was received for the email address: + {$user_email}. +

+
+

+ This is an auto-generated email system for report submissions. If this email successfully reached you, review the details above also respond the issue ASAP & update dashboard. +

+

+ Sincerely, +

+

+ {$appname} Support +

+
+ + + + +
+ +
+ © {$yearText} {$appname}. All rights reserved. +
+
+
+
+ + +HTML; + + $user_subject = "{$appname} - #{$report_id} Your report submission received"; + + $user_message = << + + + + + + + + + + + + +
+ + + + + + + + + + +
+

+ Your Report Form Submission Received +

+
+

+ Hi {$username}, +

+

+ {$appname} has received a report submission on the platform. + We're pleased to thank you for taking this issue seriously and reporting to us. +

+

+ The report submission details are as follows: +

+
+

+ Report ID: #{$report_id}
+ Title: {$title}.
+ Issue Category: {$category}.
+ Priority: {$priority}.
+ Image: View the attached image.
+ Location: View the attached Location.
+

+

+ This request was received for the email address: + {$user_email}. +

+
+

+ This is an auto-generated email system for report submissions. + If you did not make this report, or believe unauthorised access has occurred, kindly reach out to our IT Helpdesk as soon as possible. + However, if you have any new reports, feel free to submit them to us. +

+

+ Sincerely, +

+

+ {$appname} Support +

+
+ + + + +
+ +
+ © {$yearText} {$appname}. All rights reserved. +
+
+
+
+ + +HTML; + + $sentToDept = sendSMTP($dept_email, 'Campus Department', $dept_subject, $dept_message); + $sentToUser = sendSMTP($user_email, $username, $user_subject, $user_message); + + return ($sentToDept && $sentToUser); +} +?> \ No newline at end of file diff --git a/src/core/actions/submit_report.php b/src/core/actions/submit_report.php index 51040e0f..11652e6c 100644 --- a/src/core/actions/submit_report.php +++ b/src/core/actions/submit_report.php @@ -1,22 +1,20 @@ setClientId($clientId); @@ -24,14 +22,15 @@ if (isset($_GET['view_id']) && !empty($_GET['view_id'])) { $client->refreshToken($refreshToken); $service = new Google\Service\Drive($client); - $response = $service->files->get($fileId, ['alt' => 'media']); $content = $response->getBody()->getContents(); header("Content-Type: image/jpeg"); - header("Cache-Control: public, max-age=86400"); // Cache for 24h + header("Content-Length: " . strlen($content)); + header("Cache-Control: public, max-age=86400"); + echo $content; - exit; + exit; } catch (Exception $e) { http_response_code(404); @@ -40,6 +39,9 @@ if (isset($_GET['view_id']) && !empty($_GET['view_id'])) { } if ($_SERVER['REQUEST_METHOD'] === 'POST') { + + require_once dirname(__DIR__) . '/connection.php'; + require_once __DIR__ . '/mail/report_config.php'; if (!isset($_SESSION['user_id'])) { die("Access denied."); } @@ -65,14 +67,13 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $client->setClientId($clientId); $client->setClientSecret($clientSecret); $client->refreshToken($refreshToken); - $service = new Google\Service\Drive($client); - + $fileMetadata = new Google\Service\Drive\DriveFile([ 'name' => 'Report_' . $user_id . '_' . time() . '.' . $fileExt, 'parents' => [$folderId] ]); - + $content = file_get_contents($fileTmpName); $file = $service->files->create($fileMetadata, [ 'data' => $content, @@ -80,7 +81,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { 'uploadType' => 'multipart', 'fields' => 'id' ]); - $imagePath = $file->id; } catch (Exception $e) { @@ -96,7 +96,30 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $stmt = $conn->prepare($sql); if ($stmt) { $stmt->bind_param("issssss", $user_id, $title, $category, $priority, $location, $location, $imagePath); - $stmt->execute(); + + if ($stmt->execute()) { + $report_id = $stmt->insert_id; + + $user_sql = "SELECT email, username FROM users WHERE id = ?"; + $u_stmt = $conn->prepare($user_sql); + $u_stmt->bind_param("i", $user_id); + $u_stmt->execute(); + $result = $u_stmt->get_result(); + + if ($user = $result->fetch_assoc()) { + sendReportNotifications( + $report_id, + $title, + $category, + $priority, + $location, + $user['username'], + $user['email'], + $imagePath + ); + } + $u_stmt->close(); + } $stmt->close(); } $conn->close(); diff --git a/src/core/actions/user_gemini.php b/src/core/actions/user_gemini.php index e5b1def1..948499f5 100644 --- a/src/core/actions/user_gemini.php +++ b/src/core/actions/user_gemini.php @@ -40,8 +40,8 @@ $url = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash $domain = $_ENV['DOMAIN']; $app_name = $_ENV['APP_NAME']; -$helpEmail = $_ENV['HELPDESK_EMAIL']; -$helpPhone = $_ENV['HELPDESK_PHONE']; +$helpEmail = $_ENV['IT_HELPDESK_EMAIL']; +$helpPhone = $_ENV['IT_HELPDESK_PHONE']; $mgmtEmail = $_ENV['MANAGEMENT_EMAIL']; $mgmtPhone = $_ENV['MANAGEMENT_PHONE']; $healthEmail = $_ENV['HEALTH_EMAIL']; @@ -54,7 +54,7 @@ $secPhone = $_ENV['SECURITY_PHONE']; $systemPrompt = << :not(:last-child)) { - --tw-space-y-reverse: 0; - margin-block-start: calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse)); - margin-block-end: calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse))); - } - } .space-y-1 { :where(& > :not(:last-child)) { --tw-space-y-reverse: 0; @@ -1020,12 +962,6 @@ .rounded-\[2\.5rem\] { border-radius: 2.5rem; } - .rounded-\[2rem\] { - border-radius: 2rem; - } - .rounded-\[3rem\] { - border-radius: 3rem; - } .rounded-full { border-radius: calc(infinity * 1px); } @@ -1072,10 +1008,6 @@ border-bottom-style: var(--tw-border-style); border-bottom-width: 1px; } - .border-l-2 { - border-left-style: var(--tw-border-style); - border-left-width: 2px; - } .border-dashed { --tw-border-style: dashed; border-style: dashed; @@ -1084,24 +1016,12 @@ --tw-border-style: none; border-style: none; } - .border-blue-500\/10 { - border-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 10%, transparent); - @supports (color: color-mix(in lab, red, red)) { - border-color: color-mix(in oklab, var(--color-blue-500) 10%, transparent); - } - } .border-blue-500\/20 { border-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 20%, transparent); @supports (color: color-mix(in lab, red, red)) { border-color: color-mix(in oklab, var(--color-blue-500) 20%, transparent); } } - .border-blue-500\/30 { - border-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - border-color: color-mix(in oklab, var(--color-blue-500) 30%, transparent); - } - } .border-blue-500\/40 { border-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 40%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -1114,30 +1034,24 @@ border-color: color-mix(in oklab, var(--color-blue-600) 20%, transparent); } } - .border-blue-600\/30 { - border-color: color-mix(in srgb, oklch(54.6% 0.245 262.881) 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - border-color: color-mix(in oklab, var(--color-blue-600) 30%, transparent); - } - } .border-blue-700\/50 { border-color: color-mix(in srgb, oklch(48.8% 0.243 264.376) 50%, transparent); @supports (color: color-mix(in lab, red, red)) { border-color: color-mix(in oklab, var(--color-blue-700) 50%, transparent); } } + .border-gray-400\/40 { + border-color: color-mix(in srgb, oklch(70.7% 0.022 261.325) 40%, transparent); + @supports (color: color-mix(in lab, red, red)) { + border-color: color-mix(in oklab, var(--color-gray-400) 40%, transparent); + } + } .border-green-500\/20 { border-color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 20%, transparent); @supports (color: color-mix(in lab, red, red)) { border-color: color-mix(in oklab, var(--color-green-500) 20%, transparent); } } - .border-green-500\/30 { - border-color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - border-color: color-mix(in oklab, var(--color-green-500) 30%, transparent); - } - } .border-green-500\/50 { border-color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 50%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -1150,12 +1064,6 @@ border-color: color-mix(in oklab, var(--color-green-700) 50%, transparent); } } - .border-green-900\/50 { - border-color: color-mix(in srgb, oklch(39.3% 0.095 152.535) 50%, transparent); - @supports (color: color-mix(in lab, red, red)) { - border-color: color-mix(in oklab, var(--color-green-900) 50%, transparent); - } - } .border-neutral-600 { border-color: var(--color-neutral-600); } @@ -1180,12 +1088,6 @@ border-color: color-mix(in oklab, var(--color-orange-500) 20%, transparent); } } - .border-red-500\/10 { - border-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 10%, transparent); - @supports (color: color-mix(in lab, red, red)) { - border-color: color-mix(in oklab, var(--color-red-500) 10%, transparent); - } - } .border-red-500\/20 { border-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 20%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -1198,30 +1100,15 @@ border-color: color-mix(in oklab, var(--color-red-500) 30%, transparent); } } - .border-red-500\/50 { - border-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 50%, transparent); - @supports (color: color-mix(in lab, red, red)) { - border-color: color-mix(in oklab, var(--color-red-500) 50%, transparent); - } - } .border-red-700\/30 { border-color: color-mix(in srgb, oklch(50.5% 0.213 27.518) 30%, transparent); @supports (color: color-mix(in lab, red, red)) { border-color: color-mix(in oklab, var(--color-red-700) 30%, transparent); } } - .border-slate-700 { - border-color: var(--color-slate-700); - } .border-transparent { border-color: transparent; } - .border-white\/5 { - border-color: color-mix(in srgb, #fff 5%, transparent); - @supports (color: color-mix(in lab, red, red)) { - border-color: color-mix(in oklab, var(--color-white) 5%, transparent); - } - } .border-white\/10 { border-color: color-mix(in srgb, #fff 10%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -1243,12 +1130,6 @@ border-color: color-mix(in oklab, var(--color-yellow-700) 50%, transparent); } } - .border-yellow-900\/50 { - border-color: color-mix(in srgb, oklch(42.1% 0.095 57.708) 50%, transparent); - @supports (color: color-mix(in lab, red, red)) { - border-color: color-mix(in oklab, var(--color-yellow-900) 50%, transparent); - } - } .bg-\[\#0b0c0e\] { background-color: #0b0c0e; } @@ -1258,12 +1139,6 @@ .bg-\[\#2d2d2d\] { background-color: #2d2d2d; } - .bg-\[\#16171a\] { - background-color: #16171a; - } - .bg-\[\#222327\] { - background-color: #222327; - } .bg-amber-500\/10 { background-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 10%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -1273,24 +1148,12 @@ .bg-black { background-color: var(--color-black); } - .bg-black\/30 { - background-color: color-mix(in srgb, #000 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-black) 30%, transparent); - } - } .bg-black\/40 { background-color: color-mix(in srgb, #000 40%, transparent); @supports (color: color-mix(in lab, red, red)) { background-color: color-mix(in oklab, var(--color-black) 40%, transparent); } } - .bg-black\/50 { - background-color: color-mix(in srgb, #000 50%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-black) 50%, transparent); - } - } .bg-black\/60 { background-color: color-mix(in srgb, #000 60%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -1300,33 +1163,15 @@ .bg-blue-400 { background-color: var(--color-blue-400); } - .bg-blue-500\/5 { - background-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 5%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-blue-500) 5%, transparent); - } - } .bg-blue-500\/10 { background-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 10%, transparent); @supports (color: color-mix(in lab, red, red)) { background-color: color-mix(in oklab, var(--color-blue-500) 10%, transparent); } } - .bg-blue-500\/20 { - background-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 20%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-blue-500) 20%, transparent); - } - } .bg-blue-600 { background-color: var(--color-blue-600); } - .bg-blue-600\/5 { - background-color: color-mix(in srgb, oklch(54.6% 0.245 262.881) 5%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-blue-600) 5%, transparent); - } - } .bg-blue-600\/10 { background-color: color-mix(in srgb, oklch(54.6% 0.245 262.881) 10%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -1390,12 +1235,6 @@ .bg-green-900 { background-color: var(--color-green-900); } - .bg-green-900\/20 { - background-color: color-mix(in srgb, oklch(39.3% 0.095 152.535) 20%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-green-900) 20%, transparent); - } - } .bg-green-900\/30 { background-color: color-mix(in srgb, oklch(39.3% 0.095 152.535) 30%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -1468,9 +1307,6 @@ background-color: color-mix(in oklab, var(--color-neutral-900) 95%, transparent); } } - .bg-neutral-950 { - background-color: var(--color-neutral-950); - } .bg-orange-500\/10 { background-color: color-mix(in srgb, oklch(70.5% 0.213 47.604) 10%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -1495,12 +1331,6 @@ .bg-red-500 { background-color: var(--color-red-500); } - .bg-red-500\/5 { - background-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 5%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-red-500) 5%, transparent); - } - } .bg-red-500\/10 { background-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 10%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -1516,21 +1346,12 @@ background-color: color-mix(in oklab, var(--color-red-900) 20%, transparent); } } - .bg-red-900\/30 { - background-color: color-mix(in srgb, oklch(39.6% 0.141 25.723) 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-red-900) 30%, transparent); - } - } .bg-red-900\/50 { background-color: color-mix(in srgb, oklch(39.6% 0.141 25.723) 50%, transparent); @supports (color: color-mix(in lab, red, red)) { background-color: color-mix(in oklab, var(--color-red-900) 50%, transparent); } } - .bg-slate-700 { - background-color: var(--color-slate-700); - } .bg-slate-800 { background-color: var(--color-slate-800); } @@ -1540,12 +1361,6 @@ .bg-white { background-color: var(--color-white); } - .bg-white\/5 { - background-color: color-mix(in srgb, #fff 5%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-white) 5%, transparent); - } - } .bg-yellow-400 { background-color: var(--color-yellow-400); } @@ -1561,12 +1376,6 @@ .bg-yellow-900 { background-color: var(--color-yellow-900); } - .bg-yellow-900\/20 { - background-color: color-mix(in srgb, oklch(42.1% 0.095 57.708) 20%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-yellow-900) 20%, transparent); - } - } .bg-yellow-900\/30 { background-color: color-mix(in srgb, oklch(42.1% 0.095 57.708) 30%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -1595,9 +1404,6 @@ --tw-gradient-position: to top right in oklab; background-image: linear-gradient(var(--tw-gradient-stops)); } - .bg-none { - background-image: none; - } .from-blue-500 { --tw-gradient-from: var(--color-blue-500); --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); @@ -1673,21 +1479,9 @@ .p-8 { padding: calc(var(--spacing) * 8); } - .p-10 { - padding: calc(var(--spacing) * 10); - } .p-12 { padding: calc(var(--spacing) * 12); } - .px-0 { - padding-inline: calc(var(--spacing) * 0); - } - .px-1 { - padding-inline: calc(var(--spacing) * 1); - } - .px-1\.5 { - padding-inline: calc(var(--spacing) * 1.5); - } .px-2 { padding-inline: calc(var(--spacing) * 2); } @@ -1709,9 +1503,6 @@ .px-8 { padding-inline: calc(var(--spacing) * 8); } - .py-0 { - padding-block: calc(var(--spacing) * 0); - } .py-0\.5 { padding-block: calc(var(--spacing) * 0.5); } @@ -1745,9 +1536,6 @@ .pt-2 { padding-top: calc(var(--spacing) * 2); } - .pt-3 { - padding-top: calc(var(--spacing) * 3); - } .pr-2 { padding-right: calc(var(--spacing) * 2); } @@ -1766,9 +1554,6 @@ .pb-4 { padding-bottom: calc(var(--spacing) * 4); } - .pb-6 { - padding-bottom: calc(var(--spacing) * 6); - } .pb-10 { padding-bottom: calc(var(--spacing) * 10); } @@ -1778,9 +1563,6 @@ .pl-3 { padding-left: calc(var(--spacing) * 3); } - .pl-4 { - padding-left: calc(var(--spacing) * 4); - } .pl-5 { padding-left: calc(var(--spacing) * 5); } @@ -1790,15 +1572,9 @@ .pl-10 { padding-left: calc(var(--spacing) * 10); } - .pl-12 { - padding-left: calc(var(--spacing) * 12); - } .pl-14 { padding-left: calc(var(--spacing) * 14); } - .pl-16 { - padding-left: calc(var(--spacing) * 16); - } .text-center { text-align: center; } @@ -1846,18 +1622,12 @@ font-size: var(--text-xs); line-height: var(--tw-leading, var(--text-xs--line-height)); } - .text-\[9px\] { - font-size: 9px; - } .text-\[10px\] { font-size: 10px; } .text-\[11px\] { font-size: 11px; } - .text-\[12px\] { - font-size: 12px; - } .leading-none { --tw-leading: 1; line-height: 1; @@ -1890,10 +1660,6 @@ --tw-tracking: 0.2em; letter-spacing: 0.2em; } - .tracking-\[0\.3em\] { - --tw-tracking: 0.3em; - letter-spacing: 0.3em; - } .tracking-\[0\.4em\] { --tw-tracking: 0.4em; letter-spacing: 0.4em; @@ -1902,10 +1668,6 @@ --tw-tracking: var(--tracking-tight); letter-spacing: var(--tracking-tight); } - .tracking-tighter { - --tw-tracking: var(--tracking-tighter); - letter-spacing: var(--tracking-tighter); - } .tracking-wide { --tw-tracking: var(--tracking-wide); letter-spacing: var(--tracking-wide); @@ -1933,27 +1695,12 @@ .text-blue-200 { color: var(--color-blue-200); } - .text-blue-300 { - color: var(--color-blue-300); - } .text-blue-400 { color: var(--color-blue-400); } - .text-blue-400\/80 { - color: color-mix(in srgb, oklch(70.7% 0.165 254.624) 80%, transparent); - @supports (color: color-mix(in lab, red, red)) { - color: color-mix(in oklab, var(--color-blue-400) 80%, transparent); - } - } .text-blue-500 { color: var(--color-blue-500); } - .text-blue-500\/50 { - color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 50%, transparent); - @supports (color: color-mix(in lab, red, red)) { - color: color-mix(in oklab, var(--color-blue-500) 50%, transparent); - } - } .text-emerald-400 { color: var(--color-emerald-400); } @@ -1969,9 +1716,6 @@ .text-gray-500 { color: var(--color-gray-500); } - .text-gray-900 { - color: var(--color-gray-900); - } .text-green-200 { color: var(--color-green-200); } @@ -1981,18 +1725,6 @@ .text-green-500 { color: var(--color-green-500); } - .text-green-500\/70 { - color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 70%, transparent); - @supports (color: color-mix(in lab, red, red)) { - color: color-mix(in oklab, var(--color-green-500) 70%, transparent); - } - } - .text-green-500\/80 { - color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 80%, transparent); - @supports (color: color-mix(in lab, red, red)) { - color: color-mix(in oklab, var(--color-green-500) 80%, transparent); - } - } .text-neutral-200 { color: var(--color-neutral-200); } @@ -2032,33 +1764,18 @@ .text-red-400 { color: var(--color-red-400); } - .text-red-400\/80 { - color: color-mix(in srgb, oklch(70.4% 0.191 22.216) 80%, transparent); - @supports (color: color-mix(in lab, red, red)) { - color: color-mix(in oklab, var(--color-red-400) 80%, transparent); - } - } .text-red-500 { color: var(--color-red-500); } .text-slate-200 { color: var(--color-slate-200); } - .text-slate-300 { - color: var(--color-slate-300); - } .text-slate-400 { color: var(--color-slate-400); } .text-slate-500 { color: var(--color-slate-500); } - .text-slate-600 { - color: var(--color-slate-600); - } - .text-slate-700 { - color: var(--color-slate-700); - } .text-violet-400 { color: var(--color-violet-400); } @@ -2074,12 +1791,6 @@ .text-yellow-500 { color: var(--color-yellow-500); } - .text-yellow-500\/80 { - color: color-mix(in srgb, oklch(79.5% 0.184 86.047) 80%, transparent); - @supports (color: color-mix(in lab, red, red)) { - color: color-mix(in oklab, var(--color-yellow-500) 80%, transparent); - } - } .lowercase { text-transform: lowercase; } @@ -2096,15 +1807,6 @@ .underline { text-decoration-line: underline; } - .decoration-red-500\/50 { - text-decoration-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 50%, transparent); - @supports (color: color-mix(in lab, red, red)) { - text-decoration-color: color-mix(in oklab, var(--color-red-500) 50%, transparent); - } - } - .underline-offset-4 { - text-underline-offset: 4px; - } .antialiased { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -2119,25 +1821,9 @@ color: var(--color-neutral-500); } } - .placeholder-neutral-600 { - &::placeholder { - color: var(--color-neutral-600); - } - } - .placeholder-slate-600 { - &::placeholder { - color: var(--color-slate-600); - } - } .opacity-0 { opacity: 0%; } - .opacity-5 { - opacity: 5%; - } - .opacity-10 { - opacity: 10%; - } .opacity-50 { opacity: 50%; } @@ -2168,18 +1854,10 @@ --tw-shadow: 0 0 15px var(--tw-shadow-color, rgba(59,130,246,0.1)); box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); } - .shadow-\[0_32px_64px_-12px_rgba\(0\,0\,0\,0\.6\)\] { - --tw-shadow: 0 32px 64px -12px var(--tw-shadow-color, rgba(0,0,0,0.6)); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } .shadow-lg { --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); } - .shadow-md { - --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } .shadow-sm { --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); @@ -2200,44 +1878,18 @@ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); } - .ring-8 { - --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(8px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } - .ring-\[6px\] { - --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(6px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } - .shadow-blue-600\/20 { - --tw-shadow-color: color-mix(in srgb, oklch(54.6% 0.245 262.881) 20%, transparent); - @supports (color: color-mix(in lab, red, red)) { - --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-blue-600) 20%, transparent) var(--tw-shadow-alpha), transparent); - } - } .shadow-blue-900\/20 { --tw-shadow-color: color-mix(in srgb, oklch(37.9% 0.146 265.522) 20%, transparent); @supports (color: color-mix(in lab, red, red)) { --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-blue-900) 20%, transparent) var(--tw-shadow-alpha), transparent); } } - .shadow-blue-900\/40 { - --tw-shadow-color: color-mix(in srgb, oklch(37.9% 0.146 265.522) 40%, transparent); - @supports (color: color-mix(in lab, red, red)) { - --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-blue-900) 40%, transparent) var(--tw-shadow-alpha), transparent); - } - } .shadow-green-500\/50 { --tw-shadow-color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 50%, transparent); @supports (color: color-mix(in lab, red, red)) { --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-green-500) 50%, transparent) var(--tw-shadow-alpha), transparent); } } - .shadow-green-900\/20 { - --tw-shadow-color: color-mix(in srgb, oklch(39.3% 0.095 152.535) 20%, transparent); - @supports (color: color-mix(in lab, red, red)) { - --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-green-900) 20%, transparent) var(--tw-shadow-alpha), transparent); - } - } .shadow-purple-900\/20 { --tw-shadow-color: color-mix(in srgb, oklch(38.1% 0.176 304.987) 20%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -2247,21 +1899,6 @@ .ring-\[\#1a1a1a\] { --tw-ring-color: #1a1a1a; } - .ring-\[\#16171a\] { - --tw-ring-color: #16171a; - } - .ring-blue-600\/10 { - --tw-ring-color: color-mix(in srgb, oklch(54.6% 0.245 262.881) 10%, transparent); - @supports (color: color-mix(in lab, red, red)) { - --tw-ring-color: color-mix(in oklab, var(--color-blue-600) 10%, transparent); - } - } - .ring-green-500\/10 { - --tw-ring-color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 10%, transparent); - @supports (color: color-mix(in lab, red, red)) { - --tw-ring-color: color-mix(in oklab, var(--color-green-500) 10%, transparent); - } - } .ring-green-500\/20 { --tw-ring-color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 20%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -2317,10 +1954,6 @@ -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,); backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,); } - .backdrop-filter { - -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,); - backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,); - } .transition { transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events; transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); @@ -2754,13 +2387,6 @@ } } } - .hover\:bg-blue-500 { - &:hover { - @media (hover: hover) { - background-color: var(--color-blue-500); - } - } - } .hover\:bg-blue-500\/20 { &:hover { @media (hover: hover) { @@ -2778,20 +2404,6 @@ } } } - .hover\:bg-green-500 { - &:hover { - @media (hover: hover) { - background-color: var(--color-green-500); - } - } - } - .hover\:bg-green-700 { - &:hover { - @media (hover: hover) { - background-color: var(--color-green-700); - } - } - } .hover\:bg-neutral-700 { &:hover { @media (hover: hover) { @@ -2976,53 +2588,17 @@ border-color: var(--color-purple-500); } } - .focus\:ring-1 { - &:focus { - --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } - } .focus\:ring-2 { &:focus { --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); } } - .focus\:ring-4 { - &:focus { - --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } - } .focus\:ring-blue-500 { &:focus { --tw-ring-color: var(--color-blue-500); } } - .focus\:ring-blue-500\/20 { - &:focus { - --tw-ring-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 20%, transparent); - @supports (color: color-mix(in lab, red, red)) { - --tw-ring-color: color-mix(in oklab, var(--color-blue-500) 20%, transparent); - } - } - } - .focus\:ring-blue-500\/30 { - &:focus { - --tw-ring-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - --tw-ring-color: color-mix(in oklab, var(--color-blue-500) 30%, transparent); - } - } - } - .focus\:ring-blue-500\/40 { - &:focus { - --tw-ring-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 40%, transparent); - @supports (color: color-mix(in lab, red, red)) { - --tw-ring-color: color-mix(in oklab, var(--color-blue-500) 40%, transparent); - } - } - } .focus\:ring-blue-500\/50 { &:focus { --tw-ring-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 50%, transparent); @@ -3147,21 +2723,6 @@ padding: calc(var(--spacing) * 0); } } - .sm\:p-6 { - @media (width >= 40rem) { - padding: calc(var(--spacing) * 6); - } - } - .sm\:p-8 { - @media (width >= 40rem) { - padding: calc(var(--spacing) * 8); - } - } - .sm\:p-10 { - @media (width >= 40rem) { - padding: calc(var(--spacing) * 10); - } - } .sm\:px-6 { @media (width >= 40rem) { padding-inline: calc(var(--spacing) * 6);