@mindlogic-ai/logician-ui 3.1.0-alpha.9 → 3.2.0-alpha.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.
Files changed (396) hide show
  1. package/dist/components/Icon/_constants/iconList.d.ts +1 -1
  2. package/dist/components/Icon/_constants/iconList.d.ts.map +1 -1
  3. package/dist/components/Icon/_constants/iconList.js +18 -0
  4. package/dist/components/Icon/_constants/iconList.js.map +1 -1
  5. package/dist/components/Icon/_constants/iconList.mjs +20 -2
  6. package/dist/components/Icon/_constants/iconList.mjs.map +1 -1
  7. package/dist/components/Icon/index.d.ts +2 -1
  8. package/dist/components/Icon/index.d.ts.map +1 -1
  9. package/dist/components/Icon/index.js +20 -1
  10. package/dist/components/Icon/index.js.map +1 -1
  11. package/dist/components/Icon/index.mjs +4 -2
  12. package/dist/components/Icon/index.mjs.map +1 -1
  13. package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  14. package/dist/components/SegmentedControl/SegmentedControl.js +20 -4
  15. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  16. package/dist/components/SegmentedControl/SegmentedControl.mjs +20 -4
  17. package/dist/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
  18. package/dist/components/Workflow/Workflow.d.ts +3 -0
  19. package/dist/components/Workflow/Workflow.d.ts.map +1 -0
  20. package/dist/components/Workflow/Workflow.js +109 -0
  21. package/dist/components/Workflow/Workflow.js.map +1 -0
  22. package/dist/components/Workflow/Workflow.mjs +107 -0
  23. package/dist/components/Workflow/Workflow.mjs.map +1 -0
  24. package/dist/components/Workflow/Workflow.translations.json.js +164 -0
  25. package/dist/components/Workflow/Workflow.translations.json.js.map +1 -0
  26. package/dist/components/Workflow/Workflow.translations.json.mjs +138 -0
  27. package/dist/components/Workflow/Workflow.translations.json.mjs.map +1 -0
  28. package/dist/components/Workflow/Workflow.types.d.ts +435 -0
  29. package/dist/components/Workflow/Workflow.types.d.ts.map +1 -0
  30. package/dist/components/Workflow/Workflow.types.js +19 -0
  31. package/dist/components/Workflow/Workflow.types.js.map +1 -0
  32. package/dist/components/Workflow/Workflow.types.mjs +16 -0
  33. package/dist/components/Workflow/Workflow.types.mjs.map +1 -0
  34. package/dist/components/Workflow/WorkflowContext/WorkflowContext.d.ts +10 -0
  35. package/dist/components/Workflow/WorkflowContext/WorkflowContext.d.ts.map +1 -0
  36. package/dist/components/Workflow/WorkflowContext/WorkflowContext.js +163 -0
  37. package/dist/components/Workflow/WorkflowContext/WorkflowContext.js.map +1 -0
  38. package/dist/components/Workflow/WorkflowContext/WorkflowContext.mjs +159 -0
  39. package/dist/components/Workflow/WorkflowContext/WorkflowContext.mjs.map +1 -0
  40. package/dist/components/Workflow/WorkflowContext/WorkflowContext.types.d.ts +117 -0
  41. package/dist/components/Workflow/WorkflowContext/WorkflowContext.types.d.ts.map +1 -0
  42. package/dist/components/Workflow/WorkflowContext/index.d.ts +3 -0
  43. package/dist/components/Workflow/WorkflowContext/index.d.ts.map +1 -0
  44. package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.d.ts +19 -0
  45. package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.d.ts.map +1 -0
  46. package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.js +44 -0
  47. package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.js.map +1 -0
  48. package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.mjs +42 -0
  49. package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.mjs.map +1 -0
  50. package/dist/components/Workflow/canvas/Canvas/Canvas.d.ts +10 -0
  51. package/dist/components/Workflow/canvas/Canvas/Canvas.d.ts.map +1 -0
  52. package/dist/components/Workflow/canvas/Canvas/Canvas.js +531 -0
  53. package/dist/components/Workflow/canvas/Canvas/Canvas.js.map +1 -0
  54. package/dist/components/Workflow/canvas/Canvas/Canvas.mjs +529 -0
  55. package/dist/components/Workflow/canvas/Canvas/Canvas.mjs.map +1 -0
  56. package/dist/components/Workflow/canvas/Canvas/Canvas.styles.d.ts +53 -0
  57. package/dist/components/Workflow/canvas/Canvas/Canvas.styles.d.ts.map +1 -0
  58. package/dist/components/Workflow/canvas/Canvas/Canvas.styles.js +96 -0
  59. package/dist/components/Workflow/canvas/Canvas/Canvas.styles.js.map +1 -0
  60. package/dist/components/Workflow/canvas/Canvas/Canvas.styles.mjs +93 -0
  61. package/dist/components/Workflow/canvas/Canvas/Canvas.styles.mjs.map +1 -0
  62. package/dist/components/Workflow/canvas/Canvas/CanvasControls.d.ts +27 -0
  63. package/dist/components/Workflow/canvas/Canvas/CanvasControls.d.ts.map +1 -0
  64. package/dist/components/Workflow/canvas/Canvas/CanvasControls.js +70 -0
  65. package/dist/components/Workflow/canvas/Canvas/CanvasControls.js.map +1 -0
  66. package/dist/components/Workflow/canvas/Canvas/CanvasControls.mjs +68 -0
  67. package/dist/components/Workflow/canvas/Canvas/CanvasControls.mjs.map +1 -0
  68. package/dist/components/Workflow/canvas/Canvas/LabeledEdge.d.ts +10 -0
  69. package/dist/components/Workflow/canvas/Canvas/LabeledEdge.d.ts.map +1 -0
  70. package/dist/components/Workflow/canvas/Canvas/LabeledEdge.js +106 -0
  71. package/dist/components/Workflow/canvas/Canvas/LabeledEdge.js.map +1 -0
  72. package/dist/components/Workflow/canvas/Canvas/LabeledEdge.mjs +104 -0
  73. package/dist/components/Workflow/canvas/Canvas/LabeledEdge.mjs.map +1 -0
  74. package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.d.ts +13 -0
  75. package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.d.ts.map +1 -0
  76. package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.js +18 -0
  77. package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.js.map +1 -0
  78. package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.mjs +16 -0
  79. package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.mjs.map +1 -0
  80. package/dist/components/Workflow/canvas/Canvas/index.d.ts +2 -0
  81. package/dist/components/Workflow/canvas/Canvas/index.d.ts.map +1 -0
  82. package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.d.ts +30 -0
  83. package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.d.ts.map +1 -0
  84. package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.js +34 -0
  85. package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.js.map +1 -0
  86. package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.mjs +32 -0
  87. package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.mjs.map +1 -0
  88. package/dist/components/Workflow/canvas/CollapsibleSection/index.d.ts +2 -0
  89. package/dist/components/Workflow/canvas/CollapsibleSection/index.d.ts.map +1 -0
  90. package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.d.ts +37 -0
  91. package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.d.ts.map +1 -0
  92. package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.js +33 -0
  93. package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.js.map +1 -0
  94. package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.mjs +31 -0
  95. package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.mjs.map +1 -0
  96. package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.d.ts +16 -0
  97. package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.d.ts.map +1 -0
  98. package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.js +54 -0
  99. package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.js.map +1 -0
  100. package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.mjs +52 -0
  101. package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.mjs.map +1 -0
  102. package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.d.ts +27 -0
  103. package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.d.ts.map +1 -0
  104. package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.js +178 -0
  105. package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.js.map +1 -0
  106. package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.mjs +176 -0
  107. package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.mjs.map +1 -0
  108. package/dist/components/Workflow/canvas/DrawerShell/index.d.ts +3 -0
  109. package/dist/components/Workflow/canvas/DrawerShell/index.d.ts.map +1 -0
  110. package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.d.ts +12 -0
  111. package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.d.ts.map +1 -0
  112. package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.js +68 -0
  113. package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.js.map +1 -0
  114. package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.mjs +66 -0
  115. package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.mjs.map +1 -0
  116. package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.d.ts +19 -0
  117. package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.d.ts.map +1 -0
  118. package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.js +35 -0
  119. package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.js.map +1 -0
  120. package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.mjs +32 -0
  121. package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.mjs.map +1 -0
  122. package/dist/components/Workflow/canvas/EdgeInspector/index.d.ts +3 -0
  123. package/dist/components/Workflow/canvas/EdgeInspector/index.d.ts.map +1 -0
  124. package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.d.ts +54 -0
  125. package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.d.ts.map +1 -0
  126. package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.js +56 -0
  127. package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.js.map +1 -0
  128. package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.mjs +54 -0
  129. package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.mjs.map +1 -0
  130. package/dist/components/Workflow/canvas/FieldWrapper/index.d.ts +3 -0
  131. package/dist/components/Workflow/canvas/FieldWrapper/index.d.ts.map +1 -0
  132. package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.d.ts +16 -0
  133. package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.d.ts.map +1 -0
  134. package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.js +25 -0
  135. package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.js.map +1 -0
  136. package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.mjs +22 -0
  137. package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.mjs.map +1 -0
  138. package/dist/components/Workflow/canvas/FloatingCard/index.d.ts +2 -0
  139. package/dist/components/Workflow/canvas/FloatingCard/index.d.ts.map +1 -0
  140. package/dist/components/Workflow/canvas/GenericNode/GenericNode.d.ts +14 -0
  141. package/dist/components/Workflow/canvas/GenericNode/GenericNode.d.ts.map +1 -0
  142. package/dist/components/Workflow/canvas/GenericNode/GenericNode.js +61 -0
  143. package/dist/components/Workflow/canvas/GenericNode/GenericNode.js.map +1 -0
  144. package/dist/components/Workflow/canvas/GenericNode/GenericNode.mjs +59 -0
  145. package/dist/components/Workflow/canvas/GenericNode/GenericNode.mjs.map +1 -0
  146. package/dist/components/Workflow/canvas/GenericNode/GenericNode.types.d.ts +11 -0
  147. package/dist/components/Workflow/canvas/GenericNode/GenericNode.types.d.ts.map +1 -0
  148. package/dist/components/Workflow/canvas/GenericNode/index.d.ts +3 -0
  149. package/dist/components/Workflow/canvas/GenericNode/index.d.ts.map +1 -0
  150. package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.d.ts +15 -0
  151. package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.d.ts.map +1 -0
  152. package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.js +145 -0
  153. package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.js.map +1 -0
  154. package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.mjs +143 -0
  155. package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.mjs.map +1 -0
  156. package/dist/components/Workflow/canvas/GraphErrorBanner/index.d.ts +2 -0
  157. package/dist/components/Workflow/canvas/GraphErrorBanner/index.d.ts.map +1 -0
  158. package/dist/components/Workflow/canvas/IconTile/IconTile.d.ts +10 -0
  159. package/dist/components/Workflow/canvas/IconTile/IconTile.d.ts.map +1 -0
  160. package/dist/components/Workflow/canvas/IconTile/IconTile.js +21 -0
  161. package/dist/components/Workflow/canvas/IconTile/IconTile.js.map +1 -0
  162. package/dist/components/Workflow/canvas/IconTile/IconTile.mjs +19 -0
  163. package/dist/components/Workflow/canvas/IconTile/IconTile.mjs.map +1 -0
  164. package/dist/components/Workflow/canvas/IconTile/IconTile.styles.d.ts +18 -0
  165. package/dist/components/Workflow/canvas/IconTile/IconTile.styles.d.ts.map +1 -0
  166. package/dist/components/Workflow/canvas/IconTile/IconTile.styles.js +40 -0
  167. package/dist/components/Workflow/canvas/IconTile/IconTile.styles.js.map +1 -0
  168. package/dist/components/Workflow/canvas/IconTile/IconTile.styles.mjs +37 -0
  169. package/dist/components/Workflow/canvas/IconTile/IconTile.styles.mjs.map +1 -0
  170. package/dist/components/Workflow/canvas/IconTile/IconTile.types.d.ts +15 -0
  171. package/dist/components/Workflow/canvas/IconTile/IconTile.types.d.ts.map +1 -0
  172. package/dist/components/Workflow/canvas/IconTile/index.d.ts +4 -0
  173. package/dist/components/Workflow/canvas/IconTile/index.d.ts.map +1 -0
  174. package/dist/components/Workflow/canvas/IssueList/IssueList.d.ts +24 -0
  175. package/dist/components/Workflow/canvas/IssueList/IssueList.d.ts.map +1 -0
  176. package/dist/components/Workflow/canvas/IssueList/IssueList.js +34 -0
  177. package/dist/components/Workflow/canvas/IssueList/IssueList.js.map +1 -0
  178. package/dist/components/Workflow/canvas/IssueList/IssueList.mjs +32 -0
  179. package/dist/components/Workflow/canvas/IssueList/IssueList.mjs.map +1 -0
  180. package/dist/components/Workflow/canvas/IssueList/index.d.ts +2 -0
  181. package/dist/components/Workflow/canvas/IssueList/index.d.ts.map +1 -0
  182. package/dist/components/Workflow/canvas/NodePalette/NodePalette.d.ts +9 -0
  183. package/dist/components/Workflow/canvas/NodePalette/NodePalette.d.ts.map +1 -0
  184. package/dist/components/Workflow/canvas/NodePalette/NodePalette.js +94 -0
  185. package/dist/components/Workflow/canvas/NodePalette/NodePalette.js.map +1 -0
  186. package/dist/components/Workflow/canvas/NodePalette/NodePalette.mjs +92 -0
  187. package/dist/components/Workflow/canvas/NodePalette/NodePalette.mjs.map +1 -0
  188. package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.d.ts +7 -0
  189. package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.d.ts.map +1 -0
  190. package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.js +13 -0
  191. package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.js.map +1 -0
  192. package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.mjs +10 -0
  193. package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.mjs.map +1 -0
  194. package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.d.ts +10 -0
  195. package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.d.ts.map +1 -0
  196. package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.js +28 -0
  197. package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.js.map +1 -0
  198. package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.mjs +26 -0
  199. package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.mjs.map +1 -0
  200. package/dist/components/Workflow/canvas/NodePalette/index.d.ts +4 -0
  201. package/dist/components/Workflow/canvas/NodePalette/index.d.ts.map +1 -0
  202. package/dist/components/Workflow/canvas/NodeShell/NodeShell.d.ts +3 -0
  203. package/dist/components/Workflow/canvas/NodeShell/NodeShell.d.ts.map +1 -0
  204. package/dist/components/Workflow/canvas/NodeShell/NodeShell.js +137 -0
  205. package/dist/components/Workflow/canvas/NodeShell/NodeShell.js.map +1 -0
  206. package/dist/components/Workflow/canvas/NodeShell/NodeShell.mjs +135 -0
  207. package/dist/components/Workflow/canvas/NodeShell/NodeShell.mjs.map +1 -0
  208. package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.d.ts +66 -0
  209. package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.d.ts.map +1 -0
  210. package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.js +87 -0
  211. package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.js.map +1 -0
  212. package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.mjs +77 -0
  213. package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.mjs.map +1 -0
  214. package/dist/components/Workflow/canvas/NodeShell/NodeShell.types.d.ts +35 -0
  215. package/dist/components/Workflow/canvas/NodeShell/NodeShell.types.d.ts.map +1 -0
  216. package/dist/components/Workflow/canvas/NodeShell/index.d.ts +4 -0
  217. package/dist/components/Workflow/canvas/NodeShell/index.d.ts.map +1 -0
  218. package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.d.ts +15 -0
  219. package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.d.ts.map +1 -0
  220. package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.js +14 -0
  221. package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.js.map +1 -0
  222. package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.mjs +12 -0
  223. package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.mjs.map +1 -0
  224. package/dist/components/Workflow/canvas/SeverityDot/index.d.ts +2 -0
  225. package/dist/components/Workflow/canvas/SeverityDot/index.d.ts.map +1 -0
  226. package/dist/components/Workflow/canvas/issueSeverity.d.ts +23 -0
  227. package/dist/components/Workflow/canvas/issueSeverity.d.ts.map +1 -0
  228. package/dist/components/Workflow/canvas/issueSeverity.js +51 -0
  229. package/dist/components/Workflow/canvas/issueSeverity.js.map +1 -0
  230. package/dist/components/Workflow/canvas/issueSeverity.mjs +47 -0
  231. package/dist/components/Workflow/canvas/issueSeverity.mjs.map +1 -0
  232. package/dist/components/Workflow/canvas/useFieldFocusRequest.d.ts +14 -0
  233. package/dist/components/Workflow/canvas/useFieldFocusRequest.d.ts.map +1 -0
  234. package/dist/components/Workflow/canvas/useFieldFocusRequest.js +48 -0
  235. package/dist/components/Workflow/canvas/useFieldFocusRequest.js.map +1 -0
  236. package/dist/components/Workflow/canvas/useFieldFocusRequest.mjs +46 -0
  237. package/dist/components/Workflow/canvas/useFieldFocusRequest.mjs.map +1 -0
  238. package/dist/components/Workflow/canvas/workflowLabelProps.d.ts +12 -0
  239. package/dist/components/Workflow/canvas/workflowLabelProps.d.ts.map +1 -0
  240. package/dist/components/Workflow/canvas/workflowLabelProps.js +17 -0
  241. package/dist/components/Workflow/canvas/workflowLabelProps.js.map +1 -0
  242. package/dist/components/Workflow/canvas/workflowLabelProps.mjs +15 -0
  243. package/dist/components/Workflow/canvas/workflowLabelProps.mjs.map +1 -0
  244. package/dist/components/Workflow/connectionRules.d.ts +59 -0
  245. package/dist/components/Workflow/connectionRules.d.ts.map +1 -0
  246. package/dist/components/Workflow/connectionRules.js +150 -0
  247. package/dist/components/Workflow/connectionRules.js.map +1 -0
  248. package/dist/components/Workflow/connectionRules.mjs +145 -0
  249. package/dist/components/Workflow/connectionRules.mjs.map +1 -0
  250. package/dist/components/Workflow/createNode.d.ts +27 -0
  251. package/dist/components/Workflow/createNode.d.ts.map +1 -0
  252. package/dist/components/Workflow/createNode.js +66 -0
  253. package/dist/components/Workflow/createNode.js.map +1 -0
  254. package/dist/components/Workflow/createNode.mjs +62 -0
  255. package/dist/components/Workflow/createNode.mjs.map +1 -0
  256. package/dist/components/Workflow/graphHistory.d.ts +23 -0
  257. package/dist/components/Workflow/graphHistory.d.ts.map +1 -0
  258. package/dist/components/Workflow/graphHistory.js +73 -0
  259. package/dist/components/Workflow/graphHistory.js.map +1 -0
  260. package/dist/components/Workflow/graphHistory.mjs +70 -0
  261. package/dist/components/Workflow/graphHistory.mjs.map +1 -0
  262. package/dist/components/Workflow/graphObserver.d.ts +13 -0
  263. package/dist/components/Workflow/graphObserver.d.ts.map +1 -0
  264. package/dist/components/Workflow/graphObserver.js +11 -0
  265. package/dist/components/Workflow/graphObserver.js.map +1 -0
  266. package/dist/components/Workflow/graphObserver.mjs +8 -0
  267. package/dist/components/Workflow/graphObserver.mjs.map +1 -0
  268. package/dist/components/Workflow/graphReducer.d.ts +75 -0
  269. package/dist/components/Workflow/graphReducer.d.ts.map +1 -0
  270. package/dist/components/Workflow/graphReducer.js +122 -0
  271. package/dist/components/Workflow/graphReducer.js.map +1 -0
  272. package/dist/components/Workflow/graphReducer.mjs +119 -0
  273. package/dist/components/Workflow/graphReducer.mjs.map +1 -0
  274. package/dist/components/Workflow/index.d.ts +22 -0
  275. package/dist/components/Workflow/index.d.ts.map +1 -0
  276. package/dist/components/Workflow/layout/autoLayout.d.ts +49 -0
  277. package/dist/components/Workflow/layout/autoLayout.d.ts.map +1 -0
  278. package/dist/components/Workflow/layout/autoLayout.js +149 -0
  279. package/dist/components/Workflow/layout/autoLayout.js.map +1 -0
  280. package/dist/components/Workflow/layout/autoLayout.mjs +146 -0
  281. package/dist/components/Workflow/layout/autoLayout.mjs.map +1 -0
  282. package/dist/components/Workflow/stories/toyNodeTypes.d.ts +40 -0
  283. package/dist/components/Workflow/stories/toyNodeTypes.d.ts.map +1 -0
  284. package/dist/components/Workflow/useWorkflowIssueMessage.d.ts +15 -0
  285. package/dist/components/Workflow/useWorkflowIssueMessage.d.ts.map +1 -0
  286. package/dist/components/Workflow/useWorkflowIssueMessage.js +45 -0
  287. package/dist/components/Workflow/useWorkflowIssueMessage.js.map +1 -0
  288. package/dist/components/Workflow/useWorkflowIssueMessage.mjs +43 -0
  289. package/dist/components/Workflow/useWorkflowIssueMessage.mjs.map +1 -0
  290. package/dist/components/Workflow/useWorkflowKeyboard.d.ts +10 -0
  291. package/dist/components/Workflow/useWorkflowKeyboard.d.ts.map +1 -0
  292. package/dist/components/Workflow/useWorkflowKeyboard.js +116 -0
  293. package/dist/components/Workflow/useWorkflowKeyboard.js.map +1 -0
  294. package/dist/components/Workflow/useWorkflowKeyboard.mjs +114 -0
  295. package/dist/components/Workflow/useWorkflowKeyboard.mjs.map +1 -0
  296. package/dist/icons.js +17 -0
  297. package/dist/icons.js.map +1 -1
  298. package/dist/icons.mjs +1 -1
  299. package/dist/index.d.ts +1 -0
  300. package/dist/index.d.ts.map +1 -1
  301. package/dist/index.js +38 -0
  302. package/dist/index.js.map +1 -1
  303. package/dist/index.mjs +14 -0
  304. package/dist/index.mjs.map +1 -1
  305. package/dist/test-support/setup.d.ts +5 -0
  306. package/dist/test-support/setup.d.ts.map +1 -0
  307. package/dist/theme/colors.d.ts +196 -44
  308. package/dist/theme/colors.d.ts.map +1 -1
  309. package/dist/theme/colors.js +184 -22
  310. package/dist/theme/colors.js.map +1 -1
  311. package/dist/theme/colors.mjs +184 -22
  312. package/dist/theme/colors.mjs.map +1 -1
  313. package/dist/theme/global.d.ts.map +1 -1
  314. package/dist/theme/global.js +30 -2
  315. package/dist/theme/global.js.map +1 -1
  316. package/dist/theme/global.mjs +30 -2
  317. package/dist/theme/global.mjs.map +1 -1
  318. package/package.json +10 -2
  319. package/src/components/Icon/_constants/iconList.ts +35 -0
  320. package/src/components/Icon/index.tsx +20 -0
  321. package/src/components/SegmentedControl/SegmentedControl.tsx +21 -4
  322. package/src/components/Workflow/README.md +362 -0
  323. package/src/components/Workflow/Workflow.translations.json +112 -0
  324. package/src/components/Workflow/Workflow.tsx +189 -0
  325. package/src/components/Workflow/Workflow.types.ts +496 -0
  326. package/src/components/Workflow/WorkflowContext/WorkflowContext.tsx +215 -0
  327. package/src/components/Workflow/WorkflowContext/WorkflowContext.types.ts +122 -0
  328. package/src/components/Workflow/WorkflowContext/index.ts +10 -0
  329. package/src/components/Workflow/WorkflowContext/workflowSelection.test.tsx +93 -0
  330. package/src/components/Workflow/canvas/Canvas/BranchLabelBadge.tsx +69 -0
  331. package/src/components/Workflow/canvas/Canvas/Canvas.styles.ts +91 -0
  332. package/src/components/Workflow/canvas/Canvas/Canvas.tsx +773 -0
  333. package/src/components/Workflow/canvas/Canvas/CanvasControls.tsx +178 -0
  334. package/src/components/Workflow/canvas/Canvas/LabeledEdge.tsx +198 -0
  335. package/src/components/Workflow/canvas/Canvas/edgeLabelVariant.test.ts +26 -0
  336. package/src/components/Workflow/canvas/Canvas/edgeLabelVariant.ts +23 -0
  337. package/src/components/Workflow/canvas/Canvas/index.ts +1 -0
  338. package/src/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.tsx +96 -0
  339. package/src/components/Workflow/canvas/CollapsibleSection/index.ts +4 -0
  340. package/src/components/Workflow/canvas/DrawerShell/DrawerHeader.tsx +104 -0
  341. package/src/components/Workflow/canvas/DrawerShell/DrawerIssues.tsx +115 -0
  342. package/src/components/Workflow/canvas/DrawerShell/DrawerShell.tsx +408 -0
  343. package/src/components/Workflow/canvas/DrawerShell/index.ts +2 -0
  344. package/src/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.tsx +135 -0
  345. package/src/components/Workflow/canvas/EdgeInspector/endpointTitle.ts +38 -0
  346. package/src/components/Workflow/canvas/EdgeInspector/index.ts +2 -0
  347. package/src/components/Workflow/canvas/FieldWrapper/FieldWrapper.tsx +118 -0
  348. package/src/components/Workflow/canvas/FieldWrapper/index.ts +6 -0
  349. package/src/components/Workflow/canvas/FloatingCard/FloatingCard.tsx +37 -0
  350. package/src/components/Workflow/canvas/FloatingCard/index.ts +1 -0
  351. package/src/components/Workflow/canvas/GenericNode/GenericNode.tsx +114 -0
  352. package/src/components/Workflow/canvas/GenericNode/GenericNode.types.ts +10 -0
  353. package/src/components/Workflow/canvas/GenericNode/index.ts +5 -0
  354. package/src/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.tsx +284 -0
  355. package/src/components/Workflow/canvas/GraphErrorBanner/index.ts +1 -0
  356. package/src/components/Workflow/canvas/IconTile/IconTile.styles.ts +40 -0
  357. package/src/components/Workflow/canvas/IconTile/IconTile.tsx +36 -0
  358. package/src/components/Workflow/canvas/IconTile/IconTile.types.ts +13 -0
  359. package/src/components/Workflow/canvas/IconTile/index.ts +7 -0
  360. package/src/components/Workflow/canvas/IssueList/IssueList.tsx +84 -0
  361. package/src/components/Workflow/canvas/IssueList/index.ts +1 -0
  362. package/src/components/Workflow/canvas/NodePalette/NodePalette.styles.ts +7 -0
  363. package/src/components/Workflow/canvas/NodePalette/NodePalette.tsx +180 -0
  364. package/src/components/Workflow/canvas/NodePalette/NodePaletteToggle.tsx +39 -0
  365. package/src/components/Workflow/canvas/NodePalette/index.ts +3 -0
  366. package/src/components/Workflow/canvas/NodeShell/NodeShell.styles.ts +84 -0
  367. package/src/components/Workflow/canvas/NodeShell/NodeShell.tsx +321 -0
  368. package/src/components/Workflow/canvas/NodeShell/NodeShell.types.ts +45 -0
  369. package/src/components/Workflow/canvas/NodeShell/index.ts +8 -0
  370. package/src/components/Workflow/canvas/SeverityDot/SeverityDot.tsx +33 -0
  371. package/src/components/Workflow/canvas/SeverityDot/index.ts +1 -0
  372. package/src/components/Workflow/canvas/issueSeverity.ts +48 -0
  373. package/src/components/Workflow/canvas/useFieldFocusRequest.ts +54 -0
  374. package/src/components/Workflow/canvas/workflowLabelProps.ts +11 -0
  375. package/src/components/Workflow/connectionRules.test.ts +326 -0
  376. package/src/components/Workflow/connectionRules.ts +190 -0
  377. package/src/components/Workflow/createNode.test.ts +61 -0
  378. package/src/components/Workflow/createNode.ts +67 -0
  379. package/src/components/Workflow/graphHistory.test.ts +178 -0
  380. package/src/components/Workflow/graphHistory.ts +91 -0
  381. package/src/components/Workflow/graphObserver.ts +21 -0
  382. package/src/components/Workflow/graphReducer.test.ts +314 -0
  383. package/src/components/Workflow/graphReducer.ts +196 -0
  384. package/src/components/Workflow/index.ts +74 -0
  385. package/src/components/Workflow/layout/autoLayout.test.ts +170 -0
  386. package/src/components/Workflow/layout/autoLayout.ts +200 -0
  387. package/src/components/Workflow/stories/Workflow.stories.tsx +111 -0
  388. package/src/components/Workflow/stories/toyNodeTypes.tsx +146 -0
  389. package/src/components/Workflow/useWorkflowIssueMessage.test.ts +101 -0
  390. package/src/components/Workflow/useWorkflowIssueMessage.ts +49 -0
  391. package/src/components/Workflow/useWorkflowKeyboard.ts +126 -0
  392. package/src/index.ts +1 -0
  393. package/src/test-support/setup.ts +11 -0
  394. package/src/theme/SemanticTokens.mdx +61 -7
  395. package/src/theme/colors.ts +216 -26
  396. package/src/theme/global.ts +31 -2
