@parhelia/core 0.1.11873 → 0.1.11955
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/dist/agents-view/AgentsInbox.d.ts +1 -1
- package/dist/agents-view/AgentsInbox.js +15 -2
- package/dist/agents-view/AgentsInbox.js.map +1 -1
- package/dist/agents-view/AgentsSidebar.d.ts +20 -0
- package/dist/agents-view/AgentsSidebar.js +21 -0
- package/dist/agents-view/AgentsSidebar.js.map +1 -0
- package/dist/agents-view/AgentsView.d.ts +6 -7
- package/dist/agents-view/AgentsView.js +63 -25
- package/dist/agents-view/AgentsView.js.map +1 -1
- package/dist/agents-view/AgentsWorkspaceView.d.ts +2 -6
- package/dist/agents-view/AgentsWorkspaceView.js +242 -112
- package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
- package/dist/components/ui/context-menu.js +24 -9
- package/dist/components/ui/context-menu.js.map +1 -1
- package/dist/components/ui/select.js +1 -1
- package/dist/components/ui/select.js.map +1 -1
- package/dist/config/config.js +15 -11
- package/dist/config/config.js.map +1 -1
- package/dist/editor/ContentTree.js +2 -2
- package/dist/editor/ContentTree.js.map +1 -1
- package/dist/editor/ContextMenu.js +11 -5
- package/dist/editor/ContextMenu.js.map +1 -1
- package/dist/editor/FieldListField.js +1 -1
- package/dist/editor/FieldListField.js.map +1 -1
- package/dist/editor/MainLayout.js.map +1 -1
- package/dist/editor/MobileLayout.js +19 -9
- package/dist/editor/MobileLayout.js.map +1 -1
- package/dist/editor/ai/AgentStatusBadge.d.ts +1 -1
- package/dist/editor/ai/AgentStatusBadge.js +18 -2
- package/dist/editor/ai/AgentStatusBadge.js.map +1 -1
- package/dist/editor/ai/AgentTerminal.js +342 -55
- package/dist/editor/ai/AgentTerminal.js.map +1 -1
- package/dist/editor/ai/AiResponseMessage.js +46 -4
- package/dist/editor/ai/AiResponseMessage.js.map +1 -1
- package/dist/editor/ai/ContextInfoBar.js +151 -5
- package/dist/editor/ai/ContextInfoBar.js.map +1 -1
- package/dist/editor/ai/EditOperationsPanel.d.ts +2 -1
- package/dist/editor/ai/EditOperationsPanel.js +6 -1
- package/dist/editor/ai/EditOperationsPanel.js.map +1 -1
- package/dist/editor/ai/dialogs/AgentDialogHandler.js +64 -15
- package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
- package/dist/editor/ai/dialogs/QuestionnaireInline.js +111 -20
- package/dist/editor/ai/dialogs/QuestionnaireInline.js.map +1 -1
- package/dist/editor/ai/dialogs/agentDialogTypes.d.ts +24 -0
- package/dist/editor/ai/dialogs/agentDialogTypes.js.map +1 -1
- package/dist/editor/ai/useAgentStatus.d.ts +1 -0
- package/dist/editor/ai/useAgentStatus.js +74 -29
- package/dist/editor/ai/useAgentStatus.js.map +1 -1
- package/dist/editor/client/EditorShell.js +72 -8
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/hooks/useQuota.d.ts +7 -0
- package/dist/editor/client/hooks/useQuota.js.map +1 -1
- package/dist/editor/client/hooks/useSocketMessageHandler.js +10 -1
- package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
- package/dist/editor/client/pageModelBuilder.js +3 -30
- package/dist/editor/client/pageModelBuilder.js.map +1 -1
- package/dist/editor/client/ui/EditorChrome.js +31 -1
- package/dist/editor/client/ui/EditorChrome.js.map +1 -1
- package/dist/editor/commands/componentCommands.js +106 -6
- package/dist/editor/commands/componentCommands.js.map +1 -1
- package/dist/editor/commands/itemCommands.d.ts +1 -0
- package/dist/editor/commands/itemCommands.js +28 -1
- package/dist/editor/commands/itemCommands.js.map +1 -1
- package/dist/editor/componentTreeHelper.js +22 -2
- package/dist/editor/componentTreeHelper.js.map +1 -1
- package/dist/editor/insertMenuItems.d.ts +4 -0
- package/dist/editor/insertMenuItems.js +66 -0
- package/dist/editor/insertMenuItems.js.map +1 -0
- package/dist/editor/menubar/toolbar-sections/UtilityControls.js +1 -1
- package/dist/editor/menubar/toolbar-sections/UtilityControls.js.map +1 -1
- package/dist/editor/page-editor-chrome/FrameMenus.js +8 -1
- package/dist/editor/page-editor-chrome/FrameMenus.js.map +1 -1
- package/dist/editor/page-editor-chrome/InlineEditor.js +25 -11
- package/dist/editor/page-editor-chrome/InlineEditor.js.map +1 -1
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +32 -17
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
- package/dist/editor/page-editor-chrome/PlaceholderDropZones.js +17 -11
- package/dist/editor/page-editor-chrome/PlaceholderDropZones.js.map +1 -1
- package/dist/editor/page-viewer/EditorForm.js +6 -5
- package/dist/editor/page-viewer/EditorForm.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.js +49 -1
- package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
- package/dist/editor/page-viewer/pageModelSkeletonBuilder.js +5 -0
- package/dist/editor/page-viewer/pageModelSkeletonBuilder.js.map +1 -1
- package/dist/editor/pageModel.d.ts +2 -0
- package/dist/editor/reviews/CreateReviewConfirmStep.d.ts +16 -0
- package/dist/editor/reviews/CreateReviewConfirmStep.js +37 -0
- package/dist/editor/reviews/CreateReviewConfirmStep.js.map +1 -0
- package/dist/editor/reviews/CreateReviewDetailsStep.d.ts +51 -0
- package/dist/editor/reviews/CreateReviewDetailsStep.js +121 -0
- package/dist/editor/reviews/CreateReviewDetailsStep.js.map +1 -0
- package/dist/editor/reviews/CreateReviewDialog.js +260 -173
- package/dist/editor/reviews/CreateReviewDialog.js.map +1 -1
- package/dist/editor/reviews/CreateReviewSuccessStep.d.ts +6 -0
- package/dist/editor/reviews/CreateReviewSuccessStep.js +8 -0
- package/dist/editor/reviews/CreateReviewSuccessStep.js.map +1 -0
- package/dist/editor/reviews/DecisionsMatrix.js +96 -25
- package/dist/editor/reviews/DecisionsMatrix.js.map +1 -1
- package/dist/editor/reviews/MultiReviewManager.js +25 -3
- package/dist/editor/reviews/MultiReviewManager.js.map +1 -1
- package/dist/editor/reviews/PagesPanel.js +31 -15
- package/dist/editor/reviews/PagesPanel.js.map +1 -1
- package/dist/editor/reviews/ReviewCard.js +13 -7
- package/dist/editor/reviews/ReviewCard.js.map +1 -1
- package/dist/editor/reviews/ReviewDetail.js +2 -2
- package/dist/editor/reviews/ReviewDetail.js.map +1 -1
- package/dist/editor/reviews/ReviewsList.js +7 -3
- package/dist/editor/reviews/ReviewsList.js.map +1 -1
- package/dist/editor/services/agentService.d.ts +14 -1
- package/dist/editor/services/agentService.js +27 -1
- package/dist/editor/services/agentService.js.map +1 -1
- package/dist/editor/services/aiService.d.ts +39 -1
- package/dist/editor/services/aiService.js +12 -2
- package/dist/editor/services/aiService.js.map +1 -1
- package/dist/editor/services/serviceHelper.d.ts +1 -1
- package/dist/editor/services/serviceHelper.js +2 -1
- package/dist/editor/services/serviceHelper.js.map +1 -1
- package/dist/editor/settings/About.js +1 -1
- package/dist/editor/settings/About.js.map +1 -1
- package/dist/editor/settings/QuotaInfo.js +202 -4
- package/dist/editor/settings/QuotaInfo.js.map +1 -1
- package/dist/editor/settings/panels/SearchConfigPanel.js +11 -13
- package/dist/editor/settings/panels/SearchConfigPanel.js.map +1 -1
- package/dist/editor/settings/status/useStartupChecks.js +2 -1
- package/dist/editor/settings/status/useStartupChecks.js.map +1 -1
- package/dist/editor/sidebar/ComponentTree.js +26 -20
- package/dist/editor/sidebar/ComponentTree.js.map +1 -1
- package/dist/editor/sidebar/MobileWorkspacePopover.d.ts +16 -0
- package/dist/editor/sidebar/MobileWorkspacePopover.js +35 -0
- package/dist/editor/sidebar/MobileWorkspacePopover.js.map +1 -0
- package/dist/editor/sidebar/NavigationSidebar.js +30 -14
- package/dist/editor/sidebar/NavigationSidebar.js.map +1 -1
- package/dist/editor/ui/ItemNameDialogNew.js +8 -8
- package/dist/editor/ui/ItemNameDialogNew.js.map +1 -1
- package/dist/editor/ui/SharedFolderSelectorDialog.d.ts +11 -0
- package/dist/editor/ui/SharedFolderSelectorDialog.js +79 -0
- package/dist/editor/ui/SharedFolderSelectorDialog.js.map +1 -0
- package/dist/editor/ui/SimpleTabs.js +1 -1
- package/dist/editor/ui/SimpleTabs.js.map +1 -1
- package/dist/editor/ui/Splitter.js +4 -2
- package/dist/editor/ui/Splitter.js.map +1 -1
- package/dist/editor/ui/TreeListSelector.d.ts +2 -1
- package/dist/editor/ui/TreeListSelector.js +2 -2
- package/dist/editor/ui/TreeListSelector.js.map +1 -1
- package/dist/editor/utils.js +42 -0
- package/dist/editor/utils.js.map +1 -1
- package/dist/editor/views/EditorSlot.js +7 -8
- package/dist/editor/views/EditorSlot.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/setup/wizard/steps/ImportModelDialog.js +24 -22
- package/dist/setup/wizard/steps/ImportModelDialog.js.map +1 -1
- package/dist/splash-screen/NewPage.js +2 -2
- package/dist/splash-screen/NewPage.js.map +1 -1
- package/dist/splash-screen/RecentPages.js +1 -1
- package/dist/splash-screen/RecentPages.js.map +1 -1
- package/dist/task-board/TaskBoardWorkspace.d.ts +1 -0
- package/dist/task-board/TaskBoardWorkspace.js +1094 -0
- package/dist/task-board/TaskBoardWorkspace.js.map +1 -0
- package/dist/task-board/components/AddDependencyDialog.d.ts +8 -0
- package/dist/task-board/components/AddDependencyDialog.js +53 -0
- package/dist/task-board/components/AddDependencyDialog.js.map +1 -0
- package/dist/task-board/components/AssignAgentDialog.d.ts +7 -0
- package/dist/task-board/components/AssignAgentDialog.js +96 -0
- package/dist/task-board/components/AssignAgentDialog.js.map +1 -0
- package/dist/task-board/components/CommentsList.d.ts +3 -0
- package/dist/task-board/components/CommentsList.js +36 -0
- package/dist/task-board/components/CommentsList.js.map +1 -0
- package/dist/task-board/components/CreateProjectDialog.d.ts +7 -0
- package/dist/task-board/components/CreateProjectDialog.js +175 -0
- package/dist/task-board/components/CreateProjectDialog.js.map +1 -0
- package/dist/task-board/components/CreateTaskDialog.d.ts +7 -0
- package/dist/task-board/components/CreateTaskDialog.js +76 -0
- package/dist/task-board/components/CreateTaskDialog.js.map +1 -0
- package/dist/task-board/components/ProjectAgentsPanel.d.ts +4 -0
- package/dist/task-board/components/ProjectAgentsPanel.js +159 -0
- package/dist/task-board/components/ProjectAgentsPanel.js.map +1 -0
- package/dist/task-board/components/ProjectDashboard.d.ts +25 -0
- package/dist/task-board/components/ProjectDashboard.js +91 -0
- package/dist/task-board/components/ProjectDashboard.js.map +1 -0
- package/dist/task-board/components/ProjectList.d.ts +7 -0
- package/dist/task-board/components/ProjectList.js +74 -0
- package/dist/task-board/components/ProjectList.js.map +1 -0
- package/dist/task-board/components/ProjectSettingsDialog.d.ts +8 -0
- package/dist/task-board/components/ProjectSettingsDialog.js +146 -0
- package/dist/task-board/components/ProjectSettingsDialog.js.map +1 -0
- package/dist/task-board/components/TaskAgentPanel.d.ts +10 -0
- package/dist/task-board/components/TaskAgentPanel.js +42 -0
- package/dist/task-board/components/TaskAgentPanel.js.map +1 -0
- package/dist/task-board/components/TaskAssigneePicker.d.ts +12 -0
- package/dist/task-board/components/TaskAssigneePicker.js +115 -0
- package/dist/task-board/components/TaskAssigneePicker.js.map +1 -0
- package/dist/task-board/components/TaskBoardTitlebar.d.ts +1 -0
- package/dist/task-board/components/TaskBoardTitlebar.js +60 -0
- package/dist/task-board/components/TaskBoardTitlebar.js.map +1 -0
- package/dist/task-board/components/TaskCard.d.ts +9 -0
- package/dist/task-board/components/TaskCard.js +24 -0
- package/dist/task-board/components/TaskCard.js.map +1 -0
- package/dist/task-board/components/TaskDetailDialog.d.ts +11 -0
- package/dist/task-board/components/TaskDetailDialog.js +8 -0
- package/dist/task-board/components/TaskDetailDialog.js.map +1 -0
- package/dist/task-board/components/TaskDetailPanel.d.ts +13 -0
- package/dist/task-board/components/TaskDetailPanel.js +322 -0
- package/dist/task-board/components/TaskDetailPanel.js.map +1 -0
- package/dist/task-board/components/TaskRow.d.ts +9 -0
- package/dist/task-board/components/TaskRow.js +25 -0
- package/dist/task-board/components/TaskRow.js.map +1 -0
- package/dist/task-board/index.d.ts +15 -0
- package/dist/task-board/index.js +18 -0
- package/dist/task-board/index.js.map +1 -0
- package/dist/task-board/services/taskService.d.ts +52 -0
- package/dist/task-board/services/taskService.js +74 -0
- package/dist/task-board/services/taskService.js.map +1 -0
- package/dist/task-board/taskAgentConfig.d.ts +7 -0
- package/dist/task-board/taskAgentConfig.js +43 -0
- package/dist/task-board/taskAgentConfig.js.map +1 -0
- package/dist/task-board/taskAgentLink.d.ts +2 -0
- package/dist/task-board/taskAgentLink.js +35 -0
- package/dist/task-board/taskAgentLink.js.map +1 -0
- package/dist/task-board/taskBoardNavStore.d.ts +35 -0
- package/dist/task-board/taskBoardNavStore.js +42 -0
- package/dist/task-board/taskBoardNavStore.js.map +1 -0
- package/dist/task-board/taskExecutionStatus.d.ts +12 -0
- package/dist/task-board/taskExecutionStatus.js +96 -0
- package/dist/task-board/taskExecutionStatus.js.map +1 -0
- package/dist/task-board/taskStatus.d.ts +2 -0
- package/dist/task-board/taskStatus.js +26 -0
- package/dist/task-board/taskStatus.js.map +1 -0
- package/dist/task-board/types.d.ts +169 -0
- package/dist/task-board/types.js +2 -0
- package/dist/task-board/types.js.map +1 -0
- package/dist/task-board/utils/projectHierarchy.d.ts +13 -0
- package/dist/task-board/utils/projectHierarchy.js +34 -0
- package/dist/task-board/utils/projectHierarchy.js.map +1 -0
- package/dist/task-board/views/KanbanView.d.ts +14 -0
- package/dist/task-board/views/KanbanView.js +136 -0
- package/dist/task-board/views/KanbanView.js.map +1 -0
- package/dist/task-board/views/ListView.d.ts +13 -0
- package/dist/task-board/views/ListView.js +74 -0
- package/dist/task-board/views/ListView.js.map +1 -0
- package/dist/task-board/views/PlanningView.d.ts +7 -0
- package/dist/task-board/views/PlanningView.js +112 -0
- package/dist/task-board/views/PlanningView.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,8 +1,194 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
2
3
|
import { useEditContext } from "../client/editContext";
|
|
4
|
+
import { loadQuotaUsers, requestQuota, } from "../services/aiService";
|
|
5
|
+
const MONTH_NAMES = [
|
|
6
|
+
"January",
|
|
7
|
+
"February",
|
|
8
|
+
"March",
|
|
9
|
+
"April",
|
|
10
|
+
"May",
|
|
11
|
+
"June",
|
|
12
|
+
"July",
|
|
13
|
+
"August",
|
|
14
|
+
"September",
|
|
15
|
+
"October",
|
|
16
|
+
"November",
|
|
17
|
+
"December",
|
|
18
|
+
];
|
|
19
|
+
function parseUsageDate(rawDate) {
|
|
20
|
+
if (!rawDate)
|
|
21
|
+
return null;
|
|
22
|
+
const normalized = rawDate.includes("T") ? rawDate : `${rawDate}T00:00:00Z`;
|
|
23
|
+
const parsed = new Date(normalized);
|
|
24
|
+
return isNaN(parsed.getTime()) ? null : parsed;
|
|
25
|
+
}
|
|
26
|
+
function DailyUsageBarChart(props) {
|
|
27
|
+
const { title, unit, colorClass, valueFormatter, points } = props;
|
|
28
|
+
const maxValue = Math.max(1, ...points.map((point) => point.value));
|
|
29
|
+
const hasValues = points.some((point) => point.value > 0);
|
|
30
|
+
return (_jsxs("div", { className: "rounded border border-gray-100 bg-gray-50 p-3", children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsx("p", { className: "text-sm font-medium text-gray-700", children: title }), _jsxs("p", { className: "text-xs text-gray-500", children: ["Max: ", valueFormatter(maxValue), " ", unit] })] }), _jsx("div", { className: "h-36 rounded border border-gray-100 bg-white p-2", children: _jsx("div", { className: "flex h-full items-end gap-[2px]", children: points.map((point) => {
|
|
31
|
+
const heightPercent = point.value <= 0 ? 2 : Math.max(4, (point.value / maxValue) * 100);
|
|
32
|
+
return (_jsx("div", { className: "group relative flex h-full flex-1 items-end", children: _jsx("div", { className: `w-full rounded-t-sm ${colorClass} opacity-90 transition-opacity group-hover:opacity-100`, style: { height: `${heightPercent}%` }, title: `Day ${point.day}: ${valueFormatter(point.value)} ${unit}` }) }, point.day));
|
|
33
|
+
}) }) }), _jsx("div", { className: "mt-2 grid text-[10px] text-gray-500", style: { gridTemplateColumns: `repeat(${points.length}, minmax(0, 1fr))` }, children: points.map((point) => {
|
|
34
|
+
const shouldShowLabel = point.day === 1 ||
|
|
35
|
+
point.day === points.length ||
|
|
36
|
+
point.day % 5 === 0;
|
|
37
|
+
return (_jsx("span", { className: "text-center", children: shouldShowLabel ? point.day : "" }, point.day));
|
|
38
|
+
}) }), !hasValues && (_jsx("p", { className: "mt-2 text-xs text-gray-500", children: "No usage recorded for this period." }))] }));
|
|
39
|
+
}
|
|
3
40
|
export function QuotaInfo() {
|
|
4
41
|
const editContext = useEditContext();
|
|
5
|
-
const
|
|
42
|
+
const liveQuotaInfo = editContext?.quotaInfo ?? null;
|
|
43
|
+
const today = new Date();
|
|
44
|
+
const currentYear = today.getFullYear();
|
|
45
|
+
const [selectedMonth, setSelectedMonth] = useState(today.getMonth());
|
|
46
|
+
const [selectedYear, setSelectedYear] = useState(currentYear);
|
|
47
|
+
const isAdministrator = editContext?.user?.isAdministrator === true;
|
|
48
|
+
const currentUserName = editContext?.user?.name ?? "";
|
|
49
|
+
const [selectedScope, setSelectedScope] = useState("me");
|
|
50
|
+
const [selectedUserName, setSelectedUserName] = useState("");
|
|
51
|
+
const [quotaUsers, setQuotaUsers] = useState([]);
|
|
52
|
+
const [scopedQuotaInfo, setScopedQuotaInfo] = useState(null);
|
|
53
|
+
const [isLoadingScopedQuota, setIsLoadingScopedQuota] = useState(false);
|
|
54
|
+
const [scopeError, setScopeError] = useState(null);
|
|
55
|
+
const quotaInfo = isAdministrator && selectedScope !== "me" ? scopedQuotaInfo : liveQuotaInfo;
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
if (selectedUserName || !currentUserName)
|
|
58
|
+
return;
|
|
59
|
+
setSelectedUserName(currentUserName);
|
|
60
|
+
}, [currentUserName, selectedUserName]);
|
|
61
|
+
const availableQuotaUsers = useMemo(() => {
|
|
62
|
+
const withCurrentUser = currentUserName &&
|
|
63
|
+
!quotaUsers.some((user) => user.userName.toLowerCase() === currentUserName.toLowerCase())
|
|
64
|
+
? [
|
|
65
|
+
...quotaUsers,
|
|
66
|
+
{ userName: currentUserName, displayName: currentUserName },
|
|
67
|
+
]
|
|
68
|
+
: quotaUsers;
|
|
69
|
+
return [...withCurrentUser].sort((a, b) => a.userName.localeCompare(b.userName, undefined, { sensitivity: "base" }));
|
|
70
|
+
}, [currentUserName, quotaUsers]);
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
if (!isAdministrator)
|
|
73
|
+
return;
|
|
74
|
+
let cancelled = false;
|
|
75
|
+
async function fetchQuotaUsers() {
|
|
76
|
+
const response = await loadQuotaUsers();
|
|
77
|
+
if (cancelled)
|
|
78
|
+
return;
|
|
79
|
+
if (response.type === "success") {
|
|
80
|
+
setQuotaUsers(response.data ?? []);
|
|
81
|
+
setScopeError(null);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
setScopeError(response.details ?? "Failed to load users");
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
void fetchQuotaUsers();
|
|
88
|
+
return () => {
|
|
89
|
+
cancelled = true;
|
|
90
|
+
};
|
|
91
|
+
}, [isAdministrator]);
|
|
92
|
+
const loadScopedQuotaInfo = useCallback(async () => {
|
|
93
|
+
if (!isAdministrator)
|
|
94
|
+
return;
|
|
95
|
+
if (selectedScope === "me") {
|
|
96
|
+
setIsLoadingScopedQuota(false);
|
|
97
|
+
setScopedQuotaInfo(null);
|
|
98
|
+
setScopeError(null);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
if (selectedScope === "user" && !selectedUserName) {
|
|
102
|
+
setIsLoadingScopedQuota(false);
|
|
103
|
+
setScopedQuotaInfo(null);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
setIsLoadingScopedQuota(true);
|
|
107
|
+
setScopedQuotaInfo(null);
|
|
108
|
+
const response = await requestQuota({
|
|
109
|
+
scope: selectedScope,
|
|
110
|
+
userName: selectedScope === "user" ? selectedUserName : undefined,
|
|
111
|
+
});
|
|
112
|
+
if (response.type === "success" && response.data) {
|
|
113
|
+
const payload = response.data;
|
|
114
|
+
setScopedQuotaInfo({
|
|
115
|
+
usage: {
|
|
116
|
+
totalTokens: payload.usage.totalTokens,
|
|
117
|
+
totalImages: payload.usage.totalImages,
|
|
118
|
+
dailyTokens: payload.usage.dailyTokens,
|
|
119
|
+
dailyImages: payload.usage.dailyImages,
|
|
120
|
+
totalCost: payload.usage.totalCost,
|
|
121
|
+
dailyCost: payload.usage.dailyCost,
|
|
122
|
+
dailyHistory: payload.usage.dailyHistory ?? [],
|
|
123
|
+
},
|
|
124
|
+
limits: {
|
|
125
|
+
totalTokens: payload.limits.totalTokens,
|
|
126
|
+
dailyTokens: payload.limits.dailyTokens,
|
|
127
|
+
monthlyTokens: -1,
|
|
128
|
+
totalImages: payload.limits.totalImages,
|
|
129
|
+
dailyImages: payload.limits.dailyImages,
|
|
130
|
+
monthlyImages: -1,
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
setScopeError(null);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
setScopedQuotaInfo(null);
|
|
137
|
+
setScopeError(response.details ?? "Failed to load quota");
|
|
138
|
+
}
|
|
139
|
+
setIsLoadingScopedQuota(false);
|
|
140
|
+
}, [isAdministrator, selectedScope, selectedUserName]);
|
|
141
|
+
useEffect(() => {
|
|
142
|
+
if (!isAdministrator)
|
|
143
|
+
return;
|
|
144
|
+
void loadScopedQuotaInfo();
|
|
145
|
+
}, [isAdministrator, loadScopedQuotaInfo]);
|
|
146
|
+
const dailyHistory = useMemo(() => quotaInfo?.usage.dailyHistory ?? [], [quotaInfo?.usage.dailyHistory]);
|
|
147
|
+
const availableYears = useMemo(() => {
|
|
148
|
+
const years = new Set([currentYear]);
|
|
149
|
+
for (const point of dailyHistory) {
|
|
150
|
+
const date = parseUsageDate(point.date);
|
|
151
|
+
if (date)
|
|
152
|
+
years.add(date.getUTCFullYear());
|
|
153
|
+
}
|
|
154
|
+
return Array.from(years).sort((a, b) => b - a);
|
|
155
|
+
}, [dailyHistory, currentYear]);
|
|
156
|
+
useEffect(() => {
|
|
157
|
+
if (availableYears.length === 0)
|
|
158
|
+
return;
|
|
159
|
+
if (!availableYears.includes(selectedYear))
|
|
160
|
+
setSelectedYear(availableYears[0]);
|
|
161
|
+
}, [availableYears, selectedYear]);
|
|
162
|
+
const dailyChartPoints = useMemo(() => {
|
|
163
|
+
const daysInMonth = new Date(selectedYear, selectedMonth + 1, 0).getDate();
|
|
164
|
+
const pointsByDay = new Map();
|
|
165
|
+
for (let day = 1; day <= daysInMonth; day += 1) {
|
|
166
|
+
pointsByDay.set(day, { day, tokens: 0, images: 0, cost: 0 });
|
|
167
|
+
}
|
|
168
|
+
for (const point of dailyHistory) {
|
|
169
|
+
const date = parseUsageDate(point.date);
|
|
170
|
+
if (!date)
|
|
171
|
+
continue;
|
|
172
|
+
const year = date.getUTCFullYear();
|
|
173
|
+
const month = date.getUTCMonth();
|
|
174
|
+
const day = date.getUTCDate();
|
|
175
|
+
if (year !== selectedYear || month !== selectedMonth)
|
|
176
|
+
continue;
|
|
177
|
+
const existing = pointsByDay.get(day);
|
|
178
|
+
if (!existing)
|
|
179
|
+
continue;
|
|
180
|
+
existing.tokens += point.tokens ?? 0;
|
|
181
|
+
existing.images += point.images ?? 0;
|
|
182
|
+
existing.cost += point.cost ?? 0;
|
|
183
|
+
}
|
|
184
|
+
return Array.from(pointsByDay.values()).sort((a, b) => a.day - b.day);
|
|
185
|
+
}, [dailyHistory, selectedMonth, selectedYear]);
|
|
186
|
+
const selectedMonthTotals = useMemo(() => dailyChartPoints.reduce((acc, point) => {
|
|
187
|
+
acc.tokens += point.tokens;
|
|
188
|
+
acc.images += point.images;
|
|
189
|
+
acc.cost += point.cost;
|
|
190
|
+
return acc;
|
|
191
|
+
}, { tokens: 0, images: 0, cost: 0 }), [dailyChartPoints]);
|
|
6
192
|
const formatQuotaPercentage = (used, limit) => {
|
|
7
193
|
if (!limit || limit === 0 || limit === -1)
|
|
8
194
|
return "No limit";
|
|
@@ -39,10 +225,13 @@ export function QuotaInfo() {
|
|
|
39
225
|
return 0;
|
|
40
226
|
return Math.min(100, (used / limit) * 100);
|
|
41
227
|
};
|
|
228
|
+
const adminScopePanel = isAdministrator ? (_jsxs("div", { className: "rounded-lg border border-gray-200 bg-white p-4", "data-testid": "quota-admin-scope-panel", children: [_jsx("h3", { className: "mb-3 text-lg font-semibold text-gray-800", children: "Usage Scope" }), _jsxs("div", { className: "grid gap-3 sm:grid-cols-2", children: [_jsxs("div", { children: [_jsx("label", { htmlFor: "quota-scope-select", className: "mb-1 block text-sm font-medium text-gray-500", children: "View" }), _jsxs("select", { id: "quota-scope-select", value: selectedScope, onChange: (event) => setSelectedScope(event.target.value), className: "w-full rounded border border-gray-200 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none", "data-testid": "quota-scope-select", children: [_jsx("option", { value: "me", children: "Me" }), _jsx("option", { value: "all", children: "All users" }), _jsx("option", { value: "user", children: "Select user" })] })] }), selectedScope === "user" && (_jsxs("div", { children: [_jsx("label", { htmlFor: "quota-user-select", className: "mb-1 block text-sm font-medium text-gray-500", children: "User" }), _jsxs("select", { id: "quota-user-select", value: selectedUserName, onChange: (event) => setSelectedUserName(event.target.value), className: "w-full rounded border border-gray-200 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none", "data-testid": "quota-user-select", children: [availableQuotaUsers.length === 0 && (_jsx("option", { value: "", children: "No users available" })), availableQuotaUsers.map((user) => (_jsxs("option", { value: user.userName, children: [user.displayName, " (", user.userName, ")"] }, user.userName)))] })] }))] }), scopeError && (_jsx("p", { className: "mt-3 text-xs text-red-600", "data-testid": "quota-scope-error", children: scopeError }))] })) : null;
|
|
42
229
|
if (!quotaInfo) {
|
|
43
|
-
return (
|
|
230
|
+
return (_jsxs("div", { className: "space-y-6 p-4", "data-testid": "quota-info-section", children: [adminScopePanel, _jsx("div", { className: "rounded-lg border border-gray-200 bg-white p-4", children: _jsx("p", { className: "text-gray-600", children: isLoadingScopedQuota
|
|
231
|
+
? "Loading quota information..."
|
|
232
|
+
: "No quota information available" }) })] }));
|
|
44
233
|
}
|
|
45
|
-
return (_jsxs("div", { className: "space-y-6 p-4", children: [_jsxs("div", { className: "rounded-lg border border-gray-200 bg-white p-4", children: [_jsx("h3", { className: "mb-3 text-lg font-semibold text-gray-800", children: "Token Usage" }), _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsx("label", { className: "text-sm font-medium text-gray-500", children: "Total Usage" }), _jsxs("span", { className: "text-sm text-gray-600", children: [quotaInfo.usage.totalTokens.toLocaleString(), " /", " ", quotaInfo.limits.totalTokens &&
|
|
234
|
+
return (_jsxs("div", { className: "space-y-6 p-4", "data-testid": "quota-info-section", children: [adminScopePanel, _jsxs("div", { className: "rounded-lg border border-gray-200 bg-white p-4", children: [_jsx("h3", { className: "mb-3 text-lg font-semibold text-gray-800", children: "Token Usage" }), _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsx("label", { className: "text-sm font-medium text-gray-500", children: "Total Usage" }), _jsxs("span", { className: "text-sm text-gray-600", children: [quotaInfo.usage.totalTokens.toLocaleString(), " /", " ", quotaInfo.limits.totalTokens &&
|
|
46
235
|
quotaInfo.limits.totalTokens > 0
|
|
47
236
|
? quotaInfo.limits.totalTokens.toLocaleString()
|
|
48
237
|
: "∞"] })] }), quotaInfo.limits.totalTokens &&
|
|
@@ -94,7 +283,16 @@ export function QuotaInfo() {
|
|
|
94
283
|
width: `${getProgressWidth(quotaInfo.usage.dailyImages, quotaInfo.limits.dailyImages)}%`,
|
|
95
284
|
} }) })), _jsx("p", { className: "mt-1 text-xs text-gray-500", children: quotaInfo.limits.dailyImages === -1
|
|
96
285
|
? "No daily limit"
|
|
97
|
-
: `${formatQuotaPercentage(quotaInfo.usage.dailyImages, quotaInfo.limits.dailyImages)} used today` })] })] })] }), _jsxs("div", { className: "rounded-lg border border-gray-200 bg-white p-4", children: [
|
|
286
|
+
: `${formatQuotaPercentage(quotaInfo.usage.dailyImages, quotaInfo.limits.dailyImages)} used today` })] })] })] }), _jsxs("div", { className: "rounded-lg border border-gray-200 bg-white p-4", "data-testid": "quota-daily-usage-chart", children: [_jsxs("div", { className: "mb-3 flex flex-wrap items-center justify-between gap-3", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-lg font-semibold text-gray-800", children: "Daily Usage Chart" }), _jsx("p", { className: "text-xs text-gray-500", children: "Month/year switchable daily usage across tokens, images, and cost." })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("label", { className: "sr-only", htmlFor: "quota-usage-month", children: "Select month" }), _jsx("select", { id: "quota-usage-month", value: selectedMonth, onChange: (event) => setSelectedMonth(Number(event.target.value)), className: "rounded border border-gray-200 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none", "data-testid": "quota-usage-month-select", children: MONTH_NAMES.map((monthName, index) => (_jsx("option", { value: index, children: monthName }, monthName))) }), _jsx("label", { className: "sr-only", htmlFor: "quota-usage-year", children: "Select year" }), _jsx("select", { id: "quota-usage-year", value: selectedYear, onChange: (event) => setSelectedYear(Number(event.target.value)), className: "rounded border border-gray-200 px-3 py-2 text-sm focus:border-blue-500 focus:outline-none", "data-testid": "quota-usage-year-select", children: availableYears.map((year) => (_jsx("option", { value: year, children: year }, year))) })] })] }), _jsxs("div", { className: "mb-4 grid gap-3 sm:grid-cols-3", children: [_jsxs("div", { className: "rounded border border-blue-100 bg-blue-50 p-3", children: [_jsx("p", { className: "text-xs font-medium uppercase tracking-wide text-blue-700", children: "Tokens this month" }), _jsx("p", { className: "mt-1 text-lg font-semibold text-blue-900", children: selectedMonthTotals.tokens.toLocaleString() })] }), _jsxs("div", { className: "rounded border border-purple-100 bg-purple-50 p-3", children: [_jsx("p", { className: "text-xs font-medium uppercase tracking-wide text-purple-700", children: "Images this month" }), _jsx("p", { className: "mt-1 text-lg font-semibold text-purple-900", children: selectedMonthTotals.images.toLocaleString() })] }), _jsxs("div", { className: "rounded border border-emerald-100 bg-emerald-50 p-3", children: [_jsx("p", { className: "text-xs font-medium uppercase tracking-wide text-emerald-700", children: "Cost this month" }), _jsxs("p", { className: "mt-1 text-lg font-semibold text-emerald-900", children: ["$", selectedMonthTotals.cost.toFixed(2)] })] })] }), _jsxs("div", { className: "space-y-3", children: [_jsx(DailyUsageBarChart, { title: "Tokens / day", unit: "tokens", colorClass: "bg-blue-500", valueFormatter: (value) => value.toLocaleString(), points: dailyChartPoints.map((point) => ({
|
|
287
|
+
day: point.day,
|
|
288
|
+
value: point.tokens,
|
|
289
|
+
})) }), _jsx(DailyUsageBarChart, { title: "Images / day", unit: "images", colorClass: "bg-purple-500", valueFormatter: (value) => value.toLocaleString(), points: dailyChartPoints.map((point) => ({
|
|
290
|
+
day: point.day,
|
|
291
|
+
value: point.images,
|
|
292
|
+
})) }), _jsx(DailyUsageBarChart, { title: "Cost / day", unit: "USD", colorClass: "bg-emerald-500", valueFormatter: (value) => value.toFixed(2), points: dailyChartPoints.map((point) => ({
|
|
293
|
+
day: point.day,
|
|
294
|
+
value: point.cost,
|
|
295
|
+
})) })] }), dailyHistory.length === 0 && (_jsx("p", { className: "mt-3 text-xs text-gray-500", children: "No historical usage payload received yet. The chart will populate as daily usage data is sent from the server." }))] }), _jsxs("div", { className: "rounded-lg border border-gray-200 bg-white p-4", children: [_jsx("h3", { className: "mb-3 text-lg font-semibold text-gray-800", children: "Cost Summary" }), _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("label", { className: "text-sm font-medium text-gray-500", children: "Total (All Time)" }), _jsxs("span", { className: "text-lg font-semibold text-gray-800", children: ["$", (quotaInfo.usage.totalCost ?? 0).toFixed(2)] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("label", { className: "text-sm font-medium text-gray-500", children: "Today" }), _jsxs("span", { className: "text-lg font-semibold text-gray-800", children: ["$", (quotaInfo.usage.dailyCost ?? 0).toFixed(2)] })] })] })] }), _jsxs("div", { className: "rounded-lg border border-gray-200 bg-white p-4", "data-testid": "quota-status-summary", children: [_jsx("h4", { className: "mb-2 text-sm font-medium text-gray-700", children: "Quota Status" }), _jsxs("div", { className: "space-y-1 text-sm", children: [editContext?.isQuotaExceeded && (_jsx("p", { className: "font-medium text-red-600", "data-testid": "quota-exceeded-message", children: "\u26A0\uFE0F Quota limits have been exceeded" })), editContext?.getQuotaWarningMessage &&
|
|
98
296
|
editContext.getQuotaWarningMessage() &&
|
|
99
297
|
!editContext.isQuotaExceeded && (_jsxs("p", { className: "text-orange-600", children: ["\u26A0\uFE0F ", editContext.getQuotaWarningMessage()] })), !editContext?.isQuotaExceeded &&
|
|
100
298
|
!editContext?.getQuotaWarningMessage?.() && (_jsx("p", { className: "text-green-600", children: "\u2705 All quotas are within limits" }))] })] })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuotaInfo.js","sourceRoot":"","sources":["../../../src/editor/settings/QuotaInfo.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QuotaInfo.js","sourceRoot":"","sources":["../../../src/editor/settings/QuotaInfo.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { setupWizardService, } from "../../../setup/services/setupWizardService"
|
|
|
5
5
|
import { AlertCircle, RefreshCw, Settings, Plus } from "lucide-react";
|
|
6
6
|
import { Button } from "../../../components/ui/button";
|
|
7
7
|
import { Card } from "../../../components/ui/card";
|
|
8
|
-
import {
|
|
8
|
+
import { useMediaQuery } from "../../client/hooks/useMediaQuery";
|
|
9
9
|
import { Splitter } from "../../ui/Splitter";
|
|
10
10
|
import { ItemConfigPanel } from "./ItemConfigPanel";
|
|
11
11
|
/**
|
|
@@ -13,7 +13,6 @@ import { ItemConfigPanel } from "./ItemConfigPanel";
|
|
|
13
13
|
* Configure search index and embeddings models.
|
|
14
14
|
*/
|
|
15
15
|
export function SearchConfigPanel() {
|
|
16
|
-
const editContext = useEditContext();
|
|
17
16
|
const [state, setState] = useState("loading");
|
|
18
17
|
const [embeddingsModels, setEmbeddingsModels] = useState([]);
|
|
19
18
|
const [searchSettingsExists, setSearchSettingsExists] = useState(false);
|
|
@@ -24,6 +23,7 @@ export function SearchConfigPanel() {
|
|
|
24
23
|
const [creating, setCreating] = useState(false);
|
|
25
24
|
const previousModelId = useRef("");
|
|
26
25
|
const hasLoaded = useRef(false);
|
|
26
|
+
const isMobile = useMediaQuery("(max-width: 768px)");
|
|
27
27
|
// Sidebar editor state
|
|
28
28
|
const [showEditor, setShowEditor] = useState(false);
|
|
29
29
|
const loadData = useCallback(async () => {
|
|
@@ -134,16 +134,14 @@ export function SearchConfigPanel() {
|
|
|
134
134
|
handleSave,
|
|
135
135
|
searchSettingsExists,
|
|
136
136
|
]);
|
|
137
|
-
const
|
|
138
|
-
setShowEditor(
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
loadData();
|
|
144
|
-
}, [loadData]);
|
|
137
|
+
const handleToggleEditor = () => {
|
|
138
|
+
setShowEditor(!showEditor);
|
|
139
|
+
if (showEditor) {
|
|
140
|
+
loadData();
|
|
141
|
+
}
|
|
142
|
+
};
|
|
145
143
|
// Build the main content
|
|
146
|
-
const mainContent = (_jsx("div", { className: "h-full overflow-auto p-4", children: _jsxs("div", { className: "mx-auto", children: [state === "loading" && (_jsx("div", { className: "flex items-center justify-center py-8", children: _jsxs("div", { className: "flex items-center gap-2 text-sm text-gray-500", children: [_jsx(RefreshCw, { className: "h-4 w-4 animate-spin" }), "Loading..."] }) })), state !== "loading" && !searchSettingsExists && (_jsx(Card, { icon: _jsx(Settings, { strokeWidth: 1, className: "h-5 w-5" }), title: "Search Settings", description: "Create the Search Settings item to configure embeddings model and dimensions.", children: _jsxs("div", { className: "space-y-4", children: [_jsx("p", { className: "text-sm text-gray-600", children: "The Search Settings item contains configuration for the search index, including the embeddings model and vector dimensions." }), _jsx(Button, { onClick: handleCreate, disabled: creating, className: "w-full", children: creating ? (_jsxs(_Fragment, { children: [_jsx(RefreshCw, { strokeWidth: 1, className: "mr-2 h-4 w-4 animate-spin" }), "Creating..."] })) : (_jsxs(_Fragment, { children: [_jsx(Plus, { strokeWidth: 1, className: "mr-2 h-4 w-4" }), "Create Search Settings"] })) }), error && (_jsx("div", { className: "rounded border border-red-200 bg-red-50 p-2 text-xs whitespace-pre-wrap text-red-700", children: error }))] }) })), state !== "loading" && searchSettingsExists && (_jsx("div", { className: "rounded-lg bg-white p-4 md:p-6", children: _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Settings, { strokeWidth: 1, className: "h-5 w-5 text-gray-600" }), _jsx("span", { className: "text-sm font-medium text-gray-700", children: "Search Settings" })] }), searchSettingsItemId && (_jsxs(Button, { size: "sm", variant: showEditor ? "default" : "outline", onClick:
|
|
144
|
+
const mainContent = (_jsx("div", { className: "h-full overflow-auto p-4", children: _jsxs("div", { className: "mx-auto", children: [state === "loading" && (_jsx("div", { className: "flex items-center justify-center py-8", children: _jsxs("div", { className: "flex items-center gap-2 text-sm text-gray-500", children: [_jsx(RefreshCw, { className: "h-4 w-4 animate-spin" }), "Loading..."] }) })), state !== "loading" && !searchSettingsExists && (_jsx(Card, { icon: _jsx(Settings, { strokeWidth: 1, className: "h-5 w-5" }), title: "Search Settings", description: "Create the Search Settings item to configure embeddings model and dimensions.", children: _jsxs("div", { className: "space-y-4", children: [_jsx("p", { className: "text-sm text-gray-600", children: "The Search Settings item contains configuration for the search index, including the embeddings model and vector dimensions." }), _jsx(Button, { onClick: handleCreate, disabled: creating, className: "w-full", children: creating ? (_jsxs(_Fragment, { children: [_jsx(RefreshCw, { strokeWidth: 1, className: "mr-2 h-4 w-4 animate-spin" }), "Creating..."] })) : (_jsxs(_Fragment, { children: [_jsx(Plus, { strokeWidth: 1, className: "mr-2 h-4 w-4" }), "Create Search Settings"] })) }), error && (_jsx("div", { className: "rounded border border-red-200 bg-red-50 p-2 text-xs whitespace-pre-wrap text-red-700", children: error }))] }) })), state !== "loading" && searchSettingsExists && (_jsx("div", { className: "rounded-lg bg-white p-4 md:p-6", children: _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-4", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Settings, { strokeWidth: 1, className: "h-5 w-5 text-gray-600" }), _jsx("span", { className: "text-sm font-medium text-gray-700", children: "Search Settings" })] }), searchSettingsItemId && (_jsxs(Button, { size: "sm", variant: showEditor ? "default" : "outline", onClick: handleToggleEditor, className: "shrink-0", children: [_jsx(Settings, { className: "h-4 w-4", strokeWidth: 1.5 }), "Edit Settings"] }))] }), embeddingsModels.length === 0 && (_jsx("div", { className: "rounded border border-yellow-200 bg-yellow-50 p-4", children: _jsxs("div", { className: "flex items-start gap-3", children: [_jsx(AlertCircle, { className: "mt-0.5 h-5 w-5 shrink-0 text-yellow-600" }), _jsxs("div", { className: "flex-1", children: [_jsx("p", { className: "mb-1 text-sm font-medium text-yellow-800", children: "No embeddings models found" }), _jsx("p", { className: "mb-3 text-xs text-yellow-700", children: "Please install embeddings models in the model settings page." })] })] }) })), embeddingsModels.length > 0 && (_jsxs("div", { className: "space-y-2", children: [_jsx("label", { htmlFor: "embeddings-model", className: "mb-1 block text-sm font-medium text-gray-700", children: "Embeddings Model" }), _jsx(Select, { id: "embeddings-model", value: selectedModelId, onValueChange: setSelectedModelId, options: embeddingsModels.map((model) => ({
|
|
147
145
|
value: model.id,
|
|
148
146
|
label: `${model.name}${model.providerName ? ` (${model.providerName})` : ""}`,
|
|
149
147
|
})), placeholder: "Select...", disabled: saving }), saving && (_jsxs("div", { className: "flex items-center gap-2 text-xs text-gray-500", children: [_jsx(RefreshCw, { className: "h-3 w-3 animate-spin" }), "Saving..."] }))] })), error && (_jsx("div", { className: "rounded border border-red-200 bg-red-50 p-2 text-xs whitespace-pre-wrap text-red-700", children: error }))] }) }))] }) }));
|
|
@@ -159,7 +157,7 @@ export function SearchConfigPanel() {
|
|
|
159
157
|
{
|
|
160
158
|
name: "search-settings-editor",
|
|
161
159
|
defaultSize: 400,
|
|
162
|
-
content: (_jsx(ItemConfigPanel, { itemId: searchSettingsItemId, title: "Search Settings", onClose:
|
|
160
|
+
content: (_jsx(ItemConfigPanel, { itemId: searchSettingsItemId, title: "Search Settings", onClose: handleToggleEditor }, searchSettingsItemId)),
|
|
163
161
|
className: "overflow-hidden",
|
|
164
162
|
},
|
|
165
163
|
]
|
|
@@ -171,7 +169,7 @@ export function SearchConfigPanel() {
|
|
|
171
169
|
className: "overflow-hidden",
|
|
172
170
|
},
|
|
173
171
|
];
|
|
174
|
-
return (_jsx(Splitter, { panels: panels, localStorageKey: "search-config-panel-splitter", direction: "horizontal", className: "h-full" }));
|
|
172
|
+
return (_jsx(Splitter, { panels: panels, localStorageKey: "search-config-panel-splitter", direction: isMobile ? "vertical" : "horizontal", className: "h-full" }));
|
|
175
173
|
}
|
|
176
174
|
export default SearchConfigPanel;
|
|
177
175
|
//# sourceMappingURL=SearchConfigPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchConfigPanel.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/SearchConfigPanel.tsx"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"SearchConfigPanel.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/SearchConfigPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,8 @@ import { useState, useEffect, useCallback, useRef } from "react";
|
|
|
4
4
|
* Returns the state, any issues found, and a recheck function.
|
|
5
5
|
*/
|
|
6
6
|
export function useStartupChecks(statusChecks) {
|
|
7
|
-
|
|
7
|
+
// Start in loading so the startup spinner appears immediately on first render.
|
|
8
|
+
const [state, setState] = useState("loading");
|
|
8
9
|
const [issues, setIssues] = useState([]);
|
|
9
10
|
const hasRun = useRef(false);
|
|
10
11
|
// Filter to only blocking checks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStartupChecks.js","sourceRoot":"","sources":["../../../../src/editor/settings/status/useStartupChecks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAgBjE;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,YAAuC;IAEvC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAoB,
|
|
1
|
+
{"version":3,"file":"useStartupChecks.js","sourceRoot":"","sources":["../../../../src/editor/settings/status/useStartupChecks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAgBjE;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,YAAuC;IAEvC,+EAA+E;IAC/E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAoB,SAAS,CAAC,CAAC;IACjE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAsB,EAAE,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE7B,iCAAiC;IACjC,MAAM,cAAc,GAAG,YAAY,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAE/E,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACvC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACrB,SAAS,CAAC,EAAE,CAAC,CAAC;YACd,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEpB,sCAAsC;QACtC,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACvD,IAAI,CAAC;gBACH,OAAO,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;YAC7B,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,OAAO;oBACL;wBACE,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,QAAQ;wBACvB,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,eAAe;wBACnC,WAAW,EAAE,CAAC,EAAE,OAAO,IAAI,oCAAoC;wBAC/D,QAAQ,EAAE,OAAgB;qBAC3B;iBACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAEjC,SAAS,CAAC,SAAS,CAAC,CAAC;QACrB,QAAQ,CAAC,UAAU,CAAC,CAAC;IACvB,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,kCAAkC;IAClC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAClD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,SAAS,EAAE,CAAC;QACd,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;IAE9B,OAAO;QACL,KAAK;QACL,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC;QACnE,MAAM;QACN,OAAO,EAAE,SAAS;KACnB,CAAC;AACJ,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { getComponentCommands } from "../commands/componentCommands";
|
|
|
6
6
|
import ConfirmationDialog from "../ConfirmationDialog";
|
|
7
7
|
import { PerfectTree } from "../ui/PerfectTree";
|
|
8
8
|
import { isValidPlaceholder } from "../componentTreeHelper";
|
|
9
|
-
import {
|
|
9
|
+
import { buildInsertMenuItems, getVisibleInsertOptions, } from "../insertMenuItems";
|
|
10
10
|
import { Plus, LayoutTemplate, Pentagon, Folder, Square, ChevronRight, Circle, File, Home, } from "lucide-react";
|
|
11
11
|
import { SimpleIconButton } from "../ui/SimpleIconButton";
|
|
12
12
|
import { Spinner } from "../ui/Spinner";
|
|
@@ -82,11 +82,23 @@ export function ComponentTree({}) {
|
|
|
82
82
|
useEffect(() => {
|
|
83
83
|
if (editContext?.selection && editContext.selection.length > 0) {
|
|
84
84
|
setSelectedKeys(editContext.selection);
|
|
85
|
+
return;
|
|
85
86
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
// Keep non-component tree selection (e.g. placeholder) when editor selection is empty.
|
|
88
|
+
// This allows users to click and work with placeholders without being reset to "page".
|
|
89
|
+
setSelectedKeys((prev) => {
|
|
90
|
+
if (prev.length === 1) {
|
|
91
|
+
const current = prev[0];
|
|
92
|
+
if (current) {
|
|
93
|
+
const node = nodeDictionary[current];
|
|
94
|
+
if (node && node.type !== "component") {
|
|
95
|
+
return prev;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return ["page"];
|
|
100
|
+
});
|
|
101
|
+
}, [editContext?.selection, nodeDictionary]);
|
|
90
102
|
const selection = editContext?.selection || [];
|
|
91
103
|
const page = editContext?.page;
|
|
92
104
|
useEffect(() => {
|
|
@@ -417,6 +429,7 @@ export function ComponentTree({}) {
|
|
|
417
429
|
else {
|
|
418
430
|
newKeys = [key];
|
|
419
431
|
}
|
|
432
|
+
setSelectedKeys(newKeys);
|
|
420
433
|
const selectedComponentIds = Array.from(new Set(newKeys
|
|
421
434
|
.filter((k) => nodeDictionary[k]?.type === "component")
|
|
422
435
|
.map((k) => nodeDictionary[k].componentId)));
|
|
@@ -463,28 +476,21 @@ export function ComponentTree({}) {
|
|
|
463
476
|
// Check if we have a placeholder to add insert options
|
|
464
477
|
const placeholder = getPlaceholder(nodeDictionary[node.key] || null);
|
|
465
478
|
if (placeholder && placeholder.insertOptions) {
|
|
466
|
-
const insertOptions = placeholder.insertOptions
|
|
467
|
-
|
|
468
|
-
.
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
command: async () => {
|
|
473
|
-
await editContextRef.current?.operations.addComponent(x.typeId, placeholder.key, 0, // Insert at the beginning by default
|
|
474
|
-
editContextRef.current?.currentItemDescriptor);
|
|
475
|
-
},
|
|
476
|
-
}));
|
|
477
|
-
if (insertOptions.length > 0) {
|
|
479
|
+
const insertOptions = getVisibleInsertOptions(placeholder.insertOptions);
|
|
480
|
+
const insertMenuItems = buildInsertMenuItems(insertOptions, async (x) => {
|
|
481
|
+
await editContextRef.current?.operations.addComponent(x.typeId, placeholder.key, 0, // Insert at the beginning by default
|
|
482
|
+
editContextRef.current?.currentItemDescriptor);
|
|
483
|
+
});
|
|
484
|
+
if (insertMenuItems.length > 0) {
|
|
478
485
|
// Add separator if there are existing menu items
|
|
479
486
|
if (menu.length > 0) {
|
|
480
487
|
menu.push({ id: "separator-insert", separator: true });
|
|
481
488
|
}
|
|
482
|
-
// Add insert submenu
|
|
483
489
|
menu.push({
|
|
484
490
|
id: "insert",
|
|
485
491
|
label: "Insert",
|
|
486
492
|
icon: _jsx(Plus, { size: 16 }),
|
|
487
|
-
items:
|
|
493
|
+
items: insertMenuItems,
|
|
488
494
|
});
|
|
489
495
|
}
|
|
490
496
|
}
|
|
@@ -756,7 +762,7 @@ export function ComponentTree({}) {
|
|
|
756
762
|
editContext.mode !== "edit", onClick: toggleInsertMode }) }), _jsx("div", { className: "flex items-center gap-1", children: _jsx(SimpleIconButton, { icon: _jsx(LayoutTemplate, { strokeWidth: 1, className: "h-4 w-4" }), label: editContext?.showLayoutComponents ? "Hide layout" : "Show layout", size: "small", selected: editContext?.showLayoutComponents, "data-testid": "component-tree-toggle-layout", onClick: () => editContext?.setShowLayoutComponents(!editContext.showLayoutComponents) }) })] }), _jsx("div", { className: "flex-1 p-2", ref: treeRef, "data-testid": "component-tree", children: _jsx(PerfectTree, { nodes: rootNodes, isDragging: !!editContext?.dragObject, multiDragNoun: "components", selectedKeys: selectedItems, expandedKeys: expandedItems, onToggleExpand: handleToggle, onSelect: handleTreeSelection, onContextMenu: handleTreeContextMenu, enableDragAndDrop: true, onDragOverZone: handleDragOverZone, isValidDropZone: handleIsValidDropZone, onStartDrag: handleStartDrag, onDragEnd: handleDragEnd, onDrop: handleDropZone, renderNode: (node) => renderNode(node) }) }), _jsx(ConfirmationDialog, { ref: confirmDialogRef })] }));
|
|
757
763
|
}
|
|
758
764
|
function renderNode(node) {
|
|
759
|
-
return (_jsx("div", { className: `component-tree-node ${node.type ? `component-tree-${node.type}` : ""}`, "data-component-node": node.type === "component" ? "true" : undefined, children: _jsxs("div", { className: "flex items-center gap-2 text-[12px] text-gray-600", children: [typeof node.icon === "string" ? (_jsx("i", { className: node.icon })) : (node.icon), _jsx("span", { className: node.className, children: node.label }), node.tags?.map((x) => (_jsx("div", { children: _jsxs("span", { id: `id-${node.key}-${x.id}`, className: "ml-2 flex rounded p-0.5 px-1.5 text-xs text-white", style: {
|
|
765
|
+
return (_jsx("div", { className: `component-tree-node ${node.type ? `component-tree-${node.type}` : ""}`, "data-component-node": node.type === "component" ? "true" : undefined, "data-testid": "component-tree-node", "data-component-key": node.key, "data-component-type": node.type, children: _jsxs("div", { className: "flex items-center gap-2 text-[12px] text-gray-600", children: [typeof node.icon === "string" ? (_jsx("i", { className: node.icon })) : (node.icon), _jsx("span", { className: node.className, "data-testid": "component-tree-node-label", children: node.label }), node.tags?.map((x) => (_jsx("div", { children: _jsxs("span", { id: `id-${node.key}-${x.id}`, className: "ml-2 flex rounded p-0.5 px-1.5 text-xs text-white", style: {
|
|
760
766
|
backgroundColor: x.color,
|
|
761
767
|
marginLeft: "8px",
|
|
762
768
|
fontSize: "10px",
|