update item views

This commit is contained in:
2025-03-03 15:54:53 +01:00
parent 803535daba
commit 4e296ca445
3 changed files with 337 additions and 15 deletions

View File

@@ -574,6 +574,10 @@ video {
position: relative;
}
.inset-0 {
inset: 0px;
}
.inset-y-0 {
top: 0px;
bottom: 0px;
@@ -596,6 +600,21 @@ video {
margin-right: auto;
}
.-mx-2 {
margin-left: -0.5rem;
margin-right: -0.5rem;
}
.-mx-4 {
margin-left: -1rem;
margin-right: -1rem;
}
.-mx-3 {
margin-left: -0.75rem;
margin-right: -0.75rem;
}
.mb-4 {
margin-bottom: 1rem;
}
@@ -616,6 +635,26 @@ video {
margin-top: 0.5rem;
}
.mt-4 {
margin-top: 1rem;
}
.mt-6 {
margin-top: 1.5rem;
}
.mb-2 {
margin-bottom: 0.5rem;
}
.mr-2 {
margin-right: 0.5rem;
}
.mr-4 {
margin-right: 1rem;
}
.block {
display: block;
}
@@ -632,6 +671,10 @@ video {
display: none;
}
.aspect-square {
aspect-ratio: 1 / 1;
}
.h-10 {
height: 2.5rem;
}
@@ -656,6 +699,18 @@ video {
height: 2rem;
}
.h-6 {
height: 1.5rem;
}
.h-\[460px\] {
height: 460px;
}
.h-full {
height: 100%;
}
.min-h-full {
min-height: 100%;
}
@@ -676,10 +731,30 @@ video {
width: 100%;
}
.w-1\/2 {
width: 50%;
}
.w-6 {
width: 1.5rem;
}
.w-1\/3 {
width: 33.333333%;
}
.max-w-7xl {
max-width: 80rem;
}
.max-w-2xl {
max-width: 42rem;
}
.max-w-6xl {
max-width: 72rem;
}
.flex-1 {
flex: 1 1 0%;
}
@@ -712,6 +787,15 @@ video {
justify-content: space-between;
}
.gap-x-6 {
-moz-column-gap: 1.5rem;
column-gap: 1.5rem;
}
.gap-y-10 {
row-gap: 2.5rem;
}
.space-x-4 > :not([hidden]) ~ :not([hidden]) {
--tw-space-x-reverse: 0;
margin-right: calc(1rem * var(--tw-space-x-reverse));
@@ -748,6 +832,10 @@ video {
border-radius: 0.375rem;
}
.rounded-full {
border-radius: 9999px;
}
.border {
border-width: 1px;
}
@@ -790,6 +878,41 @@ video {
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
}
.bg-blue-500 {
--tw-bg-opacity: 1;
background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));
}
.bg-gray-100 {
--tw-bg-opacity: 1;
background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
}
.bg-gray-300 {
--tw-bg-opacity: 1;
background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1));
}
.bg-red-500 {
--tw-bg-opacity: 1;
background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1));
}
.bg-yellow-500 {
--tw-bg-opacity: 1;
background-color: rgb(234 179 8 / var(--tw-bg-opacity, 1));
}
.bg-red-900 {
--tw-bg-opacity: 1;
background-color: rgb(127 29 29 / var(--tw-bg-opacity, 1));
}
.bg-blue-900 {
--tw-bg-opacity: 1;
background-color: rgb(30 58 138 / var(--tw-bg-opacity, 1));
}
.object-cover {
-o-object-fit: cover;
object-fit: cover;
@@ -838,6 +961,16 @@ video {
padding-bottom: 0.5rem;
}
.py-16 {
padding-top: 4rem;
padding-bottom: 4rem;
}
.py-8 {
padding-top: 2rem;
padding-bottom: 2rem;
}
.pb-3 {
padding-bottom: 0.75rem;
}
@@ -896,6 +1029,11 @@ video {
line-height: 1rem;
}
.text-2xl {
font-size: 1.5rem;
line-height: 2rem;
}
.font-bold {
font-weight: 700;
}
@@ -962,6 +1100,11 @@ video {
color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}
.text-gray-800 {
--tw-text-opacity: 1;
color: rgb(31 41 55 / var(--tw-text-opacity, 1));
}
.shadow-sm {
--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
@@ -1024,6 +1167,21 @@ video {
background-color: rgb(99 102 241 / var(--tw-bg-opacity, 1));
}
.hover\:bg-gray-400:hover {
--tw-bg-opacity: 1;
background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1));
}
.hover\:bg-gray-300:hover {
--tw-bg-opacity: 1;
background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1));
}
.hover\:bg-gray-800:hover {
--tw-bg-opacity: 1;
background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));
}
.hover\:text-indigo-500:hover {
--tw-text-opacity: 1;
color: rgb(99 102 241 / var(--tw-text-opacity, 1));
@@ -1087,6 +1245,10 @@ video {
outline-color: #4f46e5;
}
.group:hover .group-hover\:opacity-75 {
opacity: 0.75;
}
@media (min-width: 640px) {
.sm\:static {
position: static;
@@ -1121,11 +1283,25 @@ video {
max-width: 24rem;
}
.sm\:grid-cols-2 {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.sm\:px-8 {
padding-left: 2rem;
padding-right: 2rem;
}
.sm\:px-6 {
padding-left: 1.5rem;
padding-right: 1.5rem;
}
.sm\:py-24 {
padding-top: 6rem;
padding-bottom: 6rem;
}
.sm\:pr-0 {
padding-right: 0px;
}
@@ -1145,16 +1321,40 @@ video {
width: 12rem;
}
.md\:flex-1 {
flex: 1 1 0%;
}
.md\:grid-cols-2 {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.md\:flex-row {
flex-direction: row;
}
}
@media (min-width: 1024px) {
.lg\:aspect-auto {
aspect-ratio: auto;
}
.lg\:h-80 {
height: 20rem;
}
.lg\:max-w-7xl {
max-width: 80rem;
}
.lg\:grid-cols-3 {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.lg\:grid-cols-4 {
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.lg\:px-8 {
padding-left: 2rem;
padding-right: 2rem;
@@ -1165,6 +1365,11 @@ video {
.xl\:grid-cols-4 {
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.xl\:gap-x-8 {
-moz-column-gap: 2rem;
column-gap: 2rem;
}
}
@media (prefers-color-scheme: dark) {
@@ -1178,6 +1383,41 @@ video {
background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));
}
.dark\:bg-blue-700 {
--tw-bg-opacity: 1;
background-color: rgb(29 78 216 / var(--tw-bg-opacity, 1));
}
.dark\:bg-gray-200 {
--tw-bg-opacity: 1;
background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));
}
.dark\:bg-gray-600 {
--tw-bg-opacity: 1;
background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1));
}
.dark\:bg-gray-700 {
--tw-bg-opacity: 1;
background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));
}
.dark\:bg-red-700 {
--tw-bg-opacity: 1;
background-color: rgb(185 28 28 / var(--tw-bg-opacity, 1));
}
.dark\:bg-yellow-700 {
--tw-bg-opacity: 1;
background-color: rgb(161 98 7 / var(--tw-bg-opacity, 1));
}
.dark\:bg-red-600 {
--tw-bg-opacity: 1;
background-color: rgb(220 38 38 / var(--tw-bg-opacity, 1));
}
.dark\:text-gray-300 {
--tw-text-opacity: 1;
color: rgb(209 213 219 / var(--tw-text-opacity, 1));
@@ -1188,6 +1428,21 @@ video {
color: rgb(17 24 39 / var(--tw-text-opacity, 1));
}
.dark\:text-white {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}
.dark\:hover\:bg-gray-600:hover {
--tw-bg-opacity: 1;
background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1));
}
.dark\:hover\:bg-gray-700:hover {
--tw-bg-opacity: 1;
background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));
}
.dark\:focus\:border-blue-500:focus {
--tw-border-opacity: 1;
border-color: rgb(59 130 246 / var(--tw-border-opacity, 1));

View File

@@ -1,10 +1,67 @@
{{ template "header.html" . }}
<div class="bg-gray-100 dark:bg-gray-800 py-8">
<div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex flex-col md:flex-row -mx-4">
<div class="md:flex-1 px-4">
<div class="h-[460px] rounded-lg bg-gray-300 dark:bg-gray-700 mb-4">
<img class="w-full h-full object-cover" src="/{{ .data.shopItem.Image}}" alt="Product Image">
</div>
<div class="flex -mx-2 mb-4">
<div class="w-1/3 px-2">
<button class="w-full bg-gray-900 dark:bg-gray-600 text-white py-2 px-4 rounded-full font-bold hover:bg-gray-800 dark:hover:bg-gray-700">Add to Cart</button>
</div>
{{ if .loggedIn }}
<div class="w-1/3 px-2">
<a href="{{ .data.shopItem.ID }}/edit"><button class="w-full bg-blue-900 dark:bg-gray-600 text-white py-2 px-4 rounded-full font-bold hover:bg-gray-800 dark:hover:bg-gray-700">Edit</button></a>
</div>
<div class="w-1/3 px-2">
<a href="{{ .data.shopItem.ID }}/delete"><button class="w-full bg-red-900 dark:bg-red-600 text-white py-2 px-4 rounded-full font-bold hover:bg-gray-800 dark:hover:bg-gray-700">Delete</button></a>
</div>
{{ end }}
</div>
</div>
<div class="md:flex-1 px-4">
<h2 class="text-2xl font-bold text-gray-800 dark:text-white mb-2">{{ .data.shopItem.Name }}</h2>
<p class="text-gray-600 dark:text-gray-300 text-sm mb-4">
{{ .data.shopItem.Abstract }}
</p>
<div class="flex mb-4">
<div class="mr-4">
<span class="font-bold text-gray-700 dark:text-gray-300">Price:</span>
<span class="text-gray-600 dark:text-gray-300">{{ .data.shopItem.Price }}€</span>
</div>
</div>
<!--
<div class="mb-4">
<span class="font-bold text-gray-700 dark:text-gray-300">Select Size:</span>
<div class="flex items-center mt-2">
<button class="bg-gray-300 dark:bg-gray-700 text-gray-700 dark:text-white py-2 px-4 rounded-full font-bold mr-2 hover:bg-gray-400 dark:hover:bg-gray-600">Black/White</button>
<button class="bg-gray-300 dark:bg-gray-700 text-gray-700 dark:text-white py-2 px-4 rounded-full font-bold mr-2 hover:bg-gray-400 dark:hover:bg-gray-600">Colored</button>
<button class="bg-gray-300 dark:bg-gray-700 text-gray-700 dark:text-white py-2 px-4 rounded-full font-bold mr-2 hover:bg-gray-400 dark:hover:bg-gray-600">Colored Covering Page</button>
</div>
</div>
-->
<div>
<span class="font-bold text-gray-700 dark:text-gray-300">Product Description:</span>
<p class="text-gray-600 dark:text-gray-300 text-sm mt-2">
{{ .data.shopItem.Description }}
</p>
</div>
</div>
</div>
</div>
</div>
<!--
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4">
<div class="bg-gray-200 rounded m-4 p-4">
<div class="relative w-full md:w-48 mb-4 flex rounded-lg justify-center items-center">
<div class="relative flex rounded-lg justify-center items-center">
<img src="/{{ .data.shopItem.Image }}" alt="shopping image"
class="object-cover w-full h-48 md:h-full rounded">
class="object-cover items-center justify-center rounded">
</div>
<h3 class="text-lg">{{ .data.shopItem.Name }}</h3>
<i class="text-xs">{{ .data.shopItem.Abstract }}</i>
@@ -19,5 +76,5 @@
</div>
</div>
-->
{{ template "footer.html" . }}

View File

@@ -1,17 +1,27 @@
<div class="bg-white">
<div class="mx-auto max-w-2xl px-4 py-16 sm:px-6 sm:py-24 lg:max-w-7xl lg:px-8">
<h2 class="text-2xl font-bold tracking-tight text-gray-900">Available Zines</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4">
<div class="mt-6 grid grid-cols-1 gap-x-6 gap-y-10 sm:grid-cols-2 lg:grid-cols-4 xl:gap-x-8">
{{ range .data.shopItems }}
<a href="/shopitems/{{ .ID }}">
<div class="bg-gray-200 rounded m-4 p-4">
<div class="relative w-full md:w-48 mb-4 flex rounded-lg justify-center items-center">
<img src="/{{ .Image }}" alt="shopping image"
class="object-cover w-full h-48 md:h-full rounded">
</div>
<h3 class="text-lg">{{ .Name }}</h3>
<i class="text-xs">{{ .Abstract }}</i>
<p class="">Price: {{ .Price }}</>
</div>
<div class="group relative">
<img src="/{{ .Image }}" alt="Product Image" class="aspect-square w-full rounded-md bg-gray-200 object-cover group-hover:opacity-75 lg:aspect-auto lg:h-80">
<div class="mt-4 flex justify-between">
<div>
<h3 class="text-sm text-gray-700">
<a href="/shopitems/{{ .ID }}">
<span aria-hidden="true" class="absolute inset-0"></span>
{{ .Name }}
</a>
</h3>
<!--<p class="mt-1 text-sm text-gray-500">{{ .Abstract }}</p>-->
</div>
<p class="text-sm font-medium text-gray-900">{{ .Price }}€</p>
</div>
</div>
{{ end }}
</div>
</div>
</div>
</div>