Add additional services system (v0.5.0)
All checks were successful
Create Release Package / build-release (push) Successful in 1m0s

- Service CPT with pricing types: Included, Per Booking, Per Night
- ServiceCategory taxonomy with default categories
- Booking-services integration with service selector
- Real-time price calculation based on nights and quantity
- Services total and grand total display in booking admin

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-31 15:19:56 +01:00
parent aab3a4d1aa
commit 05f24fdec7
10 changed files with 1684 additions and 46 deletions

View File

@@ -1088,3 +1088,208 @@
color: #646970;
margin-top: 5px;
}
/* ==========================================================================
Services Styles
========================================================================== */
/* Services List in Admin */
.column-pricing_type,
.column-service_status {
width: 120px;
}
/* Service Status Badges */
.bnb-service-status {
display: inline-block;
padding: 3px 8px;
border-radius: 3px;
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
}
.bnb-service-status-active {
background: #d4edda;
color: #155724;
}
.bnb-service-status-inactive {
background: #f6f7f7;
color: #646970;
}
.bnb-service-included {
color: #00a32a;
font-weight: 600;
}
/* Service Pricing Meta Box */
.bnb-service-pricing-type fieldset label {
display: block;
margin-bottom: 15px;
}
.bnb-service-pricing-type fieldset label input {
margin-right: 8px;
}
.bnb-service-pricing-type fieldset p.description {
margin-left: 24px;
margin-top: 4px;
}
/* ==========================================================================
Booking Services Selector
========================================================================== */
.bnb-services-selector {
padding: 10px 0;
}
.bnb-services-list {
margin: 15px 0;
}
.bnb-service-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 12px 15px;
background: #f6f7f7;
border: 1px solid #c3c4c7;
border-radius: 4px;
margin-bottom: 8px;
transition: background 0.15s ease, border-color 0.15s ease;
}
.bnb-service-item:hover {
background: #f0f6fc;
}
.bnb-service-item.selected {
background: #d4edda;
border-color: #c3e6cb;
}
.bnb-service-checkbox {
display: flex;
align-items: center;
gap: 10px;
cursor: pointer;
flex: 1;
}
.bnb-service-checkbox input[type="checkbox"] {
margin: 0;
}
.bnb-service-name {
font-weight: 600;
color: #1d2327;
}
.bnb-service-details {
display: flex;
align-items: center;
gap: 15px;
flex-shrink: 0;
}
.bnb-service-price-label {
color: #135e96;
font-weight: 500;
}
.bnb-service-included-badge {
display: inline-block;
padding: 2px 8px;
background: #d4edda;
color: #155724;
border-radius: 3px;
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
}
.bnb-service-quantity {
display: flex;
align-items: center;
gap: 5px;
}
.bnb-service-quantity label {
display: flex;
align-items: center;
gap: 5px;
font-size: 12px;
color: #646970;
}
.bnb-service-qty-input {
width: 50px !important;
}
.bnb-service-line-total {
color: #1d2327;
}
.bnb-service-total-value {
color: #135e96;
}
/* Services Total */
.bnb-services-total {
display: flex;
justify-content: flex-end;
align-items: center;
gap: 15px;
padding: 15px;
background: #f0f6fc;
border: 1px solid #c3c4c7;
border-radius: 4px;
margin-top: 15px;
}
.bnb-services-total strong {
color: #1d2327;
}
#bnb-services-total-amount {
font-size: 16px;
font-weight: 600;
color: #135e96;
}
/* No Services Message */
.bnb-no-services-message {
padding: 20px;
text-align: center;
color: #646970;
font-style: italic;
}
.bnb-no-services-message a {
margin-left: 5px;
}
/* Booking Pricing with Services */
.bnb-booking-services-summary {
padding: 8px 12px;
background: #d4edda;
border: 1px solid #c3e6cb;
border-radius: 4px;
color: #155724;
}
.bnb-booking-grand-total {
padding: 12px 15px;
background: #f0f6fc;
border: 1px solid #c3c4c7;
border-radius: 4px;
}
.bnb-booking-grand-total strong {
font-size: 18px;
color: #135e96;
}