@cere/cere-design-system 0.0.44 → 0.1.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 (154) hide show
  1. package/dist/WorkflowNode-BnxXO6t_.d.mts +46 -0
  2. package/dist/WorkflowNode-BnxXO6t_.d.ts +46 -0
  3. package/dist/buttons.d.mts +114 -0
  4. package/dist/buttons.d.ts +114 -0
  5. package/dist/buttons.js +19 -0
  6. package/dist/buttons.js.map +1 -0
  7. package/dist/buttons.mjs +19 -0
  8. package/dist/buttons.mjs.map +1 -0
  9. package/dist/carousel.d.mts +51 -0
  10. package/dist/carousel.d.ts +51 -0
  11. package/dist/carousel.js +185 -0
  12. package/dist/carousel.js.map +1 -0
  13. package/dist/carousel.mjs +185 -0
  14. package/dist/carousel.mjs.map +1 -0
  15. package/dist/charts.d.mts +209 -0
  16. package/dist/charts.d.ts +209 -0
  17. package/dist/charts.js +20 -0
  18. package/dist/charts.js.map +1 -0
  19. package/dist/charts.mjs +20 -0
  20. package/dist/charts.mjs.map +1 -0
  21. package/dist/chunk-27JEWSWA.mjs +233 -0
  22. package/dist/chunk-27JEWSWA.mjs.map +1 -0
  23. package/dist/chunk-2EBCST6X.js +25 -0
  24. package/dist/chunk-2EBCST6X.js.map +1 -0
  25. package/dist/chunk-3WCMINE5.mjs +490 -0
  26. package/dist/chunk-3WCMINE5.mjs.map +1 -0
  27. package/dist/chunk-463SRKKD.js +111 -0
  28. package/dist/chunk-463SRKKD.js.map +1 -0
  29. package/dist/chunk-5ASG6G6U.mjs +40 -0
  30. package/dist/chunk-5ASG6G6U.mjs.map +1 -0
  31. package/dist/chunk-6EUAU67C.mjs +374 -0
  32. package/dist/chunk-6EUAU67C.mjs.map +1 -0
  33. package/dist/chunk-AIY6222Q.js +11 -0
  34. package/dist/chunk-AIY6222Q.js.map +1 -0
  35. package/dist/chunk-AJBM7IE6.mjs +2366 -0
  36. package/dist/chunk-AJBM7IE6.mjs.map +1 -0
  37. package/dist/chunk-ATIFLPH6.mjs +278 -0
  38. package/dist/chunk-ATIFLPH6.mjs.map +1 -0
  39. package/dist/chunk-BIZK6FUD.js +37 -0
  40. package/dist/chunk-BIZK6FUD.js.map +1 -0
  41. package/dist/chunk-CCN6M4LI.js +103 -0
  42. package/dist/chunk-CCN6M4LI.js.map +1 -0
  43. package/dist/chunk-CUCKULYC.mjs +2658 -0
  44. package/dist/chunk-CUCKULYC.mjs.map +1 -0
  45. package/dist/chunk-CWJ4OU6W.mjs +45 -0
  46. package/dist/chunk-CWJ4OU6W.mjs.map +1 -0
  47. package/dist/chunk-EOF3QNPF.js +2366 -0
  48. package/dist/chunk-EOF3QNPF.js.map +1 -0
  49. package/dist/chunk-FFZ5S7PQ.mjs +146 -0
  50. package/dist/chunk-FFZ5S7PQ.mjs.map +1 -0
  51. package/dist/chunk-FN5YL4BK.js +278 -0
  52. package/dist/chunk-FN5YL4BK.js.map +1 -0
  53. package/dist/chunk-HLH2VWXL.js +2658 -0
  54. package/dist/chunk-HLH2VWXL.js.map +1 -0
  55. package/dist/chunk-IE6GCHDI.mjs +530 -0
  56. package/dist/chunk-IE6GCHDI.mjs.map +1 -0
  57. package/dist/chunk-JBHRAAN3.js +31 -0
  58. package/dist/chunk-JBHRAAN3.js.map +1 -0
  59. package/dist/chunk-JS4IB5IU.mjs +162 -0
  60. package/dist/chunk-JS4IB5IU.mjs.map +1 -0
  61. package/dist/chunk-KF2Y7HO3.js +595 -0
  62. package/dist/chunk-KF2Y7HO3.js.map +1 -0
  63. package/dist/chunk-KPDYKK3V.js +162 -0
  64. package/dist/chunk-KPDYKK3V.js.map +1 -0
  65. package/dist/chunk-KVBMZNWT.mjs +103 -0
  66. package/dist/chunk-KVBMZNWT.mjs.map +1 -0
  67. package/dist/chunk-L2TIGA7I.js +530 -0
  68. package/dist/chunk-L2TIGA7I.js.map +1 -0
  69. package/dist/chunk-MNM6HE72.js +146 -0
  70. package/dist/chunk-MNM6HE72.js.map +1 -0
  71. package/dist/chunk-NXTVJ6PY.js +374 -0
  72. package/dist/chunk-NXTVJ6PY.js.map +1 -0
  73. package/dist/chunk-OWWDNDF4.js +40 -0
  74. package/dist/chunk-OWWDNDF4.js.map +1 -0
  75. package/dist/chunk-PHMNZK2R.mjs +18 -0
  76. package/dist/chunk-PHMNZK2R.mjs.map +1 -0
  77. package/dist/chunk-PWF2NJDB.mjs +377 -0
  78. package/dist/chunk-PWF2NJDB.mjs.map +1 -0
  79. package/dist/chunk-QBCRH7YF.mjs +37 -0
  80. package/dist/chunk-QBCRH7YF.mjs.map +1 -0
  81. package/dist/chunk-QD6RLAO2.mjs +11 -0
  82. package/dist/chunk-QD6RLAO2.mjs.map +1 -0
  83. package/dist/chunk-QY65OUAC.mjs +111 -0
  84. package/dist/chunk-QY65OUAC.mjs.map +1 -0
  85. package/dist/chunk-QYYQYZHV.js +45 -0
  86. package/dist/chunk-QYYQYZHV.js.map +1 -0
  87. package/dist/chunk-T7LPABOL.mjs +595 -0
  88. package/dist/chunk-T7LPABOL.mjs.map +1 -0
  89. package/dist/chunk-THQKYTQE.js +490 -0
  90. package/dist/chunk-THQKYTQE.js.map +1 -0
  91. package/dist/chunk-U2QHFISG.js +18 -0
  92. package/dist/chunk-U2QHFISG.js.map +1 -0
  93. package/dist/chunk-UPGFBPFX.mjs +25 -0
  94. package/dist/chunk-UPGFBPFX.mjs.map +1 -0
  95. package/dist/chunk-X7E6GMFL.js +233 -0
  96. package/dist/chunk-X7E6GMFL.js.map +1 -0
  97. package/dist/chunk-XF66WQZE.mjs +1535 -0
  98. package/dist/chunk-XF66WQZE.mjs.map +1 -0
  99. package/dist/chunk-YQOZPLTY.js +1535 -0
  100. package/dist/chunk-YQOZPLTY.js.map +1 -0
  101. package/dist/chunk-ZGCN5WCG.js +377 -0
  102. package/dist/chunk-ZGCN5WCG.js.map +1 -0
  103. package/dist/chunk-ZP26PGMS.mjs +31 -0
  104. package/dist/chunk-ZP26PGMS.mjs.map +1 -0
  105. package/dist/feedback.d.mts +356 -0
  106. package/dist/feedback.d.ts +356 -0
  107. package/dist/feedback.js +43 -0
  108. package/dist/feedback.js.map +1 -0
  109. package/dist/feedback.mjs +43 -0
  110. package/dist/feedback.mjs.map +1 -0
  111. package/dist/icons.d.mts +22 -0
  112. package/dist/icons.d.ts +22 -0
  113. package/dist/icons.js +23 -0
  114. package/dist/icons.js.map +1 -0
  115. package/dist/icons.mjs +23 -0
  116. package/dist/icons.mjs.map +1 -0
  117. package/dist/index.d.mts +171 -3069
  118. package/dist/index.d.ts +171 -3069
  119. package/dist/index.js +320 -10077
  120. package/dist/index.js.map +1 -1
  121. package/dist/index.mjs +262 -9978
  122. package/dist/index.mjs.map +1 -1
  123. package/dist/inputs.d.mts +109 -0
  124. package/dist/inputs.d.ts +109 -0
  125. package/dist/inputs.js +43 -0
  126. package/dist/inputs.js.map +1 -0
  127. package/dist/inputs.mjs +43 -0
  128. package/dist/inputs.mjs.map +1 -0
  129. package/dist/layout.d.mts +927 -0
  130. package/dist/layout.d.ts +927 -0
  131. package/dist/layout.js +122 -0
  132. package/dist/layout.js.map +1 -0
  133. package/dist/layout.mjs +122 -0
  134. package/dist/layout.mjs.map +1 -0
  135. package/dist/navigation.d.mts +716 -0
  136. package/dist/navigation.d.ts +716 -0
  137. package/dist/navigation.js +58 -0
  138. package/dist/navigation.js.map +1 -0
  139. package/dist/navigation.mjs +58 -0
  140. package/dist/navigation.mjs.map +1 -0
  141. package/dist/third-party.d.mts +637 -0
  142. package/dist/third-party.d.ts +637 -0
  143. package/dist/third-party.js +45 -0
  144. package/dist/third-party.js.map +1 -0
  145. package/dist/third-party.mjs +45 -0
  146. package/dist/third-party.mjs.map +1 -0
  147. package/dist/tokens.css +2 -1
  148. package/dist/utilities.d.mts +39 -0
  149. package/dist/utilities.d.ts +39 -0
  150. package/dist/utilities.js +19 -0
  151. package/dist/utilities.js.map +1 -0
  152. package/dist/utilities.mjs +19 -0
  153. package/dist/utilities.mjs.map +1 -0
  154. package/package.json +55 -1
