@umodeapporg/ui 0.22.3 → 0.23.0
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/assets/umode-ui.css +105 -0
- package/dist/components/UI/Flow/FlowBlockNode.d.ts +35 -0
- package/dist/components/UI/Flow/FlowBlockNode.js +84 -0
- package/dist/components/UI/Flow/FlowBlockNode.js.map +1 -0
- package/dist/components/UI/Flow/FlowCanvas.d.ts +22 -0
- package/dist/components/UI/Flow/FlowCanvas.js +263 -0
- package/dist/components/UI/Flow/FlowCanvas.js.map +1 -0
- package/dist/components/UI/Flow/FlowConnectionEdge.d.ts +10 -0
- package/dist/components/UI/Flow/FlowConnectionEdge.js +54 -0
- package/dist/components/UI/Flow/FlowConnectionEdge.js.map +1 -0
- package/dist/components/UI/Flow/FlowEditorProvider.d.ts +17 -0
- package/dist/components/UI/Flow/FlowEditorProvider.js +27 -0
- package/dist/components/UI/Flow/FlowEditorProvider.js.map +1 -0
- package/dist/components/UI/Flow/FlowInspector.d.ts +11 -0
- package/dist/components/UI/Flow/FlowInspector.js +124 -0
- package/dist/components/UI/Flow/FlowInspector.js.map +1 -0
- package/dist/components/UI/Flow/FlowIssueList.d.ts +8 -0
- package/dist/components/UI/Flow/FlowIssueList.js +55 -0
- package/dist/components/UI/Flow/FlowIssueList.js.map +1 -0
- package/dist/components/UI/Flow/FlowLaneMap.d.ts +30 -0
- package/dist/components/UI/Flow/FlowLaneMap.js +206 -0
- package/dist/components/UI/Flow/FlowLaneMap.js.map +1 -0
- package/dist/components/UI/Flow/FlowNodeShell.d.ts +20 -0
- package/dist/components/UI/Flow/FlowNodeShell.js +81 -0
- package/dist/components/UI/Flow/FlowNodeShell.js.map +1 -0
- package/dist/components/UI/Flow/FlowPalette.d.ts +7 -0
- package/dist/components/UI/Flow/FlowPalette.js +90 -0
- package/dist/components/UI/Flow/FlowPalette.js.map +1 -0
- package/dist/components/UI/Flow/FlowResizablePanel.d.ts +20 -0
- package/dist/components/UI/Flow/FlowResizablePanel.js +117 -0
- package/dist/components/UI/Flow/FlowResizablePanel.js.map +1 -0
- package/dist/components/UI/Flow/FlowZoomControls.d.ts +12 -0
- package/dist/components/UI/Flow/FlowZoomControls.js +53 -0
- package/dist/components/UI/Flow/FlowZoomControls.js.map +1 -0
- package/dist/components/UI/Flow/flowBlockRegistry.d.ts +12 -0
- package/dist/components/UI/Flow/flowBlockRegistry.js +15 -0
- package/dist/components/UI/Flow/flowBlockRegistry.js.map +1 -0
- package/dist/components/UI/Flow/flowConstants.d.ts +2 -0
- package/dist/components/UI/Flow/flowConstants.js +5 -0
- package/dist/components/UI/Flow/flowConstants.js.map +1 -0
- package/dist/components/UI/Flow/flowEditorStore.d.ts +44 -0
- package/dist/components/UI/Flow/flowEditorStore.js +258 -0
- package/dist/components/UI/Flow/flowEditorStore.js.map +1 -0
- package/dist/components/UI/Flow/flowGraph.d.ts +32 -0
- package/dist/components/UI/Flow/flowGraph.js +156 -0
- package/dist/components/UI/Flow/flowGraph.js.map +1 -0
- package/dist/components/UI/Flow/flowTypes.d.ts +74 -0
- package/dist/components/UI/Flow/flowTypes.js +2 -0
- package/dist/components/UI/Flow/flowTypes.js.map +1 -0
- package/dist/components/UI/Flow/index.d.ts +14 -0
- package/dist/components/UI/Flow/index.js +43 -0
- package/dist/components/UI/Flow/index.js.map +1 -0
- package/dist/components/UI/Flow/useFlowLabels.d.ts +10 -0
- package/dist/components/UI/Flow/useFlowLabels.js +51 -0
- package/dist/components/UI/Flow/useFlowLabels.js.map +1 -0
- package/dist/locales/en/ui.json.d.ts +67 -0
- package/dist/locales/en/ui.json.js +3 -0
- package/dist/locales/en/ui.json.js.map +1 -1
- package/dist/locales/index.d.ts +134 -0
- package/dist/locales/pt/ui.json.d.ts +67 -0
- package/dist/locales/pt/ui.json.js +3 -0
- package/dist/locales/pt/ui.json.js.map +1 -1
- package/package.json +10 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { createFlowBlockRegistry, defineFlowBlock } from "./flowBlockRegistry.js";
|
|
2
|
+
import { default as default2 } from "./FlowCanvas.js";
|
|
3
|
+
import { FLOW_BLOCK_DRAG_TYPE } from "./flowConstants.js";
|
|
4
|
+
import { default as default3, useFlowBlockRegistry, useFlowEditor, useFlowEditorStore } from "./FlowEditorProvider.js";
|
|
5
|
+
import { createFlowEditorStore } from "./flowEditorStore.js";
|
|
6
|
+
import { FLOW_LEVEL_GAP, FLOW_SIBLING_GAP, canConnect, findCycle, hasBlockingIssues, hasSavedPositions, layoutFlowByLevels, reachableFrom, triggerNodesOf, validateFlowGraph } from "./flowGraph.js";
|
|
7
|
+
import { default as default4 } from "./FlowInspector.js";
|
|
8
|
+
import { default as default5 } from "./FlowIssueList.js";
|
|
9
|
+
import { default as default6 } from "./FlowLaneMap.js";
|
|
10
|
+
import { default as default7 } from "./FlowNodeShell.js";
|
|
11
|
+
import { default as default8 } from "./FlowPalette.js";
|
|
12
|
+
import { default as default9 } from "./FlowResizablePanel.js";
|
|
13
|
+
import { FLOW_RUN_STATUS_TONE, useFlowLabels } from "./useFlowLabels.js";
|
|
14
|
+
export {
|
|
15
|
+
FLOW_BLOCK_DRAG_TYPE,
|
|
16
|
+
FLOW_LEVEL_GAP,
|
|
17
|
+
FLOW_RUN_STATUS_TONE,
|
|
18
|
+
FLOW_SIBLING_GAP,
|
|
19
|
+
default2 as FlowCanvas,
|
|
20
|
+
default3 as FlowEditorProvider,
|
|
21
|
+
default4 as FlowInspector,
|
|
22
|
+
default5 as FlowIssueList,
|
|
23
|
+
default6 as FlowLaneMap,
|
|
24
|
+
default7 as FlowNodeShell,
|
|
25
|
+
default8 as FlowPalette,
|
|
26
|
+
default9 as FlowResizablePanel,
|
|
27
|
+
canConnect,
|
|
28
|
+
createFlowBlockRegistry,
|
|
29
|
+
createFlowEditorStore,
|
|
30
|
+
defineFlowBlock,
|
|
31
|
+
findCycle,
|
|
32
|
+
hasBlockingIssues,
|
|
33
|
+
hasSavedPositions,
|
|
34
|
+
layoutFlowByLevels,
|
|
35
|
+
reachableFrom,
|
|
36
|
+
triggerNodesOf,
|
|
37
|
+
useFlowBlockRegistry,
|
|
38
|
+
useFlowEditor,
|
|
39
|
+
useFlowEditorStore,
|
|
40
|
+
useFlowLabels,
|
|
41
|
+
validateFlowGraph
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TChipTone } from '../Chips/chipTones';
|
|
2
|
+
import { IFlowIssue, TFlowBlockCategory, TFlowPortId, TFlowRunStepStatus } from './flowTypes';
|
|
3
|
+
export declare const FLOW_RUN_STATUS_TONE: Record<TFlowRunStepStatus, TChipTone>;
|
|
4
|
+
/** Every label the flow UI shows, spelled as literal keys so the translation tooling can read them. */
|
|
5
|
+
export declare const useFlowLabels: () => {
|
|
6
|
+
ports: Record<TFlowPortId, string>;
|
|
7
|
+
categories: Record<TFlowBlockCategory, string>;
|
|
8
|
+
runStatus: Record<TFlowRunStepStatus, string>;
|
|
9
|
+
issueMessage: (issue: IFlowIssue) => string;
|
|
10
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { useTranslation } from "react-i18next";
|
|
3
|
+
const FLOW_RUN_STATUS_TONE = {
|
|
4
|
+
passed: "success",
|
|
5
|
+
wouldRun: "info",
|
|
6
|
+
skipped: "neutral",
|
|
7
|
+
blocked: "warning",
|
|
8
|
+
failed: "danger",
|
|
9
|
+
error: "danger"
|
|
10
|
+
};
|
|
11
|
+
const useFlowLabels = () => {
|
|
12
|
+
const { t } = useTranslation("ui");
|
|
13
|
+
return useMemo(() => {
|
|
14
|
+
const ports = {
|
|
15
|
+
next: t("flow.ports.next"),
|
|
16
|
+
true: t("flow.ports.true"),
|
|
17
|
+
false: t("flow.ports.false"),
|
|
18
|
+
error: t("flow.ports.error")
|
|
19
|
+
};
|
|
20
|
+
const categories = {
|
|
21
|
+
trigger: t("flow.categories.trigger"),
|
|
22
|
+
condition: t("flow.categories.condition"),
|
|
23
|
+
action: t("flow.categories.action")
|
|
24
|
+
};
|
|
25
|
+
const runStatus = {
|
|
26
|
+
passed: t("flow.run.passed"),
|
|
27
|
+
failed: t("flow.run.failed"),
|
|
28
|
+
skipped: t("flow.run.skipped"),
|
|
29
|
+
wouldRun: t("flow.run.wouldRun"),
|
|
30
|
+
error: t("flow.run.error"),
|
|
31
|
+
blocked: t("flow.run.blocked")
|
|
32
|
+
};
|
|
33
|
+
const graphIssues = {
|
|
34
|
+
missingTrigger: t("flow.issues.missingTrigger"),
|
|
35
|
+
multipleTriggers: t("flow.issues.multipleTriggers"),
|
|
36
|
+
unknownBlock: t("flow.issues.unknownBlock"),
|
|
37
|
+
unreachableNode: t("flow.issues.unreachableNode"),
|
|
38
|
+
multipleInputs: t("flow.issues.multipleInputs"),
|
|
39
|
+
portFanOut: t("flow.issues.portFanOut"),
|
|
40
|
+
cycle: t("flow.issues.cycle"),
|
|
41
|
+
missingTrueBranch: t("flow.issues.missingTrueBranch")
|
|
42
|
+
};
|
|
43
|
+
const issueMessage = (issue) => issue.message ?? graphIssues[issue.code] ?? issue.code;
|
|
44
|
+
return { ports, categories, runStatus, issueMessage };
|
|
45
|
+
}, [t]);
|
|
46
|
+
};
|
|
47
|
+
export {
|
|
48
|
+
FLOW_RUN_STATUS_TONE,
|
|
49
|
+
useFlowLabels
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=useFlowLabels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFlowLabels.js","sources":["../../../../src/components/UI/Flow/useFlowLabels.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { TChipTone } from '@/components/UI/Chips/chipTones';\n\nimport type { IFlowIssue, TFlowBlockCategory, TFlowGraphIssueCode, TFlowPortId, TFlowRunStepStatus } from './flowTypes';\n\nexport const FLOW_RUN_STATUS_TONE: Record<TFlowRunStepStatus, TChipTone> = {\n passed: 'success',\n wouldRun: 'info',\n skipped: 'neutral',\n blocked: 'warning',\n failed: 'danger',\n error: 'danger',\n};\n\n/** Every label the flow UI shows, spelled as literal keys so the translation tooling can read them. */\nexport const useFlowLabels = () => {\n const { t } = useTranslation('ui');\n\n return useMemo(() => {\n const ports: Record<TFlowPortId, string> = {\n next: t('flow.ports.next'),\n true: t('flow.ports.true'),\n false: t('flow.ports.false'),\n error: t('flow.ports.error'),\n };\n const categories: Record<TFlowBlockCategory, string> = {\n trigger: t('flow.categories.trigger'),\n condition: t('flow.categories.condition'),\n action: t('flow.categories.action'),\n };\n const runStatus: Record<TFlowRunStepStatus, string> = {\n passed: t('flow.run.passed'),\n failed: t('flow.run.failed'),\n skipped: t('flow.run.skipped'),\n wouldRun: t('flow.run.wouldRun'),\n error: t('flow.run.error'),\n blocked: t('flow.run.blocked'),\n };\n const graphIssues: Record<TFlowGraphIssueCode, string> = {\n missingTrigger: t('flow.issues.missingTrigger'),\n multipleTriggers: t('flow.issues.multipleTriggers'),\n unknownBlock: t('flow.issues.unknownBlock'),\n unreachableNode: t('flow.issues.unreachableNode'),\n multipleInputs: t('flow.issues.multipleInputs'),\n portFanOut: t('flow.issues.portFanOut'),\n cycle: t('flow.issues.cycle'),\n missingTrueBranch: t('flow.issues.missingTrueBranch'),\n };\n const issueMessage = (issue: IFlowIssue): string =>\n issue.message ?? graphIssues[issue.code as TFlowGraphIssueCode] ?? issue.code;\n\n return { ports, categories, runStatus, issueMessage };\n }, [t]);\n};\n"],"names":[],"mappings":";;AAOO,MAAM,uBAA8D;AAAA,EACzE,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,OAAO;AACT;AAGO,MAAM,gBAAgB,MAAM;AACjC,QAAM,EAAE,EAAA,IAAM,eAAe,IAAI;AAEjC,SAAO,QAAQ,MAAM;AACnB,UAAM,QAAqC;AAAA,MACzC,MAAM,EAAE,iBAAiB;AAAA,MACzB,MAAM,EAAE,iBAAiB;AAAA,MACzB,OAAO,EAAE,kBAAkB;AAAA,MAC3B,OAAO,EAAE,kBAAkB;AAAA,IAAA;AAE7B,UAAM,aAAiD;AAAA,MACrD,SAAS,EAAE,yBAAyB;AAAA,MACpC,WAAW,EAAE,2BAA2B;AAAA,MACxC,QAAQ,EAAE,wBAAwB;AAAA,IAAA;AAEpC,UAAM,YAAgD;AAAA,MACpD,QAAQ,EAAE,iBAAiB;AAAA,MAC3B,QAAQ,EAAE,iBAAiB;AAAA,MAC3B,SAAS,EAAE,kBAAkB;AAAA,MAC7B,UAAU,EAAE,mBAAmB;AAAA,MAC/B,OAAO,EAAE,gBAAgB;AAAA,MACzB,SAAS,EAAE,kBAAkB;AAAA,IAAA;AAE/B,UAAM,cAAmD;AAAA,MACvD,gBAAgB,EAAE,4BAA4B;AAAA,MAC9C,kBAAkB,EAAE,8BAA8B;AAAA,MAClD,cAAc,EAAE,0BAA0B;AAAA,MAC1C,iBAAiB,EAAE,6BAA6B;AAAA,MAChD,gBAAgB,EAAE,4BAA4B;AAAA,MAC9C,YAAY,EAAE,wBAAwB;AAAA,MACtC,OAAO,EAAE,mBAAmB;AAAA,MAC5B,mBAAmB,EAAE,+BAA+B;AAAA,IAAA;AAEtD,UAAM,eAAe,CAAC,UACpB,MAAM,WAAW,YAAY,MAAM,IAA2B,KAAK,MAAM;AAE3E,WAAO,EAAE,OAAO,YAAY,WAAW,aAAA;AAAA,EACzC,GAAG,CAAC,CAAC,CAAC;AACR;"}
|
|
@@ -216,6 +216,73 @@ declare const _default: {
|
|
|
216
216
|
"keepEditing": "Keep editing",
|
|
217
217
|
"discard": "Discard"
|
|
218
218
|
},
|
|
219
|
+
"flow": {
|
|
220
|
+
"canvas": "Flow editor",
|
|
221
|
+
"resizePanel": "Drag to adjust the width. Double click resets",
|
|
222
|
+
"ports": {
|
|
223
|
+
"next": "Next",
|
|
224
|
+
"true": "Yes",
|
|
225
|
+
"false": "No",
|
|
226
|
+
"error": "Error"
|
|
227
|
+
},
|
|
228
|
+
"categories": {
|
|
229
|
+
"trigger": "Triggers",
|
|
230
|
+
"condition": "Conditions",
|
|
231
|
+
"action": "Actions"
|
|
232
|
+
},
|
|
233
|
+
"palette": {
|
|
234
|
+
"title": "Blocks",
|
|
235
|
+
"search": "Search block",
|
|
236
|
+
"empty": "No block found",
|
|
237
|
+
"limitReached": "This flow already has the maximum of this block"
|
|
238
|
+
},
|
|
239
|
+
"inspector": {
|
|
240
|
+
"title": "Block settings",
|
|
241
|
+
"empty": "Select a block to configure it",
|
|
242
|
+
"label": "Block name",
|
|
243
|
+
"delete": "Delete block",
|
|
244
|
+
"duplicate": "Duplicate block",
|
|
245
|
+
"unknownBlock": "This block type no longer exists",
|
|
246
|
+
"close": "Close"
|
|
247
|
+
},
|
|
248
|
+
"issues": {
|
|
249
|
+
"title": "Issues",
|
|
250
|
+
"none": "No issues",
|
|
251
|
+
"missingTrigger": "The flow needs a trigger",
|
|
252
|
+
"multipleTriggers": "A flow can have only one trigger",
|
|
253
|
+
"unknownBlock": "Block of a type that no longer exists",
|
|
254
|
+
"unreachableNode": "Loose block: no path from the trigger reaches it",
|
|
255
|
+
"multipleInputs": "Block with more than one input",
|
|
256
|
+
"portFanOut": "An output can connect to one block only",
|
|
257
|
+
"cycle": "The blocks form a cycle",
|
|
258
|
+
"missingTrueBranch": "The condition has no yes path"
|
|
259
|
+
},
|
|
260
|
+
"run": {
|
|
261
|
+
"passed": "Passed",
|
|
262
|
+
"failed": "Did not pass",
|
|
263
|
+
"skipped": "Skipped",
|
|
264
|
+
"wouldRun": "Would run",
|
|
265
|
+
"error": "Error",
|
|
266
|
+
"blocked": "Blocked"
|
|
267
|
+
},
|
|
268
|
+
"controls": {
|
|
269
|
+
"zoomIn": "Zoom in",
|
|
270
|
+
"zoomOut": "Zoom out",
|
|
271
|
+
"fitView": "Fit view",
|
|
272
|
+
"undo": "Undo",
|
|
273
|
+
"redo": "Redo",
|
|
274
|
+
"layout": "Arrange blocks"
|
|
275
|
+
},
|
|
276
|
+
"node": {
|
|
277
|
+
"disabled": "Disabled",
|
|
278
|
+
"addBlock": "Add the next block",
|
|
279
|
+
"issueCount_one": "{{count}} issue",
|
|
280
|
+
"issueCount_other": "{{count}} issues"
|
|
281
|
+
},
|
|
282
|
+
"laneMap": {
|
|
283
|
+
"label": "Flow map"
|
|
284
|
+
}
|
|
285
|
+
},
|
|
219
286
|
"followUp": {
|
|
220
287
|
"messages": "Messages",
|
|
221
288
|
"chat": {
|
|
@@ -12,6 +12,7 @@ const detailsTable = { "size": "Size", "quantity": "Qty" };
|
|
|
12
12
|
const errorPage = { "message": "This screen could not load", "headline": "Something unexpected happened while building the page. Refreshing usually fixes it. If it happens again, contact support and tell them what you were doing.", "backToStart": "Back to start" };
|
|
13
13
|
const filters = { "activeFilters": "Applied filters", "appliedCount_one": "{{count}} filter applied", "appliedCount_other": "{{count}} filters applied", "clearAll": "Clear all", "noFields": "No filters available for this list.", "noOptions": "No options found.", "optionsError": "Could not load the options for {{field}}.", "rangeMax": "Maximum", "rangeMin": "Minimum", "rangeSeparator": "to", "searchOptions": "Search options" };
|
|
14
14
|
const filtersDrawer = { "selectedFilters": "Selected filters:", "pendingChanges": "Pending changes", "discardChangesTitle": "Discard changes?", "discardChangesMessage": "You have unapplied filter changes. Discard them?", "keepEditing": "Keep editing", "discard": "Discard" };
|
|
15
|
+
const flow = { "canvas": "Flow editor", "resizePanel": "Drag to adjust the width. Double click resets", "ports": { "next": "Next", "true": "Yes", "false": "No", "error": "Error" }, "categories": { "trigger": "Triggers", "condition": "Conditions", "action": "Actions" }, "palette": { "title": "Blocks", "search": "Search block", "empty": "No block found", "limitReached": "This flow already has the maximum of this block" }, "inspector": { "title": "Block settings", "empty": "Select a block to configure it", "label": "Block name", "delete": "Delete block", "duplicate": "Duplicate block", "unknownBlock": "This block type no longer exists", "close": "Close" }, "issues": { "title": "Issues", "none": "No issues", "missingTrigger": "The flow needs a trigger", "multipleTriggers": "A flow can have only one trigger", "unknownBlock": "Block of a type that no longer exists", "unreachableNode": "Loose block: no path from the trigger reaches it", "multipleInputs": "Block with more than one input", "portFanOut": "An output can connect to one block only", "cycle": "The blocks form a cycle", "missingTrueBranch": "The condition has no yes path" }, "run": { "passed": "Passed", "failed": "Did not pass", "skipped": "Skipped", "wouldRun": "Would run", "error": "Error", "blocked": "Blocked" }, "controls": { "zoomIn": "Zoom in", "zoomOut": "Zoom out", "fitView": "Fit view", "undo": "Undo", "redo": "Redo", "layout": "Arrange blocks" }, "node": { "disabled": "Disabled", "addBlock": "Add the next block", "issueCount_one": "{{count}} issue", "issueCount_other": "{{count}} issues" }, "laneMap": { "label": "Flow map" } };
|
|
15
16
|
const followUp = { "messages": "Messages", "chat": { "loadingMessages": "Loading messages", "placeholder": "Write a message...", "invalidMessage": "Please enter a valid message", "noMessagesYet": "No messages yet", "startConversation": "Start a conversation by adding the first message", "loadError": "Messages could not be loaded", "sendFailed": "The message could not be sent. Try again.", "sendFailedInline": "Failed to send", "resend": "Resend", "discard": "Discard", "today": "Today", "yesterday": "Yesterday", "typingOne": "{{name}} is typing...", "typingMany": "{{count}} people are typing...", "someone": "Someone", "you": "You", "newMessages": "New messages", "backToLatest": "Back to latest", "deletedMessage": "Message deleted", "edited": "edited", "readBy": "Read by {{names}}", "copied": "Message copied", "replyingTo": "Replying to {{name}}", "attachmentFallback": "Attachment", "editTitle": "Edit message", "deleteTitle": "Delete message?", "deleteSubtitle": "The message will be shown as deleted for every participant", "sendHint": "Enter sends, Shift+Enter adds a line break", "formatting": "Formatting" }, "actions": { "reply": "Reply", "copy": "Copy text", "edit": "Edit", "delete": "Delete" }, "attachments": { "attach": "Attach", "pickFile": "File", "pickImage": "Image", "takePhoto": "Take photo", "dropHere": "Drop files to attach", "tooMany": "Limit of {{max}} attachments per message", "tooLarge": "The file {{name}} exceeds the 50 MB limit", "uploadFailed": "Upload failed", "uploading": "Uploading attachments...", "imagePreview": "Preview image", "showTranscript": "Show transcript", "hideTranscript": "Hide transcript" }, "voice": { "record": "Record audio", "recording": "Recording", "stop": "Finish recording", "cancel": "Cancel recording", "rerecord": "Record again", "attach": "Add to message", "discard": "Discard", "transcriptLabel": "Transcript", "transcriptPlaceholder": "The speech transcript appears here and can be edited" }, "camera": { "title": "Take photo", "unavailable": "Camera unavailable", "unavailableHint": "Check the browser camera permission", "switch": "Switch camera", "capture": "Capture photo" }, "search": { "open": "Search in conversation", "placeholder": "Search messages", "noResults": "No messages found", "error": "Messages could not be searched" } };
|
|
16
17
|
const generatedByAI = { "tooltip": "Generated by AI" };
|
|
17
18
|
const imageAiAdjust = { "action": "Adjust with AI", "title": "Adjust image with AI", "subtitle": "Describe the adjustment. The AI changes only what you ask and preserves the rest of the image.", "original": "Original", "result": "Result", "resultHint": "Describe the adjustment and click Generate to see the result here.", "promptLabel": "Desired adjustment", "promptPlaceholder": "E.g. remove the background and make it white, smooth the sleeve creases, brighten the lighting", "generate": "Generate", "generating": "Generating the image...", "tryAgain": "Generate another", "useResult": "Use this image", "errorGenerate": "Could not adjust the image with AI", "errorSave": "Could not save the adjusted image", "errorRefused": "The AI could not make this adjustment: {{reason}}", "mask": { "start": "Mark the area", "stop": "Use the whole image", "hint": "Paint the area the AI may change. The rest of the image is kept." }, "verification": { "changedMoreThanRequested": "The AI changed more than requested. Check the areas outside the adjustment before using it.", "colorMismatch": "The garment color ({{dominant}}) differs from the requested color ({{target}})." } };
|
|
@@ -50,6 +51,7 @@ const en = {
|
|
|
50
51
|
errorPage,
|
|
51
52
|
filters,
|
|
52
53
|
filtersDrawer,
|
|
54
|
+
flow,
|
|
53
55
|
followUp,
|
|
54
56
|
generatedByAI,
|
|
55
57
|
imageAiAdjust,
|
|
@@ -90,6 +92,7 @@ export {
|
|
|
90
92
|
errorPage,
|
|
91
93
|
filters,
|
|
92
94
|
filtersDrawer,
|
|
95
|
+
flow,
|
|
93
96
|
followUp,
|
|
94
97
|
generatedByAI,
|
|
95
98
|
imageAiAdjust,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/locales/index.d.ts
CHANGED
|
@@ -218,6 +218,73 @@ export declare const uiLocales: {
|
|
|
218
218
|
keepEditing: string;
|
|
219
219
|
discard: string;
|
|
220
220
|
};
|
|
221
|
+
flow: {
|
|
222
|
+
canvas: string;
|
|
223
|
+
resizePanel: string;
|
|
224
|
+
ports: {
|
|
225
|
+
next: string;
|
|
226
|
+
true: string;
|
|
227
|
+
false: string;
|
|
228
|
+
error: string;
|
|
229
|
+
};
|
|
230
|
+
categories: {
|
|
231
|
+
trigger: string;
|
|
232
|
+
condition: string;
|
|
233
|
+
action: string;
|
|
234
|
+
};
|
|
235
|
+
palette: {
|
|
236
|
+
title: string;
|
|
237
|
+
search: string;
|
|
238
|
+
empty: string;
|
|
239
|
+
limitReached: string;
|
|
240
|
+
};
|
|
241
|
+
inspector: {
|
|
242
|
+
title: string;
|
|
243
|
+
empty: string;
|
|
244
|
+
label: string;
|
|
245
|
+
delete: string;
|
|
246
|
+
duplicate: string;
|
|
247
|
+
unknownBlock: string;
|
|
248
|
+
close: string;
|
|
249
|
+
};
|
|
250
|
+
issues: {
|
|
251
|
+
title: string;
|
|
252
|
+
none: string;
|
|
253
|
+
missingTrigger: string;
|
|
254
|
+
multipleTriggers: string;
|
|
255
|
+
unknownBlock: string;
|
|
256
|
+
unreachableNode: string;
|
|
257
|
+
multipleInputs: string;
|
|
258
|
+
portFanOut: string;
|
|
259
|
+
cycle: string;
|
|
260
|
+
missingTrueBranch: string;
|
|
261
|
+
};
|
|
262
|
+
run: {
|
|
263
|
+
passed: string;
|
|
264
|
+
failed: string;
|
|
265
|
+
skipped: string;
|
|
266
|
+
wouldRun: string;
|
|
267
|
+
error: string;
|
|
268
|
+
blocked: string;
|
|
269
|
+
};
|
|
270
|
+
controls: {
|
|
271
|
+
zoomIn: string;
|
|
272
|
+
zoomOut: string;
|
|
273
|
+
fitView: string;
|
|
274
|
+
undo: string;
|
|
275
|
+
redo: string;
|
|
276
|
+
layout: string;
|
|
277
|
+
};
|
|
278
|
+
node: {
|
|
279
|
+
disabled: string;
|
|
280
|
+
addBlock: string;
|
|
281
|
+
issueCount_one: string;
|
|
282
|
+
issueCount_other: string;
|
|
283
|
+
};
|
|
284
|
+
laneMap: {
|
|
285
|
+
label: string;
|
|
286
|
+
};
|
|
287
|
+
};
|
|
221
288
|
followUp: {
|
|
222
289
|
messages: string;
|
|
223
290
|
chat: {
|
|
@@ -772,6 +839,73 @@ export declare const uiLocales: {
|
|
|
772
839
|
keepEditing: string;
|
|
773
840
|
discard: string;
|
|
774
841
|
};
|
|
842
|
+
flow: {
|
|
843
|
+
canvas: string;
|
|
844
|
+
resizePanel: string;
|
|
845
|
+
ports: {
|
|
846
|
+
next: string;
|
|
847
|
+
true: string;
|
|
848
|
+
false: string;
|
|
849
|
+
error: string;
|
|
850
|
+
};
|
|
851
|
+
categories: {
|
|
852
|
+
trigger: string;
|
|
853
|
+
condition: string;
|
|
854
|
+
action: string;
|
|
855
|
+
};
|
|
856
|
+
palette: {
|
|
857
|
+
title: string;
|
|
858
|
+
search: string;
|
|
859
|
+
empty: string;
|
|
860
|
+
limitReached: string;
|
|
861
|
+
};
|
|
862
|
+
inspector: {
|
|
863
|
+
title: string;
|
|
864
|
+
empty: string;
|
|
865
|
+
label: string;
|
|
866
|
+
delete: string;
|
|
867
|
+
duplicate: string;
|
|
868
|
+
unknownBlock: string;
|
|
869
|
+
close: string;
|
|
870
|
+
};
|
|
871
|
+
issues: {
|
|
872
|
+
title: string;
|
|
873
|
+
none: string;
|
|
874
|
+
missingTrigger: string;
|
|
875
|
+
multipleTriggers: string;
|
|
876
|
+
unknownBlock: string;
|
|
877
|
+
unreachableNode: string;
|
|
878
|
+
multipleInputs: string;
|
|
879
|
+
portFanOut: string;
|
|
880
|
+
cycle: string;
|
|
881
|
+
missingTrueBranch: string;
|
|
882
|
+
};
|
|
883
|
+
run: {
|
|
884
|
+
passed: string;
|
|
885
|
+
failed: string;
|
|
886
|
+
skipped: string;
|
|
887
|
+
wouldRun: string;
|
|
888
|
+
error: string;
|
|
889
|
+
blocked: string;
|
|
890
|
+
};
|
|
891
|
+
controls: {
|
|
892
|
+
zoomIn: string;
|
|
893
|
+
zoomOut: string;
|
|
894
|
+
fitView: string;
|
|
895
|
+
undo: string;
|
|
896
|
+
redo: string;
|
|
897
|
+
layout: string;
|
|
898
|
+
};
|
|
899
|
+
node: {
|
|
900
|
+
disabled: string;
|
|
901
|
+
addBlock: string;
|
|
902
|
+
issueCount_one: string;
|
|
903
|
+
issueCount_other: string;
|
|
904
|
+
};
|
|
905
|
+
laneMap: {
|
|
906
|
+
label: string;
|
|
907
|
+
};
|
|
908
|
+
};
|
|
775
909
|
followUp: {
|
|
776
910
|
messages: string;
|
|
777
911
|
chat: {
|
|
@@ -216,6 +216,73 @@ declare const _default: {
|
|
|
216
216
|
"keepEditing": "Continuar editando",
|
|
217
217
|
"discard": "Descartar"
|
|
218
218
|
},
|
|
219
|
+
"flow": {
|
|
220
|
+
"canvas": "Editor de fluxo",
|
|
221
|
+
"resizePanel": "Arraste para ajustar a largura. Clique duplo restaura",
|
|
222
|
+
"ports": {
|
|
223
|
+
"next": "Próximo",
|
|
224
|
+
"true": "Sim",
|
|
225
|
+
"false": "Não",
|
|
226
|
+
"error": "Erro"
|
|
227
|
+
},
|
|
228
|
+
"categories": {
|
|
229
|
+
"trigger": "Gatilhos",
|
|
230
|
+
"condition": "Condições",
|
|
231
|
+
"action": "Ações"
|
|
232
|
+
},
|
|
233
|
+
"palette": {
|
|
234
|
+
"title": "Blocos",
|
|
235
|
+
"search": "Buscar bloco",
|
|
236
|
+
"empty": "Nenhum bloco encontrado",
|
|
237
|
+
"limitReached": "Este fluxo já tem o máximo deste bloco"
|
|
238
|
+
},
|
|
239
|
+
"inspector": {
|
|
240
|
+
"title": "Configuração do bloco",
|
|
241
|
+
"empty": "Selecione um bloco para configurar",
|
|
242
|
+
"label": "Nome do bloco",
|
|
243
|
+
"delete": "Excluir bloco",
|
|
244
|
+
"duplicate": "Duplicar bloco",
|
|
245
|
+
"unknownBlock": "Este tipo de bloco não existe mais",
|
|
246
|
+
"close": "Fechar"
|
|
247
|
+
},
|
|
248
|
+
"issues": {
|
|
249
|
+
"title": "Pendências",
|
|
250
|
+
"none": "Nenhuma pendência",
|
|
251
|
+
"missingTrigger": "O fluxo precisa de um gatilho",
|
|
252
|
+
"multipleTriggers": "O fluxo só pode ter um gatilho",
|
|
253
|
+
"unknownBlock": "Bloco de um tipo que não existe mais",
|
|
254
|
+
"unreachableNode": "Bloco solto: nenhum caminho do gatilho chega até ele",
|
|
255
|
+
"multipleInputs": "Bloco com mais de uma entrada",
|
|
256
|
+
"portFanOut": "Uma saída só pode ligar a um bloco",
|
|
257
|
+
"cycle": "Os blocos formam um ciclo",
|
|
258
|
+
"missingTrueBranch": "A condição não tem o caminho do sim"
|
|
259
|
+
},
|
|
260
|
+
"run": {
|
|
261
|
+
"passed": "Passou",
|
|
262
|
+
"failed": "Não passou",
|
|
263
|
+
"skipped": "Pulado",
|
|
264
|
+
"wouldRun": "Executaria",
|
|
265
|
+
"error": "Erro",
|
|
266
|
+
"blocked": "Bloqueado"
|
|
267
|
+
},
|
|
268
|
+
"controls": {
|
|
269
|
+
"zoomIn": "Aproximar",
|
|
270
|
+
"zoomOut": "Afastar",
|
|
271
|
+
"fitView": "Enquadrar",
|
|
272
|
+
"undo": "Desfazer",
|
|
273
|
+
"redo": "Refazer",
|
|
274
|
+
"layout": "Organizar blocos"
|
|
275
|
+
},
|
|
276
|
+
"node": {
|
|
277
|
+
"disabled": "Desativado",
|
|
278
|
+
"addBlock": "Adicionar o próximo bloco",
|
|
279
|
+
"issueCount_one": "{{count}} pendência",
|
|
280
|
+
"issueCount_other": "{{count}} pendências"
|
|
281
|
+
},
|
|
282
|
+
"laneMap": {
|
|
283
|
+
"label": "Mapa do fluxo"
|
|
284
|
+
}
|
|
285
|
+
},
|
|
219
286
|
"followUp": {
|
|
220
287
|
"messages": "Mensagens",
|
|
221
288
|
"chat": {
|
|
@@ -12,6 +12,7 @@ const detailsTable = { "size": "Tam", "quantity": "Qtd" };
|
|
|
12
12
|
const errorPage = { "message": "Esta tela não conseguiu carregar", "headline": "Algo inesperado aconteceu ao montar a página. Atualizar costuma resolver. Se acontecer de novo, fale com o suporte contando o que você estava fazendo.", "backToStart": "Voltar para o início" };
|
|
13
13
|
const filters = { "activeFilters": "Filtros aplicados", "appliedCount_one": "{{count}} filtro aplicado", "appliedCount_other": "{{count}} filtros aplicados", "clearAll": "Limpar tudo", "noFields": "Nenhum filtro disponível para esta listagem.", "noOptions": "Nenhuma opção encontrada.", "optionsError": "Não foi possível carregar as opções de {{field}}.", "rangeMax": "Máximo", "rangeMin": "Mínimo", "rangeSeparator": "até", "searchOptions": "Buscar opções" };
|
|
14
14
|
const filtersDrawer = { "selectedFilters": "Filtros Selecionados:", "pendingChanges": "Alterações pendentes", "discardChangesTitle": "Descartar alterações?", "discardChangesMessage": "Você tem alterações de filtro não aplicadas. Deseja descartá-las?", "keepEditing": "Continuar editando", "discard": "Descartar" };
|
|
15
|
+
const flow = { "canvas": "Editor de fluxo", "resizePanel": "Arraste para ajustar a largura. Clique duplo restaura", "ports": { "next": "Próximo", "true": "Sim", "false": "Não", "error": "Erro" }, "categories": { "trigger": "Gatilhos", "condition": "Condições", "action": "Ações" }, "palette": { "title": "Blocos", "search": "Buscar bloco", "empty": "Nenhum bloco encontrado", "limitReached": "Este fluxo já tem o máximo deste bloco" }, "inspector": { "title": "Configuração do bloco", "empty": "Selecione um bloco para configurar", "label": "Nome do bloco", "delete": "Excluir bloco", "duplicate": "Duplicar bloco", "unknownBlock": "Este tipo de bloco não existe mais", "close": "Fechar" }, "issues": { "title": "Pendências", "none": "Nenhuma pendência", "missingTrigger": "O fluxo precisa de um gatilho", "multipleTriggers": "O fluxo só pode ter um gatilho", "unknownBlock": "Bloco de um tipo que não existe mais", "unreachableNode": "Bloco solto: nenhum caminho do gatilho chega até ele", "multipleInputs": "Bloco com mais de uma entrada", "portFanOut": "Uma saída só pode ligar a um bloco", "cycle": "Os blocos formam um ciclo", "missingTrueBranch": "A condição não tem o caminho do sim" }, "run": { "passed": "Passou", "failed": "Não passou", "skipped": "Pulado", "wouldRun": "Executaria", "error": "Erro", "blocked": "Bloqueado" }, "controls": { "zoomIn": "Aproximar", "zoomOut": "Afastar", "fitView": "Enquadrar", "undo": "Desfazer", "redo": "Refazer", "layout": "Organizar blocos" }, "node": { "disabled": "Desativado", "addBlock": "Adicionar o próximo bloco", "issueCount_one": "{{count}} pendência", "issueCount_other": "{{count}} pendências" }, "laneMap": { "label": "Mapa do fluxo" } };
|
|
15
16
|
const followUp = { "messages": "Mensagens", "chat": { "loadingMessages": "Carregando mensagens", "placeholder": "Escrever mensagem...", "invalidMessage": "Por favor, insira uma mensagem válida", "noMessagesYet": "Nenhuma mensagem por enquanto", "startConversation": "Inicie uma conversa adicionando a primeira mensagem", "loadError": "Não foi possível carregar as mensagens", "sendFailed": "Não foi possível enviar a mensagem. Tente novamente.", "sendFailedInline": "Falha no envio", "resend": "Reenviar", "discard": "Descartar", "today": "Hoje", "yesterday": "Ontem", "typingOne": "{{name}} está digitando...", "typingMany": "{{count}} pessoas estão digitando...", "someone": "Alguém", "you": "Você", "newMessages": "Novas mensagens", "backToLatest": "Voltar para as recentes", "deletedMessage": "Mensagem apagada", "edited": "editada", "readBy": "Lida por {{names}}", "copied": "Mensagem copiada", "replyingTo": "Respondendo a {{name}}", "attachmentFallback": "Anexo", "editTitle": "Editar mensagem", "deleteTitle": "Apagar mensagem?", "deleteSubtitle": "A mensagem será marcada como apagada para todos os participantes", "sendHint": "Enter envia, Shift+Enter quebra a linha", "formatting": "Formatação" }, "actions": { "reply": "Responder", "copy": "Copiar texto", "edit": "Editar", "delete": "Apagar" }, "attachments": { "attach": "Anexar", "pickFile": "Arquivo", "pickImage": "Imagem", "takePhoto": "Tirar foto", "dropHere": "Solte os arquivos para anexar", "tooMany": "Limite de {{max}} anexos por mensagem", "tooLarge": "O arquivo {{name}} passa do limite de 50 MB", "uploadFailed": "Falha no upload", "uploading": "Enviando anexos...", "imagePreview": "Visualizar imagem", "showTranscript": "Ver transcrição", "hideTranscript": "Ocultar transcrição" }, "voice": { "record": "Gravar áudio", "recording": "Gravando", "stop": "Concluir gravação", "cancel": "Cancelar gravação", "rerecord": "Regravar", "attach": "Adicionar ao envio", "discard": "Descartar", "transcriptLabel": "Transcrição", "transcriptPlaceholder": "A transcrição da fala aparece aqui e pode ser editada" }, "camera": { "title": "Tirar foto", "unavailable": "Câmera indisponível", "unavailableHint": "Verifique a permissão de câmera do navegador", "switch": "Alternar câmera", "capture": "Capturar foto" }, "search": { "open": "Buscar na conversa", "placeholder": "Buscar mensagens", "noResults": "Nenhuma mensagem encontrada", "error": "Não foi possível buscar as mensagens" } };
|
|
16
17
|
const generatedByAI = { "tooltip": "Gerado por IA" };
|
|
17
18
|
const imageAiAdjust = { "action": "Ajustar com IA", "title": "Ajustar imagem com IA", "subtitle": "Descreva o ajuste. A IA altera só o que você pedir e preserva o resto da imagem.", "original": "Original", "result": "Resultado", "resultHint": "Descreva o ajuste e clique em Gerar para ver o resultado aqui.", "promptLabel": "Ajuste desejado", "promptPlaceholder": "Ex.: remover o fundo e deixar branco, tirar os vincos da manga, clarear a iluminação", "generate": "Gerar", "generating": "Gerando a imagem...", "tryAgain": "Gerar outra", "useResult": "Usar esta imagem", "errorGenerate": "Não foi possível ajustar a imagem com IA", "errorSave": "Não foi possível salvar a imagem ajustada", "errorRefused": "A IA não conseguiu fazer este ajuste: {{reason}}", "mask": { "start": "Marcar a área", "stop": "Usar a imagem toda", "hint": "Pinte a área que a IA pode alterar. O resto da imagem é mantido." }, "verification": { "changedMoreThanRequested": "A IA mudou mais do que o pedido. Confira as áreas fora do ajuste antes de usar.", "colorMismatch": "A cor da peça ({{dominant}}) ficou diferente da cor pedida ({{target}})." } };
|
|
@@ -50,6 +51,7 @@ const pt = {
|
|
|
50
51
|
errorPage,
|
|
51
52
|
filters,
|
|
52
53
|
filtersDrawer,
|
|
54
|
+
flow,
|
|
53
55
|
followUp,
|
|
54
56
|
generatedByAI,
|
|
55
57
|
imageAiAdjust,
|
|
@@ -90,6 +92,7 @@ export {
|
|
|
90
92
|
errorPage,
|
|
91
93
|
filters,
|
|
92
94
|
filtersDrawer,
|
|
95
|
+
flow,
|
|
93
96
|
followUp,
|
|
94
97
|
generatedByAI,
|
|
95
98
|
imageAiAdjust,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umodeapporg/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.0",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": [
|
|
@@ -50,6 +50,10 @@
|
|
|
50
50
|
"types": "./dist/components/UI/DataTable/index.d.ts",
|
|
51
51
|
"import": "./dist/components/UI/DataTable/index.js"
|
|
52
52
|
},
|
|
53
|
+
"./components/UI/Flow": {
|
|
54
|
+
"types": "./dist/components/UI/Flow/index.d.ts",
|
|
55
|
+
"import": "./dist/components/UI/Flow/index.js"
|
|
56
|
+
},
|
|
53
57
|
"./components/UI/ImageMaskPainter": {
|
|
54
58
|
"types": "./dist/components/UI/ImageMaskPainter/index.d.ts",
|
|
55
59
|
"import": "./dist/components/UI/ImageMaskPainter/index.js"
|
|
@@ -105,6 +109,7 @@
|
|
|
105
109
|
"@dnd-kit/sortable": "^10.0.0",
|
|
106
110
|
"@dnd-kit/utilities": "^3.2.2",
|
|
107
111
|
"@tanstack/react-table": "^8.21.3",
|
|
112
|
+
"@xyflow/react": "^12.11.2",
|
|
108
113
|
"apexcharts": ">=3.52.0 <4",
|
|
109
114
|
"date-fns": "^4.0.0",
|
|
110
115
|
"i18next": ">=23",
|
|
@@ -137,6 +142,9 @@
|
|
|
137
142
|
"@tanstack/react-table": {
|
|
138
143
|
"optional": true
|
|
139
144
|
},
|
|
145
|
+
"@xyflow/react": {
|
|
146
|
+
"optional": true
|
|
147
|
+
},
|
|
140
148
|
"apexcharts": {
|
|
141
149
|
"optional": true
|
|
142
150
|
},
|
|
@@ -193,6 +201,7 @@
|
|
|
193
201
|
"@typescript-eslint/eslint-plugin": "^8.42.0",
|
|
194
202
|
"@typescript-eslint/parser": "^8.42.0",
|
|
195
203
|
"@vitejs/plugin-react-swc": "^3.5.0",
|
|
204
|
+
"@xyflow/react": "^12.12.0",
|
|
196
205
|
"apexcharts": "3.52.0",
|
|
197
206
|
"autoprefixer": "^10.4.19",
|
|
198
207
|
"conventional-changelog-conventionalcommits": "^8.0.0",
|