/opt/canhelp/apps/web/.next/cache/webpack/client-production
Edit: /opt/canhelp/apps/web/.next/cache/webpack/client-production/9.pack (4019350B)
wpc T= webpack/lib/cache/PackFileCacheStrategyPackContentItems`@3 FlagDependencyExportsPlugin|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[6].use[1]!/opt/canhelp/apps/web/src/lib/api.ts|app-pages-browserD Compilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[6].use[1]!/opt/canhelp/apps/web/src/app/support/page.tsx|app-pages-browser|webpackO Compilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[6].use[1]!/opt/canhelp/apps/web/src/components/AdminRolePreview.tsx|app-pages-browser|webpackD Compilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[6].use[1]!/opt/canhelp/apps/web/src/context/location.tsx|app-pages-browser|webpackN Compilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[6].use[1]!/opt/canhelp/apps/web/src/app/become-specialist/page.tsx|app-pages-browser|webpackK Compilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[6].use[1]!/opt/canhelp/apps/web/src/app/delete-account/page.tsx|app-pages-browser|webpackF Compilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[6].use[1]!/opt/canhelp/apps/web/src/app/favorites/page.tsx|app-pages-browser|webpackD Compilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[6].use[1]!/opt/canhelp/apps/web/src/app/payment/page.tsx|app-pages-browser|webpackE Compilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[6].use[1]!/opt/canhelp/apps/web/src/app/schedule/page.tsx|app-pages-browser|webpackW Compilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[6].use[1]!/opt/canhelp/apps/web/src/components/FavoriteSpecialistButton.tsx|app-pages-browser|webpackF Compilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[6].use[1]!/opt/canhelp/apps/web/src/app/tasks/new/page.tsx|app-pages-browser|webpackM Compilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[6].use[1]!/opt/canhelp/apps/web/src/app/specialist-setup/page.tsx|app-pages-browser|webpack: Compilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[6].use[1]!/opt/canhelp/apps/web/src/lib/api.ts|app-pages-browser|webpackK Compilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[6].use[1]!/opt/canhelp/apps/web/src/components/SupportModal.tsx|app-pages-browser|webpackV Compilation/codeGeneration|javascript/auto|/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js!/opt/canhelp/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js??ruleSet[1].rules[16].oneOf[6].use[1]!/opt/canhelp/apps/web/src/components/Header.tsx|app-pages-browser|ded78a72f604b3ec|webpackCompilation/codeGeneration|webpack/runtime/get javascript chunk filename|webpackCompilation/assets|chunk1240Compilation/assets|chunk4466Compilation/assets|chunk4040Compilation/assets|chunk8974Compilation/assets|chunk8407Compilation/assets|chunk7826Compilation/assets|chunk5442Compilation/assets|chunk1755Compilation/assets|chunk6174Compilation/assets|chunk9478Compilation/assets|chunk8068Compilation/assets|chunk6467Compilation/assets|chunk2982MinifierWebpackPlugin|static/chunks/app/become-specialist/page-1fcacedafff4c9f3.jsMinifierWebpackPlugin|static/chunks/app/delete-account/page-d024a37df379b46c.jsMinifierWebpackPlugin|static/chunks/app/favorites/page-d646fc7e0a9bb0b8.jsMinifierWebpackPlugin|static/chunks/app/page-e20477871325d0e8.jsMinifierWebpackPlugin|static/chunks/app/payment/page-d11da66e06583eba.jsMinifierWebpackPlugin|static/chunks/app/schedule/page-07cc841af3be1da1.jsMinifierWebpackPlugin|static/chunks/app/specialist-setup/page-9fdc55a4c7b8c33b.jsMinifierWebpackPlugin|static/chunks/app/specialists/page-475a8eca95808835.jsMinifierWebpackPlugin|static/chunks/app/support/page-000dedfa8bbfe610.jsMinifierWebpackPlugin|static/chunks/app/tasks/new/page-cebe52b63974323c.jsMinifierWebpackPlugin|static/chunks/webpack-74f4bc92e0a7d443.jsMinifierWebpackPlugin|static/chunks/6467.06a1c0ca06759ccf.jsMinifierWebpackPlugin|static/chunks/2982-aa1cc4952e0e36a5.jsMinifierWebpackPlugin|server/middleware-react-loadable-manifest.jsMinifierWebpackPlugin|server/middleware-build-manifest.jsRealContentHashPlugin|analyse|static/chunks/app/become-specialist/page-1fcacedafff4c9f3.jsRealContentHashPlugin|analyse|static/chunks/app/delete-account/page-d024a37df379b46c.jsRealContentHashPlugin|analyse|static/chunks/app/favorites/page-d646fc7e0a9bb0b8.jsRealContentHashPlugin|analyse|static/chunks/app/page-e20477871325d0e8.jsRealContentHashPlugin|analyse|static/chunks/app/payment/page-d11da66e06583eba.jsRealContentHashPlugin|analyse|static/chunks/app/schedule/page-07cc841af3be1da1.jsRealContentHashPlugin|analyse|static/chunks/app/specialist-setup/page-9fdc55a4c7b8c33b.jsRealContentHashPlugin|analyse|static/chunks/app/specialists/page-475a8eca95808835.jsRealContentHashPlugin|analyse|static/chunks/app/support/page-000dedfa8bbfe610.jsRealContentHashPlugin|analyse|static/chunks/app/tasks/new/page-cebe52b63974323c.jsRealContentHashPlugin|analyse|static/chunks/webpack-74f4bc92e0a7d443.jsRealContentHashPlugin|analyse|static/chunks/6467.06a1c0ca06759ccf.jsRealContentHashPlugin|analyse|static/chunks/2982-aa1cc4952e0e36a5.jsRealContentHashPlugin|analyse|react-loadable-manifest.jsonRealContentHashPlugin|analyse|server/middleware-react-loadable-manifest.jsRealContentHashPlugin|analyse|server/middleware-build-manifest.jsRealContentHashPlugin|generate|static/chunks/webpack-74f4bc92e0a7d443.jsRealContentHashPlugin|generate|react-loadable-manifest.jsonRealContentHashPlugin|generate|server/middleware-react-loadable-manifest.jsRealContentHashPlugin|generate|server/middleware-build-manifest.jswebpack/lib/ModuleGraphRestoreProvidedData@ nameprovidedcanMangleProvideterminalBindingexportsInfoacceptOfferactivateUseraddFavoriteaddPortfolioItemaddSpecialistFavoriteadminBroadcastPushadminSendPushToUseradminTopUpUserBalanceadminUpdateSpecialistCardadminWithdrawUserBalanceapplyMyReferralautoTranslateautoTranslateEmailTemplatesautoTranslateTaskscancelTaskcancelTaskAdminߎchangeUserRolecompleteTaskێcreateCategoryَcreateLocationcreateOfferՊcreatePlanӔcreatePriceListGroupѓcreatePriceListItemόcreateReview͋createSkill˔createSpecialistCardɓcreateSupportTicketNJcreateTaskŎdeactivateUserÌdeclineOfferdeleteCategorydeleteLocationdeletePlandeletePortfolioItemdeletePriceListGroupdeletePriceListItemdeleteSkilldeleteSpecialistCarddeleteTaskAdmindisconnectGoogleCalendardismissNotificationgetAdminActivityLogsgetAdminAiLogsgetAdminBalanceHistorygetAdminCategoriesgetAdminEmailTemplatesgetAdminLocationsgetAdminMailLogsgetAdminMailStatsgetAdminNotifLogsgetAdminNotifStatsgetAdminPlansgetAdminReferralsgetAdminReportsgetAdminSettingsgetAdminSkillsgetAdminSpecialistCardsgetAdminStatsgetAdminSupportTicketsgetAdminTasksgetAdminUsergetAdminUserSpecialistCardsgetAdminUsersgetAutoMatchResults}getAutoResponseSettings{getBalanceHistoryygetCanMessagewgetCategoriesugetChatRoomssgetCustomerFomoDashboardqgetDailyUsageogetFavoritesmgetFomoRecommendationskgetGoogleCalendarConnectUrligetGoogleCalendarStatusggetLocationsegetMessagescgetMyAvailabilityagetMyDashboard_getMyOffers]getMyPortfolio[getMyReferralInfoYgetMyReviewsWgetMySpecialistCardsUgetMyStatusesSgetMySupportTicketsQgetMyTasksOgetNotificationsMgetOffersKgetOrCreateDirectRoomIgetPaymentHistoryGgetPlanHistoryEgetPlansCgetPriceListAgetPublicSiteProfile?getSiteStats=getSkillDedup;getSkillSuggestions9getSpecialistAvailability7getSpecialistCards5getSpecialistFavorites3getSpecialistFomoDashboard1getSpecialistPortfolio/getSpecialists-getTask+getTaskBudgetRange)getTaskCountsByCategory'getTaskInvite%getTaskReviews#getTaskStats!getTasksgetTasksForSpecialistgetTasksTranslationPreviewgetTranslationsMissinggetTranslationsStatsgetUnreadCountgetUserProfilegetUserRatinggetUserReviewsimportFromGoogleCalendar
initiateTopUpmarkAllRead markReadmergeSkillDuplicatespreviewPlanChangepurchasePlanremoveFavoriteremoveSpecialistFavoritereplyToSupportTicketrequestrunAutoMatchsaveSiteSeosaveTranslationssearchTaskssendMessagesendPublicSupportMessagesendTestEmailsetAvailabilitysetAvailabilityRangesetSupportTicketStatustestTelegramConnectiontoggleStatustrackSiteMessagetranslateAdminEmailTemplateupdateAdminEmailTemplateupdateAdminSettingsupdateAdminUserupdateAutoResponseSettingsupdateCategoryupdateLocationupdateNotifSettingsupdatePlanupdatePortfolioItemupdatePriceListGroupupdatePriceListItemupdateReportStatusupdateSkillupdateSpecialistCardupdateTaskverifyAdminUserEmailverifyTelegramToken
sourcesruntimeRequirementsdatajavascriptwebpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource > webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource __webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ SupportPage)
/* harmony export */ });
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4568);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7620);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9664);
/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _context_locale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9906);
/* harmony import */ var _components_Turnstile__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2928);
/* harmony import */ var _lib_api__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2982);
webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSource6 /* __next_internal_client_entry_do_not_use__ default auto */ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { useState } from 'react';
import Link from 'next/link';
import { useLocale } from '@/context/locale';
import { CAPTCHA_ENABLED, TurnstileWidget } from '@/components/Turnstile';
import { sendPublicSupportMessage } from '@/lib/api';
const SUPPORT_EMAIL = 'info@canhelp.gr';
const CONTENT = {
el: {
title: 'Υποστήριξη CanHelp',
intro: 'Αν χρειάζεστε βοήθεια με την εφαρμογή, στείλτε μας email ή χρησιμοποιήστε τη φόρμα επικοινωνίας μέσα στην εφαρμογή.',
points: [
'Περιγράψτε σύντομα το πρόβλημα και, αν γίνεται, επισυνάψτε στιγμιότυπο οθόνης.',
'Αν το ζήτημα αφορά σύνδεση, αναφέρετε τη συσκευή και την έκδοση της εφαρμογής.',
'Απαντάμε συνήθως μέσα σε 1-2 εργάσιμες ημέρες.'
]
},
en: {
title: 'CanHelp Support',
intro: 'If you need help with the app, email us or use the in-app contact form.',
points: [
'Briefly describe the issue and attach a screenshot if possible.',
'If it is a login problem, include your device and app version.',
'We usually reply within 1-2 business days.'
]
},
ru: {
title: 'Поддержка CanHelp',
intro: 'Если вам нужна помощь с приложением, напишите нам на email или используйте форму связи в приложении.',
points: [
'Кратко опишите проблему и, если возможно, приложите скриншот.',
'Если проблема со входом, укажите устройство и версию приложения.',
'Обычно мы отвечаем в течение 1-2 рабочих дней.'
]
},
uk: {
title: 'Підтримка CanHelp',
intro: 'Якщо вам потрібна допомога з додатком, напишіть нам на email або скористайтеся формою зв’язку в додатку.',
points: [
'Коротко опишіть проблему та, якщо можливо, додайте скріншот.',
'Якщо проблема зі входом, вкажіть пристрій і версію додатка.',
'Зазвичай ми відповідаємо протягом 1-2 робочих днів.'
]
}
};
export default function SupportPage() {
const { locale, t } = useLocale();
var _CONTENT_locale;
const content = (_CONTENT_locale = CONTENT[locale]) !== null && _CONTENT_locale !== void 0 ? _CONTENT_locale : CONTENT.en;
const [name, setName] = useState('');
const [email, setEmail] = useState('');
const [subject, setSubject] = useState('');
const [body, setBody] = useState('');
const [captchaToken, setCaptchaToken] = useState(CAPTCHA_ENABLED ? '' : 'dev');
const [loading, setLoading] = useState(false);
const [sent, setSent] = useState(false);
const [error, setError] = useState('');
async function handleSubmit(e) {
e.preventDefault();
setError('');
setLoading(true);
try {
await sendPublicSupportMessage({
name: name.trim(),
email: email.trim(),
subject: subject.trim(),
body: body.trim(),
captchaToken
});
setSent(true);
} catch (err) {
if (((err === null || err === void 0 ? void 0 : err.message) || '').toLowerCase().includes('captcha')) {
setError('Security check failed. Please try again.');
setCaptchaToken('');
} else {
setError('Failed to send message. Please try again.');
}
} finally{
setLoading(false);
}
}
return /*#__PURE__*/ _jsx("main", {
className: "py-12 px-4 sm:px-6",
children: /*#__PURE__*/ _jsxs("div", {
className: "max-w-3xl mx-auto bg-white rounded-2xl shadow-sm border border-gray-100 px-6 sm:px-10 py-10",
children: [
/*#__PURE__*/ _jsx("div", {
className: "mb-6",
children: /*#__PURE__*/ _jsxs(Link, {
href: "/",
className: "text-sm text-green-600 hover:underline",
children: [
"← ",
t('nav.home')
]
})
}),
/*#__PURE__*/ _jsx("h1", {
className: "text-3xl font-extrabold text-gray-900 mb-3",
children: content.title
}),
/*#__PURE__*/ _jsx("p", {
className: "text-gray-600 leading-relaxed",
children: content.intro
}),
/*#__PURE__*/ _jsx("div", {
className: "mt-8 space-y-3",
children: content.points.map((point)=>/*#__PURE__*/ _jsxs("div", {
className: "flex gap-3 items-start rounded-xl border border-gray-100 bg-gray-50 px-4 py-3 text-sm text-gray-700",
children: [
/*#__PURE__*/ _jsx("span", {
className: "mt-0.5 h-2 w-2 rounded-full bg-green-500 shrink-0"
}),
/*#__PURE__*/ _jsx("span", {
children: point
})
]
}, point))
}),
/*#__PURE__*/ _jsxs("div", {
className: "mt-8 flex flex-col sm:flex-row gap-3 sm:items-center",
children: [
/*#__PURE__*/ _jsx("a", {
href: "mailto:".concat(SUPPORT_EMAIL),
className: "inline-flex items-center justify-center rounded-xl bg-green-600 px-5 py-3 text-sm font-medium text-white hover:bg-green-700 transition",
children: SUPPORT_EMAIL
}),
/*#__PURE__*/ _jsx("span", {
className: "text-sm text-gray-500",
children: t('nav.privacy')
})
]
}),
/*#__PURE__*/ _jsxs("form", {
onSubmit: handleSubmit,
className: "mt-10 space-y-4 rounded-2xl border border-gray-100 bg-gray-50 p-5 sm:p-6",
children: [
/*#__PURE__*/ _jsxs("div", {
children: [
/*#__PURE__*/ _jsx("h2", {
className: "text-xl font-semibold text-gray-900 mb-1",
children: "Send a message to support"
}),
/*#__PURE__*/ _jsx("p", {
className: "text-sm text-gray-500",
children: "We will forward it directly to the admin team."
})
]
}),
/*#__PURE__*/ _jsxs("div", {
className: "grid gap-4 sm:grid-cols-2",
children: [
/*#__PURE__*/ _jsxs("div", {
children: [
/*#__PURE__*/ _jsx("label", {
className: "block text-sm font-medium text-gray-700 mb-1",
children: "Name"
}),
/*#__PURE__*/ _jsx("input", {
value: name,
onChange: (e)=>setName(e.target.value),
required: true,
minLength: 2,
maxLength: 100,
className: "w-full rounded-xl border border-gray-300 bg-white px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-green-500",
placeholder: "Your name"
})
]
}),
/*#__PURE__*/ _jsxs("div", {
children: [
/*#__PURE__*/ _jsx("label", {
className: "block text-sm font-medium text-gray-700 mb-1",
children: "Email"
}),
/*#__PURE__*/ _jsx("input", {
type: "email",
value: email,
onChange: (e)=>setEmail(e.target.value),
required: true,
maxLength: 200,
className: "w-full rounded-xl border border-gray-300 bg-white px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-green-500",
placeholder: "name@example.com"
})
]
})
]
}),
/*#__PURE__*/ _jsxs("div", {
children: [
/*#__PURE__*/ _jsx("label", {
className: "block text-sm font-medium text-gray-700 mb-1",
children: "Subject"
}),
/*#__PURE__*/ _jsx("input", {
value: subject,
onChange: (e)=>setSubject(e.target.value),
required: true,
minLength: 3,
maxLength: 200,
className: "w-full rounded-xl border border-gray-300 bg-white px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-green-500",
placeholder: "What do you need help with?"
})
]
}),
/*#__PURE__*/ _jsxs("div", {
children: [
/*#__PURE__*/ _jsx("label", {
className: "block text-sm font-medium text-gray-700 mb-1",
children: "Message"
}),
/*#__PURE__*/ _jsx("textarea", {
value: body,
onChange: (e)=>setBody(e.target.value),
required: true,
minLength: 10,
maxLength: 5000,
rows: 6,
className: "w-full rounded-xl border border-gray-300 bg-white px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-green-500 resize-none",
placeholder: "Describe the problem in detail"
})
]
}),
/*#__PURE__*/ _jsx("div", {
children: /*#__PURE__*/ _jsx(TurnstileWidget, {
onSuccess: setCaptchaToken,
onError: ()=>setCaptchaToken(''),
onExpire: ()=>setCaptchaToken('')
})
}),
error && /*#__PURE__*/ _jsx("p", {
className: "text-sm text-red-600",
children: error
}),
sent ? /*#__PURE__*/ _jsx("div", {
className: "rounded-xl border border-green-200 bg-green-50 px-4 py-3 text-sm text-green-800",
children: "Your message has been sent."
}) : /*#__PURE__*/ _jsx("button", {
type: "submit",
disabled: loading || CAPTCHA_ENABLED && !captchaToken,
className: "inline-flex w-full items-center justify-center rounded-xl bg-green-600 px-5 py-3 text-sm font-medium text-white hover:bg-green-700 disabled:opacity-50",
children: loading ? 'Sending...' : 'Send message'
})
]
})
]
})
});
}
c8={}_ 4 6 j @ N C J o v
M
T
z
H __
T X p t v y y | # & a d : > \ _ E I 2 _6 z ~ d! g! {" ~" % % &