Adds comprehensive service detail views and localization

Implements new service detail tabs for prices, duration, and rules

Extends localization support for Danish and English translations
Adds dynamic view components for managing service-specific configurations
Introduces flexible pricing, duration, and booking rule management

Enhances service management with granular configuration options
This commit is contained in:
Janus C. H. Knudsen 2026-01-17 01:21:00 +01:00
parent e9f3639c7c
commit 5e3811347c
11 changed files with 1018 additions and 13 deletions

View file

@ -241,6 +241,106 @@
"duration": "Duration",
"price": "Price",
"serviceCount": "Service count"
},
"detail": {
"back": "Back to services",
"save": "Save changes",
"tabs": {
"general": "General",
"prices": "Prices",
"duration": "Duration",
"employees": "Employees",
"addons": "Add-ons",
"rules": "Rules"
},
"general": {
"basic": "Basic",
"serviceName": "Service name",
"category": "Category",
"calendarColor": "Calendar color",
"isActive": "Service active",
"internalNotes": "Internal notes",
"bookingType": "Booking type",
"canBookAsMain": "Can be booked as main service",
"canBookAsMainDesc": "Shown in service list and can be booked independently",
"canBookAsAddon": "Can be booked as add-on",
"canBookAsAddonDesc": "Can be added as extra service to other services",
"onlineBooking": "Online booking",
"showInOnlineBooking": "Show in online booking",
"showInOnlineBookingDesc": "Visible to customers in online booking",
"isFeatured": "Featured service",
"isFeaturedDesc": "Shown at top with featured styling",
"description": "Description",
"image": "Image",
"uploadImage": "+ Upload image"
},
"prices": {
"priceStructure": "Price structure",
"simplePrice": "Simple price",
"matrixPrice": "Matrix price",
"price": "Price",
"level": "Level",
"shortHair": "Short hair",
"mediumHair": "Medium hair",
"longHair": "Long hair",
"extraLongHair": "Extra long",
"addLevel": "Add level or hair length",
"economy": "Economy",
"vatRate": "VAT rate",
"productCost": "Product cost",
"commission": "Commission",
"discounts": "Discounts & Loyalty",
"memberDiscount": "Member discount (10%)",
"giftCardPayment": "Can be paid with gift card",
"loyaltyPoints": "Earn loyalty points"
},
"duration": {
"durationVariants": "Duration variants",
"addVariant": "Add variant",
"bufferTimes": "Buffer times",
"bufferBefore": "Buffer before appointment",
"bufferAfter": "Buffer after appointment",
"cleanupTime": "Cleanup time",
"minutes": "min"
},
"rules": {
"bookingRules": "Booking rules",
"minNotice": "Minimum notice",
"maxAdvanceBooking": "Max. advance booking",
"cancellationDeadline": "Cancellation deadline",
"noShowFee": "No-show fee",
"requirements": "Requirements & Preparation",
"requiresConsultation": "Consultation required",
"requiresConsultationDesc": "Customer must have consultation before first booking",
"requiresPatchTest": "Patch test required",
"requiresPatchTestDesc": "Allergy test 48 hours before color treatment (new customers)",
"ageRestriction": "Age restriction",
"ageRestrictionDesc": "Minimum age for booking this service",
"onlineBookingSettings": "Online booking settings",
"showInOnlineBooking": "Show in online booking",
"allowEmployeeSelection": "Allow employee selection",
"showPrice": "Show price",
"showDuration": "Show duration"
},
"header": {
"duration": "min duration",
"fromPrice": "from price",
"employees": "employees",
"bookingsThisYear": "bookings this year",
"active": "Active",
"inactive": "Inactive"
},
"categoryDrawer": {
"title": "Create category",
"name": "Category name",
"description": "Description",
"visibilitySection": "Visibility",
"showInBooking": "Category should be shown in online booking",
"showInBookingDescription": "Category will still be visible here in the system",
"timePeriod": "Should only be visible in the following time period",
"timePeriodHint": "Leave fields blank for no time restriction",
"save": "Save category"
}
}
},
"employees": {