update
parent
36d77a7c38
commit
d14804c8b9
|
|
@ -203,7 +203,7 @@ namespace kehati.Controllers
|
||||||
Image= "sp-elang-bondol.jpg",
|
Image= "sp-elang-bondol.jpg",
|
||||||
LocationSlugs = new List<string>
|
LocationSlugs = new List<string>
|
||||||
{"muara-angke", "mangrove-pik"}
|
{"muara-angke", "mangrove-pik"}
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return View(model);
|
return View(model);
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,200 @@ namespace kehati.Controllers
|
||||||
public IActionResult Detail(string slug)
|
public IActionResult Detail(string slug)
|
||||||
{
|
{
|
||||||
ViewBag.Slug = slug;
|
ViewBag.Slug = slug;
|
||||||
return View();
|
var lokasi = new LokasiModel
|
||||||
|
{
|
||||||
|
Slug = "tebet-eco-park",
|
||||||
|
Name = "Tebet Eco Park",
|
||||||
|
Region = "Jakarta Selatan",
|
||||||
|
Area = "15.3 Ha",
|
||||||
|
FloraCount = 45,
|
||||||
|
FaunaCount = 20,
|
||||||
|
Total = 100,
|
||||||
|
Description = "Taman kota modern yang mengintegrasikan ekologi dan ruang publik. Rumah bagi puluhan jenis tanaman lokal serta berbagai burung dan serangga penyerbuk.",
|
||||||
|
Image = "loc-tebet.jpg"
|
||||||
|
};
|
||||||
|
var model = new HomeViewModel
|
||||||
|
{
|
||||||
|
|
||||||
|
Location = lokasi,
|
||||||
|
|
||||||
|
FeaturedSpesies = new List<SpesiesModel>
|
||||||
|
{
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Slug = "pohon-trembesi",
|
||||||
|
Type = "flora",
|
||||||
|
CommonName = "Pohon Trembesi",
|
||||||
|
ScientificName = "Samanea saman",
|
||||||
|
Description =
|
||||||
|
"Pohon peneduh raksasa dengan tajuk lebar menyerupai payung. Sangat efektif menyerap karbon dioksida sehingga banyak ditanam di ruang publik Jakarta.",
|
||||||
|
Habitat = "Tumbuh baik di dataran rendah tropis, tanah subur, sinar matahari penuh.",
|
||||||
|
ConservationStatus = "Aman",
|
||||||
|
Image = "sp-trembesi.jpg",
|
||||||
|
LocationSlugs = new List<string>
|
||||||
|
{
|
||||||
|
"tebet-eco-park",
|
||||||
|
"hutan-kota-gbk",
|
||||||
|
"taman-menteng"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Slug= "pohon-beringin",
|
||||||
|
Type= "flora",
|
||||||
|
CommonName= "Pohon Beringin",
|
||||||
|
ScientificName= "Ficus benjamina",
|
||||||
|
Description=
|
||||||
|
"Pohon rindang dengan akar udara khas yang menjuntai. Simbol keteduhan dan sering dijumpai di taman kota serta ruang publik Jakarta.",
|
||||||
|
Habitat= "Iklim tropis, tanah lembab, tahan terhadap polusi udara perkotaan.",
|
||||||
|
ConservationStatus= "Aman",
|
||||||
|
Image= "sp-beringin.jpg",
|
||||||
|
LocationSlugs = new List<string>
|
||||||
|
{"hutan-kota-srengseng", "taman-menteng", "hutan-kota-gbk"}
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Slug= "mangrove-rhizophora",
|
||||||
|
Type= "flora",
|
||||||
|
CommonName= "Bakau Merah",
|
||||||
|
ScientificName= "Rhizophora mucronata",
|
||||||
|
Description=
|
||||||
|
"Tumbuhan bakau dengan akar tunjang khas. Berfungsi sebagai benteng alami pesisir Jakarta terhadap abrasi dan intrusi air laut.",
|
||||||
|
Habitat= "Kawasan pesisir berlumpur, muara sungai, air payau.",
|
||||||
|
ConservationStatus= "Dilindungi",
|
||||||
|
Image= "sp-mangrove.jpg",
|
||||||
|
LocationSlugs = new List<string>
|
||||||
|
{"muara-angke", "mangrove-pik"}
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Slug= "bunga-kamboja",
|
||||||
|
Type= "flora",
|
||||||
|
CommonName= "Kamboja Putih",
|
||||||
|
ScientificName= "Plumeria alba",
|
||||||
|
Description=
|
||||||
|
"Pohon hias berbunga harum dengan kelopak putih dan kuning di tengah. Populer di pekarangan dan taman kota.",
|
||||||
|
Habitat= "Daerah tropis kering, tanah berdrainase baik.",
|
||||||
|
ConservationStatus= "Aman",
|
||||||
|
Image= "sp-kamboja.jpg",
|
||||||
|
LocationSlugs = new List<string>
|
||||||
|
{"tebet-eco-park", "taman-menteng"}
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Slug= "anggrek-bulan",
|
||||||
|
Type= "flora",
|
||||||
|
CommonName= "Anggrek Bulan",
|
||||||
|
ScientificName= "Phalaenopsis amabilis",
|
||||||
|
Description=
|
||||||
|
"Bunga nasional Indonesia (Puspa Pesona). Berkelopak lebar putih murni, tumbuh menempel pada batang pohon.",
|
||||||
|
Habitat= "Epifit pada pohon di hutan tropis lembab.",
|
||||||
|
ConservationStatus= "Rentan",
|
||||||
|
Image= "sp-anggrek.jpg",
|
||||||
|
LocationSlugs = new List<string>
|
||||||
|
{"hutan-kota-srengseng", "tebet-eco-park"}
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Slug= "bambu-kuning",
|
||||||
|
Type= "flora",
|
||||||
|
CommonName= "Bambu Kuning",
|
||||||
|
ScientificName= "Bambusa vulgaris",
|
||||||
|
Description=
|
||||||
|
"Rumpun bambu berbatang kuning cerah yang tumbuh cepat. Berperan penting menyerap air tanah dan mencegah erosi.",
|
||||||
|
Habitat= "Tanah lembab di tepi sungai, taman, dan hutan kota.",
|
||||||
|
ConservationStatus= "Aman",
|
||||||
|
Image= "sp-bambu.jpg",
|
||||||
|
LocationSlugs = new List<string>
|
||||||
|
{"tebet-eco-park", "hutan-kota-srengseng"}
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Slug= "burung-kutilang",
|
||||||
|
Type= "fauna",
|
||||||
|
CommonName= "Burung Kutilang",
|
||||||
|
ScientificName= "Pycnonotus aurigaster",
|
||||||
|
Description=
|
||||||
|
"Burung pengicau kecil dengan tunggir kuning cerah. Salah satu burung liar paling umum di taman-taman Jakarta.",
|
||||||
|
Habitat= "Taman kota, pekarangan, hutan sekunder.",
|
||||||
|
ConservationStatus= "Aman",
|
||||||
|
Image= "sp-kutilang.jpg",
|
||||||
|
LocationSlugs = new List<string>
|
||||||
|
{"tebet-eco-park", "taman-menteng", "hutan-kota-gbk"}
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Slug= "burung-madu-sriganti",
|
||||||
|
Type= "fauna",
|
||||||
|
CommonName= "Burung Madu Sriganti",
|
||||||
|
ScientificName= "Cinnyris jugularis",
|
||||||
|
Description=
|
||||||
|
"Burung kecil berwarna cerah, jantan berdada hitam berkilau. Penghisap nektar bunga di taman dan hutan kota.",
|
||||||
|
Habitat= "Taman berbunga, semak berbunga, pinggir hutan.",
|
||||||
|
ConservationStatus= "Dilindungi",
|
||||||
|
Image= "sp-madu-sriganti.jpg",
|
||||||
|
LocationSlugs = new List<string>
|
||||||
|
{"tebet-eco-park", "hutan-kota-srengseng", "mangrove-pik"}
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Slug= "kupu-kupu-raja",
|
||||||
|
Type= "fauna",
|
||||||
|
CommonName= "Kupu-kupu Raja",
|
||||||
|
ScientificName= "Papilio memnon",
|
||||||
|
Description=
|
||||||
|
"Kupu-kupu besar berwarna hitam kebiruan dengan sayap lebar. Penyerbuk penting bagi berbagai tanaman berbunga.",
|
||||||
|
Habitat= "Taman berbunga, hutan sekunder, pinggir sungai.",
|
||||||
|
ConservationStatus= "Aman",
|
||||||
|
Image= "sp-kupu-kupu.jpg",
|
||||||
|
LocationSlugs = new List<string>
|
||||||
|
{"tebet-eco-park", "hutan-kota-srengseng"}
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Slug= "biawak-air",
|
||||||
|
Type= "fauna",
|
||||||
|
CommonName= "Biawak Air",
|
||||||
|
ScientificName= "Varanus salvator",
|
||||||
|
Description=
|
||||||
|
"Reptil besar semi-akuatik dengan lidah bercabang. Predator alami yang membantu mengendalikan populasi tikus di ekosistem kota.",
|
||||||
|
Habitat= "Rawa, sungai, hutan mangrove.",
|
||||||
|
ConservationStatus= "Dilindungi",
|
||||||
|
Image= "sp-biawak.jpg",
|
||||||
|
LocationSlugs = new List<string>
|
||||||
|
{"muara-angke", "mangrove-pik"}
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Slug= "monyet-ekor-panjang",
|
||||||
|
Type= "fauna",
|
||||||
|
CommonName= "Monyet Ekor Panjang",
|
||||||
|
ScientificName= "Macaca fascicularis",
|
||||||
|
Description=
|
||||||
|
"Primata berbulu abu-abu kecoklatan dengan ekor panjang. Hidup berkelompok di kawasan hutan yang tersisa.",
|
||||||
|
Habitat= "Hutan mangrove, hutan sekunder, tepi sungai.",
|
||||||
|
ConservationStatus= "Rentan",
|
||||||
|
Image= "sp-monyet.jpg",
|
||||||
|
LocationSlugs = new List<string>
|
||||||
|
{"muara-angke", "mangrove-pik"}
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Slug= "elang-bondol",
|
||||||
|
Type= "fauna",
|
||||||
|
CommonName= "Elang Bondol",
|
||||||
|
ScientificName= "Haliastur indus",
|
||||||
|
Description=
|
||||||
|
"Elang berkepala putih dengan tubuh coklat kemerahan. Maskot Provinsi DKI Jakarta dan simbol kekayaan hayati pesisir.",
|
||||||
|
Habitat= "Pesisir, mangrove, muara sungai.",
|
||||||
|
ConservationStatus= "Dilindungi",
|
||||||
|
Image= "sp-elang-bondol.jpg",
|
||||||
|
LocationSlugs = new List<string>
|
||||||
|
{"muara-angke", "mangrove-pik"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return View(model);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -10,6 +10,7 @@ public class HomeViewModel
|
||||||
public string lokasi { get; set; } = "";
|
public string lokasi { get; set; } = "";
|
||||||
public string Results { get; set; } = "";
|
public string Results { get; set; } = "";
|
||||||
public StatistikHomeModel Statistik { get; set; } = new();
|
public StatistikHomeModel Statistik { get; set; } = new();
|
||||||
|
public LokasiModel Location { get; set; } = new();
|
||||||
|
|
||||||
public List<LokasiModel> FeaturedLocations { get; set; } = new();
|
public List<LokasiModel> FeaturedLocations { get; set; } = new();
|
||||||
public List<SpesiesModel> FeaturedSpesies { get; set; } = new();
|
public List<SpesiesModel> FeaturedSpesies { get; set; } = new();
|
||||||
|
|
|
||||||
|
|
@ -9,12 +9,14 @@ public class LokasiModel
|
||||||
public string Image { get; set; } = "";
|
public string Image { get; set; } = "";
|
||||||
|
|
||||||
public string Region { get; set; } = "";
|
public string Region { get; set; } = "";
|
||||||
|
public string Description { get; set; } = "";
|
||||||
|
|
||||||
public string Area { get; set; } = "";
|
public string Area { get; set; } = "";
|
||||||
public string Latitude { get; set; } = "";
|
public string Latitude { get; set; } = "";
|
||||||
public string Longitude { get; set; } = "";
|
public string Longitude { get; set; } = "";
|
||||||
|
|
||||||
public int FloraCount { get; set; }
|
public int FloraCount { get; set; }
|
||||||
|
public int Total { get; set; }
|
||||||
|
|
||||||
public int FaunaCount { get; set; }
|
public int FaunaCount { get; set; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,273 @@
|
||||||
@{
|
@{
|
||||||
ViewData["Title"] = "Lokasi Detail";
|
ViewData["Title"] = "Lokasi Detail";
|
||||||
|
var statusColor = new Dictionary<string, string>
|
||||||
|
{
|
||||||
|
{ "Aman", "bg-primary/10 text-primary border-primary/20" },
|
||||||
|
{ "Rentan", "bg-amber-100 text-amber-800 border-amber-200" },
|
||||||
|
{ "Terancam", "bg-orange-100 text-orange-800 border-orange-200" },
|
||||||
|
{ "Kritis", "bg-red-100 text-red-800 border-red-200" },
|
||||||
|
{ "Dilindungi", "bg-emerald-100 text-emerald-800 border-emerald-200" }
|
||||||
|
};
|
||||||
|
@model kehati.Models.HomeViewModel
|
||||||
|
var flora = Model.FeaturedSpesies.Where(x => x.Type == "flora").ToList();
|
||||||
|
var fauna = Model.FeaturedSpesies.Where(x => x.Type == "fauna").ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<div class="relative h-[45vh] min-h-[320px] overflow-hidden">
|
||||||
|
<img src="~/images/@Model.Location.Image" asp-append-version="true" alt="@Model.Location.Name" class="h-full w-full object-cover"/>
|
||||||
|
<div class="absolute inset-0 bg-gradient-to-t from-background via-background/40 to-background/10"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mx-auto mt-24 max-w-5xl px-4 sm:px-6 lg:px-8">
|
||||||
|
<div class="rounded-2xl border border-border bg-card p-8 shadow-sm sm:p-10">
|
||||||
|
<a asp-controller="lokasi"
|
||||||
|
asp-action="index"
|
||||||
|
class="inline-flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground">
|
||||||
|
<i data-lucide="arrow-left" class="h-4 w-4"></i>
|
||||||
|
Semua lokasi
|
||||||
|
</a>
|
||||||
|
<h1 class="mt-4 font-serif text-4xl leading-tight text-foreground sm:text-5xl">
|
||||||
|
@Model.Location.Name
|
||||||
|
</h1>
|
||||||
|
<div class="mt-4 flex flex-wrap gap-x-6 gap-y-2 text-sm text-muted-foreground">
|
||||||
|
<span class="inline-flex items-center gap-1.5">
|
||||||
|
<i data-lucide="map-pin" class="h-4 w-4 text-primary"></i>
|
||||||
|
@Model.Location.Region
|
||||||
|
</span>
|
||||||
|
<span class="inline-flex items-center gap-1.5">
|
||||||
|
<i data-lucide="ruler" class="h-4 w-4 text-primary"></i>
|
||||||
|
@Model.Location.Area
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<p class="mt-6 max-w-3xl text-base leading-relaxed text-muted-foreground">
|
||||||
|
@Model.Location.Description
|
||||||
|
</p>
|
||||||
|
<div class="mt-6 flex gap-8 text-sm">
|
||||||
|
<div>
|
||||||
|
<div class="font-serif text-3xl text-primary">
|
||||||
|
@Model.Location.FloraCount
|
||||||
|
</div>
|
||||||
|
<div class="text-xs uppercase tracking-widest text-muted-foreground">
|
||||||
|
Flora
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div class="font-serif text-3xl text-primary">
|
||||||
|
@Model.Location.FaunaCount
|
||||||
|
</div>
|
||||||
|
<div class="text-xs uppercase tracking-widest text-muted-foreground">
|
||||||
|
Fauna
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mx-auto max-w-5xl px-4 py-16 sm:px-6 lg:px-8">
|
||||||
|
|
||||||
|
<div class="flex flex-wrap gap-3">
|
||||||
|
<button class="tab-btn active" data-tab="all">
|
||||||
|
Semua (@Model.FeaturedSpesies.Count)
|
||||||
|
</button>
|
||||||
|
<button class="tab-btn" data-tab="flora">
|
||||||
|
Flora (@flora.Count)
|
||||||
|
</button>
|
||||||
|
<button class="tab-btn" data-tab="fauna">
|
||||||
|
Fauna (@fauna.Count)
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="tab-all" class="tab-content mt-8">
|
||||||
|
|
||||||
|
<div class="grid gap-6 sm:grid-cols-2 lg:grid-cols-3">
|
||||||
|
|
||||||
|
@foreach(SpesiesModel s in Model.FeaturedSpesies)
|
||||||
|
{
|
||||||
|
<a asp-controller="katalog" asp-action="detail" asp-route-slug="@s.Slug" class="group block overflow-hidden rounded-2xl border border-border bg-card transition-all hover:-translate-y-1 hover:shadow-lg">
|
||||||
|
<!-- Image -->
|
||||||
|
<div class="relative aspect-[4/3] overflow-hidden bg-muted">
|
||||||
|
<img src="~/images/@s.Image"
|
||||||
|
alt="@s.CommonName"
|
||||||
|
loading="lazy"
|
||||||
|
asp-append-version="true"
|
||||||
|
class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105" />
|
||||||
|
|
||||||
|
<!-- Type Badge -->
|
||||||
|
<div class="absolute left-3 top-3 flex items-center gap-1.5 rounded-full bg-background/90 px-2.5 py-1 text-[11px] font-medium capitalize backdrop-blur">
|
||||||
|
@if(s.Type == "Flora")
|
||||||
|
{
|
||||||
|
<i data-lucide="leaf" class="h-3 w-3"></i>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<i data-lucide="bird" class="h-3 w-3"></i>
|
||||||
|
}
|
||||||
|
@s.Type
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Content -->
|
||||||
|
<div class="p-4">
|
||||||
|
<div class="flex items-start justify-between gap-2">
|
||||||
|
<h3 class="font-serif text-lg leading-tight text-foreground">
|
||||||
|
@s.CommonName
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
<p class="mt-0.5 text-xs italic text-muted-foreground">
|
||||||
|
@s.ScientificName
|
||||||
|
</p>
|
||||||
|
<!-- Status Badge -->
|
||||||
|
<div class="mt-3">
|
||||||
|
<span class="inline-flex items-center rounded-md border px-2.5 py-1 text-xs font-medium
|
||||||
|
@(statusColor.ContainsKey(s.ConservationStatus)
|
||||||
|
? statusColor[s.ConservationStatus]
|
||||||
|
: "")">
|
||||||
|
@s.ConservationStatus
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="tab-flora" class="tab-content mt-8 hidden">
|
||||||
|
|
||||||
|
<div class="grid gap-6 sm:grid-cols-2 lg:grid-cols-3">
|
||||||
|
|
||||||
|
@foreach(var s in flora)
|
||||||
|
{
|
||||||
|
<a asp-controller="katalog" asp-action="detail" asp-route-slug="@s.Slug" class="group block overflow-hidden rounded-2xl border border-border bg-card transition-all hover:-translate-y-1 hover:shadow-lg">
|
||||||
|
<!-- Image -->
|
||||||
|
<div class="relative aspect-[4/3] overflow-hidden bg-muted">
|
||||||
|
<img src="~/images/@s.Image"
|
||||||
|
alt="@s.CommonName"
|
||||||
|
loading="lazy"
|
||||||
|
asp-append-version="true"
|
||||||
|
class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105" />
|
||||||
|
|
||||||
|
<!-- Type Badge -->
|
||||||
|
<div class="absolute left-3 top-3 flex items-center gap-1.5 rounded-full bg-background/90 px-2.5 py-1 text-[11px] font-medium capitalize backdrop-blur">
|
||||||
|
@if(s.Type == "Flora")
|
||||||
|
{
|
||||||
|
<i data-lucide="leaf" class="h-3 w-3"></i>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<i data-lucide="bird" class="h-3 w-3"></i>
|
||||||
|
}
|
||||||
|
@s.Type
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Content -->
|
||||||
|
<div class="p-4">
|
||||||
|
<div class="flex items-start justify-between gap-2">
|
||||||
|
<h3 class="font-serif text-lg leading-tight text-foreground">
|
||||||
|
@s.CommonName
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
<p class="mt-0.5 text-xs italic text-muted-foreground">
|
||||||
|
@s.ScientificName
|
||||||
|
</p>
|
||||||
|
<!-- Status Badge -->
|
||||||
|
<div class="mt-3">
|
||||||
|
<span class="inline-flex items-center rounded-md border px-2.5 py-1 text-xs font-medium
|
||||||
|
@(statusColor.ContainsKey(s.ConservationStatus)
|
||||||
|
? statusColor[s.ConservationStatus]
|
||||||
|
: "")">
|
||||||
|
@s.ConservationStatus
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="tab-fauna" class="tab-content mt-8 hidden">
|
||||||
|
|
||||||
|
<div class="grid gap-6 sm:grid-cols-2 lg:grid-cols-3">
|
||||||
|
|
||||||
|
@foreach(SpesiesModel s in fauna)
|
||||||
|
{
|
||||||
|
<a asp-controller="katalog" asp-action="detail" asp-route-slug="@s.Slug" class="group block overflow-hidden rounded-2xl border border-border bg-card transition-all hover:-translate-y-1 hover:shadow-lg">
|
||||||
|
<!-- Image -->
|
||||||
|
<div class="relative aspect-[4/3] overflow-hidden bg-muted">
|
||||||
|
<img src="~/images/@s.Image"
|
||||||
|
alt="@s.CommonName"
|
||||||
|
loading="lazy"
|
||||||
|
asp-append-version="true"
|
||||||
|
class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105" />
|
||||||
|
|
||||||
|
<!-- Type Badge -->
|
||||||
|
<div class="absolute left-3 top-3 flex items-center gap-1.5 rounded-full bg-background/90 px-2.5 py-1 text-[11px] font-medium capitalize backdrop-blur">
|
||||||
|
@if(s.Type == "Flora")
|
||||||
|
{
|
||||||
|
<i data-lucide="leaf" class="h-3 w-3"></i>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<i data-lucide="bird" class="h-3 w-3"></i>
|
||||||
|
}
|
||||||
|
@s.Type
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Content -->
|
||||||
|
<div class="p-4">
|
||||||
|
<div class="flex items-start justify-between gap-2">
|
||||||
|
<h3 class="font-serif text-lg leading-tight text-foreground">
|
||||||
|
@s.CommonName
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
<p class="mt-0.5 text-xs italic text-muted-foreground">
|
||||||
|
@s.ScientificName
|
||||||
|
</p>
|
||||||
|
<!-- Status Badge -->
|
||||||
|
<div class="mt-3">
|
||||||
|
<span class="inline-flex items-center rounded-md border px-2.5 py-1 text-xs font-medium
|
||||||
|
@(statusColor.ContainsKey(s.ConservationStatus)
|
||||||
|
? statusColor[s.ConservationStatus]
|
||||||
|
: "")">
|
||||||
|
@s.ConservationStatus
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@section Scripts{
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
document.querySelectorAll(".tab-btn").forEach(btn=>{
|
||||||
|
|
||||||
|
btn.addEventListener("click",function(){
|
||||||
|
|
||||||
|
document.querySelectorAll(".tab-btn")
|
||||||
|
.forEach(x=>x.classList.remove("active"));
|
||||||
|
|
||||||
|
this.classList.add("active");
|
||||||
|
|
||||||
|
document.querySelectorAll(".tab-content")
|
||||||
|
.forEach(x=>x.classList.add("hidden"));
|
||||||
|
|
||||||
|
document
|
||||||
|
.getElementById("tab-"+this.dataset.tab)
|
||||||
|
.classList.remove("hidden");
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
}
|
}
|
||||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -13,7 +13,7 @@ using System.Reflection;
|
||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("kehati")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("kehati")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+90e28904fae88ecb9ed4f0f1220d37650387567d")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+36d77a7c38b1047de7c7b3c46f2b91dae14000b7")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("kehati")]
|
[assembly: System.Reflection.AssemblyProductAttribute("kehati")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("kehati")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("kehati")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
9c01b1841f9a1c818d0dd43165fccf462e7f9dcfc3e798c4f8042450d4e2f399
|
3cd5cf29dc56f470419d695e943e0b42bb96d0b035c5dd5a2a973054ec85c27a
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@
|
||||||
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/scopedcss/Views/Shared/_Layout.cshtml.rz.scp.css
|
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/scopedcss/Views/Shared/_Layout.cshtml.rz.scp.css
|
||||||
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/scopedcss/bundle/kehati.styles.css
|
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/scopedcss/bundle/kehati.styles.css
|
||||||
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/scopedcss/projectbundle/kehati.bundle.scp.css
|
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/scopedcss/projectbundle/kehati.bundle.scp.css
|
||||||
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/compressed/y5cxcra3jr-b9sayid5wm.gz
|
|
||||||
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/compressed/mrrvpgzc9b-61n19gt1b8.gz
|
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/compressed/mrrvpgzc9b-61n19gt1b8.gz
|
||||||
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/compressed/rsssl4ehv7-xtxxf3hu2r.gz
|
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/compressed/rsssl4ehv7-xtxxf3hu2r.gz
|
||||||
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/compressed/jkx4m99mlx-bqjiyaj88i.gz
|
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/compressed/jkx4m99mlx-bqjiyaj88i.gz
|
||||||
|
|
@ -96,4 +95,5 @@
|
||||||
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/ref/kehati.dll
|
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/ref/kehati.dll
|
||||||
/Applications/MAMP/htdocs/kehati/bin/Debug/net9.0/package-lock.json
|
/Applications/MAMP/htdocs/kehati/bin/Debug/net9.0/package-lock.json
|
||||||
/Applications/MAMP/htdocs/kehati/bin/Debug/net9.0/package.json
|
/Applications/MAMP/htdocs/kehati/bin/Debug/net9.0/package.json
|
||||||
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/compressed/nskz5oaabv-rpkmhdruhm.gz
|
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/compressed/y5cxcra3jr-ibxsq7mcux.gz
|
||||||
|
/Applications/MAMP/htdocs/kehati/obj/Debug/net9.0/compressed/nskz5oaabv-trnh2byzch.gz
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
|
|
@ -1 +1 @@
|
||||||
{"GlobalPropertiesHash":"hc8FL4d4SDyJq22ZKuiHZVVsIHQC48YE/mA5pBHYKc4=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"R7Rea/YQmcweqCbKffD9oUelggfpJQX85r65aYZsas0=","InputHashes":["w16VN9xOimoxck1LjBNXWd9fHMNU3UnlFI\u002B\u002ByZnoFg0=","VOxc8xcqWt6gAM\u002BRuyfRLL1iQY9qPYh4n8cvKjwI3NY=","Sncp4ww/tjimD30ejpDv5D5eCiY\u002BGNCBHG31XvywcgE=","RSbekUJC7incuVtr7C0tXRzZN4BZamYDVsEZmrfQMcY=","0dj\u002B7dC25IeuLKXvwnTzfQVy\u002BUdHnl40sHhE/lKWrRI=","KPTC6joZ0rLn0eml9/Lsh6v1w6OotgKIxbWPkQPSc2U=","oc5dZJn7YA7RsQ0gtAnGAh7rgEphv3dYfFRixIhMKuU=","IBx1Zpi0iRpuwQy5fUr\u002B0BIjRN/f7k\u002BLtsRCoyIqdKg=","x60hTcC5q95RUcHEJci6kZJX\u002BOP5ZncNTZnLKMrK9TQ=","NQukUql2iNTO4MQCyXa8T8bDU1wDElRnV\u002BBc2yCjEHg=","MgtQemV1N1h3/pFRW/IBNT4EgLJYsuxU0zbAcfbRCb4=","Goe41XQAQHCAcUIB4rTr07EWxMhW4VLC35VQ3i8zogk=","8bEfz8MdGCT\u002BUqVKCJhjT0KyMmRaMYgY/zLLZ1asfpE=","Ibz6Ix07csPbM7Pw2WcZZH0awAHeeZ0osg23I/UHwso=","icl4Xuqd3wVKdyQVGN6K0RJuiPUiZ1J3ZMQUAoAzfT0=","dweympdBNxv56b5xEWZUlkihih0FcF9WdEhWCjq2cXc=","fiFS/KvqSehFNqqcPmIkVbUMcMmBAjue0bCe3g32ZYs=","T3X1M\u002BUddK1SoFQOwNXuQKnudpv8ohop7rTlXDRkn4A=","QDGCJ/H0sJVm29CRqaE0VjtfDzWSx48qBmGqriGN89I=","WWNvV\u002BI7oSnu9ecmCS0Mck2eCGJvRs9a5UgkPxCOjRA=","Xc9BeHGukGDOMxRJ4DWKsD4Hl/eb6mEQZL6YmMBPRoY=","fOkK1386yU0SP0SXkMTynAZIbKu8kDOYliwg0q\u002BNskY=","oct6eD0w1zvUhMj0MXoNwhWFE2YjuoYqg3X96Ucuj4s=","67V7nn6u9b0acsh53M2HmglNpcktUtvOaw3gSRkwjx4=","ma1u/4RE/To974RJYUPGyGaqvCCeme6zJysx9w1ss3c=","o55JlXqf9P5uAQ2khL\u002B6zb9Tdmwm6I1og1gMy1YLpYY=","e0xtx5OOXKYFYOH5RifNbjh4spMMZ4OJe/5WIl23q7I=","5tm4FTjJTYh\u002BIfly7jRHNn4wSziZxSIN8wAEvIw\u002Bqjw=","BHdvCHnZlyS4zwSKcVy3ayvJezMLJXLcVN9R8deaH0g=","ntzaTVX8xBXsH995gvvXvmliXlCQotIsZXpZcglhOaE=","5kR/aL1DviNsyODfcczgmMzxSZCePCH9RPdTfI\u002BcgyA=","85jPWChWoCRZbXQRGb0iFqvZVPOqR7ev3FjdbkOn3N8=","Nbx2WCrP2GEddQzxS83sJa0zFj93vdmpK4GM2nty9uc=","QJPJj2QugL4XCdpHR\u002BUjqru7nIH7z/53/LJfz\u002B2u78E=","0OChFB9xM4RUbmHFnou7uAEh\u002BDlF54KM6B6j00g5Tmw=","ykyMr/QcfGzV063qPhl8tX3/1moBCOJG611QWUQ\u002BbHY=","/CLnWX/m7JPrsLGY\u002BXHRNWDTPsPKGvhpoUNMvUVySdk=","CkYBQvKkMzORePi8WPMM9aW2Lc3xVg5GJyDtKLXwYmY=","xwGlvpWqKnaz0RVaeRVxQ0PJMwOhvULJb3PN/FnF55I=","4xahvZCLorqqeX8Bk5JA9YF2zYf76VJFw\u002BFYV0Le/k0=","5SqPyjpm7H9Zc\u002BBbXBtZiOjmSi5f2cQeYLc7FuoB/ek=","0O4aVW29Vzt0B4Iet0T1oBGOM020UM\u002BLK2/yEbKH2dU=","HMwYA0Zexo0VNDlvtKgkk/e28ujKc1aNC91bm0MLMdk=","iNfcu84P3JCmFtqZp1chAvwyIZTOhH2RqhEneyvLrhs=","2hARyYn7NC4gbrlXbXtVzxaTHpcnwtUTyyjbnSGMmcs=","wHeoBQH8D12d4FpBCQgSAl7Y98J2wIbXVO87I4Oqnmo=","8cQHbaseDOOEdr82\u002B4L1dLbZfVOBGCzj7m1oStCM4RY=","8WGZEIW0hbJT1XkzSCtnaB50AHFRFH4MihnUs34mxhA=","3ZZyBE\u002BdA6aG7oGYzH8eisN1SphrAdQG8rxBn\u002BDzo/w=","BfFJRPyrADpgktkNNc2mfyFFZoBqauN9MCmAUWxe9Ug=","97Ja5zuGdMucJqedxH7CguZ\u002BiLSY4xYuyTXfJE/3mUs=","Gd2mz0U9mny2BKIeKQ\u002BRDt3csebXGOTHzvpBKmzTj9M=","ymiC674Nr\u002BpzpfZQAvz7VgMKWyqBem/OjSN8QeM3478=","tXqEhWxbNOqNYKJvB\u002B6TTsEx8KNlmzLfTndlyi8dcpg=","nYQ\u002BrXWj8wJ\u002BUt/T6U/wVc9UHvQjMUXDgcAtNNlnlcA=","qkZKbEyxkxbCDFtQ06Z9p3Fqpr6AUZHUiFlVpL00cJY=","mb/vdMDaE9L3J1vibUT8coaPWWPSUbGacfV5H5IP\u002BwU=","\u002BHDgqKS6Nqa5bRN/WtecsLITGr6T6whhbWPV0RjwQwM=","Gig3DQsXKloHGlDlRN26sGVUvT8\u002Bu50xYCWb/DK3fTE=","k5m16lGuQyO6e9aY4k1OYGzBolX0sixXAbsVhNDa7fQ=","MrFgmWKVAxban9XX2uqZQO23DWw0NGjsnWiIu9p11jo=","YQgUcWz2ue2oRWm0L9A\u002B\u002BDN/X2SNcdMG3yyz/5A0N4w=","XsOFFGStfZmGs4rkShh2uK3eN2ongLE0d9KBNjaXb6o=","7ITk8hLOO4uilCzXKB1iYKDtCVKMZ2vApR6K0z9qx0c=","RG4n1qULpz4qGNsyBiHJ1ebTfk9LKVz89pL0eSC8gPc=","4EfJtzv9kg3WWFzBqUt8CbF91bcAtW2ocJG4JUrULj8=","S2dH4yX4W/BjGC7Cp1Ov1rAVBSZJlC1sZbKwQRqMA4M=","krL8lBCCkIWVGoLQQThjIfoe6qs/xBAVnhPU3ywnuSs=","5Ad\u002Bef7REpth\u002B1aDMBr3B0HUtzchjmHZ69ipQ7F2ztQ=","0wADQAsURdwl9hsWFMFxN8u51iyhIefZ0\u002BfAdgRzQBM=","6omG1NdZNuYtZDubEy\u002BDST7\u002BfwfA5A3g2vDv80vluVI=","rRoeWHDFv91Dmdy9uNkQCarQ5nvPkifcZ5GBvZJDKDc=","4bsNytNaXkRk3ePwPIbWzq4IwszFAfZcWbCknkEszmA=","eLvoEvqRTPWrPYwFjRNV8D92N\u002BkvcZnoiJi9t9njyTo=","uoiinJcNOciOgqlO0GZQN2smtr6KoTAnah6dv5mVzek=","YoagLoMl49bUAbErIjNPzkNdCDgBDT514c90F9nGnfE=","uzjUeW\u002BKe/Mh7NhfiBvuinD0gzUKuynWF2VbhEIulVQ=","LdNXSSS5DEGYhs9mcjWxtU5uYD9N3kfGTAPRl6j6qWg=","g0y10m2DgfWcR\u002BBdcBNPC0hbivhMAc0z5cHhsqH1Tzc=","TgJ8XvI1vjoz8U9BMJ1maLQnqweAMT4a8ZSbLYUzoAE=","x8umpBTg0fvarcVhS22jEVXuAcL5hqCQF3JRc1qsxro=","s44dS6GzxTQjxM/Pb8o8DITAn8xEEod4rcdnoe\u002BHnjU=","9IICJ536DO5SnYafRqGlL5Pf3mmi/qGFXYfX522YIl4="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
{"GlobalPropertiesHash":"hc8FL4d4SDyJq22ZKuiHZVVsIHQC48YE/mA5pBHYKc4=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"R7Rea/YQmcweqCbKffD9oUelggfpJQX85r65aYZsas0=","InputHashes":["b8AT0bFrK41LbwjEdo/ilJjsEuj3Q2\u002Bzzd6Fb6hDHow=","VOxc8xcqWt6gAM\u002BRuyfRLL1iQY9qPYh4n8cvKjwI3NY=","Sncp4ww/tjimD30ejpDv5D5eCiY\u002BGNCBHG31XvywcgE=","RSbekUJC7incuVtr7C0tXRzZN4BZamYDVsEZmrfQMcY=","0dj\u002B7dC25IeuLKXvwnTzfQVy\u002BUdHnl40sHhE/lKWrRI=","KPTC6joZ0rLn0eml9/Lsh6v1w6OotgKIxbWPkQPSc2U=","oc5dZJn7YA7RsQ0gtAnGAh7rgEphv3dYfFRixIhMKuU=","IBx1Zpi0iRpuwQy5fUr\u002B0BIjRN/f7k\u002BLtsRCoyIqdKg=","x60hTcC5q95RUcHEJci6kZJX\u002BOP5ZncNTZnLKMrK9TQ=","NQukUql2iNTO4MQCyXa8T8bDU1wDElRnV\u002BBc2yCjEHg=","MgtQemV1N1h3/pFRW/IBNT4EgLJYsuxU0zbAcfbRCb4=","Goe41XQAQHCAcUIB4rTr07EWxMhW4VLC35VQ3i8zogk=","8bEfz8MdGCT\u002BUqVKCJhjT0KyMmRaMYgY/zLLZ1asfpE=","Ibz6Ix07csPbM7Pw2WcZZH0awAHeeZ0osg23I/UHwso=","icl4Xuqd3wVKdyQVGN6K0RJuiPUiZ1J3ZMQUAoAzfT0=","dweympdBNxv56b5xEWZUlkihih0FcF9WdEhWCjq2cXc=","fiFS/KvqSehFNqqcPmIkVbUMcMmBAjue0bCe3g32ZYs=","T3X1M\u002BUddK1SoFQOwNXuQKnudpv8ohop7rTlXDRkn4A=","QDGCJ/H0sJVm29CRqaE0VjtfDzWSx48qBmGqriGN89I=","WWNvV\u002BI7oSnu9ecmCS0Mck2eCGJvRs9a5UgkPxCOjRA=","Xc9BeHGukGDOMxRJ4DWKsD4Hl/eb6mEQZL6YmMBPRoY=","fOkK1386yU0SP0SXkMTynAZIbKu8kDOYliwg0q\u002BNskY=","oct6eD0w1zvUhMj0MXoNwhWFE2YjuoYqg3X96Ucuj4s=","67V7nn6u9b0acsh53M2HmglNpcktUtvOaw3gSRkwjx4=","ma1u/4RE/To974RJYUPGyGaqvCCeme6zJysx9w1ss3c=","o55JlXqf9P5uAQ2khL\u002B6zb9Tdmwm6I1og1gMy1YLpYY=","e0xtx5OOXKYFYOH5RifNbjh4spMMZ4OJe/5WIl23q7I=","5tm4FTjJTYh\u002BIfly7jRHNn4wSziZxSIN8wAEvIw\u002Bqjw=","BHdvCHnZlyS4zwSKcVy3ayvJezMLJXLcVN9R8deaH0g=","ntzaTVX8xBXsH995gvvXvmliXlCQotIsZXpZcglhOaE=","5kR/aL1DviNsyODfcczgmMzxSZCePCH9RPdTfI\u002BcgyA=","85jPWChWoCRZbXQRGb0iFqvZVPOqR7ev3FjdbkOn3N8=","Nbx2WCrP2GEddQzxS83sJa0zFj93vdmpK4GM2nty9uc=","QJPJj2QugL4XCdpHR\u002BUjqru7nIH7z/53/LJfz\u002B2u78E=","0OChFB9xM4RUbmHFnou7uAEh\u002BDlF54KM6B6j00g5Tmw=","ykyMr/QcfGzV063qPhl8tX3/1moBCOJG611QWUQ\u002BbHY=","/CLnWX/m7JPrsLGY\u002BXHRNWDTPsPKGvhpoUNMvUVySdk=","CkYBQvKkMzORePi8WPMM9aW2Lc3xVg5GJyDtKLXwYmY=","xwGlvpWqKnaz0RVaeRVxQ0PJMwOhvULJb3PN/FnF55I=","4xahvZCLorqqeX8Bk5JA9YF2zYf76VJFw\u002BFYV0Le/k0=","5SqPyjpm7H9Zc\u002BBbXBtZiOjmSi5f2cQeYLc7FuoB/ek=","0O4aVW29Vzt0B4Iet0T1oBGOM020UM\u002BLK2/yEbKH2dU=","HMwYA0Zexo0VNDlvtKgkk/e28ujKc1aNC91bm0MLMdk=","iNfcu84P3JCmFtqZp1chAvwyIZTOhH2RqhEneyvLrhs=","2hARyYn7NC4gbrlXbXtVzxaTHpcnwtUTyyjbnSGMmcs=","wHeoBQH8D12d4FpBCQgSAl7Y98J2wIbXVO87I4Oqnmo=","8cQHbaseDOOEdr82\u002B4L1dLbZfVOBGCzj7m1oStCM4RY=","8WGZEIW0hbJT1XkzSCtnaB50AHFRFH4MihnUs34mxhA=","3ZZyBE\u002BdA6aG7oGYzH8eisN1SphrAdQG8rxBn\u002BDzo/w=","BfFJRPyrADpgktkNNc2mfyFFZoBqauN9MCmAUWxe9Ug=","97Ja5zuGdMucJqedxH7CguZ\u002BiLSY4xYuyTXfJE/3mUs=","Gd2mz0U9mny2BKIeKQ\u002BRDt3csebXGOTHzvpBKmzTj9M=","ymiC674Nr\u002BpzpfZQAvz7VgMKWyqBem/OjSN8QeM3478=","tXqEhWxbNOqNYKJvB\u002B6TTsEx8KNlmzLfTndlyi8dcpg=","nYQ\u002BrXWj8wJ\u002BUt/T6U/wVc9UHvQjMUXDgcAtNNlnlcA=","qkZKbEyxkxbCDFtQ06Z9p3Fqpr6AUZHUiFlVpL00cJY=","mb/vdMDaE9L3J1vibUT8coaPWWPSUbGacfV5H5IP\u002BwU=","\u002BHDgqKS6Nqa5bRN/WtecsLITGr6T6whhbWPV0RjwQwM=","Gig3DQsXKloHGlDlRN26sGVUvT8\u002Bu50xYCWb/DK3fTE=","k5m16lGuQyO6e9aY4k1OYGzBolX0sixXAbsVhNDa7fQ=","MrFgmWKVAxban9XX2uqZQO23DWw0NGjsnWiIu9p11jo=","YQgUcWz2ue2oRWm0L9A\u002B\u002BDN/X2SNcdMG3yyz/5A0N4w=","XsOFFGStfZmGs4rkShh2uK3eN2ongLE0d9KBNjaXb6o=","7ITk8hLOO4uilCzXKB1iYKDtCVKMZ2vApR6K0z9qx0c=","RG4n1qULpz4qGNsyBiHJ1ebTfk9LKVz89pL0eSC8gPc=","4EfJtzv9kg3WWFzBqUt8CbF91bcAtW2ocJG4JUrULj8=","S2dH4yX4W/BjGC7Cp1Ov1rAVBSZJlC1sZbKwQRqMA4M=","krL8lBCCkIWVGoLQQThjIfoe6qs/xBAVnhPU3ywnuSs=","5Ad\u002Bef7REpth\u002B1aDMBr3B0HUtzchjmHZ69ipQ7F2ztQ=","0wADQAsURdwl9hsWFMFxN8u51iyhIefZ0\u002BfAdgRzQBM=","6omG1NdZNuYtZDubEy\u002BDST7\u002BfwfA5A3g2vDv80vluVI=","rRoeWHDFv91Dmdy9uNkQCarQ5nvPkifcZ5GBvZJDKDc=","4bsNytNaXkRk3ePwPIbWzq4IwszFAfZcWbCknkEszmA=","eLvoEvqRTPWrPYwFjRNV8D92N\u002BkvcZnoiJi9t9njyTo=","uoiinJcNOciOgqlO0GZQN2smtr6KoTAnah6dv5mVzek=","YoagLoMl49bUAbErIjNPzkNdCDgBDT514c90F9nGnfE=","uzjUeW\u002BKe/Mh7NhfiBvuinD0gzUKuynWF2VbhEIulVQ=","LdNXSSS5DEGYhs9mcjWxtU5uYD9N3kfGTAPRl6j6qWg=","g0y10m2DgfWcR\u002BBdcBNPC0hbivhMAc0z5cHhsqH1Tzc=","TgJ8XvI1vjoz8U9BMJ1maLQnqweAMT4a8ZSbLYUzoAE=","x8umpBTg0fvarcVhS22jEVXuAcL5hqCQF3JRc1qsxro=","s44dS6GzxTQjxM/Pb8o8DITAn8xEEod4rcdnoe\u002BHnjU=","P6p1PivC7LaQdOqjFCUMRjw6\u002BMvlE3W9ElnOgEcy/mk="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
||||||
BxMG25HaC4cDx43ATP16A26Fd1LourrI+W15Xsp+loU=
|
kzGxoKXWby4yRRWxtx4csqoxm3jxzD8L8LsSAHk9d4E=
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -25,6 +25,7 @@
|
||||||
--container-sm: 24rem;
|
--container-sm: 24rem;
|
||||||
--container-xl: 36rem;
|
--container-xl: 36rem;
|
||||||
--container-2xl: 42rem;
|
--container-2xl: 42rem;
|
||||||
|
--container-3xl: 48rem;
|
||||||
--container-5xl: 64rem;
|
--container-5xl: 64rem;
|
||||||
--container-7xl: 80rem;
|
--container-7xl: 80rem;
|
||||||
--text-xs: 0.75rem;
|
--text-xs: 0.75rem;
|
||||||
|
|
@ -39,6 +40,8 @@
|
||||||
--text-xl--line-height: calc(1.75 / 1.25);
|
--text-xl--line-height: calc(1.75 / 1.25);
|
||||||
--text-2xl: 1.5rem;
|
--text-2xl: 1.5rem;
|
||||||
--text-2xl--line-height: calc(2 / 1.5);
|
--text-2xl--line-height: calc(2 / 1.5);
|
||||||
|
--text-3xl: 1.875rem;
|
||||||
|
--text-3xl--line-height: calc(2.25 / 1.875);
|
||||||
--text-4xl: 2.25rem;
|
--text-4xl: 2.25rem;
|
||||||
--text-4xl--line-height: calc(2.5 / 2.25);
|
--text-4xl--line-height: calc(2.5 / 2.25);
|
||||||
--text-5xl: 3rem;
|
--text-5xl: 3rem;
|
||||||
|
|
@ -500,6 +503,9 @@
|
||||||
.me-auto {
|
.me-auto {
|
||||||
margin-inline-end: auto;
|
margin-inline-end: auto;
|
||||||
}
|
}
|
||||||
|
.-mt-24 {
|
||||||
|
margin-top: calc(var(--spacing) * -24);
|
||||||
|
}
|
||||||
.mt-0 {
|
.mt-0 {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
}
|
}
|
||||||
|
|
@ -641,6 +647,9 @@
|
||||||
.h-100 {
|
.h-100 {
|
||||||
height: calc(var(--spacing) * 100);
|
height: calc(var(--spacing) * 100);
|
||||||
}
|
}
|
||||||
|
.h-\[45vh\] {
|
||||||
|
height: 45vh;
|
||||||
|
}
|
||||||
.h-\[600px\] {
|
.h-\[600px\] {
|
||||||
height: 600px;
|
height: 600px;
|
||||||
}
|
}
|
||||||
|
|
@ -650,6 +659,9 @@
|
||||||
.h-full {
|
.h-full {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
.min-h-\[320px\] {
|
||||||
|
min-height: 320px;
|
||||||
|
}
|
||||||
.w-3 {
|
.w-3 {
|
||||||
width: calc(var(--spacing) * 3);
|
width: calc(var(--spacing) * 3);
|
||||||
}
|
}
|
||||||
|
|
@ -689,6 +701,9 @@
|
||||||
.max-w-2xl {
|
.max-w-2xl {
|
||||||
max-width: var(--container-2xl);
|
max-width: var(--container-2xl);
|
||||||
}
|
}
|
||||||
|
.max-w-3xl {
|
||||||
|
max-width: var(--container-3xl);
|
||||||
|
}
|
||||||
.max-w-5xl {
|
.max-w-5xl {
|
||||||
max-width: var(--container-5xl);
|
max-width: var(--container-5xl);
|
||||||
}
|
}
|
||||||
|
|
@ -830,6 +845,12 @@
|
||||||
margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
|
margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.gap-x-6 {
|
||||||
|
column-gap: calc(var(--spacing) * 6);
|
||||||
|
}
|
||||||
|
.gap-y-2 {
|
||||||
|
row-gap: calc(var(--spacing) * 2);
|
||||||
|
}
|
||||||
.divide-x {
|
.divide-x {
|
||||||
:where(& > :not(:last-child)) {
|
:where(& > :not(:last-child)) {
|
||||||
--tw-divide-x-reverse: 0;
|
--tw-divide-x-reverse: 0;
|
||||||
|
|
@ -1082,6 +1103,14 @@
|
||||||
}
|
}
|
||||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||||
}
|
}
|
||||||
|
.via-background\/40 {
|
||||||
|
--tw-gradient-via: var(--background);
|
||||||
|
@supports (color: color-mix(in lab, red, red)) {
|
||||||
|
--tw-gradient-via: color-mix(in oklab, var(--background) 40%, transparent);
|
||||||
|
}
|
||||||
|
--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
|
||||||
|
--tw-gradient-stops: var(--tw-gradient-via-stops);
|
||||||
|
}
|
||||||
.via-background\/85 {
|
.via-background\/85 {
|
||||||
--tw-gradient-via: var(--background);
|
--tw-gradient-via: var(--background);
|
||||||
@supports (color: color-mix(in lab, red, red)) {
|
@supports (color: color-mix(in lab, red, red)) {
|
||||||
|
|
@ -1098,6 +1127,13 @@
|
||||||
--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
|
--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
|
||||||
--tw-gradient-stops: var(--tw-gradient-via-stops);
|
--tw-gradient-stops: var(--tw-gradient-via-stops);
|
||||||
}
|
}
|
||||||
|
.to-background\/10 {
|
||||||
|
--tw-gradient-to: var(--background);
|
||||||
|
@supports (color: color-mix(in lab, red, red)) {
|
||||||
|
--tw-gradient-to: color-mix(in oklab, var(--background) 10%, transparent);
|
||||||
|
}
|
||||||
|
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||||
|
}
|
||||||
.to-background\/40 {
|
.to-background\/40 {
|
||||||
--tw-gradient-to: var(--background);
|
--tw-gradient-to: var(--background);
|
||||||
@supports (color: color-mix(in lab, red, red)) {
|
@supports (color: color-mix(in lab, red, red)) {
|
||||||
|
|
@ -1317,6 +1353,10 @@
|
||||||
font-size: var(--text-2xl);
|
font-size: var(--text-2xl);
|
||||||
line-height: var(--tw-leading, var(--text-2xl--line-height));
|
line-height: var(--tw-leading, var(--text-2xl--line-height));
|
||||||
}
|
}
|
||||||
|
.text-3xl {
|
||||||
|
font-size: var(--text-3xl);
|
||||||
|
line-height: var(--tw-leading, var(--text-3xl--line-height));
|
||||||
|
}
|
||||||
.text-4xl {
|
.text-4xl {
|
||||||
font-size: var(--text-4xl);
|
font-size: var(--text-4xl);
|
||||||
line-height: var(--tw-leading, var(--text-4xl--line-height));
|
line-height: var(--tw-leading, var(--text-4xl--line-height));
|
||||||
|
|
@ -1553,39 +1593,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.file\:border-0 {
|
|
||||||
&::file-selector-button {
|
|
||||||
border-style: var(--tw-border-style);
|
|
||||||
border-width: 0px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.file\:bg-transparent {
|
|
||||||
&::file-selector-button {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.file\:text-sm {
|
|
||||||
&::file-selector-button {
|
|
||||||
font-size: var(--text-sm);
|
|
||||||
line-height: var(--tw-leading, var(--text-sm--line-height));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.file\:font-medium {
|
|
||||||
&::file-selector-button {
|
|
||||||
--tw-font-weight: var(--font-weight-medium);
|
|
||||||
font-weight: var(--font-weight-medium);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.file\:text-foreground {
|
|
||||||
&::file-selector-button {
|
|
||||||
color: var(--foreground);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.placeholder\:text-muted-foreground {
|
|
||||||
&::placeholder {
|
|
||||||
color: var(--muted-foreground);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.hover\:-translate-y-1 {
|
.hover\:-translate-y-1 {
|
||||||
&:hover {
|
&:hover {
|
||||||
@media (hover: hover) {
|
@media (hover: hover) {
|
||||||
|
|
@ -1641,33 +1648,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.focus-visible\:ring-1 {
|
|
||||||
&:focus-visible {
|
|
||||||
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
||||||
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.focus-visible\:ring-ring {
|
|
||||||
&:focus-visible {
|
|
||||||
--tw-ring-color: var(--ring);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.focus-visible\:outline-none {
|
|
||||||
&:focus-visible {
|
|
||||||
--tw-outline-style: none;
|
|
||||||
outline-style: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.disabled\:cursor-not-allowed {
|
|
||||||
&:disabled {
|
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.disabled\:opacity-50 {
|
|
||||||
&:disabled {
|
|
||||||
opacity: 50%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.sm\:inline-flex {
|
.sm\:inline-flex {
|
||||||
@media (width >= 40rem) {
|
@media (width >= 40rem) {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
|
|
@ -1730,12 +1710,6 @@
|
||||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.md\:text-sm {
|
|
||||||
@media (width >= 48rem) {
|
|
||||||
font-size: var(--text-sm);
|
|
||||||
line-height: var(--tw-leading, var(--text-sm--line-height));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.lg\:col-span-2 {
|
.lg\:col-span-2 {
|
||||||
@media (width >= 64rem) {
|
@media (width >= 64rem) {
|
||||||
grid-column: span 2 / span 2;
|
grid-column: span 2 / span 2;
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,18 @@ html {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tab-btn{
|
||||||
|
@apply rounded-lg border border-border px-4 py-2 text-sm transition;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-btn:hover{
|
||||||
|
@apply bg-secondary;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-btn.active{
|
||||||
|
@apply bg-primary text-primary-foreground;
|
||||||
|
}
|
||||||
|
|
||||||
@media (min-width: 768px) {
|
@media (min-width: 768px) {
|
||||||
html {
|
html {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue