Changeset d89d25b


Ignore:
Timestamp:
09/01/26 07:17:16 (4 weeks ago)
Author:
mmilevski <markomilevski3@…>
Branches:
main
Children:
595d2e5
Parents:
d2eccb3
Message:

Added few implementaions, minor UI changes.

Files:
12 added
71 edited

Legend:

Unmodified
Added
Removed
  • KernelRecordsMVC.Application/obj/Debug/net8.0/KernelRecordsMVC.Application.AssemblyInfo.cs

    rd2eccb3 rd89d25b  
    1414[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
    1515[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
    16 [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+08aefc6f3b51f4bfcb7471a2fd319c064171b1c5")]
     16[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d2eccb3e3d4db7d262fc57179b8ce6f7fb060d63")]
    1717[assembly: System.Reflection.AssemblyProductAttribute("KernelRecordsMVC.Application")]
    1818[assembly: System.Reflection.AssemblyTitleAttribute("KernelRecordsMVC.Application")]
  • KernelRecordsMVC.Application/obj/Debug/net8.0/KernelRecordsMVC.Application.AssemblyInfoInputs.cache

    rd2eccb3 rd89d25b  
    1 be6a89e2db3aa8112c2a3ae4c32c04b7e8b25d03049e0dfebf9780211ea8ddb1
     10a806091492b419d863bcf31dc25ce545b03be1d3b3d188a337ab3ca6889ac3f
  • KernelRecordsMVC.Application/obj/Debug/net8.0/KernelRecordsMVC.Application.csproj.CoreCompileInputs.cache

    rd2eccb3 rd89d25b  
    1 9f4ef03cf908860b9dd6d42a9604d053d9bc8564dfa0df3b05a4e677034a8ff2
     145894e0429ec052b8606a73d17a4a68b14e119a55376b001dcbda71349b33a62
  • KernelRecordsMVC.Application/obj/Debug/net8.0/KernelRecordsMVC.Application.sourcelink.json

    rd2eccb3 rd89d25b  
    1 {"documents":{"C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\*":"https://raw.githubusercontent.com/mmilevski/kernelrecords/08aefc6f3b51f4bfcb7471a2fd319c064171b1c5/*"}}
     1{"documents":{"C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\*":"https://raw.githubusercontent.com/mmilevski/kernelrecords/d2eccb3e3d4db7d262fc57179b8ce6f7fb060d63/*"}}
  • KernelRecordsMVC.Domain/obj/Debug/net8.0/KernelRecordsMVC.Domain.AssemblyInfo.cs

    rd2eccb3 rd89d25b  
    1414[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
    1515[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
    16 [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+08aefc6f3b51f4bfcb7471a2fd319c064171b1c5")]
     16[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d2eccb3e3d4db7d262fc57179b8ce6f7fb060d63")]
    1717[assembly: System.Reflection.AssemblyProductAttribute("KernelRecordsMVC.Domain")]
    1818[assembly: System.Reflection.AssemblyTitleAttribute("KernelRecordsMVC.Domain")]
  • KernelRecordsMVC.Domain/obj/Debug/net8.0/KernelRecordsMVC.Domain.AssemblyInfoInputs.cache

    rd2eccb3 rd89d25b  
    1 c82bcad826986a0b4c4c004792906cba4667c35c3e2a76d4e7fa4001644850a4
     19ac54125bd905265e26e18e6c5ad395dc962c3187cbd749ef37d34bb164ca220
  • KernelRecordsMVC.Domain/obj/Debug/net8.0/KernelRecordsMVC.Domain.csproj.CoreCompileInputs.cache

    rd2eccb3 rd89d25b  
    1 e4f17f3afc452c9cfefcff47788ac274bd2afd7ed15c35be6fe2075449cd1d78
     1b7810f749f85873f2eede2f0308a04835c47bb65cebbdd49a748a872be50f70d
  • KernelRecordsMVC.Domain/obj/Debug/net8.0/KernelRecordsMVC.Domain.sourcelink.json

    rd2eccb3 rd89d25b  
    1 {"documents":{"C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\*":"https://raw.githubusercontent.com/mmilevski/kernelrecords/08aefc6f3b51f4bfcb7471a2fd319c064171b1c5/*"}}
     1{"documents":{"C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\*":"https://raw.githubusercontent.com/mmilevski/kernelrecords/d2eccb3e3d4db7d262fc57179b8ce6f7fb060d63/*"}}
  • KernelRecordsMVC.Infrastructure/obj/Debug/net8.0/KernelRecordsMVC.Infrastructure.AssemblyInfo.cs

    rd2eccb3 rd89d25b  
    1414[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
    1515[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
    16 [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+08aefc6f3b51f4bfcb7471a2fd319c064171b1c5")]
     16[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d2eccb3e3d4db7d262fc57179b8ce6f7fb060d63")]
    1717[assembly: System.Reflection.AssemblyProductAttribute("KernelRecordsMVC.Infrastructure")]
    1818[assembly: System.Reflection.AssemblyTitleAttribute("KernelRecordsMVC.Infrastructure")]
  • KernelRecordsMVC.Infrastructure/obj/Debug/net8.0/KernelRecordsMVC.Infrastructure.AssemblyInfoInputs.cache

    rd2eccb3 rd89d25b  
    1 29890c3fa606f2219be884cf9fa6f0ab8840edefa58328d6f0795dd731979610
     10a244f365ce2ab97b7911a45cd06642ace0b6002cc3788b6ed779b9b4d4fb537
  • KernelRecordsMVC.Infrastructure/obj/Debug/net8.0/KernelRecordsMVC.Infrastructure.sourcelink.json

    rd2eccb3 rd89d25b  
    1 {"documents":{"C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\*":"https://raw.githubusercontent.com/mmilevski/kernelrecords/08aefc6f3b51f4bfcb7471a2fd319c064171b1c5/*"}}
     1{"documents":{"C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\*":"https://raw.githubusercontent.com/mmilevski/kernelrecords/d2eccb3e3d4db7d262fc57179b8ce6f7fb060d63/*"}}
  • KernelRecordsMVC.Web/Controllers/AdminController.cs

    rd2eccb3 rd89d25b  
    11501150        _context.SaveChanges();
    11511151    }
     1152    // =========================================================
     1153// ARTISTS
     1154// =========================================================
     1155
     1156[HttpGet]
     1157public IActionResult Artists()
     1158{
     1159    if (!IsAdmin())
     1160        return Forbid();
     1161
     1162    var artists = _context.Artists
     1163        .OrderBy(a => a.ArtistName)
     1164        .ToList();
     1165
     1166    return View(artists);
    11521167}
     1168
     1169
     1170// =========================================================
     1171// CREATE ARTIST - GET
     1172// =========================================================
     1173
     1174[HttpGet]
     1175public IActionResult CreateArtist()
     1176{
     1177    if (!IsAdmin())
     1178        return Forbid();
     1179
     1180    return View(new CreateArtistViewModel());
     1181}
     1182
     1183
     1184// =========================================================
     1185// CREATE ARTIST - POST
     1186// =========================================================
     1187
     1188[HttpPost]
     1189[ValidateAntiForgeryToken]
     1190public IActionResult CreateArtist(CreateArtistViewModel model)
     1191{
     1192    if (!IsAdmin())
     1193        return Forbid();
     1194
     1195    if (!ModelState.IsValid)
     1196        return View(model);
     1197
     1198    var duplicateExists =
     1199        _context.Artists.Any(a =>
     1200            a.ArtistName.ToLower() ==
     1201            model.ArtistName.Trim().ToLower());
     1202
     1203    if (duplicateExists)
     1204    {
     1205        ModelState.AddModelError(
     1206            nameof(model.ArtistName),
     1207            "An artist with this name already exists.");
     1208
     1209        return View(model);
     1210    }
     1211
     1212    var artist = new Artist
     1213    {
     1214        ArtistId = GetNextArtistId(),
     1215
     1216        ArtistName =
     1217            model.ArtistName.Trim(),
     1218
     1219        ArtistDescription =
     1220            string.IsNullOrWhiteSpace(model.ArtistDescription)
     1221                ? null
     1222                : model.ArtistDescription.Trim(),
     1223
     1224        ArtistPhoto =
     1225            string.IsNullOrWhiteSpace(model.ArtistPhoto)
     1226                ? null
     1227                : model.ArtistPhoto.Trim()
     1228    };
     1229
     1230    _context.Artists.Add(artist);
     1231    _context.SaveChanges();
     1232
     1233    TempData["Success"] =
     1234        $"{artist.ArtistName} was created successfully.";
     1235
     1236    return RedirectToAction(nameof(Artists));
     1237}
     1238
     1239
     1240// =========================================================
     1241// EDIT ARTIST - GET
     1242// =========================================================
     1243
     1244[HttpGet]
     1245public IActionResult EditArtist(long id)
     1246{
     1247    if (!IsAdmin())
     1248        return Forbid();
     1249
     1250    var artist = _context.Artists
     1251        .FirstOrDefault(a =>
     1252            a.ArtistId == id);
     1253
     1254    if (artist == null)
     1255        return NotFound();
     1256
     1257    var model = new EditArtistViewModel
     1258    {
     1259        ArtistId =
     1260            artist.ArtistId,
     1261
     1262        ArtistName =
     1263            artist.ArtistName,
     1264
     1265        ArtistDescription =
     1266            artist.ArtistDescription,
     1267
     1268        ArtistPhoto =
     1269            artist.ArtistPhoto
     1270    };
     1271
     1272    return View(model);
     1273}
     1274
     1275
     1276// =========================================================
     1277// EDIT ARTIST - POST
     1278// =========================================================
     1279
     1280[HttpPost]
     1281[ValidateAntiForgeryToken]
     1282public IActionResult EditArtist(EditArtistViewModel model)
     1283{
     1284    if (!IsAdmin())
     1285        return Forbid();
     1286
     1287    var artist = _context.Artists
     1288        .FirstOrDefault(a =>
     1289            a.ArtistId == model.ArtistId);
     1290
     1291    if (artist == null)
     1292        return NotFound();
     1293
     1294    if (!ModelState.IsValid)
     1295        return View(model);
     1296
     1297    var duplicateExists =
     1298        _context.Artists.Any(a =>
     1299            a.ArtistId != model.ArtistId &&
     1300            a.ArtistName.ToLower() ==
     1301            model.ArtistName.Trim().ToLower());
     1302
     1303    if (duplicateExists)
     1304    {
     1305        ModelState.AddModelError(
     1306            nameof(model.ArtistName),
     1307            "Another artist already uses this name.");
     1308
     1309        return View(model);
     1310    }
     1311
     1312    artist.ArtistName =
     1313        model.ArtistName.Trim();
     1314
     1315    artist.ArtistDescription =
     1316        string.IsNullOrWhiteSpace(model.ArtistDescription)
     1317            ? null
     1318            : model.ArtistDescription.Trim();
     1319
     1320    artist.ArtistPhoto =
     1321        string.IsNullOrWhiteSpace(model.ArtistPhoto)
     1322            ? null
     1323            : model.ArtistPhoto.Trim();
     1324
     1325    _context.Artists.Update(artist);
     1326    _context.SaveChanges();
     1327
     1328    TempData["Success"] =
     1329        $"{artist.ArtistName} was updated successfully.";
     1330
     1331    return RedirectToAction(nameof(Artists));
     1332}
     1333private long GetNextArtistId()
     1334{
     1335    var maxId = _context.Artists
     1336        .Select(x => (long?)x.ArtistId)
     1337        .Max();
     1338
     1339    return (maxId ?? 0) + 1;
     1340}
     1341// =========================================================
     1342// RELEASES
     1343// =========================================================
     1344
     1345[HttpGet]
     1346public IActionResult Releases()
     1347{
     1348    if (!IsAdmin())
     1349        return Forbid();
     1350
     1351    var releases = _context.Releases
     1352        .Include(r => r.ReleaseArtists)
     1353            .ThenInclude(ra => ra.Artist)
     1354        .OrderBy(r => r.Title)
     1355        .ToList();
     1356
     1357    return View(releases);
     1358}
     1359
     1360
     1361// =========================================================
     1362// EDIT RELEASE - GET
     1363// =========================================================
     1364
     1365    [HttpGet]
     1366    public IActionResult EditRelease(long id)
     1367    {
     1368        if (!IsAdmin())
     1369            return Forbid();
     1370
     1371
     1372        var release = _context.Releases
     1373            .Include(r => r.ReleaseArtists)
     1374            .ThenInclude(ra => ra.Artist)
     1375            .FirstOrDefault(r =>
     1376                r.ReleaseId == id);
     1377
     1378
     1379        if (release == null)
     1380            return NotFound();
     1381
     1382
     1383        var mainArtist = release.ReleaseArtists
     1384            .FirstOrDefault(ra =>
     1385                ra.Type == ArtistReleaseType.MAIN);
     1386
     1387
     1388        var featuredArtists = release.ReleaseArtists
     1389            .Where(ra =>
     1390                ra.Type == ArtistReleaseType.FEATURE)
     1391            .OrderBy(ra => ra.ReleaseOrdinal)
     1392            .Select(ra => ra.ArtistId)
     1393            .ToList();
     1394
     1395
     1396        var model = new EditReleaseViewModel
     1397        {
     1398            ReleaseId =
     1399                release.ReleaseId,
     1400
     1401            Title =
     1402                release.Title,
     1403
     1404            RecordLabel =
     1405                release.RecordLabel,
     1406
     1407            Genre =
     1408                release.Genre,
     1409
     1410            ReleaseDate =
     1411                release.ReleaseDate,
     1412
     1413            CoverPhoto =
     1414                release.CoverPhoto,
     1415
     1416            MainArtistId =
     1417                mainArtist?.ArtistId ?? 0,
     1418
     1419            FeaturedArtistIds =
     1420                featuredArtists
     1421        };
     1422
     1423
     1424        LoadArtists();
     1425
     1426
     1427        return View(model);
     1428    }
     1429
     1430
     1431// =========================================================
     1432// EDIT RELEASE - POST
     1433// =========================================================
     1434
     1435[HttpPost]
     1436[ValidateAntiForgeryToken]
     1437public IActionResult EditRelease(
     1438    EditReleaseViewModel model)
     1439{
     1440    if (!IsAdmin())
     1441        return Forbid();
     1442
     1443
     1444    var release = _context.Releases
     1445        .Include(r => r.ReleaseArtists)
     1446        .FirstOrDefault(r =>
     1447            r.ReleaseId == model.ReleaseId);
     1448
     1449
     1450    if (release == null)
     1451        return NotFound();
     1452
     1453
     1454    // ==========================================
     1455    // ARTIST VALIDATION
     1456    // ==========================================
     1457
     1458    var mainArtistExists =
     1459        _context.Artists.Any(a =>
     1460            a.ArtistId == model.MainArtistId);
     1461
     1462
     1463    if (!mainArtistExists)
     1464    {
     1465        ModelState.AddModelError(
     1466            nameof(model.MainArtistId),
     1467            "Please select a valid main artist.");
     1468    }
     1469
     1470
     1471    model.FeaturedArtistIds ??=
     1472        new List<long>();
     1473
     1474
     1475    model.FeaturedArtistIds =
     1476        model.FeaturedArtistIds
     1477            .Distinct()
     1478            .Where(id =>
     1479                id != model.MainArtistId)
     1480            .ToList();
     1481
     1482
     1483    if (model.FeaturedArtistIds.Count > 0)
     1484    {
     1485        var validFeaturedCount =
     1486            _context.Artists.Count(a =>
     1487                model.FeaturedArtistIds
     1488                    .Contains(a.ArtistId));
     1489
     1490
     1491        if (validFeaturedCount !=
     1492            model.FeaturedArtistIds.Count)
     1493        {
     1494            ModelState.AddModelError(
     1495                nameof(model.FeaturedArtistIds),
     1496                "One or more featured artists are invalid.");
     1497        }
     1498    }
     1499
     1500
     1501    if (!ModelState.IsValid)
     1502    {
     1503        LoadArtists();
     1504
     1505        return View(model);
     1506    }
     1507
     1508
     1509    using var transaction =
     1510        _context.Database.BeginTransaction();
     1511
     1512
     1513    try
     1514    {
     1515        // ==========================================
     1516        // UPDATE RELEASE INFORMATION
     1517        // ==========================================
     1518
     1519        release.Title =
     1520            model.Title.Trim();
     1521
     1522        release.RecordLabel =
     1523            string.IsNullOrWhiteSpace(
     1524                model.RecordLabel)
     1525                ? null
     1526                : model.RecordLabel.Trim();
     1527
     1528        release.Genre =
     1529            model.Genre.Trim();
     1530
     1531        release.ReleaseDate =
     1532            model.ReleaseDate;
     1533
     1534        release.CoverPhoto =
     1535            model.CoverPhoto.Trim();
     1536
     1537
     1538        _context.Releases.Update(
     1539            release);
     1540
     1541
     1542        // ==========================================
     1543        // REMOVE OLD RELEASE ARTIST LINKS
     1544        // ==========================================
     1545
     1546        var existingArtistLinks =
     1547            release.ReleaseArtists.ToList();
     1548
     1549
     1550        _context.ReleaseArtists.RemoveRange(
     1551            existingArtistLinks);
     1552
     1553
     1554        _context.SaveChanges();
     1555
     1556
     1557        // ==========================================
     1558        // ADD MAIN ARTIST
     1559        // ==========================================
     1560
     1561        _context.ReleaseArtists.Add(
     1562            new ReleaseArtist
     1563            {
     1564                ReleaseId =
     1565                    release.ReleaseId,
     1566
     1567                ArtistId =
     1568                    model.MainArtistId,
     1569
     1570                ReleaseOrdinal =
     1571                    1,
     1572
     1573                Type =
     1574                    ArtistReleaseType.MAIN
     1575            });
     1576
     1577
     1578        // ==========================================
     1579        // ADD FEATURED ARTISTS
     1580        // ==========================================
     1581
     1582        long ordinal = 2;
     1583
     1584
     1585        foreach (var artistId
     1586                 in model.FeaturedArtistIds)
     1587        {
     1588            _context.ReleaseArtists.Add(
     1589                new ReleaseArtist
     1590                {
     1591                    ReleaseId =
     1592                        release.ReleaseId,
     1593
     1594                    ArtistId =
     1595                        artistId,
     1596
     1597                    ReleaseOrdinal =
     1598                        ordinal++,
     1599
     1600                    Type =
     1601                        ArtistReleaseType.FEATURE
     1602                });
     1603        }
     1604
     1605
     1606        _context.SaveChanges();
     1607
     1608
     1609        transaction.Commit();
     1610
     1611
     1612        TempData["Success"] =
     1613            $"{release.Title} was updated successfully.";
     1614
     1615
     1616        return RedirectToAction(
     1617            nameof(Releases));
     1618    }
     1619    catch
     1620    {
     1621        transaction.Rollback();
     1622
     1623        throw;
     1624    }
     1625}
     1626}
  • KernelRecordsMVC.Web/Controllers/WishlistController.cs

    rd2eccb3 rd89d25b  
    5454    public IActionResult Add(long productId)
    5555    {
    56         var userId = GetUserId();
    57 
    58         if (userId == null)
    59         {
    60             return RedirectToAction(
    61                 "Login",
    62                 "Account");
    63         }
    64 
    65         var product = _context.Products
    66             .Include(p => p.Release)
    67             .FirstOrDefault(p => p.ProductId == productId);
     56        var sessionUserId =
     57            HttpContext.Session.GetInt32("UserId");
     58
     59        if (!sessionUserId.HasValue)
     60        {
     61            return RedirectToAction(
     62                "Login",
     63                "Account");
     64        }
     65
     66        var userId =
     67            (long)sessionUserId.Value;
     68
     69
     70        var product =
     71            _context.Products
     72                .FirstOrDefault(p =>
     73                    p.ProductId == productId);
    6874
    6975        if (product == null)
    … …  
    7177
    7278
    73         // Find existing wishlist
    74         var wishlist = _context.Wishlists
    75             .Include(w => w.WishlistProducts)
    76             .FirstOrDefault(w =>
    77                 w.UserId == userId.Value);
    78 
    79 
    80         // Create wishlist if user doesn't have one
     79        var wishlist =
     80            _context.Wishlists
     81                .FirstOrDefault(w =>
     82                    w.UserId == userId);
     83
     84
     85        // Create wishlist if user doesn't have one yet.
    8186        if (wishlist == null)
    8287        {
    8388            wishlist = new Wishlist
    8489            {
    85                 WishlistId = GetNextWishlistId(),
    86                 UserId = userId.Value
     90                WishlistId =
     91                    GetNextWishlistId(),
     92
     93                UserId =
     94                    userId
    8795            };
    8896
    89             _context.Wishlists.Add(wishlist);
     97
     98            _context.Wishlists.Add(
     99                wishlist);
     100
    90101            _context.SaveChanges();
    91102        }
    92103
    93104
    94         // Check if product is already there
    95         var alreadyExists = wishlist.WishlistProducts
    96             .Any(x => x.ProductId == productId);
     105        // Prevent duplicate product.
     106        var alreadyExists =
     107            _context.WishlistProducts
     108                .Any(wp =>
     109                    wp.WishlistId ==
     110                    wishlist.WishlistId &&
     111                    wp.ProductId ==
     112                    productId);
     113
    97114
    98115        if (!alreadyExists)
    99116        {
    100             var wishlistProduct = new WishlistProduct
    101             {
    102                 WishlistId = wishlist.WishlistId,
    103                 ProductId = productId,
    104                 AddedAt = DateTime.Today
    105             };
    106 
    107             _context.WishlistProducts.Add(wishlistProduct);
     117            var wishlistProduct =
     118                new WishlistProduct
     119                {
     120                    WishlistId =
     121                        wishlist.WishlistId,
     122
     123                    ProductId =
     124                        productId
     125                };
     126
     127
     128            _context.WishlistProducts.Add(
     129                wishlistProduct);
     130
    108131            _context.SaveChanges();
    109 
    110             TempData["Success"] =
    111                 "Product added to your wishlist.";
    112         }
    113         else
    114         {
    115             TempData["Info"] =
    116                 "This product is already in your wishlist.";
    117         }
     132        }
     133
     134
     135        TempData["Success"] =
     136            "Product added to your wishlist.";
     137
    118138
    119139        return RedirectToAction(
    120             "Details",
    121             "Release",
    122             new { id = product.ReleaseId });
     140            nameof(Index));
    123141    }
    124142
  • KernelRecordsMVC.Web/Views/Account/Login.cshtml

    rd2eccb3 rd89d25b  
    11@model KernelRecordsMVC.Application.ViewModels.LoginViewModel
    22
    3 <h2>Login</h2>
     3@{
     4    ViewData["Title"] = "Login";
     5}
    46
    5 <form asp-action="Login" method="post">
     7<div class="auth-page">
    68
    7     <div asp-validation-summary="ModelOnly"
    8          class="text-danger">
    9     </div>
     9    <div class="auth-shell">
     10
     11        <div class="auth-brand-panel">
     12
     13            <a asp-controller="Home"
     14               asp-action="Index"
     15               class="auth-logo-link">
     16
     17                <img src="~/images/logo.png"
     18                     asp-append-version="true"
     19                     alt="Kernel Records"
     20                     class="auth-logo" />
     21
     22            </a>
     23
     24            <div class="auth-brand-copy">
     25
     26                <span class="auth-eyebrow">
     27                    KERNEL RECORDS
     28                </span>
     29
     30                <h1>
     31                    Welcome back.
     32                </h1>
     33
     34                <p>
     35                    Sign in to manage your wishlist,
     36                    orders and record collection.
     37                </p>
     38
     39            </div>
     40
     41        </div>
    1042
    1143
    12     <div class="mb-3">
     44        <div class="auth-form-panel">
    1345
    14         <label asp-for="Username"
    15                class="form-label">
    16         </label>
     46            <div class="auth-form-header">
    1747
    18         <input asp-for="Username"
    19                class="form-control"/>
     48                <span class="auth-eyebrow">
     49                    ACCOUNT
     50                </span>
    2051
    21         <span asp-validation-for="Username"
    22               class="text-danger">
    23         </span>
     52                <h2>Login</h2>
     53
     54                <p>
     55                    Enter your account details below.
     56                </p>
     57
     58            </div>
     59
     60
     61            <form asp-action="Login"
     62                  method="post"
     63                  class="auth-form">
     64
     65                @Html.AntiForgeryToken()
     66
     67
     68                <div asp-validation-summary="ModelOnly"
     69                     class="auth-validation-summary">
     70                </div>
     71
     72
     73                <!-- USERNAME -->
     74
     75                <div class="auth-field">
     76
     77                    <label asp-for="Username">
     78                        Username
     79                    </label>
     80
     81                    <input asp-for="Username"
     82                           autocomplete="username"
     83                           placeholder="Enter your username" />
     84
     85                    <span asp-validation-for="Username"
     86                          class="auth-field-error">
     87                    </span>
     88
     89                </div>
     90
     91
     92                <!-- PASSWORD -->
     93
     94                <div class="auth-field">
     95
     96                    <label asp-for="Password">
     97                        Password
     98                    </label>
     99
     100                    <div class="auth-password-field">
     101
     102                        <input asp-for="Password"
     103                               autocomplete="current-password"
     104                               placeholder="Enter your password"
     105                               id="loginPassword" />
     106
     107                        <button type="button"
     108                                class="auth-password-toggle"
     109                                data-password-toggle="loginPassword"
     110                                aria-label="Show password">
     111
     112                            Show
     113
     114                        </button>
     115
     116                    </div>
     117
     118                    <span asp-validation-for="Password"
     119                          class="auth-field-error">
     120                    </span>
     121
     122                </div>
     123
     124
     125                <button type="submit"
     126                        class="auth-submit">
     127
     128                    Login
     129
     130                </button>
     131
     132            </form>
     133
     134
     135            <div class="auth-switch">
     136
     137                <span>
     138                    Don't have an account?
     139                </span>
     140
     141                <a asp-action="Register">
     142                    Create account →
     143                </a>
     144
     145            </div>
     146
     147        </div>
    24148
    25149    </div>
    26150
     151</div>
    27152
    28     <div class="mb-3">
    29 
    30         <label asp-for="Password"
    31                class="form-label">
    32         </label>
    33 
    34         <input asp-for="Password"
    35                class="form-control"/>
    36 
    37         <span asp-validation-for="Password"
    38               class="text-danger">
    39         </span>
    40 
    41     </div>
    42 
    43 
    44     <button type="submit"
    45             class="btn btn-primary">
    46 
    47         Login
    48 
    49     </button>
    50 
    51 </form>
    52 
    53 <div class="mt-3">
    54 
    55     Don't have an account?
    56 
    57     <a asp-action="Register">
    58         Register
    59     </a>
    60 
    61 </div>
    62153
    63154@section Scripts
    64155{
    65     <partial name="_ValidationScriptsPartial"/>
     156    <partial name="_ValidationScriptsPartial" />
     157
     158    <script>
     159
     160        document
     161            .querySelectorAll("[data-password-toggle]")
     162            .forEach(function (button)
     163            {
     164                button.addEventListener(
     165                    "click",
     166                    function ()
     167                    {
     168                        const input =
     169                            document.getElementById(
     170                                button.dataset.passwordToggle);
     171
     172
     173                        if (input.type === "password")
     174                        {
     175                            input.type = "text";
     176                            button.textContent = "Hide";
     177                            button.setAttribute(
     178                                "aria-label",
     179                                "Hide password");
     180                        }
     181                        else
     182                        {
     183                            input.type = "password";
     184                            button.textContent = "Show";
     185                            button.setAttribute(
     186                                "aria-label",
     187                                "Show password");
     188                        }
     189                    });
     190            });
     191
     192    </script>
    66193}
  • KernelRecordsMVC.Web/Views/Account/Register.cshtml

    rd2eccb3 rd89d25b  
    11@model KernelRecordsMVC.Application.ViewModels.RegisterViewModel
    22
    3 <h2>Register</h2>
    4 
    5 <form asp-action="Register" method="post">
    6 
    7     <div class="mb-3">
    8         <label asp-for="Email" class="form-label"></label>
    9 
    10         <input asp-for="Email"
    11                class="form-control"/>
    12 
    13         <span asp-validation-for="Email"
    14               class="text-danger"></span>
     3@{
     4    ViewData["Title"] = "Register";
     5}
     6
     7<div class="auth-page">
     8
     9    <div class="auth-shell auth-shell-register">
     10
     11        <div class="auth-brand-panel">
     12
     13            <a asp-controller="Home"
     14               asp-action="Index"
     15               class="auth-logo-link">
     16
     17                <img src="~/images/logo.png"
     18                     asp-append-version="true"
     19                     alt="Kernel Records"
     20                     class="auth-logo" />
     21
     22            </a>
     23
     24            <div class="auth-brand-copy">
     25
     26                <span class="auth-eyebrow">
     27                    KERNEL RECORDS
     28                </span>
     29
     30                <h1>
     31                    Start your collection.
     32                </h1>
     33
     34                <p>
     35                    Create an account to save releases,
     36                    build your wishlist and place orders.
     37                </p>
     38
     39            </div>
     40
     41        </div>
     42
     43
     44        <div class="auth-form-panel">
     45
     46            <div class="auth-form-header">
     47
     48                <span class="auth-eyebrow">
     49                    NEW ACCOUNT
     50                </span>
     51
     52                <h2>Register</h2>
     53
     54                <p>
     55                    Create your Kernel Records account.
     56                </p>
     57
     58            </div>
     59
     60
     61            <form asp-action="Register"
     62                  method="post"
     63                  class="auth-form">
     64
     65                @Html.AntiForgeryToken()
     66
     67
     68                <div asp-validation-summary="ModelOnly"
     69                     class="auth-validation-summary">
     70                </div>
     71
     72
     73                <!-- EMAIL -->
     74
     75                <div class="auth-field">
     76
     77                    <label asp-for="Email">
     78                        Email
     79                    </label>
     80
     81                    <input asp-for="Email"
     82                           autocomplete="email"
     83                           placeholder="mila@gmail.com" />
     84
     85                    <span asp-validation-for="Email"
     86                          class="auth-field-error">
     87                    </span>
     88
     89                </div>
     90
     91
     92                <!-- USERNAME -->
     93
     94                <div class="auth-field">
     95
     96                    <label asp-for="Username">
     97                        Username
     98                    </label>
     99
     100                    <input asp-for="Username"
     101                           autocomplete="username"
     102                           placeholder="Choose a username" />
     103
     104                    <span asp-validation-for="Username"
     105                          class="auth-field-error">
     106                    </span>
     107
     108                </div>
     109
     110
     111                <!-- PASSWORD ROW -->
     112
     113                <div class="auth-form-row">
     114
     115                    <div class="auth-field">
     116
     117                        <label asp-for="Password">
     118                            Password
     119                        </label>
     120
     121                        <div class="auth-password-field">
     122
     123                            <input asp-for="Password"
     124                                   autocomplete="new-password"
     125                                   placeholder="Create password"
     126                                   id="registerPassword" />
     127
     128                            <button type="button"
     129                                    class="auth-password-toggle"
     130                                    data-password-toggle="registerPassword"
     131                                    aria-label="Show password">
     132
     133                                Show
     134
     135                            </button>
     136
     137                        </div>
     138
     139                        <span asp-validation-for="Password"
     140                              class="auth-field-error">
     141                        </span>
     142
     143                    </div>
     144
     145
     146                    <div class="auth-field">
     147
     148                        <label asp-for="ConfirmPassword">
     149                            Confirm Password
     150                        </label>
     151
     152                        <div class="auth-password-field">
     153
     154                            <input asp-for="ConfirmPassword"
     155                                   autocomplete="new-password"
     156                                   placeholder="Repeat password"
     157                                   id="confirmPassword" />
     158
     159                            <button type="button"
     160                                    class="auth-password-toggle"
     161                                    data-password-toggle="confirmPassword"
     162                                    aria-label="Show password">
     163
     164                                Show
     165
     166                            </button>
     167
     168                        </div>
     169
     170                        <span asp-validation-for="ConfirmPassword"
     171                              class="auth-field-error">
     172                        </span>
     173
     174                    </div>
     175
     176                </div>
     177
     178
     179                <!-- SHIPPING ADDRESS -->
     180
     181                <div class="auth-field">
     182
     183                    <label asp-for="ShippingAddress">
     184                        Shipping Address
     185                        <span class="auth-optional">
     186                            Optional
     187                        </span>
     188                    </label>
     189
     190                    <input asp-for="ShippingAddress"
     191                           autocomplete="street-address"
     192                           placeholder="Shipping address" />
     193
     194                    <span asp-validation-for="ShippingAddress"
     195                          class="auth-field-error">
     196                    </span>
     197
     198                </div>
     199
     200
     201                <!-- TELEPHONE -->
     202
     203                <div class="auth-field">
     204
     205                    <label asp-for="TelephoneNumber">
     206                        Telephone Number
     207                        <span class="auth-optional">
     208                            Optional
     209                        </span>
     210                    </label>
     211   
     212                    <input asp-for="TelephoneNumber"
     213                           type="tel"
     214                           autocomplete="tel"
     215                           placeholder="+389..." />
     216
     217                    <span asp-validation-for="TelephoneNumber"
     218                          class="auth-field-error">
     219                    </span>
     220
     221                </div>
     222
     223
     224                <button type="submit"
     225                        class="auth-submit">
     226
     227                    Create Account
     228
     229                </button>
     230
     231            </form>
     232
     233
     234            <div class="auth-switch">
     235
     236                <span>
     237                    Already have an account?
     238                </span>
     239
     240                <a asp-action="Login">
     241                    Login →
     242                </a>
     243
     244            </div>
     245
     246        </div>
     247
    15248    </div>
    16249
    17 
    18     <div class="mb-3">
    19         <label asp-for="Username" class="form-label"></label>
    20 
    21         <input asp-for="Username"
    22                class="form-control"/>
    23 
    24         <span asp-validation-for="Username"
    25               class="text-danger"></span>
    26     </div>
    27 
    28 
    29     <div class="mb-3">
    30         <label asp-for="Password"
    31                class="form-label"></label>
    32 
    33         <input asp-for="Password"
    34                class="form-control"/>
    35 
    36         <span asp-validation-for="Password"
    37               class="text-danger"></span>
    38     </div>
    39 
    40 
    41     <div class="mb-3">
    42         <label asp-for="ConfirmPassword"
    43                class="form-label"></label>
    44 
    45         <input asp-for="ConfirmPassword"
    46                class="form-control"/>
    47 
    48         <span asp-validation-for="ConfirmPassword"
    49               class="text-danger"></span>
    50     </div>
    51 
    52 
    53     <div class="mb-3">
    54         <label asp-for="ShippingAddress"
    55                class="form-label">
    56 
    57             Shipping Address
    58 
    59         </label>
    60 
    61         <input asp-for="ShippingAddress"
    62                class="form-control"/>
    63     </div>
    64 
    65 
    66     <div class="mb-3">
    67         <label asp-for="TelephoneNumber"
    68                class="form-label">
    69 
    70             Telephone Number
    71 
    72         </label>
    73 
    74         <input asp-for="TelephoneNumber"
    75                class="form-control"/>
    76     </div>
    77 
    78 
    79     <button type="submit"
    80             class="btn btn-primary">
    81 
    82         Register
    83 
    84     </button>
    85 
    86 </form>
    87 
    88 <div class="mt-3">
    89 
    90     Already have an account?
    91 
    92     <a asp-action="Login">
    93         Login
    94     </a>
    95 
    96250</div>
     251
    97252
    98253@section Scripts
    99254{
    100     <partial name="_ValidationScriptsPartial"/>
     255    <partial name="_ValidationScriptsPartial" />
     256
     257    <script>
     258
     259        document
     260            .querySelectorAll("[data-password-toggle]")
     261            .forEach(function (button)
     262            {
     263                button.addEventListener(
     264                    "click",
     265                    function ()
     266                    {
     267                        const input =
     268                            document.getElementById(
     269                                button.dataset.passwordToggle);
     270
     271
     272                        if (input.type === "password")
     273                        {
     274                            input.type = "text";
     275                            button.textContent = "Hide";
     276                            button.setAttribute(
     277                                "aria-label",
     278                                "Hide password");
     279                        }
     280                        else
     281                        {
     282                            input.type = "password";
     283                            button.textContent = "Show";
     284                            button.setAttribute(
     285                                "aria-label",
     286                                "Show password");
     287                        }
     288                    });
     289            });
     290
     291    </script>
    101292}
  • KernelRecordsMVC.Web/Views/Admin/Index.cshtml

    rd2eccb3 rd89d25b  
    1313        <div>
    1414
    15             <span class="admin-eyebrow">
    16                 KERNEL RECORDS
    17             </span>
     15            <img src="~/images/logo.png"
     16                 asp-append-version="true"
     17                 alt="Kernel Records"
     18                 class="admin-page-logo" />
    1819
    1920            <h1>Admin Dashboard</h1>
    … …  
    256257
    257258            </a>
     259            <a asp-action="Artists"
     260               class="admin-action-card">
     261
     262                <div class="admin-action-icon">
     263                    ♫
     264                </div>
     265
     266                <div>
     267
     268                    <h3>Manage Artists</h3>
     269
     270                    <p>
     271                        Create and edit artist profiles,
     272                        descriptions and photos.
     273                    </p>
     274
     275                </div>
     276
     277                <span class="admin-action-arrow">
     278                    →
     279                </span>
     280
     281            </a>
     282
     283
     284            <a asp-action="Releases"
     285               class="admin-action-card">
     286
     287                <div class="admin-action-icon">
     288                    ◉
     289                </div>
     290
     291                <div>
     292
     293                    <h3>Manage Releases</h3>
     294
     295                    <p>
     296                        Browse and edit albums and singles
     297                        in the catalog.
     298                    </p>
     299
     300                </div>
     301
     302                <span class="admin-action-arrow">
     303                    →
     304                </span>
     305
     306            </a>
    258307
    259308        </div>
  • KernelRecordsMVC.Web/Views/Home/Index.cshtml

    rd2eccb3 rd89d25b  
    1212
    1313        <div class="home-hero-content">
    14 
    15             <span class="home-eyebrow">
    16                 KERNEL RECORDS
    17             </span>
    1814
    1915            <h1>
    … …  
    5248
    5349
    54         <div class="home-hero-mark">
    55             K
     50        <div class="hero-logo">
     51            <img src="~/images/logo.png"
     52                 asp-append-version="true"
     53                 alt="Kernel Records"
     54                 class="hero-logo-image" />
    5655        </div>
    5756
  • KernelRecordsMVC.Web/Views/Release/Details.cshtml

    rd2eccb3 rd89d25b  
    6868                </div>
    6969
     70
    7071                <div>
    7172
    … …  
    7879                </div>
    7980
     81
    8082                <div>
    8183
    … …  
    8385
    8486                    <strong>
    85                         @Model.RecordLabel
     87                        @(string.IsNullOrWhiteSpace(Model.RecordLabel)
     88                            ? "Independent"
     89                            : Model.RecordLabel)
    8690                    </strong>
    8791
    … …  
    102106                        .OrderBy(x => x.ReleaseOrdinal))
    103107                    {
    104                         <span class="artist-tag">
     108                        <a asp-controller="Artist"
     109                           asp-action="Details"
     110                           asp-route-id="@artist.ArtistId"
     111                           class="artist-tag">
    105112
    106113                            @artist.Artist.ArtistName
    … …  
    113120                            }
    114121
    115                         </span>
     122                        </a>
    116123                    }
    117124
    … …  
    172179                                @product.Format
    173180                            </span>
     181
    174182
    175183                            @if (product.Stock > 0)
    … …  
    203211                            <div class="product-actions">
    204212
     213                                <!-- ADD TO CART -->
     214
    205215                                <a asp-controller="Order"
    206216                                   asp-action="AddProduct"
    … …  
    212222                                </a>
    213223
    214                                 <a asp-controller="Wishlist"
    215                                    asp-action="Add"
    216                                    asp-route-productId="@product.ProductId"
    217                                    class="store-button secondary">
    218 
    219                                     ♡ Wishlist
    220 
    221                                 </a>
     224
     225                                <!-- ADD TO WISHLIST -->
     226
     227                                <form asp-controller="Wishlist"
     228                                      asp-action="Add"
     229                                      method="post">
     230
     231                                    @Html.AntiForgeryToken()
     232
     233                                    <input type="hidden"
     234                                           name="productId"
     235                                           value="@product.ProductId" />
     236
     237                                    <button type="submit"
     238                                            class="store-button secondary">
     239
     240                                        ♡ Wishlist
     241
     242                                    </button>
     243
     244                                </form>
    222245
    223246                            </div>
    … …  
    227250                            <div class="product-actions">
    228251
    229                                 <a asp-controller="Wishlist"
    230                                    asp-action="Add"
    231                                    asp-route-productId="@product.ProductId"
    232                                    class="store-button secondary full">
    233 
    234                                     ♡ Add to Wishlist
    235 
    236                                 </a>
     252                                <!-- OUT OF STOCK: WISHLIST ONLY -->
     253
     254                                <form asp-controller="Wishlist"
     255                                      asp-action="Add"
     256                                      method="post">
     257
     258                                    @Html.AntiForgeryToken()
     259
     260                                    <input type="hidden"
     261                                           name="productId"
     262                                           value="@product.ProductId" />
     263
     264                                    <button type="submit"
     265                                            class="store-button secondary full">
     266
     267                                        ♡ Add to Wishlist
     268
     269                                    </button>
     270
     271                                </form>
    237272
    238273                            </div>
    … …  
    277312
    278313
    279             <ol class="track-list">
    280 
    281                 @{
    282                     var trackNumber = 1;
    283                 }
    284 
    285                 @foreach (var albumSong in Model.Album.AlbumSongs
    286                     .OrderBy(x => x.SongId))
    287                 {
    288                     <li class="track-row">
    289 
    290                         <span class="track-number">
    291                             @trackNumber.ToString("00")
    292                         </span>
    293 
    294                         <div class="track-main">
    295 
    296                             <strong>
    297                                 @albumSong.Song.SongName
    298                             </strong>
    299 
    300                             @if (albumSong.Song.SongArtists.Any())
    301                             {
    302                                 <div class="song-artists">
    303 
    304                                     @string.Join(
    305                                         ", ",
    306                                         albumSong.Song.SongArtists
    307                                             .OrderBy(x => x.SongOrdinal)
    308                                             .Select(x => x.Artist.ArtistName)
    309                                     )
    310 
    311                                 </div>
    312                             }
    313 
    314                         </div>
    315 
    316                         <span class="track-duration">
    317                             @albumSong.Song.SongDuration
    318                         </span>
    319 
    320                     </li>
    321 
    322                     trackNumber++;
    323                 }
    324 
    325             </ol>
     314            @if (!Model.Album.AlbumSongs.Any())
     315            {
     316                <div class="no-products">
     317                    No tracks have been added to this album.
     318                </div>
     319            }
     320            else
     321            {
     322                <ol class="track-list">
     323
     324                    @{
     325                        var trackNumber = 1;
     326                    }
     327
     328
     329                    @foreach (var albumSong in Model.Album.AlbumSongs
     330                        .OrderBy(x => x.SongId))
     331                    {
     332                        <li class="track-row">
     333
     334                            <span class="track-number">
     335                                @trackNumber.ToString("00")
     336                            </span>
     337
     338
     339                            <div class="track-main">
     340
     341                                <strong>
     342                                    @albumSong.Song.SongName
     343                                </strong>
     344
     345
     346                                @if (albumSong.Song.SongArtists != null &&
     347                                     albumSong.Song.SongArtists.Any())
     348                                {
     349                                    <div class="song-artists">
     350
     351                                        @string.Join(
     352                                            ", ",
     353                                            albumSong.Song.SongArtists
     354                                                .OrderBy(x => x.SongOrdinal)
     355                                                .Select(x =>
     356                                                    x.Artist.ArtistName)
     357                                        )
     358
     359                                    </div>
     360                                }
     361
     362                            </div>
     363
     364
     365                            <span class="track-duration">
     366                                @albumSong.Song.SongDuration
     367                            </span>
     368
     369                        </li>
     370
     371                        trackNumber++;
     372                    }
     373
     374                </ol>
     375            }
    326376
    327377        </section>
    … …  
    368418                </div>
    369419
     420
    370421                <div class="single-duration">
    371422
  • KernelRecordsMVC.Web/Views/Shared/_Layout.cshtml

    rd2eccb3 rd89d25b  
    3131        <!-- LOGO -->
    3232
    33         <a class="brand"
    34            asp-controller="Home"
    35            asp-action="Index">
    36 
    37             <span class="brand-main">
    38                 KERNEL
    39             </span>
    40 
    41             <span class="brand-sub">
    42                 RECORDS
    43             </span>
     33        <a asp-controller="Home"
     34           asp-action="Index"
     35           class="navbar-brand logo-brand">
     36
     37            <img src="~/images/logo.png"
     38                 asp-append-version="true"
     39                 alt="Kernel Records"
     40                 class="site-logo" />
    4441
    4542        </a>
  • KernelRecordsMVC.Web/bin/Debug/net8.0/KernelRecordsMVC.Web.staticwebassets.runtime.json

    rd2eccb3 rd89d25b  
    1 {"ContentRoots":["C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\KernelRecordsMVC.Web\\wwwroot\\","C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\KernelRecordsMVC.Web\\obj\\Debug\\net8.0\\scopedcss\\bundle\\"],"Root":{"Children":{"css":{"Children":{"site.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"css/site.css"},"Patterns":null}},"Asset":null,"Patterns":null},"favicon.ico":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"favicon.ico"},"Patterns":null},"js":{"Children":{"site.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"js/site.js"},"Patterns":null}},"Asset":null,"Patterns":null},"lib":{"Children":{"bootstrap":{"Children":{"dist":{"Children":{"css":{"Children":{"bootstrap-grid.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.css"},"Patterns":null},"bootstrap-grid.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.css.map"},"Patterns":null},"bootstrap-grid.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.min.css"},"Patterns":null},"bootstrap-grid.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.min.css.map"},"Patterns":null},"bootstrap-grid.rtl.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.css"},"Patterns":null},"bootstrap-grid.rtl.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map"},"Patterns":null},"bootstrap-grid.rtl.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css"},"Patterns":null},"bootstrap-grid.rtl.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map"},"Patterns":null},"bootstrap-reboot.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.css"},"Patterns":null},"bootstrap-reboot.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.css.map"},"Patterns":null},"bootstrap-reboot.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.min.css"},"Patterns":null},"bootstrap-reboot.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.min.css.map"},"Patterns":null},"bootstrap-reboot.rtl.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.css"},"Patterns":null},"bootstrap-reboot.rtl.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map"},"Patterns":null},"bootstrap-reboot.rtl.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css"},"Patterns":null},"bootstrap-reboot.rtl.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map"},"Patterns":null},"bootstrap-utilities.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.css"},"Patterns":null},"bootstrap-utilities.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.css.map"},"Patterns":null},"bootstrap-utilities.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.min.css"},"Patterns":null},"bootstrap-utilities.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.min.css.map"},"Patterns":null},"bootstrap-utilities.rtl.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.css"},"Patterns":null},"bootstrap-utilities.rtl.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map"},"Patterns":null},"bootstrap-utilities.rtl.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css"},"Patterns":null},"bootstrap-utilities.rtl.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map"},"Patterns":null},"bootstrap.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.css"},"Patterns":null},"bootstrap.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.css.map"},"Patterns":null},"bootstrap.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.min.css"},"Patterns":null},"bootstrap.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.min.css.map"},"Patterns":null},"bootstrap.rtl.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.rtl.css"},"Patterns":null},"bootstrap.rtl.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.rtl.css.map"},"Patterns":null},"bootstrap.rtl.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.rtl.min.css"},"Patterns":null},"bootstrap.rtl.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.rtl.min.css.map"},"Patterns":null}},"Asset":null,"Patterns":null},"js":{"Children":{"bootstrap.bundle.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.bundle.js"},"Patterns":null},"bootstrap.bundle.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.bundle.js.map"},"Patterns":null},"bootstrap.bundle.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.bundle.min.js"},"Patterns":null},"bootstrap.bundle.min.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.bundle.min.js.map"},"Patterns":null},"bootstrap.esm.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.esm.js"},"Patterns":null},"bootstrap.esm.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.esm.js.map"},"Patterns":null},"bootstrap.esm.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.esm.min.js"},"Patterns":null},"bootstrap.esm.min.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.esm.min.js.map"},"Patterns":null},"bootstrap.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.js"},"Patterns":null},"bootstrap.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.js.map"},"Patterns":null},"bootstrap.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.min.js"},"Patterns":null},"bootstrap.min.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.min.js.map"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":null},"LICENSE":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/LICENSE"},"Patterns":null}},"Asset":null,"Patterns":null},"jquery-validation-unobtrusive":{"Children":{"jquery.validate.unobtrusive.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"},"Patterns":null},"jquery.validate.unobtrusive.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"},"Patterns":null},"LICENSE.txt":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation-unobtrusive/LICENSE.txt"},"Patterns":null}},"Asset":null,"Patterns":null},"jquery-validation":{"Children":{"dist":{"Children":{"additional-methods.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/dist/additional-methods.js"},"Patterns":null},"additional-methods.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/dist/additional-methods.min.js"},"Patterns":null},"jquery.validate.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/dist/jquery.validate.js"},"Patterns":null},"jquery.validate.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/dist/jquery.validate.min.js"},"Patterns":null}},"Asset":null,"Patterns":null},"LICENSE.md":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/LICENSE.md"},"Patterns":null}},"Asset":null,"Patterns":null},"jquery":{"Children":{"dist":{"Children":{"jquery.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery/dist/jquery.js"},"Patterns":null},"jquery.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery/dist/jquery.min.js"},"Patterns":null},"jquery.min.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery/dist/jquery.min.map"},"Patterns":null}},"Asset":null,"Patterns":null},"LICENSE.txt":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery/LICENSE.txt"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":null},"KernelRecordsMVC.Web.styles.css":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"KernelRecordsMVC.Web.styles.css"},"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
     1{"ContentRoots":["C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\KernelRecordsMVC.Web\\wwwroot\\","C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\KernelRecordsMVC.Web\\obj\\Debug\\net8.0\\scopedcss\\bundle\\"],"Root":{"Children":{"css":{"Children":{"site.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"css/site.css"},"Patterns":null}},"Asset":null,"Patterns":null},"favicon.ico":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"favicon.ico"},"Patterns":null},"images":{"Children":{"logo.png":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"images/logo.png"},"Patterns":null}},"Asset":null,"Patterns":null},"js":{"Children":{"site.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"js/site.js"},"Patterns":null}},"Asset":null,"Patterns":null},"lib":{"Children":{"bootstrap":{"Children":{"dist":{"Children":{"css":{"Children":{"bootstrap-grid.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.css"},"Patterns":null},"bootstrap-grid.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.css.map"},"Patterns":null},"bootstrap-grid.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.min.css"},"Patterns":null},"bootstrap-grid.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.min.css.map"},"Patterns":null},"bootstrap-grid.rtl.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.css"},"Patterns":null},"bootstrap-grid.rtl.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map"},"Patterns":null},"bootstrap-grid.rtl.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css"},"Patterns":null},"bootstrap-grid.rtl.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map"},"Patterns":null},"bootstrap-reboot.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.css"},"Patterns":null},"bootstrap-reboot.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.css.map"},"Patterns":null},"bootstrap-reboot.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.min.css"},"Patterns":null},"bootstrap-reboot.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.min.css.map"},"Patterns":null},"bootstrap-reboot.rtl.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.css"},"Patterns":null},"bootstrap-reboot.rtl.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map"},"Patterns":null},"bootstrap-reboot.rtl.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css"},"Patterns":null},"bootstrap-reboot.rtl.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map"},"Patterns":null},"bootstrap-utilities.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.css"},"Patterns":null},"bootstrap-utilities.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.css.map"},"Patterns":null},"bootstrap-utilities.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.min.css"},"Patterns":null},"bootstrap-utilities.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.min.css.map"},"Patterns":null},"bootstrap-utilities.rtl.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.css"},"Patterns":null},"bootstrap-utilities.rtl.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map"},"Patterns":null},"bootstrap-utilities.rtl.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css"},"Patterns":null},"bootstrap-utilities.rtl.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map"},"Patterns":null},"bootstrap.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.css"},"Patterns":null},"bootstrap.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.css.map"},"Patterns":null},"bootstrap.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.min.css"},"Patterns":null},"bootstrap.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.min.css.map"},"Patterns":null},"bootstrap.rtl.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.rtl.css"},"Patterns":null},"bootstrap.rtl.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.rtl.css.map"},"Patterns":null},"bootstrap.rtl.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.rtl.min.css"},"Patterns":null},"bootstrap.rtl.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.rtl.min.css.map"},"Patterns":null}},"Asset":null,"Patterns":null},"js":{"Children":{"bootstrap.bundle.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.bundle.js"},"Patterns":null},"bootstrap.bundle.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.bundle.js.map"},"Patterns":null},"bootstrap.bundle.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.bundle.min.js"},"Patterns":null},"bootstrap.bundle.min.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.bundle.min.js.map"},"Patterns":null},"bootstrap.esm.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.esm.js"},"Patterns":null},"bootstrap.esm.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.esm.js.map"},"Patterns":null},"bootstrap.esm.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.esm.min.js"},"Patterns":null},"bootstrap.esm.min.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.esm.min.js.map"},"Patterns":null},"bootstrap.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.js"},"Patterns":null},"bootstrap.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.js.map"},"Patterns":null},"bootstrap.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.min.js"},"Patterns":null},"bootstrap.min.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.min.js.map"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":null},"LICENSE":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/LICENSE"},"Patterns":null}},"Asset":null,"Patterns":null},"jquery-validation-unobtrusive":{"Children":{"jquery.validate.unobtrusive.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"},"Patterns":null},"jquery.validate.unobtrusive.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"},"Patterns":null},"LICENSE.txt":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation-unobtrusive/LICENSE.txt"},"Patterns":null}},"Asset":null,"Patterns":null},"jquery-validation":{"Children":{"dist":{"Children":{"additional-methods.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/dist/additional-methods.js"},"Patterns":null},"additional-methods.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/dist/additional-methods.min.js"},"Patterns":null},"jquery.validate.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/dist/jquery.validate.js"},"Patterns":null},"jquery.validate.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/dist/jquery.validate.min.js"},"Patterns":null}},"Asset":null,"Patterns":null},"LICENSE.md":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/LICENSE.md"},"Patterns":null}},"Asset":null,"Patterns":null},"jquery":{"Children":{"dist":{"Children":{"jquery.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery/dist/jquery.js"},"Patterns":null},"jquery.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery/dist/jquery.min.js"},"Patterns":null},"jquery.min.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery/dist/jquery.min.map"},"Patterns":null}},"Asset":null,"Patterns":null},"LICENSE.txt":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery/LICENSE.txt"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":null},"KernelRecordsMVC.Web.styles.css":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"KernelRecordsMVC.Web.styles.css"},"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
  • KernelRecordsMVC.Web/obj/Debug/net8.0/KernelRecordsMVC.Web.AssemblyInfo.cs

    rd2eccb3 rd89d25b  
    1515[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
    1616[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
    17 [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+08aefc6f3b51f4bfcb7471a2fd319c064171b1c5")]
     17[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d2eccb3e3d4db7d262fc57179b8ce6f7fb060d63")]
    1818[assembly: System.Reflection.AssemblyProductAttribute("KernelRecordsMVC.Web")]
    1919[assembly: System.Reflection.AssemblyTitleAttribute("KernelRecordsMVC.Web")]
  • KernelRecordsMVC.Web/obj/Debug/net8.0/KernelRecordsMVC.Web.AssemblyInfoInputs.cache

    rd2eccb3 rd89d25b  
    1 c8c33cb9ccc0e5c5e6227ad0d596fbb462f0c80224c10ca755e42b9afff049e9
     1c7c64d4b5585be3def76ca8244acd21f3a41a4886ee5b2db049d2b6c7160a3f4
  • KernelRecordsMVC.Web/obj/Debug/net8.0/KernelRecordsMVC.Web.GeneratedMSBuildEditorConfig.editorconfig

    rd2eccb3 rd89d25b  
    7373build_metadata.AdditionalFiles.CssScope =
    7474
     75[C:/Users/Marko/RiderProjects/KernelRecordsMVC/KernelRecordsMVC.Web/Views/Admin/Artists.cshtml]
     76build_metadata.AdditionalFiles.TargetPath = Vmlld3NcQWRtaW5cQXJ0aXN0cy5jc2h0bWw=
     77build_metadata.AdditionalFiles.CssScope =
     78
     79[C:/Users/Marko/RiderProjects/KernelRecordsMVC/KernelRecordsMVC.Web/Views/Admin/CreateArtist.cshtml]
     80build_metadata.AdditionalFiles.TargetPath = Vmlld3NcQWRtaW5cQ3JlYXRlQXJ0aXN0LmNzaHRtbA==
     81build_metadata.AdditionalFiles.CssScope =
     82
    7583[C:/Users/Marko/RiderProjects/KernelRecordsMVC/KernelRecordsMVC.Web/Views/Admin/CreateProduct.cshtml]
    7684build_metadata.AdditionalFiles.TargetPath = Vmlld3NcQWRtaW5cQ3JlYXRlUHJvZHVjdC5jc2h0bWw=
    … …  
    8189build_metadata.AdditionalFiles.CssScope =
    8290
     91[C:/Users/Marko/RiderProjects/KernelRecordsMVC/KernelRecordsMVC.Web/Views/Admin/EditArtist.cshtml]
     92build_metadata.AdditionalFiles.TargetPath = Vmlld3NcQWRtaW5cRWRpdEFydGlzdC5jc2h0bWw=
     93build_metadata.AdditionalFiles.CssScope =
     94
    8395[C:/Users/Marko/RiderProjects/KernelRecordsMVC/KernelRecordsMVC.Web/Views/Admin/EditProduct.cshtml]
    8496build_metadata.AdditionalFiles.TargetPath = Vmlld3NcQWRtaW5cRWRpdFByb2R1Y3QuY3NodG1s
     97build_metadata.AdditionalFiles.CssScope =
     98
     99[C:/Users/Marko/RiderProjects/KernelRecordsMVC/KernelRecordsMVC.Web/Views/Admin/EditRelease.cshtml]
     100build_metadata.AdditionalFiles.TargetPath = Vmlld3NcQWRtaW5cRWRpdFJlbGVhc2UuY3NodG1s
    85101build_metadata.AdditionalFiles.CssScope =
    86102
    … …  
    91107[C:/Users/Marko/RiderProjects/KernelRecordsMVC/KernelRecordsMVC.Web/Views/Admin/Products.cshtml]
    92108build_metadata.AdditionalFiles.TargetPath = Vmlld3NcQWRtaW5cUHJvZHVjdHMuY3NodG1s
     109build_metadata.AdditionalFiles.CssScope =
     110
     111[C:/Users/Marko/RiderProjects/KernelRecordsMVC/KernelRecordsMVC.Web/Views/Admin/Releases.cshtml]
     112build_metadata.AdditionalFiles.TargetPath = Vmlld3NcQWRtaW5cUmVsZWFzZXMuY3NodG1s
     113build_metadata.AdditionalFiles.CssScope =
     114
     115[C:/Users/Marko/RiderProjects/KernelRecordsMVC/KernelRecordsMVC.Web/Views/Artist/Details.cshtml]
     116build_metadata.AdditionalFiles.TargetPath = Vmlld3NcQXJ0aXN0XERldGFpbHMuY3NodG1s
     117build_metadata.AdditionalFiles.CssScope =
     118
     119[C:/Users/Marko/RiderProjects/KernelRecordsMVC/KernelRecordsMVC.Web/Views/Artist/Index.cshtml]
     120build_metadata.AdditionalFiles.TargetPath = Vmlld3NcQXJ0aXN0XEluZGV4LmNzaHRtbA==
    93121build_metadata.AdditionalFiles.CssScope =
    94122
  • KernelRecordsMVC.Web/obj/Debug/net8.0/KernelRecordsMVC.Web.csproj.CoreCompileInputs.cache

    rd2eccb3 rd89d25b  
    1 21c22170dbd5df356be1a77b3f77b619add1a8fb50970ec121bfff2f0bc30d5a
     10d2d313270b8273aefc58118d7951c632515785f05722e18ae44736d5db6ee4c
  • KernelRecordsMVC.Web/obj/Debug/net8.0/KernelRecordsMVC.Web.sourcelink.json

    rd2eccb3 rd89d25b  
    1 {"documents":{"C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\*":"https://raw.githubusercontent.com/mmilevski/kernelrecords/08aefc6f3b51f4bfcb7471a2fd319c064171b1c5/*"}}
     1{"documents":{"C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\*":"https://raw.githubusercontent.com/mmilevski/kernelrecords/d2eccb3e3d4db7d262fc57179b8ce6f7fb060d63/*"}}
  • KernelRecordsMVC.Web/obj/Debug/net8.0/staticwebassets.build.json

    rd2eccb3 rd89d25b  
    11{
    22  "Version": 1,
    3   "Hash": "Z4AJGKSmCBMu/t74qsSYiHSw3hqm7Xo8YOImYZDzg10=",
     3  "Hash": "7gsW+gT8+cbT2+Ae6+SqVsEGmq5ACNa9l9lpi54y2vU=",
    44  "Source": "KernelRecordsMVC.Web",
    55  "BasePath": "_content/KernelRecordsMVC.Web",
    … …  
    9494    },
    9595    {
     96      "Identity": "C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\KernelRecordsMVC.Web\\wwwroot\\images\\logo.png",
     97      "SourceId": "KernelRecordsMVC.Web",
     98      "SourceType": "Discovered",
     99      "ContentRoot": "C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\KernelRecordsMVC.Web\\wwwroot\\",
     100      "BasePath": "_content/KernelRecordsMVC.Web",
     101      "RelativePath": "images/logo.png",
     102      "AssetKind": "All",
     103      "AssetMode": "All",
     104      "AssetRole": "Primary",
     105      "AssetMergeBehavior": "PreferTarget",
     106      "AssetMergeSource": "",
     107      "RelatedAsset": "",
     108      "AssetTraitName": "",
     109      "AssetTraitValue": "",
     110      "CopyToOutputDirectory": "Never",
     111      "CopyToPublishDirectory": "PreserveNewest",
     112      "OriginalItemSpec": "wwwroot\\images\\logo.png"
     113    },
     114    {
    96115      "Identity": "C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\KernelRecordsMVC.Web\\wwwroot\\js\\site.js",
    97116      "SourceId": "KernelRecordsMVC.Web",
  • KernelRecordsMVC.Web/obj/Debug/net8.0/staticwebassets.development.json

    rd2eccb3 rd89d25b  
    1 {"ContentRoots":["C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\KernelRecordsMVC.Web\\wwwroot\\","C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\KernelRecordsMVC.Web\\obj\\Debug\\net8.0\\scopedcss\\bundle\\"],"Root":{"Children":{"css":{"Children":{"site.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"css/site.css"},"Patterns":null}},"Asset":null,"Patterns":null},"favicon.ico":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"favicon.ico"},"Patterns":null},"js":{"Children":{"site.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"js/site.js"},"Patterns":null}},"Asset":null,"Patterns":null},"lib":{"Children":{"bootstrap":{"Children":{"dist":{"Children":{"css":{"Children":{"bootstrap-grid.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.css"},"Patterns":null},"bootstrap-grid.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.css.map"},"Patterns":null},"bootstrap-grid.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.min.css"},"Patterns":null},"bootstrap-grid.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.min.css.map"},"Patterns":null},"bootstrap-grid.rtl.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.css"},"Patterns":null},"bootstrap-grid.rtl.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map"},"Patterns":null},"bootstrap-grid.rtl.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css"},"Patterns":null},"bootstrap-grid.rtl.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map"},"Patterns":null},"bootstrap-reboot.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.css"},"Patterns":null},"bootstrap-reboot.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.css.map"},"Patterns":null},"bootstrap-reboot.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.min.css"},"Patterns":null},"bootstrap-reboot.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.min.css.map"},"Patterns":null},"bootstrap-reboot.rtl.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.css"},"Patterns":null},"bootstrap-reboot.rtl.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map"},"Patterns":null},"bootstrap-reboot.rtl.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css"},"Patterns":null},"bootstrap-reboot.rtl.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map"},"Patterns":null},"bootstrap-utilities.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.css"},"Patterns":null},"bootstrap-utilities.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.css.map"},"Patterns":null},"bootstrap-utilities.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.min.css"},"Patterns":null},"bootstrap-utilities.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.min.css.map"},"Patterns":null},"bootstrap-utilities.rtl.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.css"},"Patterns":null},"bootstrap-utilities.rtl.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map"},"Patterns":null},"bootstrap-utilities.rtl.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css"},"Patterns":null},"bootstrap-utilities.rtl.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map"},"Patterns":null},"bootstrap.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.css"},"Patterns":null},"bootstrap.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.css.map"},"Patterns":null},"bootstrap.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.min.css"},"Patterns":null},"bootstrap.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.min.css.map"},"Patterns":null},"bootstrap.rtl.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.rtl.css"},"Patterns":null},"bootstrap.rtl.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.rtl.css.map"},"Patterns":null},"bootstrap.rtl.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.rtl.min.css"},"Patterns":null},"bootstrap.rtl.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.rtl.min.css.map"},"Patterns":null}},"Asset":null,"Patterns":null},"js":{"Children":{"bootstrap.bundle.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.bundle.js"},"Patterns":null},"bootstrap.bundle.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.bundle.js.map"},"Patterns":null},"bootstrap.bundle.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.bundle.min.js"},"Patterns":null},"bootstrap.bundle.min.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.bundle.min.js.map"},"Patterns":null},"bootstrap.esm.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.esm.js"},"Patterns":null},"bootstrap.esm.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.esm.js.map"},"Patterns":null},"bootstrap.esm.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.esm.min.js"},"Patterns":null},"bootstrap.esm.min.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.esm.min.js.map"},"Patterns":null},"bootstrap.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.js"},"Patterns":null},"bootstrap.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.js.map"},"Patterns":null},"bootstrap.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.min.js"},"Patterns":null},"bootstrap.min.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.min.js.map"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":null},"LICENSE":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/LICENSE"},"Patterns":null}},"Asset":null,"Patterns":null},"jquery-validation-unobtrusive":{"Children":{"jquery.validate.unobtrusive.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"},"Patterns":null},"jquery.validate.unobtrusive.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"},"Patterns":null},"LICENSE.txt":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation-unobtrusive/LICENSE.txt"},"Patterns":null}},"Asset":null,"Patterns":null},"jquery-validation":{"Children":{"dist":{"Children":{"additional-methods.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/dist/additional-methods.js"},"Patterns":null},"additional-methods.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/dist/additional-methods.min.js"},"Patterns":null},"jquery.validate.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/dist/jquery.validate.js"},"Patterns":null},"jquery.validate.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/dist/jquery.validate.min.js"},"Patterns":null}},"Asset":null,"Patterns":null},"LICENSE.md":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/LICENSE.md"},"Patterns":null}},"Asset":null,"Patterns":null},"jquery":{"Children":{"dist":{"Children":{"jquery.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery/dist/jquery.js"},"Patterns":null},"jquery.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery/dist/jquery.min.js"},"Patterns":null},"jquery.min.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery/dist/jquery.min.map"},"Patterns":null}},"Asset":null,"Patterns":null},"LICENSE.txt":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery/LICENSE.txt"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":null},"KernelRecordsMVC.Web.styles.css":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"KernelRecordsMVC.Web.styles.css"},"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
     1{"ContentRoots":["C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\KernelRecordsMVC.Web\\wwwroot\\","C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\KernelRecordsMVC.Web\\obj\\Debug\\net8.0\\scopedcss\\bundle\\"],"Root":{"Children":{"css":{"Children":{"site.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"css/site.css"},"Patterns":null}},"Asset":null,"Patterns":null},"favicon.ico":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"favicon.ico"},"Patterns":null},"images":{"Children":{"logo.png":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"images/logo.png"},"Patterns":null}},"Asset":null,"Patterns":null},"js":{"Children":{"site.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"js/site.js"},"Patterns":null}},"Asset":null,"Patterns":null},"lib":{"Children":{"bootstrap":{"Children":{"dist":{"Children":{"css":{"Children":{"bootstrap-grid.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.css"},"Patterns":null},"bootstrap-grid.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.css.map"},"Patterns":null},"bootstrap-grid.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.min.css"},"Patterns":null},"bootstrap-grid.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.min.css.map"},"Patterns":null},"bootstrap-grid.rtl.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.css"},"Patterns":null},"bootstrap-grid.rtl.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map"},"Patterns":null},"bootstrap-grid.rtl.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css"},"Patterns":null},"bootstrap-grid.rtl.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map"},"Patterns":null},"bootstrap-reboot.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.css"},"Patterns":null},"bootstrap-reboot.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.css.map"},"Patterns":null},"bootstrap-reboot.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.min.css"},"Patterns":null},"bootstrap-reboot.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.min.css.map"},"Patterns":null},"bootstrap-reboot.rtl.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.css"},"Patterns":null},"bootstrap-reboot.rtl.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map"},"Patterns":null},"bootstrap-reboot.rtl.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css"},"Patterns":null},"bootstrap-reboot.rtl.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map"},"Patterns":null},"bootstrap-utilities.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.css"},"Patterns":null},"bootstrap-utilities.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.css.map"},"Patterns":null},"bootstrap-utilities.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.min.css"},"Patterns":null},"bootstrap-utilities.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.min.css.map"},"Patterns":null},"bootstrap-utilities.rtl.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.css"},"Patterns":null},"bootstrap-utilities.rtl.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map"},"Patterns":null},"bootstrap-utilities.rtl.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css"},"Patterns":null},"bootstrap-utilities.rtl.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map"},"Patterns":null},"bootstrap.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.css"},"Patterns":null},"bootstrap.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.css.map"},"Patterns":null},"bootstrap.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.min.css"},"Patterns":null},"bootstrap.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.min.css.map"},"Patterns":null},"bootstrap.rtl.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.rtl.css"},"Patterns":null},"bootstrap.rtl.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.rtl.css.map"},"Patterns":null},"bootstrap.rtl.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.rtl.min.css"},"Patterns":null},"bootstrap.rtl.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/css/bootstrap.rtl.min.css.map"},"Patterns":null}},"Asset":null,"Patterns":null},"js":{"Children":{"bootstrap.bundle.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.bundle.js"},"Patterns":null},"bootstrap.bundle.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.bundle.js.map"},"Patterns":null},"bootstrap.bundle.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.bundle.min.js"},"Patterns":null},"bootstrap.bundle.min.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.bundle.min.js.map"},"Patterns":null},"bootstrap.esm.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.esm.js"},"Patterns":null},"bootstrap.esm.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.esm.js.map"},"Patterns":null},"bootstrap.esm.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.esm.min.js"},"Patterns":null},"bootstrap.esm.min.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.esm.min.js.map"},"Patterns":null},"bootstrap.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.js"},"Patterns":null},"bootstrap.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.js.map"},"Patterns":null},"bootstrap.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.min.js"},"Patterns":null},"bootstrap.min.js.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/dist/js/bootstrap.min.js.map"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":null},"LICENSE":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/bootstrap/LICENSE"},"Patterns":null}},"Asset":null,"Patterns":null},"jquery-validation-unobtrusive":{"Children":{"jquery.validate.unobtrusive.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"},"Patterns":null},"jquery.validate.unobtrusive.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"},"Patterns":null},"LICENSE.txt":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation-unobtrusive/LICENSE.txt"},"Patterns":null}},"Asset":null,"Patterns":null},"jquery-validation":{"Children":{"dist":{"Children":{"additional-methods.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/dist/additional-methods.js"},"Patterns":null},"additional-methods.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/dist/additional-methods.min.js"},"Patterns":null},"jquery.validate.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/dist/jquery.validate.js"},"Patterns":null},"jquery.validate.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/dist/jquery.validate.min.js"},"Patterns":null}},"Asset":null,"Patterns":null},"LICENSE.md":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery-validation/LICENSE.md"},"Patterns":null}},"Asset":null,"Patterns":null},"jquery":{"Children":{"dist":{"Children":{"jquery.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery/dist/jquery.js"},"Patterns":null},"jquery.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery/dist/jquery.min.js"},"Patterns":null},"jquery.min.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery/dist/jquery.min.map"},"Patterns":null}},"Asset":null,"Patterns":null},"LICENSE.txt":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/jquery/LICENSE.txt"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":null},"KernelRecordsMVC.Web.styles.css":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"KernelRecordsMVC.Web.styles.css"},"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
  • KernelRecordsMVC.Web/obj/Debug/net8.0/staticwebassets.pack.json

    rd2eccb3 rd89d25b  
    1212      "Id": "C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\KernelRecordsMVC.Web\\wwwroot\\favicon.ico",
    1313      "PackagePath": "staticwebassets\\favicon.ico"
     14    },
     15    {
     16      "Id": "C:\\Users\\Marko\\RiderProjects\\KernelRecordsMVC\\KernelRecordsMVC.Web\\wwwroot\\images\\logo.png",
     17      "PackagePath": "staticwebassets\\images\\logo.png"
    1418    },
    1519    {
  • KernelRecordsMVC.Web/obj/Debug/net8.0/staticwebassets/msbuild.KernelRecordsMVC.Web.Microsoft.AspNetCore.StaticWebAssets.props

    rd2eccb3 rd89d25b  
    3333      <OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\favicon.ico))</OriginalItemSpec>
    3434    </StaticWebAsset>
     35    <StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\images\logo.png))">
     36      <SourceType>Package</SourceType>
     37      <SourceId>KernelRecordsMVC.Web</SourceId>
     38      <ContentRoot>$(MSBuildThisFileDirectory)..\staticwebassets\</ContentRoot>
     39      <BasePath>_content/KernelRecordsMVC.Web</BasePath>
     40      <RelativePath>images/logo.png</RelativePath>
     41      <AssetKind>All</AssetKind>
     42      <AssetMode>All</AssetMode>
     43      <AssetRole>Primary</AssetRole>
     44      <RelatedAsset></RelatedAsset>
     45      <AssetTraitName></AssetTraitName>
     46      <AssetTraitValue></AssetTraitValue>
     47      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
     48      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
     49      <OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\images\logo.png))</OriginalItemSpec>
     50    </StaticWebAsset>
    3551    <StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\js\site.js))">
    3652      <SourceType>Package</SourceType>
  • KernelRecordsMVC.Web/wwwroot/css/site.css

    rd2eccb3 rd89d25b  
    41394139
    41404140}
     4141/* =========================================================
     4142   KERNEL RECORDS LOGO
     4143   ========================================================= */
     4144
     4145.logo-brand {
     4146  display: flex;
     4147  align-items: center;
     4148
     4149  padding: 0;
     4150
     4151  text-decoration: none;
     4152}
     4153
     4154.site-logo {
     4155  display: block;
     4156
     4157  width: auto;
     4158  height: 72px;
     4159
     4160  object-fit: contain;
     4161}
     4162
     4163@media (max-width: 700px) {
     4164
     4165  .site-logo {
     4166    height: 55px;
     4167  }
     4168
     4169}
     4170.admin-page-logo {
     4171  display: block;
     4172
     4173  width: auto;
     4174  height: 80px;
     4175
     4176  margin-bottom: 12px;
     4177
     4178  object-fit: contain;
     4179}
     4180.hero-logo {
     4181  display: flex;
     4182  justify-content: center;
     4183  align-items: center;
     4184}
     4185
     4186.hero-logo-image {
     4187  width: min(520px, 90%);
     4188  height: auto;
     4189  display: block;
     4190  object-fit: contain;
     4191  transform: translate(55px, 55px);
     4192}
     4193
     4194/* =========================================================
     4195   ARTISTS
     4196   ========================================================= */
     4197
     4198.artist-page,
     4199.artist-details-page {
     4200  max-width: 1350px;
     4201  margin: 0 auto;
     4202  padding: 55px 30px 80px;
     4203}
     4204
     4205.artist-page-header {
     4206  margin-bottom: 35px;
     4207}
     4208
     4209.artist-eyebrow {
     4210  display: block;
     4211  margin-bottom: 8px;
     4212  color: #888;
     4213  font-size: 10px;
     4214  font-weight: 900;
     4215  letter-spacing: 2px;
     4216}
     4217
     4218.artist-page-header h1,
     4219.artist-details-info h1 {
     4220  margin: 0;
     4221  font-size: clamp(38px, 6vw, 76px);
     4222  line-height: 1;
     4223  font-weight: 900;
     4224  letter-spacing: -2px;
     4225}
     4226
     4227.artist-page-header p {
     4228  max-width: 600px;
     4229  margin-top: 15px;
     4230  color: #777;
     4231  line-height: 1.7;
     4232}
     4233
     4234/* Artist list: fixed 200 x 200 images */
     4235
     4236.artist-grid {
     4237  display: grid;
     4238  grid-template-columns: repeat(auto-fill, 200px);
     4239  gap: 24px;
     4240  align-items: start;
     4241  justify-content: start;
     4242}
     4243
     4244.artist-card {
     4245  width: 200px;
     4246  overflow: hidden;
     4247  display: block;
     4248  background: white;
     4249  border: 1px solid #ddd;
     4250  border-radius: 10px;
     4251  color: inherit;
     4252  text-decoration: none;
     4253  transition:
     4254          transform 0.2s ease,
     4255          border-color 0.2s ease,
     4256          box-shadow 0.2s ease;
     4257}
     4258
     4259.artist-card:hover {
     4260  transform: translateY(-4px);
     4261  border-color: #999;
     4262  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.08);
     4263}
     4264
     4265.artist-card-image {
     4266  width: 200px;
     4267  height: 200px;
     4268  overflow: hidden;
     4269  background: #eee;
     4270}
     4271
     4272.artist-card-image img {
     4273  width: 200px;
     4274  height: 200px;
     4275  display: block;
     4276  object-fit: cover;
     4277  object-position: center;
     4278}
     4279
     4280.artist-photo-placeholder {
     4281  width: 100%;
     4282  height: 100%;
     4283  display: flex;
     4284  align-items: center;
     4285  justify-content: center;
     4286  background: #1a1a1a;
     4287  color: white;
     4288  font-size: 40px;
     4289}
     4290
     4291.artist-card-image .artist-photo-placeholder {
     4292  width: 200px;
     4293  height: 200px;
     4294}
     4295
     4296.artist-photo-placeholder.large {
     4297  width: 200px;
     4298  height: 200px;
     4299  min-height: 0;
     4300  font-size: 60px;
     4301}
     4302
     4303.artist-card-body {
     4304  width: 200px;
     4305  padding: 16px;
     4306}
     4307
     4308.artist-card-body h2 {
     4309  margin: 0 0 10px;
     4310  overflow-wrap: anywhere;
     4311  font-size: 17px;
     4312  line-height: 1.25;
     4313}
     4314
     4315.artist-card-body p {
     4316  display: -webkit-box;
     4317  overflow: hidden;
     4318  margin: 0 0 15px;
     4319  color: #777;
     4320  font-size: 12px;
     4321  line-height: 1.6;
     4322  -webkit-line-clamp: 3;
     4323  -webkit-box-orient: vertical;
     4324}
     4325
     4326.artist-card-link {
     4327  font-size: 10px;
     4328  font-weight: 900;
     4329  letter-spacing: 1px;
     4330  text-transform: uppercase;
     4331}
     4332
     4333/* Artist details: fixed 200 x 200 profile image */
     4334
     4335.artist-back-link {
     4336  display: inline-block;
     4337  margin-bottom: 25px;
     4338  color: #555;
     4339  font-size: 11px;
     4340  font-weight: 800;
     4341  text-decoration: none;
     4342}
     4343
     4344.artist-back-link:hover {
     4345  color: #111;
     4346}
     4347
     4348.artist-details-hero {
     4349  display: grid;
     4350  grid-template-columns: 200px minmax(0, 1fr);
     4351  gap: 45px;
     4352  align-items: center;
     4353}
     4354
     4355.artist-details-image {
     4356  width: 200px;
     4357  height: 200px;
     4358  overflow: hidden;
     4359  border-radius: 10px;
     4360  background: #eee;
     4361}
     4362
     4363.artist-details-image img {
     4364  width: 200px;
     4365  height: 200px;
     4366  display: block;
     4367  object-fit: cover;
     4368  object-position: center;
     4369}
     4370
     4371.artist-details-image .artist-photo-placeholder {
     4372  width: 200px;
     4373  height: 200px;
     4374}
     4375
     4376.artist-details-info {
     4377  min-width: 0;
     4378}
     4379
     4380.artist-details-info p {
     4381  max-width: 650px;
     4382  margin-top: 25px;
     4383  color: #666;
     4384  line-height: 1.8;
     4385}
     4386
     4387/* Artist releases */
     4388
     4389.artist-release-section {
     4390  margin-top: 70px;
     4391}
     4392
     4393.artist-section-header {
     4394  margin-bottom: 25px;
     4395}
     4396
     4397.artist-section-header h2 {
     4398  margin: 0;
     4399  font-size: 30px;
     4400}
     4401
     4402.artist-release-grid {
     4403  display: grid;
     4404  grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
     4405  gap: 20px;
     4406}
     4407
     4408.artist-release-card {
     4409  display: block;
     4410  color: inherit;
     4411  text-decoration: none;
     4412}
     4413
     4414.artist-release-cover {
     4415  overflow: hidden;
     4416  aspect-ratio: 1 / 1;
     4417  border-radius: 8px;
     4418  background: #eee;
     4419}
     4420
     4421.artist-release-cover img {
     4422  width: 100%;
     4423  height: 100%;
     4424  display: block;
     4425  object-fit: cover;
     4426}
     4427
     4428.artist-release-cover .artist-photo-placeholder {
     4429  width: 100%;
     4430  height: 100%;
     4431}
     4432
     4433.artist-release-body {
     4434  padding-top: 12px;
     4435}
     4436
     4437.artist-release-body h3 {
     4438  margin: 0;
     4439  font-size: 15px;
     4440}
     4441
     4442.artist-release-body p,
     4443.artist-release-body span {
     4444  color: #888;
     4445  font-size: 11px;
     4446}
     4447
     4448.artist-empty {
     4449  padding: 30px;
     4450  border: 1px dashed #ccc;
     4451  border-radius: 8px;
     4452  color: #777;
     4453}
     4454
     4455/* Artist responsive */
     4456
     4457@media (max-width: 800px) {
     4458  .artist-details-hero {
     4459    grid-template-columns: 200px minmax(0, 1fr);
     4460    gap: 28px;
     4461  }
     4462}
     4463
     4464@media (max-width: 600px) {
     4465  .artist-page,
     4466  .artist-details-page {
     4467    padding: 35px 18px 60px;
     4468  }
     4469
     4470  .artist-grid {
     4471    justify-content: center;
     4472  }
     4473
     4474  .artist-details-hero {
     4475    grid-template-columns: 1fr;
     4476    justify-items: start;
     4477  }
     4478
     4479  .artist-details-image {
     4480    width: 200px;
     4481    height: 200px;
     4482  }
     4483}
     4484
     4485@media (max-width: 430px) {
     4486  .artist-grid {
     4487    grid-template-columns: 200px;
     4488  }
     4489}
     4490/* =========================================================
     4491   AUTH - LOGIN / REGISTER
     4492   ========================================================= */
     4493
     4494.auth-page {
     4495  width: 100%;
     4496  min-height: calc(100vh - 114px);
     4497
     4498  display: flex;
     4499  align-items: center;
     4500  justify-content: center;
     4501
     4502  padding: 55px 30px 80px;
     4503
     4504  background: #f5f5f3;
     4505}
     4506
     4507.auth-shell {
     4508  width: min(100%, 1050px);
     4509  min-height: 600px;
     4510
     4511  display: grid;
     4512  grid-template-columns:
     4513        minmax(0, 0.9fr)
     4514        minmax(0, 1.1fr);
     4515
     4516  overflow: hidden;
     4517
     4518  background: white;
     4519
     4520  border: 1px solid #ddd;
     4521  border-radius: 14px;
     4522
     4523  box-shadow:
     4524          0 20px 55px rgba(0, 0, 0, 0.08);
     4525}
     4526
     4527.auth-shell-register {
     4528  width: min(100%, 1150px);
     4529}
     4530
     4531
     4532/* =========================================================
     4533   AUTH BRAND SIDE
     4534   ========================================================= */
     4535
     4536.auth-brand-panel {
     4537  position: relative;
     4538
     4539  min-height: 600px;
     4540
     4541  display: flex;
     4542  flex-direction: column;
     4543  justify-content: space-between;
     4544
     4545  padding: 45px;
     4546
     4547  overflow: hidden;
     4548
     4549  background: #111;
     4550  color: white;
     4551}
     4552
     4553.auth-brand-panel::after {
     4554  content: "";
     4555
     4556  position: absolute;
     4557
     4558  width: 430px;
     4559  height: 430px;
     4560
     4561  right: -180px;
     4562  bottom: -190px;
     4563
     4564  border: 55px solid #1c1c1c;
     4565  border-radius: 50%;
     4566}
     4567
     4568.auth-logo-link {
     4569  position: relative;
     4570  z-index: 2;
     4571
     4572  width: fit-content;
     4573
     4574  display: block;
     4575}
     4576
     4577.auth-logo {
     4578  width: auto;
     4579  height: 85px;
     4580
     4581  display: block;
     4582
     4583  object-fit: contain;
     4584}
     4585
     4586.auth-brand-copy {
     4587  position: relative;
     4588  z-index: 2;
     4589
     4590  max-width: 390px;
     4591}
     4592
     4593.auth-eyebrow {
     4594  display: block;
     4595
     4596  margin-bottom: 10px;
     4597
     4598  color: #999;
     4599
     4600  font-size: 9px;
     4601  font-weight: 900;
     4602
     4603  letter-spacing: 2.2px;
     4604  text-transform: uppercase;
     4605}
     4606
     4607.auth-brand-copy h1 {
     4608  max-width: 420px;
     4609
     4610  font-size: clamp(42px, 5vw, 65px);
     4611  line-height: .95;
     4612
     4613  font-weight: 900;
     4614
     4615  letter-spacing: -3px;
     4616}
     4617
     4618.auth-brand-copy p {
     4619  max-width: 360px;
     4620
     4621  margin-top: 22px;
     4622
     4623  color: #aaa;
     4624
     4625  font-size: 14px;
     4626  line-height: 1.8;
     4627}
     4628
     4629
     4630/* =========================================================
     4631   AUTH FORM SIDE
     4632   ========================================================= */
     4633
     4634.auth-form-panel {
     4635  display: flex;
     4636  flex-direction: column;
     4637  justify-content: center;
     4638
     4639  padding: 55px 65px;
     4640}
     4641
     4642.auth-form-header {
     4643  margin-bottom: 30px;
     4644}
     4645
     4646.auth-form-header h2 {
     4647  margin: 0;
     4648
     4649  color: #171717;
     4650
     4651  font-size: 38px;
     4652  font-weight: 900;
     4653
     4654  letter-spacing: -1.5px;
     4655}
     4656
     4657.auth-form-header p {
     4658  margin-top: 8px;
     4659
     4660  color: #777;
     4661
     4662  font-size: 13px;
     4663  line-height: 1.6;
     4664}
     4665
     4666
     4667/* =========================================================
     4668   AUTH FORM
     4669   ========================================================= */
     4670
     4671.auth-form {
     4672  width: 100%;
     4673}
     4674
     4675.auth-field {
     4676  min-width: 0;
     4677
     4678  margin-bottom: 20px;
     4679}
     4680
     4681.auth-field label {
     4682  display: flex;
     4683  align-items: center;
     4684
     4685  gap: 8px;
     4686
     4687  margin-bottom: 8px;
     4688
     4689  color: #444;
     4690
     4691  font-size: 10px;
     4692  font-weight: 900;
     4693
     4694  letter-spacing: .9px;
     4695  text-transform: uppercase;
     4696}
     4697
     4698.auth-optional {
     4699  color: #999;
     4700
     4701  font-size: 8px;
     4702  font-weight: 700;
     4703
     4704  letter-spacing: .5px;
     4705}
     4706
     4707.auth-field input {
     4708  width: 100%;
     4709  height: 48px;
     4710
     4711  padding: 0 14px;
     4712
     4713  outline: none;
     4714
     4715  border: 1px solid #d3d3d3;
     4716  border-radius: 6px;
     4717
     4718  background: white;
     4719  color: #171717;
     4720
     4721  font-size: 13px;
     4722
     4723  transition:
     4724          border-color .2s ease,
     4725          box-shadow .2s ease,
     4726          background .2s ease;
     4727}
     4728
     4729.auth-field input::placeholder {
     4730  color: #aaa;
     4731}
     4732
     4733.auth-field input:focus {
     4734  border-color: #777;
     4735
     4736  box-shadow:
     4737          0 0 0 3px rgba(0, 0, 0, 0.05);
     4738}
     4739
     4740.auth-form-row {
     4741  display: grid;
     4742  grid-template-columns:
     4743        repeat(2, minmax(0, 1fr));
     4744
     4745  gap: 14px;
     4746}
     4747
     4748
     4749/* =========================================================
     4750   PASSWORD
     4751   ========================================================= */
     4752
     4753.auth-password-field {
     4754  position: relative;
     4755}
     4756
     4757.auth-password-field input {
     4758  padding-right: 65px;
     4759}
     4760
     4761.auth-password-toggle {
     4762  position: absolute;
     4763
     4764  top: 50%;
     4765  right: 8px;
     4766
     4767  transform: translateY(-50%);
     4768
     4769  height: 32px;
     4770
     4771  padding: 0 9px;
     4772
     4773  border: none;
     4774  border-radius: 4px;
     4775
     4776  background: #f0f0f0;
     4777  color: #555;
     4778
     4779  font-size: 9px;
     4780  font-weight: 900;
     4781
     4782  text-transform: uppercase;
     4783  letter-spacing: .5px;
     4784}
     4785
     4786.auth-password-toggle:hover {
     4787  background: #ddd;
     4788  color: #171717;
     4789}
     4790
     4791
     4792/* =========================================================
     4793   VALIDATION
     4794   ========================================================= */
     4795
     4796.auth-field-error {
     4797  display: block;
     4798
     4799  margin-top: 6px;
     4800
     4801  color: #a33;
     4802
     4803  font-size: 10px;
     4804  line-height: 1.4;
     4805}
     4806
     4807.auth-validation-summary {
     4808  margin-bottom: 20px;
     4809}
     4810
     4811.auth-validation-summary:empty {
     4812  display: none;
     4813}
     4814
     4815.auth-validation-summary ul {
     4816  margin: 0;
     4817
     4818  padding: 13px 15px 13px 32px;
     4819
     4820  background: #fff3f3;
     4821  color: #963c3c;
     4822
     4823  border: 1px solid #eccaca;
     4824  border-radius: 6px;
     4825
     4826  font-size: 11px;
     4827  line-height: 1.6;
     4828}
     4829
     4830
     4831/* =========================================================
     4832   SUBMIT
     4833   ========================================================= */
     4834
     4835.auth-submit {
     4836  width: 100%;
     4837  min-height: 50px;
     4838
     4839  margin-top: 5px;
     4840
     4841  display: flex;
     4842  align-items: center;
     4843  justify-content: center;
     4844
     4845  border: 1px solid #171717;
     4846  border-radius: 6px;
     4847
     4848  background: #171717;
     4849  color: white;
     4850
     4851  font-size: 11px;
     4852  font-weight: 900;
     4853
     4854  letter-spacing: 1px;
     4855  text-transform: uppercase;
     4856
     4857  transition:
     4858          background .2s ease,
     4859          transform .2s ease;
     4860}
     4861
     4862.auth-submit:hover {
     4863  background: #333;
     4864
     4865  transform: translateY(-1px);
     4866}
     4867
     4868
     4869/* =========================================================
     4870   ACCOUNT SWITCH
     4871   ========================================================= */
     4872
     4873.auth-switch {
     4874  margin-top: 27px;
     4875  padding-top: 22px;
     4876
     4877  display: flex;
     4878  align-items: center;
     4879  justify-content: center;
     4880
     4881  gap: 7px;
     4882
     4883  border-top: 1px solid #eee;
     4884
     4885  color: #777;
     4886
     4887  font-size: 11px;
     4888}
     4889
     4890.auth-switch a {
     4891  color: #171717;
     4892
     4893  font-weight: 900;
     4894}
     4895
     4896.auth-switch a:hover {
     4897  text-decoration: underline;
     4898}
     4899
     4900
     4901/* =========================================================
     4902   AUTH RESPONSIVE
     4903   ========================================================= */
     4904
     4905@media (max-width: 900px) {
     4906
     4907  .auth-shell,
     4908  .auth-shell-register {
     4909    grid-template-columns: 1fr;
     4910    max-width: 650px;
     4911  }
     4912
     4913  .auth-brand-panel {
     4914    min-height: 290px;
     4915
     4916    padding: 35px;
     4917  }
     4918
     4919  .auth-logo {
     4920    height: 70px;
     4921  }
     4922
     4923  .auth-brand-copy h1 {
     4924    font-size: 42px;
     4925  }
     4926
     4927  .auth-brand-copy p {
     4928    margin-top: 14px;
     4929  }
     4930
     4931  .auth-form-panel {
     4932    padding: 45px;
     4933  }
     4934
     4935}
     4936
     4937@media (max-width: 600px) {
     4938
     4939  .auth-page {
     4940    padding: 25px 15px 50px;
     4941  }
     4942
     4943  .auth-shell,
     4944  .auth-shell-register {
     4945    border-radius: 10px;
     4946  }
     4947
     4948  .auth-brand-panel {
     4949    min-height: 250px;
     4950
     4951    padding: 27px;
     4952  }
     4953
     4954  .auth-logo {
     4955    height: 60px;
     4956  }
     4957
     4958  .auth-brand-copy h1 {
     4959    font-size: 36px;
     4960
     4961    letter-spacing: -2px;
     4962  }
     4963
     4964  .auth-brand-copy p {
     4965    font-size: 12px;
     4966  }
     4967
     4968  .auth-form-panel {
     4969    padding: 32px 24px;
     4970  }
     4971
     4972  .auth-form-header h2 {
     4973    font-size: 32px;
     4974  }
     4975
     4976  .auth-form-row {
     4977    grid-template-columns: 1fr;
     4978    gap: 0;
     4979  }
     4980
     4981  .auth-switch {
     4982    flex-direction: column;
     4983  }
     4984
     4985}
Note: See TracChangeset for help on using the changeset viewer.