@@ -1,5 +1,7 @@
1
1
  import { Icons } from './_constants/iconList';
2
2
 
3
+ export type { CreatedIcon } from './_utils/createIcon';
4
+
3
5
  // 각 아이콘을 개별적으로 export (Icons. 없이 직접 사용 가능)
4
6
  export const {
5
7
  // BI Icons
@@ -117,13 +119,31 @@ export const {
117
119
  // SL Icons
118
120
  SlSettings,
119
121
  // TB Icons
122
+ TbAlertCircle,
120
123
  TbAppWindowFilled,
124
+ TbArrowBackUp,
125
+ TbArrowForwardUp,
126
+ TbCheck,
127
+ TbChevronDown,
128
+ TbChevronUp,
121
129
  TbInfinity,
122
130
  TbLayoutNavbar,
131
+ TbLock,
123
132
  TbLockCog,
133
+ TbLockOpen,
134
+ TbMaximize,
124
135
  TbMessageChatbotFilled,
136
+ TbSitemap,
125
137
  TbSum,
126
138
  TbWorldSearch,
139
+ TbX,
140
+ // Lucide icons surfaced under friendly names (Workflow chrome)
141
+ AlertTriangle,
142
+ AlertOctagon,
143
+ GripVertical,
144
+ StickyNote,
145
+ Minus,
146
+ Plus,
127
147
  // Custom SVG Icons
128
148
  Analytics,
129
149
  Bulb,
@@ -66,9 +66,21 @@ export const SegmentedControl = forwardRef<
66
66
  }
67
67
  }}
