|
1 | | -<!DOCTYPE html> |
| 1 | +@inject IConfiguration Configuration |
| 2 | +<!DOCTYPE html> |
2 | 3 | <html lang="en"> |
3 | | -<head> <meta charset="utf-8" /> |
| 4 | +<head> |
| 5 | + <meta charset="utf-8" /> |
4 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
5 | | - <title>@ViewData["Title"] - Copilot That Jawn</title> |
6 | 7 | <meta name="description" content="@(ViewData["Description"] ?? "Where Philly innovation meets AI excellence. Master Microsoft Copilot and GitHub Copilot with our expert-curated tips.")" /> |
| 8 | + <title>@ViewData["Title"] - Copilot That Jawn</title> |
7 | 9 |
|
8 | | - <!-- XML Feeds --> |
| 10 | + <!-- Feeds and Sitemap --> |
9 | 11 | <link rel="sitemap" type="application/xml" title="Sitemap" href="/sitemap.xml" /> |
10 | | - <link rel="alternate" type="application/rss+xml" title="Copilot That Jawn - Latest Tips" href="/feed.rss" /> |
11 | | - <script type="importmap"></script> |
12 | | - <!-- Import Outfit font for brand --> |
13 | | - <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@800&display=swap" rel="stylesheet"> |
| 12 | + <link rel="alternate" type="application/rss+xml" title="Latest Tips" href="/feed.rss" /> |
| 13 | + |
| 14 | + <!-- Fonts --> |
| 15 | + <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@800&display=swap" rel="stylesheet" /> |
14 | 16 | <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" /> |
15 | 17 | <!-- Bootstrap Icons for theme toggle --> |
16 | 18 | < link rel= "stylesheet" href= "https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css" /> <!-- PrismJS CSS from CDN - will load theme based on user preference --> |
|
19 | 21 | <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" /> |
20 | 22 | <link rel="stylesheet" href="~/Web.styles.css" asp-append-version="true" /> |
21 | 23 | @await RenderSectionAsync("Styles", required: false) |
| 24 | + |
| 25 | + <!-- Google Analytics --> |
| 26 | + <script async src="https://www.googletagmanager.com/gtag/js?id=@Configuration["GoogleAnalytics:MeasurementId"]"></script> |
| 27 | + <script> |
| 28 | + window.dataLayer = window.dataLayer || []; |
| 29 | + function gtag(){dataLayer.push(arguments);} |
| 30 | + gtag('js', new Date()); |
| 31 | + gtag('config', '@Configuration["GoogleAnalytics:MeasurementId"]'); |
| 32 | + </script> |
22 | 33 | </head> |
23 | 34 | <body> |
24 | 35 | <header> |
25 | 36 | <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3"> |
26 | 37 | <div class="container"> <a class="navbar-brand d-flex align-items-center" asp-area="" asp-page="/Index"> |
27 | 38 | <img src="~/img/icon-100.webp" alt="Copilot That Jawn" class="me-2" style="height: 24px; width: auto;"> |
28 | 39 | <span class="brand-title">Copilot That Jawn</span> |
29 | | - </a> |
30 | | - <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent" |
| 40 | + </a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" |
| 41 | + data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent" |
31 | 42 | aria-expanded="false" aria-label="Toggle navigation"> |
32 | 43 | <span class="navbar-toggler-icon"></span> |
33 | 44 | </button> <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between"> |
34 | 45 | <ul class="navbar-nav"> |
35 | 46 | <li class="nav-item"> |
36 | 47 | <a class="nav-link" asp-page="/Tips/Index">Tips</a> |
37 | 48 | </li> |
38 | | - |
39 | 49 | <li class="nav-item"> |
40 | 50 | <a class="nav-link" asp-page="/About">About</a> |
41 | 51 | </li> |
|
45 | 55 | </li> |
46 | 56 | </ul> |
47 | 57 |
|
48 | | - <!-- Theme toggle will be injected here by JavaScript --> |
49 | 58 | <ul class="navbar-nav ms-auto" id="navbarTools"> |
50 | 59 | <li class="nav-item" id="themeToggleContainer"></li> |
51 | 60 | </ul> |
|
74 | 83 | </ul> |
75 | 84 | </div> |
76 | 85 | <div class="col-lg-3 col-md-6"> |
77 | | - <h6 class="mb-3 text-primary fw-bold border-bottom border-2 border-primary pb-2 d-inline-block">Quick Links</h6><ul class="list-unstyled"> |
78 | | - <li class="mb-2"><a asp-page="/About" class="text-decoration-none text-muted hover-primary">About</a></li> |
79 | | - <li class="mb-2"><a href="#" class="text-decoration-none text-muted hover-primary">Contact</a></li> <li class="mb-2"><a href="#" class="text-decoration-none text-muted hover-primary">Terms</a></li> |
| 86 | + <h6 class="mb-3 text-primary fw-bold border-bottom border-2 border-primary pb-2 d-inline-block">Quick Links</h6><ul class="list-unstyled"> <li class="mb-2"><a asp-page="/About" class="text-decoration-none text-muted hover-primary">About</a></li> |
| 87 | + < li class= "mb-2">< a href= "mailto:[email protected]" class= "text-decoration-none text-muted hover-primary">Contact</ a></ li> < li class= "mb-2">< a asp-page= "/Terms" class= "text-decoration-none text-muted hover-primary">Terms</ a></ li> |
80 | 88 | <li class="mb-2"><a asp-page="/Privacy" class="text-decoration-none text-muted hover-primary">Privacy</a></li> |
81 | 89 | <li class="mb-2"><a href="/feed.rss" class="text-decoration-none text-muted hover-primary">RSS Feed</a></li> |
82 | 90 | </ul> |
|
89 | 97 | </div> |
90 | 98 | </div> |
91 | 99 | </div> |
92 | | - </footer><script src="~/lib/jquery/dist/jquery.min.js"></script> |
| 100 | + </footer> <!-- Core libraries --> |
| 101 | + <script src="~/lib/jquery/dist/jquery.min.js"></script> |
93 | 102 | <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> |
94 | | - <!-- PrismJS from CDN with comprehensive language support --> |
| 103 | + |
| 104 | + <!-- Syntax highlighting --> |
95 | 105 | <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"></script> |
96 | 106 | <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-csharp.min.js"></script> |
97 | 107 | <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-javascript.min.js"></script> |
98 | 108 | <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-typescript.min.js"></script> |
99 | 109 | <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-powershell.min.js"></script> |
100 | 110 | <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-json.min.js"></script> |
101 | | - <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-bash.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-yaml.min.js"></script> <script src="~/js/site.js" asp-append-version="true"></script> <script src="~/js/theme-switcher.js" asp-append-version="true"></script> |
| 111 | + <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-bash.min.js"></script> |
| 112 | + <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-yaml.min.js"></script> |
| 113 | + |
| 114 | + <!-- Site scripts --> |
| 115 | + <script src="~/js/site.js" asp-append-version="true"></script> |
| 116 | + <script src="~/js/theme-switcher.js" asp-append-version="true"></script> |
| 117 | + <script src="~/js/analytics.js" asp-append-version="true"></script> |
102 | 118 | <script> |
103 | 119 | // Fix for code highlighting in theme changes |
104 | 120 | document.addEventListener('DOMContentLoaded', function() { |
|
0 commit comments