@@ -0,0 +1,18 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// src/components/layout/Link.tsx
2
+ var _Link = require('@mui/material/Link'); var _Link2 = _interopRequireDefault(_Link);
3
+ var _styles = require('@mui/material/styles');
4
+ var _jsxruntime = require('react/jsx-runtime');
5
+ var StyledLink = _styles.styled.call(void 0, (0, _Link2.default))(({ theme }) => ({
6
+ color: theme.palette.primary.main,
7
+ "&:hover": {
8
+ color: theme.palette.primary.light
9
+ }
10
+ }));
11
+ var Link = ({ underline = "hover", ...props }) => {
12
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StyledLink, { underline, ...props });
13
+ };
14
+
15
+
16
+
17
+ exports.Link = Link;
18
+ //# sourceMappingURL=chunk-U2QHFISG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/cere-design-system/cere-design-system/dist/chunk-U2QHFISG.js","../src/components/layout/Link.tsx"],"names":[],"mappings":"AAAA;ACCA,sFAAmD;AACnD,8CAAuB;AAad,+CAAA;AART,IAAM,WAAA,EAAa,4BAAA,mBAAc,CAAA,CAAE,CAAC,EAAE,MAAM,CAAA,EAAA,GAAA,CAAO;AAAA,EACjD,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,IAAA;AAAA,EAC7B,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ;AAAA,EAC/B;AACF,CAAA,CAAE,CAAA;AAEK,IAAM,KAAA,EAA4B,CAAC,EAAE,UAAA,EAAY,OAAA,EAAS,GAAG,MAAM,CAAA,EAAA,GAAM;AAC9E,EAAA,uBAAO,6BAAA,UAAC,EAAA,EAAW,SAAA,EAAuB,GAAG,MAAA,CAAO,CAAA;AACtD,CAAA;ADHA;AACA;AACE;AACF,oBAAC","file":"/home/runner/work/cere-design-system/cere-design-system/dist/chunk-U2QHFISG.js","sourcesContent":[null,"import React from 'react';\nimport MuiLink, { LinkProps as MuiLinkProps } from '@mui/material/Link';\nimport { styled } from '@mui/material/styles';\nexport interface LinkProps extends MuiLinkProps {\n underline?: 'none' | 'hover' | 'always';\n}\n\nconst StyledLink = styled(MuiLink)(({ theme }) => ({\n color: theme.palette.primary.main,\n '&:hover': {\n color: theme.palette.primary.light,\n },\n}));\n\nexport const Link: React.FC<LinkProps> = ({ underline = 'hover', ...props }) => {\n return <StyledLink underline={underline} {...props} />;\n};\n\n"]}
@@ -0,0 +1,25 @@
1
+ // src/components/icons/CereIcon.tsx
2
+ import * as React from "react";
3
+ import SvgIcon from "@mui/material/SvgIcon";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ var CereIcon = React.forwardRef(
6
+ function CereIcon2(props, ref) {
7
+ const reactId = React.useId();
8
+ const clipId = `cere-icon-clip-${reactId}`;
9
+ return /* @__PURE__ */ jsxs(SvgIcon, { ref, ...props, viewBox: "0 0 24 28", children: [
10
+ /* @__PURE__ */ jsx("g", { clipPath: `url(#${clipId})`, children: /* @__PURE__ */ jsx(
11
+ "path",
12
+ {
13
+ d: "M12.77 26.848c-5.95 0-10.572-2.88-12.063-7.515l-.334-1.037.978-.471c.103-.051 2.668-1.35 2.509-3.901-.169-2.695-2.339-3.96-2.431-4.012L.475 9.37l.412-1.025C2.838 3.601 7.28.77 12.77.77c4.314 0 8.095 1.698 10.37 4.658l.575.748-4.535 6.146-1.013-.984c-.02-.019-2.175-2.069-4.678-2.08-2.411-.012-3.362.902-3.401.941L8.3 8.473c.164-.175 1.695-1.733 5.199-1.707 2.232.01 4.161 1.084 5.3 1.896l1.778-2.41c-1.845-1.91-4.636-2.99-7.808-2.99-4.095 0-7.459 1.91-9.182 5.155 1.042.879 2.57 2.62 2.742 5.35.185 2.95-1.692 4.806-2.913 5.692 1.445 3.043 4.932 4.895 9.354 4.895 3.063 0 6.198-1.2 8.134-3.053l-2.023-2.55c-1.077.768-2.917 1.764-5.323 1.89-3.416.177-5.436-1.404-5.52-1.471l1.536-1.954c.047.035 1.42 1.065 3.855.936 2.884-.15 4.734-2.012 4.75-2.032l.98-1.002.874 1.094 4.088 5.155-.627.779c-2.3 2.856-6.508 4.702-10.726 4.702Z",
14
+ fill: "currentColor"
15
+ }
16
+ ) }),
17
+ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("clipPath", { id: clipId, children: /* @__PURE__ */ jsx("path", { fill: "currentColor", transform: "translate(.373 .77)", d: "M0 0h23.615v26.36H0z" }) }) })
18
+ ] });
19
+ }
20
+ );
21
+
22
+ export {
23
+ CereIcon
24
+ };
25
+ //# sourceMappingURL=chunk-UPGFBPFX.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/icons/CereIcon.tsx"],"sourcesContent":["import * as React from 'react';\nimport SvgIcon, { type SvgIconProps } from '@mui/material/SvgIcon';\n\nexport const CereIcon = React.forwardRef<SVGSVGElement, SvgIconProps>(\n function CereIcon(props, ref) {\n const reactId = React.useId();\n const clipId = `cere-icon-clip-${reactId}`;\n return (\n <SvgIcon ref={ref} {...props} viewBox=\"0 0 24 28\">\n <g clipPath={`url(#${clipId})`}>\n <path\n d=\"M12.77 26.848c-5.95 0-10.572-2.88-12.063-7.515l-.334-1.037.978-.471c.103-.051 2.668-1.35 2.509-3.901-.169-2.695-2.339-3.96-2.431-4.012L.475 9.37l.412-1.025C2.838 3.601 7.28.77 12.77.77c4.314 0 8.095 1.698 10.37 4.658l.575.748-4.535 6.146-1.013-.984c-.02-.019-2.175-2.069-4.678-2.08-2.411-.012-3.362.902-3.401.941L8.3 8.473c.164-.175 1.695-1.733 5.199-1.707 2.232.01 4.161 1.084 5.3 1.896l1.778-2.41c-1.845-1.91-4.636-2.99-7.808-2.99-4.095 0-7.459 1.91-9.182 5.155 1.042.879 2.57 2.62 2.742 5.35.185 2.95-1.692 4.806-2.913 5.692 1.445 3.043 4.932 4.895 9.354 4.895 3.063 0 6.198-1.2 8.134-3.053l-2.023-2.55c-1.077.768-2.917 1.764-5.323 1.89-3.416.177-5.436-1.404-5.52-1.471l1.536-1.954c.047.035 1.42 1.065 3.855.936 2.884-.15 4.734-2.012 4.75-2.032l.98-1.002.874 1.094 4.088 5.155-.627.779c-2.3 2.856-6.508 4.702-10.726 4.702Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id={clipId}>\n <path fill=\"currentColor\" transform=\"translate(.373 .77)\" d=\"M0 0h23.615v26.36H0z\" />\n </clipPath>\n </defs>\n </SvgIcon>\n );\n },\n);\n"],"mappings":";AAAA,YAAY,WAAW;AACvB,OAAO,aAAoC;AAOrC,SAEI,KAFJ;AALC,IAAM,WAAiB;AAAA,EAC5B,SAASA,UAAS,OAAO,KAAK;AAC5B,UAAM,UAAgB,YAAM;AAC5B,UAAM,SAAS,kBAAkB,OAAO;AACxC,WACE,qBAAC,WAAQ,KAAW,GAAG,OAAO,SAAQ,aACpC;AAAA,0BAAC,OAAE,UAAU,QAAQ,MAAM,KACzB;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACP,GACF;AAAA,MACA,oBAAC,UACC,8BAAC,cAAS,IAAI,QACZ,8BAAC,UAAK,MAAK,gBAAe,WAAU,uBAAsB,GAAE,wBAAuB,GACrF,GACF;AAAA,OACF;AAAA,EAEJ;AACF;","names":["CereIcon"]}
@@ -0,0 +1,233 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }// src/components/layout/WorkflowNode/WorkflowNode.tsx
2
+ var _material = require('@mui/material');
3
+ var _PlayCircleOutline = require('@mui/icons-material/PlayCircleOutline'); var _PlayCircleOutline2 = _interopRequireDefault(_PlayCircleOutline);
4
+ var _CloudDownload = require('@mui/icons-material/CloudDownload'); var _CloudDownload2 = _interopRequireDefault(_CloudDownload);
5
+ var _Waves = require('@mui/icons-material/Waves'); var _Waves2 = _interopRequireDefault(_Waves);
6
+ var _Link = require('@mui/icons-material/Link'); var _Link2 = _interopRequireDefault(_Link);
7
+ var _Cloud = require('@mui/icons-material/Cloud'); var _Cloud2 = _interopRequireDefault(_Cloud);
8
+ var _Bolt = require('@mui/icons-material/Bolt'); var _Bolt2 = _interopRequireDefault(_Bolt);
9
+ var _FlashOn = require('@mui/icons-material/FlashOn'); var _FlashOn2 = _interopRequireDefault(_FlashOn);
10
+ var _PlayArrow = require('@mui/icons-material/PlayArrow'); var _PlayArrow2 = _interopRequireDefault(_PlayArrow);
11
+ var _Psychology = require('@mui/icons-material/Psychology'); var _Psychology2 = _interopRequireDefault(_Psychology);
12
+ var _SmartToyOutlined = require('@mui/icons-material/SmartToyOutlined'); var _SmartToyOutlined2 = _interopRequireDefault(_SmartToyOutlined);
13
+ var _CallSplit = require('@mui/icons-material/CallSplit'); var _CallSplit2 = _interopRequireDefault(_CallSplit);
14
+ var _Send = require('@mui/icons-material/Send'); var _Send2 = _interopRequireDefault(_Send);
15
+ var _CheckCircleOutline = require('@mui/icons-material/CheckCircleOutline'); var _CheckCircleOutline2 = _interopRequireDefault(_CheckCircleOutline);
16
+ var _ForkRight = require('@mui/icons-material/ForkRight'); var _ForkRight2 = _interopRequireDefault(_ForkRight);
17
+ var _CallMerge = require('@mui/icons-material/CallMerge'); var _CallMerge2 = _interopRequireDefault(_CallMerge);
18
+
19
+ var _jsxruntime = require('react/jsx-runtime');
20
+ var WORKFLOW_NODE_LABELS = {
21
+ start: "Start",
22
+ input: "Input",
23
+ stream: "Stream",
24
+ rafts: "Rafts",
25
+ cubbies: "Cubbies",
26
+ events: "Events",
27
+ trigger: "Trigger",
28
+ action: "Action",
29
+ aiModel: "AI Model",
30
+ aiAgent: "Agent",
31
+ condition: "Condition",
32
+ output: "Output",
33
+ end: "End",
34
+ parallel: "Parallel",
35
+ merge: "Merge"
36
+ };
37
+ var NODE_ICON_SIZE = 18;
38
+ var WORKFLOW_NODE_SHADOW = "0px 1px 3px rgba(0, 0, 0, 0.1), 0px 1px 2px rgba(0, 0, 0, 0.1)";
39
+ var WORKFLOW_NODE_ICONS = {
40
+ start: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _PlayCircleOutline2.default, { sx: { fontSize: NODE_ICON_SIZE } }),
41
+ input: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _CloudDownload2.default, { sx: { fontSize: NODE_ICON_SIZE } }),
42
+ stream: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Waves2.default, { sx: { fontSize: NODE_ICON_SIZE } }),
43
+ rafts: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Link2.default, { sx: { fontSize: NODE_ICON_SIZE } }),
44
+ cubbies: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Cloud2.default, { sx: { fontSize: NODE_ICON_SIZE } }),
45
+ events: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Bolt2.default, { sx: { fontSize: NODE_ICON_SIZE } }),
46
+ trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _FlashOn2.default, { sx: { fontSize: NODE_ICON_SIZE } }),
47
+ action: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _PlayArrow2.default, { sx: { fontSize: NODE_ICON_SIZE } }),
48
+ aiModel: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Psychology2.default, { sx: { fontSize: NODE_ICON_SIZE } }),
49
+ aiAgent: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _SmartToyOutlined2.default, { sx: { fontSize: NODE_ICON_SIZE } }),
50
+ condition: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _CallSplit2.default, { sx: { fontSize: NODE_ICON_SIZE } }),
51
+ output: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Send2.default, { sx: { fontSize: NODE_ICON_SIZE } }),
52
+ end: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _CheckCircleOutline2.default, { sx: { fontSize: NODE_ICON_SIZE } }),
53
+ parallel: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ForkRight2.default, { sx: { fontSize: NODE_ICON_SIZE } }),
54
+ merge: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _CallMerge2.default, { sx: { fontSize: NODE_ICON_SIZE } })
55
+ };
56
+ var BADGE_TYPOGRAPHY = {
57
+ fontSize: "12px",
58
+ fontWeight: 500,
59
+ lineHeight: 1.33
60
+ };
61
+ var SideConnectorDot = ({
62
+ accentColor,
63
+ side
64
+ }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
65
+ _material.Box,
66
+ {
67
+ "data-testid": `workflow-node-dot-${side}`,
68
+ sx: (theme) => ({
69
+ position: "absolute",
70
+ top: "50%",
71
+ [side]: "-4px",
72
+ transform: "translateY(-50%)",
73
+ width: "8px",
74
+ height: "8px",
75
+ borderRadius: "999px",
76
+ border: `2px solid ${theme.palette.common.white}`,
77
+ backgroundColor: accentColor,
78
+ boxShadow: WORKFLOW_NODE_SHADOW,
79
+ zIndex: 1,
80
+ pointerEvents: "none"
81
+ })
82
+ }
83
+ );
84
+ var NodeTypeBadge = ({ nodeType, badgeBackground, badgeBorder, badgeText, icon, label }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
85
+ _material.Box,
86
+ {
87
+ sx: {
88
+ display: "inline-flex",
89
+ alignItems: "center",
90
+ justifyContent: "center",
91
+ gap: 1,
92
+ px: 1,
93
+ py: 0.5,
94
+ borderRadius: "999px",
95
+ backgroundColor: badgeBackground,
96
+ border: `1px solid ${badgeBorder}`,
97
+ flexShrink: 0
98
+ },
99
+ children: [
100
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Box, { sx: { color: badgeText, display: "flex", alignItems: "center" }, children: _nullishCoalesce(icon, () => ( WORKFLOW_NODE_ICONS[nodeType])) }),
101
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
102
+ _material.Typography,
103
+ {
104
+ variant: "body2",
105
+ component: "span",
106
+ sx: {
107
+ color: badgeText,
108
+ fontWeight: BADGE_TYPOGRAPHY.fontWeight,
109
+ fontSize: BADGE_TYPOGRAPHY.fontSize,
110
+ lineHeight: BADGE_TYPOGRAPHY.lineHeight
111
+ },
112
+ children: _nullishCoalesce(label, () => ( WORKFLOW_NODE_LABELS[nodeType]))
113
+ }
114
+ )
115
+ ]
116
+ }
117
+ );
118
+ var WorkflowNode = ({
119
+ nodeType,
120
+ title,
121
+ description,
122
+ icon,
123
+ badgeLabel,
124
+ selected = false,
125
+ className,
126
+ showSideDots = true,
127
+ sx,
128
+ ...paperProps
129
+ }) => {
130
+ const theme = _material.useTheme.call(void 0, );
131
+ const nodeTokens = theme.palette.workflow.node[nodeType];
132
+ const chrome = theme.palette.workflow.chrome;
133
+ const accentColor = nodeTokens.accent;
134
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
135
+ _material.Paper,
136
+ {
137
+ elevation: 0,
138
+ className,
139
+ sx: [
140
+ {
141
+ display: "flex",
142
+ flexDirection: "row",
143
+ position: "relative",
144
+ overflow: "visible",
145
+ border: `1px solid ${selected ? accentColor : nodeTokens.cardBorder}`,
146
+ borderRadius: "14px",
147
+ minWidth: 220,
148
+ maxWidth: 460,
149
+ minHeight: "76px",
150
+ backgroundColor: "common.white",
151
+ boxShadow: WORKFLOW_NODE_SHADOW,
152
+ transition: "border-color 0.15s ease"
153
+ },
154
+ ...Array.isArray(sx) ? sx : [sx]
155
+ ],
156
+ ...paperProps,
157
+ children: [
158
+ showSideDots && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SideConnectorDot, { accentColor, side: "left" }),
159
+ showSideDots && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SideConnectorDot, { accentColor, side: "right" }),
160
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
161
+ _material.Box,
162
+ {
163
+ sx: {
164
+ flex: 1,
165
+ display: "flex",
166
+ justifyContent: "space-between",
167
+ alignItems: "center",
168
+ gap: 2,
169
+ px: 2,
170
+ py: 2,
171
+ minWidth: 0
172
+ },
173
+ children: [
174
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.Box, { sx: { minWidth: 0, flex: 1 }, children: [
175
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
176
+ _material.Typography,
177
+ {
178
+ variant: "subtitle2",
179
+ noWrap: true,
180
+ sx: {
181
+ color: chrome.titleText,
182
+ fontSize: "16px",
183
+ fontWeight: 500,
184
+ lineHeight: "24px",
185
+ letterSpacing: "-0.3125px"
186
+ },
187
+ children: title
188
+ }
189
+ ),
190
+ description && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
191
+ _material.Typography,
192
+ {
193
+ variant: "body2",
194
+ sx: {
195
+ color: chrome.descriptionText,
196
+ fontSize: "12px",
197
+ lineHeight: "16px",
198
+ mt: 0.25,
199
+ overflow: "hidden",
200
+ textOverflow: "ellipsis",
201
+ display: "-webkit-box",
202
+ WebkitLineClamp: 2,
203
+ WebkitBoxOrient: "vertical"
204
+ },
205
+ children: description
206
+ }
207
+ )
208
+ ] }),
209
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
210
+ NodeTypeBadge,
211
+ {
212
+ nodeType,
213
+ badgeBackground: nodeTokens.badgeBg,
214
+ badgeBorder: nodeTokens.badgeBorder,
215
+ badgeText: nodeTokens.badgeText,
216
+ icon,
217
+ label: badgeLabel
218
+ }
219
+ )
220
+ ]
221
+ }
222
+ )
223
+ ]
224
+ }
225
+ );
226
+ };
227
+
228
+
229
+
230
+
231
+
232
+ exports.WORKFLOW_NODE_LABELS = WORKFLOW_NODE_LABELS; exports.WORKFLOW_NODE_SHADOW = WORKFLOW_NODE_SHADOW; exports.WorkflowNode = WorkflowNode;
233
+ //# sourceMappingURL=chunk-X7E6GMFL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/cere-design-system/cere-design-system/dist/chunk-X7E6GMFL.js","../src/components/layout/WorkflowNode/WorkflowNode.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/cere-design-system/cere-design-system/dist/chunk-X7E6GMFL.js","sourcesContent":[null,"import React from 'react';\nimport { Paper, Box, Typography } from '@mui/material';\nimport type { PaperProps as MuiPaperProps } from '@mui/material/Paper';\nimport PlayCircleOutlineIcon from '@mui/icons-material/PlayCircleOutline';\nimport CloudDownloadIcon from '@mui/icons-material/CloudDownload';\nimport WavesIcon from '@mui/icons-material/Waves';\nimport LinkIcon from '@mui/icons-material/Link';\nimport CloudIcon from '@mui/icons-material/Cloud';\nimport BoltIcon from '@mui/icons-material/Bolt';\nimport FlashOnIcon from '@mui/icons-material/FlashOn';\nimport PlayArrowIcon from '@mui/icons-material/PlayArrow';\nimport PsychologyIcon from '@mui/icons-material/Psychology';\nimport SmartToyOutlinedIcon from '@mui/icons-material/SmartToyOutlined';\nimport CallSplitIcon from '@mui/icons-material/CallSplit';\nimport SendIcon from '@mui/icons-material/Send';\nimport CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';\nimport ForkRightIcon from '@mui/icons-material/ForkRight';\nimport CallMergeIcon from '@mui/icons-material/CallMerge';\nimport { useTheme } from '@mui/material';\nimport type { Theme } from '@mui/material/styles';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** All supported workflow node types */\nexport type WorkflowNodeType =\n | 'start'\n | 'input'\n | 'stream'\n | 'rafts'\n | 'cubbies'\n | 'events'\n | 'trigger'\n | 'action'\n | 'aiModel'\n | 'aiAgent'\n | 'condition'\n | 'output'\n | 'end'\n | 'parallel'\n | 'merge';\n\nexport interface WorkflowNodeProps extends Omit<MuiPaperProps, 'title'> {\n /** The workflow node type — drives accent color, default icon, and badge label */\n nodeType: WorkflowNodeType;\n /** Primary title displayed in the node */\n title: string;\n /** Optional description text below the title */\n description?: string;\n /** Override the default icon for this node type */\n icon?: React.ReactNode;\n /** Override the default badge label for this node type */\n badgeLabel?: string;\n /** Whether the node is currently selected (highlights border with accent color) */\n selected?: boolean;\n /** Optional className */\n className?: string;\n /** Renders left/right connector dots to match the design spec */\n showSideDots?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\n/** Human-readable labels for each node type (matches Figma badge text) */\nexport const WORKFLOW_NODE_LABELS: Record<WorkflowNodeType, string> = {\n start: 'Start',\n input: 'Input',\n stream: 'Stream',\n rafts: 'Rafts',\n cubbies: 'Cubbies',\n events: 'Events',\n trigger: 'Trigger',\n action: 'Action',\n aiModel: 'AI Model',\n aiAgent: 'Agent',\n condition: 'Condition',\n output: 'Output',\n end: 'End',\n parallel: 'Parallel',\n merge: 'Merge',\n};\n\nconst NODE_ICON_SIZE = 18;\n\n/** Shared elevation shadow for workflow node cards and connector handles (Figma 277-8244) */\nexport const WORKFLOW_NODE_SHADOW = '0px 1px 3px rgba(0, 0, 0, 0.1), 0px 1px 2px rgba(0, 0, 0, 0.1)';\n\n/** Default icon for each node type */\nconst WORKFLOW_NODE_ICONS: Record<WorkflowNodeType, React.ReactElement> = {\n start: <PlayCircleOutlineIcon sx={{ fontSize: NODE_ICON_SIZE }} />,\n input: <CloudDownloadIcon sx={{ fontSize: NODE_ICON_SIZE }} />,\n stream: <WavesIcon sx={{ fontSize: NODE_ICON_SIZE }} />,\n rafts: <LinkIcon sx={{ fontSize: NODE_ICON_SIZE }} />,\n cubbies: <CloudIcon sx={{ fontSize: NODE_ICON_SIZE }} />,\n events: <BoltIcon sx={{ fontSize: NODE_ICON_SIZE }} />,\n trigger: <FlashOnIcon sx={{ fontSize: NODE_ICON_SIZE }} />,\n action: <PlayArrowIcon sx={{ fontSize: NODE_ICON_SIZE }} />,\n aiModel: <PsychologyIcon sx={{ fontSize: NODE_ICON_SIZE }} />,\n aiAgent: <SmartToyOutlinedIcon sx={{ fontSize: NODE_ICON_SIZE }} />,\n condition: <CallSplitIcon sx={{ fontSize: NODE_ICON_SIZE }} />,\n output: <SendIcon sx={{ fontSize: NODE_ICON_SIZE }} />,\n end: <CheckCircleOutlineIcon sx={{ fontSize: NODE_ICON_SIZE }} />,\n parallel: <ForkRightIcon sx={{ fontSize: NODE_ICON_SIZE }} />,\n merge: <CallMergeIcon sx={{ fontSize: NODE_ICON_SIZE }} />,\n};\n\nconst BADGE_TYPOGRAPHY = {\n fontSize: '12px',\n fontWeight: 500,\n lineHeight: 1.33,\n} as const;\n\n// ---------------------------------------------------------------------------\n// Sub-components\n// ---------------------------------------------------------------------------\n\n/** Circular connector marker used on left and right sides of the node card */\nconst SideConnectorDot: React.FC<{ accentColor: string; side: 'left' | 'right' }> = ({\n accentColor,\n side,\n}) => (\n <Box\n data-testid={`workflow-node-dot-${side}`}\n sx={(theme) => ({\n position: 'absolute',\n top: '50%',\n [side]: '-4px',\n transform: 'translateY(-50%)',\n width: '8px',\n height: '8px',\n borderRadius: '999px',\n border: `2px solid ${theme.palette.common.white}`,\n backgroundColor: accentColor,\n boxShadow: WORKFLOW_NODE_SHADOW,\n zIndex: 1,\n pointerEvents: 'none',\n })}\n />\n);\n\n/** Outlined soft badge pill showing node type icon + label (Figma 277-8244) */\nconst NodeTypeBadge: React.FC<{\n nodeType: WorkflowNodeType;\n badgeBackground: string;\n badgeBorder: string;\n badgeText: string;\n icon?: React.ReactNode;\n label?: string;\n}> = ({ nodeType, badgeBackground, badgeBorder, badgeText, icon, label }) => (\n <Box\n sx={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 1,\n px: 1,\n py: 0.5,\n borderRadius: '999px',\n backgroundColor: badgeBackground,\n border: `1px solid ${badgeBorder}`,\n flexShrink: 0,\n }}\n >\n <Box sx={{ color: badgeText, display: 'flex', alignItems: 'center' }}>\n {icon ?? WORKFLOW_NODE_ICONS[nodeType]}\n </Box>\n <Typography\n variant=\"body2\"\n component=\"span\"\n sx={{\n color: badgeText,\n fontWeight: BADGE_TYPOGRAPHY.fontWeight,\n fontSize: BADGE_TYPOGRAPHY.fontSize,\n lineHeight: BADGE_TYPOGRAPHY.lineHeight,\n }}\n >\n {label ?? WORKFLOW_NODE_LABELS[nodeType]}\n </Typography>\n </Box>\n);\n\n// ---------------------------------------------------------------------------\n// Main component\n// ---------------------------------------------------------------------------\n\n/**\n * WorkflowNode — visual card for a workflow editor node.\n *\n * Renders a card with a colored left border strip, title, optional description,\n * and a type badge/chip. Designed to integrate with FlowEditor (ReactFlow)\n * via the WorkflowNodeHandle wrapper.\n *\n * @example\n * ```tsx\n * <WorkflowNode\n * nodeType=\"trigger\"\n * title=\"HTTP Trigger\"\n * description=\"Listens for incoming webhook calls\"\n * />\n * ```\n */\nexport const WorkflowNode: React.FC<WorkflowNodeProps> = ({\n nodeType,\n title,\n description,\n icon,\n badgeLabel,\n selected = false,\n className,\n showSideDots = true,\n sx,\n ...paperProps\n}) => {\n const theme = useTheme() as Theme;\n const nodeTokens = theme.palette.workflow.node[nodeType];\n const chrome = theme.palette.workflow.chrome;\n const accentColor = nodeTokens.accent;\n\n return (\n <Paper\n elevation={0}\n className={className}\n sx={[\n {\n display: 'flex',\n flexDirection: 'row',\n position: 'relative',\n overflow: 'visible',\n border: `1px solid ${selected ? accentColor : nodeTokens.cardBorder}`,\n borderRadius: '14px',\n minWidth: 220,\n maxWidth: 460,\n minHeight: '76px',\n backgroundColor: 'common.white',\n boxShadow: WORKFLOW_NODE_SHADOW,\n transition: 'border-color 0.15s ease',\n },\n ...(Array.isArray(sx) ? sx : [sx]),\n ]}\n {...paperProps}\n >\n {showSideDots && <SideConnectorDot accentColor={accentColor} side=\"left\" />}\n {showSideDots && <SideConnectorDot accentColor={accentColor} side=\"right\" />}\n\n <Box\n sx={{\n flex: 1,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n gap: 2,\n px: 2,\n py: 2,\n minWidth: 0,\n }}\n >\n {/* Left: title + description */}\n <Box sx={{ minWidth: 0, flex: 1 }}>\n <Typography\n variant=\"subtitle2\"\n noWrap\n sx={{\n color: chrome.titleText,\n fontSize: '16px',\n fontWeight: 500,\n lineHeight: '24px',\n letterSpacing: '-0.3125px',\n }}\n >\n {title}\n </Typography>\n {description && (\n <Typography\n variant=\"body2\"\n sx={{\n color: chrome.descriptionText,\n fontSize: '12px',\n lineHeight: '16px',\n mt: 0.25,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n }}\n >\n {description}\n </Typography>\n )}\n </Box>\n\n {/* Right: filled type badge */}\n <NodeTypeBadge\n nodeType={nodeType}\n badgeBackground={nodeTokens.badgeBg}\n badgeBorder={nodeTokens.badgeBorder}\n badgeText={nodeTokens.badgeText}\n icon={icon}\n label={badgeLabel}\n />\n </Box>\n </Paper>\n );\n};\n"]}