68
68
  size={size}
69
- // Track + selected-indicator flip with the mode (light values preserved:
70
- // bg.subtle gray.50, bg.surface white/gray.0). The indicator's md
71
- // shadow carries the raised affordance in both modes.
69
+ // Light mode: track is bg.subtle (gray.50) and the selected indicator is
70
+ // bg.surface (white) lifted by an md shadow a classic raised thumb.
71
+ //
72
+ // Selected indicator rides on `bg.raised` — a raised neutral surface that
73
+ // resolves white in light and the lightest neutral (gray.1100) in dark,
74
+ // so the thumb reads as lifted above the `bg.subtle` track in both modes
75
+ // (`bg.surface` could not: its dark value is darker than the track). Dark
76
+ // mode also needs two things light mode doesn't, and neither
77
+ // maps to a token: a drop shadow is invisible on a dark canvas, so the
78
+ // indicator gains a soft ambient shadow + a translucent-white hairline
79
+ // edge; and the track only contrasts against the app canvas — on a
80
+ // same-or-lighter dark surface (e.g. a bg.surface card) it would vanish
81
+ // and leave the control looking like floating text, so a translucent
82
+ // hairline ring defines its bounds on any dark background. Both rings are
83
+ // box-shadows (not borders) so the matched item-height math is preserved.
72
84
  bg="bg.subtle"
