Historia cen: - Tabela wp_price_history z WP Cronem dziennym (snapshot cen) - AJAX endpoint apartamenty_get_price_history (zabezpieczony nonce) - Popup "Historia cen" w widgecie — vanilla JS, modal zgodny z projektem Jawnosc cen: - Endpointy /ceny-mieszkan.xml + /dane-gov-pl.xml (XSD-compliant) - Pliki MD5 dla obu XML - Strona admina: Narzedzia -> Jawnosc Cen z URL-ami do Ministerstwa - Transient cache 1h z inwalidacja przez cron Dokumentacja: docs/readme.md + docs/jawnosc-cen.md Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
389 lines
7.2 KiB
SCSS
389 lines
7.2 KiB
SCSS
.apartaments {
|
|
.apartament-card {
|
|
&__wrapper {
|
|
position: relative;
|
|
width: 100%;
|
|
max-width: 1264px;
|
|
margin: 0 auto;
|
|
padding: 93px 126px 26px;
|
|
border: 4px solid #192c44;
|
|
|
|
@media (max-width: 992px) {
|
|
padding: 80px 70px 20px;
|
|
}
|
|
@media (max-width: 768px) {
|
|
padding: 0;
|
|
border: 0;
|
|
}
|
|
.apartament-card__title {
|
|
background: #192c44;
|
|
|
|
@media (min-width: 769px) {
|
|
position: absolute;
|
|
left: 50%;
|
|
top: 0;
|
|
transform: translateX(-50%);
|
|
}
|
|
@media (max-width: 768px) {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin: 0 25px 25px;
|
|
}
|
|
h2 {
|
|
color: #ffffff;
|
|
font-family: 'Barlow', sans-serif;
|
|
font-weight: 500;
|
|
font-size: 32px;
|
|
line-height: 1.3;
|
|
text-align: center;
|
|
margin: 0;
|
|
padding: 5px 70px 8px;
|
|
min-width: max-content;
|
|
|
|
@media (max-width: 768px) {
|
|
font-size: 24px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.apartament-card__gallery {
|
|
position: relative;
|
|
line-height: 0;
|
|
margin-bottom: 17px;
|
|
|
|
@media (max-width: 768px) {
|
|
margin-bottom: 26px;
|
|
}
|
|
|
|
.swiper-button-prev {
|
|
left: 0;
|
|
transform: translateX(calc(-100% - 30px));
|
|
|
|
width: 43px;
|
|
height: 119px;
|
|
|
|
@media (max-width: 768px) {
|
|
width: 27px;
|
|
height: 70px;
|
|
transform: none;
|
|
left: 8px;
|
|
|
|
svg {
|
|
path {
|
|
fill: #fff;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.swiper-button-next {
|
|
right: 0;
|
|
transform: translateX(calc(100% + 30px));
|
|
|
|
width: 43px;
|
|
height: 119px;
|
|
|
|
@media (max-width: 768px) {
|
|
width: 27px;
|
|
height: 70px;
|
|
transform: none;
|
|
right: 8px;
|
|
|
|
svg {
|
|
path {
|
|
fill: #fff;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
object-position: center;
|
|
}
|
|
}
|
|
|
|
.apartament-card__info {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 26px;
|
|
margin-bottom: 15px;
|
|
|
|
@media (max-width: 768px) {
|
|
grid-template-columns: 1fr;
|
|
margin-left: 25px;
|
|
margin-right: 25px;
|
|
}
|
|
|
|
.apartament-card__info_col1 {
|
|
border: 4px solid #192c44;
|
|
padding: 25px 10% 10px;
|
|
|
|
table,
|
|
tr,
|
|
td {
|
|
border: none;
|
|
padding: 0;
|
|
margin: 0;
|
|
background: transparent;
|
|
}
|
|
|
|
table {
|
|
tr {
|
|
&.apartament-card__status {
|
|
td {
|
|
span {
|
|
position: relative;
|
|
display: inline-block;
|
|
|
|
&::before {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0 -8px;
|
|
z-index: -1;
|
|
}
|
|
|
|
&.available {
|
|
&::before {
|
|
background: #c1e8a8;
|
|
}
|
|
}
|
|
&.reserved {
|
|
&::before {
|
|
background: #f4eba8;
|
|
}
|
|
}
|
|
&.sold {
|
|
&::before {
|
|
background: #f54040;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
&.apartament-card__price-history {
|
|
.apartament-card__info_table-value {
|
|
font-weight: 600;
|
|
font-size: 14px;
|
|
line-height: 26px;
|
|
|
|
display: inline-flex;
|
|
width: 100%;
|
|
align-items: center;
|
|
gap: 7px;
|
|
padding-top: 10px;
|
|
cursor: pointer;
|
|
|
|
svg {
|
|
margin-bottom: 4px;
|
|
}
|
|
}
|
|
}
|
|
td {
|
|
width: 50%;
|
|
|
|
color: #192c44;
|
|
font-family: 'Barlow', sans-serif;
|
|
font-weight: 400;
|
|
font-size: 22px;
|
|
line-height: 1.2;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.apartament-card__info_col2 {
|
|
border: 4px solid #192c44;
|
|
padding: 25px 10% 10px;
|
|
align-content: center;
|
|
|
|
.card__info_col2__img {
|
|
margin-bottom: 40px;
|
|
|
|
img {
|
|
width: 100%;
|
|
max-width: fit-content;
|
|
}
|
|
}
|
|
.card__info_col2__data {
|
|
a {
|
|
color: #192c44;
|
|
font-family: 'Barlow', sans-serif;
|
|
font-weight: 600;
|
|
font-size: 14px;
|
|
line-height: 1.8;
|
|
|
|
display: inline-flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
gap: 7px;
|
|
width: 100%;
|
|
cursor: pointer;
|
|
|
|
svg {
|
|
margin-bottom: 4px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.apartament-card__desc {
|
|
@media (max-width: 768px) {
|
|
margin-left: 25px;
|
|
margin-right: 25px;
|
|
}
|
|
p {
|
|
color: #192c44;
|
|
font-family: 'Barlow', sans-serif;
|
|
font-weight: 500;
|
|
font-size: 20px;
|
|
line-height: 1.05;
|
|
}
|
|
|
|
ul {
|
|
padding: 0;
|
|
margin: 0;
|
|
list-style: none;
|
|
|
|
li {
|
|
position: relative;
|
|
padding-left: 25px;
|
|
|
|
color: #192c44;
|
|
font-family: 'Barlow', sans-serif;
|
|
font-weight: 400;
|
|
font-size: 20px;
|
|
line-height: 30px;
|
|
|
|
&::before {
|
|
content: '';
|
|
position: absolute;
|
|
left: 0;
|
|
top: 10px;
|
|
width: 9px;
|
|
height: 13px;
|
|
background-image: url('/wp-content/uploads/2026/03/Polygon-2.svg');
|
|
background-position: center;
|
|
background-size: contain;
|
|
background-repeat: no-repeat;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Historia cen — popup overlay
|
|
.price-history-overlay {
|
|
display: none;
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 99999;
|
|
background: rgba(25, 44, 68, 0.55);
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 20px;
|
|
|
|
&.is-open {
|
|
display: flex;
|
|
}
|
|
}
|
|
|
|
.price-history-modal {
|
|
position: relative;
|
|
background: #fff;
|
|
border: 4px solid #192c44;
|
|
padding: 32px 36px 28px;
|
|
max-width: 560px;
|
|
width: 100%;
|
|
font-family: 'Barlow', sans-serif;
|
|
color: #192c44;
|
|
|
|
@media (max-width: 600px) {
|
|
padding: 24px 20px 20px;
|
|
}
|
|
|
|
&__close {
|
|
position: absolute;
|
|
top: 14px;
|
|
right: 14px;
|
|
background: none;
|
|
border: 2px solid #192c44;
|
|
width: 30px;
|
|
height: 30px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
cursor: pointer;
|
|
padding: 0;
|
|
line-height: 1;
|
|
}
|
|
|
|
&__title {
|
|
font-size: 22px;
|
|
font-weight: 700;
|
|
margin: 0 0 18px;
|
|
padding-right: 40px;
|
|
color: #192c44;
|
|
}
|
|
|
|
&__current {
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
&__row {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
font-size: 18px;
|
|
line-height: 1.5;
|
|
color: #192c44;
|
|
|
|
&--bold {
|
|
font-weight: 700;
|
|
}
|
|
}
|
|
|
|
&__val {
|
|
text-align: right;
|
|
}
|
|
|
|
&__table-wrap {
|
|
border-top: 1px solid #192c44;
|
|
padding-top: 12px;
|
|
margin-top: 4px;
|
|
max-height: 40vh;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
&__table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
|
|
tr {
|
|
border: none;
|
|
background: transparent;
|
|
|
|
td {
|
|
padding: 4px 0;
|
|
font-size: 15px;
|
|
color: #192c44;
|
|
font-family: 'Barlow', sans-serif;
|
|
font-weight: 400;
|
|
border: none;
|
|
background: transparent;
|
|
|
|
&:last-child {
|
|
text-align: right;
|
|
}
|
|
|
|
&:nth-child(2) {
|
|
text-align: center;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|