@lssm/lib.presentation-runtime-react 0.0.0-canary-20251217083314 → 0.0.0-canary-20251219202229

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 (41) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2 -0
  3. package/dist/WorkflowStepRenderer.d.ts +2 -1
  4. package/dist/WorkflowStepRenderer.d.ts.map +1 -0
  5. package/dist/WorkflowStepRenderer.js +12 -11
  6. package/dist/WorkflowStepRenderer.js.map +1 -0
  7. package/dist/WorkflowStepper.d.ts +2 -1
  8. package/dist/WorkflowStepper.d.ts.map +1 -0
  9. package/dist/WorkflowStepper.js +4 -3
  10. package/dist/WorkflowStepper.js.map +1 -0
  11. package/dist/design-system/dist/_virtual/rolldown_runtime.js +2 -1
  12. package/dist/design-system/dist/_virtual/rolldown_runtime.js.map +1 -0
  13. package/dist/design-system/dist/components/atoms/EmptyState.js +5 -4
  14. package/dist/design-system/dist/components/atoms/EmptyState.js.map +1 -0
  15. package/dist/design-system/dist/components/atoms/LoaderCircular.js +2 -1
  16. package/dist/design-system/dist/components/atoms/LoaderCircular.js.map +1 -0
  17. package/dist/design-system/dist/components/atoms/Stepper.js +5 -4
  18. package/dist/design-system/dist/components/atoms/Stepper.js.map +1 -0
  19. package/dist/design-system/dist/components/molecules/LoaderBlock.js +2 -1
  20. package/dist/design-system/dist/components/molecules/LoaderBlock.js.map +1 -0
  21. package/dist/design-system/dist/ui-kit-web/dist/ui/empty-state.js +2 -1
  22. package/dist/design-system/dist/ui-kit-web/dist/ui/empty-state.js.map +1 -0
  23. package/dist/design-system/dist/ui-kit-web/dist/ui/stack.js +2 -1
  24. package/dist/design-system/dist/ui-kit-web/dist/ui/stack.js.map +1 -0
  25. package/dist/design-system/dist/ui-kit-web/dist/ui/stepper.js +2 -1
  26. package/dist/design-system/dist/ui-kit-web/dist/ui/stepper.js.map +1 -0
  27. package/dist/design-system/dist/ui-kit-web/dist/ui/utils.js +2 -1
  28. package/dist/design-system/dist/ui-kit-web/dist/ui/utils.js.map +1 -0
  29. package/dist/design-system/dist/ui-kit-web/dist/ui-kit-core/dist/utils.js +2 -1
  30. package/dist/design-system/dist/ui-kit-web/dist/ui-kit-core/dist/utils.js.map +1 -0
  31. package/dist/index.d.ts +2 -1
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +2 -1
  34. package/dist/index.js.map +1 -0
  35. package/dist/ui-kit-web/dist/ui/form.js +2 -1
  36. package/dist/ui-kit-web/dist/ui/form.js.map +1 -0
  37. package/dist/useWorkflow.d.ts +2 -1
  38. package/dist/useWorkflow.d.ts.map +1 -0
  39. package/dist/useWorkflow.js +2 -1
  40. package/dist/useWorkflow.js.map +1 -0
  41. package/package.json +8 -7
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Chaman Ventures, SASU
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -61,6 +61,8 @@ export function WorkflowPage() {
61
61
 
62
62
 
63
63
 
64
+
65
+
64
66
 
65
67
 
66
68
 
@@ -28,4 +28,5 @@ declare function WorkflowStepRenderer({
28
28
  failedFallback
29
29
  }: WorkflowStepRendererProps): react_jsx_runtime0.JSX.Element;
30
30
  //#endregion
31
- export { WorkflowStepRenderer, WorkflowStepRendererProps };
31
+ export { WorkflowStepRenderer, WorkflowStepRendererProps };
32
+ //# sourceMappingURL=WorkflowStepRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowStepRenderer.d.ts","names":[],"sources":["../src/WorkflowStepRenderer.tsx"],"sourcesContent":[],"mappings":";;;;;UAUiB,yBAAA;QACT;SACC;EAFQ,SAAA,CAAA,EAAA,MAAA;EACT,eAAA,CAAA,EAAA,CAAA,IAAA,EAGmB,OAHnB,EAAA,IAAA,EAGkC,IAHlC,EAAA,GAG2C,KAAA,CAAM,SAHjD;EACC,oBAAA,CAAA,EAAA,CAAA,IAAA,EAGuB,IAHvB,EAAA,GAGgC,KAAA,CAAM,SAHtC;EAEkB,kBAAA,CAAA,EAAA,CAAA,IAAA,EAEG,IAFH,EAAA,GAEY,KAAA,CAAM,SAFlB;EAAe,eAAA,CAAA,EAGtB,KAAA,CAAM,SAHgB;EAAS,iBAAM,CAAA,EAInC,KAAA,CAAM,SAJ6B;EACzB,iBAAA,CAAA,EAIV,KAAA,CAAM,SAJI;EAAS,cAAM,CAAA,EAAA,CAAA,KAAA,EAMpC,aANoC,EAAA,IAAA,EAOrC,aAPqC,GAAA,SAAA,EAAA,GAQxC,KAAA,CAAM,SARkC;;AACF,iBAU7B,oBAAA,CAV6B;EAAA,IAAA;EAAA,KAAA;EAAA,SAAA;EAAA,eAAA;EAAA,oBAAA;EAAA,kBAAA;EAAA,eAAA;EAAA,iBAAA;EAAA,iBAAA;EAAA;AAAA,CAAA,EAqB1C,yBArB0C,CAAA,EAqBjB,kBAAA,CAAA,GAAA,CAAA,OArBiB"}
@@ -1,4 +1,4 @@
1
- import { EmptyState$1 } from "./design-system/dist/components/atoms/EmptyState.js";
1
+ import { EmptyState } from "./design-system/dist/components/atoms/EmptyState.js";
2
2
  import { LoaderBlock } from "./design-system/dist/components/molecules/LoaderBlock.js";
3
3
  import "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -8,7 +8,7 @@ function WorkflowStepRenderer({ spec, state, className, renderHumanStep, renderA
8
8
  const steps = spec.definition.steps;
9
9
  if (!steps.length) return /* @__PURE__ */ jsx("div", {
10
10
  className,
11
- children: /* @__PURE__ */ jsx(EmptyState$1, {
11
+ children: /* @__PURE__ */ jsx(EmptyState, {
12
12
  title: "No steps defined",
13
13
  description: "Add at least one step to this workflow to render it."
14
14
  })
@@ -23,21 +23,21 @@ function WorkflowStepRenderer({ spec, state, className, renderHumanStep, renderA
23
23
  const lastExecution = state.history.at(-1);
24
24
  if (state.status === "failed") return /* @__PURE__ */ jsx("div", {
25
25
  className,
26
- children: failedFallback?.(state, lastExecution) ?? /* @__PURE__ */ jsx(EmptyState$1, {
26
+ children: failedFallback?.(state, lastExecution) ?? /* @__PURE__ */ jsx(EmptyState, {
27
27
  title: "Workflow failed",
28
28
  description: lastExecution?.error ?? "Fix the underlying issue and retry the step."
29
29
  })
30
30
  });
31
31
  if (state.status === "cancelled") return /* @__PURE__ */ jsx("div", {
32
32
  className,
33
- children: cancelledFallback ?? /* @__PURE__ */ jsx(EmptyState$1, {
33
+ children: cancelledFallback ?? /* @__PURE__ */ jsx(EmptyState, {
34
34
  title: "Workflow cancelled",
35
35
  description: "This workflow has been cancelled. Restart it to resume."
36
36
  })
37
37
  });
38
38
  if (state.status === "completed") return /* @__PURE__ */ jsx("div", {
39
39
  className,
40
- children: completedFallback ?? /* @__PURE__ */ jsx(EmptyState$1, {
40
+ children: completedFallback ?? /* @__PURE__ */ jsx(EmptyState, {
41
41
  title: "Workflow complete",
42
42
  description: "All steps have been executed successfully."
43
43
  })
@@ -45,7 +45,7 @@ function WorkflowStepRenderer({ spec, state, className, renderHumanStep, renderA
45
45
  const activeStep = steps.find((step) => step.id === state.currentStep) ?? steps[0];
46
46
  if (!activeStep) return /* @__PURE__ */ jsx("div", {
47
47
  className,
48
- children: /* @__PURE__ */ jsx(EmptyState$1, {
48
+ children: /* @__PURE__ */ jsx(EmptyState, {
49
49
  title: "No active step",
50
50
  description: "This workflow has no active step."
51
51
  })
@@ -59,7 +59,7 @@ function WorkflowStepRenderer({ spec, state, className, renderHumanStep, renderA
59
59
  });
60
60
  return /* @__PURE__ */ jsx("div", {
61
61
  className,
62
- children: /* @__PURE__ */ jsx(EmptyState$1, {
62
+ children: /* @__PURE__ */ jsx(EmptyState, {
63
63
  title: "Form renderer missing",
64
64
  description: "Provide renderHumanStep to render this human step's form."
65
65
  })
@@ -72,7 +72,7 @@ function WorkflowStepRenderer({ spec, state, className, renderHumanStep, renderA
72
72
  });
73
73
  return /* @__PURE__ */ jsx("div", {
74
74
  className,
75
- children: /* @__PURE__ */ jsx(EmptyState$1, {
75
+ children: /* @__PURE__ */ jsx(EmptyState, {
76
76
  title: "Automation step in progress",
77
77
  description: `Waiting for automation "${activeStep.label}" to finish.`
78
78
  })
@@ -84,14 +84,14 @@ function WorkflowStepRenderer({ spec, state, className, renderHumanStep, renderA
84
84
  });
85
85
  return /* @__PURE__ */ jsx("div", {
86
86
  className,
87
- children: /* @__PURE__ */ jsx(EmptyState$1, {
87
+ children: /* @__PURE__ */ jsx(EmptyState, {
88
88
  title: "Decision step awaiting input",
89
89
  description: "Provide a custom decision renderer via renderDecisionStep."
90
90
  })
91
91
  });
92
92
  default: return /* @__PURE__ */ jsx("div", {
93
93
  className,
94
- children: /* @__PURE__ */ jsx(EmptyState$1, {
94
+ children: /* @__PURE__ */ jsx(EmptyState, {
95
95
  title: "Unknown step type",
96
96
  description: `Step "${activeStep.id}" has an unsupported type.`
97
97
  })
@@ -100,4 +100,5 @@ function WorkflowStepRenderer({ spec, state, className, renderHumanStep, renderA
100
100
  }
101
101
 
102
102
  //#endregion
103
- export { WorkflowStepRenderer };
103
+ export { WorkflowStepRenderer };
104
+ //# sourceMappingURL=WorkflowStepRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowStepRenderer.js","names":[],"sources":["../src/WorkflowStepRenderer.tsx"],"sourcesContent":["import * as React from 'react';\nimport { EmptyState, LoaderBlock } from '@lssm/lib.design-system';\nimport type {\n FormRef,\n Step,\n WorkflowSpec,\n WorkflowState,\n StepExecution,\n} from '@lssm/lib.contracts/workflow';\n\nexport interface WorkflowStepRendererProps {\n spec: WorkflowSpec;\n state: WorkflowState | null;\n className?: string;\n renderHumanStep?: (form: FormRef, step: Step) => React.ReactNode;\n renderAutomationStep?: (step: Step) => React.ReactNode;\n renderDecisionStep?: (step: Step) => React.ReactNode;\n loadingFallback?: React.ReactNode;\n completedFallback?: React.ReactNode;\n cancelledFallback?: React.ReactNode;\n failedFallback?: (\n state: WorkflowState,\n last: StepExecution | undefined\n ) => React.ReactNode;\n}\n\nexport function WorkflowStepRenderer({\n spec,\n state,\n className,\n renderHumanStep,\n renderAutomationStep,\n renderDecisionStep,\n loadingFallback,\n completedFallback,\n cancelledFallback,\n failedFallback,\n}: WorkflowStepRendererProps) {\n const steps = spec.definition.steps;\n if (!steps.length) {\n return (\n <div className={className}>\n <EmptyState\n title=\"No steps defined\"\n description=\"Add at least one step to this workflow to render it.\"\n />\n </div>\n );\n }\n\n if (!state) {\n return (\n <div className={className}>\n {loadingFallback ?? (\n <LoaderBlock\n label=\"Loading workflow\"\n description=\"Fetching workflow state...\"\n />\n )}\n </div>\n );\n }\n\n const lastExecution = state.history.at(-1);\n\n if (state.status === 'failed') {\n return (\n <div className={className}>\n {failedFallback?.(state, lastExecution) ?? (\n <EmptyState\n title=\"Workflow failed\"\n description={\n lastExecution?.error ??\n 'Fix the underlying issue and retry the step.'\n }\n />\n )}\n </div>\n );\n }\n\n if (state.status === 'cancelled') {\n return (\n <div className={className}>\n {cancelledFallback ?? (\n <EmptyState\n title=\"Workflow cancelled\"\n description=\"This workflow has been cancelled. Restart it to resume.\"\n />\n )}\n </div>\n );\n }\n\n if (state.status === 'completed') {\n return (\n <div className={className}>\n {completedFallback ?? (\n <EmptyState\n title=\"Workflow complete\"\n description=\"All steps have been executed successfully.\"\n />\n )}\n </div>\n );\n }\n\n const activeStep =\n steps.find((step) => step.id === state.currentStep) ?? steps[0];\n\n if (!activeStep) {\n return (\n <div className={className}>\n <EmptyState\n title=\"No active step\"\n description=\"This workflow has no active step.\"\n />\n </div>\n );\n }\n\n switch (activeStep.type) {\n case 'human': {\n const form = activeStep.action?.form;\n if (form && renderHumanStep) {\n return (\n <div className={className}>{renderHumanStep(form, activeStep)}</div>\n );\n }\n return (\n <div className={className}>\n <EmptyState\n title=\"Form renderer missing\"\n description=\"Provide renderHumanStep to render this human step's form.\"\n />\n </div>\n );\n }\n case 'automation': {\n if (renderAutomationStep) {\n return (\n <div className={className}>{renderAutomationStep(activeStep)}</div>\n );\n }\n return (\n <div className={className}>\n <EmptyState\n title=\"Automation step in progress\"\n description={`Waiting for automation \"${activeStep.label}\" to finish.`}\n />\n </div>\n );\n }\n case 'decision': {\n if (renderDecisionStep) {\n return (\n <div className={className}>{renderDecisionStep(activeStep)}</div>\n );\n }\n return (\n <div className={className}>\n <EmptyState\n title=\"Decision step awaiting input\"\n description=\"Provide a custom decision renderer via renderDecisionStep.\"\n />\n </div>\n );\n }\n default:\n return (\n <div className={className}>\n <EmptyState\n title=\"Unknown step type\"\n description={`Step \"${activeStep.id}\" has an unsupported type.`}\n />\n </div>\n );\n }\n}\n"],"mappings":";;;;;;AA0BA,SAAgB,qBAAqB,EACnC,MACA,OACA,WACA,iBACA,sBACA,oBACA,iBACA,mBACA,mBACA,kBAC4B;CAC5B,MAAM,QAAQ,KAAK,WAAW;AAC9B,KAAI,CAAC,MAAM,OACT,QACE,oBAAC;EAAe;YACd,oBAAC;GACC,OAAM;GACN,aAAY;IACZ;GACE;AAIV,KAAI,CAAC,MACH,QACE,oBAAC;EAAe;YACb,mBACC,oBAAC;GACC,OAAM;GACN,aAAY;IACZ;GAEA;CAIV,MAAM,gBAAgB,MAAM,QAAQ,GAAG,GAAG;AAE1C,KAAI,MAAM,WAAW,SACnB,QACE,oBAAC;EAAe;YACb,iBAAiB,OAAO,cAAc,IACrC,oBAAC;GACC,OAAM;GACN,aACE,eAAe,SACf;IAEF;GAEA;AAIV,KAAI,MAAM,WAAW,YACnB,QACE,oBAAC;EAAe;YACb,qBACC,oBAAC;GACC,OAAM;GACN,aAAY;IACZ;GAEA;AAIV,KAAI,MAAM,WAAW,YACnB,QACE,oBAAC;EAAe;YACb,qBACC,oBAAC;GACC,OAAM;GACN,aAAY;IACZ;GAEA;CAIV,MAAM,aACJ,MAAM,MAAM,SAAS,KAAK,OAAO,MAAM,YAAY,IAAI,MAAM;AAE/D,KAAI,CAAC,WACH,QACE,oBAAC;EAAe;YACd,oBAAC;GACC,OAAM;GACN,aAAY;IACZ;GACE;AAIV,SAAQ,WAAW,MAAnB;EACE,KAAK,SAAS;GACZ,MAAM,OAAO,WAAW,QAAQ;AAChC,OAAI,QAAQ,gBACV,QACE,oBAAC;IAAe;cAAY,gBAAgB,MAAM,WAAW;KAAO;AAGxE,UACE,oBAAC;IAAe;cACd,oBAAC;KACC,OAAM;KACN,aAAY;MACZ;KACE;;EAGV,KAAK;AACH,OAAI,qBACF,QACE,oBAAC;IAAe;cAAY,qBAAqB,WAAW;KAAO;AAGvE,UACE,oBAAC;IAAe;cACd,oBAAC;KACC,OAAM;KACN,aAAa,2BAA2B,WAAW,MAAM;MACzD;KACE;EAGV,KAAK;AACH,OAAI,mBACF,QACE,oBAAC;IAAe;cAAY,mBAAmB,WAAW;KAAO;AAGrE,UACE,oBAAC;IAAe;cACd,oBAAC;KACC,OAAM;KACN,aAAY;MACZ;KACE;EAGV,QACE,QACE,oBAAC;GAAe;aACd,oBAAC;IACC,OAAM;IACN,aAAa,SAAS,WAAW,GAAG;KACpC;IACE"}
@@ -15,4 +15,5 @@ declare function WorkflowStepper({
15
15
  showLabels
16
16
  }: WorkflowStepperProps): react_jsx_runtime0.JSX.Element;
17
17
  //#endregion
18
- export { WorkflowStepper, WorkflowStepperProps };
18
+ export { WorkflowStepper, WorkflowStepperProps };
19
+ //# sourceMappingURL=WorkflowStepper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowStepper.d.ts","names":[],"sources":["../src/WorkflowStepper.tsx"],"sourcesContent":[],"mappings":";;;;UAIiB,oBAAA;QACT;SACC;EAFQ,SAAA,CAAA,EAAA,MAAA;EAOD,UAAA,CAAA,EAAA,OAAe;;AAE7B,iBAFc,eAAA,CAEd;EAAA,IAAA;EAAA,KAAA;EAAA,SAAA;EAAA;AAAA,CAAA,EAGC,oBAHD,CAAA,EAGqB,kBAAA,CAAA,GAAA,CAAA,OAHrB"}
@@ -1,4 +1,4 @@
1
- import { Stepper$1 } from "./design-system/dist/components/atoms/Stepper.js";
1
+ import { Stepper } from "./design-system/dist/components/atoms/Stepper.js";
2
2
  import "react";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
 
@@ -9,7 +9,7 @@ function WorkflowStepper({ spec, state, className, showLabels = false }) {
9
9
  const current = computeCurrent(steps, state);
10
10
  return /* @__PURE__ */ jsxs("div", {
11
11
  className: ["flex flex-col gap-2", className].filter(Boolean).join(" "),
12
- children: [/* @__PURE__ */ jsx(Stepper$1, {
12
+ children: [/* @__PURE__ */ jsx(Stepper, {
13
13
  current,
14
14
  total
15
15
  }), showLabels && total > 0 && /* @__PURE__ */ jsx("ol", {
@@ -35,4 +35,5 @@ function computeCurrent(steps, state) {
35
35
  }
36
36
 
37
37
  //#endregion
38
- export { WorkflowStepper };
38
+ export { WorkflowStepper };
39
+ //# sourceMappingURL=WorkflowStepper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowStepper.js","names":[],"sources":["../src/WorkflowStepper.tsx"],"sourcesContent":["import * as React from 'react';\nimport type { WorkflowSpec, WorkflowState } from '@lssm/lib.contracts/workflow';\nimport { Stepper } from '@lssm/lib.design-system';\n\nexport interface WorkflowStepperProps {\n spec: WorkflowSpec;\n state: WorkflowState | null;\n className?: string;\n showLabels?: boolean;\n}\n\nexport function WorkflowStepper({\n spec,\n state,\n className,\n showLabels = false,\n}: WorkflowStepperProps) {\n const steps = spec.definition.steps;\n const total = steps.length;\n const current = computeCurrent(steps, state);\n\n return (\n <div\n className={['flex flex-col gap-2', className].filter(Boolean).join(' ')}\n >\n <Stepper current={current} total={total} />\n {showLabels && total > 0 && (\n <ol className=\"text-muted-foreground flex flex-wrap gap-2 text-sm\">\n {steps.map((step, index) => {\n const isActive =\n state?.status === 'completed'\n ? index === total - 1\n : step.id === state?.currentStep;\n return (\n <li\n key={step.id}\n className={[\n 'rounded border px-2 py-1',\n isActive ? 'border-primary text-primary' : 'border-border',\n ].join(' ')}\n >\n <span className=\"font-medium\">{step.label}</span>\n </li>\n );\n })}\n </ol>\n )}\n </div>\n );\n}\n\nfunction computeCurrent(\n steps: WorkflowSpec['definition']['steps'],\n state: WorkflowState | null\n) {\n if (!steps.length) return 0;\n if (!state) return 1;\n\n if (state.status === 'completed') return steps.length;\n\n const idx = steps.findIndex((step) => step.id === state.currentStep);\n return idx === -1 ? 1 : idx + 1;\n}\n"],"mappings":";;;;;AAWA,SAAgB,gBAAgB,EAC9B,MACA,OACA,WACA,aAAa,SACU;CACvB,MAAM,QAAQ,KAAK,WAAW;CAC9B,MAAM,QAAQ,MAAM;CACpB,MAAM,UAAU,eAAe,OAAO,MAAM;AAE5C,QACE,qBAAC;EACC,WAAW,CAAC,uBAAuB,UAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;aAEvE,oBAAC;GAAiB;GAAgB;IAAS,EAC1C,cAAc,QAAQ,KACrB,oBAAC;GAAG,WAAU;aACX,MAAM,KAAK,MAAM,UAAU;AAK1B,WACE,oBAAC;KAEC,WAAW,CACT,6BAPJ,OAAO,WAAW,cACd,UAAU,QAAQ,IAClB,KAAK,OAAO,OAAO,eAMR,gCAAgC,gBAC5C,CAAC,KAAK,IAAI;eAEX,oBAAC;MAAK,WAAU;gBAAe,KAAK;OAAa;OAN5C,KAAK,GAOP;KAEP;IACC;GAEH;;AAIV,SAAS,eACP,OACA,OACA;AACA,KAAI,CAAC,MAAM,OAAQ,QAAO;AAC1B,KAAI,CAAC,MAAO,QAAO;AAEnB,KAAI,MAAM,WAAW,YAAa,QAAO,MAAM;CAE/C,MAAM,MAAM,MAAM,WAAW,SAAS,KAAK,OAAO,MAAM,YAAY;AACpE,QAAO,QAAQ,KAAK,IAAI,MAAM"}
@@ -2,4 +2,5 @@
2
2
  var __esmMin = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
3
3
 
4
4
  //#endregion
5
- export { __esmMin };
5
+ export { __esmMin };
6
+ //# sourceMappingURL=rolldown_runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rolldown_runtime.js","names":[],"sources":["../../../../../design-system/dist/_virtual/rolldown_runtime.js"],"sourcesContent":["//#region rolldown:runtime\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esmMin = (fn, res) => () => (fn && (res = fn(fn = 0)), res);\nvar __export = (all, symbols) => {\n\tlet target = {};\n\tfor (var name in all) {\n\t\t__defProp(target, name, {\n\t\t\tget: all[name],\n\t\t\tenumerable: true\n\t\t});\n\t}\n\tif (symbols) {\n\t\t__defProp(target, Symbol.toStringTag, { value: \"Module\" });\n\t}\n\treturn target;\n};\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") {\n\t\tfor (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\t\tkey = keys[i];\n\t\t\tif (!__hasOwnProp.call(to, key) && key !== except) {\n\t\t\t\t__defProp(to, key, {\n\t\t\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn to;\n};\nvar __toCommonJS = (mod) => __hasOwnProp.call(mod, \"module.exports\") ? mod[\"module.exports\"] : __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n//#endregion\nexport { __esmMin, __export, __toCommonJS };"],"mappings":";AAKA,IAAI,YAAY,IAAI,eAAe,OAAO,MAAM,GAAG,KAAK,EAAE,GAAG"}
@@ -1,13 +1,14 @@
1
1
  'use client';
2
2
 
3
- import { EmptyState } from "../../ui-kit-web/dist/ui/empty-state.js";
3
+ import { EmptyState as EmptyState$1 } from "../../ui-kit-web/dist/ui/empty-state.js";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
 
7
7
  //#region ../design-system/dist/components/atoms/EmptyState.js
8
- function EmptyState$1(props) {
9
- return /* @__PURE__ */ jsx(EmptyState, { ...props });
8
+ function EmptyState(props) {
9
+ return /* @__PURE__ */ jsx(EmptyState$1, { ...props });
10
10
  }
11
11
 
12
12
  //#endregion
13
- export { EmptyState$1 };
13
+ export { EmptyState };
14
+ //# sourceMappingURL=EmptyState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyState.js","names":[],"sources":["../../../../../../design-system/dist/components/atoms/EmptyState.js"],"sourcesContent":["'use client';\n\nimport { EmptyState as EmptyState$1 } from \"../../ui-kit-web/dist/ui/empty-state.js\";\nimport \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n\n//#region src/components/atoms/EmptyState.tsx\nfunction EmptyState(props) {\n\treturn /* @__PURE__ */ jsx(EmptyState$1, { ...props });\n}\n\n//#endregion\nexport { EmptyState };\n//# sourceMappingURL=EmptyState.js.map"],"mappings":";;;;;;;AAOA,SAAS,WAAW,OAAO;AAC1B,QAAuB,oBAAI,cAAc,EAAE,GAAG,OAAO,CAAC"}
@@ -40,4 +40,5 @@ function LoaderCircular({ size, tone, label, className, ...props }) {
40
40
  }
41
41
 
42
42
  //#endregion
43
- export { LoaderCircular };
43
+ export { LoaderCircular };
44
+ //# sourceMappingURL=LoaderCircular.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoaderCircular.js","names":[],"sources":["../../../../../../design-system/dist/components/atoms/LoaderCircular.js"],"sourcesContent":["import { cn } from \"../../ui-kit-web/dist/ui/utils.js\";\nimport \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nimport { cva } from \"class-variance-authority\";\nimport { Loader2 } from \"lucide-react\";\n\n//#region src/components/atoms/LoaderCircular.tsx\nconst spinnerVariants = cva(\"animate-spin\", {\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"h-4 w-4\",\n\t\t\tmd: \"h-5 w-5\",\n\t\t\tlg: \"h-6 w-6\"\n\t\t},\n\t\ttone: {\n\t\t\tdefault: \"text-foreground\",\n\t\t\tmuted: \"text-muted-foreground\"\n\t\t}\n\t},\n\tdefaultVariants: {\n\t\tsize: \"md\",\n\t\ttone: \"muted\"\n\t}\n});\nfunction LoaderCircular({ size, tone, label, className, ...props }) {\n\treturn /* @__PURE__ */ jsxs(\"div\", {\n\t\tclassName: cn(\"inline-flex items-center gap-2\", className),\n\t\trole: \"status\",\n\t\t\"aria-live\": \"polite\",\n\t\t\"aria-busy\": true,\n\t\t...props,\n\t\tchildren: [/* @__PURE__ */ jsx(Loader2, { className: cn(spinnerVariants({\n\t\t\tsize,\n\t\t\ttone\n\t\t})) }), label ? /* @__PURE__ */ jsx(\"span\", {\n\t\t\tclassName: \"text-muted-foreground text-base\",\n\t\t\tchildren: label\n\t\t}) : null]\n\t});\n}\n\n//#endregion\nexport { LoaderCircular };\n//# sourceMappingURL=LoaderCircular.js.map"],"mappings":";;;;;;;AAOA,MAAM,kBAAkB,IAAI,gBAAgB;CAC3C,UAAU;EACT,MAAM;GACL,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ;EACD,MAAM;GACL,SAAS;GACT,OAAO;GACP;EACD;CACD,iBAAiB;EAChB,MAAM;EACN,MAAM;EACN;CACD,CAAC;AACF,SAAS,eAAe,EAAE,MAAM,MAAM,OAAO,WAAW,GAAG,SAAS;AACnE,QAAuB,qBAAK,OAAO;EAClC,WAAW,GAAG,kCAAkC,UAAU;EAC1D,MAAM;EACN,aAAa;EACb,aAAa;EACb,GAAG;EACH,UAAU,CAAiB,oBAAI,SAAS,EAAE,WAAW,GAAG,gBAAgB;GACvE;GACA;GACA,CAAC,CAAC,EAAE,CAAC,EAAE,QAAwB,oBAAI,QAAQ;GAC3C,WAAW;GACX,UAAU;GACV,CAAC,GAAG,KAAK;EACV,CAAC"}
@@ -1,13 +1,14 @@
1
1
  'use client';
2
2
 
3
- import { Stepper } from "../../ui-kit-web/dist/ui/stepper.js";
3
+ import { Stepper as Stepper$1 } from "../../ui-kit-web/dist/ui/stepper.js";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
 
7
7
  //#region ../design-system/dist/components/atoms/Stepper.js
8
- function Stepper$1(props) {
9
- return /* @__PURE__ */ jsx(Stepper, { ...props });
8
+ function Stepper(props) {
9
+ return /* @__PURE__ */ jsx(Stepper$1, { ...props });
10
10
  }
11
11
 
12
12
  //#endregion
13
- export { Stepper$1 };
13
+ export { Stepper };
14
+ //# sourceMappingURL=Stepper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stepper.js","names":[],"sources":["../../../../../../design-system/dist/components/atoms/Stepper.js"],"sourcesContent":["'use client';\n\nimport { Stepper as Stepper$1 } from \"../../ui-kit-web/dist/ui/stepper.js\";\nimport \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n\n//#region src/components/atoms/Stepper.tsx\nfunction Stepper(props) {\n\treturn /* @__PURE__ */ jsx(Stepper$1, { ...props });\n}\n\n//#endregion\nexport { Stepper };\n//# sourceMappingURL=Stepper.js.map"],"mappings":";;;;;;;AAOA,SAAS,QAAQ,OAAO;AACvB,QAAuB,oBAAI,WAAW,EAAE,GAAG,OAAO,CAAC"}
@@ -21,4 +21,5 @@ function LoaderBlock({ label, description, className, size = "md" }) {
21
21
  }
22
22
 
23
23
  //#endregion
24
- export { LoaderBlock };
24
+ export { LoaderBlock };
25
+ //# sourceMappingURL=LoaderBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoaderBlock.js","names":[],"sources":["../../../../../../design-system/dist/components/molecules/LoaderBlock.js"],"sourcesContent":["import { cn } from \"../../ui-kit-web/dist/ui/utils.js\";\nimport { LoaderCircular } from \"../atoms/LoaderCircular.js\";\nimport \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\n\n//#region src/components/molecules/LoaderBlock.tsx\nfunction LoaderBlock({ label, description, className, size = \"md\" }) {\n\treturn /* @__PURE__ */ jsx(\"div\", {\n\t\tclassName: cn(\"flex items-center justify-center p-6\", className),\n\t\tchildren: /* @__PURE__ */ jsxs(\"div\", {\n\t\t\tclassName: \"inline-flex items-center gap-3\",\n\t\t\tchildren: [/* @__PURE__ */ jsx(LoaderCircular, {\n\t\t\t\tsize,\n\t\t\t\tlabel\n\t\t\t}), description ? /* @__PURE__ */ jsx(\"span\", {\n\t\t\t\tclassName: \"text-muted-foreground text-base\",\n\t\t\t\tchildren: description\n\t\t\t}) : null]\n\t\t})\n\t});\n}\n\n//#endregion\nexport { LoaderBlock };\n//# sourceMappingURL=LoaderBlock.js.map"],"mappings":";;;;;;AAMA,SAAS,YAAY,EAAE,OAAO,aAAa,WAAW,OAAO,QAAQ;AACpE,QAAuB,oBAAI,OAAO;EACjC,WAAW,GAAG,wCAAwC,UAAU;EAChE,UAA0B,qBAAK,OAAO;GACrC,WAAW;GACX,UAAU,CAAiB,oBAAI,gBAAgB;IAC9C;IACA;IACA,CAAC,EAAE,cAA8B,oBAAI,QAAQ;IAC7C,WAAW;IACX,UAAU;IACV,CAAC,GAAG,KAAK;GACV,CAAC;EACF,CAAC"}
@@ -40,4 +40,5 @@ function EmptyState({ icon, title, description, primaryAction, secondaryAction,
40
40
  }
41
41
 
42
42
  //#endregion
43
- export { EmptyState };
43
+ export { EmptyState };
44
+ //# sourceMappingURL=empty-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty-state.js","names":[],"sources":["../../../../../../../design-system/dist/ui-kit-web/dist/ui/empty-state.js"],"sourcesContent":["import { cn, init_utils } from \"../ui-kit-core/dist/utils.js\";\nimport { VStack } from \"./stack.js\";\nimport \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nimport { cva } from \"class-variance-authority\";\n\n//#region ../ui-kit-web/dist/ui/empty-state.js\ninit_utils();\nconst containerVariants = cva(\"items-center text-center\", {\n\tvariants: { density: {\n\t\tcompact: \"gap-3 p-6\",\n\t\tdefault: \"gap-4 p-8\"\n\t} },\n\tdefaultVariants: { density: \"default\" }\n});\nfunction EmptyState({ icon, title, description, primaryAction, secondaryAction, className, density }) {\n\treturn /* @__PURE__ */ jsxs(VStack, {\n\t\tclassName: cn(containerVariants({ density }), className),\n\t\tchildren: [\n\t\t\ticon ? /* @__PURE__ */ jsx(\"div\", {\n\t\t\t\tclassName: \"bg-muted flex h-12 w-12 items-center justify-center rounded-full\",\n\t\t\t\tchildren: /* @__PURE__ */ jsx(\"div\", {\n\t\t\t\t\tclassName: \"text-muted-foreground flex items-center justify-center\",\n\t\t\t\t\tchildren: icon\n\t\t\t\t})\n\t\t\t}) : null,\n\t\t\t/* @__PURE__ */ jsxs(\"div\", { children: [/* @__PURE__ */ jsx(\"h3\", {\n\t\t\t\tclassName: \"font-medium\",\n\t\t\t\tchildren: title\n\t\t\t}), description ? /* @__PURE__ */ jsx(\"p\", {\n\t\t\t\tclassName: \"text-muted-foreground text-base\",\n\t\t\t\tchildren: description\n\t\t\t}) : null] }),\n\t\t\t(primaryAction || secondaryAction) && /* @__PURE__ */ jsxs(\"div\", {\n\t\t\t\tclassName: \"flex items-center justify-center gap-2\",\n\t\t\t\tchildren: [primaryAction, secondaryAction]\n\t\t\t})\n\t\t]\n\t});\n}\n\n//#endregion\nexport { EmptyState };\n//# sourceMappingURL=empty-state.js.map"],"mappings":";;;;;;;AAOA,YAAY;AACZ,MAAM,oBAAoB,IAAI,4BAA4B;CACzD,UAAU,EAAE,SAAS;EACpB,SAAS;EACT,SAAS;EACT,EAAE;CACH,iBAAiB,EAAE,SAAS,WAAW;CACvC,CAAC;AACF,SAAS,WAAW,EAAE,MAAM,OAAO,aAAa,eAAe,iBAAiB,WAAW,WAAW;AACrG,QAAuB,qBAAK,QAAQ;EACnC,WAAW,GAAG,kBAAkB,EAAE,SAAS,CAAC,EAAE,UAAU;EACxD,UAAU;GACT,OAAuB,oBAAI,OAAO;IACjC,WAAW;IACX,UAA0B,oBAAI,OAAO;KACpC,WAAW;KACX,UAAU;KACV,CAAC;IACF,CAAC,GAAG;GACW,qBAAK,OAAO,EAAE,UAAU,CAAiB,oBAAI,MAAM;IAClE,WAAW;IACX,UAAU;IACV,CAAC,EAAE,cAA8B,oBAAI,KAAK;IAC1C,WAAW;IACX,UAAU;IACV,CAAC,GAAG,KAAK,EAAE,CAAC;IACZ,iBAAiB,oBAAoC,qBAAK,OAAO;IACjE,WAAW;IACX,UAAU,CAAC,eAAe,gBAAgB;IAC1C,CAAC;GACF;EACD,CAAC"}
@@ -155,4 +155,5 @@ const Box = React$1.forwardRef(({ className, gap, align, justify, wrap, as = "di
155
155
  Box.displayName = "Box";
156
156
 
157
157
  //#endregion
158
- export { HStack, VStack };
158
+ export { HStack, VStack };
159
+ //# sourceMappingURL=stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack.js","names":[],"sources":["../../../../../../../design-system/dist/ui-kit-web/dist/ui/stack.js"],"sourcesContent":["import { cn, init_utils } from \"../ui-kit-core/dist/utils.js\";\nimport * as React$1 from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { cva } from \"class-variance-authority\";\n\n//#region ../ui-kit-web/dist/ui/stack.js\ninit_utils();\nconst vStackVariants = cva(\"flex flex-col\", {\n\tvariants: {\n\t\tgap: {\n\t\t\tnone: \"gap-0\",\n\t\t\txs: \"gap-1\",\n\t\t\tsm: \"gap-2\",\n\t\t\tmd: \"gap-3\",\n\t\t\tlg: \"gap-4\",\n\t\t\txl: \"gap-6\",\n\t\t\t\"2xl\": \"gap-8\"\n\t\t},\n\t\talign: {\n\t\t\tstart: \"items-start\",\n\t\t\tcenter: \"items-center\",\n\t\t\tend: \"items-end\",\n\t\t\tstretch: \"items-stretch\"\n\t\t},\n\t\tjustify: {\n\t\t\tstart: \"justify-start\",\n\t\t\tcenter: \"justify-center\",\n\t\t\tend: \"justify-end\",\n\t\t\tbetween: \"justify-between\",\n\t\t\taround: \"justify-around\",\n\t\t\tevenly: \"justify-evenly\"\n\t\t}\n\t},\n\tdefaultVariants: {\n\t\tgap: \"md\",\n\t\talign: \"stretch\",\n\t\tjustify: \"start\"\n\t}\n});\nconst VStack = React$1.forwardRef(({ className, gap, align, justify, as = \"div\", ...props }, ref) => {\n\treturn /* @__PURE__ */ jsx(as, {\n\t\tref,\n\t\tclassName: cn(vStackVariants({\n\t\t\tgap,\n\t\t\talign,\n\t\t\tjustify\n\t\t}), className),\n\t\t...props\n\t});\n});\nVStack.displayName = \"VStack\";\nconst hStackVariants = cva(\"flex flex-row\", {\n\tvariants: {\n\t\tgap: {\n\t\t\tnone: \"gap-0\",\n\t\t\txs: \"gap-1\",\n\t\t\tsm: \"gap-2\",\n\t\t\tmd: \"gap-3\",\n\t\t\tlg: \"gap-4\",\n\t\t\txl: \"gap-6\",\n\t\t\t\"2xl\": \"gap-8\"\n\t\t},\n\t\talign: {\n\t\t\tstart: \"items-start\",\n\t\t\tcenter: \"items-center\",\n\t\t\tend: \"items-end\",\n\t\t\tstretch: \"items-stretch\",\n\t\t\tbaseline: \"items-baseline\"\n\t\t},\n\t\tjustify: {\n\t\t\tstart: \"justify-start\",\n\t\t\tcenter: \"justify-center\",\n\t\t\tend: \"justify-end\",\n\t\t\tbetween: \"justify-between\",\n\t\t\taround: \"justify-around\",\n\t\t\tevenly: \"justify-evenly\"\n\t\t},\n\t\twrap: {\n\t\t\tnowrap: \"flex-nowrap\",\n\t\t\twrap: \"flex-wrap\",\n\t\t\twrapReverse: \"flex-wrap-reverse\"\n\t\t}\n\t},\n\tdefaultVariants: {\n\t\tgap: \"md\",\n\t\talign: \"center\",\n\t\tjustify: \"start\",\n\t\twrap: \"wrap\"\n\t}\n});\nconst HStack = React$1.forwardRef(({ className, gap, align, justify, wrap, as = \"div\", ...props }, ref) => {\n\treturn /* @__PURE__ */ jsx(as, {\n\t\tref,\n\t\tclassName: cn(hStackVariants({\n\t\t\tgap,\n\t\t\talign,\n\t\t\tjustify,\n\t\t\twrap\n\t\t}), className),\n\t\t...props\n\t});\n});\nHStack.displayName = \"HStack\";\nconst boxVariants = cva(\"flex flex-row\", {\n\tvariants: {\n\t\tgap: {\n\t\t\tnone: \"gap-0\",\n\t\t\txs: \"gap-1\",\n\t\t\tsm: \"gap-2\",\n\t\t\tmd: \"gap-3\",\n\t\t\tlg: \"gap-4\",\n\t\t\txl: \"gap-6\",\n\t\t\t\"2xl\": \"gap-8\"\n\t\t},\n\t\talign: {\n\t\t\tstart: \"items-start\",\n\t\t\tcenter: \"items-center\",\n\t\t\tend: \"items-end\",\n\t\t\tstretch: \"items-stretch\",\n\t\t\tbaseline: \"items-baseline\"\n\t\t},\n\t\tjustify: {\n\t\t\tstart: \"justify-start\",\n\t\t\tcenter: \"justify-center\",\n\t\t\tend: \"justify-end\",\n\t\t\tbetween: \"justify-between\",\n\t\t\taround: \"justify-around\",\n\t\t\tevenly: \"justify-evenly\"\n\t\t},\n\t\twrap: {\n\t\t\tnowrap: \"flex-nowrap\",\n\t\t\twrap: \"flex-wrap\",\n\t\t\twrapReverse: \"flex-wrap-reverse\"\n\t\t}\n\t},\n\tdefaultVariants: {\n\t\tgap: \"md\",\n\t\talign: \"center\",\n\t\tjustify: \"center\",\n\t\twrap: \"nowrap\"\n\t}\n});\nconst Box = React$1.forwardRef(({ className, gap, align, justify, wrap, as = \"div\", ...props }, ref) => {\n\treturn /* @__PURE__ */ jsx(as, {\n\t\tref,\n\t\tclassName: cn(boxVariants({\n\t\t\tgap,\n\t\t\talign,\n\t\t\tjustify,\n\t\t\twrap\n\t\t}), className),\n\t\t...props\n\t});\n});\nBox.displayName = \"Box\";\n\n//#endregion\nexport { Box, HStack, VStack };\n//# sourceMappingURL=stack.js.map"],"mappings":";;;;;;AAMA,YAAY;AACZ,MAAM,iBAAiB,IAAI,iBAAiB;CAC3C,UAAU;EACT,KAAK;GACJ,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,OAAO;GACP;EACD,OAAO;GACN,OAAO;GACP,QAAQ;GACR,KAAK;GACL,SAAS;GACT;EACD,SAAS;GACR,OAAO;GACP,QAAQ;GACR,KAAK;GACL,SAAS;GACT,QAAQ;GACR,QAAQ;GACR;EACD;CACD,iBAAiB;EAChB,KAAK;EACL,OAAO;EACP,SAAS;EACT;CACD,CAAC;AACF,MAAM,SAAS,QAAQ,YAAY,EAAE,WAAW,KAAK,OAAO,SAAS,KAAK,OAAO,GAAG,SAAS,QAAQ;AACpG,QAAuB,oBAAI,IAAI;EAC9B;EACA,WAAW,GAAG,eAAe;GAC5B;GACA;GACA;GACA,CAAC,EAAE,UAAU;EACd,GAAG;EACH,CAAC;EACD;AACF,OAAO,cAAc;AACrB,MAAM,iBAAiB,IAAI,iBAAiB;CAC3C,UAAU;EACT,KAAK;GACJ,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,OAAO;GACP;EACD,OAAO;GACN,OAAO;GACP,QAAQ;GACR,KAAK;GACL,SAAS;GACT,UAAU;GACV;EACD,SAAS;GACR,OAAO;GACP,QAAQ;GACR,KAAK;GACL,SAAS;GACT,QAAQ;GACR,QAAQ;GACR;EACD,MAAM;GACL,QAAQ;GACR,MAAM;GACN,aAAa;GACb;EACD;CACD,iBAAiB;EAChB,KAAK;EACL,OAAO;EACP,SAAS;EACT,MAAM;EACN;CACD,CAAC;AACF,MAAM,SAAS,QAAQ,YAAY,EAAE,WAAW,KAAK,OAAO,SAAS,MAAM,KAAK,OAAO,GAAG,SAAS,QAAQ;AAC1G,QAAuB,oBAAI,IAAI;EAC9B;EACA,WAAW,GAAG,eAAe;GAC5B;GACA;GACA;GACA;GACA,CAAC,EAAE,UAAU;EACd,GAAG;EACH,CAAC;EACD;AACF,OAAO,cAAc;AACrB,MAAM,cAAc,IAAI,iBAAiB;CACxC,UAAU;EACT,KAAK;GACJ,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,OAAO;GACP;EACD,OAAO;GACN,OAAO;GACP,QAAQ;GACR,KAAK;GACL,SAAS;GACT,UAAU;GACV;EACD,SAAS;GACR,OAAO;GACP,QAAQ;GACR,KAAK;GACL,SAAS;GACT,QAAQ;GACR,QAAQ;GACR;EACD,MAAM;GACL,QAAQ;GACR,MAAM;GACN,aAAa;GACb;EACD;CACD,iBAAiB;EAChB,KAAK;EACL,OAAO;EACP,SAAS;EACT,MAAM;EACN;CACD,CAAC;AACF,MAAM,MAAM,QAAQ,YAAY,EAAE,WAAW,KAAK,OAAO,SAAS,MAAM,KAAK,OAAO,GAAG,SAAS,QAAQ;AACvG,QAAuB,oBAAI,IAAI;EAC9B;EACA,WAAW,GAAG,YAAY;GACzB;GACA;GACA;GACA;GACA,CAAC,EAAE,UAAU;EACd,GAAG;EACH,CAAC;EACD;AACF,IAAI,cAAc"}
@@ -34,4 +34,5 @@ function Stepper({ current, total, size, className }) {
34
34
  }
35
35
 
36
36
  //#endregion
37
- export { Stepper };
37
+ export { Stepper };
38
+ //# sourceMappingURL=stepper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stepper.js","names":[],"sources":["../../../../../../../design-system/dist/ui-kit-web/dist/ui/stepper.js"],"sourcesContent":["import { cn, init_utils } from \"../ui-kit-core/dist/utils.js\";\nimport { HStack } from \"./stack.js\";\nimport \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { cva } from \"class-variance-authority\";\n\n//#region ../ui-kit-web/dist/ui/stepper.js\ninit_utils();\nconst dotVariants = cva(\"h-2 w-2 rounded-full\", {\n\tvariants: {\n\t\tstate: {\n\t\t\tactive: \"bg-primary\",\n\t\t\tinactive: \"bg-muted-foreground/20\"\n\t\t},\n\t\tsize: {\n\t\t\tsm: \"\",\n\t\t\tmd: \"h-2.5 w-2.5\"\n\t\t}\n\t},\n\tdefaultVariants: {\n\t\tstate: \"inactive\",\n\t\tsize: \"md\"\n\t}\n});\nfunction Stepper({ current, total, size, className }) {\n\tconst items = Array.from({ length: Math.max(0, total) });\n\treturn /* @__PURE__ */ jsx(HStack, {\n\t\tclassName: cn(\"items-center gap-2\", className),\n\t\tchildren: items.map((_, idx) => /* @__PURE__ */ jsx(\"span\", { className: cn(dotVariants({\n\t\t\tstate: idx + 1 === current ? \"active\" : \"inactive\",\n\t\t\tsize\n\t\t})) }, idx))\n\t});\n}\n\n//#endregion\nexport { Stepper };\n//# sourceMappingURL=stepper.js.map"],"mappings":";;;;;;;AAOA,YAAY;AACZ,MAAM,cAAc,IAAI,wBAAwB;CAC/C,UAAU;EACT,OAAO;GACN,QAAQ;GACR,UAAU;GACV;EACD,MAAM;GACL,IAAI;GACJ,IAAI;GACJ;EACD;CACD,iBAAiB;EAChB,OAAO;EACP,MAAM;EACN;CACD,CAAC;AACF,SAAS,QAAQ,EAAE,SAAS,OAAO,MAAM,aAAa;CACrD,MAAM,QAAQ,MAAM,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,MAAM,EAAE,CAAC;AACxD,QAAuB,oBAAI,QAAQ;EAClC,WAAW,GAAG,sBAAsB,UAAU;EAC9C,UAAU,MAAM,KAAK,GAAG,QAAwB,oBAAI,QAAQ,EAAE,WAAW,GAAG,YAAY;GACvF,OAAO,MAAM,MAAM,UAAU,WAAW;GACxC;GACA,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC;EACZ,CAAC"}
@@ -7,4 +7,5 @@ function cn(...inputs) {
7
7
  }
8
8
 
9
9
  //#endregion
10
- export { cn };
10
+ export { cn };
11
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../../../../../../design-system/dist/ui-kit-web/dist/ui/utils.js"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n//#region ../ui-kit-web/dist/ui/utils.js\nfunction cn(...inputs) {\n\treturn twMerge(clsx(inputs));\n}\n\n//#endregion\nexport { cn };\n//# sourceMappingURL=utils.js.map"],"mappings":";;;;AAIA,SAAS,GAAG,GAAG,QAAQ;AACtB,QAAO,QAAQ,KAAK,OAAO,CAAC"}
@@ -10,4 +10,5 @@ var init_utils = __esmMin((() => {}));
10
10
  init_utils();
11
11
 
12
12
  //#endregion
13
- export { cn, init_utils };
13
+ export { cn, init_utils };
14
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../../../../../../../design-system/dist/ui-kit-web/dist/ui-kit-core/dist/utils.js"],"sourcesContent":["import { __esmMin } from \"../../../../_virtual/rolldown_runtime.js\";\nimport { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n//#region ../ui-kit-web/dist/ui-kit-core/dist/utils.js\nfunction cn(...inputs) {\n\treturn twMerge(clsx(inputs));\n}\nvar init_utils = __esmMin((() => {}));\n\n//#endregion\ninit_utils();\nexport { cn, init_utils };\n//# sourceMappingURL=utils.js.map"],"mappings":";;;;;AAKA,SAAS,GAAG,GAAG,QAAQ;AACtB,QAAO,QAAQ,KAAK,OAAO,CAAC;;AAE7B,IAAI,aAAa,gBAAgB,IAAI;AAGrC,YAAY"}
package/dist/index.d.ts CHANGED
@@ -111,4 +111,5 @@ declare function useListCoordinator<TFilters extends Record<string, unknown>, TV
111
111
  readonly clearAll: () => void;
112
112
  };
113
113
  //#endregion
114
- export { UseListCoordinatorOpts, UsePresentationControllerOpts, type UseWorkflowOptions, type UseWorkflowResult, WorkflowStepRenderer, WorkflowStepper, useListCoordinator, usePresentationController, useWorkflow };
114
+ export { UseListCoordinatorOpts, UsePresentationControllerOpts, type UseWorkflowOptions, type UseWorkflowResult, WorkflowStepRenderer, WorkflowStepper, useListCoordinator, usePresentationController, useWorkflow };
115
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -126,4 +126,5 @@ function useListCoordinator({ defaults, form: formOpts, toVariables, toChips, us
126
126
  }
127
127
 
128
128
  //#endregion
129
- export { WorkflowStepRenderer, WorkflowStepper, useListCoordinator, usePresentationController, useWorkflow };
129
+ export { WorkflowStepRenderer, WorkflowStepper, useListCoordinator, usePresentationController, useWorkflow };
130
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import * as React from 'react';\nimport type { DefaultValues, Resolver, UseFormReturn } from 'react-hook-form';\nimport { useForm } from '@lssm/lib.ui-kit-web/ui/form';\nimport type {\n ListFetcher,\n ListState,\n} from '@lssm/lib.presentation-runtime-core';\n\nexport interface UsePresentationControllerOpts<\n TFilters extends Record<string, unknown>,\n TVars,\n TItem,\n> {\n defaults: ListState<TFilters>;\n form: {\n defaultValues: DefaultValues<TFilters> | TFilters;\n resolver?: Resolver<TFilters>;\n };\n toVariables: (input: ListState<TFilters>) => TVars;\n fetcher: ListFetcher<TVars, TItem>;\n toChips?: (\n filters: TFilters,\n setFilter: (\n key: keyof TFilters,\n value: TFilters[keyof TFilters] | null\n ) => void\n ) => { key: string; label: React.ReactNode; onRemove?: () => void }[];\n useUrlState: (args: { defaults: ListState<TFilters>; replace?: boolean }) => {\n state: ListState<TFilters>;\n setState: (next: Partial<ListState<TFilters>>) => void;\n setFilter: (\n key: keyof TFilters,\n value: TFilters[keyof TFilters] | null\n ) => void;\n clearFilters: () => void;\n };\n replace?: boolean;\n}\n\nexport function usePresentationController<\n TFilters extends Record<string, unknown>,\n TVars,\n TItem,\n>({\n defaults,\n form: formOpts,\n toVariables,\n fetcher,\n toChips,\n useUrlState,\n replace,\n}: UsePresentationControllerOpts<TFilters, TVars, TItem>) {\n const url = useUrlState({ defaults, replace });\n const form = useForm<TFilters>({\n defaultValues: formOpts.defaultValues,\n resolver: formOpts.resolver as any,\n } as any);\n\n React.useEffect(() => {\n form.reset({ ...(form.getValues() as any), ...(url.state.filters as any) });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url.state.filters]);\n\n const submitFilters = form.handleSubmit((values) => {\n url.setState({ filters: values as TFilters, page: 1 });\n });\n\n const setSearch = React.useCallback(\n (q: string) => url.setState({ q, page: 1 }),\n [url]\n );\n const variables = React.useMemo(\n () => toVariables(url.state),\n [url.state, toVariables]\n );\n\n const [data, setData] = React.useState<TItem[]>([]);\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<unknown>(null);\n const [totalItems, setTotalItems] = React.useState<number | undefined>(\n undefined\n );\n const [totalPages, setTotalPages] = React.useState<number | undefined>(\n undefined\n );\n\n const refetch = React.useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const out = await fetcher(variables);\n setData(out.items);\n setTotalItems(out.totalItems);\n setTotalPages(out.totalPages);\n } catch (e) {\n setError(e);\n } finally {\n setLoading(false);\n }\n }, [variables, fetcher]);\n\n React.useEffect(() => {\n void refetch();\n }, [refetch]);\n\n const chips = React.useMemo(\n () =>\n toChips\n ? toChips(\n (url.state.filters as TFilters) || ({} as any),\n url.setFilter as any\n )\n : [],\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [url.state.filters, toChips]\n );\n\n const clearAll = React.useCallback(() => {\n form.reset(formOpts.defaultValues as any);\n url.setState({ filters: {} as TFilters, page: 1 });\n }, [form, formOpts.defaultValues, url]);\n\n return {\n form: form as UseFormReturn<TFilters>,\n url,\n variables,\n data,\n loading,\n error,\n totalItems,\n totalPages,\n refetch,\n chips,\n setSearch,\n submitFilters,\n clearAll,\n } as const;\n}\n\nexport interface UseListCoordinatorOpts<\n TFilters extends Record<string, unknown>,\n TVars,\n> {\n defaults: ListState<TFilters>;\n form: {\n defaultValues: DefaultValues<TFilters>;\n resolver?: Resolver<TFilters>;\n };\n toVariables: (input: ListState<TFilters>) => TVars;\n toChips?: (\n filters: TFilters,\n setFilter: (\n key: keyof TFilters,\n value: TFilters[keyof TFilters] | null\n ) => void\n ) => { key: string; label: React.ReactNode; onRemove?: () => void }[];\n useUrlState: (args: { defaults: ListState<TFilters>; replace?: boolean }) => {\n state: ListState<TFilters>;\n setState: (next: Partial<ListState<TFilters>>) => void;\n setFilter: (\n key: keyof TFilters,\n value: TFilters[keyof TFilters] | null\n ) => void;\n clearFilters: () => void;\n };\n replace?: boolean;\n}\n\nexport function useListCoordinator<\n TFilters extends Record<string, unknown>,\n TVars,\n>({\n defaults,\n form: formOpts,\n toVariables,\n toChips,\n useUrlState,\n replace,\n}: UseListCoordinatorOpts<TFilters, TVars>) {\n const url = useUrlState({ defaults, replace });\n const form = useForm<TFilters>({\n defaultValues: formOpts.defaultValues,\n resolver: formOpts.resolver,\n } as any);\n\n React.useEffect(() => {\n form.reset({ ...(form.getValues() as any), ...(url.state.filters as any) });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url.state.filters]);\n\n const submitFilters = form.handleSubmit((values) => {\n url.setState({ filters: values as TFilters, page: 1 });\n });\n\n const setSearch = React.useCallback(\n (q: string) => url.setState({ q, page: 1 }),\n [url]\n );\n const variables = React.useMemo(\n () => toVariables(url.state),\n [url.state, toVariables]\n );\n\n const chips = React.useMemo(\n () =>\n toChips\n ? toChips(\n (url.state.filters as TFilters) || ({} as any),\n url.setFilter as any\n )\n : [],\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [url.state.filters, toChips]\n );\n\n const clearAll = React.useCallback(() => {\n form.reset(formOpts.defaultValues as any);\n url.setState({ filters: {} as TFilters, page: 1 });\n }, [form, formOpts.defaultValues, url]);\n\n return {\n form: form as UseFormReturn<TFilters>,\n url,\n variables,\n chips,\n setSearch,\n submitFilters,\n clearAll,\n } as const;\n}\n\nexport { useWorkflow } from './useWorkflow';\nexport type { UseWorkflowOptions, UseWorkflowResult } from './useWorkflow';\nexport { WorkflowStepper } from './WorkflowStepper';\nexport { WorkflowStepRenderer } from './WorkflowStepRenderer';\n"],"mappings":"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"}
@@ -12,4 +12,5 @@ const FormFieldContext = React$1.createContext({});
12
12
  const FormItemContext = React$1.createContext({});
13
13
 
14
14
  //#endregion
15
- export { useForm };
15
+ export { useForm };
16
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.js","names":[],"sources":["../../../../../ui-kit-web/dist/ui/form.js"],"sourcesContent":["'use client';\n\nimport { cn } from \"./utils.js\";\nimport { Label } from \"./label.js\";\nimport * as React$1 from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport \"@radix-ui/react-label\";\nimport { Controller, FormProvider, useFieldArray, useForm, useFormContext, useFormState } from \"react-hook-form\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\n\n//#region ui/form.tsx\nconst Form = FormProvider;\nconst FormFieldContext = React$1.createContext({});\nconst FormField = ({ ...props }) => {\n\treturn /* @__PURE__ */ jsx(FormFieldContext.Provider, {\n\t\tvalue: { name: props.name },\n\t\tchildren: /* @__PURE__ */ jsx(Controller, { ...props })\n\t});\n};\nconst useFormField = () => {\n\tconst fieldContext = React$1.useContext(FormFieldContext);\n\tconst itemContext = React$1.useContext(FormItemContext);\n\tconst { getFieldState } = useFormContext();\n\tconst formState = useFormState({ name: fieldContext.name });\n\tconst fieldState = getFieldState(fieldContext.name, formState);\n\tif (!fieldContext) throw new Error(\"useFormField should be used within <FormField>\");\n\tconst { id } = itemContext;\n\treturn {\n\t\tid,\n\t\tname: fieldContext.name,\n\t\tformItemId: `${id}-form-item`,\n\t\tformDescriptionId: `${id}-form-item-description`,\n\t\tformMessageId: `${id}-form-item-message`,\n\t\t...fieldState\n\t};\n};\nconst FormItemContext = React$1.createContext({});\nfunction FormItem({ className, ...props }) {\n\tconst id = React$1.useId();\n\treturn /* @__PURE__ */ jsx(FormItemContext.Provider, {\n\t\tvalue: { id },\n\t\tchildren: /* @__PURE__ */ jsx(\"div\", {\n\t\t\t\"data-slot\": \"form-item\",\n\t\t\tclassName: cn(\"grid gap-2\", className),\n\t\t\t...props\n\t\t})\n\t});\n}\nfunction FormLabel({ className, ...props }) {\n\tconst { error, formItemId } = useFormField();\n\treturn /* @__PURE__ */ jsx(Label, {\n\t\t\"data-slot\": \"form-label\",\n\t\t\"data-error\": !!error,\n\t\tclassName: cn(\"data-[error=true]:text-destructive\", className),\n\t\thtmlFor: formItemId,\n\t\t...props\n\t});\n}\nfunction FormControl({ ...props }) {\n\tconst { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n\treturn /* @__PURE__ */ jsx(Slot, {\n\t\t\"data-slot\": \"form-control\",\n\t\tid: formItemId,\n\t\t\"aria-describedby\": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,\n\t\t\"aria-invalid\": !!error,\n\t\t...props\n\t});\n}\nfunction FormDescription({ className, ...props }) {\n\tconst { formDescriptionId } = useFormField();\n\treturn /* @__PURE__ */ jsx(\"p\", {\n\t\t\"data-slot\": \"form-description\",\n\t\tid: formDescriptionId,\n\t\tclassName: cn(\"text-muted-foreground text-sm\", className),\n\t\t...props\n\t});\n}\nfunction FormMessage({ className, ...props }) {\n\tconst { error, formMessageId } = useFormField();\n\tconst body = error ? String(error?.message ?? \"\") : props.children;\n\tif (!body) return null;\n\treturn /* @__PURE__ */ jsx(\"p\", {\n\t\t\"data-slot\": \"form-message\",\n\t\tid: formMessageId,\n\t\tclassName: cn(\"text-destructive text-sm\", className),\n\t\t...props,\n\t\tchildren: body\n\t});\n}\n\n//#endregion\nexport { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, useFieldArray, useForm, useFormField, zodResolver };\n//# sourceMappingURL=form.js.map"],"mappings":";;;;;;;;;;AAaA,MAAM,mBAAmB,QAAQ,cAAc,EAAE,CAAC;AAwBlD,MAAM,kBAAkB,QAAQ,cAAc,EAAE,CAAC"}
@@ -23,4 +23,5 @@ declare function useWorkflow({
23
23
  refreshIntervalMs
24
24
  }: UseWorkflowOptions): UseWorkflowResult;
25
25
  //#endregion
26
- export { UseWorkflowOptions, UseWorkflowResult, useWorkflow };
26
+ export { UseWorkflowOptions, UseWorkflowResult, useWorkflow };
27
+ //# sourceMappingURL=useWorkflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWorkflow.d.ts","names":[],"sources":["../src/useWorkflow.ts"],"sourcesContent":[],"mappings":";;;UAMiB,kBAAA;;EAAA,MAAA,EAEP,cAFyB;EAOlB,WAAA,CAAA,EAAA,OAAiB;EACzB,iBAAA,CAAA,EAAA,MAAA;;AAIQ,UALA,iBAAA,CAKA;EACmB,KAAA,EAL3B,aAK2B,GAAA,IAAA;EACpB,SAAA,EAAA,OAAA;EAAO,KAAA,EAJd,KAIc,GAAA,IAAA;EAGP,WAAA,EAAA,OAAW;EACzB,OAAA,EAAA,GAAA,GANe,OAMf,CAAA,IAAA,CAAA;EACA,WAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,GANkC,OAMlC,CAAA,IAAA,CAAA;EACA,MAAA,EAAA,GAAA,GANc,OAMd,CAAA,IAAA,CAAA;;AAEC,iBALa,WAAA,CAKb;EAAA,UAAA;EAAA,MAAA;EAAA,WAAA;EAAA;AAAA,CAAA,EAAA,kBAAA,CAAA,EAAqB,iBAArB"}
@@ -75,4 +75,5 @@ function useWorkflow({ workflowId, runner, autoRefresh = true, refreshIntervalMs
75
75
  }
76
76
 
77
77
  //#endregion
78
- export { useWorkflow };
78
+ export { useWorkflow };
79
+ //# sourceMappingURL=useWorkflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWorkflow.js","names":[],"sources":["../src/useWorkflow.ts"],"sourcesContent":["import * as React from 'react';\nimport type {\n WorkflowRunner,\n WorkflowState,\n} from '@lssm/lib.contracts/workflow';\n\nexport interface UseWorkflowOptions {\n workflowId: string;\n runner: WorkflowRunner;\n autoRefresh?: boolean;\n refreshIntervalMs?: number;\n}\n\nexport interface UseWorkflowResult {\n state: WorkflowState | null;\n isLoading: boolean;\n error: Error | null;\n isExecuting: boolean;\n refresh: () => Promise<void>;\n executeStep: (input?: unknown) => Promise<void>;\n cancel: () => Promise<void>;\n}\n\nexport function useWorkflow({\n workflowId,\n runner,\n autoRefresh = true,\n refreshIntervalMs = 2000,\n}: UseWorkflowOptions): UseWorkflowResult {\n const isMounted = React.useRef(true);\n const [state, setState] = React.useState<WorkflowState | null>(null);\n const [isLoading, setIsLoading] = React.useState(true);\n const [error, setError] = React.useState<Error | null>(null);\n const [isExecuting, setIsExecuting] = React.useState(false);\n\n const refresh = React.useCallback(async () => {\n try {\n setIsLoading(true);\n const next = await runner.getState(workflowId);\n if (!isMounted.current) return;\n setState(next);\n setError(null);\n } catch (err) {\n if (!isMounted.current) return;\n setError(err instanceof Error ? err : new Error(String(err)));\n } finally {\n if (isMounted.current) setIsLoading(false);\n }\n }, [runner, workflowId]);\n\n const executeStep = React.useCallback(\n async (input?: unknown) => {\n setIsExecuting(true);\n try {\n await runner.executeStep(workflowId, input);\n await refresh();\n } catch (err) {\n if (isMounted.current) {\n setError(err instanceof Error ? err : new Error(String(err)));\n }\n throw err;\n } finally {\n if (isMounted.current) setIsExecuting(false);\n }\n },\n [runner, workflowId, refresh]\n );\n\n const cancel = React.useCallback(async () => {\n await runner.cancel(workflowId);\n await refresh();\n }, [runner, workflowId, refresh]);\n\n React.useEffect(() => {\n isMounted.current = true;\n void refresh();\n if (!autoRefresh) {\n return () => {\n isMounted.current = false;\n };\n }\n const interval = setInterval(() => {\n void refresh();\n }, refreshIntervalMs);\n return () => {\n isMounted.current = false;\n clearInterval(interval);\n };\n }, [refresh, autoRefresh, refreshIntervalMs]);\n\n return {\n state,\n isLoading,\n error,\n isExecuting,\n refresh,\n executeStep,\n cancel,\n };\n}\n"],"mappings":";;;AAuBA,SAAgB,YAAY,EAC1B,YACA,QACA,cAAc,MACd,oBAAoB,OACoB;CACxC,MAAM,YAAY,MAAM,OAAO,KAAK;CACpC,MAAM,CAAC,OAAO,YAAY,MAAM,SAA+B,KAAK;CACpE,MAAM,CAAC,WAAW,gBAAgB,MAAM,SAAS,KAAK;CACtD,MAAM,CAAC,OAAO,YAAY,MAAM,SAAuB,KAAK;CAC5D,MAAM,CAAC,aAAa,kBAAkB,MAAM,SAAS,MAAM;CAE3D,MAAM,UAAU,MAAM,YAAY,YAAY;AAC5C,MAAI;AACF,gBAAa,KAAK;GAClB,MAAM,OAAO,MAAM,OAAO,SAAS,WAAW;AAC9C,OAAI,CAAC,UAAU,QAAS;AACxB,YAAS,KAAK;AACd,YAAS,KAAK;WACP,KAAK;AACZ,OAAI,CAAC,UAAU,QAAS;AACxB,YAAS,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,IAAI,CAAC,CAAC;YACrD;AACR,OAAI,UAAU,QAAS,cAAa,MAAM;;IAE3C,CAAC,QAAQ,WAAW,CAAC;CAExB,MAAM,cAAc,MAAM,YACxB,OAAO,UAAoB;AACzB,iBAAe,KAAK;AACpB,MAAI;AACF,SAAM,OAAO,YAAY,YAAY,MAAM;AAC3C,SAAM,SAAS;WACR,KAAK;AACZ,OAAI,UAAU,QACZ,UAAS,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,IAAI,CAAC,CAAC;AAE/D,SAAM;YACE;AACR,OAAI,UAAU,QAAS,gBAAe,MAAM;;IAGhD;EAAC;EAAQ;EAAY;EAAQ,CAC9B;CAED,MAAM,SAAS,MAAM,YAAY,YAAY;AAC3C,QAAM,OAAO,OAAO,WAAW;AAC/B,QAAM,SAAS;IACd;EAAC;EAAQ;EAAY;EAAQ,CAAC;AAEjC,OAAM,gBAAgB;AACpB,YAAU,UAAU;AACpB,EAAK,SAAS;AACd,MAAI,CAAC,YACH,cAAa;AACX,aAAU,UAAU;;EAGxB,MAAM,WAAW,kBAAkB;AACjC,GAAK,SAAS;KACb,kBAAkB;AACrB,eAAa;AACX,aAAU,UAAU;AACpB,iBAAc,SAAS;;IAExB;EAAC;EAAS;EAAa;EAAkB,CAAC;AAE7C,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lssm/lib.presentation-runtime-react",
3
- "version": "0.0.0-canary-20251217083314",
3
+ "version": "0.0.0-canary-20251219202229",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -21,13 +21,13 @@
21
21
  "react": "^19.2.3",
22
22
  "react-hook-form": "^7.68.0",
23
23
  "zod": "^4.1.13",
24
- "@lssm/lib.presentation-runtime-core": "0.0.0-canary-20251217083314"
24
+ "@lssm/lib.presentation-runtime-core": "0.0.0-canary-20251219202229"
25
25
  },
26
26
  "dependencies": {
27
- "@lssm/lib.presentation-runtime-core": "0.0.0-canary-20251217083314",
28
- "@lssm/lib.contracts": "0.0.0-canary-20251217083314",
29
- "@lssm/lib.design-system": "0.0.0-canary-20251217083314",
30
- "@lssm/lib.ui-kit-web": "0.0.0-canary-20251217083314"
27
+ "@lssm/lib.presentation-runtime-core": "0.0.0-canary-20251219202229",
28
+ "@lssm/lib.contracts": "0.0.0-canary-20251219202229",
29
+ "@lssm/lib.design-system": "0.0.0-canary-20251219202229",
30
+ "@lssm/lib.ui-kit-web": "0.0.0-canary-20251219202229"
31
31
  },
32
32
  "files": [
33
33
  "dist",
@@ -49,5 +49,6 @@
49
49
  "./WorkflowStepRenderer": "./dist/WorkflowStepRenderer.js",
50
50
  "./*": "./*"
51
51
  }
52
- }
52
+ },
53
+ "license": "MIT"
53
54
  }