73
85
  p="1"
74
86
  borderRadius={borderRadius}
@@ -77,8 +89,13 @@ export const SegmentedControl = forwardRef<
77
89
  {...rest}
78
90
  css={mergeCss(
79
91
  {
80
- '--segment-indicator-bg': `var(--chakra-colors-bg-surface)`,
92
+ '--segment-indicator-bg': `var(--chakra-colors-bg-raised)`,
81
93
  '--segment-indicator-shadow': `var(--chakra-shadows-md)`,
94
+ '.dark &': {
95
+ '--segment-indicator-shadow':
96
+ '0 1px 2px rgba(0, 0, 0, 0.45), 0 0 0 1px rgba(255, 255, 255, 0.08)',
97
+ boxShadow: '0 0 0 1px rgba(255, 255, 255, 0.12)',
98
+ },
82
99
  },
83
100
  css
84
101
  )}
@@ -0,0 +1,362 @@
1
+ # Workflow
2
+
3
+ A node-based **workflow / graph editor** built on [React Flow](https://reactflow.dev).
4
+ It owns the hard parts — canvas interaction, a drag-and-drop palette, an
5
+ undo/redo graph model, auto-layout, selection, and issue rendering — and stays
6
+ **domain-free**: it ships with **no node types of its own**. You describe your
7
+ domain by registering node types, and you wire up the surrounding chrome
8
+ (persistence, validation, an inspector) however your app wants.
9
+
10
+ > Mental model: this is to a workflow editor what React Flow is to a canvas —
11
+ > batteries for the editor, but *you bring the nodes* (and decide what clicking
12
+ > one does).
13
+
14
+ - [Quick start](#quick-start)
15
+ - [Defining node types](#defining-node-types)
16
+ - [The inspector / drawer](#the-inspector--drawer)
17
+ - [Reacting to selection](#reacting-to-selection)
18
+ - [Controlled vs uncontrolled graph](#controlled-vs-uncontrolled-graph)
19
+ - [Validation & issues](#validation--issues)
20
+ - [Internationalization](#internationalization-translate)
21
+ - [Passing host data (`hostBridge`)](#passing-host-data-hostbridge)
22
+ - [Theming, layout & read-only](#theming-layout--read-only)
23
+ - [Props reference](#props-reference)
24
+ - [Gotchas](#gotchas)
25
+
26
+ ---
27
+
28
+ ## Quick start
29
+
30
+ The component must render inside a `LogicianProvider` (it uses design-system
31
+ tokens), and React Flow's stylesheet is bundled automatically.
32
+
33
+ ```tsx
34
+ import { useState } from 'react';
35
+ import {
36
+ Workflow,
37
+ NodeInspector,
38
+ defineNodeType,
39
+ type Graph,
40
+ type NodeTypeDef,
41
+ } from '@mindlogic-ai/logician-ui';
42
+ import { Sparkles } from '@mindlogic-ai/logician-ui/icons';
43
+ import { FormControl, FormLabel, Input } from '@mindlogic-ai/logician-ui';
44
+
45
+ // 1. Describe your domain as node types.
46
+ type MessageConfig = { text: string };
47
+
48
+ const messageNode = defineNodeType<MessageConfig>({
49
+ kind: 'message',
50
+ label: 'Message',
51
+ category: 'ai',
52
+ icon: Sparkles,
53
+ defaultConfig: () => ({ text: '' }),
54
+ handles: () => ({ inputs: [{ id: 'in' }], outputs: [{ id: 'out' }] }),
55
+ getMetaChips: config => (config.text ? [config.text] : []),
56
+ // Optional: the body shown in the inspector drawer when this node is selected.
57
+ renderDrawer: ({ config, onChange, readOnly }) => (
58
+ <FormControl>
59
+ <FormLabel>Text</FormLabel>
60
+ <Input
61
+ value={config.text}
62
+ disabled={readOnly}
63
+ onChange={e => onChange({ ...config, text: e.target.value })}
64
+ />
65
+ </FormControl>
66
+ ),
67
+ });
68
+
69
+ const NODE_TYPES: NodeTypeDef[] = [messageNode];
70
+
71
+ // 2. Render the editor.
72
+ export function MyEditor() {
73
+ const [graph, setGraph] = useState<Graph>({ nodes: [], edges: [] });
74
+ return (
75
+ <Workflow nodeTypes={NODE_TYPES} graph={graph} onGraphChange={setGraph}>
76
+ {/* Opt in to the built-in inspector. Omit it to own inspection yourself
77
+ (see "Reacting to selection"). */}
78
+ <NodeInspector />
79
+ </Workflow>
80
+ );
81
+ }
82
+ ```
83
+
84
+ That's a full editor: drag `Message` from the palette, connect nodes, undo/redo,
85
+ auto-arrange, and edit a selected node in the drawer.
86
+
87
+ ---
88
+
89
+ ## Defining node types
90
+
91
+ A node type is a plain object created with `defineNodeType<TConfig>(...)`, where
92
+ `TConfig` is the shape of that node's `config`. The framework knows nothing about
93
+ your kinds — it just renders what the registry describes.
94
+
95
+ | Field | Required | Purpose |
96
+ | --- | --- | --- |
97
+ | `kind` | ✓ | Stable id for the type (e.g. `'message'`). Used in `node.kind` and id generation. Keep it English/snake-ish. |
98
+ | `label` | ✓ | Short operational noun shown on the card and in the palette. Intentionally **not** translated (matches n8n/Make/Dify). |
99
+ | `category` | ✓ | One of `trigger` · `ai` · `logic` · `safety` · `output` · `note`. Drives the icon-tile color. Color attaches to **category**, not kind. |
100
+ | `icon` | ✓ | A `CreatedIcon` (wrap any icon with `createIcon` from this package, or use one of the exported icons). |
101
+ | `defaultConfig` | ✓ | Value or factory `() => TConfig` for a freshly-dropped node. Prefer the factory for nested/mutable defaults. |
102
+ | `handles` | ✓ | `(config) => ({ inputs, outputs })`. Can depend on config (e.g. a classifier emitting one output per category). |
103
+ | `renderDrawer` | – | The inspector body for this kind. Omit and clicking the node is a no-op for editing. |
104
+ | `renderNode` | – | Escape hatch to fully replace the card body (e.g. a sticky Note). Most types use `getInstanceTitle` + `getMetaChips` instead. |
105
+ | `getInstanceTitle` | – | `(config) => string` for the snake_case identifier line. Defaults to the node id. |
106
+ | `getMetaChips` | – | `(config) => (string \| { text, tone })[]` — small chips under the title. `tone: 'danger' \| 'warning'` tints a value. |
107
+ | `descriptionKey` / `description` | – | Palette description. Prefer `descriptionKey` (resolved through your `translate`). |
108
+ | `placement` | – | Declarative constraints read by the palette/canvas: `minCount`, `maxCount`, `pinned` (can't delete), `role: 'start' \| 'end'`, `mustFollow(Directly)`. |
109
+ | `canConnect` | – | `(ctx) => boolean \| string` to reject a connection (return a reason string to explain). |
110
+ | `outputSchema` | – | `(config) => JSONSchema \| undefined` for variable-resolution features. |
111
+ | `getGraphIssues` | – | FE, graph-aware advisories merged into the node's canvas chrome (e.g. an unconnected required exit). Pure + cheap; runs every render. |
112
+ | `localizeDefaults` / `hostDefaults` | – | Overlay defaults at creation time using the translator / the `hostBridge` (e.g. seed a node's model from the tenant's live list). |
113
+
114
+ `resolveDefaultConfig(def)` is exported if you need to materialize a default
115
+ config yourself.
116
+
117
+ ---
118
+
119
+ ## The inspector / drawer
120
+
121
+ There are **three levels** of customization — pick per app:
122
+
123
+ **1. Built-in drawer (default).** Mount `<NodeInspector />` as a child. It opens a
124
+ floating card on node/edge selection, renders the selected node's `renderDrawer`
125
+ (or a built-in edge inspector), and provides delete/duplicate + inline issues.
126
+
127
+ ```tsx
128
+ <Workflow nodeTypes={NODE_TYPES} graph={graph} onGraphChange={setGraph}>
129
+ <NodeInspector dock="right" />
130
+ </Workflow>
131
+ ```
132
+
133
+ `<NodeInspector>` props: `dock` (`'left' | 'right'`, default `'right'`) and
134
+ `renderEdgeDrawer` (custom edge body; falls back to label + endpoints).
135
+
136
+ **2. Custom node bodies.** Keep `<NodeInspector>` but put whatever you want inside
137
+ each node type's `renderDrawer` — that's where domain-specific UI lives (model
138
+ pickers, validators, even modals). The framework never sees it.
139
+
140
+ **3. Fully custom — drive your own UI.** Omit `<NodeInspector>` entirely and render
141
+ your own panel *anywhere in your app* from the selection signal. See below.
142
+
143
+ ---
144
+
145
+ ## Reacting to selection
146
+
147
+ The editor owns selection and canvas interaction; it surfaces what's selected so
148
+ **clicking a node can control any part of your UI** — a side panel in your app
149
+ shell, a modal, a route, anything.
150
+
151
+ ```tsx
152
+ import { useState } from 'react';
153
+ import { Workflow, type WorkflowSelection } from '@mindlogic-ai/logician-ui';
154
+
155
+ function EditorWithMyOwnPanel() {
156
+ const [selection, setSelection] = useState<WorkflowSelection | null>(null);
157
+ return (
158
+ <div style={{ display: 'flex' }}>
159
+ <Workflow
160
+ nodeTypes={NODE_TYPES}
161
+ graph={graph}
162
+ onGraphChange={setGraph}
163
+ onSelectionChange={setSelection}
164
+ // no <NodeInspector> child → no built-in drawer
165
+ />
166
+ {selection?.type === 'node' && <MyNodePanel node={selection.node} />}
167
+ </div>
168
+ );
169
+ }
170
+ ```
171
+
172
+ Selection callbacks:
173
+
174
+ - `onSelectionChange(selection | null)` — fires on select, deselect (pane click,
175
+ `null`), and when the selected element is deleted. `WorkflowSelection` carries
176
+ `{ type, id, node }` or `{ type, id, edge }`.
177
+ - `onNodeClick(node)` / `onEdgeClick(edge)` — raw click convenience (e.g. "flip a
178
+ surface back into edit mode"). Selection still updates regardless.
179
+
180
+ You can also mount `<NodeInspector>` **and** listen to `onSelectionChange` — e.g.
181
+ to keep the built-in drawer but also highlight the selection elsewhere.
182
+
183
+ ---
184
+
185
+ ## Controlled vs uncontrolled graph
186
+
187
+ - **Controlled:** pass `graph` and `onGraphChange`. You own the source of truth.
188
+ Pass a *stable* reference and update it from `onGraphChange`.
189
+ - **Uncontrolled:** pass `defaultGraph` (or nothing) and read changes via
190
+ `onGraphChange` if you like. The component keeps its own state.
191
+
192
+ ```ts
193
+ type Graph = { nodes: GraphNode[]; edges: GraphEdge[] };
194
+ type GraphNode<TConfig = unknown> = {
195
+ id: string;
196
+ kind: string;
197
+ position: { x: number; y: number };
198
+ config: TConfig;
199
+ };
200
+ type GraphEdge = {
201
+ id: string;
202
+ source: string;
203
+ target: string;
204
+ sourceHandle?: string;
205
+ targetHandle?: string;
206
+ label?: string;
207
+ };
208
+ ```
209
+
210
+ Undo/redo is built in (and keyboard-wired). Two persistence hooks help hosts
211
+ whose autosave ignores position-only diffs:
212
+
213
+ - `onArrange(graph)` — fired after the one-click auto-arrange.
214
+ - `onHistoryNavigate(graph)` — fired after an undo/redo.
215
+
216
+ Wire both to a forced save if a tidy layout (or an undo of one) must survive a
217
+ reload.
218
+
219
+ ---
220
+
221
+ ## Validation & issues
222
+
223
+ Validation is **not** built in — the editor *renders* issues you supply, it does
224
+ not compute them. This keeps the source of truth wherever it belongs (usually
225
+ your backend).
226
+
227
+ ```tsx
228
+ <Workflow
229
+ nodeTypes={NODE_TYPES}
230
+ graph={graph}
231
+ issues={issues} // Issue[] you own — render-only
232
+ validating={isRevalidating} // show a "rechecking" affordance, keep prior issues
233
+ />
234
+ ```
235
+
236
+ ```ts
237
+ type Issue = {
238
+ severity: 'error' | 'warning';
239
+ code: string;
240
+ message: string; // English fallback
241
+ nodeId?: string; // attaches to a node
242
+ edgeId?: string; // attaches to an edge
243
+ fieldKey?: string; // renders inline under a specific field
244
+ messageVars?: Record<string, string | number>;
245
+ };
246
+ ```
247
+
248
+ Issues with a `nodeId`/`edgeId` highlight that element and appear in the drawer;
249
+ those with a `fieldKey` render inline under the matching input. Cheap, FE-only,
250
+ graph-aware advisories can also come from a node type's `getGraphIssues`.
251
+
252
+ > Localizing issue copy: render `issue.message`, or map `issue.code` to your own
253
+ > catalog. (The `useWorkflowIssueMessage` hook maps `code` → a
254
+ > `workflow_be_<code>` key via your injected `translate`, falling back to
255
+ > `issue.message`.)
256
+
257
+ ---
258
+
259
+ ## Internationalization (`translate`)
260
+
261
+ All chrome copy (palette, controls, inspector, node `descriptionKey`s) goes
262
+ through a single injected translator, so the editor localizes with the rest of
263
+ your app:
264
+
265
+ ```tsx
266
+ <Workflow nodeTypes={NODE_TYPES} translate={myTranslate} />
267
+ ```
268
+
269
+ `translate: (key: string, vars?: Record<string, string | number>) => ReactNode`.
270
+ It must resolve both the editor's own `workflow_*` keys **and** any
271
+ `descriptionKey`s you set on your node types (pass a function bound to your full
272
+ catalog).
273
+
274
+ If you omit `translate`, the component falls back to its bundled
275
+ `Workflow.translations.json` via the design system's `useTranslate`. ⚠️ That
276
+ default currently resolves Korean (`useTranslate` does not yet read
277
+ `LanguageContext`) — pass your own `translate` for any non-Korean app.
278
+
279
+ ---
280
+
281
+ ## Passing host data (`hostBridge`)
282
+
283
+ Node inspectors often need app data the framework can't know about (a live model
284
+ list, API clients, the current entity id). Thread it opaquely:
285
+
286
+ ```tsx
287
+ <Workflow nodeTypes={NODE_TYPES} hostBridge={{ chatbotId, llmModels }} />
288
+ ```
289
+
290
+ `hostBridge` is `unknown` by design. Inside `renderDrawer` (and
291
+ `hostDefaults`/`localizeDefaults`) you narrow it to your shape — the core never
292
+ depends on it.
293
+
294
+ ---
295
+
296
+ ## Theming, layout & read-only
297
+
298
+ - **Theme:** render inside `LogicianProvider`. Node-tile colors come from the six
299
+ categories; override the mapping with `categoryTokens` if needed.
300
+ - **Palette:** `showPalette` (default `true`) toggles the drag-to-add palette.
301
+ - **Footer:** `footer` is a slot below the canvas (toolbars, run controls).
302
+ - **Children:** rendered inside the canvas frame (like React Flow's
303
+ `<Controls>`/`<MiniMap>`/`<Panel>`) and inside the Workflow context, so they can
304
+ call `useWorkflow()`. This is where `<NodeInspector>` goes.
305
+ - **Sizing:** `minHeight` (default `'500px'`); lower it for an embedded preview.
306
+ - **Read-only:** `readOnly` hides the palette, disables connect/drag/delete, and
307
+ turns a mounted `<NodeInspector>` into a legible, non-editing view.
308
+
309
+ ```tsx
310
+ // Static, read-only thumbnail.
311
+ <Workflow nodeTypes={NODE_TYPES} graph={graph} readOnly showPalette={false} minHeight={0} />
312
+ ```
313
+
314
+ Advanced: `useWorkflow()` (inside the tree) exposes the graph, `dispatch`,
315
+ selection, `undo`/`redo`, and issue maps if you build custom canvas-anchored
316
+ surfaces.
317
+
318
+ ---
319
+
320
+ ## Props reference
321
+
322
+ | Prop | Type | Notes |
323
+ | --- | --- | --- |
324
+ | `nodeTypes` | `NodeTypeDef[]` | **Required.** Your registered kinds. |
325
+ | `graph` | `Graph` | Controlled graph (pair with `onGraphChange`). |
326
+ | `onGraphChange` | `(g: Graph) => void` | Fired on every edit. |
327
+ | `defaultGraph` | `Graph` | Uncontrolled initial graph. |
328
+ | `translate` | `(key, vars?) => ReactNode` | Chrome + `descriptionKey` translator. |
329
+ | `issues` | `Issue[]` | Render-only validation (pass a stable ref). |
330
+ | `validating` | `boolean` | Show "rechecking" while issues are stale/in-flight. |
331
+ | `readOnly` | `boolean` | Disable editing; palette hidden. |
332
+ | `showPalette` | `boolean` | Default `true`. |
333
+ | `onSelectionChange` | `(sel \| null) => void` | Selection changed (node/edge/deselect). |
334
+ | `onNodeClick` / `onEdgeClick` | `(node) / (edge) => void` | Raw click convenience. |
335
+ | `onArrange` | `(g: Graph) => void` | After one-click auto-arrange. |
336
+ | `onHistoryNavigate` | `(g: Graph) => void` | After undo/redo. |
337
+ | `children` | `ReactNode` | Canvas overlay slot (mount `<NodeInspector>` here). |
338
+ | `footer` | `ReactNode` | Slot below the canvas. |
339
+ | `categoryTokens` | `CategoryTokenMap` | Override category → color tokens. |
340
+ | `hostBridge` | `unknown` | Opaque host data for inspectors. |
341
+ | `minHeight` | `string \| number` | Default `'500px'`. |
342
+ | `onIssuesChange` | `(issues) => void` | Notified when the issues ref changes. |
343
+
344
+ `<NodeInspector>`: `dock?: 'left' | 'right'`, `renderEdgeDrawer?: ComponentType<EdgeDrawerRenderProps>`.
345
+
346
+ ---
347
+
348
+ ## Gotchas
349
+
350
+ - **No node types ship.** Without `nodeTypes` the editor is an empty shell. That's
351
+ by design — register your domain.
352
+ - **No validation engine.** `issues` is render-only; compute them yourself.
353
+ - **i18n default is Korean.** Pass `translate` for non-Korean apps (see above).
354
+ - **Wrap in `LogicianProvider`.** Colors resolve from design tokens; React Flow's
355
+ CSS is bundled, but your bundler must allow the package's transitive CSS import
356
+ (fine in Next.js).
357
+ - **Controlled graph needs `onGraphChange`.** Otherwise edits can't flow back.
358
+ - **Pass a stable `issues` reference** (e.g. `useMemo`) — a fresh array every
359
+ render makes `onIssuesChange` fire every render.
360
+ - **`<NodeInspector>` must be a child of `<Workflow>`** (it reads the Workflow
361
+ context). It won't work rendered outside the tree — use `onSelectionChange` to
362
+ drive UI that lives elsewhere.
@@ -0,0 +1,112 @@
1
+ {
2
+ "workflow_drawer_empty_settings": {
3
+ "ko": "이 노드는 편집할 수 있는 설정이 없습니다.",
4
+ "en": "This node has no editable settings.",
5
+ "ja": "このノードには編集できる設定がありません。"
6
+ },
7
+ "workflow_drawer_graph_group_title": {
8
+ "ko": "그래프",
9
+ "en": "Graph",
10
+ "ja": "グラフ"
11
+ },
12
+ "workflow_drawer_issues_error_title": {
13
+ "ko": "수정이 필요해요",
14
+ "en": "Fixes needed",
15
+ "ja": "修正が必要です"
16
+ },
17
+ "workflow_drawer_issues_warning_title": {
18
+ "ko": "확인해 주세요",
19
+ "en": "Worth checking",
20
+ "ja": "確認してください"
21
+ },
22
+ "workflow_edge_connection": {
23
+ "ko": "{source} → {target}",
24
+ "en": "{source} → {target}",
25
+ "ja": "{source} → {target}"
26
+ },
27
+ "workflow_edge_delete": {
28
+ "ko": "연결 삭제",
29
+ "en": "Delete connection",
30
+ "ja": "接続を削除"
31
+ },
32
+ "workflow_edge_endpoints_heading": {
33
+ "ko": "연결 지점",
34
+ "en": "Endpoints",
35
+ "ja": "接続ポイント"
36
+ },
37
+ "workflow_edge_label_label": {
38
+ "ko": "라벨",
39
+ "en": "Label",
40
+ "ja": "ラベル"
41
+ },
42
+ "workflow_edge_label_placeholder": {
43
+ "ko": "연결 라벨 (선택)",
44
+ "en": "Connection label (optional)",
45
+ "ja": "接続ラベル(任意)"
46
+ },
47
+ "workflow_edge_source_label": {
48
+ "ko": "출발",
49
+ "en": "Source",
50
+ "ja": "送信元"
51
+ },
52
+ "workflow_edge_target_label": {
53
+ "ko": "도착",
54
+ "en": "Target",
55
+ "ja": "送信先"
56
+ },
57
+ "workflow_issues_errors_label": {
58
+ "ko": "오류",
59
+ "en": "Errors",
60
+ "ja": "エラー"
61
+ },
62
+ "workflow_issues_summary_errors": {
63
+ "ko": "오류 {count}개",
64
+ "en": "{count} error(s)",
65
+ "ja": "エラー {count}件"
66
+ },
67
+ "workflow_issues_summary_warnings": {
68
+ "ko": "경고 {count}개",
69
+ "en": "{count} warning(s)",
70
+ "ja": "警告 {count}件"
71
+ },
72
+ "workflow_issues_validating": {
73
+ "ko": "변경 사항 검증 중…",
74
+ "en": "Validating changes…",
75
+ "ja": "変更内容を検証中…"
76
+ },
77
+ "workflow_issues_warnings_label": {
78
+ "ko": "경고",
79
+ "en": "Warnings",
80
+ "ja": "警告"
81
+ },
82
+ "workflow_node_close": {
83
+ "ko": "노드 설정 닫기",
84
+ "en": "Close node settings",
85
+ "ja": "ノード設定を閉じる"
86
+ },
87
+ "workflow_node_delete": {
88
+ "ko": "노드 삭제",
89
+ "en": "Delete node",
90
+ "ja": "ノードを削除"
91
+ },
92
+ "workflow_node_duplicate": {
93
+ "ko": "노드 복제",
94
+ "en": "Duplicate node",
95
+ "ja": "ノードを複製"
96
+ },
97
+ "workflow_node_overflow_label": {
98
+ "ko": "더보기",
99
+ "en": "More actions",
100
+ "ja": "その他の操作"
101
+ },
102
+ "workflow_palette_close": {
103
+ "ko": "노드 추가 닫기",
104
+ "en": "Close node panel",
105
+ "ja": "ノードパネルを閉じる"
106
+ },
107
+ "workflow_palette_title": {
108
+ "ko": "노드 추가",
109
+ "en": "Create node",
110
+ "ja": "ノードを追加"
111
+ }
112
+ }