From 2e6f151b22fa54a79fca1dfbdf5cbf20e97a437a Mon Sep 17 00:00:00 2001 From: Till-JS <101404291+Till-JS@users.noreply.github.com> Date: Tue, 9 Dec 2025 20:49:56 +0100 Subject: [PATCH] feat(contacts): add SearchModal component and help content MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a SearchModal component for quick contact search with keyboard navigation, and add central help content for FAQ, getting started guides, and support information. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../web/src/lib/components/SearchModal.svelte | 516 ++++++++++++++++++ .../apps/web/src/lib/content/help/index.ts | 173 ++++++ 2 files changed, 689 insertions(+) create mode 100644 apps/contacts/apps/web/src/lib/components/SearchModal.svelte create mode 100644 apps/contacts/apps/web/src/lib/content/help/index.ts diff --git a/apps/contacts/apps/web/src/lib/components/SearchModal.svelte b/apps/contacts/apps/web/src/lib/components/SearchModal.svelte new file mode 100644 index 000000000..38eddb294 --- /dev/null +++ b/apps/contacts/apps/web/src/lib/components/SearchModal.svelte @@ -0,0 +1,516 @@ + + +{#if open} + + +{/if} + + diff --git a/apps/contacts/apps/web/src/lib/content/help/index.ts b/apps/contacts/apps/web/src/lib/content/help/index.ts new file mode 100644 index 000000000..d1d759860 --- /dev/null +++ b/apps/contacts/apps/web/src/lib/content/help/index.ts @@ -0,0 +1,173 @@ +/** + * Central help content loader for Contacts app + * This file loads and merges the central help content from @manacore/shared-help-content + */ + +import type { HelpContent } from '@manacore/shared-help-types'; +import { createEmptyContent } from '@manacore/shared-help-content'; + +/** + * Central help content that applies to all Manacore apps + * In a production setup, this would be loaded from the shared-help-content package's + * Markdown files. For now, we provide the content inline for simplicity. + */ +export const centralHelpContent: HelpContent = { + faq: [ + // Account FAQs + { + id: 'faq-account-001', + question: 'How do I create an account?', + answer: `

Creating an account is simple:

+
    +
  1. Click the Sign Up button on the login page
  2. +
  3. Enter your email address and choose a secure password
  4. +
  5. Verify your email address by clicking the link we send you
  6. +
  7. Complete your profile setup
  8. +
+

You can also sign up using your Google or Apple account for faster registration.

`, + category: 'account', + order: 1, + language: 'en', + featured: true, + tags: ['account', 'registration', 'signup'], + }, + { + id: 'faq-account-001', + question: 'Wie erstelle ich ein Konto?', + answer: `

Die Kontoerstellung ist einfach:

+
    +
  1. Klicke auf Registrieren auf der Anmeldeseite
  2. +
  3. Gib deine E-Mail-Adresse ein und wähle ein sicheres Passwort
  4. +
  5. Bestätige deine E-Mail-Adresse durch Klick auf den Link, den wir dir senden
  6. +
  7. Vervollständige dein Profil
  8. +
+

Du kannst dich auch mit deinem Google- oder Apple-Konto registrieren, um schneller loszulegen.

`, + category: 'account', + order: 1, + language: 'de', + featured: true, + tags: ['konto', 'registrierung', 'anmeldung'], + }, + // Billing FAQs + { + id: 'faq-billing-001', + question: 'How do I cancel my subscription?', + answer: `

You can cancel your subscription at any time:

+
    +
  1. Go to Settings > Subscription
  2. +
  3. Click Manage Subscription
  4. +
  5. Select Cancel Subscription
  6. +
  7. Confirm your cancellation
  8. +
+

Your subscription will remain active until the end of the current billing period. You won't be charged again after cancellation.

`, + category: 'billing', + order: 1, + language: 'en', + featured: true, + tags: ['subscription', 'cancel', 'billing'], + }, + { + id: 'faq-billing-001', + question: 'Wie kann ich mein Abo kündigen?', + answer: `

Du kannst dein Abo jederzeit kündigen:

+
    +
  1. Gehe zu Einstellungen > Abonnement
  2. +
  3. Klicke auf Abo verwalten
  4. +
  5. Wähle Abo kündigen
  6. +
  7. Bestätige die Kündigung
  8. +
+

Dein Abo bleibt bis zum Ende des aktuellen Abrechnungszeitraums aktiv. Nach der Kündigung erfolgen keine weiteren Abbuchungen.

`, + category: 'billing', + order: 1, + language: 'de', + featured: true, + tags: ['abo', 'kündigung', 'abrechnung'], + }, + // Privacy FAQs + { + id: 'faq-privacy-001', + question: 'How is my data protected?', + answer: `

We take your privacy seriously:

+ `, + category: 'privacy', + order: 1, + language: 'en', + featured: true, + tags: ['privacy', 'data', 'security', 'gdpr'], + }, + { + id: 'faq-privacy-001', + question: 'Wie werden meine Daten geschützt?', + answer: `

Wir nehmen deinen Datenschutz ernst:

+ `, + category: 'privacy', + order: 1, + language: 'de', + featured: true, + tags: ['datenschutz', 'daten', 'sicherheit', 'dsgvo'], + }, + ], + features: [], + shortcuts: [], + gettingStarted: [ + { + id: 'guide-welcome', + title: 'Getting Started', + description: 'Learn the basics and get up and running quickly', + content: `

Create Your Account

+

Start by creating your free account. You can sign up with your email address or use Google/Apple sign-in for a faster setup.

+

Explore the Dashboard

+

After logging in, you'll see your dashboard. This is your home base where you can access all features and see important information at a glance.

+

Customize Your Settings

+

Visit the Settings page to personalize your experience.

`, + difficulty: 'beginner', + estimatedTime: '5 minutes', + order: 1, + language: 'en', + }, + { + id: 'guide-welcome', + title: 'Erste Schritte', + description: 'Lerne die Grundlagen und starte schnell durch', + content: `

Konto erstellen

+

Beginne mit der Erstellung deines kostenlosen Kontos. Du kannst dich mit deiner E-Mail-Adresse registrieren oder Google/Apple für eine schnellere Anmeldung nutzen.

+

Dashboard erkunden

+

Nach dem Einloggen siehst du dein Dashboard. Dies ist deine Zentrale, von der aus du auf alle Funktionen zugreifen kannst.

+

Einstellungen anpassen

+

Besuche die Einstellungen, um dein Erlebnis zu personalisieren.

`, + difficulty: 'beginner', + estimatedTime: '5 Minuten', + order: 1, + language: 'de', + }, + ], + changelog: [], + contact: { + id: 'contact-support', + title: 'Contact Support', + content: `

Need Help?

+

Our support team is here to help you with any questions or issues.

+

Before Contacting Us

+ `, + language: 'en', + order: 1, + supportEmail: 'support@manacore.app', + responseTime: 'Usually within 24 hours', + }, +};