@open-mercato/core 0.6.1-develop.3276.1.1fcd145078 → 0.6.1-develop.3287.1.450f4ffb56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +2 -2
- package/dist/generated/entities/domain_mapping/index.js +31 -0
- package/dist/generated/entities/domain_mapping/index.js.map +7 -0
- package/dist/generated/entities.ids.generated.js +2 -1
- package/dist/generated/entities.ids.generated.js.map +2 -2
- package/dist/generated/entity-fields-registry.js +16 -0
- package/dist/generated/entity-fields-registry.js.map +2 -2
- package/dist/helpers/integration/auth.js +1 -1
- package/dist/helpers/integration/auth.js.map +2 -2
- package/dist/helpers/integration/authUi.js +1 -1
- package/dist/helpers/integration/authUi.js.map +2 -2
- package/dist/helpers/integration/salesUi.js +18 -17
- package/dist/helpers/integration/salesUi.js.map +2 -2
- package/dist/modules/auth/frontend/login.js +4 -4
- package/dist/modules/auth/frontend/login.js.map +2 -2
- package/dist/modules/auth/frontend/reset/[token]/page.js +5 -5
- package/dist/modules/auth/frontend/reset/[token]/page.js.map +2 -2
- package/dist/modules/auth/frontend/reset.js +2 -2
- package/dist/modules/auth/frontend/reset.js.map +2 -2
- package/dist/modules/customer_accounts/acl.js +2 -1
- package/dist/modules/customer_accounts/acl.js.map +2 -2
- package/dist/modules/customer_accounts/api/admin/domain-mappings/[id]/health-check.js +110 -0
- package/dist/modules/customer_accounts/api/admin/domain-mappings/[id]/health-check.js.map +7 -0
- package/dist/modules/customer_accounts/api/admin/domain-mappings/[id]/verify.js +114 -0
- package/dist/modules/customer_accounts/api/admin/domain-mappings/[id]/verify.js.map +7 -0
- package/dist/modules/customer_accounts/api/admin/domain-mappings.js +271 -0
- package/dist/modules/customer_accounts/api/admin/domain-mappings.js.map +7 -0
- package/dist/modules/customer_accounts/api/domain-check.js +70 -0
- package/dist/modules/customer_accounts/api/domain-check.js.map +7 -0
- package/dist/modules/customer_accounts/api/domain-resolve/all.js +128 -0
- package/dist/modules/customer_accounts/api/domain-resolve/all.js.map +7 -0
- package/dist/modules/customer_accounts/api/domain-resolve.js +84 -0
- package/dist/modules/customer_accounts/api/domain-resolve.js.map +7 -0
- package/dist/modules/customer_accounts/api/login.js +14 -3
- package/dist/modules/customer_accounts/api/login.js.map +2 -2
- package/dist/modules/customer_accounts/api/magic-link/request.js +14 -3
- package/dist/modules/customer_accounts/api/magic-link/request.js.map +2 -2
- package/dist/modules/customer_accounts/api/password/reset-request.js +14 -3
- package/dist/modules/customer_accounts/api/password/reset-request.js.map +2 -2
- package/dist/modules/customer_accounts/api/signup.js +32 -5
- package/dist/modules/customer_accounts/api/signup.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/Actions.js +48 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/Actions.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/Diagnostics.js +43 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/Diagnostics.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/DnsConfig.js +53 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/DnsConfig.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/DomainPanel.js +69 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/DomainPanel.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/OrgSwitcher.js +31 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/OrgSwitcher.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/RegisterDialog.js +147 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/RegisterDialog.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/StatusBadgeSection.js +39 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/StatusBadgeSection.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/Stepper.js +60 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/Stepper.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/domainStatusMap.js +11 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/domainStatusMap.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/types.js +1 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/types.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/page.js +361 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/page.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/page.meta.js +28 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/page.meta.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js +4 -3
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js +6 -5
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js.map +2 -2
- package/dist/modules/customer_accounts/data/enrichers.js +78 -12
- package/dist/modules/customer_accounts/data/enrichers.js.map +2 -2
- package/dist/modules/customer_accounts/data/entities.js +85 -2
- package/dist/modules/customer_accounts/data/entities.js.map +2 -2
- package/dist/modules/customer_accounts/data/guards.js +130 -0
- package/dist/modules/customer_accounts/data/guards.js.map +7 -0
- package/dist/modules/customer_accounts/data/validators.js +19 -0
- package/dist/modules/customer_accounts/data/validators.js.map +2 -2
- package/dist/modules/customer_accounts/di.js +23 -1
- package/dist/modules/customer_accounts/di.js.map +2 -2
- package/dist/modules/customer_accounts/events.js +9 -2
- package/dist/modules/customer_accounts/events.js.map +2 -2
- package/dist/modules/customer_accounts/lib/customerAuthServer.js +27 -7
- package/dist/modules/customer_accounts/lib/customerAuthServer.js.map +2 -2
- package/dist/modules/customer_accounts/lib/customerUrl.js +48 -0
- package/dist/modules/customer_accounts/lib/customerUrl.js.map +7 -0
- package/dist/modules/customer_accounts/lib/hostname.js +55 -0
- package/dist/modules/customer_accounts/lib/hostname.js.map +7 -0
- package/dist/modules/customer_accounts/lib/platformDomains.js +7 -0
- package/dist/modules/customer_accounts/lib/platformDomains.js.map +7 -0
- package/dist/modules/customer_accounts/lib/proxyRanges.js +71 -0
- package/dist/modules/customer_accounts/lib/proxyRanges.js.map +7 -0
- package/dist/modules/customer_accounts/lib/rateLimiter.js +7 -0
- package/dist/modules/customer_accounts/lib/rateLimiter.js.map +2 -2
- package/dist/modules/customer_accounts/lib/resolveTenantContext.js +63 -0
- package/dist/modules/customer_accounts/lib/resolveTenantContext.js.map +7 -0
- package/dist/modules/customer_accounts/lib/secretCompare.js +13 -0
- package/dist/modules/customer_accounts/lib/secretCompare.js.map +7 -0
- package/dist/modules/customer_accounts/migrations/Migration20260430120000_customer_accounts.js +37 -0
- package/dist/modules/customer_accounts/migrations/Migration20260430120000_customer_accounts.js.map +7 -0
- package/dist/modules/customer_accounts/notifications.client.js +76 -0
- package/dist/modules/customer_accounts/notifications.client.js.map +2 -2
- package/dist/modules/customer_accounts/notifications.js +76 -0
- package/dist/modules/customer_accounts/notifications.js.map +2 -2
- package/dist/modules/customer_accounts/services/domainMappingService.js +497 -0
- package/dist/modules/customer_accounts/services/domainMappingService.js.map +7 -0
- package/dist/modules/customer_accounts/setup.js +48 -1
- package/dist/modules/customer_accounts/setup.js.map +2 -2
- package/dist/modules/customer_accounts/subscribers/invalidateDomainCache.js +29 -0
- package/dist/modules/customer_accounts/subscribers/invalidateDomainCache.js.map +7 -0
- package/dist/modules/customer_accounts/subscribers/notifyDomainActivated.js +29 -0
- package/dist/modules/customer_accounts/subscribers/notifyDomainActivated.js.map +7 -0
- package/dist/modules/customer_accounts/subscribers/notifyDomainDnsFailed.js +30 -0
- package/dist/modules/customer_accounts/subscribers/notifyDomainDnsFailed.js.map +7 -0
- package/dist/modules/customer_accounts/subscribers/notifyDomainTlsFailed.js +31 -0
- package/dist/modules/customer_accounts/subscribers/notifyDomainTlsFailed.js.map +7 -0
- package/dist/modules/customer_accounts/subscribers/notifyDomainVerified.js +29 -0
- package/dist/modules/customer_accounts/subscribers/notifyDomainVerified.js.map +7 -0
- package/dist/modules/customer_accounts/widgets/injection/account-status/widget.client.js +2 -2
- package/dist/modules/customer_accounts/widgets/injection/account-status/widget.client.js.map +2 -2
- package/dist/modules/customer_accounts/workers/domainTlsRetryWorker.js +67 -0
- package/dist/modules/customer_accounts/workers/domainTlsRetryWorker.js.map +7 -0
- package/dist/modules/customer_accounts/workers/domainVerificationWorker.js +34 -0
- package/dist/modules/customer_accounts/workers/domainVerificationWorker.js.map +7 -0
- package/dist/modules/customers/api/companies/route.js +4 -9
- package/dist/modules/customers/api/companies/route.js.map +2 -2
- package/dist/modules/customers/api/deals/route.js +4 -9
- package/dist/modules/customers/api/deals/route.js.map +2 -2
- package/dist/modules/customers/api/people/route.js +4 -9
- package/dist/modules/customers/api/people/route.js.map +2 -2
- package/dist/modules/customers/api/utils.js +0 -12
- package/dist/modules/customers/api/utils.js.map +2 -2
- package/dist/modules/customers/backend/customers/companies/page.js +361 -284
- package/dist/modules/customers/backend/customers/companies/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/page.js +378 -473
- package/dist/modules/customers/backend/customers/deals/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/people/page.js +368 -286
- package/dist/modules/customers/backend/customers/people/page.js.map +2 -2
- package/dist/modules/customers/components/detail/assignableStaff.js +15 -1
- package/dist/modules/customers/components/detail/assignableStaff.js.map +2 -2
- package/dist/modules/customers/components/formConfig.js +2 -2
- package/dist/modules/customers/components/formConfig.js.map +2 -2
- package/dist/modules/customers/widgets/injection/ai-assistant-trigger/widget.client.js +188 -36
- package/dist/modules/customers/widgets/injection/ai-assistant-trigger/widget.client.js.map +2 -2
- package/dist/modules/customers/widgets/injection/ai-assistant-trigger/widget.js +2 -2
- package/dist/modules/customers/widgets/injection/ai-assistant-trigger/widget.js.map +2 -2
- package/dist/modules/customers/widgets/injection-table.js +6 -0
- package/dist/modules/customers/widgets/injection-table.js.map +2 -2
- package/dist/modules/integrations/backend/integrations/[id]/page.js +2 -3
- package/dist/modules/integrations/backend/integrations/[id]/page.js.map +2 -2
- package/dist/modules/perspectives/services/perspectiveService.js +16 -2
- package/dist/modules/perspectives/services/perspectiveService.js.map +2 -2
- package/dist/modules/portal/frontend/[orgSlug]/portal/login/page.js +5 -3
- package/dist/modules/portal/frontend/[orgSlug]/portal/login/page.js.map +2 -2
- package/dist/modules/portal/frontend/[orgSlug]/portal/reset-password/page.js +3 -3
- package/dist/modules/portal/frontend/[orgSlug]/portal/reset-password/page.js.map +2 -2
- package/dist/modules/portal/frontend/[orgSlug]/portal/signup/page.js +4 -2
- package/dist/modules/portal/frontend/[orgSlug]/portal/signup/page.js.map +2 -2
- package/dist/modules/query_index/lib/engine.js +31 -8
- package/dist/modules/query_index/lib/engine.js.map +2 -2
- package/dist/modules/sales/backend/sales/documents/[id]/page.js +3 -5
- package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
- package/dist/modules/sales/components/ProviderFieldInput.js +2 -2
- package/dist/modules/sales/components/ProviderFieldInput.js.map +2 -2
- package/dist/modules/sales/components/documents/SalesDocumentForm.js +3 -4
- package/dist/modules/sales/components/documents/SalesDocumentForm.js.map +2 -2
- package/dist/modules/shipping_carriers/lib/shipment-wizard/components/ConfigureStep.js +3 -4
- package/dist/modules/shipping_carriers/lib/shipment-wizard/components/ConfigureStep.js.map +2 -2
- package/dist/modules/workflows/backend/tasks/[id]/page.js +2 -2
- package/dist/modules/workflows/backend/tasks/[id]/page.js.map +2 -2
- package/dist/modules/workflows/frontend/checkout-demo/page.js +2 -2
- package/dist/modules/workflows/frontend/checkout-demo/page.js.map +2 -2
- package/generated/entities/domain_mapping/index.ts +14 -0
- package/generated/entities.ids.generated.ts +2 -1
- package/generated/entity-fields-registry.ts +16 -0
- package/package.json +5 -5
- package/src/helpers/integration/auth.ts +1 -1
- package/src/helpers/integration/authUi.ts +1 -1
- package/src/helpers/integration/salesUi.ts +27 -23
- package/src/modules/auth/frontend/login.tsx +4 -3
- package/src/modules/auth/frontend/reset/[token]/page.tsx +4 -4
- package/src/modules/auth/frontend/reset.tsx +2 -2
- package/src/modules/customer_accounts/acl.ts +1 -0
- package/src/modules/customer_accounts/api/admin/domain-mappings/[id]/health-check.ts +119 -0
- package/src/modules/customer_accounts/api/admin/domain-mappings/[id]/verify.ts +123 -0
- package/src/modules/customer_accounts/api/admin/domain-mappings.ts +303 -0
- package/src/modules/customer_accounts/api/domain-check.ts +83 -0
- package/src/modules/customer_accounts/api/domain-resolve/all.ts +139 -0
- package/src/modules/customer_accounts/api/domain-resolve.ts +91 -0
- package/src/modules/customer_accounts/api/login.ts +14 -3
- package/src/modules/customer_accounts/api/magic-link/request.ts +14 -3
- package/src/modules/customer_accounts/api/password/reset-request.ts +15 -3
- package/src/modules/customer_accounts/api/signup.ts +36 -5
- package/src/modules/customer_accounts/backend/customer_accounts/settings/domain/components/Actions.tsx +70 -0
- package/src/modules/customer_accounts/backend/customer_accounts/settings/domain/components/Diagnostics.tsx +66 -0
- package/src/modules/customer_accounts/backend/customer_accounts/settings/domain/components/DnsConfig.tsx +78 -0
- package/src/modules/customer_accounts/backend/customer_accounts/settings/domain/components/DomainPanel.tsx +90 -0
- package/src/modules/customer_accounts/backend/customer_accounts/settings/domain/components/OrgSwitcher.tsx +43 -0
- package/src/modules/customer_accounts/backend/customer_accounts/settings/domain/components/RegisterDialog.tsx +178 -0
- package/src/modules/customer_accounts/backend/customer_accounts/settings/domain/components/StatusBadgeSection.tsx +56 -0
- package/src/modules/customer_accounts/backend/customer_accounts/settings/domain/components/Stepper.tsx +69 -0
- package/src/modules/customer_accounts/backend/customer_accounts/settings/domain/components/domainStatusMap.ts +10 -0
- package/src/modules/customer_accounts/backend/customer_accounts/settings/domain/components/types.ts +31 -0
- package/src/modules/customer_accounts/backend/customer_accounts/settings/domain/page.meta.ts +26 -0
- package/src/modules/customer_accounts/backend/customer_accounts/settings/domain/page.tsx +411 -0
- package/src/modules/customer_accounts/backend/customer_accounts/users/[id]/page.tsx +3 -2
- package/src/modules/customer_accounts/backend/customer_accounts/users/page.tsx +5 -4
- package/src/modules/customer_accounts/data/enrichers.ts +95 -12
- package/src/modules/customer_accounts/data/entities.ts +80 -1
- package/src/modules/customer_accounts/data/guards.ts +155 -0
- package/src/modules/customer_accounts/data/validators.ts +26 -0
- package/src/modules/customer_accounts/di.ts +35 -1
- package/src/modules/customer_accounts/events.ts +8 -1
- package/src/modules/customer_accounts/i18n/de.json +78 -0
- package/src/modules/customer_accounts/i18n/en.json +78 -0
- package/src/modules/customer_accounts/i18n/es.json +78 -0
- package/src/modules/customer_accounts/i18n/pl.json +78 -0
- package/src/modules/customer_accounts/lib/customerAuthServer.ts +44 -8
- package/src/modules/customer_accounts/lib/customerUrl.ts +72 -0
- package/src/modules/customer_accounts/lib/hostname.ts +76 -0
- package/src/modules/customer_accounts/lib/platformDomains.ts +14 -0
- package/src/modules/customer_accounts/lib/proxyRanges.ts +85 -0
- package/src/modules/customer_accounts/lib/rateLimiter.ts +10 -0
- package/src/modules/customer_accounts/lib/resolveTenantContext.ts +96 -0
- package/src/modules/customer_accounts/lib/secretCompare.ts +20 -0
- package/src/modules/customer_accounts/migrations/.snapshot-open-mercato.json +341 -0
- package/src/modules/customer_accounts/migrations/Migration20260430120000_customer_accounts.ts +38 -0
- package/src/modules/customer_accounts/notifications.client.ts +76 -0
- package/src/modules/customer_accounts/notifications.ts +76 -0
- package/src/modules/customer_accounts/services/domainMappingService.ts +632 -0
- package/src/modules/customer_accounts/setup.ts +81 -1
- package/src/modules/customer_accounts/subscribers/invalidateDomainCache.ts +35 -0
- package/src/modules/customer_accounts/subscribers/notifyDomainActivated.ts +32 -0
- package/src/modules/customer_accounts/subscribers/notifyDomainDnsFailed.ts +33 -0
- package/src/modules/customer_accounts/subscribers/notifyDomainTlsFailed.ts +34 -0
- package/src/modules/customer_accounts/subscribers/notifyDomainVerified.ts +32 -0
- package/src/modules/customer_accounts/widgets/injection/account-status/widget.client.tsx +2 -2
- package/src/modules/customer_accounts/workers/domainTlsRetryWorker.ts +84 -0
- package/src/modules/customer_accounts/workers/domainVerificationWorker.ts +45 -0
- package/src/modules/customers/api/companies/route.ts +4 -9
- package/src/modules/customers/api/deals/route.ts +4 -9
- package/src/modules/customers/api/people/route.ts +4 -9
- package/src/modules/customers/api/utils.ts +0 -14
- package/src/modules/customers/backend/customers/companies/page.tsx +321 -237
- package/src/modules/customers/backend/customers/deals/page.tsx +321 -455
- package/src/modules/customers/backend/customers/people/page.tsx +331 -240
- package/src/modules/customers/components/detail/assignableStaff.ts +21 -0
- package/src/modules/customers/components/formConfig.tsx +2 -2
- package/src/modules/customers/i18n/de.json +31 -0
- package/src/modules/customers/i18n/en.json +31 -0
- package/src/modules/customers/i18n/es.json +31 -0
- package/src/modules/customers/i18n/pl.json +31 -0
- package/src/modules/customers/widgets/injection/ai-assistant-trigger/widget.client.tsx +197 -40
- package/src/modules/customers/widgets/injection/ai-assistant-trigger/widget.ts +13 -7
- package/src/modules/customers/widgets/injection-table.ts +6 -0
- package/src/modules/integrations/backend/integrations/[id]/page.tsx +2 -2
- package/src/modules/perspectives/services/perspectiveService.ts +30 -2
- package/src/modules/portal/frontend/[orgSlug]/portal/login/page.tsx +5 -3
- package/src/modules/portal/frontend/[orgSlug]/portal/reset-password/page.tsx +3 -3
- package/src/modules/portal/frontend/[orgSlug]/portal/signup/page.tsx +4 -2
- package/src/modules/query_index/lib/engine.ts +46 -8
- package/src/modules/sales/backend/sales/documents/[id]/page.tsx +3 -5
- package/src/modules/sales/components/ProviderFieldInput.tsx +2 -2
- package/src/modules/sales/components/documents/SalesDocumentForm.tsx +2 -3
- package/src/modules/shipping_carriers/lib/shipment-wizard/components/ConfigureStep.tsx +3 -4
- package/src/modules/workflows/backend/tasks/[id]/page.tsx +2 -2
- package/src/modules/workflows/frontend/checkout-demo/page.tsx +2 -2
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useRegisteredComponent } from "@open-mercato/ui/backend/injection/useRegisteredComponent";
|
|
4
|
+
import { Tag } from "@open-mercato/ui/primitives/tag";
|
|
5
|
+
import { useT } from "@open-mercato/shared/lib/i18n/context";
|
|
6
|
+
import { DefaultStepper } from "./Stepper.js";
|
|
7
|
+
import { DefaultStatusBadge } from "./StatusBadgeSection.js";
|
|
8
|
+
import { DefaultDnsConfig } from "./DnsConfig.js";
|
|
9
|
+
import { DefaultActions } from "./Actions.js";
|
|
10
|
+
import { DnsDiagnostics, TlsDiagnostics } from "./Diagnostics.js";
|
|
11
|
+
function DomainPanel(props) {
|
|
12
|
+
const t = useT();
|
|
13
|
+
const Stepper = useRegisteredComponent(
|
|
14
|
+
"section:customer_accounts.domain-settings:stepper",
|
|
15
|
+
DefaultStepper
|
|
16
|
+
);
|
|
17
|
+
const StatusBadgeSection = useRegisteredComponent(
|
|
18
|
+
"section:customer_accounts.domain-settings:status",
|
|
19
|
+
DefaultStatusBadge
|
|
20
|
+
);
|
|
21
|
+
const DnsConfig = useRegisteredComponent(
|
|
22
|
+
"section:customer_accounts.domain-settings:dns-config",
|
|
23
|
+
DefaultDnsConfig
|
|
24
|
+
);
|
|
25
|
+
const Actions = useRegisteredComponent(
|
|
26
|
+
"section:customer_accounts.domain-settings:actions",
|
|
27
|
+
DefaultActions
|
|
28
|
+
);
|
|
29
|
+
const { mapping, isReplacement, cnameTarget, aRecordTarget } = props;
|
|
30
|
+
const showDnsConfig = mapping.status !== "active";
|
|
31
|
+
return /* @__PURE__ */ jsxs("section", { className: "space-y-4 rounded-xl border bg-card p-6 shadow-sm", children: [
|
|
32
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-start justify-between gap-3", children: /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
|
|
33
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
34
|
+
/* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold tracking-tight", children: mapping.hostname }),
|
|
35
|
+
isReplacement ? /* @__PURE__ */ jsx(Tag, { variant: "info", dot: true, children: t("customer_accounts.domainMapping.replacement.label", "Replacement (waiting to activate)") }) : null
|
|
36
|
+
] }),
|
|
37
|
+
/* @__PURE__ */ jsx(StatusBadgeSection, { mapping })
|
|
38
|
+
] }) }),
|
|
39
|
+
/* @__PURE__ */ jsx(Stepper, { status: mapping.status }),
|
|
40
|
+
/* @__PURE__ */ jsx(DnsDiagnostics, { mapping }),
|
|
41
|
+
/* @__PURE__ */ jsx(TlsDiagnostics, { mapping }),
|
|
42
|
+
showDnsConfig ? /* @__PURE__ */ jsx(
|
|
43
|
+
DnsConfig,
|
|
44
|
+
{
|
|
45
|
+
hostname: mapping.hostname,
|
|
46
|
+
cnameTarget: mapping.cnameTarget ?? cnameTarget,
|
|
47
|
+
aRecordTarget: mapping.aRecordTarget ?? aRecordTarget
|
|
48
|
+
}
|
|
49
|
+
) : null,
|
|
50
|
+
/* @__PURE__ */ jsx(
|
|
51
|
+
Actions,
|
|
52
|
+
{
|
|
53
|
+
mapping,
|
|
54
|
+
isReplacement,
|
|
55
|
+
busy: props.busy,
|
|
56
|
+
onCheckNow: props.onCheckNow,
|
|
57
|
+
onRetryTls: props.onRetryTls,
|
|
58
|
+
onChangeDomain: props.onChangeDomain,
|
|
59
|
+
onRemove: props.onRemove
|
|
60
|
+
}
|
|
61
|
+
)
|
|
62
|
+
] });
|
|
63
|
+
}
|
|
64
|
+
var DomainPanel_default = DomainPanel;
|
|
65
|
+
export {
|
|
66
|
+
DomainPanel,
|
|
67
|
+
DomainPanel_default as default
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=DomainPanel.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../../src/modules/customer_accounts/backend/customer_accounts/settings/domain/components/DomainPanel.tsx"],
|
|
4
|
+
"sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport { useRegisteredComponent } from '@open-mercato/ui/backend/injection/useRegisteredComponent'\nimport { Tag } from '@open-mercato/ui/primitives/tag'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { DefaultStepper, type StepperProps } from './Stepper'\nimport { DefaultStatusBadge, type StatusBadgeSectionProps } from './StatusBadgeSection'\nimport { DefaultDnsConfig, type DnsConfigProps } from './DnsConfig'\nimport { DefaultActions, type ActionsProps } from './Actions'\nimport { DnsDiagnostics, TlsDiagnostics } from './Diagnostics'\nimport type { DomainMappingRow } from './types'\n\nexport type DomainPanelProps = {\n mapping: DomainMappingRow\n isReplacement: boolean\n cnameTarget: string | null\n aRecordTarget: string | null\n busy?: boolean\n onCheckNow: () => void\n onRetryTls: () => void\n onChangeDomain: () => void\n onRemove: () => void\n}\n\nexport function DomainPanel(props: DomainPanelProps) {\n const t = useT()\n const Stepper = useRegisteredComponent<StepperProps>(\n 'section:customer_accounts.domain-settings:stepper',\n DefaultStepper,\n )\n const StatusBadgeSection = useRegisteredComponent<StatusBadgeSectionProps>(\n 'section:customer_accounts.domain-settings:status',\n DefaultStatusBadge,\n )\n const DnsConfig = useRegisteredComponent<DnsConfigProps>(\n 'section:customer_accounts.domain-settings:dns-config',\n DefaultDnsConfig,\n )\n const Actions = useRegisteredComponent<ActionsProps>(\n 'section:customer_accounts.domain-settings:actions',\n DefaultActions,\n )\n\n const { mapping, isReplacement, cnameTarget, aRecordTarget } = props\n const showDnsConfig = mapping.status !== 'active'\n\n return (\n <section className=\"space-y-4 rounded-xl border bg-card p-6 shadow-sm\">\n <div className=\"flex flex-wrap items-start justify-between gap-3\">\n <div className=\"space-y-1\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <h3 className=\"text-lg font-semibold tracking-tight\">{mapping.hostname}</h3>\n {isReplacement ? (\n <Tag variant=\"info\" dot>\n {t('customer_accounts.domainMapping.replacement.label', 'Replacement (waiting to activate)')}\n </Tag>\n ) : null}\n </div>\n <StatusBadgeSection mapping={mapping} />\n </div>\n </div>\n\n <Stepper status={mapping.status} />\n\n <DnsDiagnostics mapping={mapping} />\n <TlsDiagnostics mapping={mapping} />\n\n {showDnsConfig ? (\n <DnsConfig\n hostname={mapping.hostname}\n cnameTarget={mapping.cnameTarget ?? cnameTarget}\n aRecordTarget={mapping.aRecordTarget ?? aRecordTarget}\n />\n ) : null}\n\n <Actions\n mapping={mapping}\n isReplacement={isReplacement}\n busy={props.busy}\n onCheckNow={props.onCheckNow}\n onRetryTls={props.onRetryTls}\n onChangeDomain={props.onChangeDomain}\n onRemove={props.onRemove}\n />\n </section>\n )\n}\n\nexport default DomainPanel\n"],
|
|
5
|
+
"mappings": ";AAmDU,SACE,KADF;AAhDV,SAAS,8BAA8B;AACvC,SAAS,WAAW;AACpB,SAAS,YAAY;AACrB,SAAS,sBAAyC;AAClD,SAAS,0BAAwD;AACjE,SAAS,wBAA6C;AACtD,SAAS,sBAAyC;AAClD,SAAS,gBAAgB,sBAAsB;AAexC,SAAS,YAAY,OAAyB;AACnD,QAAM,IAAI,KAAK;AACf,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,EACF;AACA,QAAM,qBAAqB;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AACA,QAAM,YAAY;AAAA,IAChB;AAAA,IACA;AAAA,EACF;AACA,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,EACF;AAEA,QAAM,EAAE,SAAS,eAAe,aAAa,cAAc,IAAI;AAC/D,QAAM,gBAAgB,QAAQ,WAAW;AAEzC,SACE,qBAAC,aAAQ,WAAU,qDACjB;AAAA,wBAAC,SAAI,WAAU,oDACb,+BAAC,SAAI,WAAU,aACb;AAAA,2BAAC,SAAI,WAAU,qCACb;AAAA,4BAAC,QAAG,WAAU,wCAAwC,kBAAQ,UAAS;AAAA,QACtE,gBACC,oBAAC,OAAI,SAAQ,QAAO,KAAG,MACpB,YAAE,qDAAqD,mCAAmC,GAC7F,IACE;AAAA,SACN;AAAA,MACA,oBAAC,sBAAmB,SAAkB;AAAA,OACxC,GACF;AAAA,IAEA,oBAAC,WAAQ,QAAQ,QAAQ,QAAQ;AAAA,IAEjC,oBAAC,kBAAe,SAAkB;AAAA,IAClC,oBAAC,kBAAe,SAAkB;AAAA,IAEjC,gBACC;AAAA,MAAC;AAAA;AAAA,QACC,UAAU,QAAQ;AAAA,QAClB,aAAa,QAAQ,eAAe;AAAA,QACpC,eAAe,QAAQ,iBAAiB;AAAA;AAAA,IAC1C,IACE;AAAA,IAEJ;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,MAAM,MAAM;AAAA,QACZ,YAAY,MAAM;AAAA,QAClB,YAAY,MAAM;AAAA,QAClB,gBAAgB,MAAM;AAAA,QACtB,UAAU,MAAM;AAAA;AAAA,IAClB;AAAA,KACF;AAEJ;AAEA,IAAO,sBAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useT } from "@open-mercato/shared/lib/i18n/context";
|
|
4
|
+
function OrgSwitcher({ options, selectedId, onChange }) {
|
|
5
|
+
const t = useT();
|
|
6
|
+
if (options.length <= 1) return null;
|
|
7
|
+
return /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-2 text-sm text-muted-foreground", children: [
|
|
8
|
+
/* @__PURE__ */ jsx("span", { children: t("customer_accounts.domainMapping.orgSwitcher.label", "Organization") }),
|
|
9
|
+
/* @__PURE__ */ jsx(
|
|
10
|
+
"select",
|
|
11
|
+
{
|
|
12
|
+
className: "h-9 rounded-md border border-input bg-background px-3 text-sm text-foreground shadow-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40",
|
|
13
|
+
value: selectedId ?? "",
|
|
14
|
+
onChange: (event) => onChange(event.target.value),
|
|
15
|
+
children: options.map((opt) => {
|
|
16
|
+
const indent = opt.depth > 0 ? "\xA0\xA0".repeat(opt.depth) : "";
|
|
17
|
+
return /* @__PURE__ */ jsxs("option", { value: opt.id, children: [
|
|
18
|
+
indent,
|
|
19
|
+
opt.label
|
|
20
|
+
] }, opt.id);
|
|
21
|
+
})
|
|
22
|
+
}
|
|
23
|
+
)
|
|
24
|
+
] });
|
|
25
|
+
}
|
|
26
|
+
var OrgSwitcher_default = OrgSwitcher;
|
|
27
|
+
export {
|
|
28
|
+
OrgSwitcher,
|
|
29
|
+
OrgSwitcher_default as default
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=OrgSwitcher.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../../src/modules/customer_accounts/backend/customer_accounts/settings/domain/components/OrgSwitcher.tsx"],
|
|
4
|
+
"sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nexport type OrgOption = {\n id: string\n label: string\n depth: number\n}\n\nexport type OrgSwitcherProps = {\n options: OrgOption[]\n selectedId: string | null\n onChange: (next: string) => void\n}\n\nexport function OrgSwitcher({ options, selectedId, onChange }: OrgSwitcherProps) {\n const t = useT()\n if (options.length <= 1) return null\n return (\n <label className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <span>{t('customer_accounts.domainMapping.orgSwitcher.label', 'Organization')}</span>\n <select\n className=\"h-9 rounded-md border border-input bg-background px-3 text-sm text-foreground shadow-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40\"\n value={selectedId ?? ''}\n onChange={(event) => onChange(event.target.value)}\n >\n {options.map((opt) => {\n const indent = opt.depth > 0 ? '\u00A0\u00A0'.repeat(opt.depth) : ''\n return (\n <option key={opt.id} value={opt.id}>\n {indent}\n {opt.label}\n </option>\n )\n })}\n </select>\n </label>\n )\n}\n\nexport default OrgSwitcher\n"],
|
|
5
|
+
"mappings": ";AAsBM,cASM,YATN;AAnBN,SAAS,YAAY;AAcd,SAAS,YAAY,EAAE,SAAS,YAAY,SAAS,GAAqB;AAC/E,QAAM,IAAI,KAAK;AACf,MAAI,QAAQ,UAAU,EAAG,QAAO;AAChC,SACE,qBAAC,WAAM,WAAU,yDACf;AAAA,wBAAC,UAAM,YAAE,qDAAqD,cAAc,GAAE;AAAA,IAC9E;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,cAAc;AAAA,QACrB,UAAU,CAAC,UAAU,SAAS,MAAM,OAAO,KAAK;AAAA,QAE/C,kBAAQ,IAAI,CAAC,QAAQ;AACpB,gBAAM,SAAS,IAAI,QAAQ,IAAI,WAAK,OAAO,IAAI,KAAK,IAAI;AACxD,iBACE,qBAAC,YAAoB,OAAO,IAAI,IAC7B;AAAA;AAAA,YACA,IAAI;AAAA,eAFM,IAAI,EAGjB;AAAA,QAEJ,CAAC;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;AAEA,IAAO,sBAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import {
|
|
5
|
+
Dialog,
|
|
6
|
+
DialogContent,
|
|
7
|
+
DialogDescription,
|
|
8
|
+
DialogFooter,
|
|
9
|
+
DialogHeader,
|
|
10
|
+
DialogTitle
|
|
11
|
+
} from "@open-mercato/ui/primitives/dialog";
|
|
12
|
+
import { Button } from "@open-mercato/ui/primitives/button";
|
|
13
|
+
import { Input } from "@open-mercato/ui/primitives/input";
|
|
14
|
+
import { Label } from "@open-mercato/ui/primitives/label";
|
|
15
|
+
import { KbdShortcut } from "@open-mercato/ui/primitives/kbd";
|
|
16
|
+
import { Spinner } from "@open-mercato/ui/primitives/spinner";
|
|
17
|
+
import { useT } from "@open-mercato/shared/lib/i18n/context";
|
|
18
|
+
const HOSTNAME_BASIC = /^[a-z0-9.-]+$/i;
|
|
19
|
+
function RegisterDialog({
|
|
20
|
+
open,
|
|
21
|
+
onOpenChange,
|
|
22
|
+
mode,
|
|
23
|
+
currentHostname,
|
|
24
|
+
onSubmit,
|
|
25
|
+
initialError
|
|
26
|
+
}) {
|
|
27
|
+
const t = useT();
|
|
28
|
+
const [hostname, setHostname] = React.useState("");
|
|
29
|
+
const [error, setError] = React.useState(initialError ?? null);
|
|
30
|
+
const [submitting, setSubmitting] = React.useState(false);
|
|
31
|
+
const inputRef = React.useRef(null);
|
|
32
|
+
React.useEffect(() => {
|
|
33
|
+
if (!open) {
|
|
34
|
+
setHostname("");
|
|
35
|
+
setError(null);
|
|
36
|
+
setSubmitting(false);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
setError(initialError ?? null);
|
|
40
|
+
window.setTimeout(() => inputRef.current?.focus(), 0);
|
|
41
|
+
}, [open, initialError]);
|
|
42
|
+
const validate = React.useCallback(
|
|
43
|
+
(value) => {
|
|
44
|
+
const trimmed = value.trim();
|
|
45
|
+
if (!trimmed) return t("customer_accounts.domainMapping.errors.required", "Domain is required");
|
|
46
|
+
if (trimmed.length > 253) return t("customer_accounts.domainMapping.hostname.validation.invalid", "Enter a valid domain name (no protocol, path, or port)");
|
|
47
|
+
if (trimmed.includes("://") || trimmed.includes("/") || trimmed.includes(":")) {
|
|
48
|
+
return t("customer_accounts.domainMapping.hostname.validation.invalid", "Enter a valid domain name (no protocol, path, or port)");
|
|
49
|
+
}
|
|
50
|
+
if (!HOSTNAME_BASIC.test(trimmed) && !/^xn--/i.test(trimmed)) {
|
|
51
|
+
return t("customer_accounts.domainMapping.hostname.validation.invalid", "Enter a valid domain name (no protocol, path, or port)");
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
},
|
|
55
|
+
[t]
|
|
56
|
+
);
|
|
57
|
+
const handleSubmit = React.useCallback(
|
|
58
|
+
async (event) => {
|
|
59
|
+
event.preventDefault();
|
|
60
|
+
const validation = validate(hostname);
|
|
61
|
+
if (validation) {
|
|
62
|
+
setError(validation);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
setSubmitting(true);
|
|
66
|
+
setError(null);
|
|
67
|
+
try {
|
|
68
|
+
await onSubmit(hostname.trim());
|
|
69
|
+
} catch (err) {
|
|
70
|
+
const message = err instanceof Error ? err.message : "Submission failed";
|
|
71
|
+
setError(message);
|
|
72
|
+
} finally {
|
|
73
|
+
setSubmitting(false);
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
[hostname, onSubmit, validate]
|
|
77
|
+
);
|
|
78
|
+
const handleKeyDown = React.useCallback(
|
|
79
|
+
(event) => {
|
|
80
|
+
if ((event.metaKey || event.ctrlKey) && event.key === "Enter") {
|
|
81
|
+
event.preventDefault();
|
|
82
|
+
handleSubmit(event);
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
[handleSubmit]
|
|
86
|
+
);
|
|
87
|
+
const title = mode === "change" ? t("customer_accounts.domainMapping.dialog.change.title", "Change custom domain") : t("customer_accounts.domainMapping.dialog.register.title", "Register custom domain");
|
|
88
|
+
const description = mode === "change" && currentHostname ? t(
|
|
89
|
+
"customer_accounts.domainMapping.changeDomain.description",
|
|
90
|
+
"Your current domain ({hostname}) will stay active until the new domain is fully set up. No downtime for your customers.",
|
|
91
|
+
{ hostname: currentHostname }
|
|
92
|
+
) : t("customer_accounts.domainMapping.description", "Map your own domain to the customer portal");
|
|
93
|
+
const submitLabel = mode === "change" ? t("customer_accounts.domainMapping.dialog.change.submit", "Start replacement") : t("customer_accounts.domainMapping.dialog.register.submit", "Register");
|
|
94
|
+
return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(DialogContent, { children: [
|
|
95
|
+
/* @__PURE__ */ jsxs(DialogHeader, { children: [
|
|
96
|
+
/* @__PURE__ */ jsx(DialogTitle, { children: title }),
|
|
97
|
+
/* @__PURE__ */ jsx(DialogDescription, { children: description })
|
|
98
|
+
] }),
|
|
99
|
+
/* @__PURE__ */ jsxs("form", { className: "space-y-4", onSubmit: handleSubmit, onKeyDown: handleKeyDown, children: [
|
|
100
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
101
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "custom-domain-hostname", children: t("customer_accounts.domainMapping.hostname.label", "Domain") }),
|
|
102
|
+
/* @__PURE__ */ jsx(
|
|
103
|
+
Input,
|
|
104
|
+
{
|
|
105
|
+
id: "custom-domain-hostname",
|
|
106
|
+
ref: inputRef,
|
|
107
|
+
value: hostname,
|
|
108
|
+
autoComplete: "off",
|
|
109
|
+
spellCheck: false,
|
|
110
|
+
placeholder: t("customer_accounts.domainMapping.hostname.placeholder", "e.g., shop.yourdomain.com"),
|
|
111
|
+
onChange: (event) => {
|
|
112
|
+
setHostname(event.target.value);
|
|
113
|
+
if (error) setError(null);
|
|
114
|
+
},
|
|
115
|
+
"aria-invalid": error ? true : void 0,
|
|
116
|
+
disabled: submitting
|
|
117
|
+
}
|
|
118
|
+
),
|
|
119
|
+
error ? /* @__PURE__ */ jsx("p", { className: "text-sm text-status-error-text", role: "alert", children: error }) : null
|
|
120
|
+
] }),
|
|
121
|
+
/* @__PURE__ */ jsxs(DialogFooter, { className: "items-center", children: [
|
|
122
|
+
/* @__PURE__ */ jsx("span", { className: "hidden text-xs text-muted-foreground sm:inline-flex sm:items-center sm:gap-1", children: /* @__PURE__ */ jsx(KbdShortcut, { keys: ["\u2318", "Enter"] }) }),
|
|
123
|
+
/* @__PURE__ */ jsx(
|
|
124
|
+
Button,
|
|
125
|
+
{
|
|
126
|
+
type: "button",
|
|
127
|
+
variant: "ghost",
|
|
128
|
+
size: "default",
|
|
129
|
+
onClick: () => onOpenChange(false),
|
|
130
|
+
disabled: submitting,
|
|
131
|
+
children: t("customer_accounts.domainMapping.dialog.cancel", "Cancel")
|
|
132
|
+
}
|
|
133
|
+
),
|
|
134
|
+
/* @__PURE__ */ jsxs(Button, { type: "submit", size: "default", disabled: submitting, children: [
|
|
135
|
+
submitting ? /* @__PURE__ */ jsx(Spinner, { className: "mr-2 h-4 w-4" }) : null,
|
|
136
|
+
submitLabel
|
|
137
|
+
] })
|
|
138
|
+
] })
|
|
139
|
+
] })
|
|
140
|
+
] }) });
|
|
141
|
+
}
|
|
142
|
+
var RegisterDialog_default = RegisterDialog;
|
|
143
|
+
export {
|
|
144
|
+
RegisterDialog,
|
|
145
|
+
RegisterDialog_default as default
|
|
146
|
+
};
|
|
147
|
+
//# sourceMappingURL=RegisterDialog.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../../src/modules/customer_accounts/backend/customer_accounts/settings/domain/components/RegisterDialog.tsx"],
|
|
4
|
+
"sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@open-mercato/ui/primitives/dialog'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { Input } from '@open-mercato/ui/primitives/input'\nimport { Label } from '@open-mercato/ui/primitives/label'\nimport { KbdShortcut } from '@open-mercato/ui/primitives/kbd'\nimport { Spinner } from '@open-mercato/ui/primitives/spinner'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nexport type RegisterDialogProps = {\n open: boolean\n onOpenChange: (next: boolean) => void\n mode: 'register' | 'change'\n currentHostname?: string | null\n onSubmit: (hostname: string) => Promise<void>\n initialError?: string | null\n}\n\nconst HOSTNAME_BASIC = /^[a-z0-9.-]+$/i\n\nexport function RegisterDialog({\n open,\n onOpenChange,\n mode,\n currentHostname,\n onSubmit,\n initialError,\n}: RegisterDialogProps) {\n const t = useT()\n const [hostname, setHostname] = React.useState('')\n const [error, setError] = React.useState<string | null>(initialError ?? null)\n const [submitting, setSubmitting] = React.useState(false)\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n React.useEffect(() => {\n if (!open) {\n setHostname('')\n setError(null)\n setSubmitting(false)\n return\n }\n setError(initialError ?? null)\n window.setTimeout(() => inputRef.current?.focus(), 0)\n }, [open, initialError])\n\n const validate = React.useCallback(\n (value: string): string | null => {\n const trimmed = value.trim()\n if (!trimmed) return t('customer_accounts.domainMapping.errors.required', 'Domain is required')\n if (trimmed.length > 253) return t('customer_accounts.domainMapping.hostname.validation.invalid', 'Enter a valid domain name (no protocol, path, or port)')\n if (trimmed.includes('://') || trimmed.includes('/') || trimmed.includes(':')) {\n return t('customer_accounts.domainMapping.hostname.validation.invalid', 'Enter a valid domain name (no protocol, path, or port)')\n }\n if (!HOSTNAME_BASIC.test(trimmed) && !/^xn--/i.test(trimmed)) {\n return t('customer_accounts.domainMapping.hostname.validation.invalid', 'Enter a valid domain name (no protocol, path, or port)')\n }\n return null\n },\n [t],\n )\n\n const handleSubmit = React.useCallback(\n async (event: React.FormEvent) => {\n event.preventDefault()\n const validation = validate(hostname)\n if (validation) {\n setError(validation)\n return\n }\n setSubmitting(true)\n setError(null)\n try {\n await onSubmit(hostname.trim())\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Submission failed'\n setError(message)\n } finally {\n setSubmitting(false)\n }\n },\n [hostname, onSubmit, validate],\n )\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLFormElement>) => {\n if ((event.metaKey || event.ctrlKey) && event.key === 'Enter') {\n event.preventDefault()\n handleSubmit(event)\n }\n },\n [handleSubmit],\n )\n\n const title =\n mode === 'change'\n ? t('customer_accounts.domainMapping.dialog.change.title', 'Change custom domain')\n : t('customer_accounts.domainMapping.dialog.register.title', 'Register custom domain')\n\n const description =\n mode === 'change' && currentHostname\n ? t(\n 'customer_accounts.domainMapping.changeDomain.description',\n 'Your current domain ({hostname}) will stay active until the new domain is fully set up. No downtime for your customers.',\n { hostname: currentHostname },\n )\n : t('customer_accounts.domainMapping.description', 'Map your own domain to the customer portal')\n\n const submitLabel =\n mode === 'change'\n ? t('customer_accounts.domainMapping.dialog.change.submit', 'Start replacement')\n : t('customer_accounts.domainMapping.dialog.register.submit', 'Register')\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <form className=\"space-y-4\" onSubmit={handleSubmit} onKeyDown={handleKeyDown}>\n <div className=\"space-y-2\">\n <Label htmlFor=\"custom-domain-hostname\">\n {t('customer_accounts.domainMapping.hostname.label', 'Domain')}\n </Label>\n <Input\n id=\"custom-domain-hostname\"\n ref={inputRef}\n value={hostname}\n autoComplete=\"off\"\n spellCheck={false}\n placeholder={t('customer_accounts.domainMapping.hostname.placeholder', 'e.g., shop.yourdomain.com')}\n onChange={(event) => {\n setHostname(event.target.value)\n if (error) setError(null)\n }}\n aria-invalid={error ? true : undefined}\n disabled={submitting}\n />\n {error ? (\n <p className=\"text-sm text-status-error-text\" role=\"alert\">\n {error}\n </p>\n ) : null}\n </div>\n <DialogFooter className=\"items-center\">\n <span className=\"hidden text-xs text-muted-foreground sm:inline-flex sm:items-center sm:gap-1\">\n <KbdShortcut keys={['\u2318', 'Enter']} />\n </span>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"default\"\n onClick={() => onOpenChange(false)}\n disabled={submitting}\n >\n {t('customer_accounts.domainMapping.dialog.cancel', 'Cancel')}\n </Button>\n <Button type=\"submit\" size=\"default\" disabled={submitting}>\n {submitting ? <Spinner className=\"mr-2 h-4 w-4\" /> : null}\n {submitLabel}\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog>\n )\n}\n\nexport default RegisterDialog\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { StatusBadge } from "@open-mercato/ui/primitives/status-badge";
|
|
4
|
+
import { useT } from "@open-mercato/shared/lib/i18n/context";
|
|
5
|
+
import { domainStatusMap } from "./domainStatusMap.js";
|
|
6
|
+
function formatTime(value, fallback) {
|
|
7
|
+
if (!value) return fallback;
|
|
8
|
+
const date = new Date(value);
|
|
9
|
+
if (Number.isNaN(date.getTime())) return fallback;
|
|
10
|
+
return date.toLocaleString();
|
|
11
|
+
}
|
|
12
|
+
function DefaultStatusBadge({ mapping }) {
|
|
13
|
+
const t = useT();
|
|
14
|
+
const variant = domainStatusMap[mapping.status];
|
|
15
|
+
const label = t(
|
|
16
|
+
`customer_accounts.domainMapping.status.${mapping.status}`,
|
|
17
|
+
mapping.status
|
|
18
|
+
);
|
|
19
|
+
const lastChecked = formatTime(
|
|
20
|
+
mapping.lastDnsCheckAt,
|
|
21
|
+
t("customer_accounts.domainMapping.autoVerify.checking", "Automatically checking every 5 minutes")
|
|
22
|
+
);
|
|
23
|
+
const showAutoCheck = mapping.status === "pending" || mapping.status === "dns_failed";
|
|
24
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [
|
|
25
|
+
/* @__PURE__ */ jsx(StatusBadge, { variant, dot: true, children: label }),
|
|
26
|
+
mapping.lastDnsCheckAt ? /* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: t("customer_accounts.domainMapping.autoVerify.lastChecked", "Last checked: {time}", {
|
|
27
|
+
time: lastChecked
|
|
28
|
+
}) }) : null,
|
|
29
|
+
showAutoCheck ? /* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: t("customer_accounts.domainMapping.autoVerify.nextCheck", "Next check in ~{minutes} minutes", {
|
|
30
|
+
minutes: "5"
|
|
31
|
+
}) }) : null
|
|
32
|
+
] });
|
|
33
|
+
}
|
|
34
|
+
var StatusBadgeSection_default = DefaultStatusBadge;
|
|
35
|
+
export {
|
|
36
|
+
DefaultStatusBadge,
|
|
37
|
+
StatusBadgeSection_default as default
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=StatusBadgeSection.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../../src/modules/customer_accounts/backend/customer_accounts/settings/domain/components/StatusBadgeSection.tsx"],
|
|
4
|
+
"sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport { StatusBadge } from '@open-mercato/ui/primitives/status-badge'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { domainStatusMap } from './domainStatusMap'\nimport type { DomainMappingRow } from './types'\n\nexport type StatusBadgeSectionProps = {\n mapping: DomainMappingRow\n}\n\nfunction formatTime(value: string | null, fallback: string): string {\n if (!value) return fallback\n const date = new Date(value)\n if (Number.isNaN(date.getTime())) return fallback\n return date.toLocaleString()\n}\n\nexport function DefaultStatusBadge({ mapping }: StatusBadgeSectionProps) {\n const t = useT()\n const variant = domainStatusMap[mapping.status]\n const label = t(\n `customer_accounts.domainMapping.status.${mapping.status}`,\n mapping.status,\n )\n const lastChecked = formatTime(\n mapping.lastDnsCheckAt,\n t('customer_accounts.domainMapping.autoVerify.checking', 'Automatically checking every 5 minutes'),\n )\n const showAutoCheck = mapping.status === 'pending' || mapping.status === 'dns_failed'\n\n return (\n <div className=\"flex flex-wrap items-center gap-3\">\n <StatusBadge variant={variant} dot>\n {label}\n </StatusBadge>\n {mapping.lastDnsCheckAt ? (\n <span className=\"text-xs text-muted-foreground\">\n {t('customer_accounts.domainMapping.autoVerify.lastChecked', 'Last checked: {time}', {\n time: lastChecked,\n })}\n </span>\n ) : null}\n {showAutoCheck ? (\n <span className=\"text-xs text-muted-foreground\">\n {t('customer_accounts.domainMapping.autoVerify.nextCheck', 'Next check in ~{minutes} minutes', {\n minutes: '5',\n })}\n </span>\n ) : null}\n </div>\n )\n}\n\nexport default DefaultStatusBadge\n"],
|
|
5
|
+
"mappings": ";AAiCI,SACE,KADF;AA9BJ,SAAS,mBAAmB;AAC5B,SAAS,YAAY;AACrB,SAAS,uBAAuB;AAOhC,SAAS,WAAW,OAAsB,UAA0B;AAClE,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,OAAO,IAAI,KAAK,KAAK;AAC3B,MAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,EAAG,QAAO;AACzC,SAAO,KAAK,eAAe;AAC7B;AAEO,SAAS,mBAAmB,EAAE,QAAQ,GAA4B;AACvE,QAAM,IAAI,KAAK;AACf,QAAM,UAAU,gBAAgB,QAAQ,MAAM;AAC9C,QAAM,QAAQ;AAAA,IACZ,0CAA0C,QAAQ,MAAM;AAAA,IACxD,QAAQ;AAAA,EACV;AACA,QAAM,cAAc;AAAA,IAClB,QAAQ;AAAA,IACR,EAAE,uDAAuD,wCAAwC;AAAA,EACnG;AACA,QAAM,gBAAgB,QAAQ,WAAW,aAAa,QAAQ,WAAW;AAEzE,SACE,qBAAC,SAAI,WAAU,qCACb;AAAA,wBAAC,eAAY,SAAkB,KAAG,MAC/B,iBACH;AAAA,IACC,QAAQ,iBACP,oBAAC,UAAK,WAAU,iCACb,YAAE,0DAA0D,wBAAwB;AAAA,MACnF,MAAM;AAAA,IACR,CAAC,GACH,IACE;AAAA,IACH,gBACC,oBAAC,UAAK,WAAU,iCACb,YAAE,wDAAwD,oCAAoC;AAAA,MAC7F,SAAS;AAAA,IACX,CAAC,GACH,IACE;AAAA,KACN;AAEJ;AAEA,IAAO,6BAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Check } from "lucide-react";
|
|
4
|
+
import { cn } from "@open-mercato/shared/lib/utils";
|
|
5
|
+
import { useT } from "@open-mercato/shared/lib/i18n/context";
|
|
6
|
+
function activeStep(status) {
|
|
7
|
+
if (!status) return 1;
|
|
8
|
+
if (status === "pending" || status === "dns_failed") return 2;
|
|
9
|
+
if (status === "verified" || status === "tls_failed") return 3;
|
|
10
|
+
if (status === "active") return 4;
|
|
11
|
+
return 1;
|
|
12
|
+
}
|
|
13
|
+
function DefaultStepper({ status }) {
|
|
14
|
+
const t = useT();
|
|
15
|
+
const current = activeStep(status);
|
|
16
|
+
const steps = [
|
|
17
|
+
{ idx: 1, label: t("customer_accounts.domainMapping.stepper.step1", "Register Domain") },
|
|
18
|
+
{ idx: 2, label: t("customer_accounts.domainMapping.stepper.step2", "Configure DNS") },
|
|
19
|
+
{ idx: 3, label: t("customer_accounts.domainMapping.stepper.step3", "SSL Certificate") },
|
|
20
|
+
{ idx: 4, label: t("customer_accounts.domainMapping.stepper.step4", "Live") }
|
|
21
|
+
];
|
|
22
|
+
return /* @__PURE__ */ jsx("ol", { className: "flex flex-wrap items-center gap-3 text-sm", children: steps.map((step, index) => {
|
|
23
|
+
const isDone = step.idx < current;
|
|
24
|
+
const isCurrent = step.idx === current;
|
|
25
|
+
return /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-3", children: [
|
|
26
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
27
|
+
/* @__PURE__ */ jsx(
|
|
28
|
+
"span",
|
|
29
|
+
{
|
|
30
|
+
className: cn(
|
|
31
|
+
"flex h-7 w-7 items-center justify-center rounded-full border text-xs font-medium",
|
|
32
|
+
isDone && "border-status-success-icon bg-status-success-icon text-status-success-foreground",
|
|
33
|
+
isCurrent && "border-primary bg-primary/10 text-primary",
|
|
34
|
+
!isDone && !isCurrent && "border-border bg-background text-muted-foreground"
|
|
35
|
+
),
|
|
36
|
+
"aria-current": isCurrent ? "step" : void 0,
|
|
37
|
+
children: isDone ? /* @__PURE__ */ jsx(Check, { className: "h-4 w-4", "aria-hidden": true }) : step.idx
|
|
38
|
+
}
|
|
39
|
+
),
|
|
40
|
+
/* @__PURE__ */ jsx(
|
|
41
|
+
"span",
|
|
42
|
+
{
|
|
43
|
+
className: cn(
|
|
44
|
+
"whitespace-nowrap",
|
|
45
|
+
isCurrent ? "font-medium text-foreground" : "text-muted-foreground"
|
|
46
|
+
),
|
|
47
|
+
children: step.label
|
|
48
|
+
}
|
|
49
|
+
)
|
|
50
|
+
] }),
|
|
51
|
+
index < steps.length - 1 ? /* @__PURE__ */ jsx("span", { className: "hidden h-px w-8 bg-border sm:block", "aria-hidden": true }) : null
|
|
52
|
+
] }, step.idx);
|
|
53
|
+
}) });
|
|
54
|
+
}
|
|
55
|
+
var Stepper_default = DefaultStepper;
|
|
56
|
+
export {
|
|
57
|
+
DefaultStepper,
|
|
58
|
+
Stepper_default as default
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=Stepper.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../../src/modules/customer_accounts/backend/customer_accounts/settings/domain/components/Stepper.tsx"],
|
|
4
|
+
"sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport { Check } from 'lucide-react'\nimport { cn } from '@open-mercato/shared/lib/utils'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport type { DomainStatus } from '@open-mercato/core/modules/customer_accounts/data/entities'\n\nexport type StepperProps = {\n status: DomainStatus | null\n}\n\nfunction activeStep(status: DomainStatus | null): number {\n if (!status) return 1\n if (status === 'pending' || status === 'dns_failed') return 2\n if (status === 'verified' || status === 'tls_failed') return 3\n if (status === 'active') return 4\n return 1\n}\n\nexport function DefaultStepper({ status }: StepperProps) {\n const t = useT()\n const current = activeStep(status)\n const steps: Array<{ idx: number; label: string }> = [\n { idx: 1, label: t('customer_accounts.domainMapping.stepper.step1', 'Register Domain') },\n { idx: 2, label: t('customer_accounts.domainMapping.stepper.step2', 'Configure DNS') },\n { idx: 3, label: t('customer_accounts.domainMapping.stepper.step3', 'SSL Certificate') },\n { idx: 4, label: t('customer_accounts.domainMapping.stepper.step4', 'Live') },\n ]\n\n return (\n <ol className=\"flex flex-wrap items-center gap-3 text-sm\">\n {steps.map((step, index) => {\n const isDone = step.idx < current\n const isCurrent = step.idx === current\n return (\n <li key={step.idx} className=\"flex items-center gap-3\">\n <div className=\"flex items-center gap-2\">\n <span\n className={cn(\n 'flex h-7 w-7 items-center justify-center rounded-full border text-xs font-medium',\n isDone && 'border-status-success-icon bg-status-success-icon text-status-success-foreground',\n isCurrent && 'border-primary bg-primary/10 text-primary',\n !isDone && !isCurrent && 'border-border bg-background text-muted-foreground',\n )}\n aria-current={isCurrent ? 'step' : undefined}\n >\n {isDone ? <Check className=\"h-4 w-4\" aria-hidden /> : step.idx}\n </span>\n <span\n className={cn(\n 'whitespace-nowrap',\n isCurrent ? 'font-medium text-foreground' : 'text-muted-foreground',\n )}\n >\n {step.label}\n </span>\n </div>\n {index < steps.length - 1 ? (\n <span className=\"hidden h-px w-8 bg-border sm:block\" aria-hidden />\n ) : null}\n </li>\n )\n })}\n </ol>\n )\n}\n\nexport default DefaultStepper\n"],
|
|
5
|
+
"mappings": ";AAqCY,SAUc,KAVd;AAlCZ,SAAS,aAAa;AACtB,SAAS,UAAU;AACnB,SAAS,YAAY;AAOrB,SAAS,WAAW,QAAqC;AACvD,MAAI,CAAC,OAAQ,QAAO;AACpB,MAAI,WAAW,aAAa,WAAW,aAAc,QAAO;AAC5D,MAAI,WAAW,cAAc,WAAW,aAAc,QAAO;AAC7D,MAAI,WAAW,SAAU,QAAO;AAChC,SAAO;AACT;AAEO,SAAS,eAAe,EAAE,OAAO,GAAiB;AACvD,QAAM,IAAI,KAAK;AACf,QAAM,UAAU,WAAW,MAAM;AACjC,QAAM,QAA+C;AAAA,IACnD,EAAE,KAAK,GAAG,OAAO,EAAE,iDAAiD,iBAAiB,EAAE;AAAA,IACvF,EAAE,KAAK,GAAG,OAAO,EAAE,iDAAiD,eAAe,EAAE;AAAA,IACrF,EAAE,KAAK,GAAG,OAAO,EAAE,iDAAiD,iBAAiB,EAAE;AAAA,IACvF,EAAE,KAAK,GAAG,OAAO,EAAE,iDAAiD,MAAM,EAAE;AAAA,EAC9E;AAEA,SACE,oBAAC,QAAG,WAAU,6CACX,gBAAM,IAAI,CAAC,MAAM,UAAU;AAC1B,UAAM,SAAS,KAAK,MAAM;AAC1B,UAAM,YAAY,KAAK,QAAQ;AAC/B,WACE,qBAAC,QAAkB,WAAU,2BAC3B;AAAA,2BAAC,SAAI,WAAU,2BACb;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,UAAU;AAAA,cACV,aAAa;AAAA,cACb,CAAC,UAAU,CAAC,aAAa;AAAA,YAC3B;AAAA,YACA,gBAAc,YAAY,SAAS;AAAA,YAElC,mBAAS,oBAAC,SAAM,WAAU,WAAU,eAAW,MAAC,IAAK,KAAK;AAAA;AAAA,QAC7D;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,YAAY,gCAAgC;AAAA,YAC9C;AAAA,YAEC,eAAK;AAAA;AAAA,QACR;AAAA,SACF;AAAA,MACC,QAAQ,MAAM,SAAS,IACtB,oBAAC,UAAK,WAAU,sCAAqC,eAAW,MAAC,IAC/D;AAAA,SAxBG,KAAK,GAyBd;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEA,IAAO,kBAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../../src/modules/customer_accounts/backend/customer_accounts/settings/domain/components/domainStatusMap.ts"],
|
|
4
|
+
"sourcesContent": ["import type { StatusMap } from '@open-mercato/ui/primitives/status-badge'\nimport type { DomainStatus } from '@open-mercato/core/modules/customer_accounts/data/entities'\n\nexport const domainStatusMap: StatusMap<DomainStatus> = {\n pending: 'info',\n verified: 'info',\n active: 'success',\n dns_failed: 'error',\n tls_failed: 'warning',\n}\n"],
|
|
5
|
+
"mappings": "AAGO,MAAM,kBAA2C;AAAA,EACtD,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,YAAY;AACd;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.js.map
|