@parhelia/core 0.1.12368 → 0.1.12393

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.
Files changed (258) hide show
  1. package/dist/agents-view/AgentsView.js +1 -1
  2. package/dist/agents-view/AgentsView.js.map +1 -1
  3. package/dist/components/ui/LanguageSelector.js +1 -3
  4. package/dist/components/ui/LanguageSelector.js.map +1 -1
  5. package/dist/components/ui/dialog.js +1 -1
  6. package/dist/components/ui/dialog.js.map +1 -1
  7. package/dist/config/config.js +53 -16
  8. package/dist/config/config.js.map +1 -1
  9. package/dist/config/notificationRoutes.js +10 -0
  10. package/dist/config/notificationRoutes.js.map +1 -1
  11. package/dist/config/types/workspace.d.ts +6 -0
  12. package/dist/config/types.d.ts +2 -5
  13. package/dist/editor/Editor.js +37 -15
  14. package/dist/editor/Editor.js.map +1 -1
  15. package/dist/editor/SetupWizard.js +20 -2
  16. package/dist/editor/SetupWizard.js.map +1 -1
  17. package/dist/editor/ai/AgentCostDisplay.d.ts +1 -0
  18. package/dist/editor/ai/AgentCostDisplay.js +1 -1
  19. package/dist/editor/ai/AgentCostDisplay.js.map +1 -1
  20. package/dist/editor/ai/AgentTerminal.js +158 -39
  21. package/dist/editor/ai/AgentTerminal.js.map +1 -1
  22. package/dist/editor/ai/AgentTerminalStatusBar.d.ts +2 -0
  23. package/dist/editor/ai/AgentTerminalStatusBar.js +22 -37
  24. package/dist/editor/ai/AgentTerminalStatusBar.js.map +1 -1
  25. package/dist/editor/ai/AiResponseMessage.js +0 -1
  26. package/dist/editor/ai/AiResponseMessage.js.map +1 -1
  27. package/dist/editor/ai/ContentInspectorPopover.d.ts +17 -0
  28. package/dist/editor/ai/ContentInspectorPopover.js +136 -0
  29. package/dist/editor/ai/ContentInspectorPopover.js.map +1 -0
  30. package/dist/editor/ai/ContextInfoBar.js +55 -2
  31. package/dist/editor/ai/ContextInfoBar.js.map +1 -1
  32. package/dist/editor/ai/InlineAiDialog.js +1 -7
  33. package/dist/editor/ai/InlineAiDialog.js.map +1 -1
  34. package/dist/editor/ai/ToolCallDisplay.d.ts +4 -0
  35. package/dist/editor/ai/ToolCallDisplay.js +43 -8
  36. package/dist/editor/ai/ToolCallDisplay.js.map +1 -1
  37. package/dist/editor/ai/dialogs/AgentDialogHandler.js +46 -22
  38. package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
  39. package/dist/editor/client/EditorShell.js +69 -26
  40. package/dist/editor/client/EditorShell.js.map +1 -1
  41. package/dist/editor/client/editContext.d.ts +3 -2
  42. package/dist/editor/client/hooks/useQuota.d.ts +2 -1
  43. package/dist/editor/client/hooks/useQuota.js.map +1 -1
  44. package/dist/editor/client/hooks/useSocketMessageHandler.js +28 -0
  45. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  46. package/dist/editor/client/operations.d.ts +1 -0
  47. package/dist/editor/client/operations.js +67 -15
  48. package/dist/editor/client/operations.js.map +1 -1
  49. package/dist/editor/client/waitForEditOperationTerminal.d.ts +11 -0
  50. package/dist/editor/client/waitForEditOperationTerminal.js +40 -0
  51. package/dist/editor/client/waitForEditOperationTerminal.js.map +1 -0
  52. package/dist/editor/commands/commands.d.ts +11 -1
  53. package/dist/editor/commands/commands.js +12 -1
  54. package/dist/editor/commands/commands.js.map +1 -1
  55. package/dist/editor/commands/customCommandConverter.d.ts +8 -1
  56. package/dist/editor/commands/customCommandConverter.js +33 -4
  57. package/dist/editor/commands/customCommandConverter.js.map +1 -1
  58. package/dist/editor/commands/handlers/uiActionHandlers.d.ts +6 -0
  59. package/dist/editor/commands/handlers/uiActionHandlers.js +84 -0
  60. package/dist/editor/commands/handlers/uiActionHandlers.js.map +1 -0
  61. package/dist/editor/commands/itemCommands.js +6 -2
  62. package/dist/editor/commands/itemCommands.js.map +1 -1
  63. package/dist/editor/commands/keyboardCommands.d.ts +10 -0
  64. package/dist/editor/commands/keyboardCommands.js +142 -0
  65. package/dist/editor/commands/keyboardCommands.js.map +1 -0
  66. package/dist/editor/commands/undo.d.ts +9 -15
  67. package/dist/editor/commands/undo.js +24 -0
  68. package/dist/editor/commands/undo.js.map +1 -1
  69. package/dist/editor/menubar/PageSelector.js +1 -3
  70. package/dist/editor/menubar/PageSelector.js.map +1 -1
  71. package/dist/editor/menubar/VersionSelector.js +1 -3
  72. package/dist/editor/menubar/VersionSelector.js.map +1 -1
  73. package/dist/editor/menubar/toolbar-sections/CustomCommandsToolbar.js +7 -36
  74. package/dist/editor/menubar/toolbar-sections/CustomCommandsToolbar.js.map +1 -1
  75. package/dist/editor/notifications/notificationRoutes.js +1 -0
  76. package/dist/editor/notifications/notificationRoutes.js.map +1 -1
  77. package/dist/editor/page-editor-chrome/InlineEditor.js +53 -36
  78. package/dist/editor/page-editor-chrome/InlineEditor.js.map +1 -1
  79. package/dist/editor/page-editor-chrome/useInlineAICompletion.js +283 -298
  80. package/dist/editor/page-editor-chrome/useInlineAICompletion.js.map +1 -1
  81. package/dist/editor/page-viewer/PageViewer.js +60 -6
  82. package/dist/editor/page-viewer/PageViewer.js.map +1 -1
  83. package/dist/editor/reviews/Comment.js +12 -10
  84. package/dist/editor/reviews/Comment.js.map +1 -1
  85. package/dist/editor/reviews/CommentDisplayPopover.js +1 -3
  86. package/dist/editor/reviews/CommentDisplayPopover.js.map +1 -1
  87. package/dist/editor/reviews/PreviewInfo.js +1 -4
  88. package/dist/editor/reviews/PreviewInfo.js.map +1 -1
  89. package/dist/editor/reviews/reviewCommands.js +4 -1
  90. package/dist/editor/reviews/reviewCommands.js.map +1 -1
  91. package/dist/editor/reviews/useReviews.d.ts +2 -2
  92. package/dist/editor/reviews/useReviews.js +12 -30
  93. package/dist/editor/reviews/useReviews.js.map +1 -1
  94. package/dist/editor/services/agentService.d.ts +26 -0
  95. package/dist/editor/services/agentService.js +41 -0
  96. package/dist/editor/services/agentService.js.map +1 -1
  97. package/dist/editor/services/aiService.d.ts +7 -1
  98. package/dist/editor/services/aiService.js +13 -1
  99. package/dist/editor/services/aiService.js.map +1 -1
  100. package/dist/editor/services/notificationService.d.ts +1 -0
  101. package/dist/editor/services/notificationService.js +1 -0
  102. package/dist/editor/services/notificationService.js.map +1 -1
  103. package/dist/editor/services/reviewsService.d.ts +2 -5
  104. package/dist/editor/services/reviewsService.js +0 -10
  105. package/dist/editor/services/reviewsService.js.map +1 -1
  106. package/dist/editor/services/systemService.d.ts +2 -1
  107. package/dist/editor/services/systemService.js +3 -0
  108. package/dist/editor/services/systemService.js.map +1 -1
  109. package/dist/editor/services/templateBuilderService.d.ts +7 -0
  110. package/dist/editor/services/templateBuilderService.js +7 -1
  111. package/dist/editor/services/templateBuilderService.js.map +1 -1
  112. package/dist/editor/settings/About.js +25 -19
  113. package/dist/editor/settings/About.js.map +1 -1
  114. package/dist/editor/settings/QuotaInfo.js +15 -7
  115. package/dist/editor/settings/QuotaInfo.js.map +1 -1
  116. package/dist/editor/settings/index/useIndexStatus.js +1 -1
  117. package/dist/editor/settings/index/useIndexStatus.js.map +1 -1
  118. package/dist/editor/settings/panels/AgentProfileConfigPanel.d.ts +10 -0
  119. package/dist/editor/settings/panels/AgentProfileConfigPanel.js +61 -0
  120. package/dist/editor/settings/panels/AgentProfileConfigPanel.js.map +1 -0
  121. package/dist/editor/settings/panels/AgentsPanel.d.ts +0 -4
  122. package/dist/editor/settings/panels/AgentsPanel.js +101 -109
  123. package/dist/editor/settings/panels/AgentsPanel.js.map +1 -1
  124. package/dist/editor/settings/panels/CreateAgentProfileDialog.d.ts +7 -0
  125. package/dist/editor/settings/panels/CreateAgentProfileDialog.js +48 -0
  126. package/dist/editor/settings/panels/CreateAgentProfileDialog.js.map +1 -0
  127. package/dist/editor/settings/panels/GroupedFieldConfigPanel.d.ts +33 -0
  128. package/dist/editor/settings/panels/GroupedFieldConfigPanel.js +91 -0
  129. package/dist/editor/settings/panels/GroupedFieldConfigPanel.js.map +1 -0
  130. package/dist/editor/settings/panels/ModelConfigPanel.d.ts +10 -0
  131. package/dist/editor/settings/panels/ModelConfigPanel.js +51 -0
  132. package/dist/editor/settings/panels/ModelConfigPanel.js.map +1 -0
  133. package/dist/editor/settings/panels/ModelsPanel.js +201 -70
  134. package/dist/editor/settings/panels/ModelsPanel.js.map +1 -1
  135. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.d.ts +10 -0
  136. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js +46 -0
  137. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js.map +1 -0
  138. package/dist/editor/settings/panels/ProjectTemplatesPanel.d.ts +2 -0
  139. package/dist/editor/settings/panels/ProjectTemplatesPanel.js +1340 -0
  140. package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -0
  141. package/dist/editor/settings/panels/ProviderConfigPanel.d.ts +10 -0
  142. package/dist/editor/settings/panels/ProviderConfigPanel.js +32 -0
  143. package/dist/editor/settings/panels/ProviderConfigPanel.js.map +1 -0
  144. package/dist/editor/settings/panels/ProvidersPanel.js +46 -4
  145. package/dist/editor/settings/panels/ProvidersPanel.js.map +1 -1
  146. package/dist/editor/settings/panels/SearchConfigPanel.js +3 -3
  147. package/dist/editor/settings/panels/SearchConfigPanel.js.map +1 -1
  148. package/dist/editor/settings/panels/index.d.ts +1 -2
  149. package/dist/editor/settings/panels/index.js +1 -2
  150. package/dist/editor/settings/panels/index.js.map +1 -1
  151. package/dist/editor/setup-wizard/steps/CompleteStep.d.ts +2 -1
  152. package/dist/editor/setup-wizard/steps/CompleteStep.js +2 -1
  153. package/dist/editor/setup-wizard/steps/CompleteStep.js.map +1 -1
  154. package/dist/editor/setup-wizard/steps/LicenseActivationStep.d.ts +9 -0
  155. package/dist/editor/setup-wizard/steps/LicenseActivationStep.js +160 -0
  156. package/dist/editor/setup-wizard/steps/LicenseActivationStep.js.map +1 -0
  157. package/dist/editor/setup-wizard/steps/LicenseEmailStep.d.ts +10 -0
  158. package/dist/editor/setup-wizard/steps/LicenseEmailStep.js +101 -0
  159. package/dist/editor/setup-wizard/steps/LicenseEmailStep.js.map +1 -0
  160. package/dist/editor/template-wizard/TemplateStructureInlineEditor.js +422 -65
  161. package/dist/editor/template-wizard/TemplateStructureInlineEditor.js.map +1 -1
  162. package/dist/editor/ui/ItemNameDialogNew.js +15 -9
  163. package/dist/editor/ui/ItemNameDialogNew.js.map +1 -1
  164. package/dist/editor/utils/keyboardNavigation.d.ts +6 -20
  165. package/dist/editor/utils/keyboardNavigation.js +48 -139
  166. package/dist/editor/utils/keyboardNavigation.js.map +1 -1
  167. package/dist/licensing/EmailEntry.js +1 -1
  168. package/dist/licensing/EmailEntry.js.map +1 -1
  169. package/dist/licensing/LicenseActivationForm.js +1 -1
  170. package/dist/licensing/LicenseActivationForm.js.map +1 -1
  171. package/dist/licensing/LicenseCodeEntry.js +2 -2
  172. package/dist/licensing/LicenseCodeEntry.js.map +1 -1
  173. package/dist/licensing/LicenseContext.js +18 -9
  174. package/dist/licensing/LicenseContext.js.map +1 -1
  175. package/dist/licensing/LicenseOverlay.js +2 -1
  176. package/dist/licensing/LicenseOverlay.js.map +1 -1
  177. package/dist/licensing/licenseService.d.ts +10 -0
  178. package/dist/licensing/licenseService.js +28 -0
  179. package/dist/licensing/licenseService.js.map +1 -1
  180. package/dist/revision.d.ts +2 -2
  181. package/dist/revision.js +2 -2
  182. package/dist/setup/services/setupWizardService.d.ts +8 -10
  183. package/dist/setup/services/setupWizardService.js +4 -17
  184. package/dist/setup/services/setupWizardService.js.map +1 -1
  185. package/dist/splash-screen/ModernSplashScreen.js +100 -18
  186. package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
  187. package/dist/splash-screen/ParheliaAssistantChat.js +3 -22
  188. package/dist/splash-screen/ParheliaAssistantChat.js.map +1 -1
  189. package/dist/task-board/TaskBoardWorkspace.js +70 -3
  190. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  191. package/dist/task-board/components/AssignAgentDialog.js +9 -4
  192. package/dist/task-board/components/AssignAgentDialog.js.map +1 -1
  193. package/dist/task-board/components/CreateProjectDialog.js +32 -34
  194. package/dist/task-board/components/CreateProjectDialog.js.map +1 -1
  195. package/dist/task-board/components/CreateTaskDialog.d.ts +2 -0
  196. package/dist/task-board/components/CreateTaskDialog.js +35 -11
  197. package/dist/task-board/components/CreateTaskDialog.js.map +1 -1
  198. package/dist/task-board/components/ProjectPropertiesPanel.js +4 -1
  199. package/dist/task-board/components/ProjectPropertiesPanel.js.map +1 -1
  200. package/dist/task-board/components/TaskAgentPanel.js +13 -4
  201. package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
  202. package/dist/task-board/components/TaskAssigneePicker.d.ts +2 -2
  203. package/dist/task-board/components/TaskAssigneePicker.js +12 -4
  204. package/dist/task-board/components/TaskAssigneePicker.js.map +1 -1
  205. package/dist/task-board/components/TaskBoardProjectListSidebar.js.map +1 -1
  206. package/dist/task-board/components/TaskCard.js +2 -2
  207. package/dist/task-board/components/TaskCard.js.map +1 -1
  208. package/dist/task-board/components/TaskDetailPanel.js +2 -2
  209. package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
  210. package/dist/task-board/components/TaskRow.js +2 -2
  211. package/dist/task-board/components/TaskRow.js.map +1 -1
  212. package/dist/task-board/components/WizardCommunicationCenter.js +10 -4
  213. package/dist/task-board/components/WizardCommunicationCenter.js.map +1 -1
  214. package/dist/task-board/services/taskService.d.ts +11 -2
  215. package/dist/task-board/services/taskService.js +20 -2
  216. package/dist/task-board/services/taskService.js.map +1 -1
  217. package/dist/task-board/types.d.ts +52 -7
  218. package/dist/task-board/views/DependencyGraphView.d.ts +31 -4
  219. package/dist/task-board/views/DependencyGraphView.js +383 -64
  220. package/dist/task-board/views/DependencyGraphView.js.map +1 -1
  221. package/dist/types.d.ts +23 -15
  222. package/package.json +7 -7
  223. package/dist/editor/settings/Setup.d.ts +0 -1
  224. package/dist/editor/settings/Setup.js +0 -211
  225. package/dist/editor/settings/Setup.js.map +0 -1
  226. package/dist/editor/settings/panels/DatabasePanel.d.ts +0 -6
  227. package/dist/editor/settings/panels/DatabasePanel.js +0 -50
  228. package/dist/editor/settings/panels/DatabasePanel.js.map +0 -1
  229. package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.d.ts +0 -2
  230. package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.js +0 -195
  231. package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.js.map +0 -1
  232. package/dist/editor/settings/setup-steps/AiSetupStep/index.d.ts +0 -2
  233. package/dist/editor/settings/setup-steps/AiSetupStep/index.js +0 -21
  234. package/dist/editor/settings/setup-steps/AiSetupStep/index.js.map +0 -1
  235. package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.d.ts +0 -1
  236. package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.js +0 -233
  237. package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.js.map +0 -1
  238. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.d.ts +0 -15
  239. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.js +0 -14
  240. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.js.map +0 -1
  241. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.d.ts +0 -1
  242. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js +0 -94
  243. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js.map +0 -1
  244. package/dist/editor/settings/setup-steps/AiSetupStep/types.d.ts +0 -1
  245. package/dist/editor/settings/setup-steps/AiSetupStep/types.js +0 -2
  246. package/dist/editor/settings/setup-steps/AiSetupStep/types.js.map +0 -1
  247. package/dist/editor/settings/setup-steps/AiSetupStep/utils.d.ts +0 -5
  248. package/dist/editor/settings/setup-steps/AiSetupStep/utils.js +0 -44
  249. package/dist/editor/settings/setup-steps/AiSetupStep/utils.js.map +0 -1
  250. package/dist/editor/settings/setup-steps/IndexSetupStep.d.ts +0 -2
  251. package/dist/editor/settings/setup-steps/IndexSetupStep.js +0 -36
  252. package/dist/editor/settings/setup-steps/IndexSetupStep.js.map +0 -1
  253. package/dist/editor/settings/setup-steps/SettingsSetupStep.d.ts +0 -2
  254. package/dist/editor/settings/setup-steps/SettingsSetupStep.js +0 -111
  255. package/dist/editor/settings/setup-steps/SettingsSetupStep.js.map +0 -1
  256. package/dist/editor/settings/setup-steps/SetupOverview.d.ts +0 -14
  257. package/dist/editor/settings/setup-steps/SetupOverview.js +0 -38
  258. package/dist/editor/settings/setup-steps/SetupOverview.js.map +0 -1
