feat(time-blocks): Add comprehensive time blocking system with contracts
- Add TimeBlock and Holiday models with recurrence support (one-time, weekly, monthly, yearly, holiday) - Implement business-level and resource-level blocking with hard/soft block types - Add multi-select holiday picker for bulk holiday blocking - Add calendar overlay visualization with distinct colors: - Business blocks: Red (hard) / Yellow (soft) - Resource blocks: Purple (hard) / Cyan (soft) - Add month view resource indicators showing 1/n width per resource - Add yearly calendar view for block overview - Add My Availability page for staff self-service - Add contracts module with templates, signing flow, and PDF generation - Update scheduler with click-to-day navigation in week view 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -92,6 +92,7 @@
|
||||
"platformSettings": "Platform Settings",
|
||||
"tickets": "Tickets",
|
||||
"help": "Help",
|
||||
"contracts": "Contracts",
|
||||
"platformGuide": "Platform Guide",
|
||||
"ticketingHelp": "Ticketing System",
|
||||
"apiDocs": "API Docs",
|
||||
@@ -409,6 +410,106 @@
|
||||
"sendReply": "Send Reply",
|
||||
"ticketClosedNoReply": "This ticket is closed. If you need further assistance, please open a new support request."
|
||||
},
|
||||
"contracts": {
|
||||
"title": "Contracts",
|
||||
"description": "Manage contract templates and sent contracts",
|
||||
"templates": "Templates",
|
||||
"allContracts": "All Contracts",
|
||||
"createTemplate": "Create Template",
|
||||
"createContract": "Create Contract",
|
||||
"editTemplate": "Edit Template",
|
||||
"viewContract": "View Contract",
|
||||
"noTemplates": "No contract templates yet",
|
||||
"noContracts": "No contracts yet",
|
||||
"templateName": "Template Name",
|
||||
"templateDescription": "Description",
|
||||
"content": "Content",
|
||||
"scope": {
|
||||
"label": "Scope",
|
||||
"customer": "Customer Agreement",
|
||||
"appointment": "Appointment Agreement"
|
||||
},
|
||||
"status": {
|
||||
"label": "Status",
|
||||
"draft": "Draft",
|
||||
"active": "Active",
|
||||
"archived": "Archived",
|
||||
"pending": "Pending Signature",
|
||||
"signed": "Signed",
|
||||
"expired": "Expired",
|
||||
"voided": "Voided"
|
||||
},
|
||||
"expiresAfterDays": "Expires After (Days)",
|
||||
"expiresAfterDaysHint": "Leave empty for no expiration",
|
||||
"versionNotes": "Version Notes",
|
||||
"versionNotesPlaceholder": "What changed in this version?",
|
||||
"services": "Applicable Services",
|
||||
"servicesHint": "Leave empty to apply to all services",
|
||||
"customer": "Customer",
|
||||
"appointment": "Appointment",
|
||||
"service": "Service",
|
||||
"sentAt": "Sent At",
|
||||
"signedAt": "Signed At",
|
||||
"expiresAt": "Expires At",
|
||||
"actions": {
|
||||
"send": "Send Contract",
|
||||
"resend": "Resend Contract",
|
||||
"void": "Void Contract",
|
||||
"duplicate": "Duplicate Template",
|
||||
"preview": "Preview",
|
||||
"delete": "Delete"
|
||||
},
|
||||
"sendContract": {
|
||||
"title": "Send Contract",
|
||||
"selectCustomer": "Select Customer",
|
||||
"selectAppointment": "Select Appointment (Optional)",
|
||||
"selectService": "Select Service (Optional)",
|
||||
"send": "Send",
|
||||
"success": "Contract sent successfully",
|
||||
"error": "Failed to send contract"
|
||||
},
|
||||
"voidContract": {
|
||||
"title": "Void Contract",
|
||||
"reason": "Reason for voiding",
|
||||
"reasonPlaceholder": "Why is this contract being voided?",
|
||||
"confirm": "Void Contract",
|
||||
"success": "Contract voided successfully",
|
||||
"error": "Failed to void contract"
|
||||
},
|
||||
"preview": {
|
||||
"title": "Preview Contract",
|
||||
"sampleData": "Using sample data for preview"
|
||||
},
|
||||
"signing": {
|
||||
"title": "Sign Contract",
|
||||
"businessName": "{{businessName}}",
|
||||
"contractFor": "Contract for {{customerName}}",
|
||||
"pleaseReview": "Please review and sign this contract",
|
||||
"signerName": "Your Full Name",
|
||||
"signerEmail": "Your Email",
|
||||
"signatureLabel": "Sign Below",
|
||||
"signaturePlaceholder": "Draw your signature here",
|
||||
"clearSignature": "Clear",
|
||||
"agreeToTerms": "I agree to the terms and conditions",
|
||||
"submitSignature": "Submit Signature",
|
||||
"submitting": "Submitting...",
|
||||
"success": "Contract signed successfully!",
|
||||
"error": "Failed to sign contract",
|
||||
"expired": "This contract has expired",
|
||||
"alreadySigned": "This contract has already been signed",
|
||||
"notFound": "Contract not found",
|
||||
"signedBy": "Signed by {{name}} on {{date}}",
|
||||
"thankYou": "Thank you for signing!"
|
||||
},
|
||||
"errors": {
|
||||
"loadFailed": "Failed to load contracts",
|
||||
"createFailed": "Failed to create contract",
|
||||
"updateFailed": "Failed to update contract",
|
||||
"deleteFailed": "Failed to delete contract",
|
||||
"sendFailed": "Failed to send contract",
|
||||
"voidFailed": "Failed to void contract"
|
||||
}
|
||||
},
|
||||
"dashboard": {
|
||||
"title": "Dashboard",
|
||||
"welcome": "Welcome, {{name}}!",
|
||||
|
||||
Reference in New Issue
Block a user