@replicated/portal-components 0.0.19 → 0.0.21
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/components/metadata/registry.json +2 -2
- package/components/metadata/registry.md +2 -2
- package/dist/actions/change-team.js +66 -7
- package/dist/actions/change-team.js.map +1 -1
- package/dist/actions/index.d.mts +3 -1
- package/dist/actions/index.d.ts +3 -1
- package/dist/actions/index.js +182 -465
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/install-actions.d.mts +3 -1
- package/dist/actions/install-actions.d.ts +3 -1
- package/dist/actions/install-actions.js +58 -5
- package/dist/actions/install-actions.js.map +1 -1
- package/dist/actions/service-account.d.mts +3 -1
- package/dist/actions/service-account.d.ts +3 -1
- package/dist/actions/service-account.js +58 -5
- package/dist/actions/service-account.js.map +1 -1
- package/dist/actions/support-bundles.d.mts +3 -1
- package/dist/actions/support-bundles.d.ts +3 -1
- package/dist/actions/support-bundles.js +58 -5
- package/dist/actions/support-bundles.js.map +1 -1
- package/dist/actions/team-settings.d.mts +3 -1
- package/dist/actions/team-settings.d.ts +3 -1
- package/dist/actions/team-settings.js +91 -27
- package/dist/actions/team-settings.js.map +1 -1
- package/dist/actions/trial-signup.d.mts +24 -0
- package/dist/actions/trial-signup.d.ts +24 -0
- package/dist/actions/trial-signup.js +482 -0
- package/dist/actions/trial-signup.js.map +1 -0
- package/dist/actions/user-settings.d.mts +3 -1
- package/dist/actions/user-settings.d.ts +3 -1
- package/dist/actions/user-settings.js +58 -5
- package/dist/actions/user-settings.js.map +1 -1
- package/dist/airgap-instances.d.mts +3 -1
- package/dist/airgap-instances.d.ts +3 -1
- package/dist/airgap-instances.js +41 -112
- package/dist/airgap-instances.js.map +1 -1
- package/dist/branding-BsMSywts.d.mts +36 -0
- package/dist/branding-BsMSywts.d.ts +36 -0
- package/dist/error-page.js +10 -2
- package/dist/error-page.js.map +1 -1
- package/dist/error.js +10 -2
- package/dist/error.js.map +1 -1
- package/dist/esm/actions/change-team.js +66 -7
- package/dist/esm/actions/change-team.js.map +1 -1
- package/dist/esm/actions/index.js +181 -462
- package/dist/esm/actions/index.js.map +1 -1
- package/dist/esm/actions/install-actions.js +58 -5
- package/dist/esm/actions/install-actions.js.map +1 -1
- package/dist/esm/actions/service-account.js +58 -5
- package/dist/esm/actions/service-account.js.map +1 -1
- package/dist/esm/actions/support-bundles.js +58 -5
- package/dist/esm/actions/support-bundles.js.map +1 -1
- package/dist/esm/actions/team-settings.js +91 -27
- package/dist/esm/actions/team-settings.js.map +1 -1
- package/dist/esm/actions/trial-signup.js +478 -0
- package/dist/esm/actions/trial-signup.js.map +1 -0
- package/dist/esm/actions/user-settings.js +58 -5
- package/dist/esm/actions/user-settings.js.map +1 -1
- package/dist/esm/airgap-instances.js +40 -112
- package/dist/esm/airgap-instances.js.map +1 -1
- package/dist/esm/error-page.js +10 -2
- package/dist/esm/error-page.js.map +1 -1
- package/dist/esm/error.js +10 -2
- package/dist/esm/error.js.map +1 -1
- package/dist/esm/helm-install-wizard.js +118 -79
- package/dist/esm/helm-install-wizard.js.map +1 -1
- package/dist/esm/index.js +706 -438
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/install-actions.js +40 -5
- package/dist/esm/install-actions.js.map +1 -1
- package/dist/esm/install-card.js +9 -6
- package/dist/esm/install-card.js.map +1 -1
- package/dist/esm/install-targets.js +9 -2
- package/dist/esm/install-targets.js.map +1 -1
- package/dist/esm/instance-card.js +39 -111
- package/dist/esm/instance-card.js.map +1 -1
- package/dist/esm/join-team.js +9 -3
- package/dist/esm/join-team.js.map +1 -1
- package/dist/esm/license-card.js +24 -22
- package/dist/esm/license-card.js.map +1 -1
- package/dist/esm/license-details.js +128 -334
- package/dist/esm/license-details.js.map +1 -1
- package/dist/esm/linux-install-wizard.js +95 -41
- package/dist/esm/linux-install-wizard.js.map +1 -1
- package/dist/esm/login.js +20 -4
- package/dist/esm/login.js.map +1 -1
- package/dist/esm/middleware.js +33 -0
- package/dist/esm/middleware.js.map +1 -0
- package/dist/esm/online-instance-list.js +40 -112
- package/dist/esm/online-instance-list.js.map +1 -1
- package/dist/esm/release-history-panel.js +27 -14
- package/dist/esm/release-history-panel.js.map +1 -1
- package/dist/esm/saml-callback-client.js +82 -0
- package/dist/esm/saml-callback-client.js.map +1 -0
- package/dist/esm/saml-handlers.js +138 -0
- package/dist/esm/saml-handlers.js.map +1 -0
- package/dist/esm/security-card.js +53 -38
- package/dist/esm/security-card.js.map +1 -1
- package/dist/esm/service-accounts-tab.js +800 -0
- package/dist/esm/service-accounts-tab.js.map +1 -0
- package/dist/esm/support-bundle-collection-card.js +48 -24
- package/dist/esm/support-bundle-collection-card.js.map +1 -1
- package/dist/esm/support-bundles-card.js +10 -5
- package/dist/esm/support-bundles-card.js.map +1 -1
- package/dist/esm/support-card.js +37 -5
- package/dist/esm/support-card.js.map +1 -1
- package/dist/esm/team-selection.js +5 -1
- package/dist/esm/team-selection.js.map +1 -1
- package/dist/esm/team-settings-card.js +5 -2
- package/dist/esm/team-settings-card.js.map +1 -1
- package/dist/esm/team-settings.js +7 -2
- package/dist/esm/team-settings.js.map +1 -1
- package/dist/esm/top-nav-user-menu.js +5 -1
- package/dist/esm/top-nav-user-menu.js.map +1 -1
- package/dist/esm/top-nav.js +175 -62
- package/dist/esm/top-nav.js.map +1 -1
- package/dist/esm/trial-signup.js +256 -0
- package/dist/esm/trial-signup.js.map +1 -0
- package/dist/esm/update-layout.js +175 -62
- package/dist/esm/update-layout.js.map +1 -1
- package/dist/esm/updates-card.js +15 -4
- package/dist/esm/updates-card.js.map +1 -1
- package/dist/esm/upload-support-bundle-modal.js +9 -4
- package/dist/esm/upload-support-bundle-modal.js.map +1 -1
- package/dist/esm/user-settings-card.js +5 -2
- package/dist/esm/user-settings-card.js.map +1 -1
- package/dist/esm/user-settings.js +12 -6
- package/dist/esm/user-settings.js.map +1 -1
- package/dist/esm/utils/index.js +204 -13
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/fetch-license-iTyF7_GY.d.mts +81 -0
- package/dist/fetch-license-iTyF7_GY.d.ts +81 -0
- package/dist/helm-install-wizard.d.mts +11 -3
- package/dist/helm-install-wizard.d.ts +11 -3
- package/dist/helm-install-wizard.js +118 -79
- package/dist/helm-install-wizard.js.map +1 -1
- package/dist/{index-BAiVrSSR.d.mts → index-DyzJ0yKD.d.mts} +48 -50
- package/dist/{index-DWt-N5od.d.ts → index-sMbq94M7.d.ts} +48 -50
- package/dist/index.d.mts +8 -2
- package/dist/index.d.ts +8 -2
- package/dist/index.js +726 -438
- package/dist/index.js.map +1 -1
- package/dist/install-actions.d.mts +4 -2
- package/dist/install-actions.d.ts +4 -2
- package/dist/install-actions.js +40 -5
- package/dist/install-actions.js.map +1 -1
- package/dist/install-card.d.mts +2 -3
- package/dist/install-card.d.ts +2 -3
- package/dist/install-card.js +9 -6
- package/dist/install-card.js.map +1 -1
- package/dist/install-targets.js +9 -2
- package/dist/install-targets.js.map +1 -1
- package/dist/instance-card.d.mts +3 -1
- package/dist/instance-card.d.ts +3 -1
- package/dist/instance-card.js +40 -111
- package/dist/instance-card.js.map +1 -1
- package/dist/join-team.js +9 -3
- package/dist/join-team.js.map +1 -1
- package/dist/license-card.d.mts +2 -3
- package/dist/license-card.d.ts +2 -3
- package/dist/license-card.js +24 -22
- package/dist/license-card.js.map +1 -1
- package/dist/license-details.js +128 -334
- package/dist/license-details.js.map +1 -1
- package/dist/linux-install-wizard.d.mts +9 -3
- package/dist/linux-install-wizard.d.ts +9 -3
- package/dist/linux-install-wizard.js +95 -41
- package/dist/linux-install-wizard.js.map +1 -1
- package/dist/login.d.mts +4 -0
- package/dist/login.d.ts +4 -0
- package/dist/login.js +20 -4
- package/dist/login.js.map +1 -1
- package/dist/middleware.d.mts +13 -0
- package/dist/middleware.d.ts +13 -0
- package/dist/middleware.js +35 -0
- package/dist/middleware.js.map +1 -0
- package/dist/online-instance-list.d.mts +3 -1
- package/dist/online-instance-list.d.ts +3 -1
- package/dist/online-instance-list.js +41 -112
- package/dist/online-instance-list.js.map +1 -1
- package/dist/pending-installations.d.mts +3 -1
- package/dist/pending-installations.d.ts +3 -1
- package/dist/release-history-panel.js +27 -14
- package/dist/release-history-panel.js.map +1 -1
- package/dist/saml-callback-client.d.mts +36 -0
- package/dist/saml-callback-client.d.ts +36 -0
- package/dist/saml-callback-client.js +88 -0
- package/dist/saml-callback-client.js.map +1 -0
- package/dist/saml-handlers.d.mts +50 -0
- package/dist/saml-handlers.d.ts +50 -0
- package/dist/saml-handlers.js +141 -0
- package/dist/saml-handlers.js.map +1 -0
- package/dist/security-card.d.mts +3 -1
- package/dist/security-card.d.ts +3 -1
- package/dist/security-card.js +53 -38
- package/dist/security-card.js.map +1 -1
- package/dist/service-accounts-tab.d.mts +51 -0
- package/dist/service-accounts-tab.d.ts +51 -0
- package/dist/service-accounts-tab.js +802 -0
- package/dist/service-accounts-tab.js.map +1 -0
- package/dist/styles.css +375 -127
- package/dist/support-bundle-collection-card.d.mts +1 -1
- package/dist/support-bundle-collection-card.d.ts +1 -1
- package/dist/support-bundle-collection-card.js +47 -23
- package/dist/support-bundle-collection-card.js.map +1 -1
- package/dist/support-bundles-card.d.mts +4 -2
- package/dist/support-bundles-card.d.ts +4 -2
- package/dist/support-bundles-card.js +10 -5
- package/dist/support-bundles-card.js.map +1 -1
- package/dist/support-card.js +37 -5
- package/dist/support-card.js.map +1 -1
- package/dist/team-selection.js +5 -1
- package/dist/team-selection.js.map +1 -1
- package/dist/team-settings-card.js +5 -2
- package/dist/team-settings-card.js.map +1 -1
- package/dist/team-settings.js +7 -2
- package/dist/team-settings.js.map +1 -1
- package/dist/{top-nav-IRIn66wS.d.ts → top-nav-BUQAGoG1.d.mts} +14 -2
- package/dist/{top-nav-IRIn66wS.d.mts → top-nav-CEqw0KpO.d.ts} +14 -2
- package/dist/top-nav-user-menu.js +5 -1
- package/dist/top-nav-user-menu.js.map +1 -1
- package/dist/top-nav.d.mts +2 -1
- package/dist/top-nav.d.ts +2 -1
- package/dist/top-nav.js +175 -62
- package/dist/top-nav.js.map +1 -1
- package/dist/trial-signup.d.mts +31 -0
- package/dist/trial-signup.d.ts +31 -0
- package/dist/trial-signup.js +258 -0
- package/dist/trial-signup.js.map +1 -0
- package/dist/update-layout.js +175 -62
- package/dist/update-layout.js.map +1 -1
- package/dist/updates-card.js +15 -4
- package/dist/updates-card.js.map +1 -1
- package/dist/upload-support-bundle-modal.js +9 -4
- package/dist/upload-support-bundle-modal.js.map +1 -1
- package/dist/user-settings-card.js +5 -2
- package/dist/user-settings-card.js.map +1 -1
- package/dist/user-settings.js +12 -6
- package/dist/user-settings.js.map +1 -1
- package/dist/utils/index.d.mts +74 -16
- package/dist/utils/index.d.ts +74 -16
- package/dist/utils/index.js +215 -12
- package/dist/utils/index.js.map +1 -1
- package/package.json +37 -2
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface TrialSignupProps {
|
|
4
|
+
appSlug: string;
|
|
5
|
+
branding: {
|
|
6
|
+
logo?: string;
|
|
7
|
+
title?: string;
|
|
8
|
+
primaryColor?: string;
|
|
9
|
+
secondaryColor?: string;
|
|
10
|
+
} | null;
|
|
11
|
+
trialExpirationDays: number;
|
|
12
|
+
licenseType: string;
|
|
13
|
+
termsAndConditionsUrl: string;
|
|
14
|
+
defaultTitle?: string;
|
|
15
|
+
createTrialSignup: (payload: {
|
|
16
|
+
appSlug: string;
|
|
17
|
+
company: string;
|
|
18
|
+
email: string;
|
|
19
|
+
}) => Promise<{
|
|
20
|
+
success: boolean;
|
|
21
|
+
error?: string;
|
|
22
|
+
}>;
|
|
23
|
+
verifyTrialSignup: (code: string) => Promise<{
|
|
24
|
+
success: boolean;
|
|
25
|
+
error?: string;
|
|
26
|
+
redirectUrl?: string;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
declare function TrialSignup({ appSlug, branding, trialExpirationDays, licenseType, termsAndConditionsUrl, defaultTitle, createTrialSignup, verifyTrialSignup, }: TrialSignupProps): react_jsx_runtime.JSX.Element;
|
|
30
|
+
|
|
31
|
+
export { TrialSignup, type TrialSignupProps };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface TrialSignupProps {
|
|
4
|
+
appSlug: string;
|
|
5
|
+
branding: {
|
|
6
|
+
logo?: string;
|
|
7
|
+
title?: string;
|
|
8
|
+
primaryColor?: string;
|
|
9
|
+
secondaryColor?: string;
|
|
10
|
+
} | null;
|
|
11
|
+
trialExpirationDays: number;
|
|
12
|
+
licenseType: string;
|
|
13
|
+
termsAndConditionsUrl: string;
|
|
14
|
+
defaultTitle?: string;
|
|
15
|
+
createTrialSignup: (payload: {
|
|
16
|
+
appSlug: string;
|
|
17
|
+
company: string;
|
|
18
|
+
email: string;
|
|
19
|
+
}) => Promise<{
|
|
20
|
+
success: boolean;
|
|
21
|
+
error?: string;
|
|
22
|
+
}>;
|
|
23
|
+
verifyTrialSignup: (code: string) => Promise<{
|
|
24
|
+
success: boolean;
|
|
25
|
+
error?: string;
|
|
26
|
+
redirectUrl?: string;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
declare function TrialSignup({ appSlug, branding, trialExpirationDays, licenseType, termsAndConditionsUrl, defaultTitle, createTrialSignup, verifyTrialSignup, }: TrialSignupProps): react_jsx_runtime.JSX.Element;
|
|
30
|
+
|
|
31
|
+
export { TrialSignup, type TrialSignupProps };
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var navigation = require('next/navigation');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Enterprise Portal Components
|
|
10
|
+
* This file is generated by tsup. Do not edit manually.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
function TrialSignup({
|
|
14
|
+
appSlug,
|
|
15
|
+
branding,
|
|
16
|
+
trialExpirationDays,
|
|
17
|
+
licenseType,
|
|
18
|
+
termsAndConditionsUrl,
|
|
19
|
+
defaultTitle = "Enterprise Portal",
|
|
20
|
+
createTrialSignup,
|
|
21
|
+
verifyTrialSignup
|
|
22
|
+
}) {
|
|
23
|
+
const [companyName, setCompanyName] = react.useState("");
|
|
24
|
+
const [email, setEmail] = react.useState("");
|
|
25
|
+
const [isCodeSent, setIsCodeSent] = react.useState(false);
|
|
26
|
+
const [validationCode, setValidationCode] = react.useState("");
|
|
27
|
+
const [termsAccepted, setTermsAccepted] = react.useState(false);
|
|
28
|
+
const [showTermsError, setShowTermsError] = react.useState(false);
|
|
29
|
+
const [error, setError] = react.useState("");
|
|
30
|
+
const [isPending, startTransition] = react.useTransition();
|
|
31
|
+
const router = navigation.useRouter();
|
|
32
|
+
const primaryColor = branding?.primaryColor || "#6366f1";
|
|
33
|
+
const secondaryColor = branding?.secondaryColor || "#6366f1";
|
|
34
|
+
const handleSubmit = async (e) => {
|
|
35
|
+
e.preventDefault();
|
|
36
|
+
setError("");
|
|
37
|
+
setShowTermsError(false);
|
|
38
|
+
if (termsAndConditionsUrl && !termsAccepted) {
|
|
39
|
+
setShowTermsError(true);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
startTransition(async () => {
|
|
43
|
+
const result = await createTrialSignup({
|
|
44
|
+
appSlug,
|
|
45
|
+
company: companyName,
|
|
46
|
+
email
|
|
47
|
+
});
|
|
48
|
+
if (result.success) {
|
|
49
|
+
setIsCodeSent(true);
|
|
50
|
+
} else {
|
|
51
|
+
setError(result.error || "An error occurred. Please try again.");
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
const handleValidateCode = async (e) => {
|
|
56
|
+
e.preventDefault();
|
|
57
|
+
setError("");
|
|
58
|
+
startTransition(async () => {
|
|
59
|
+
const result = await verifyTrialSignup(validationCode);
|
|
60
|
+
if (result.success && result.redirectUrl) {
|
|
61
|
+
router.push(result.redirectUrl);
|
|
62
|
+
router.refresh();
|
|
63
|
+
} else {
|
|
64
|
+
setError(result.error || "Verification failed. Please try again.");
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
const handleUseDifferentEmail = () => {
|
|
69
|
+
setIsCodeSent(false);
|
|
70
|
+
setCompanyName("");
|
|
71
|
+
setEmail("");
|
|
72
|
+
setValidationCode("");
|
|
73
|
+
setError("");
|
|
74
|
+
};
|
|
75
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-[480px] rounded-lg border-2 border-solid p-8", style: { borderColor: secondaryColor, minHeight: branding?.logo ? "342px" : "242px" }, children: [
|
|
76
|
+
branding?.logo && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center mb-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
77
|
+
"img",
|
|
78
|
+
{
|
|
79
|
+
src: branding.logo,
|
|
80
|
+
alt: branding?.title || "Logo",
|
|
81
|
+
className: "max-w-[360px] max-h-[48px]"
|
|
82
|
+
}
|
|
83
|
+
) }),
|
|
84
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-2xl font-bold text-center mb-2", children: branding?.title || defaultTitle }),
|
|
85
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-center text-gray-600 mb-6", children: licenseType === "community" ? "Get your community license" : `Start your ${trialExpirationDays} day trial` }),
|
|
86
|
+
!isCodeSent && /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleSubmit, className: "w-full", children: [
|
|
87
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
88
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: "company-name", className: "block mb-2 text-gray-600", children: "Company name" }),
|
|
89
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
90
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
91
|
+
"svg",
|
|
92
|
+
{
|
|
93
|
+
className: "absolute w-5 h-5 text-gray-400 pointer-events-none",
|
|
94
|
+
style: { left: "12px", top: "50%", transform: "translateY(-50%)" },
|
|
95
|
+
fill: "none",
|
|
96
|
+
stroke: "currentColor",
|
|
97
|
+
viewBox: "0 0 24 24",
|
|
98
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4" })
|
|
99
|
+
}
|
|
100
|
+
),
|
|
101
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
102
|
+
"input",
|
|
103
|
+
{
|
|
104
|
+
id: "company-name",
|
|
105
|
+
type: "text",
|
|
106
|
+
placeholder: "Your company",
|
|
107
|
+
className: "portal-input w-full py-2.5",
|
|
108
|
+
style: { paddingLeft: "44px" },
|
|
109
|
+
value: companyName,
|
|
110
|
+
onChange: (e) => setCompanyName(e.target.value),
|
|
111
|
+
required: true,
|
|
112
|
+
disabled: isPending
|
|
113
|
+
}
|
|
114
|
+
)
|
|
115
|
+
] })
|
|
116
|
+
] }),
|
|
117
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
118
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: "email", className: "block mb-2 text-gray-600", children: "Work email address" }),
|
|
119
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
120
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
121
|
+
"svg",
|
|
122
|
+
{
|
|
123
|
+
className: "absolute w-5 h-5 text-gray-400 pointer-events-none",
|
|
124
|
+
style: { left: "12px", top: "50%", transform: "translateY(-50%)" },
|
|
125
|
+
fill: "none",
|
|
126
|
+
stroke: "currentColor",
|
|
127
|
+
viewBox: "0 0 24 24",
|
|
128
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" })
|
|
129
|
+
}
|
|
130
|
+
),
|
|
131
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
132
|
+
"input",
|
|
133
|
+
{
|
|
134
|
+
id: "email",
|
|
135
|
+
type: "email",
|
|
136
|
+
placeholder: "you@company.com",
|
|
137
|
+
className: "portal-input w-full py-2.5",
|
|
138
|
+
style: { paddingLeft: "44px" },
|
|
139
|
+
value: email,
|
|
140
|
+
onChange: (e) => setEmail(e.target.value),
|
|
141
|
+
required: true,
|
|
142
|
+
disabled: isPending
|
|
143
|
+
}
|
|
144
|
+
)
|
|
145
|
+
] })
|
|
146
|
+
] }),
|
|
147
|
+
termsAndConditionsUrl && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
148
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
149
|
+
"input",
|
|
150
|
+
{
|
|
151
|
+
type: "checkbox",
|
|
152
|
+
id: "terms-checkbox",
|
|
153
|
+
checked: termsAccepted,
|
|
154
|
+
onChange: (e) => {
|
|
155
|
+
setTermsAccepted(e.target.checked);
|
|
156
|
+
if (e.target.checked) {
|
|
157
|
+
setShowTermsError(false);
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
className: "mt-1 min-w-4 h-4 text-blue-600 border-gray-300 rounded focus:ring-blue-500",
|
|
161
|
+
required: true,
|
|
162
|
+
disabled: isPending
|
|
163
|
+
}
|
|
164
|
+
),
|
|
165
|
+
/* @__PURE__ */ jsxRuntime.jsxs("label", { htmlFor: "terms-checkbox", className: "text-sm text-gray-600 leading-relaxed", children: [
|
|
166
|
+
"I agree to the",
|
|
167
|
+
" ",
|
|
168
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
169
|
+
"a",
|
|
170
|
+
{
|
|
171
|
+
href: termsAndConditionsUrl,
|
|
172
|
+
target: "_blank",
|
|
173
|
+
rel: "noopener noreferrer",
|
|
174
|
+
className: "text-blue-600 hover:underline font-medium",
|
|
175
|
+
style: { color: primaryColor },
|
|
176
|
+
children: "Terms and Conditions"
|
|
177
|
+
}
|
|
178
|
+
)
|
|
179
|
+
] })
|
|
180
|
+
] }) }),
|
|
181
|
+
showTermsError && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-red-600 mb-4 text-center text-sm", children: "Please accept the Terms and Conditions to continue." }),
|
|
182
|
+
error && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-red-600 mb-4 text-center text-sm", children: error }),
|
|
183
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
184
|
+
"button",
|
|
185
|
+
{
|
|
186
|
+
type: "submit",
|
|
187
|
+
className: "w-full flex justify-center items-center bg-blue-600 hover:bg-blue-700 text-white py-2 rounded font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
|
|
188
|
+
style: { background: primaryColor, borderColor: primaryColor },
|
|
189
|
+
disabled: !companyName.trim() || !email.trim() || isPending || !!termsAndConditionsUrl && !termsAccepted,
|
|
190
|
+
children: isPending ? "Creating account..." : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
191
|
+
"Create account",
|
|
192
|
+
/* @__PURE__ */ jsxRuntime.jsx("svg", { className: "ml-2 h-4 w-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M14 5l7 7m0 0l-7 7m7-7H3" }) })
|
|
193
|
+
] })
|
|
194
|
+
}
|
|
195
|
+
),
|
|
196
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
197
|
+
"a",
|
|
198
|
+
{
|
|
199
|
+
href: "/login",
|
|
200
|
+
className: "hover:underline font-semibold mt-4 text-center cursor-pointer block",
|
|
201
|
+
style: { color: secondaryColor },
|
|
202
|
+
children: "Already have an account? Sign in"
|
|
203
|
+
}
|
|
204
|
+
)
|
|
205
|
+
] }),
|
|
206
|
+
isCodeSent && /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleValidateCode, className: "w-full", children: [
|
|
207
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
208
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-1", children: [
|
|
209
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: "code", className: "block text-sm font-medium text-gray-700", children: "Verification code" }),
|
|
210
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
211
|
+
"button",
|
|
212
|
+
{
|
|
213
|
+
type: "button",
|
|
214
|
+
onClick: handleUseDifferentEmail,
|
|
215
|
+
className: "text-sm text-blue-600 hover:text-blue-700 hover:underline",
|
|
216
|
+
style: { color: primaryColor },
|
|
217
|
+
children: "Use different email"
|
|
218
|
+
}
|
|
219
|
+
)
|
|
220
|
+
] }),
|
|
221
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
222
|
+
"input",
|
|
223
|
+
{
|
|
224
|
+
id: "code",
|
|
225
|
+
name: "code",
|
|
226
|
+
type: "text",
|
|
227
|
+
value: validationCode,
|
|
228
|
+
onChange: (e) => setValidationCode(e.target.value),
|
|
229
|
+
className: "portal-input w-full",
|
|
230
|
+
placeholder: "Enter 12-digit code",
|
|
231
|
+
required: true,
|
|
232
|
+
disabled: isPending
|
|
233
|
+
}
|
|
234
|
+
) }),
|
|
235
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "mt-2 text-sm text-gray-600 mb-4 text-pretty", children: [
|
|
236
|
+
"A verification code has been sent to ",
|
|
237
|
+
email,
|
|
238
|
+
". Please check your inbox."
|
|
239
|
+
] })
|
|
240
|
+
] }),
|
|
241
|
+
error && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-red-600 mb-4 text-center text-sm", children: error }),
|
|
242
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
243
|
+
"button",
|
|
244
|
+
{
|
|
245
|
+
type: "submit",
|
|
246
|
+
className: "w-full bg-blue-600 hover:bg-blue-700 text-white py-2 rounded font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
|
|
247
|
+
style: { background: primaryColor, borderColor: primaryColor },
|
|
248
|
+
disabled: !validationCode.trim() || isPending,
|
|
249
|
+
children: isPending ? "Verifying..." : licenseType === "community" ? "Verify code and get license" : "Verify code and start trial"
|
|
250
|
+
}
|
|
251
|
+
)
|
|
252
|
+
] })
|
|
253
|
+
] });
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
exports.TrialSignup = TrialSignup;
|
|
257
|
+
//# sourceMappingURL=trial-signup.js.map
|
|
258
|
+
//# sourceMappingURL=trial-signup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/trial-signup.tsx"],"names":["useState","useTransition","useRouter","jsxs","jsx","Fragment"],"mappings":"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","file":"trial-signup.js","sourcesContent":["\"use client\";\n\nimport { useState, useTransition, FormEvent } from \"react\";\nimport { useRouter } from \"next/navigation\";\n\nexport interface TrialSignupProps {\n appSlug: string;\n branding: {\n logo?: string;\n title?: string;\n primaryColor?: string;\n secondaryColor?: string;\n } | null;\n trialExpirationDays: number;\n licenseType: string;\n termsAndConditionsUrl: string;\n defaultTitle?: string;\n createTrialSignup: (payload: {\n appSlug: string;\n company: string;\n email: string;\n }) => Promise<{ success: boolean; error?: string }>;\n verifyTrialSignup: (code: string) => Promise<{\n success: boolean;\n error?: string;\n redirectUrl?: string;\n }>;\n}\n\nexport function TrialSignup({\n appSlug,\n branding,\n trialExpirationDays,\n licenseType,\n termsAndConditionsUrl,\n defaultTitle = \"Enterprise Portal\",\n createTrialSignup,\n verifyTrialSignup,\n}: TrialSignupProps) {\n const [companyName, setCompanyName] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n const [isCodeSent, setIsCodeSent] = useState(false);\n const [validationCode, setValidationCode] = useState(\"\");\n const [termsAccepted, setTermsAccepted] = useState(false);\n const [showTermsError, setShowTermsError] = useState(false);\n const [error, setError] = useState(\"\");\n const [isPending, startTransition] = useTransition();\n const router = useRouter();\n\n const primaryColor = branding?.primaryColor || \"#6366f1\";\n const secondaryColor = branding?.secondaryColor || \"#6366f1\";\n\n const handleSubmit = async (e: FormEvent) => {\n e.preventDefault();\n setError(\"\");\n setShowTermsError(false);\n\n // Validate terms acceptance if required\n if (termsAndConditionsUrl && !termsAccepted) {\n setShowTermsError(true);\n return;\n }\n\n startTransition(async () => {\n const result = await createTrialSignup({\n appSlug,\n company: companyName,\n email,\n });\n\n if (result.success) {\n setIsCodeSent(true);\n } else {\n setError(result.error || \"An error occurred. Please try again.\");\n }\n });\n };\n\n const handleValidateCode = async (e: FormEvent) => {\n e.preventDefault();\n setError(\"\");\n\n startTransition(async () => {\n const result = await verifyTrialSignup(validationCode);\n\n if (result.success && result.redirectUrl) {\n // Redirect to dashboard\n router.push(result.redirectUrl);\n router.refresh();\n } else {\n setError(result.error || \"Verification failed. Please try again.\");\n }\n });\n };\n\n const handleUseDifferentEmail = () => {\n setIsCodeSent(false);\n setCompanyName(\"\");\n setEmail(\"\");\n setValidationCode(\"\");\n setError(\"\");\n };\n\n return (\n <div className=\"w-[480px] rounded-lg border-2 border-solid p-8\" style={{ borderColor: secondaryColor, minHeight: branding?.logo ? \"342px\" : \"242px\" }}>\n {/* Logo */}\n {branding?.logo && (\n <div className=\"flex justify-center mb-4\">\n <img\n src={branding.logo}\n alt={branding?.title || \"Logo\"}\n className=\"max-w-[360px] max-h-[48px]\"\n />\n </div>\n )}\n\n {/* Title */}\n <h1 className=\"text-2xl font-bold text-center mb-2\">\n {branding?.title || defaultTitle}\n </h1>\n\n {/* Subtitle */}\n <p className=\"text-center text-gray-600 mb-6\">\n {licenseType === \"community\"\n ? \"Get your community license\"\n : `Start your ${trialExpirationDays} day trial`}\n </p>\n\n {/* Step 1: Company and Email Form */}\n {!isCodeSent && (\n <form onSubmit={handleSubmit} className=\"w-full\">\n {/* Company Name */}\n <div className=\"mb-4\">\n <label htmlFor=\"company-name\" className=\"block mb-2 text-gray-600\">\n Company name\n </label>\n <div className=\"relative\">\n <svg \n className=\"absolute w-5 h-5 text-gray-400 pointer-events-none\" \n style={{ left: \"12px\", top: \"50%\", transform: \"translateY(-50%)\" }}\n fill=\"none\" \n stroke=\"currentColor\" \n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4\" />\n </svg>\n <input\n id=\"company-name\"\n type=\"text\"\n placeholder=\"Your company\"\n className=\"portal-input w-full py-2.5\"\n style={{ paddingLeft: \"44px\" }}\n value={companyName}\n onChange={(e) => setCompanyName(e.target.value)}\n required\n disabled={isPending}\n />\n </div>\n </div>\n\n {/* Email */}\n <div className=\"mb-4\">\n <label htmlFor=\"email\" className=\"block mb-2 text-gray-600\">\n Work email address\n </label>\n <div className=\"relative\">\n <svg \n className=\"absolute w-5 h-5 text-gray-400 pointer-events-none\" \n style={{ left: \"12px\", top: \"50%\", transform: \"translateY(-50%)\" }}\n fill=\"none\" \n stroke=\"currentColor\" \n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z\" />\n </svg>\n <input\n id=\"email\"\n type=\"email\"\n placeholder=\"you@company.com\"\n className=\"portal-input w-full py-2.5\"\n style={{ paddingLeft: \"44px\" }}\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n required\n disabled={isPending}\n />\n </div>\n </div>\n\n {/* Terms and Conditions */}\n {termsAndConditionsUrl && (\n <div className=\"mb-4\">\n <div className=\"flex items-start gap-3\">\n <input\n type=\"checkbox\"\n id=\"terms-checkbox\"\n checked={termsAccepted}\n onChange={(e) => {\n setTermsAccepted(e.target.checked);\n if (e.target.checked) {\n setShowTermsError(false);\n }\n }}\n className=\"mt-1 min-w-4 h-4 text-blue-600 border-gray-300 rounded focus:ring-blue-500\"\n required\n disabled={isPending}\n />\n <label htmlFor=\"terms-checkbox\" className=\"text-sm text-gray-600 leading-relaxed\">\n I agree to the{\" \"}\n <a\n href={termsAndConditionsUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-blue-600 hover:underline font-medium\"\n style={{ color: primaryColor }}\n >\n Terms and Conditions\n </a>\n </label>\n </div>\n </div>\n )}\n\n {/* Terms Error */}\n {showTermsError && (\n <div className=\"text-red-600 mb-4 text-center text-sm\">\n Please accept the Terms and Conditions to continue.\n </div>\n )}\n\n {/* API Error */}\n {error && (\n <div className=\"text-red-600 mb-4 text-center text-sm\">\n {error}\n </div>\n )}\n\n {/* Submit Button */}\n <button\n type=\"submit\"\n className=\"w-full flex justify-center items-center bg-blue-600 hover:bg-blue-700 text-white py-2 rounded font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed\"\n style={{ background: primaryColor, borderColor: primaryColor }}\n disabled={\n !companyName.trim() ||\n !email.trim() ||\n isPending ||\n (!!termsAndConditionsUrl && !termsAccepted)\n }\n >\n {isPending ? (\n \"Creating account...\"\n ) : (\n <>\n Create account\n <svg className=\"ml-2 h-4 w-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M14 5l7 7m0 0l-7 7m7-7H3\" />\n </svg>\n </>\n )}\n </button>\n\n {/* Login Link */}\n <a\n href=\"/login\"\n className=\"hover:underline font-semibold mt-4 text-center cursor-pointer block\"\n style={{ color: secondaryColor }}\n >\n Already have an account? Sign in\n </a>\n </form>\n )}\n\n {/* Step 2: Verification Code Form */}\n {isCodeSent && (\n <form onSubmit={handleValidateCode} className=\"w-full\">\n <div>\n <div className=\"flex items-center justify-between mb-1\">\n <label htmlFor=\"code\" className=\"block text-sm font-medium text-gray-700\">\n Verification code\n </label>\n <button\n type=\"button\"\n onClick={handleUseDifferentEmail}\n className=\"text-sm text-blue-600 hover:text-blue-700 hover:underline\"\n style={{ color: primaryColor }}\n >\n Use different email\n </button>\n </div>\n <div className=\"mt-1\">\n <input\n id=\"code\"\n name=\"code\"\n type=\"text\"\n value={validationCode}\n onChange={(e) => setValidationCode(e.target.value)}\n className=\"portal-input w-full\"\n placeholder=\"Enter 12-digit code\"\n required\n disabled={isPending}\n />\n </div>\n <p className=\"mt-2 text-sm text-gray-600 mb-4 text-pretty\">\n A verification code has been sent to {email}. Please check your inbox.\n </p>\n </div>\n\n {/* Verification Error */}\n {error && (\n <div className=\"text-red-600 mb-4 text-center text-sm\">\n {error}\n </div>\n )}\n\n {/* Verify Button */}\n <button\n type=\"submit\"\n className=\"w-full bg-blue-600 hover:bg-blue-700 text-white py-2 rounded font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed\"\n style={{ background: primaryColor, borderColor: primaryColor }}\n disabled={!validationCode.trim() || isPending}\n >\n {isPending\n ? \"Verifying...\"\n : licenseType === \"community\"\n ? \"Verify code and get license\"\n : \"Verify code and start trial\"}\n </button>\n </form>\n )}\n </div>\n );\n}\n"]}
|