feat: add product comparison page

This commit is contained in:
George Birikorang 2025-08-26 01:08:37 -04:00
parent a3689ca143
commit ec844c6c88
12 changed files with 2108 additions and 86 deletions

View file

@ -612,6 +612,14 @@ video {
}
}
.pointer-events-none {
pointer-events: none;
}
.visible {
visibility: visible;
}
.absolute {
position: absolute;
}
@ -624,6 +632,11 @@ video {
inset: 0px;
}
.inset-y-0 {
top: 0px;
bottom: 0px;
}
.left-0 {
left: 0px;
}
@ -652,6 +665,10 @@ video {
top: 20rem;
}
.right-0 {
right: 0px;
}
.z-10 {
z-index: 10;
}
@ -718,6 +735,10 @@ video {
margin-bottom: 0.5rem;
}
.mb-3 {
margin-bottom: 0.75rem;
}
.mb-4 {
margin-bottom: 1rem;
}
@ -750,6 +771,14 @@ video {
margin-top: 1.5rem;
}
.ml-8 {
margin-left: 2rem;
}
.mt-12 {
margin-top: 3rem;
}
.box-border {
box-sizing: border-box;
}
@ -810,6 +839,14 @@ video {
height: 1rem;
}
.h-40 {
height: 10rem;
}
.h-48 {
height: 12rem;
}
.h-5 {
height: 1.25rem;
}
@ -870,6 +907,10 @@ video {
height: 100vh;
}
.h-64 {
height: 16rem;
}
.min-h-\[64px\] {
min-height: 64px;
}
@ -958,6 +999,10 @@ video {
width: 100%;
}
.w-64 {
width: 16rem;
}
.max-w-2xl {
max-width: 42rem;
}
@ -990,6 +1035,10 @@ video {
max-width: 24rem;
}
.max-w-xs {
max-width: 20rem;
}
.flex-1 {
flex: 1 1 0%;
}
@ -1020,6 +1069,12 @@ video {
resize: none;
}
.appearance-none {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.grid-cols-1 {
grid-template-columns: repeat(1, minmax(0, 1fr));
}
@ -1048,6 +1103,10 @@ video {
align-items: center;
}
.items-stretch {
align-items: stretch;
}
.justify-end {
justify-content: flex-end;
}
@ -1206,6 +1265,10 @@ video {
border-bottom-width: 1px;
}
.border-l {
border-left-width: 1px;
}
.border-t {
border-top-width: 1px;
}
@ -1219,6 +1282,16 @@ video {
border-color: rgb(0 0 0 / 0.1);
}
.border-gray-100 {
--tw-border-opacity: 1;
border-color: rgb(243 244 246 / var(--tw-border-opacity, 1));
}
.border-gray-200 {
--tw-border-opacity: 1;
border-color: rgb(229 231 235 / var(--tw-border-opacity, 1));
}
.border-gray-300 {
--tw-border-opacity: 1;
border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));
@ -1258,6 +1331,11 @@ video {
--tw-border-opacity: 0.2;
}
.bg-amber-600 {
--tw-bg-opacity: 1;
background-color: rgb(217 119 6 / var(--tw-bg-opacity, 1));
}
.bg-black {
--tw-bg-opacity: 1;
background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1));
@ -1275,7 +1353,7 @@ video {
.bg-floral-white {
--tw-bg-opacity: 1;
background-color: rgb(251 249 243 / var(--tw-bg-opacity, 1));
background-color: rgb(252 248 243 / var(--tw-bg-opacity, 1));
}
.bg-gray-100 {
@ -1350,6 +1428,14 @@ video {
--tw-bg-opacity: 0.7;
}
.bg-center {
background-position: center;
}
.bg-no-repeat {
background-repeat: no-repeat;
}
.object-contain {
-o-object-fit: contain;
object-fit: contain;
@ -1478,6 +1564,10 @@ video {
padding-right: 3rem;
}
.pr-6 {
padding-right: 1.5rem;
}
.pt-12 {
padding-top: 3rem;
}
@ -1502,6 +1592,14 @@ video {
padding-top: 2rem;
}
.pr-10 {
padding-right: 2.5rem;
}
.pr-3 {
padding-right: 0.75rem;
}
.text-left {
text-align: left;
}
@ -1518,10 +1616,6 @@ video {
font-family: Playfair Display, serif;
}
.font-poppins {
font-family: Poppins, sans-serif;
}
.font-sans {
font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}
@ -1706,10 +1800,25 @@ video {
color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}
.text-gray-400 {
--tw-text-opacity: 1;
color: rgb(156 163 175 / var(--tw-text-opacity, 1));
}
.text-gray-200 {
--tw-text-opacity: 1;
color: rgb(229 231 235 / var(--tw-text-opacity, 1));
}
.text-opacity-90 {
--tw-text-opacity: 0.9;
}
.underline {
-webkit-text-decoration-line: underline;
text-decoration-line: underline;
}
.opacity-0 {
opacity: 0;
}
@ -1799,6 +1908,12 @@ video {
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.hover\:scale-105:hover {
--tw-scale-x: 1.05;
--tw-scale-y: 1.05;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.hover\:scale-110:hover {
--tw-scale-x: 1.1;
--tw-scale-y: 1.1;
@ -1835,6 +1950,10 @@ video {
background-color: rgb(184 135 63 / var(--tw-bg-opacity, 1));
}
.hover\:bg-uc-gold\/90:hover {
background-color: rgb(184 135 63 / 0.9);
}
.hover\:bg-opacity-80:hover {
--tw-bg-opacity: 0.8;
}
@ -1843,6 +1962,20 @@ video {
--tw-bg-opacity: 0.9;
}
.hover\:bg-gradient-to-r:hover {
background-image: linear-gradient(to right, var(--tw-gradient-stops));
}
.hover\:from-amber-500:hover {
--tw-gradient-from: #f59e0b var(--tw-gradient-from-position);
--tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.hover\:to-amber-600:hover {
--tw-gradient-to: #d97706 var(--tw-gradient-to-position);
}
.hover\:text-black:hover {
--tw-text-opacity: 1;
color: rgb(0 0 0 / var(--tw-text-opacity, 1));
@ -1853,11 +1986,21 @@ video {
color: rgb(75 85 99 / var(--tw-text-opacity, 1));
}
.hover\:text-gray-800:hover {
--tw-text-opacity: 1;
color: rgb(31 41 55 / var(--tw-text-opacity, 1));
}
.hover\:text-white:hover {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}
.hover\:text-gray-200:hover {
--tw-text-opacity: 1;
color: rgb(229 231 235 / var(--tw-text-opacity, 1));
}
.hover\:underline:hover {
-webkit-text-decoration-line: underline;
text-decoration-line: underline;
@ -1881,11 +2024,25 @@ video {
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.hover\:shadow-amber-200\/50:hover {
--tw-shadow-color: rgb(253 230 138 / 0.5);
--tw-shadow: var(--tw-shadow-colored);
}
.hover\:backdrop-blur-sm:hover {
--tw-backdrop-blur: blur(4px);
backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}
.focus\:border-black:focus {
--tw-border-opacity: 1;
border-color: rgb(0 0 0 / var(--tw-border-opacity, 1));
}
.focus\:border-transparent:focus {
border-color: transparent;
}
.focus\:border-uc-gold:focus {
--tw-border-opacity: 1;
border-color: rgb(184 135 63 / var(--tw-border-opacity, 1));
@ -1896,6 +2053,17 @@ video {
outline-offset: 2px;
}
.focus\:ring-2:focus {
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus\:ring-uc-gold:focus {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(184 135 63 / var(--tw-ring-opacity, 1));
}
.focus-visible\:ring-2:focus-visible {
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
@ -1907,6 +2075,12 @@ video {
--tw-ring-color: rgb(184 135 63 / var(--tw-ring-opacity, 1));
}
.active\:scale-95:active {
--tw-scale-x: .95;
--tw-scale-y: .95;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.group:hover .group-hover\:scale-105 {
--tw-scale-x: 1.05;
--tw-scale-y: 1.05;