diff --git a/frontend/src/i18n/locales/de.json b/frontend/src/i18n/locales/de.json index 7502401..88bd0e1 100644 --- a/frontend/src/i18n/locales/de.json +++ b/frontend/src/i18n/locales/de.json @@ -179,6 +179,138 @@ "endpoint": "Endpunkt", "request": "Anfrage", "response": "Antwort" + }, + "contracts": { + "overview": { + "title": "Vertrags- und E-Signatur-System", + "description": "Das Vertragssystem ermöglicht es Ihnen, Vertragsvorlagen zu erstellen, diese zur Unterschrift an Kunden zu senden und rechtskonforme Prüfprotokolle zu führen.", + "compliance": "Entwickelt für ESIGN Act und UETA-Konformität, erfasst alle erforderlichen Daten für rechtlich bindende elektronische Signaturen." + }, + "pageLayout": { + "title": "Seitenlayout", + "description": "Die Vertragsseite ist in zwei Hauptbereiche unterteilt:", + "templatesSection": "Vorlagen - Erstellen und verwalten Sie wiederverwendbare Vertragsvorlagen", + "sentContractsSection": "Gesendete Verträge - Verfolgen Sie an Kunden gesendete Verträge", + "tip": "Tipp: Beide Abschnitte können durch Klicken auf die Überschriften ein- oder ausgeklappt werden. Ihre Einstellung wird gespeichert." + }, + "templates": { + "title": "Vertragsvorlagen", + "description": "Vorlagen sind wiederverwendbare Dokumente mit Platzhaltern, die beim Senden an Kunden automatisch ausgefüllt werden.", + "variablesTitle": "Verfügbare Variablen", + "variablesDescription": "Verwenden Sie diese Platzhalter in Ihrem Vorlageninhalt, um Verträge automatisch zu personalisieren:", + "variables": { + "customerName": "Vollständiger Name", + "customerFirstName": "Vorname", + "customerEmail": "E-Mail-Adresse", + "customerPhone": "Telefonnummer", + "businessName": "Ihr Firmenname", + "businessEmail": "Kontakt-E-Mail", + "businessPhone": "Geschäftstelefon", + "date": "Aktuelles Datum", + "year": "Aktuelles Jahr" + }, + "scopesTitle": "Vertragsbereiche", + "scopes": { + "customer": "Einmalige Verträge pro Kunde (z.B. Datenschutzrichtlinie, AGB). Einmal unterschrieben, nicht erneut gesendet.", + "appointment": "Bei jeder Buchung unterschrieben (z.B. Haftungsausschlüsse, Servicevereinbarungen). Einzigartige Verträge für jeden Termin." + } + }, + "creating": { + "title": "Vorlage Erstellen", + "description": "Um eine neue Vertragsvorlage zu erstellen:", + "steps": { + "1": "Klicken Sie auf \"Neue Vorlage\"", + "2": "Geben Sie einen Namen und eine Beschreibung für die Vorlage ein", + "3": "Schreiben Sie Ihren Vertragsinhalt mit dem HTML-Editor", + "4": "Legen Sie den Bereich fest (Kundenebene oder Pro Termin)", + "5": "Optional Ablaufdatum (in Tagen) und Versionshinweise festlegen", + "6": "Status auf Aktiv setzen, wenn Sie die Vorlage verwenden möchten" + } + }, + "managing": { + "title": "Vorlagen Verwalten", + "description": "Jede Vorlage zeigt ihren Bereich, Status und Version. Verwenden Sie das Aktionsmenü für:", + "actions": { + "preview": "Sehen Sie, wie der Vertrag als PDF mit Beispieldaten aussieht", + "edit": "Vorlagenname, Inhalt oder Einstellungen aktualisieren", + "delete": "Vorlage dauerhaft entfernen (nicht rückgängig zu machen bei aktiven Verträgen)" + }, + "note": "Hinweis: Vorlagen haben Status: Entwurf (nicht bereit), Aktiv (kann gesendet werden) und Archiviert (versteckt, aber für Aufzeichnungen aufbewahrt)" + }, + "sending": { + "title": "Verträge Senden", + "description": "Um einen Vertrag an einen Kunden zu senden:", + "steps": { + "1": "Klicken Sie auf \"Vertrag Erstellen\" im Bereich Gesendete Verträge", + "2": "Wählen Sie eine aktive Vorlage aus der Dropdown-Liste", + "3": "Suchen und wählen Sie einen Kunden", + "4": "Optional mit einem bestimmten Termin oder Service verknüpfen", + "5": "\"E-Mail sofort senden\" aktivieren, um den Kunden zu benachrichtigen", + "6": "Klicken Sie auf \"Vertrag Senden\"" + } + }, + "statusActions": { + "title": "Vertragsstatus & Aktionen", + "statuses": { + "pending": "Gesendet, aber noch nicht unterschrieben", + "signed": "Erfolgreich vom Kunden unterschrieben", + "expired": "Unterschriftsfrist abgelaufen", + "voided": "Manuell vom Unternehmen widerrufen" + }, + "actionsTitle": "Verfügbare Aktionen", + "actions": { + "viewDetails": "Vollständige Vertragsinformationen und Inhaltsvorschau anzeigen", + "copyLink": "Öffentliche Signatur-URL zum Teilen mit dem Kunden erhalten", + "openSigning": "Vorschau, was der Kunde sieht", + "resend": "Weitere Signatur-Erinnerungs-E-Mail senden", + "void": "Ausstehenden Vertrag widerrufen" + } + }, + "legalCompliance": { + "title": "Rechtliche Konformität", + "notice": "Das Vertragssystem ist für die Einhaltung von ESIGN Act und UETA konzipiert. Jede Signatur erfasst:", + "auditDataTitle": "Prüfprotokoll-Daten", + "auditData": { + "documentHash": "Dokument-Hash (SHA-256) - Manipulationsnachweis", + "signedTimestamp": "Signaturzeitstempel (ISO) - Zeitpunkt der Unterschrift", + "ipAddress": "IP-Adresse - Unterzeichner-Identifikation", + "userAgent": "User Agent - Browser-/Geräteinformationen", + "consentCheckbox": "Zustimmungs-Checkbox-Status - Absichtsnachweis", + "geolocation": "Geolokalisierung (optional) - Zusätzliche Identifikation" + } + }, + "pdfGeneration": { + "title": "PDF-Generierung", + "description": "Nach der Vertragsunterzeichnung wird automatisch ein PDF generiert, das enthält:", + "includes": { + "content": "Vollständigen Vertragsinhalt", + "signature": "Signaturbereich mit Unterzeichnername und Datum", + "audit": "Prüfprotokoll-Tabelle mit allen Konformitätsdaten", + "legal": "Rechtlicher Hinweis zur ESIGN Act-Konformität" + }, + "tip": "Unterschriebene PDFs können sowohl vom Unternehmen als auch vom Kunden für ihre Unterlagen heruntergeladen werden." + }, + "bestPractices": { + "title": "Best Practices", + "tips": { + "1": "Verwenden Sie klare, beschreibende Vorlagennamen zur einfachen Identifikation", + "2": "Halten Sie den Vertragsinhalt prägnant und lesbar", + "3": "Testen Sie Vorlagen mit Beispieldaten, bevor Sie sie auf Aktiv setzen", + "4": "Verwenden Sie Versionshinweise, um Änderungen zu verfolgen", + "5": "Archivieren Sie alte Vorlagen, anstatt sie zu löschen, um die Historie zu erhalten", + "6": "Setzen Sie angemessene Ablaufdaten für zeitkritische Verträge" + } + }, + "relatedFeatures": { + "title": "Verwandte Funktionen", + "servicesGuide": "Siehe Dienstleistungs-Handbuch für die Verknüpfung von Verträgen mit Services", + "customersGuide": "Siehe Kunden-Handbuch für die Verwaltung von Kundenkontakten" + }, + "needHelp": { + "title": "Brauchen Sie Hilfe?", + "description": "Wenn Sie Fragen zur Verwendung von Verträgen haben, ist unser Support-Team für Sie da.", + "contactSupport": "Support Kontaktieren" + } } }, "dashboard": { @@ -589,6 +721,25 @@ "title": "White-Labeling", "description": "Entfernen Sie unser Branding und machen Sie die Plattform zu Ihrer eigenen." } + }, + "contracts": { + "badge": "Rechtliche Konformität", + "title": "Digitale Verträge & E-Signaturen", + "description": "Erstellen Sie professionelle Verträge, senden Sie sie zur elektronischen Unterschrift und führen Sie rechtskonforme Aufzeichnungen. Entwickelt für ESIGN Act und UETA-Konformität mit vollständigen Prüfprotokollen.", + "features": { + "templates": "Erstellen Sie wiederverwendbare Vertragsvorlagen mit Platzhaltern", + "eSignature": "Sammeln Sie rechtlich bindende elektronische Unterschriften", + "auditTrail": "Vollständiges Prüfprotokoll mit IP, Zeitstempel und Geolokalisierung", + "pdfGeneration": "Automatische PDF-Generierung mit Signaturverifizierung" + }, + "compliance": { + "title": "Rechtliche Konformität", + "description": "Jede Signatur erfasst Dokument-Hash, Zeitstempel, IP-Adresse und Zustimmungsaufzeichnungen." + }, + "automation": { + "title": "Automatisierte Workflows", + "description": "Senden Sie Verträge automatisch bei der Buchung oder verknüpfen Sie sie mit bestimmten Services." + } } }, "howItWorks": { @@ -1040,6 +1191,10 @@ "advancedAnalytics": { "title": "Erweiterte Analysen", "description": "Tiefe Einblicke in Umsatz, Auslastung und Mitarbeiterleistung." + }, + "digitalContracts": { + "title": "Digitale Verträge", + "description": "Senden Sie Verträge zur elektronischen Unterschrift mit vollständiger Rechtskonformität und Prüfprotokollen." } }, "testimonialsSection": { @@ -1406,5 +1561,221 @@ "manageTimeBlocks": "Zeitblöcke Verwalten", "myAvailability": "Meine Verfügbarkeit" } + }, + "helpComprehensive": { + "header": { + "back": "Zurück", + "title": "SmoothSchedule Komplettanleitung", + "contactSupport": "Support kontaktieren" + }, + "toc": { + "contents": "Inhalt", + "gettingStarted": "Erste Schritte", + "dashboard": "Dashboard", + "scheduler": "Planer", + "services": "Dienstleistungen", + "resources": "Ressourcen", + "customers": "Kunden", + "staff": "Mitarbeiter", + "timeBlocks": "Zeitblöcke", + "plugins": "Plugins", + "contracts": "Verträge", + "settings": "Einstellungen" + }, + "introduction": { + "title": "Einführung", + "welcome": "Willkommen bei SmoothSchedule", + "description": "SmoothSchedule ist eine leistungsstarke Terminplanungsplattform, die Unternehmen hilft, Termine, Ressourcen und Kundenbeziehungen zu verwalten. Egal, ob Sie einen Salon, eine Klinik, ein Beratungsunternehmen oder ein anderes terminbasiertes Unternehmen betreiben - SmoothSchedule bietet die Werkzeuge, die Sie benötigen, um Ihre Abläufe zu optimieren.", + "whatYouCanDo": "Was Sie mit SmoothSchedule tun können:", + "feature1": "Termine mit einem visuellen Drag-and-Drop-Planer verwalten", + "feature2": "Online-Buchung für Ihre Kunden konfigurieren", + "feature3": "Ressourcen (Räume, Geräte, Mitarbeiter) und deren Verfügbarkeit verfolgen", + "feature4": "Automatisierte E-Mail-Benachrichtigungen und Erinnerungen senden", + "feature5": "Berichte erstellen und Geschäftsmetriken analysieren" + }, + "gettingStarted": { + "title": "Erste Schritte", + "subtitle": "Ihr erstes Setup", + "description": "Folgen Sie diesen Schritten, um Ihr Geschäft in Betrieb zu nehmen:", + "step1Title": "Dienstleistungen erstellen", + "step1Desc": "Definieren Sie die Dienstleistungen, die Sie anbieten, mit Dauer und Preisen.", + "step2Title": "Ressourcen hinzufügen", + "step2Desc": "Richten Sie Ihre buchbaren Ressourcen ein (Mitarbeiter, Räume, Geräte).", + "step3Title": "Geschäftszeiten konfigurieren", + "step3Desc": "Legen Sie Ihre normalen Öffnungszeiten für jede Ressource fest.", + "step4Title": "Mit der Buchung beginnen", + "step4Desc": "Beginnen Sie mit der Erstellung von Terminen im Planer oder aktivieren Sie Online-Buchungen." + }, + "dashboard": { + "title": "Dashboard", + "description": "Das Dashboard ist Ihre zentrale Anlaufstelle für einen schnellen Überblick über Ihr Geschäft. Es zeigt bevorstehende Termine, aktuelle Aktivitäten und wichtige Metriken.", + "keyFeatures": "Hauptfunktionen", + "feature1Title": "Heute Übersicht", + "feature1Desc": "Sehen Sie auf einen Blick, was für heute geplant ist.", + "feature2Title": "Aktuelle Aktivität", + "feature2Desc": "Verfolgen Sie die neuesten Buchungen, Stornierungen und Änderungen.", + "feature3Title": "Schnellaktionen", + "feature3Desc": "Schneller Zugriff auf häufige Aufgaben wie das Erstellen von Terminen oder das Hinzufügen von Kunden." + }, + "scheduler": { + "title": "Planer", + "description": "Der Planer ist das Herzstück von SmoothSchedule und bietet eine visuelle Oberfläche zur Verwaltung aller Ihrer Termine.", + "viewTypes": "Ansichtstypen", + "dayView": "Tagesansicht", + "dayViewDesc": "Zeigt alle Termine für einen einzelnen Tag an, organisiert nach Ressourcen.", + "weekView": "Wochenansicht", + "weekViewDesc": "Zeigt eine Woche auf einmal für langfristige Planung.", + "monthView": "Monatsansicht", + "monthViewDesc": "Kalenderübersicht des gesamten Monats.", + "workingWithAppointments": "Arbeiten mit Terminen", + "createAppointment": "Termin erstellen", + "createAppointmentDesc": "Klicken Sie auf einen beliebigen Zeitslot im Kalender, um einen neuen Termin zu erstellen.", + "dragAndDrop": "Ziehen und Ablegen", + "dragAndDropDesc": "Termine können durch Ziehen und Ablegen auf neue Zeiten oder Ressourcen verschoben werden.", + "resize": "Größe ändern", + "resizeDesc": "Ziehen Sie an den Rändern eines Termins, um seine Dauer anzupassen.", + "quickActions": "Schnellaktionen", + "quickActionsDesc": "Klicken Sie auf einen Termin, um Optionen wie Bearbeiten, Löschen oder Statusänderung aufzurufen." + }, + "services": { + "title": "Dienstleistungen", + "description": "Dienstleistungen definieren, was Sie Kunden anbieten. Jede Dienstleistung hat eine Dauer, einen Preis und kann bestimmten Ressourcen zugewiesen werden.", + "keyFields": "Wichtige Felder", + "name": "Name", + "nameDesc": "Der Anzeigename für die Dienstleistung.", + "duration": "Dauer", + "durationDesc": "Wie lange die Dienstleistung dauert (in Minuten).", + "price": "Preis", + "priceDesc": "Die Kosten für die Dienstleistung.", + "color": "Farbe", + "colorDesc": "Visuelle Kennzeichnung im Planer.", + "assignedResources": "Zugewiesene Ressourcen", + "assignedResourcesDesc": "Welche Ressourcen diese Dienstleistung erbringen können.", + "tips": "Tipps", + "tip1": "Erstellen Sie Dienstleistungskategorien, um verwandte Dienstleistungen zu gruppieren.", + "tip2": "Verwenden Sie Pufferzeit, um Zeit zwischen Terminen hinzuzufügen.", + "tip3": "Richten Sie verschiedene Preisstufen für verschiedene Tageszeiten oder Ressourcen ein." + }, + "resources": { + "title": "Ressourcen", + "description": "Ressourcen sind die buchbaren Elemente in Ihrem Unternehmen - dies können Mitarbeiter, Räume, Geräte oder alles sein, was geplant werden muss.", + "resourceTypes": "Ressourcentypen", + "staff": "Mitarbeiter", + "staffDesc": "Mitarbeiter, die Dienstleistungen für Kunden erbringen.", + "rooms": "Räume", + "roomsDesc": "Physische Räume, die gebucht werden können.", + "equipment": "Geräte", + "equipmentDesc": "Maschinen oder Werkzeuge, die geplant werden müssen.", + "managingAvailability": "Verfügbarkeit verwalten", + "availabilityDesc": "Jede Ressource kann ihre eigene Verfügbarkeit haben, die definiert, wann sie gebucht werden kann.", + "regularHours": "Reguläre Geschäftszeiten", + "regularHoursDesc": "Standardarbeitszeiten für jeden Wochentag festlegen.", + "timeOff": "Abwesenheit", + "timeOffDesc": "Zeitblöcke markieren, wenn die Ressource nicht verfügbar ist." + }, + "customers": { + "title": "Kunden", + "description": "Verwalten Sie Ihre Kundendatenbank, verfolgen Sie die Terminhistorie und pflegen Sie Kundenbeziehungen.", + "customerInfo": "Kundeninformationen", + "contactDetails": "Kontaktdaten", + "contactDetailsDesc": "Speichern Sie E-Mail, Telefon und Adresse für jeden Kunden.", + "appointmentHistory": "Terminhistorie", + "appointmentHistoryDesc": "Sehen Sie alle vergangenen und bevorstehenden Termine.", + "notes": "Notizen", + "notesDesc": "Fügen Sie private Notizen über Kundenpräferenzen oder besondere Anforderungen hinzu.", + "communication": "Kommunikation", + "communicationDesc": "Senden Sie E-Mails direkt aus dem System an Kunden." + }, + "staff": { + "title": "Mitarbeiter", + "description": "Verwalten Sie Ihre Teammitglieder, ihre Rollen und Berechtigungen.", + "roles": "Rollen", + "owner": "Inhaber", + "ownerDesc": "Voller Zugriff auf alle Funktionen und Einstellungen.", + "manager": "Manager", + "managerDesc": "Kann Zeitpläne und Mitarbeiter verwalten, aber keinen Zugriff auf Abrechnung.", + "staffRole": "Mitarbeiter", + "staffRoleDesc": "Kann eigene Termine und Verfügbarkeit einsehen und verwalten.", + "permissions": "Berechtigungen", + "permissionsDesc": "Feinkörnige Kontrolle darüber, was jeder Mitarbeiter zugreifen und ändern kann." + }, + "timeBlocks": { + "title": "Zeitblöcke", + "description": "Zeitblöcke ermöglichen es Ihnen, Zeiten zu sperren, in denen keine Termine gebucht werden können, wie Feiertage, Betriebsferien oder persönliche Abwesenheiten.", + "blockLevels": "Blockebenen", + "businessLevel": "Geschäftsebene", + "businessLevelDesc": "Betrifft das gesamte Unternehmen - alle Ressourcen sind während dieser Zeiten blockiert.", + "resourceLevel": "Ressourcenebene", + "resourceLevelDesc": "Betrifft nur bestimmte Ressourcen, während andere verfügbar bleiben.", + "blockTypes": "Blocktypen", + "hardBlock": "Harte Blockierung", + "hardBlockDesc": "Verhindert absolut jede Buchung. Wird für Betriebsferien, Feiertage verwendet.", + "softBlock": "Weiche Blockierung", + "softBlockDesc": "Zeigt Warnung, kann aber überschrieben werden. Wird für bevorzugte Ruhezeiten verwendet.", + "recurrencePatterns": "Wiederholungsmuster", + "oneTime": "Einmalig", + "oneTimeDesc": "Eine einzelne Zeitsperre für einen bestimmten Zeitraum.", + "weekly": "Wöchentlich", + "weeklyDesc": "Wiederholt sich an bestimmten Wochentagen (z.B. jeden Montag geschlossen).", + "monthly": "Monatlich", + "monthlyDesc": "Wiederholt sich an bestimmten Tagen des Monats.", + "yearly": "Jährlich", + "yearlyDesc": "Wiederholt sich jedes Jahr zu bestimmten Daten (ideal für Feiertage).", + "holiday": "Feiertag", + "holidayDesc": "Automatische Berechnung variabler Feiertage wie Erntedank.", + "keyFeatures": "Hauptfunktionen", + "conflictDetection": "Konflikterkennung", + "conflictDetectionDesc": "Zeigt bestehende Termine, die mit neuen Blöcken in Konflikt stehen.", + "visualOverlay": "Visuelle Überlagerung", + "visualOverlayDesc": "Blockierte Zeiten werden im Planer mit Streifen angezeigt.", + "yearlyCalendar": "Jahreskalender", + "yearlyCalendarDesc": "Zeigen Sie alle blockierten Tage in einer 12-Monats-Übersicht an.", + "staffAvailability": "Mitarbeiterverfügbarkeit", + "staffAvailabilityDesc": "Mitarbeiter können die Seite 'Meine Verfügbarkeit' nutzen, um ihre persönlichen Zeitblöcke zu verwalten.", + "learnMore": "Mehr erfahren in der Zeitblock-Dokumentation" + }, + "plugins": { + "title": "Plugins", + "description": "Erweitern Sie SmoothSchedule mit Plugins, um zusätzliche Funktionen und Integrationen hinzuzufügen.", + "availablePlugins": "Verfügbare Plugins", + "ticketSystem": "Ticket-System", + "ticketSystemDesc": "E-Mail-basiertes Support-Ticket-System mit automatischer Ticket-Erstellung.", + "onlineBooking": "Online-Buchung", + "onlineBookingDesc": "Ermöglichen Sie Kunden, Termine online zu buchen.", + "smsNotifications": "SMS-Benachrichtigungen", + "smsNotificationsDesc": "Senden Sie Textnachrichten-Erinnerungen an Kunden.", + "enablingPlugins": "Plugins aktivieren", + "enablingPluginsDesc": "Plugins können in den Einstellungen aktiviert werden. Einige Plugins erfordern zusätzliche Konfiguration oder Abonnement-Upgrades." + }, + "contracts": { + "title": "Verträge", + "description": "Erstellen und verwalten Sie Dienstleistungsverträge mit Kunden für wiederkehrende Termine oder Paketangebote.", + "contractTypes": "Vertragsarten", + "recurring": "Wiederkehrend", + "recurringDesc": "Automatische Terminplanung in regelmäßigen Abständen.", + "package": "Paket", + "packageDesc": "Vorausbezahlte Pakete mit einer festgelegten Anzahl von Sitzungen.", + "subscription": "Abonnement", + "subscriptionDesc": "Monatliche oder jährliche Dienstleistungsabonnements." + }, + "settings": { + "title": "Einstellungen", + "description": "Konfigurieren Sie Ihr Unternehmen, Ihre Präferenzen und Systemoptionen.", + "sections": "Einstellungsbereiche", + "businessInfo": "Geschäftsinformationen", + "businessInfoDesc": "Name, Adresse, Kontaktinformationen und Branding.", + "notifications": "Benachrichtigungen", + "notificationsDesc": "E-Mail-Vorlagen und Benachrichtigungseinstellungen.", + "booking": "Buchung", + "bookingDesc": "Online-Buchungsregeln und Einschränkungen.", + "integrations": "Integrationen", + "integrationsDesc": "Mit Drittanbieterdiensten und APIs verbinden." + }, + "footer": { + "copyright": "© 2025 SmoothSchedule. Alle Rechte vorbehalten.", + "helpCenter": "Hilfezentrum", + "documentation": "Dokumentation", + "contactSupport": "Support kontaktieren" + } } } diff --git a/frontend/src/i18n/locales/en.json b/frontend/src/i18n/locales/en.json index 88f1717..3dc22c1 100644 --- a/frontend/src/i18n/locales/en.json +++ b/frontend/src/i18n/locales/en.json @@ -1611,6 +1611,25 @@ "title": "White Labeling", "description": "Remove our branding and make the platform your own." } + }, + "contracts": { + "badge": "Legal Compliance", + "title": "Digital Contracts & E-Signatures", + "description": "Create professional contracts, send them for electronic signature, and maintain legally compliant records. Built for ESIGN Act and UETA compliance with complete audit trails.", + "features": { + "templates": "Create reusable contract templates with variable placeholders", + "eSignature": "Collect legally binding electronic signatures", + "auditTrail": "Full audit trail with IP, timestamp, and geolocation", + "pdfGeneration": "Automatic PDF generation with signature verification" + }, + "compliance": { + "title": "Legal Compliance", + "description": "Every signature captures document hash, timestamp, IP address, and consent records." + }, + "automation": { + "title": "Automated Workflows", + "description": "Automatically send contracts at booking time or link to specific services." + } } }, "howItWorks": { @@ -2062,6 +2081,10 @@ "advancedAnalytics": { "title": "Advanced Analytics", "description": "Deep insights into revenue, utilization, and staff performance." + }, + "digitalContracts": { + "title": "Digital Contracts", + "description": "Send contracts for e-signature with full legal compliance and audit trails." } }, "testimonialsSection": { @@ -2709,5 +2732,354 @@ "manageTimeBlocks": "Manage Time Blocks", "myAvailability": "My Availability" } + }, + "helpComprehensive": { + "header": { + "back": "Back", + "title": "SmoothSchedule Complete Guide", + "contactSupport": "Contact Support" + }, + "toc": { + "contents": "Contents", + "gettingStarted": "Getting Started", + "dashboard": "Dashboard", + "scheduler": "Scheduler", + "services": "Services", + "resources": "Resources", + "customers": "Customers", + "staff": "Staff", + "timeBlocks": "Time Blocks", + "plugins": "Plugins", + "contracts": "Contracts", + "settings": "Settings", + "servicesSetup": "Services Setup", + "resourcesSetup": "Resources Setup", + "branding": "Branding", + "bookingUrl": "Booking URL", + "resourceTypes": "Resource Types", + "emailSettings": "Email Settings", + "customDomains": "Custom Domains", + "billing": "Billing", + "apiSettings": "API Settings", + "authentication": "Authentication", + "usageQuota": "Usage & Quota" + }, + "introduction": { + "title": "Welcome to SmoothSchedule", + "description": "SmoothSchedule is a complete scheduling platform designed to help businesses manage appointments, customers, staff, and services. This comprehensive guide covers everything you need to know to get the most out of the platform.", + "tocHint": "Use the table of contents on the left to jump to specific sections, or scroll through the entire guide." + }, + "gettingStarted": { + "title": "Getting Started", + "checklistTitle": "Quick Setup Checklist", + "checklistDescription": "Follow these steps to get your scheduling system up and running:", + "step1Title": "Set up your Services", + "step1Description": "Define what you offer - consultations, appointments, classes, etc. Include names, durations, and prices.", + "step2Title": "Add your Resources", + "step2Description": "Create staff members, rooms, or equipment that can be booked. Set their availability schedules.", + "step3Title": "Configure your Branding", + "step3Description": "Upload your logo and set your brand colors so customers recognize your business.", + "step4Title": "Share your Booking URL", + "step4Description": "Copy your booking URL from Settings → Booking and share it with customers.", + "step5Title": "Start Managing Appointments", + "step5Description": "Use the Scheduler to view, create, and manage bookings as they come in." + }, + "dashboard": { + "title": "Dashboard", + "description": "The Dashboard provides an at-a-glance overview of your business performance. It displays key metrics and charts to help you understand how your scheduling business is doing.", + "keyMetrics": "Key Metrics", + "totalAppointments": "Total Appointments", + "totalAppointmentsDesc": "Number of bookings in the system", + "activeCustomers": "Active Customers", + "activeCustomersDesc": "Customers with Active status", + "servicesMetric": "Services", + "servicesMetricDesc": "Total number of services offered", + "resourcesMetric": "Resources", + "resourcesMetricDesc": "Staff, rooms, and equipment available", + "charts": "Charts", + "revenueChart": "Revenue Chart:", + "revenueChartDesc": "Bar chart showing daily revenue by day of week", + "appointmentsChart": "Appointments Chart:", + "appointmentsChartDesc": "Line chart showing appointment volume by day" + }, + "scheduler": { + "title": "Scheduler", + "description": "The Scheduler is the heart of SmoothSchedule. It provides a visual calendar interface for managing all your appointments with full drag-and-drop support.", + "interfaceLayout": "Interface Layout", + "pendingSidebarTitle": "Left Sidebar - Pending Appointments", + "pendingSidebarDesc": "Unscheduled appointments waiting to be placed on the calendar. Drag them onto available time slots.", + "calendarViewTitle": "Center - Calendar View", + "calendarViewDesc": "Main calendar showing appointments organized by resource in columns. Switch between day, 3-day, week, and month views.", + "detailsSidebarTitle": "Right Sidebar - Appointment Details", + "detailsSidebarDesc": "Click any appointment to view/edit details, add notes, change status, or send reminders.", + "keyFeatures": "Key Features", + "dragDropFeature": "Drag & Drop:", + "dragDropDesc": "Move appointments between time slots and resources", + "resizeFeature": "Resize:", + "resizeDesc": "Drag appointment edges to change duration", + "quickCreateFeature": "Quick Create:", + "quickCreateDesc": "Double-click any empty slot to create a new appointment", + "resourceFilterFeature": "Resource Filtering:", + "resourceFilterDesc": "Toggle which resources are visible in the calendar", + "statusColorsFeature": "Status Colors:", + "statusColorsDesc": "Appointments are color-coded by status (confirmed, pending, cancelled)", + "appointmentStatuses": "Appointment Statuses", + "statusPending": "Pending", + "statusConfirmed": "Confirmed", + "statusCancelled": "Cancelled", + "statusCompleted": "Completed", + "statusNoShow": "No-Show" + }, + "services": { + "title": "Services", + "description": "Services define what customers can book with you. Each service has a name, duration, price, and description. The Services page uses a two-column layout: an editable list on the left and a customer preview on the right.", + "serviceProperties": "Service Properties", + "nameProp": "Name", + "namePropDesc": "The service title shown to customers", + "durationProp": "Duration", + "durationPropDesc": "How long the appointment takes (in minutes)", + "priceProp": "Price", + "pricePropDesc": "Cost of the service (displayed to customers)", + "descriptionProp": "Description", + "descriptionPropDesc": "Details about what the service includes", + "keyFeatures": "Key Features", + "dragReorderFeature": "Drag to Reorder:", + "dragReorderDesc": "Change the display order by dragging services up/down", + "photoGalleryFeature": "Photo Gallery:", + "photoGalleryDesc": "Add, reorder, and remove images for each service", + "livePreviewFeature": "Live Preview:", + "livePreviewDesc": "See how customers will view your service in real-time", + "quickAddFeature": "Quick Add:", + "quickAddDesc": "Create new services with the Add Service button" + }, + "resources": { + "title": "Resources", + "description": "Resources are the things that get booked - staff members, rooms, equipment, or any other bookable entity. Each resource appears as a column in the scheduler calendar.", + "resourceTypes": "Resource Types", + "staffType": "Staff", + "staffTypeDesc": "People who provide services (employees, contractors, etc.)", + "roomType": "Room", + "roomTypeDesc": "Physical spaces (meeting rooms, studios, treatment rooms)", + "equipmentType": "Equipment", + "equipmentTypeDesc": "Physical items (cameras, projectors, vehicles)", + "keyFeatures": "Key Features", + "staffAutocompleteFeature": "Staff Autocomplete:", + "staffAutocompleteDesc": "When creating staff resources, link to existing staff members", + "multilaneModeFeature": "Multilane Mode:", + "multilaneModeDesc": "Enable for resources that can handle multiple concurrent bookings", + "viewCalendarFeature": "View Calendar:", + "viewCalendarDesc": "Click the calendar icon to see a resource's schedule", + "tableActionsFeature": "Table Actions:", + "tableActionsDesc": "Edit or delete resources from the actions column" + }, + "customers": { + "title": "Customers", + "description": "The Customers page lets you manage all the people who book appointments with your business. Track their information, booking history, and status.", + "customerStatuses": "Customer Statuses", + "activeStatus": "Active", + "activeStatusDesc": "Customer can book appointments normally", + "inactiveStatus": "Inactive", + "inactiveStatusDesc": "Customer record is dormant", + "blockedStatus": "Blocked", + "blockedStatusDesc": "Customer cannot make new bookings", + "keyFeatures": "Key Features", + "searchFeature": "Search:", + "searchDesc": "Find customers by name, email, or phone", + "filterFeature": "Filter:", + "filterDesc": "Filter by status (Active, Inactive, Blocked)", + "tagsFeature": "Tags:", + "tagsDesc": "Organize customers with custom tags (VIP, New, etc.)", + "sortingFeature": "Sorting:", + "sortingDesc": "Click column headers to sort the table", + "masqueradingTitle": "Masquerading", + "masqueradingDesc": "Use the Masquerade feature to see exactly what a customer sees when they log in. This is helpful for walking customers through tasks or troubleshooting issues. Click the eye icon in a customer's row to start masquerading." + }, + "staff": { + "title": "Staff", + "description": "The Staff page lets you manage team members who help run your business. Invite new staff, assign roles, and control what each person can access.", + "staffRoles": "Staff Roles", + "ownerRole": "Owner", + "ownerRoleDesc": "Full access to everything including billing and settings. Cannot be removed.", + "managerRole": "Manager", + "managerRoleDesc": "Can manage staff, customers, services, and appointments. No billing access.", + "staffRole": "Staff", + "staffRoleDesc": "Basic access. Can view scheduler and manage own appointments if bookable.", + "invitingStaff": "Inviting Staff", + "inviteStep1": "Click the Invite Staff button", + "inviteStep2": "Enter their email address", + "inviteStep3": "Select a role (Manager or Staff)", + "inviteStep4": "Click Send Invitation", + "inviteStep5": "They'll receive an email with a link to join", + "makeBookable": "Make Bookable", + "makeBookableDesc": "The \"Make Bookable\" option creates a bookable resource for a staff member. When enabled, they appear as a column in the scheduler and customers can book appointments with them directly." + }, + "timeBlocks": { + "title": "Time Blocks", + "description": "Time Blocks let you block off time when appointments cannot be booked. Use them for holidays, closures, lunch breaks, or any time you need to prevent bookings.", + "blockLevels": "Block Levels", + "businessLevel": "Business Level", + "businessLevelDesc": "Affects the entire business - all resources. Use for holidays and company-wide closures.", + "resourceLevel": "Resource Level", + "resourceLevelDesc": "Affects a specific resource only. Use for individual staff schedules or equipment maintenance.", + "blockTypes": "Block Types", + "hardBlock": "Hard Block", + "hardBlockDesc": "Prevents all bookings during this time. Customers cannot book and staff cannot override.", + "softBlock": "Soft Block", + "softBlockDesc": "Shows a warning but allows booking with confirmation. Use for preferred-off times.", + "recurrencePatterns": "Recurrence Patterns", + "oneTimePattern": "One-time", + "oneTimePatternDesc": "A specific date or date range that occurs once", + "weeklyPattern": "Weekly", + "weeklyPatternDesc": "Repeats on specific days of the week (e.g., every Saturday)", + "monthlyPattern": "Monthly", + "monthlyPatternDesc": "Repeats on specific days of the month (e.g., 1st and 15th)", + "yearlyPattern": "Yearly", + "yearlyPatternDesc": "Repeats on a specific date each year (e.g., July 4th)", + "holidayPattern": "Holiday", + "holidayPatternDesc": "Select from preset holidays - the system calculates dates automatically", + "keyFeatures": "Key Features", + "schedulerOverlayFeature": "Scheduler Overlay:", + "schedulerOverlayDesc": "Blocked times appear directly on the scheduler calendar with visual indicators", + "colorCodingFeature": "Color Coding:", + "colorCodingDesc": "Business blocks use red/yellow, resource blocks use purple/cyan", + "monthViewFeature": "Month View:", + "monthViewDesc": "Blocked dates show with colored backgrounds and badge indicators", + "listViewFeature": "List View:", + "listViewDesc": "Manage all time blocks in a tabular format with filtering options", + "staffAvailability": "Staff Availability", + "staffAvailabilityDesc": "Staff members can manage their own time blocks through the \"My Availability\" page. This allows them to block off time for personal appointments, vacations, or other commitments without needing admin access.", + "learnMore": "Learn More", + "timeBlocksDocumentation": "Time Blocks Documentation", + "timeBlocksDocumentationDesc": "Complete guide to creating, managing, and visualizing time blocks" + }, + "plugins": { + "title": "Plugins", + "description": "Plugins extend SmoothSchedule with custom automation and integrations. Browse the marketplace for pre-built plugins or create your own using our scripting language.", + "whatPluginsCanDo": "What Plugins Can Do", + "sendEmailsCapability": "Send Emails:", + "sendEmailsDesc": "Automated reminders, confirmations, and follow-ups", + "webhooksCapability": "Webhooks:", + "webhooksDesc": "Integrate with external services when events occur", + "reportsCapability": "Reports:", + "reportsDesc": "Generate and email business reports on a schedule", + "cleanupCapability": "Cleanup:", + "cleanupDesc": "Automatically archive old data or manage records", + "pluginTypes": "Plugin Types", + "marketplacePlugins": "Marketplace Plugins", + "marketplacePluginsDesc": "Pre-built plugins available to install immediately. Browse, install, and configure with a few clicks.", + "customPlugins": "Custom Plugins", + "customPluginsDesc": "Create your own plugins using our scripting language. Full control over logic and triggers.", + "triggers": "Triggers", + "triggersDesc": "Plugins can be triggered in various ways:", + "beforeEventTrigger": "Before Event", + "atStartTrigger": "At Start", + "afterEndTrigger": "After End", + "onStatusChangeTrigger": "On Status Change", + "learnMore": "Learn More", + "pluginDocumentation": "Plugin Documentation", + "pluginDocumentationDesc": "Complete guide to creating and using plugins, including API reference and examples" + }, + "contracts": { + "title": "Contracts", + "description": "The Contracts feature enables electronic document signing for your business. Create reusable templates, send contracts to customers, and maintain legally compliant audit trails with automatic PDF generation.", + "contractTemplates": "Contract Templates", + "templatesDesc": "Templates are reusable contract documents with placeholder variables that get filled in when sent:", + "templateProperties": "Template Properties", + "templateNameProp": "Name:", + "templateNamePropDesc": "Internal template identifier", + "templateContentProp": "Content:", + "templateContentPropDesc": "HTML document with variables", + "templateScopeProp": "Scope:", + "templateScopePropDesc": "Customer-level or per-appointment", + "templateExpirationProp": "Expiration:", + "templateExpirationPropDesc": "Days until contract expires", + "availableVariables": "Available Variables", + "contractWorkflow": "Contract Workflow", + "workflowStep1Title": "Create Contract", + "workflowStep1Desc": "Select a template and customer. Variables are automatically filled in.", + "workflowStep2Title": "Send for Signing", + "workflowStep2Desc": "Customer receives an email with a secure signing link.", + "workflowStep3Title": "Customer Signs", + "workflowStep3Desc": "Customer agrees via checkbox consent with full audit trail capture.", + "workflowStep4Title": "PDF Generated", + "workflowStep4Desc": "Signed PDF with audit trail is generated and stored automatically.", + "contractStatuses": "Contract Statuses", + "pendingStatus": "Pending", + "pendingStatusDesc": "Awaiting signature", + "signedStatus": "Signed", + "signedStatusDesc": "Successfully completed", + "expiredStatus": "Expired", + "expiredStatusDesc": "Past expiration date", + "voidedStatus": "Voided", + "voidedStatusDesc": "Manually cancelled", + "legalCompliance": "Legal Compliance", + "complianceTitle": "ESIGN & UETA Compliant", + "complianceDesc": "All signatures capture: timestamp, IP address, user agent, document hash, consent checkbox states, and exact consent language. This creates a legally defensible audit trail.", + "keyFeatures": "Key Features", + "emailDeliveryFeature": "Email Delivery:", + "emailDeliveryDesc": "Contracts are sent directly to customer email with signing link", + "shareableLinksFeature": "Shareable Links:", + "shareableLinksDesc": "Copy signing link to share via other channels", + "pdfDownloadFeature": "PDF Download:", + "pdfDownloadDesc": "Download signed contracts with full audit trail", + "statusTrackingFeature": "Status Tracking:", + "statusTrackingDesc": "Monitor which contracts are pending, signed, or expired", + "contractsDocumentation": "Contracts Documentation", + "contractsDocumentationDesc": "Complete guide to templates, signing, and compliance features" + }, + "settings": { + "title": "Settings", + "description": "Settings is where business owners configure their scheduling platform. Most settings are owner-only and affect how your business operates.", + "ownerAccessNote": "Owner Access Required:", + "ownerAccessDesc": "Only business owners can access most settings pages.", + "generalSettings": "General Settings", + "generalSettingsDesc": "Configure your business name, timezone, and contact information.", + "businessNameSetting": "Business Name:", + "businessNameSettingDesc": "Your company name displayed throughout the app", + "subdomainSetting": "Subdomain:", + "subdomainSettingDesc": "Your booking URL (read-only after creation)", + "timezoneSetting": "Timezone:", + "timezoneSettingDesc": "Business operating timezone", + "timeDisplaySetting": "Time Display Mode:", + "timeDisplaySettingDesc": "Show times in business timezone or viewer's timezone", + "contactSetting": "Contact Email/Phone:", + "contactSettingDesc": "How customers can reach you", + "bookingSettings": "Booking Settings", + "bookingSettingsDesc": "Your booking URL and post-booking redirect configuration.", + "bookingUrlSetting": "Booking URL:", + "bookingUrlSettingDesc": "The link customers use to book (copy/share it)", + "returnUrlSetting": "Return URL:", + "returnUrlSettingDesc": "Where to redirect customers after booking (optional)", + "brandingSettings": "Branding (Appearance)", + "brandingSettingsDesc": "Customize your business appearance with logos and colors.", + "websiteLogoSetting": "Website Logo:", + "websiteLogoSettingDesc": "Appears in sidebar and booking pages (500×500px recommended)", + "emailLogoSetting": "Email Logo:", + "emailLogoSettingDesc": "Appears in email notifications (600×200px recommended)", + "displayModeSetting": "Display Mode:", + "displayModeSettingDesc": "Text Only, Logo Only, or Logo and Text", + "colorPalettesSetting": "Color Palettes:", + "colorPalettesSettingDesc": "10 preset palettes to choose from", + "customColorsSetting": "Custom Colors:", + "customColorsSettingDesc": "Set your own primary and secondary colors", + "otherSettings": "Other Settings", + "resourceTypesLink": "Resource Types", + "resourceTypesLinkDesc": "Configure staff, room, equipment types", + "emailTemplatesLink": "Email Templates", + "emailTemplatesLinkDesc": "Customize email notifications", + "customDomainsLink": "Custom Domains", + "customDomainsLinkDesc": "Use your own domain for booking", + "billingLink": "Billing", + "billingLinkDesc": "Manage subscription and payments", + "apiSettingsLink": "API Settings", + "apiSettingsLinkDesc": "API keys and webhooks", + "usageQuotaLink": "Usage & Quota", + "usageQuotaLinkDesc": "Track usage and limits" + }, + "footer": { + "title": "Need More Help?", + "description": "Can't find what you're looking for? Our support team is ready to help.", + "contactSupport": "Contact Support" + } } } diff --git a/frontend/src/i18n/locales/es.json b/frontend/src/i18n/locales/es.json index 88126f2..865df27 100644 --- a/frontend/src/i18n/locales/es.json +++ b/frontend/src/i18n/locales/es.json @@ -781,6 +781,25 @@ "title": "Marca Blanca", "description": "Elimina nuestra marca y haz tuya la plataforma." } + }, + "contracts": { + "badge": "Cumplimiento Legal", + "title": "Contratos Digitales y Firmas Electrónicas", + "description": "Crea contratos profesionales, envíalos para firma electrónica y mantén registros legalmente conformes. Diseñado para cumplir con la Ley ESIGN y UETA con pistas de auditoría completas.", + "features": { + "templates": "Crea plantillas de contratos reutilizables con marcadores de posición", + "eSignature": "Recopila firmas electrónicas legalmente vinculantes", + "auditTrail": "Pista de auditoría completa con IP, marca de tiempo y geolocalización", + "pdfGeneration": "Generación automática de PDF con verificación de firma" + }, + "compliance": { + "title": "Cumplimiento Legal", + "description": "Cada firma captura hash del documento, marca de tiempo, dirección IP y registros de consentimiento." + }, + "automation": { + "title": "Flujos Automatizados", + "description": "Envía contratos automáticamente al momento de la reserva o vincúlalos a servicios específicos." + } } }, "howItWorks": { @@ -1243,6 +1262,10 @@ "advancedAnalytics": { "title": "Analíticas Avanzadas", "description": "Información profunda sobre ingresos, utilización y rendimiento del personal." + }, + "digitalContracts": { + "title": "Contratos Digitales", + "description": "Envía contratos para firma electrónica con cumplimiento legal completo y pistas de auditoría." } }, "testimonialsSection": { @@ -1609,5 +1632,354 @@ "manageTimeBlocks": "Gestionar Bloques de Tiempo", "myAvailability": "Mi Disponibilidad" } + }, + "helpComprehensive": { + "header": { + "back": "Atrás", + "title": "Guía Completa de SmoothSchedule", + "contactSupport": "Contactar Soporte" + }, + "toc": { + "contents": "Contenidos", + "gettingStarted": "Primeros Pasos", + "dashboard": "Panel de Control", + "scheduler": "Calendario", + "services": "Servicios", + "resources": "Recursos", + "customers": "Clientes", + "staff": "Personal", + "timeBlocks": "Bloques de Tiempo", + "plugins": "Plugins", + "contracts": "Contratos", + "settings": "Configuración", + "servicesSetup": "Configurar Servicios", + "resourcesSetup": "Configurar Recursos", + "branding": "Marca", + "bookingUrl": "URL de Reserva", + "resourceTypes": "Tipos de Recurso", + "emailSettings": "Configuración de Email", + "customDomains": "Dominios Personalizados", + "billing": "Facturación", + "apiSettings": "Configuración de API", + "authentication": "Autenticación", + "usageQuota": "Uso y Cuota" + }, + "introduction": { + "title": "Bienvenido a SmoothSchedule", + "description": "SmoothSchedule es una plataforma completa de programación diseñada para ayudar a las empresas a gestionar citas, clientes, personal y servicios. Esta guía completa cubre todo lo que necesitas saber para aprovechar al máximo la plataforma.", + "tocHint": "Usa la tabla de contenidos a la izquierda para saltar a secciones específicas, o desplázate por toda la guía." + }, + "gettingStarted": { + "title": "Primeros Pasos", + "checklistTitle": "Lista de Configuración Rápida", + "checklistDescription": "Sigue estos pasos para poner en marcha tu sistema de programación:", + "step1Title": "Configura tus Servicios", + "step1Description": "Define lo que ofreces: consultas, citas, clases, etc. Incluye nombres, duraciones y precios.", + "step2Title": "Añade tus Recursos", + "step2Description": "Crea miembros del personal, salas o equipos que pueden reservarse. Establece sus horarios de disponibilidad.", + "step3Title": "Configura tu Marca", + "step3Description": "Sube tu logotipo y establece los colores de tu marca para que los clientes reconozcan tu negocio.", + "step4Title": "Comparte tu URL de Reserva", + "step4Description": "Copia tu URL de reserva desde Configuración → Reserva y compártela con los clientes.", + "step5Title": "Comienza a Gestionar Citas", + "step5Description": "Usa el Calendario para ver, crear y gestionar reservas a medida que lleguen." + }, + "dashboard": { + "title": "Panel de Control", + "description": "El Panel de Control proporciona una visión general del rendimiento de tu negocio. Muestra métricas clave y gráficos para ayudarte a entender cómo va tu negocio de programación.", + "keyMetrics": "Métricas Clave", + "totalAppointments": "Total de Citas", + "totalAppointmentsDesc": "Número de reservas en el sistema", + "activeCustomers": "Clientes Activos", + "activeCustomersDesc": "Clientes con estado Activo", + "servicesMetric": "Servicios", + "servicesMetricDesc": "Número total de servicios ofrecidos", + "resourcesMetric": "Recursos", + "resourcesMetricDesc": "Personal, salas y equipos disponibles", + "charts": "Gráficos", + "revenueChart": "Gráfico de Ingresos:", + "revenueChartDesc": "Gráfico de barras mostrando ingresos diarios por día de la semana", + "appointmentsChart": "Gráfico de Citas:", + "appointmentsChartDesc": "Gráfico de líneas mostrando el volumen de citas por día" + }, + "scheduler": { + "title": "Calendario", + "description": "El Calendario es el corazón de SmoothSchedule. Proporciona una interfaz de calendario visual para gestionar todas tus citas con soporte completo de arrastrar y soltar.", + "interfaceLayout": "Diseño de la Interfaz", + "pendingSidebarTitle": "Barra Lateral Izquierda - Citas Pendientes", + "pendingSidebarDesc": "Citas sin programar esperando ser colocadas en el calendario. Arrástralas a los espacios de tiempo disponibles.", + "calendarViewTitle": "Centro - Vista del Calendario", + "calendarViewDesc": "Calendario principal mostrando citas organizadas por recurso en columnas. Cambia entre vistas de día, 3 días, semana y mes.", + "detailsSidebarTitle": "Barra Lateral Derecha - Detalles de la Cita", + "detailsSidebarDesc": "Haz clic en cualquier cita para ver/editar detalles, agregar notas, cambiar estado o enviar recordatorios.", + "keyFeatures": "Características Principales", + "dragDropFeature": "Arrastrar y Soltar:", + "dragDropDesc": "Mueve citas entre espacios de tiempo y recursos", + "resizeFeature": "Redimensionar:", + "resizeDesc": "Arrastra los bordes de las citas para cambiar la duración", + "quickCreateFeature": "Creación Rápida:", + "quickCreateDesc": "Doble clic en cualquier espacio vacío para crear una nueva cita", + "resourceFilterFeature": "Filtrado de Recursos:", + "resourceFilterDesc": "Alterna qué recursos son visibles en el calendario", + "statusColorsFeature": "Colores de Estado:", + "statusColorsDesc": "Las citas están codificadas por color según su estado (confirmada, pendiente, cancelada)", + "appointmentStatuses": "Estados de Cita", + "statusPending": "Pendiente", + "statusConfirmed": "Confirmada", + "statusCancelled": "Cancelada", + "statusCompleted": "Completada", + "statusNoShow": "No Presentado" + }, + "services": { + "title": "Servicios", + "description": "Los Servicios definen lo que los clientes pueden reservar contigo. Cada servicio tiene un nombre, duración, precio y descripción. La página de Servicios usa un diseño de dos columnas: una lista editable a la izquierda y una vista previa para el cliente a la derecha.", + "serviceProperties": "Propiedades del Servicio", + "nameProp": "Nombre", + "namePropDesc": "El título del servicio mostrado a los clientes", + "durationProp": "Duración", + "durationPropDesc": "Cuánto tiempo dura la cita (en minutos)", + "priceProp": "Precio", + "pricePropDesc": "Costo del servicio (mostrado a los clientes)", + "descriptionProp": "Descripción", + "descriptionPropDesc": "Detalles sobre lo que incluye el servicio", + "keyFeatures": "Características Principales", + "dragReorderFeature": "Arrastrar para Reordenar:", + "dragReorderDesc": "Cambia el orden de visualización arrastrando servicios arriba/abajo", + "photoGalleryFeature": "Galería de Fotos:", + "photoGalleryDesc": "Añade, reordena y elimina imágenes para cada servicio", + "livePreviewFeature": "Vista Previa en Vivo:", + "livePreviewDesc": "Ve cómo verán los clientes tu servicio en tiempo real", + "quickAddFeature": "Añadir Rápido:", + "quickAddDesc": "Crea nuevos servicios con el botón Añadir Servicio" + }, + "resources": { + "title": "Recursos", + "description": "Los Recursos son las cosas que se reservan: miembros del personal, salas, equipos o cualquier otra entidad reservable. Cada recurso aparece como una columna en el calendario.", + "resourceTypes": "Tipos de Recurso", + "staffType": "Personal", + "staffTypeDesc": "Personas que proporcionan servicios (empleados, contratistas, etc.)", + "roomType": "Sala", + "roomTypeDesc": "Espacios físicos (salas de reuniones, estudios, salas de tratamiento)", + "equipmentType": "Equipo", + "equipmentTypeDesc": "Elementos físicos (cámaras, proyectores, vehículos)", + "keyFeatures": "Características Principales", + "staffAutocompleteFeature": "Autocompletado de Personal:", + "staffAutocompleteDesc": "Al crear recursos de personal, vincúlalos a miembros existentes del personal", + "multilaneModeFeature": "Modo Multicarril:", + "multilaneModeDesc": "Habilita para recursos que pueden manejar múltiples reservas simultáneas", + "viewCalendarFeature": "Ver Calendario:", + "viewCalendarDesc": "Haz clic en el icono del calendario para ver el horario de un recurso", + "tableActionsFeature": "Acciones de Tabla:", + "tableActionsDesc": "Edita o elimina recursos desde la columna de acciones" + }, + "customers": { + "title": "Clientes", + "description": "La página de Clientes te permite gestionar a todas las personas que reservan citas con tu negocio. Rastrea su información, historial de reservas y estado.", + "customerStatuses": "Estados de Cliente", + "activeStatus": "Activo", + "activeStatusDesc": "El cliente puede reservar citas normalmente", + "inactiveStatus": "Inactivo", + "inactiveStatusDesc": "El registro del cliente está inactivo", + "blockedStatus": "Bloqueado", + "blockedStatusDesc": "El cliente no puede hacer nuevas reservas", + "keyFeatures": "Características Principales", + "searchFeature": "Buscar:", + "searchDesc": "Encuentra clientes por nombre, email o teléfono", + "filterFeature": "Filtrar:", + "filterDesc": "Filtra por estado (Activo, Inactivo, Bloqueado)", + "tagsFeature": "Etiquetas:", + "tagsDesc": "Organiza clientes con etiquetas personalizadas (VIP, Nuevo, etc.)", + "sortingFeature": "Ordenar:", + "sortingDesc": "Haz clic en los encabezados de columna para ordenar la tabla", + "masqueradingTitle": "Suplantar", + "masqueradingDesc": "Usa la función Suplantar para ver exactamente lo que ve un cliente cuando inicia sesión. Esto es útil para guiar a los clientes a través de tareas o solucionar problemas. Haz clic en el icono del ojo en la fila de un cliente para comenzar a suplantar." + }, + "staff": { + "title": "Personal", + "description": "La página de Personal te permite gestionar a los miembros del equipo que ayudan a administrar tu negocio. Invita nuevo personal, asigna roles y controla lo que cada persona puede acceder.", + "staffRoles": "Roles del Personal", + "ownerRole": "Propietario", + "ownerRoleDesc": "Acceso completo a todo incluyendo facturación y configuración. No puede ser eliminado.", + "managerRole": "Gerente", + "managerRoleDesc": "Puede gestionar personal, clientes, servicios y citas. Sin acceso a facturación.", + "staffRole": "Personal", + "staffRoleDesc": "Acceso básico. Puede ver el calendario y gestionar sus propias citas si es reservable.", + "invitingStaff": "Invitar Personal", + "inviteStep1": "Haz clic en el botón Invitar Personal", + "inviteStep2": "Ingresa su dirección de email", + "inviteStep3": "Selecciona un rol (Gerente o Personal)", + "inviteStep4": "Haz clic en Enviar Invitación", + "inviteStep5": "Recibirán un email con un enlace para unirse", + "makeBookable": "Hacer Reservable", + "makeBookableDesc": "La opción \"Hacer Reservable\" crea un recurso reservable para un miembro del personal. Cuando está habilitado, aparecen como una columna en el calendario y los clientes pueden reservar citas con ellos directamente." + }, + "timeBlocks": { + "title": "Bloques de Tiempo", + "description": "Los Bloques de Tiempo te permiten bloquear tiempo cuando no se pueden reservar citas. Úsalos para días festivos, cierres, descansos para almorzar o cualquier momento que necesites prevenir reservas.", + "blockLevels": "Niveles de Bloque", + "businessLevel": "Nivel de Negocio", + "businessLevelDesc": "Afecta a todo el negocio - todos los recursos. Úsalo para días festivos y cierres generales.", + "resourceLevel": "Nivel de Recurso", + "resourceLevelDesc": "Afecta solo a un recurso específico. Úsalo para horarios individuales del personal o mantenimiento de equipos.", + "blockTypes": "Tipos de Bloque", + "hardBlock": "Bloque Duro", + "hardBlockDesc": "Previene todas las reservas durante este tiempo. Los clientes no pueden reservar y el personal no puede anular.", + "softBlock": "Bloque Suave", + "softBlockDesc": "Muestra una advertencia pero permite reservar con confirmación. Úsalo para tiempos preferidos de descanso.", + "recurrencePatterns": "Patrones de Recurrencia", + "oneTimePattern": "Una vez", + "oneTimePatternDesc": "Una fecha o rango de fechas específico que ocurre una vez", + "weeklyPattern": "Semanal", + "weeklyPatternDesc": "Se repite en días específicos de la semana (ej: cada sábado)", + "monthlyPattern": "Mensual", + "monthlyPatternDesc": "Se repite en días específicos del mes (ej: 1ro y 15)", + "yearlyPattern": "Anual", + "yearlyPatternDesc": "Se repite en una fecha específica cada año (ej: 4 de julio)", + "holidayPattern": "Día Festivo", + "holidayPatternDesc": "Selecciona de días festivos predefinidos - el sistema calcula las fechas automáticamente", + "keyFeatures": "Características Principales", + "schedulerOverlayFeature": "Superposición del Calendario:", + "schedulerOverlayDesc": "Los tiempos bloqueados aparecen directamente en el calendario con indicadores visuales", + "colorCodingFeature": "Codificación de Color:", + "colorCodingDesc": "Los bloques del negocio usan rojo/amarillo, los bloques de recursos usan púrpura/cian", + "monthViewFeature": "Vista Mensual:", + "monthViewDesc": "Las fechas bloqueadas se muestran con fondos coloreados e indicadores de insignia", + "listViewFeature": "Vista de Lista:", + "listViewDesc": "Gestiona todos los bloques de tiempo en formato tabular con opciones de filtrado", + "staffAvailability": "Disponibilidad del Personal", + "staffAvailabilityDesc": "Los miembros del personal pueden gestionar sus propios bloques de tiempo a través de la página \"Mi Disponibilidad\". Esto les permite bloquear tiempo para citas personales, vacaciones u otros compromisos sin necesitar acceso de administrador.", + "learnMore": "Más Información", + "timeBlocksDocumentation": "Documentación de Bloques de Tiempo", + "timeBlocksDocumentationDesc": "Guía completa para crear, gestionar y visualizar bloques de tiempo" + }, + "plugins": { + "title": "Plugins", + "description": "Los Plugins extienden SmoothSchedule con automatización e integraciones personalizadas. Explora el mercado de plugins prediseñados o crea los tuyos usando nuestro lenguaje de scripting.", + "whatPluginsCanDo": "Lo que Pueden Hacer los Plugins", + "sendEmailsCapability": "Enviar Emails:", + "sendEmailsDesc": "Recordatorios, confirmaciones y seguimientos automatizados", + "webhooksCapability": "Webhooks:", + "webhooksDesc": "Integra con servicios externos cuando ocurren eventos", + "reportsCapability": "Informes:", + "reportsDesc": "Genera y envía informes de negocio por email según un horario", + "cleanupCapability": "Limpieza:", + "cleanupDesc": "Archiva automáticamente datos antiguos o gestiona registros", + "pluginTypes": "Tipos de Plugin", + "marketplacePlugins": "Plugins del Mercado", + "marketplacePluginsDesc": "Plugins prediseñados disponibles para instalar inmediatamente. Explora, instala y configura con unos pocos clics.", + "customPlugins": "Plugins Personalizados", + "customPluginsDesc": "Crea tus propios plugins usando nuestro lenguaje de scripting. Control total sobre lógica y disparadores.", + "triggers": "Disparadores", + "triggersDesc": "Los plugins pueden activarse de varias maneras:", + "beforeEventTrigger": "Antes del Evento", + "atStartTrigger": "Al Inicio", + "afterEndTrigger": "Después del Fin", + "onStatusChangeTrigger": "Al Cambiar Estado", + "learnMore": "Más Información", + "pluginDocumentation": "Documentación de Plugins", + "pluginDocumentationDesc": "Guía completa para crear y usar plugins, incluyendo referencia de API y ejemplos" + }, + "contracts": { + "title": "Contratos", + "description": "La función de Contratos permite la firma electrónica de documentos para tu negocio. Crea plantillas reutilizables, envía contratos a clientes y mantén registros de auditoría legalmente conformes con generación automática de PDF.", + "contractTemplates": "Plantillas de Contrato", + "templatesDesc": "Las plantillas son documentos de contrato reutilizables con variables de marcador de posición que se completan al enviar:", + "templateProperties": "Propiedades de la Plantilla", + "templateNameProp": "Nombre:", + "templateNamePropDesc": "Identificador interno de la plantilla", + "templateContentProp": "Contenido:", + "templateContentPropDesc": "Documento HTML con variables", + "templateScopeProp": "Alcance:", + "templateScopePropDesc": "A nivel de cliente o por cita", + "templateExpirationProp": "Expiración:", + "templateExpirationPropDesc": "Días hasta que el contrato expire", + "availableVariables": "Variables Disponibles", + "contractWorkflow": "Flujo de Trabajo del Contrato", + "workflowStep1Title": "Crear Contrato", + "workflowStep1Desc": "Selecciona una plantilla y cliente. Las variables se completan automáticamente.", + "workflowStep2Title": "Enviar para Firma", + "workflowStep2Desc": "El cliente recibe un email con un enlace de firma seguro.", + "workflowStep3Title": "El Cliente Firma", + "workflowStep3Desc": "El cliente acepta mediante consentimiento con casilla de verificación con captura completa de auditoría.", + "workflowStep4Title": "PDF Generado", + "workflowStep4Desc": "El PDF firmado con registro de auditoría se genera y almacena automáticamente.", + "contractStatuses": "Estados del Contrato", + "pendingStatus": "Pendiente", + "pendingStatusDesc": "Esperando firma", + "signedStatus": "Firmado", + "signedStatusDesc": "Completado exitosamente", + "expiredStatus": "Expirado", + "expiredStatusDesc": "Pasada la fecha de expiración", + "voidedStatus": "Anulado", + "voidedStatusDesc": "Cancelado manualmente", + "legalCompliance": "Cumplimiento Legal", + "complianceTitle": "Compatible con ESIGN y UETA", + "complianceDesc": "Todas las firmas capturan: marca de tiempo, dirección IP, agente de usuario, hash del documento, estados de casillas de consentimiento y texto exacto de consentimiento. Esto crea un registro de auditoría legalmente defendible.", + "keyFeatures": "Características Principales", + "emailDeliveryFeature": "Entrega por Email:", + "emailDeliveryDesc": "Los contratos se envían directamente al email del cliente con enlace de firma", + "shareableLinksFeature": "Enlaces Compartibles:", + "shareableLinksDesc": "Copia el enlace de firma para compartir por otros canales", + "pdfDownloadFeature": "Descarga de PDF:", + "pdfDownloadDesc": "Descarga contratos firmados con registro de auditoría completo", + "statusTrackingFeature": "Seguimiento de Estado:", + "statusTrackingDesc": "Monitorea qué contratos están pendientes, firmados o expirados", + "contractsDocumentation": "Documentación de Contratos", + "contractsDocumentationDesc": "Guía completa de plantillas, firma y funciones de cumplimiento" + }, + "settings": { + "title": "Configuración", + "description": "Configuración es donde los propietarios del negocio configuran su plataforma de programación. La mayoría de las configuraciones son solo para propietarios y afectan cómo opera tu negocio.", + "ownerAccessNote": "Se Requiere Acceso de Propietario:", + "ownerAccessDesc": "Solo los propietarios del negocio pueden acceder a la mayoría de las páginas de configuración.", + "generalSettings": "Configuración General", + "generalSettingsDesc": "Configura el nombre de tu negocio, zona horaria e información de contacto.", + "businessNameSetting": "Nombre del Negocio:", + "businessNameSettingDesc": "El nombre de tu empresa mostrado en toda la aplicación", + "subdomainSetting": "Subdominio:", + "subdomainSettingDesc": "Tu URL de reserva (solo lectura después de la creación)", + "timezoneSetting": "Zona Horaria:", + "timezoneSettingDesc": "Zona horaria de operación del negocio", + "timeDisplaySetting": "Modo de Visualización de Hora:", + "timeDisplaySettingDesc": "Mostrar horas en zona horaria del negocio o del espectador", + "contactSetting": "Email/Teléfono de Contacto:", + "contactSettingDesc": "Cómo los clientes pueden contactarte", + "bookingSettings": "Configuración de Reserva", + "bookingSettingsDesc": "Tu URL de reserva y configuración de redirección post-reserva.", + "bookingUrlSetting": "URL de Reserva:", + "bookingUrlSettingDesc": "El enlace que los clientes usan para reservar (cópialo/compártelo)", + "returnUrlSetting": "URL de Retorno:", + "returnUrlSettingDesc": "A dónde redirigir a los clientes después de reservar (opcional)", + "brandingSettings": "Marca (Apariencia)", + "brandingSettingsDesc": "Personaliza la apariencia de tu negocio con logotipos y colores.", + "websiteLogoSetting": "Logo del Sitio Web:", + "websiteLogoSettingDesc": "Aparece en la barra lateral y páginas de reserva (500×500px recomendado)", + "emailLogoSetting": "Logo de Email:", + "emailLogoSettingDesc": "Aparece en notificaciones por email (600×200px recomendado)", + "displayModeSetting": "Modo de Visualización:", + "displayModeSettingDesc": "Solo Texto, Solo Logo, o Logo y Texto", + "colorPalettesSetting": "Paletas de Color:", + "colorPalettesSettingDesc": "10 paletas predefinidas para elegir", + "customColorsSetting": "Colores Personalizados:", + "customColorsSettingDesc": "Establece tus propios colores primario y secundario", + "otherSettings": "Otras Configuraciones", + "resourceTypesLink": "Tipos de Recurso", + "resourceTypesLinkDesc": "Configura tipos de personal, sala, equipo", + "emailTemplatesLink": "Plantillas de Email", + "emailTemplatesLinkDesc": "Personaliza notificaciones por email", + "customDomainsLink": "Dominios Personalizados", + "customDomainsLinkDesc": "Usa tu propio dominio para reservas", + "billingLink": "Facturación", + "billingLinkDesc": "Gestiona suscripción y pagos", + "apiSettingsLink": "Configuración de API", + "apiSettingsLinkDesc": "Claves de API y webhooks", + "usageQuotaLink": "Uso y Cuota", + "usageQuotaLinkDesc": "Rastrea uso y límites" + }, + "footer": { + "title": "¿Necesitas Más Ayuda?", + "description": "¿No encuentras lo que buscas? Nuestro equipo de soporte está listo para ayudar.", + "contactSupport": "Contactar Soporte" + } } } diff --git a/frontend/src/i18n/locales/fr.json b/frontend/src/i18n/locales/fr.json index 1800034..8cfaf10 100644 --- a/frontend/src/i18n/locales/fr.json +++ b/frontend/src/i18n/locales/fr.json @@ -179,6 +179,138 @@ "endpoint": "Point de terminaison", "request": "Requête", "response": "Réponse" + }, + "contracts": { + "overview": { + "title": "Système de Contrats et Signature Électronique", + "description": "Le système de contrats vous permet de créer des modèles de contrats, de les envoyer aux clients pour signature et de maintenir des pistes d'audit conformes à la loi.", + "compliance": "Conçu pour la conformité ESIGN Act et UETA, capturant toutes les données nécessaires pour des signatures électroniques juridiquement contraignantes." + }, + "pageLayout": { + "title": "Mise en Page", + "description": "La page Contrats est organisée en deux sections principales :", + "templatesSection": "Modèles - Créez et gérez des modèles de contrats réutilisables", + "sentContractsSection": "Contrats Envoyés - Suivez les contrats envoyés aux clients", + "tip": "Astuce : Les deux sections peuvent être développées ou réduites en cliquant sur les en-têtes. Votre préférence est mémorisée." + }, + "templates": { + "title": "Modèles de Contrats", + "description": "Les modèles sont des documents réutilisables avec des espaces réservés qui sont automatiquement remplis lors de l'envoi aux clients.", + "variablesTitle": "Variables Disponibles", + "variablesDescription": "Utilisez ces espaces réservés dans le contenu de votre modèle pour personnaliser automatiquement les contrats :", + "variables": { + "customerName": "Nom complet", + "customerFirstName": "Prénom", + "customerEmail": "Adresse e-mail", + "customerPhone": "Numéro de téléphone", + "businessName": "Nom de votre entreprise", + "businessEmail": "E-mail de contact", + "businessPhone": "Téléphone de l'entreprise", + "date": "Date actuelle", + "year": "Année actuelle" + }, + "scopesTitle": "Portées de Contrat", + "scopes": { + "customer": "Contrats uniques par client (ex: politique de confidentialité, conditions d'utilisation). Une fois signé, n'est plus envoyé.", + "appointment": "Signé à chaque réservation (ex: décharges de responsabilité, accords de service). Des contrats uniques sont créés pour chaque rendez-vous." + } + }, + "creating": { + "title": "Création d'un Modèle", + "description": "Pour créer un nouveau modèle de contrat :", + "steps": { + "1": "Cliquez sur le bouton \"Nouveau Modèle\"", + "2": "Entrez un nom et une description pour le modèle", + "3": "Rédigez le contenu de votre contrat avec l'éditeur HTML", + "4": "Définissez la portée (Niveau Client ou Par Rendez-vous)", + "5": "Définissez optionnellement l'expiration (en jours) et les notes de version", + "6": "Mettez le statut sur Actif lorsque vous êtes prêt à utiliser le modèle" + } + }, + "managing": { + "title": "Gestion des Modèles", + "description": "Chaque modèle affiche sa portée, son statut et sa version. Utilisez le menu d'actions pour :", + "actions": { + "preview": "Voir comment le contrat apparaît en PDF avec des données d'exemple", + "edit": "Mettre à jour le nom, le contenu ou les paramètres du modèle", + "delete": "Supprimer définitivement un modèle (impossible à annuler si des contrats actifs existent)" + }, + "note": "Note : Les modèles ont des statuts : Brouillon (pas prêt), Actif (peut être envoyé) et Archivé (caché mais conservé pour les archives)" + }, + "sending": { + "title": "Envoi de Contrats", + "description": "Pour envoyer un contrat à un client :", + "steps": { + "1": "Cliquez sur \"Créer un Contrat\" dans la section Contrats Envoyés", + "2": "Sélectionnez un modèle actif dans la liste déroulante", + "3": "Recherchez et sélectionnez un client", + "4": "Associez optionnellement à un rendez-vous ou service spécifique", + "5": "Cochez \"Envoyer l'e-mail immédiatement\" pour notifier le client", + "6": "Cliquez sur \"Envoyer le Contrat\"" + } + }, + "statusActions": { + "title": "Statuts et Actions des Contrats", + "statuses": { + "pending": "Envoyé mais pas encore signé", + "signed": "Signé avec succès par le client", + "expired": "La date limite de signature est passée", + "voided": "Révoqué manuellement par l'entreprise" + }, + "actionsTitle": "Actions Disponibles", + "actions": { + "viewDetails": "Voir les informations complètes du contrat et l'aperçu du contenu", + "copyLink": "Obtenir l'URL de signature publique à partager avec le client", + "openSigning": "Prévisualiser ce que voit le client", + "resend": "Envoyer un autre e-mail de rappel de signature", + "void": "Révoquer un contrat en attente" + } + }, + "legalCompliance": { + "title": "Conformité Légale", + "notice": "Le système de contrats est conçu pour répondre aux exigences ESIGN Act et UETA. Chaque signature capture :", + "auditDataTitle": "Données de Piste d'Audit", + "auditData": { + "documentHash": "Hash du document (SHA-256) - Preuve d'intégrité", + "signedTimestamp": "Horodatage de signature (ISO) - Moment de la signature", + "ipAddress": "Adresse IP - Identification du signataire", + "userAgent": "Agent utilisateur - Informations navigateur/appareil", + "consentCheckbox": "États des cases de consentement - Preuve d'intention", + "geolocation": "Géolocalisation (optionnel) - Identification supplémentaire" + } + }, + "pdfGeneration": { + "title": "Génération PDF", + "description": "Après la signature d'un contrat, un PDF est automatiquement généré contenant :", + "includes": { + "content": "Contenu complet du contrat", + "signature": "Section de signature avec nom du signataire et date", + "audit": "Tableau de piste d'audit avec toutes les données de conformité", + "legal": "Mention légale sur la conformité ESIGN Act" + }, + "tip": "Les PDF signés peuvent être téléchargés par l'entreprise et le client pour leurs archives." + }, + "bestPractices": { + "title": "Bonnes Pratiques", + "tips": { + "1": "Utilisez des noms de modèles clairs et descriptifs pour une identification facile", + "2": "Gardez le contenu du contrat concis et lisible", + "3": "Testez les modèles avec des données d'exemple avant de les mettre en Actif", + "4": "Utilisez les notes de version pour suivre les modifications", + "5": "Archivez les anciens modèles au lieu de les supprimer pour préserver l'historique", + "6": "Définissez des dates d'expiration appropriées pour les contrats urgents" + } + }, + "relatedFeatures": { + "title": "Fonctionnalités Associées", + "servicesGuide": "Voir le Guide des Services pour associer des contrats aux services", + "customersGuide": "Voir le Guide des Clients pour gérer les contacts clients" + }, + "needHelp": { + "title": "Besoin d'Aide ?", + "description": "Si vous avez des questions sur l'utilisation des contrats, notre équipe de support est là pour vous aider.", + "contactSupport": "Contacter le Support" + } } }, "dashboard": { @@ -589,6 +721,25 @@ "title": "Marque Blanche", "description": "Supprimez notre marque et faites de la plateforme la vôtre." } + }, + "contracts": { + "badge": "Conformité Légale", + "title": "Contrats Numériques et Signatures Électroniques", + "description": "Créez des contrats professionnels, envoyez-les pour signature électronique et maintenez des registres légalement conformes. Conçu pour la conformité ESIGN Act et UETA avec pistes d'audit complètes.", + "features": { + "templates": "Créez des modèles de contrats réutilisables avec des espaces réservés", + "eSignature": "Recueillez des signatures électroniques juridiquement contraignantes", + "auditTrail": "Piste d'audit complète avec IP, horodatage et géolocalisation", + "pdfGeneration": "Génération automatique de PDF avec vérification de signature" + }, + "compliance": { + "title": "Conformité Légale", + "description": "Chaque signature capture le hash du document, l'horodatage, l'adresse IP et les enregistrements de consentement." + }, + "automation": { + "title": "Flux Automatisés", + "description": "Envoyez automatiquement des contrats lors de la réservation ou liez-les à des services spécifiques." + } } }, "howItWorks": { @@ -1051,6 +1202,10 @@ "advancedAnalytics": { "title": "Analyses Avancées", "description": "Insights approfondis sur les revenus, l'utilisation et les performances du personnel." + }, + "digitalContracts": { + "title": "Contrats Numériques", + "description": "Envoyez des contrats pour signature électronique avec conformité légale complète et pistes d'audit." } }, "testimonialsSection": { @@ -1417,5 +1572,354 @@ "manageTimeBlocks": "Gérer les Blocs de Temps", "myAvailability": "Ma Disponibilité" } + }, + "helpComprehensive": { + "header": { + "back": "Retour", + "title": "Guide Complet SmoothSchedule", + "contactSupport": "Contacter le Support" + }, + "toc": { + "contents": "Sommaire", + "gettingStarted": "Premiers Pas", + "dashboard": "Tableau de Bord", + "scheduler": "Calendrier", + "services": "Services", + "resources": "Ressources", + "customers": "Clients", + "staff": "Personnel", + "timeBlocks": "Blocs de Temps", + "plugins": "Plugins", + "contracts": "Contrats", + "settings": "Paramètres", + "servicesSetup": "Configuration des Services", + "resourcesSetup": "Configuration des Ressources", + "branding": "Image de Marque", + "bookingUrl": "URL de Réservation", + "resourceTypes": "Types de Ressource", + "emailSettings": "Paramètres Email", + "customDomains": "Domaines Personnalisés", + "billing": "Facturation", + "apiSettings": "Paramètres API", + "authentication": "Authentification", + "usageQuota": "Utilisation et Quota" + }, + "introduction": { + "title": "Bienvenue sur SmoothSchedule", + "description": "SmoothSchedule est une plateforme de planification complète conçue pour aider les entreprises à gérer les rendez-vous, clients, personnel et services. Ce guide complet couvre tout ce que vous devez savoir pour tirer le meilleur parti de la plateforme.", + "tocHint": "Utilisez la table des matières à gauche pour accéder à des sections spécifiques, ou faites défiler l'ensemble du guide." + }, + "gettingStarted": { + "title": "Premiers Pas", + "checklistTitle": "Liste de Configuration Rapide", + "checklistDescription": "Suivez ces étapes pour mettre en place votre système de planification :", + "step1Title": "Configurez vos Services", + "step1Description": "Définissez ce que vous proposez : consultations, rendez-vous, cours, etc. Incluez les noms, durées et prix.", + "step2Title": "Ajoutez vos Ressources", + "step2Description": "Créez des membres du personnel, des salles ou des équipements qui peuvent être réservés. Définissez leurs horaires de disponibilité.", + "step3Title": "Configurez votre Marque", + "step3Description": "Téléchargez votre logo et définissez les couleurs de votre marque pour que les clients reconnaissent votre entreprise.", + "step4Title": "Partagez votre URL de Réservation", + "step4Description": "Copiez votre URL de réservation depuis Paramètres → Réservation et partagez-la avec les clients.", + "step5Title": "Commencez à Gérer les Rendez-vous", + "step5Description": "Utilisez le Calendrier pour visualiser, créer et gérer les réservations au fur et à mesure qu'elles arrivent." + }, + "dashboard": { + "title": "Tableau de Bord", + "description": "Le Tableau de Bord fournit un aperçu des performances de votre entreprise. Il affiche des métriques clés et des graphiques pour vous aider à comprendre comment fonctionne votre activité de planification.", + "keyMetrics": "Métriques Clés", + "totalAppointments": "Total des Rendez-vous", + "totalAppointmentsDesc": "Nombre de réservations dans le système", + "activeCustomers": "Clients Actifs", + "activeCustomersDesc": "Clients avec le statut Actif", + "servicesMetric": "Services", + "servicesMetricDesc": "Nombre total de services proposés", + "resourcesMetric": "Ressources", + "resourcesMetricDesc": "Personnel, salles et équipements disponibles", + "charts": "Graphiques", + "revenueChart": "Graphique des Revenus :", + "revenueChartDesc": "Graphique en barres montrant les revenus quotidiens par jour de la semaine", + "appointmentsChart": "Graphique des Rendez-vous :", + "appointmentsChartDesc": "Graphique en ligne montrant le volume de rendez-vous par jour" + }, + "scheduler": { + "title": "Calendrier", + "description": "Le Calendrier est le cœur de SmoothSchedule. Il fournit une interface de calendrier visuel pour gérer tous vos rendez-vous avec un support complet du glisser-déposer.", + "interfaceLayout": "Disposition de l'Interface", + "pendingSidebarTitle": "Barre Latérale Gauche - Rendez-vous en Attente", + "pendingSidebarDesc": "Rendez-vous non programmés en attente d'être placés sur le calendrier. Faites-les glisser vers les créneaux horaires disponibles.", + "calendarViewTitle": "Centre - Vue du Calendrier", + "calendarViewDesc": "Calendrier principal montrant les rendez-vous organisés par ressource en colonnes. Basculez entre les vues jour, 3 jours, semaine et mois.", + "detailsSidebarTitle": "Barre Latérale Droite - Détails du Rendez-vous", + "detailsSidebarDesc": "Cliquez sur n'importe quel rendez-vous pour voir/modifier les détails, ajouter des notes, changer le statut ou envoyer des rappels.", + "keyFeatures": "Fonctionnalités Principales", + "dragDropFeature": "Glisser-Déposer :", + "dragDropDesc": "Déplacez les rendez-vous entre les créneaux horaires et les ressources", + "resizeFeature": "Redimensionner :", + "resizeDesc": "Faites glisser les bords des rendez-vous pour modifier la durée", + "quickCreateFeature": "Création Rapide :", + "quickCreateDesc": "Double-cliquez sur n'importe quel créneau vide pour créer un nouveau rendez-vous", + "resourceFilterFeature": "Filtrage des Ressources :", + "resourceFilterDesc": "Basculez quelles ressources sont visibles dans le calendrier", + "statusColorsFeature": "Couleurs de Statut :", + "statusColorsDesc": "Les rendez-vous sont codés par couleur selon leur statut (confirmé, en attente, annulé)", + "appointmentStatuses": "Statuts de Rendez-vous", + "statusPending": "En Attente", + "statusConfirmed": "Confirmé", + "statusCancelled": "Annulé", + "statusCompleted": "Terminé", + "statusNoShow": "Absent" + }, + "services": { + "title": "Services", + "description": "Les Services définissent ce que les clients peuvent réserver chez vous. Chaque service a un nom, une durée, un prix et une description. La page Services utilise une disposition à deux colonnes : une liste modifiable à gauche et un aperçu client à droite.", + "serviceProperties": "Propriétés du Service", + "nameProp": "Nom", + "namePropDesc": "Le titre du service affiché aux clients", + "durationProp": "Durée", + "durationPropDesc": "Combien de temps dure le rendez-vous (en minutes)", + "priceProp": "Prix", + "pricePropDesc": "Coût du service (affiché aux clients)", + "descriptionProp": "Description", + "descriptionPropDesc": "Détails sur ce qu'inclut le service", + "keyFeatures": "Fonctionnalités Principales", + "dragReorderFeature": "Glisser pour Réordonner :", + "dragReorderDesc": "Changez l'ordre d'affichage en faisant glisser les services vers le haut/bas", + "photoGalleryFeature": "Galerie Photo :", + "photoGalleryDesc": "Ajoutez, réordonnez et supprimez des images pour chaque service", + "livePreviewFeature": "Aperçu en Direct :", + "livePreviewDesc": "Voyez comment les clients verront votre service en temps réel", + "quickAddFeature": "Ajout Rapide :", + "quickAddDesc": "Créez de nouveaux services avec le bouton Ajouter un Service" + }, + "resources": { + "title": "Ressources", + "description": "Les Ressources sont les éléments qui sont réservés : membres du personnel, salles, équipements ou toute autre entité réservable. Chaque ressource apparaît comme une colonne dans le calendrier.", + "resourceTypes": "Types de Ressource", + "staffType": "Personnel", + "staffTypeDesc": "Personnes qui fournissent des services (employés, prestataires, etc.)", + "roomType": "Salle", + "roomTypeDesc": "Espaces physiques (salles de réunion, studios, salles de soins)", + "equipmentType": "Équipement", + "equipmentTypeDesc": "Éléments physiques (caméras, projecteurs, véhicules)", + "keyFeatures": "Fonctionnalités Principales", + "staffAutocompleteFeature": "Auto-complétion du Personnel :", + "staffAutocompleteDesc": "Lors de la création de ressources de personnel, liez-les aux membres du personnel existants", + "multilaneModeFeature": "Mode Multi-voies :", + "multilaneModeDesc": "Activez pour les ressources pouvant gérer plusieurs réservations simultanées", + "viewCalendarFeature": "Voir le Calendrier :", + "viewCalendarDesc": "Cliquez sur l'icône du calendrier pour voir l'emploi du temps d'une ressource", + "tableActionsFeature": "Actions du Tableau :", + "tableActionsDesc": "Modifiez ou supprimez des ressources depuis la colonne d'actions" + }, + "customers": { + "title": "Clients", + "description": "La page Clients vous permet de gérer toutes les personnes qui prennent des rendez-vous avec votre entreprise. Suivez leurs informations, historique de réservation et statut.", + "customerStatuses": "Statuts Client", + "activeStatus": "Actif", + "activeStatusDesc": "Le client peut prendre des rendez-vous normalement", + "inactiveStatus": "Inactif", + "inactiveStatusDesc": "Le dossier client est inactif", + "blockedStatus": "Bloqué", + "blockedStatusDesc": "Le client ne peut pas faire de nouvelles réservations", + "keyFeatures": "Fonctionnalités Principales", + "searchFeature": "Rechercher :", + "searchDesc": "Trouvez des clients par nom, email ou téléphone", + "filterFeature": "Filtrer :", + "filterDesc": "Filtrez par statut (Actif, Inactif, Bloqué)", + "tagsFeature": "Étiquettes :", + "tagsDesc": "Organisez les clients avec des étiquettes personnalisées (VIP, Nouveau, etc.)", + "sortingFeature": "Tri :", + "sortingDesc": "Cliquez sur les en-têtes de colonne pour trier le tableau", + "masqueradingTitle": "Usurpation d'Identité", + "masqueradingDesc": "Utilisez la fonction d'Usurpation pour voir exactement ce qu'un client voit lorsqu'il se connecte. C'est utile pour guider les clients à travers des tâches ou résoudre des problèmes. Cliquez sur l'icône œil dans la ligne d'un client pour commencer l'usurpation." + }, + "staff": { + "title": "Personnel", + "description": "La page Personnel vous permet de gérer les membres de l'équipe qui aident à gérer votre entreprise. Invitez de nouveaux membres, attribuez des rôles et contrôlez ce que chaque personne peut accéder.", + "staffRoles": "Rôles du Personnel", + "ownerRole": "Propriétaire", + "ownerRoleDesc": "Accès complet à tout, y compris la facturation et les paramètres. Ne peut pas être supprimé.", + "managerRole": "Manager", + "managerRoleDesc": "Peut gérer le personnel, les clients, les services et les rendez-vous. Pas d'accès à la facturation.", + "staffRole": "Personnel", + "staffRoleDesc": "Accès basique. Peut voir le calendrier et gérer ses propres rendez-vous s'il est réservable.", + "invitingStaff": "Inviter du Personnel", + "inviteStep1": "Cliquez sur le bouton Inviter du Personnel", + "inviteStep2": "Entrez leur adresse email", + "inviteStep3": "Sélectionnez un rôle (Manager ou Personnel)", + "inviteStep4": "Cliquez sur Envoyer l'Invitation", + "inviteStep5": "Ils recevront un email avec un lien pour rejoindre", + "makeBookable": "Rendre Réservable", + "makeBookableDesc": "L'option \"Rendre Réservable\" crée une ressource réservable pour un membre du personnel. Lorsqu'elle est activée, ils apparaissent comme une colonne dans le calendrier et les clients peuvent prendre des rendez-vous avec eux directement." + }, + "timeBlocks": { + "title": "Blocs de Temps", + "description": "Les Blocs de Temps vous permettent de bloquer du temps lorsque les rendez-vous ne peuvent pas être réservés. Utilisez-les pour les jours fériés, fermetures, pauses déjeuner ou tout moment où vous devez empêcher les réservations.", + "blockLevels": "Niveaux de Bloc", + "businessLevel": "Niveau Entreprise", + "businessLevelDesc": "Affecte toute l'entreprise - toutes les ressources. Utilisez pour les jours fériés et fermetures générales.", + "resourceLevel": "Niveau Ressource", + "resourceLevelDesc": "Affecte uniquement une ressource spécifique. Utilisez pour les horaires individuels du personnel ou la maintenance des équipements.", + "blockTypes": "Types de Bloc", + "hardBlock": "Bloc Ferme", + "hardBlockDesc": "Empêche toutes les réservations pendant cette période. Les clients ne peuvent pas réserver et le personnel ne peut pas passer outre.", + "softBlock": "Bloc Souple", + "softBlockDesc": "Affiche un avertissement mais permet la réservation avec confirmation. Utilisez pour les temps de repos préférés.", + "recurrencePatterns": "Modèles de Récurrence", + "oneTimePattern": "Unique", + "oneTimePatternDesc": "Une date ou plage de dates spécifique qui se produit une seule fois", + "weeklyPattern": "Hebdomadaire", + "weeklyPatternDesc": "Se répète certains jours de la semaine (ex : chaque samedi)", + "monthlyPattern": "Mensuel", + "monthlyPatternDesc": "Se répète certains jours du mois (ex : 1er et 15)", + "yearlyPattern": "Annuel", + "yearlyPatternDesc": "Se répète à une date spécifique chaque année (ex : 14 juillet)", + "holidayPattern": "Jour Férié", + "holidayPatternDesc": "Sélectionnez parmi les jours fériés prédéfinis - le système calcule automatiquement les dates", + "keyFeatures": "Fonctionnalités Principales", + "schedulerOverlayFeature": "Superposition du Calendrier :", + "schedulerOverlayDesc": "Les temps bloqués apparaissent directement sur le calendrier avec des indicateurs visuels", + "colorCodingFeature": "Codage Couleur :", + "colorCodingDesc": "Les blocs entreprise utilisent rouge/jaune, les blocs ressource utilisent violet/cyan", + "monthViewFeature": "Vue Mensuelle :", + "monthViewDesc": "Les dates bloquées s'affichent avec des arrière-plans colorés et des indicateurs de badge", + "listViewFeature": "Vue Liste :", + "listViewDesc": "Gérez tous les blocs de temps dans un format tabulaire avec des options de filtrage", + "staffAvailability": "Disponibilité du Personnel", + "staffAvailabilityDesc": "Les membres du personnel peuvent gérer leurs propres blocs de temps via la page \"Ma Disponibilité\". Cela leur permet de bloquer du temps pour des rendez-vous personnels, vacances ou autres engagements sans avoir besoin d'un accès administrateur.", + "learnMore": "En Savoir Plus", + "timeBlocksDocumentation": "Documentation des Blocs de Temps", + "timeBlocksDocumentationDesc": "Guide complet pour créer, gérer et visualiser les blocs de temps" + }, + "plugins": { + "title": "Plugins", + "description": "Les Plugins étendent SmoothSchedule avec des automatisations et intégrations personnalisées. Parcourez le marché de plugins préconçus ou créez les vôtres en utilisant notre langage de script.", + "whatPluginsCanDo": "Ce que les Plugins Peuvent Faire", + "sendEmailsCapability": "Envoyer des Emails :", + "sendEmailsDesc": "Rappels, confirmations et suivis automatisés", + "webhooksCapability": "Webhooks :", + "webhooksDesc": "Intégrez avec des services externes lorsque des événements se produisent", + "reportsCapability": "Rapports :", + "reportsDesc": "Générez et envoyez des rapports d'entreprise par email selon un calendrier", + "cleanupCapability": "Nettoyage :", + "cleanupDesc": "Archivez automatiquement les anciennes données ou gérez les enregistrements", + "pluginTypes": "Types de Plugin", + "marketplacePlugins": "Plugins du Marché", + "marketplacePluginsDesc": "Plugins préconçus disponibles pour installation immédiate. Parcourez, installez et configurez en quelques clics.", + "customPlugins": "Plugins Personnalisés", + "customPluginsDesc": "Créez vos propres plugins en utilisant notre langage de script. Contrôle total sur la logique et les déclencheurs.", + "triggers": "Déclencheurs", + "triggersDesc": "Les plugins peuvent être déclenchés de différentes manières :", + "beforeEventTrigger": "Avant l'Événement", + "atStartTrigger": "Au Début", + "afterEndTrigger": "Après la Fin", + "onStatusChangeTrigger": "Au Changement de Statut", + "learnMore": "En Savoir Plus", + "pluginDocumentation": "Documentation des Plugins", + "pluginDocumentationDesc": "Guide complet pour créer et utiliser des plugins, y compris la référence API et des exemples" + }, + "contracts": { + "title": "Contrats", + "description": "La fonction Contrats permet la signature électronique de documents pour votre entreprise. Créez des modèles réutilisables, envoyez des contrats aux clients et maintenez des pistes d'audit légalement conformes avec génération automatique de PDF.", + "contractTemplates": "Modèles de Contrat", + "templatesDesc": "Les modèles sont des documents de contrat réutilisables avec des variables de remplacement qui sont remplies lors de l'envoi :", + "templateProperties": "Propriétés du Modèle", + "templateNameProp": "Nom :", + "templateNamePropDesc": "Identifiant interne du modèle", + "templateContentProp": "Contenu :", + "templateContentPropDesc": "Document HTML avec variables", + "templateScopeProp": "Portée :", + "templateScopePropDesc": "Au niveau client ou par rendez-vous", + "templateExpirationProp": "Expiration :", + "templateExpirationPropDesc": "Jours jusqu'à expiration du contrat", + "availableVariables": "Variables Disponibles", + "contractWorkflow": "Flux de Travail du Contrat", + "workflowStep1Title": "Créer le Contrat", + "workflowStep1Desc": "Sélectionnez un modèle et un client. Les variables sont automatiquement remplies.", + "workflowStep2Title": "Envoyer pour Signature", + "workflowStep2Desc": "Le client reçoit un email avec un lien de signature sécurisé.", + "workflowStep3Title": "Le Client Signe", + "workflowStep3Desc": "Le client accepte via un consentement par case à cocher avec capture complète de la piste d'audit.", + "workflowStep4Title": "PDF Généré", + "workflowStep4Desc": "Le PDF signé avec piste d'audit est automatiquement généré et stocké.", + "contractStatuses": "Statuts du Contrat", + "pendingStatus": "En Attente", + "pendingStatusDesc": "En attente de signature", + "signedStatus": "Signé", + "signedStatusDesc": "Terminé avec succès", + "expiredStatus": "Expiré", + "expiredStatusDesc": "Date d'expiration passée", + "voidedStatus": "Annulé", + "voidedStatusDesc": "Annulé manuellement", + "legalCompliance": "Conformité Légale", + "complianceTitle": "Conforme ESIGN et UETA", + "complianceDesc": "Toutes les signatures capturent : horodatage, adresse IP, agent utilisateur, hash du document, états des cases de consentement et texte exact du consentement. Cela crée une piste d'audit légalement défendable.", + "keyFeatures": "Fonctionnalités Principales", + "emailDeliveryFeature": "Livraison par Email :", + "emailDeliveryDesc": "Les contrats sont envoyés directement à l'email du client avec un lien de signature", + "shareableLinksFeature": "Liens Partageables :", + "shareableLinksDesc": "Copiez le lien de signature pour partager via d'autres canaux", + "pdfDownloadFeature": "Téléchargement PDF :", + "pdfDownloadDesc": "Téléchargez les contrats signés avec la piste d'audit complète", + "statusTrackingFeature": "Suivi du Statut :", + "statusTrackingDesc": "Surveillez quels contrats sont en attente, signés ou expirés", + "contractsDocumentation": "Documentation des Contrats", + "contractsDocumentationDesc": "Guide complet sur les modèles, la signature et les fonctions de conformité" + }, + "settings": { + "title": "Paramètres", + "description": "Paramètres est l'endroit où les propriétaires d'entreprise configurent leur plateforme de planification. La plupart des paramètres sont réservés aux propriétaires et affectent le fonctionnement de votre entreprise.", + "ownerAccessNote": "Accès Propriétaire Requis :", + "ownerAccessDesc": "Seuls les propriétaires d'entreprise peuvent accéder à la plupart des pages de paramètres.", + "generalSettings": "Paramètres Généraux", + "generalSettingsDesc": "Configurez le nom de votre entreprise, fuseau horaire et informations de contact.", + "businessNameSetting": "Nom de l'Entreprise :", + "businessNameSettingDesc": "Le nom de votre société affiché dans toute l'application", + "subdomainSetting": "Sous-domaine :", + "subdomainSettingDesc": "Votre URL de réservation (lecture seule après création)", + "timezoneSetting": "Fuseau Horaire :", + "timezoneSettingDesc": "Fuseau horaire de fonctionnement de l'entreprise", + "timeDisplaySetting": "Mode d'Affichage de l'Heure :", + "timeDisplaySettingDesc": "Afficher les heures dans le fuseau horaire de l'entreprise ou du visiteur", + "contactSetting": "Email/Téléphone de Contact :", + "contactSettingDesc": "Comment les clients peuvent vous contacter", + "bookingSettings": "Paramètres de Réservation", + "bookingSettingsDesc": "Votre URL de réservation et configuration de redirection post-réservation.", + "bookingUrlSetting": "URL de Réservation :", + "bookingUrlSettingDesc": "Le lien que les clients utilisent pour réserver (copiez/partagez-le)", + "returnUrlSetting": "URL de Retour :", + "returnUrlSettingDesc": "Où rediriger les clients après la réservation (optionnel)", + "brandingSettings": "Image de Marque (Apparence)", + "brandingSettingsDesc": "Personnalisez l'apparence de votre entreprise avec des logos et des couleurs.", + "websiteLogoSetting": "Logo du Site Web :", + "websiteLogoSettingDesc": "Apparaît dans la barre latérale et les pages de réservation (500×500px recommandé)", + "emailLogoSetting": "Logo Email :", + "emailLogoSettingDesc": "Apparaît dans les notifications par email (600×200px recommandé)", + "displayModeSetting": "Mode d'Affichage :", + "displayModeSettingDesc": "Texte Seul, Logo Seul, ou Logo et Texte", + "colorPalettesSetting": "Palettes de Couleurs :", + "colorPalettesSettingDesc": "10 palettes prédéfinies parmi lesquelles choisir", + "customColorsSetting": "Couleurs Personnalisées :", + "customColorsSettingDesc": "Définissez vos propres couleurs primaire et secondaire", + "otherSettings": "Autres Paramètres", + "resourceTypesLink": "Types de Ressource", + "resourceTypesLinkDesc": "Configurez les types de personnel, salle, équipement", + "emailTemplatesLink": "Modèles d'Email", + "emailTemplatesLinkDesc": "Personnalisez les notifications par email", + "customDomainsLink": "Domaines Personnalisés", + "customDomainsLinkDesc": "Utilisez votre propre domaine pour les réservations", + "billingLink": "Facturation", + "billingLinkDesc": "Gérez l'abonnement et les paiements", + "apiSettingsLink": "Paramètres API", + "apiSettingsLinkDesc": "Clés API et webhooks", + "usageQuotaLink": "Utilisation et Quota", + "usageQuotaLinkDesc": "Suivez l'utilisation et les limites" + }, + "footer": { + "title": "Besoin de Plus d'Aide ?", + "description": "Vous ne trouvez pas ce que vous cherchez ? Notre équipe de support est prête à vous aider.", + "contactSupport": "Contacter le Support" + } } } diff --git a/frontend/src/pages/help/HelpComprehensive.tsx b/frontend/src/pages/help/HelpComprehensive.tsx index 7174fe8..3d232fd 100644 --- a/frontend/src/pages/help/HelpComprehensive.tsx +++ b/frontend/src/pages/help/HelpComprehensive.tsx @@ -13,7 +13,7 @@ import { Clock, Eye, Palette, Link2, Mail, Globe, CreditCard, Zap, Search, Filter, Plus, Edit, Trash2, ArrowUpDown, GripVertical, Image, Save, ExternalLink, MessageSquare, Tag, UserPlus, Shield, Copy, Layers, Play, Pause, Puzzle, - FileSignature, Send, Download, Link as LinkIcon, + FileSignature, Send, Download, Link as LinkIcon, CalendarOff, } from 'lucide-react'; interface TocSubItem { @@ -52,6 +52,7 @@ const HelpComprehensive: React.FC = () => { { id: 'resources', label: 'Resources', icon: }, { id: 'customers', label: 'Customers', icon: }, { id: 'staff', label: 'Staff', icon: }, + { id: 'time-blocks', label: 'Time Blocks', icon: }, { id: 'plugins', label: 'Plugins', icon: }, { id: 'contracts', label: 'Contracts', icon: }, { @@ -625,6 +626,108 @@ const HelpComprehensive: React.FC = () => { + {/* ============================================== */} + {/* TIME BLOCKS */} + {/* ============================================== */} +
+
+
+ +
+

Time Blocks

+
+ +
+

+ Time Blocks let you block off time when appointments cannot be booked. Use them for holidays, + closures, lunch breaks, or any time you need to prevent bookings. +

+ +

Block Levels

+
+
+

Business Level

+

Affects the entire business - all resources. Use for holidays and company-wide closures.

+
+
+

Resource Level

+

Affects a specific resource only. Use for individual staff schedules or equipment maintenance.

+
+
+ +

Block Types

+
+
+

Hard Block

+

Prevents all bookings during this time. Customers cannot book and staff cannot override.

+
+
+

Soft Block

+

Shows a warning but allows booking with confirmation. Use for preferred-off times.

+
+
+ +

Recurrence Patterns

+
+
+ One-time +
+
+ Weekly +
+
+ Monthly +
+
+ Yearly +
+
+ Holiday +
+
+ +

Key Features

+
    +
  • + + Scheduler Overlay: Blocked times appear directly on the scheduler calendar with visual indicators +
  • +
  • + + Color Coding: Business blocks use red/yellow, resource blocks use purple/cyan +
  • +
  • + + Month View: Blocked dates show with colored backgrounds and badge indicators +
  • +
  • + + List View: Manage all time blocks in a tabular format with filtering options +
  • +
+ +
+

+ Staff Availability +

+

+ Staff members can manage their own time blocks through the "My Availability" page. This allows + them to block off time for personal appointments, vacations, or other commitments without + needing admin access. +

+
+
+ + + +
+

Time Blocks Documentation

+

Complete guide to creating, managing, and visualizing time blocks

+
+ + +
+ {/* ============================================== */} {/* PLUGINS */} {/* ============================================== */} diff --git a/frontend/src/pages/help/HelpContracts.tsx b/frontend/src/pages/help/HelpContracts.tsx index bfe9310..6e19b61 100644 --- a/frontend/src/pages/help/HelpContracts.tsx +++ b/frontend/src/pages/help/HelpContracts.tsx @@ -10,8 +10,8 @@ import { useTranslation } from 'react-i18next'; import { ArrowLeft, FileSignature, FileText, Send, CheckCircle, ChevronRight, HelpCircle, Shield, Clock, Users, AlertCircle, Copy, Eye, Download, - Plus, Pencil, Trash2, ChevronDown, RefreshCw, Ban, ExternalLink, - LayoutGrid, Search, Filter, + Plus, Pencil, Trash2, ChevronDown, Ban, ExternalLink, + LayoutGrid, } from 'lucide-react'; const HelpContracts: React.FC = () => { @@ -30,57 +30,57 @@ const HelpContracts: React.FC = () => {
-

Contracts Guide

-

Create and manage digital contracts with e-signatures

+

{t('help.contracts.overview.title', 'Contracts & E-Signature System')}

+

{t('help.contracts.overview.description', 'The contracts system allows you to create contract templates, send them to customers for signing, and maintain legally compliant audit trails.')}

- Overview + {t('help.contracts.overview.title', 'Overview')}

- The Contracts system allows you to create reusable contract templates, send them to customers for digital signature, and maintain legally compliant records with full audit trails. + {t('help.contracts.overview.description', 'The contracts system allows you to create contract templates, send them to customers for signing, and maintain legally compliant audit trails.')}

- All signatures are captured with ESIGN Act and UETA compliance, including IP address, timestamp, browser information, and optional geolocation for maximum legal protection. + {t('help.contracts.overview.compliance', 'Built for ESIGN Act and UETA compliance, capturing all necessary data for legally binding electronic signatures.')}

- Page Layout + {t('help.contracts.pageLayout.title', 'Page Layout')}

- The Contracts page is organized into two collapsible sections for easy management: + {t('help.contracts.pageLayout.description', 'The Contracts page is organized into two main sections:')}

-

Templates Section

+

{t('contracts.templates', 'Templates')}

- Create and manage reusable contract templates. Includes search, status filters (All, Active, Draft, Archived), and actions to create, edit, preview PDF, and delete templates. + {t('help.contracts.pageLayout.templatesSection', 'Templates - Create and manage reusable contract templates')}

-

Sent Contracts Section

+

{t('contracts.sentContracts', 'Sent Contracts')}

- Track contracts sent to customers. Includes search, status filters (All, Pending, Signed, Expired, Voided), and actions to view, copy link, resend, or void contracts. + {t('help.contracts.pageLayout.sentContractsSection', 'Sent Contracts - Track contracts sent to customers')}

- Tip: Click the section header to collapse/expand each section. The count badge shows how many items are in each section. + {t('help.contracts.pageLayout.tip', 'Tip: Both sections can be expanded or collapsed by clicking the headers. Your preference is remembered.')}

@@ -88,45 +88,45 @@ const HelpContracts: React.FC = () => {

- Contract Templates + {t('help.contracts.templates.title', 'Contract Templates')}

- Templates are reusable contract documents that can be personalized with variable placeholders. + {t('help.contracts.templates.description', 'Templates are reusable documents with placeholders that are automatically filled when sending to customers.')}

-

Template Variables

+

{t('help.contracts.templates.variablesTitle', 'Available Variables')}

- Use these placeholders in your templates - they'll be automatically replaced when the contract is created: + {t('help.contracts.templates.variablesDescription', 'Use these placeholders in your template content to automatically personalize contracts:')}

-
{"{{CUSTOMER_NAME}}"} - Full name
-
{"{{CUSTOMER_FIRST_NAME}}"} - First name
-
{"{{CUSTOMER_EMAIL}}"} - Email address
-
{"{{CUSTOMER_PHONE}}"} - Phone number
-
{"{{BUSINESS_NAME}}"} - Your business name
-
{"{{BUSINESS_EMAIL}}"} - Contact email
-
{"{{BUSINESS_PHONE}}"} - Business phone
-
{"{{DATE}}"} - Current date
-
{"{{YEAR}}"} - Current year
+
{"{{CUSTOMER_NAME}}"} - {t('help.contracts.templates.variables.customerName', 'Full name')}
+
{"{{CUSTOMER_FIRST_NAME}}"} - {t('help.contracts.templates.variables.customerFirstName', 'First name')}
+
{"{{CUSTOMER_EMAIL}}"} - {t('help.contracts.templates.variables.customerEmail', 'Email address')}
+
{"{{CUSTOMER_PHONE}}"} - {t('help.contracts.templates.variables.customerPhone', 'Phone number')}
+
{"{{BUSINESS_NAME}}"} - {t('help.contracts.templates.variables.businessName', 'Your business name')}
+
{"{{BUSINESS_EMAIL}}"} - {t('help.contracts.templates.variables.businessEmail', 'Contact email')}
+
{"{{BUSINESS_PHONE}}"} - {t('help.contracts.templates.variables.businessPhone', 'Business phone')}
+
{"{{DATE}}"} - {t('help.contracts.templates.variables.date', 'Current date')}
+
{"{{YEAR}}"} - {t('help.contracts.templates.variables.year', 'Current year')}
-

Template Scopes

+

{t('help.contracts.templates.scopesTitle', 'Contract Scopes')}

- Customer-Level -

One-time contracts per customer (e.g., privacy policy, terms of service)

+ {t('contracts.scope.customer', 'Customer-Level')} +

{t('help.contracts.templates.scopes.customer', 'One-time contracts per customer (e.g., privacy policy, terms of service). Once signed, not sent again.')}

- Per Appointment -

Signed for each booking (e.g., liability waivers, service agreements)

+ {t('contracts.scope.appointment', 'Per Appointment')} +

{t('help.contracts.templates.scopes.appointment', 'Signed for each booking (e.g., liability waivers, service agreements). Unique contracts created for each appointment.')}

@@ -135,56 +135,47 @@ const HelpContracts: React.FC = () => {

- Creating Templates + {t('help.contracts.creating.title', 'Creating a Template')}

- Click the "New Template" button in the Templates section to create a new contract template: + {t('help.contracts.creating.description', 'To create a new contract template:')}

  1. 1
    -

    Enter Template Name

    -

    - Give your template a clear, descriptive name (e.g., "Service Agreement", "Liability Waiver"). -

    +

    {t('help.contracts.creating.steps.1', 'Click the "New Template" button')}

  2. 2
    -

    Select Scope

    -

    - Choose "Per Appointment" for waivers or "Customer-Level" for one-time agreements. -

    +

    {t('help.contracts.creating.steps.2', 'Enter a name and description for the template')}

  3. 3
    -

    Set Status

    -

    - Start as "Draft" while editing. Change to "Active" when ready to send to customers. -

    +

    {t('help.contracts.creating.steps.3', 'Write your contract content using the HTML editor')}

  4. 4
    -

    Set Expiration (Optional)

    -

    - Enter days until contracts expire. Leave blank for no expiration. -

    +

    {t('help.contracts.creating.steps.4', 'Set the scope (Customer-Level or Per Appointment)')}

  5. 5
    -

    Write Contract Content

    -

    - Enter your contract text using HTML formatting. Click variable chips to insert placeholders. -

    +

    {t('help.contracts.creating.steps.5', 'Optionally set expiration (in days) and version notes')}

    +
    +
  6. +
  7. + 6 +
    +

    {t('help.contracts.creating.steps.6', 'Set status to Active when ready to use the template')}

@@ -193,32 +184,32 @@ const HelpContracts: React.FC = () => {

- Managing Templates + {t('help.contracts.managing.title', 'Managing Templates')}

- Each template in the list has action buttons on the right: + {t('help.contracts.managing.description', 'Each template shows its scope, status, and version. Use the actions menu to:')}

- Preview PDF - - See how the contract looks as a PDF with sample data + {t('contracts.actions.preview', 'Preview PDF')} + - {t('help.contracts.managing.actions.preview', 'See how the contract looks as a PDF with sample data')}
- Edit - - Modify template name, content, scope, or status + {t('contracts.actions.edit', 'Edit')} + - {t('help.contracts.managing.actions.edit', 'Update template name, content, or settings')}
- Delete - - Remove the template (requires confirmation) + {t('contracts.actions.delete', 'Delete')} + - {t('help.contracts.managing.actions.delete', 'Permanently remove a template (cannot undo if active contracts exist)')}
@@ -226,7 +217,7 @@ const HelpContracts: React.FC = () => {

- Note: Only "Active" templates can be used to send contracts. Switch templates to Active status when they're ready for use. + {t('help.contracts.managing.note', 'Note: Templates have statuses: Draft (not ready), Active (can be sent), and Archived (hidden but kept for records)')}

@@ -235,11 +226,11 @@ const HelpContracts: React.FC = () => {

- Sending Contracts + {t('help.contracts.sending.title', 'Sending Contracts')}

- Click the "Send Contract" button in the Sent Contracts section: + {t('help.contracts.sending.description', 'To send a contract to a customer:')}

@@ -247,8 +238,7 @@ const HelpContracts: React.FC = () => { 1
-

Select a Template

-

Choose from your active contract templates

+

{t('help.contracts.sending.steps.1', 'Click "Create Contract" in the Sent Contracts section')}

@@ -256,8 +246,7 @@ const HelpContracts: React.FC = () => { 2
-

Choose a Customer

-

Search and select a customer. Variables are automatically filled with their data.

+

{t('help.contracts.sending.steps.2', 'Select an active template from the dropdown')}

@@ -265,8 +254,7 @@ const HelpContracts: React.FC = () => { 3
-

Send Immediately (Optional)

-

Check the box to email the signing request right away, or uncheck to send later.

+

{t('help.contracts.sending.steps.3', 'Search and select a customer')}

@@ -274,8 +262,23 @@ const HelpContracts: React.FC = () => { 4
-

Track Status

-

Monitor the contract in the Sent Contracts list

+

{t('help.contracts.sending.steps.4', 'Optionally link to a specific appointment or service')}

+
+
+
+
+ 5 +
+
+

{t('help.contracts.sending.steps.5', 'Check "Send email immediately" to notify the customer')}

+
+
+
+
+ 6 +
+
+

{t('help.contracts.sending.steps.6', 'Click "Send Contract"')}

@@ -284,53 +287,53 @@ const HelpContracts: React.FC = () => {

- Contract Status & Actions + {t('help.contracts.statusActions.title', 'Contract Status & Actions')}

- Pending - - Awaiting customer signature + {t('contracts.status.pending', 'Pending')} + - {t('help.contracts.statusActions.statuses.pending', 'Sent but not yet signed')}
- Signed - - Customer has signed the contract + {t('contracts.status.signed', 'Signed')} + - {t('help.contracts.statusActions.statuses.signed', 'Successfully signed by customer')}
- Expired - - Contract expired before signing + {t('contracts.status.expired', 'Expired')} + - {t('help.contracts.statusActions.statuses.expired', 'Signing deadline passed')}
- Voided - - Contract was cancelled by business + {t('contracts.status.voided', 'Voided')} + - {t('help.contracts.statusActions.statuses.voided', 'Manually revoked by business')}
-

Available Actions

+

{t('help.contracts.statusActions.actionsTitle', 'Available Actions')}

- View Details - See full contract information + {t('contracts.actions.viewDetails', 'View Details')} - {t('help.contracts.statusActions.actions.viewDetails', 'See full contract information and content preview')}
- Copy Link - Copy signing URL to clipboard (pending only) -
-
- - Send/Resend - Email the signing request (pending only) + {t('contracts.actions.copyLink', 'Copy Signing Link')} - {t('help.contracts.statusActions.actions.copyLink', 'Get the public signing URL to share with customer')}
- Open Signing Page - View the customer signing experience + {t('contracts.actions.openSigningPage', 'Open Signing Page')} - {t('help.contracts.statusActions.actions.openSigning', 'Preview what the customer sees')} +
+
+ + {t('contracts.actions.resend', 'Resend Email')} - {t('help.contracts.statusActions.actions.resend', 'Send another signing reminder email')}
- Void - Cancel a pending contract + {t('contracts.actions.void', 'Void Contract')} - {t('help.contracts.statusActions.actions.void', 'Revoke a pending contract')}
@@ -338,43 +341,43 @@ const HelpContracts: React.FC = () => {

- Legal Compliance + {t('help.contracts.legalCompliance.title', 'Legal Compliance')}

- ESIGN Act & UETA Compliant: All signatures include comprehensive audit trails that meet federal and state requirements for electronic signatures. + {t('help.contracts.legalCompliance.notice', 'The contract system is designed to meet ESIGN Act and UETA requirements. Each signature captures:')}

-

Captured Audit Data

+

{t('help.contracts.legalCompliance.auditDataTitle', 'Audit Trail Data')}

- Document hash (SHA-256) + {t('help.contracts.legalCompliance.auditData.documentHash', 'Document hash (SHA-256) - Tamper evidence')}
- Signature timestamp (ISO) + {t('help.contracts.legalCompliance.auditData.signedTimestamp', 'Signed timestamp (ISO) - Time of signing')}
- Signer's IP address + {t('help.contracts.legalCompliance.auditData.ipAddress', 'IP address - Signer identification')}
- Browser/device information + {t('help.contracts.legalCompliance.auditData.userAgent', 'User agent - Browser/device info')}
- Consent checkbox states + {t('help.contracts.legalCompliance.auditData.consentCheckbox', 'Consent checkbox states - Proof of intent')}
- Geolocation (if permitted) + {t('help.contracts.legalCompliance.auditData.geolocation', 'Geolocation (optional) - Additional identification')}
@@ -382,37 +385,33 @@ const HelpContracts: React.FC = () => {

- PDF Generation + {t('help.contracts.pdfGeneration.title', 'PDF Generation')}

- Once a contract is signed, a PDF is automatically generated that includes: + {t('help.contracts.pdfGeneration.description', 'After a contract is signed, a PDF is automatically generated containing:')}

  • - Your business branding and logo + {t('help.contracts.pdfGeneration.includes.content', 'Full contract content')}
  • - The full contract content with substituted variables + {t('help.contracts.pdfGeneration.includes.signature', 'Signature section with signer name and date')}
  • - Signature section with signer's name and consent confirmations + {t('help.contracts.pdfGeneration.includes.audit', 'Audit trail table with all compliance data')}
  • - Complete audit trail with verification data -
  • -
  • - - Legal notice about electronic signatures + {t('help.contracts.pdfGeneration.includes.legal', 'Legal notice about ESIGN Act compliance')}

- Preview PDFs: Use the eye icon on any template to preview how the final PDF will look with sample customer data. + {t('help.contracts.pdfGeneration.tip', 'Signed PDFs can be downloaded by both the business and customer for their records.')}

@@ -420,49 +419,49 @@ const HelpContracts: React.FC = () => {

- Best Practices + {t('help.contracts.bestPractices.title', 'Best Practices')}

  • - Use Clear Language: Write contracts in plain language that customers can easily understand + {t('help.contracts.bestPractices.tips.1', 'Use clear, descriptive template names for easy identification')}
  • - Start as Draft: Create templates in Draft status, test with PDF preview, then activate + {t('help.contracts.bestPractices.tips.2', 'Keep contract content concise and readable')}
  • - Set Expiration Dates: Use the expiration feature to ensure contracts are signed promptly + {t('help.contracts.bestPractices.tips.3', 'Test templates with sample data before setting to Active')}
  • - Create Customers First: Ensure customers exist in the system before sending contracts + {t('help.contracts.bestPractices.tips.4', 'Use version notes to track changes over time')}
  • - Archive Old Templates: Rather than deleting, archive templates you no longer use + {t('help.contracts.bestPractices.tips.5', 'Archive old templates instead of deleting to preserve history')}
  • - Download PDFs: Keep copies of signed contracts for your records + {t('help.contracts.bestPractices.tips.6', 'Set appropriate expiration dates for time-sensitive contracts')}
-

Related Features

+

{t('help.contracts.relatedFeatures.title', 'Related Features')}

- Services Guide + {t('help.contracts.relatedFeatures.servicesGuide', 'See the Services Guide for linking contracts to services')} - Customers Guide + {t('help.contracts.relatedFeatures.customersGuide', 'See the Customers Guide for managing customer contacts')}
@@ -470,9 +469,9 @@ const HelpContracts: React.FC = () => {
-

Need More Help?

-

Our support team is ready to help with any questions about contracts.

- +

{t('help.contracts.needHelp.title', 'Need Help?')}

+

{t('help.contracts.needHelp.description', 'If you have questions about using contracts, our support team is here to help.')}

+
); diff --git a/frontend/src/pages/marketing/FeaturesPage.tsx b/frontend/src/pages/marketing/FeaturesPage.tsx index 7f45b0c..dda4008 100644 --- a/frontend/src/pages/marketing/FeaturesPage.tsx +++ b/frontend/src/pages/marketing/FeaturesPage.tsx @@ -7,7 +7,10 @@ import { Server, Database, Lock, - CheckCircle2 + CheckCircle2, + FileSignature, + FileCheck, + Scale } from 'lucide-react'; import CodeBlock from '../../components/marketing/CodeBlock'; import CTASection from '../../components/marketing/CTASection'; @@ -153,6 +156,95 @@ def execute(context):
+ {/* Feature 3: Digital Contracts */} +
+
+
+
+
+ + {t('marketing.features.contracts.badge')} +
+

+ {t('marketing.features.contracts.title')} +

+

+ {t('marketing.features.contracts.description')} +

+ +
    + {[ + t('marketing.features.contracts.features.templates'), + t('marketing.features.contracts.features.eSignature'), + t('marketing.features.contracts.features.auditTrail'), + t('marketing.features.contracts.features.pdfGeneration') + ].map((item) => ( +
  • + + {item} +
  • + ))} +
+
+ +
+
+
+
+ {/* Contract Preview Mock */} +
+
+ +
+
Service Agreement
+
Awaiting signature
+
+
+
+
+
+
+ + {/* Compliance Badge */} +
+
+ + ESIGN Act Compliant +
+ +
+ +
+
+
+ +
+
+

{t('marketing.features.contracts.compliance.title')}

+

+ {t('marketing.features.contracts.compliance.description')} +

+
+
+
+
+ +
+
+

{t('marketing.features.contracts.automation.title')}

+

+ {t('marketing.features.contracts.automation.description')} +

+
+
+
+
+
+
+
+
+
+ ); diff --git a/frontend/src/pages/marketing/HomePage.tsx b/frontend/src/pages/marketing/HomePage.tsx index cf08a7e..9fdc17d 100644 --- a/frontend/src/pages/marketing/HomePage.tsx +++ b/frontend/src/pages/marketing/HomePage.tsx @@ -6,7 +6,8 @@ import { CreditCard, BarChart3, Zap, - Globe + Globe, + FileSignature } from 'lucide-react'; import Hero from '../../components/marketing/Hero'; import FeatureCard from '../../components/marketing/FeatureCard'; @@ -55,6 +56,12 @@ const HomePage: React.FC = () => { description: t('marketing.home.features.advancedAnalytics.description'), color: 'indigo', }, + { + icon: FileSignature, + title: t('marketing.home.features.digitalContracts.title'), + description: t('marketing.home.features.digitalContracts.description'), + color: 'teal', + }, ]; const testimonials = [