@@ -0,0 +1,160 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
+ import { Button } from "../../../components/ui/button";
4
+ import { Input } from "../../../components/ui/input";
5
+ import { clearLicenseCache, requestLicense, storeLicense, verifyActivationCode, } from "../../../licensing/licenseService";
6
+ import { setupWizardService } from "../../../setup/services/setupWizardService";
7
+ import { AlertCircle, ArrowLeft, ArrowRight, CheckCircle, KeyRound, RefreshCw, } from "lucide-react";
8
+ export function LicenseActivationStep({ email, mode, onBack, onActivated, }) {
9
+ const [name, setName] = useState("");
10
+ const [companyName, setCompanyName] = useState("");
11
+ const [codeDigits, setCodeDigits] = useState(["", "", "", "", "", ""]);
12
+ const codeInputRefs = useRef([]);
13
+ const [loading, setLoading] = useState(false);
14
+ const [success, setSuccess] = useState(false);
15
+ const [error, setError] = useState(null);
16
+ const isTrialFlow = useMemo(() => mode === "trial_form", [mode]);
17
+ const trialFormComplete = useMemo(() => name.trim().length > 0 && companyName.trim().length > 0, [name, companyName]);
18
+ const codeComplete = useMemo(() => codeDigits.every((d) => d.length === 1) && codeDigits.join("").length === 6, [codeDigits]);
19
+ useEffect(() => {
20
+ if (!isTrialFlow) {
21
+ codeInputRefs.current[0]?.focus();
22
+ }
23
+ }, [isTrialFlow]);
24
+ const handleStoreLicense = useCallback(async (license) => {
25
+ const settingsExist = await setupWizardService.getSettingsExists();
26
+ if (!settingsExist) {
27
+ await setupWizardService.createSettingsItem();
28
+ }
29
+ const result = await storeLicense(license);
30
+ if (!result.success) {
31
+ throw new Error(result.message || "Failed to store license.");
32
+ }
33
+ try {
34
+ await clearLicenseCache();
35
+ }
36
+ catch {
37
+ // Non-fatal cache clear; backend will refresh eventually.
38
+ }
39
+ }, []);
40
+ const completePurchasedActivation = useCallback(async (fullCode) => {
41
+ try {
42
+ setLoading(true);
43
+ setError(null);
44
+ const response = await verifyActivationCode({ email, code: fullCode });
45
+ if (response.status !== "purchased" || !response.license) {
46
+ throw new Error(response.message || "Activation code is invalid.");
47
+ }
48
+ await handleStoreLicense(response.license);
49
+ setSuccess(true);
50
+ setTimeout(() => {
51
+ onActivated();
52
+ }, 800);
53
+ }
54
+ catch (e) {
55
+ setError(e?.message || "License activation failed.");
56
+ }
57
+ finally {
58
+ setLoading(false);
59
+ }
60
+ }, [email, handleStoreLicense, onActivated]);
61
+ const handleActivate = useCallback(async () => {
62
+ if (isTrialFlow) {
63
+ try {
64
+ setLoading(true);
65
+ setError(null);
66
+ if (!name.trim() || !companyName.trim()) {
67
+ setError("Please provide your name and company name.");
68
+ return;
69
+ }
70
+ const response = await requestLicense({
71
+ email,
72
+ name: name.trim(),
73
+ companyName: companyName.trim(),
74
+ });
75
+ if (response.status !== "trial" || !response.license) {
76
+ throw new Error(response.message || "Trial activation failed.");
77
+ }
78
+ await handleStoreLicense(response.license);
79
+ setSuccess(true);
80
+ setTimeout(() => {
81
+ onActivated();
82
+ }, 800);
83
+ }
84
+ catch (e) {
85
+ setError(e?.message || "License activation failed.");
86
+ }
87
+ finally {
88
+ setLoading(false);
89
+ }
90
+ return;
91
+ }
92
+ const code = codeDigits.join("");
93
+ if (code.length !== 6) {
94
+ setError("Please enter the activation code.");
95
+ return;
96
+ }
97
+ await completePurchasedActivation(code);
98
+ }, [
99
+ isTrialFlow,
100
+ name,
101
+ companyName,
102
+ email,
103
+ codeDigits,
104
+ handleStoreLicense,
105
+ onActivated,
106
+ completePurchasedActivation,
107
+ ]);
108
+ const handleCodeDigitChange = (index, value) => {
109
+ const digit = value.replace(/\D/g, "").slice(-1);
110
+ setError(null);
111
+ setCodeDigits((prev) => {
112
+ const next = [...prev];
113
+ next[index] = digit;
114
+ if (digit && index < 5) {
115
+ queueMicrotask(() => codeInputRefs.current[index + 1]?.focus());
116
+ }
117
+ const full = next.join("");
118
+ if (digit && index === 5 && full.length === 6) {
119
+ queueMicrotask(() => void completePurchasedActivation(full));
120
+ }
121
+ return next;
122
+ });
123
+ };
124
+ const handleCodeKeyDown = (index, e) => {
125
+ if (e.key === "Backspace" && !codeDigits[index] && index > 0) {
126
+ codeInputRefs.current[index - 1]?.focus();
127
+ }
128
+ };
129
+ const handleCodePaste = (e) => {
130
+ e.preventDefault();
131
+ const pasted = e.clipboardData.getData("text").replace(/\D/g, "").slice(0, 6);
132
+ if (!pasted)
133
+ return;
134
+ setError(null);
135
+ const padded = Array.from({ length: 6 }, (_, i) => pasted.charAt(i) || "");
136
+ setCodeDigits(padded);
137
+ const focusIdx = Math.min(pasted.length, 5);
138
+ queueMicrotask(() => codeInputRefs.current[focusIdx]?.focus());
139
+ if (pasted.length === 6) {
140
+ void completePurchasedActivation(pasted);
141
+ }
142
+ };
143
+ return (_jsxs("div", { className: "flex flex-col items-center text-center p-12", children: [_jsx("div", { className: "mb-8 rounded-2xl bg-blue-50 p-6 ring-1 ring-blue-100", children: _jsx(KeyRound, { className: "h-16 w-12 text-blue-600", strokeWidth: 1.5 }) }), _jsx("h2", { className: "text-3xl font-bold text-gray-900 mb-4 tracking-tight", children: isTrialFlow ? "Start Trial License" : "Enter Activation Code" }), _jsx("p", { className: "text-gray-500 mb-8 max-w-md leading-relaxed", children: isTrialFlow
144
+ ? "Complete your trial registration. We will store the signed license in Sitecore Settings."
145
+ : "Enter the one-time code sent to your email. We will verify and store your purchased license." }), success ? (_jsxs("div", { className: "flex flex-col items-center gap-3 text-green-600 animate-in fade-in zoom-in duration-500", children: [_jsx("div", { className: "rounded-full bg-green-100 p-3", children: _jsx(CheckCircle, { className: "h-10 w-10", strokeWidth: 2 }) }), _jsx("span", { className: "font-semibold text-lg", children: "License Activated" })] })) : (_jsxs("form", { className: "w-full max-w-md", onSubmit: (e) => {
146
+ e.preventDefault();
147
+ if (loading)
148
+ return;
149
+ if (isTrialFlow && !trialFormComplete)
150
+ return;
151
+ if (!isTrialFlow && !codeComplete)
152
+ return;
153
+ void handleActivate();
154
+ }, children: [_jsx("div", { className: "space-y-4 mb-6", children: isTrialFlow ? (_jsxs(_Fragment, { children: [_jsx(Input, { id: "name", value: name, onChange: (e) => setName(e.target.value), placeholder: "Your name", className: "h-11 rounded-xl border-gray-200 bg-white focus:ring-blue-500" }), _jsx(Input, { id: "company", value: companyName, onChange: (e) => setCompanyName(e.target.value), placeholder: "Company name", className: "h-11 rounded-xl border-gray-200 bg-white focus:ring-blue-500" })] })) : (_jsx("div", { className: "flex justify-center gap-2", "data-testid": "license-code-inputs", children: codeDigits.map((digit, index) => (_jsx("input", { ref: (el) => {
155
+ codeInputRefs.current[index] = el;
156
+ }, type: "text", inputMode: "numeric", maxLength: 1, "aria-label": `Activation code digit ${index + 1}`, "data-testid": index === 0 ? "license-code-input-0" : undefined, value: digit, onChange: (e) => handleCodeDigitChange(index, e.target.value), onKeyDown: (e) => handleCodeKeyDown(index, e), onPaste: handleCodePaste, disabled: loading, className: "h-14 w-12 rounded-xl border border-gray-200 bg-white text-center text-2xl font-bold text-gray-900 focus:outline-none focus:ring-2 focus:ring-blue-500/30 disabled:opacity-50" }, index))) })) }), error && (_jsxs("div", { className: "mb-8 flex items-start gap-3 rounded-xl border border-red-100 bg-red-50 p-4 text-left max-w-md", children: [_jsx(AlertCircle, { className: "h-5 w-5 shrink-0 text-red-600" }), _jsx("p", { className: "text-sm text-red-800", children: error })] })), _jsxs("div", { className: "flex items-center gap-4", children: [_jsxs(Button, { type: "button", variant: "ghost", onClick: onBack, disabled: loading, className: "rounded-full h-10 px-6 text-xs font-bold uppercase tracking-widest text-gray-400", children: [_jsx(ArrowLeft, { className: "mr-2 h-4 w-4" }), "Back"] }), _jsx(Button, { type: "submit", disabled: loading ||
157
+ (isTrialFlow && !trialFormComplete) ||
158
+ (!isTrialFlow && !codeComplete), className: "px-8 h-10 rounded-full shadow-lg shadow-blue-200 transition-all active:scale-95 min-w-[220px] text-xs font-black uppercase tracking-widest bg-blue-600 hover:bg-blue-700 text-white", children: loading ? (_jsxs(_Fragment, { children: [_jsx(RefreshCw, { className: "mr-2 h-4 w-4 animate-spin" }), "Activating..."] })) : (_jsxs(_Fragment, { children: ["Activate License", _jsx(ArrowRight, { className: "ml-2 h-4 w-4", strokeWidth: 3 })] })) })] })] }))] }));
159
+ }
160
+ //# sourceMappingURL=LicenseActivationStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LicenseActivationStep.js","sourceRoot":"","sources":["../../../../src/editor/setup-wizard/steps/LicenseActivationStep.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAEhF,OAAO,EACL,WAAW,EACX,SAAS,EACT,UAAU,EACV,WAAW,EACX,QAAQ,EACR,SAAS,GACV,MAAM,cAAc,CAAC;AAStB,MAAM,UAAU,qBAAqB,CAAC,EACpC,KAAK,EACL,IAAI,EACJ,MAAM,EACN,WAAW,GACgB;IAC3B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,aAAa,GAAG,MAAM,CAA8B,EAAE,CAAC,CAAC;IAC9D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjE,MAAM,iBAAiB,GAAG,OAAO,CAC/B,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAC7D,CAAC,IAAI,EAAE,WAAW,CAAC,CACpB,CAAC;IAEF,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EACjF,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QACpC,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,MAAM,kBAAkB,GAAG,WAAW,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;QAC5D,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QACnE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,CAAC;QAChD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,0BAA0B,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,iBAAiB,EAAE,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,0DAA0D;QAC5D,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,2BAA2B,GAAG,WAAW,CAC7C,KAAK,EAAE,QAAgB,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvE,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACzD,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,6BAA6B,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC3C,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,UAAU,CAAC,GAAG,EAAE;gBACd,WAAW,EAAE,CAAC;YAChB,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,QAAQ,CAAC,CAAC,EAAE,OAAO,IAAI,4BAA4B,CAAC,CAAC;QACvD,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,EACD,CAAC,KAAK,EAAE,kBAAkB,EAAE,WAAW,CAAC,CACzC,CAAC;IAEF,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC5C,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;oBACxC,QAAQ,CAAC,4CAA4C,CAAC,CAAC;oBACvD,OAAO;gBACT,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;oBACpC,KAAK;oBACL,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;oBACjB,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE;iBAChC,CAAC,CAAC;gBAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACrD,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,0BAA0B,CAAC,CAAC;gBAClE,CAAC;gBAED,MAAM,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC3C,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjB,UAAU,CAAC,GAAG,EAAE;oBACd,WAAW,EAAE,CAAC;gBAChB,CAAC,EAAE,GAAG,CAAC,CAAC;YACV,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,QAAQ,CAAC,CAAC,EAAE,OAAO,IAAI,4BAA4B,CAAC,CAAC;YACvD,CAAC;oBAAS,CAAC;gBACT,UAAU,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,QAAQ,CAAC,mCAAmC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QACD,MAAM,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,EAAE;QACD,WAAW;QACX,IAAI;QACJ,WAAW;QACX,KAAK;QACL,UAAU;QACV,kBAAkB;QAClB,WAAW;QACX,2BAA2B;KAC5B,CAAC,CAAC;IAEH,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;QAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;YAEpB,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACvB,cAAc,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAClE,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3B,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9C,cAAc,CAAC,GAAG,EAAE,CAAC,KAAK,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/D,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAE,CAAsB,EAAE,EAAE;QAClE,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC7D,aAAa,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,CAAuB,EAAE,EAAE;QAClD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3E,aAAa,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5C,cAAc,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,KAAK,2BAA2B,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,6CAA6C,aAC1D,cAAK,SAAS,EAAC,sDAAsD,YACnE,KAAC,QAAQ,IAAC,SAAS,EAAC,yBAAyB,EAAC,WAAW,EAAE,GAAG,GAAI,GAC9D,EACN,aAAI,SAAS,EAAC,sDAAsD,YACjE,WAAW,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,uBAAuB,GAC3D,EACL,YAAG,SAAS,EAAC,6CAA6C,YACvD,WAAW;oBACV,CAAC,CAAC,0FAA0F;oBAC5F,CAAC,CAAC,8FAA8F,GAChG,EAEH,OAAO,CAAC,CAAC,CAAC,CACT,eAAK,SAAS,EAAC,yFAAyF,aACtG,cAAK,SAAS,EAAC,+BAA+B,YAC5C,KAAC,WAAW,IAAC,SAAS,EAAC,WAAW,EAAC,WAAW,EAAE,CAAC,GAAI,GACjD,EACN,eAAM,SAAS,EAAC,uBAAuB,kCAAyB,IAC5D,CACP,CAAC,CAAC,CAAC,CACF,gBACE,SAAS,EAAC,iBAAiB,EAC3B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACd,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,IAAI,OAAO;wBAAE,OAAO;oBACpB,IAAI,WAAW,IAAI,CAAC,iBAAiB;wBAAE,OAAO;oBAC9C,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY;wBAAE,OAAO;oBAC1C,KAAK,cAAc,EAAE,CAAC;gBACxB,CAAC,aAED,cAAK,SAAS,EAAC,gBAAgB,YAC5B,WAAW,CAAC,CAAC,CAAC,CACb,8BACE,KAAC,KAAK,IACJ,EAAE,EAAC,MAAM,EACT,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACxC,WAAW,EAAC,WAAW,EACvB,SAAS,EAAC,8DAA8D,GACxE,EACF,KAAC,KAAK,IACJ,EAAE,EAAC,SAAS,EACZ,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC/C,WAAW,EAAC,cAAc,EAC1B,SAAS,EAAC,8DAA8D,GACxE,IACD,CACJ,CAAC,CAAC,CAAC,CACF,cACE,SAAS,EAAC,2BAA2B,iBACzB,qBAAqB,YAEhC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAChC,gBAEE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;oCACV,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gCACpC,CAAC,EACD,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,SAAS,EACnB,SAAS,EAAE,CAAC,gBACA,yBAAyB,KAAK,GAAG,CAAC,EAAE,iBACnC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,EAC7D,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC7D,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,EAC7C,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAC,8KAA8K,IAdnL,KAAK,CAeV,CACH,CAAC,GACE,CACP,GACG,EAEL,KAAK,IAAI,CACR,eAAK,SAAS,EAAC,+FAA+F,aAC5G,KAAC,WAAW,IAAC,SAAS,EAAC,+BAA+B,GAAG,EACzD,YAAG,SAAS,EAAC,sBAAsB,YAAE,KAAK,GAAK,IAC3C,CACP,EAED,eAAK,SAAS,EAAC,yBAAyB,aACtC,MAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,OAAO,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAC,kFAAkF,aAE5F,KAAC,SAAS,IAAC,SAAS,EAAC,cAAc,GAAG,YAE/B,EACT,KAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,QAAQ,EACN,OAAO;oCACP,CAAC,WAAW,IAAI,CAAC,iBAAiB,CAAC;oCACnC,CAAC,CAAC,WAAW,IAAI,CAAC,YAAY,CAAC,EAEjC,SAAS,EAAC,qLAAqL,YAE9L,OAAO,CAAC,CAAC,CAAC,CACT,8BACE,KAAC,SAAS,IAAC,SAAS,EAAC,2BAA2B,GAAG,qBAElD,CACJ,CAAC,CAAC,CAAC,CACF,kDAEE,KAAC,UAAU,IAAC,SAAS,EAAC,cAAc,EAAC,WAAW,EAAE,CAAC,GAAI,IACtD,CACJ,GACM,IACL,IACD,CACR,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ export type LicenseActivationMode = "trial_form" | "code_entry";
2
+ interface LicenseEmailStepProps {
3
+ onNext: (payload: {
4
+ email: string;
5
+ mode: LicenseActivationMode;
6
+ }) => void;
7
+ onBack: () => void;
8
+ }
9
+ export declare function LicenseEmailStep({ onNext, onBack }: LicenseEmailStepProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -0,0 +1,101 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useState } from "react";
3
+ import { Button } from "../../../components/ui/button";
4
+ import { Input } from "../../../components/ui/input";
5
+ import { getLicenseStatus, requestLicense, formatRetryTimeSimple, } from "../../../licensing/licenseService";
6
+ import { AlertCircle, ArrowLeft, ArrowRight, KeyRound, RefreshCw, } from "lucide-react";
7
+ export function LicenseEmailStep({ onNext, onBack }) {
8
+ const [email, setEmail] = useState("");
9
+ const [buildDate, setBuildDate] = useState("");
10
+ const [loading, setLoading] = useState(false);
11
+ const [error, setError] = useState(null);
12
+ const [countdownSeconds, setCountdownSeconds] = useState(null);
13
+ useEffect(() => {
14
+ let disposed = false;
15
+ getLicenseStatus()
16
+ .then((status) => {
17
+ if (!disposed) {
18
+ setBuildDate(status.buildDate || "");
19
+ }
20
+ })
21
+ .catch(() => {
22
+ // Non-fatal. License request works without build date as well.
23
+ });
24
+ return () => {
25
+ disposed = true;
26
+ };
27
+ }, []);
28
+ // Countdown timer for rate limit (update frequency depends on remaining time)
29
+ useEffect(() => {
30
+ if (countdownSeconds === null || countdownSeconds <= 0) {
31
+ return;
32
+ }
33
+ // Update every second when < 1 minute, every minute when >= 1 minute
34
+ const updateInterval = countdownSeconds > 60 ? 60000 : 1000;
35
+ const timer = setInterval(() => {
36
+ setCountdownSeconds((prev) => {
37
+ if (prev === null)
38
+ return null;
39
+ const next = prev - (updateInterval === 60000 ? 60 : 1);
40
+ return next > 0 ? next : 0;
41
+ });
42
+ }, updateInterval);
43
+ return () => clearInterval(timer);
44
+ }, [countdownSeconds]);
45
+ const handleContinue = useCallback(async () => {
46
+ if (!email) {
47
+ setError("Please enter your email address.");
48
+ return;
49
+ }
50
+ try {
51
+ setLoading(true);
52
+ setError(null);
53
+ const response = await requestLicense({
54
+ email,
55
+ // Placeholder values are only used for branching trial-vs-code on this first step.
56
+ name: "Setup",
57
+ companyName: "Setup",
58
+ parheliaBuildDate: buildDate,
59
+ });
60
+ if (response.status === "trial") {
61
+ onNext({ email, mode: "trial_form" });
62
+ return;
63
+ }
64
+ if (response.status === "code_sent") {
65
+ onNext({ email, mode: "code_entry" });
66
+ return;
67
+ }
68
+ if (response.status === "trial_expired") {
69
+ setError(response.message ||
70
+ "Trial period expired for this email. Use activation code flow.");
71
+ return;
72
+ }
73
+ if (response.status === "rate_limited") {
74
+ const retrySeconds = response.retryAfterSeconds || 60;
75
+ setCountdownSeconds(retrySeconds);
76
+ setError(`Too many requests for sending a new code. If you already have one, use "I already have a code". Otherwise try again in ${formatRetryTimeSimple(retrySeconds)}.`);
77
+ return;
78
+ }
79
+ setError(response.message || "Failed to start license activation.");
80
+ }
81
+ catch (e) {
82
+ setError(e?.message || "Failed to contact license service.");
83
+ }
84
+ finally {
85
+ setLoading(false);
86
+ }
87
+ }, [email, buildDate, onNext]);
88
+ return (_jsxs("div", { className: "flex flex-col items-center text-center p-12", children: [_jsx("div", { className: "mb-8 rounded-2xl bg-blue-50 p-6 ring-1 ring-blue-100", children: _jsx(KeyRound, { className: "h-16 w-12 text-blue-600", strokeWidth: 1.5 }) }), _jsx("h2", { className: "text-3xl font-bold text-gray-900 mb-4 tracking-tight", children: "License Activation" }), _jsx("p", { className: "text-gray-500 mb-8 max-w-md leading-relaxed", children: "Enter your email to start license activation. We will detect whether to continue with trial registration or one-time activation code." }), _jsxs("form", { className: "w-full max-w-md", onSubmit: (e) => {
89
+ e.preventDefault();
90
+ if (loading)
91
+ return;
92
+ void handleContinue();
93
+ }, children: [_jsx("div", { className: "space-y-4 mb-6", children: _jsx(Input, { id: "email", type: "email", "data-testid": "license-email-input", value: email, onChange: (e) => setEmail(e.target.value), placeholder: "you@company.com", className: "h-11 rounded-xl border-gray-200 bg-white focus:ring-blue-500" }) }), error && (_jsxs("div", { className: "mb-8 flex items-start gap-3 rounded-xl border border-red-100 bg-red-50 p-4 text-left max-w-md", children: [_jsx(AlertCircle, { className: "h-5 w-5 shrink-0 text-red-600" }), _jsxs("div", { className: "flex-1", children: [_jsx("p", { className: "text-sm text-red-800", children: error }), countdownSeconds !== null && countdownSeconds > 0 && (_jsxs("p", { className: "text-xs text-red-700 mt-2 font-medium", children: ["Retry available in ", formatRetryTimeSimple(countdownSeconds)] }))] })] })), _jsxs("div", { className: "flex items-center gap-4", children: [_jsxs(Button, { type: "button", variant: "ghost", onClick: onBack, disabled: loading, className: "rounded-full h-10 px-6 text-xs font-bold uppercase tracking-widest text-gray-400", children: [_jsx(ArrowLeft, { className: "mr-2 h-4 w-4" }), "Back"] }), _jsx(Button, { type: "submit", disabled: loading || !email, className: "px-8 h-10 rounded-full shadow-lg shadow-blue-200 transition-all active:scale-95 min-w-[220px] text-xs font-black uppercase tracking-widest bg-blue-600 hover:bg-blue-700 text-white", children: loading ? (_jsxs(_Fragment, { children: [_jsx(RefreshCw, { className: "mr-2 h-4 w-4 animate-spin" }), "Checking..."] })) : (_jsxs(_Fragment, { children: ["Continue", _jsx(ArrowRight, { className: "ml-2 h-4 w-4", strokeWidth: 3 })] })) })] })] }), _jsx("button", { type: "button", onClick: () => {
94
+ if (!email) {
95
+ setError("Please enter your email address first.");
96
+ return;
97
+ }
98
+ onNext({ email, mode: "code_entry" });
99
+ }, disabled: loading, className: "mt-5 text-xs font-semibold uppercase tracking-wider text-blue-600 hover:text-blue-700 disabled:opacity-50", children: "I already have a code" })] }));
100
+ }
101
+ //# sourceMappingURL=LicenseEmailStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LicenseEmailStep.js","sourceRoot":"","sources":["../../../../src/editor/setup-wizard/steps/LicenseEmailStep.tsx"],"names":[],"mappings":"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"}