@quanticjs/workflow-ui 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 (186) hide show
  1. package/dist/components/ProcessTimeline/ProcessTimeline.d.ts +7 -0
  2. package/dist/components/ProcessTimeline/ProcessTimeline.d.ts.map +1 -0
  3. package/dist/components/ProcessTimeline/ProcessTimeline.js +48 -0
  4. package/dist/components/ProcessTimeline/ProcessTimeline.js.map +1 -0
  5. package/dist/components/ProcessTimeline/ProcessTimelineSkeleton.d.ts +6 -0
  6. package/dist/components/ProcessTimeline/ProcessTimelineSkeleton.d.ts.map +1 -0
  7. package/dist/components/ProcessTimeline/ProcessTimelineSkeleton.js +6 -0
  8. package/dist/components/ProcessTimeline/ProcessTimelineSkeleton.js.map +1 -0
  9. package/dist/components/ProcessTimeline/TimelineEntry.d.ts +8 -0
  10. package/dist/components/ProcessTimeline/TimelineEntry.d.ts.map +1 -0
  11. package/dist/components/ProcessTimeline/TimelineEntry.js +66 -0
  12. package/dist/components/ProcessTimeline/TimelineEntry.js.map +1 -0
  13. package/dist/components/ProcessTimeline/index.d.ts +4 -0
  14. package/dist/components/ProcessTimeline/index.d.ts.map +1 -0
  15. package/dist/components/ProcessTimeline/index.js +4 -0
  16. package/dist/components/ProcessTimeline/index.js.map +1 -0
  17. package/dist/components/TaskActions/ConfirmationDialog.d.ts +8 -0
  18. package/dist/components/TaskActions/ConfirmationDialog.d.ts.map +1 -0
  19. package/dist/components/TaskActions/ConfirmationDialog.js +45 -0
  20. package/dist/components/TaskActions/ConfirmationDialog.js.map +1 -0
  21. package/dist/components/TaskActions/TaskActions.d.ts +10 -0
  22. package/dist/components/TaskActions/TaskActions.d.ts.map +1 -0
  23. package/dist/components/TaskActions/TaskActions.js +51 -0
  24. package/dist/components/TaskActions/TaskActions.js.map +1 -0
  25. package/dist/components/TaskActions/index.d.ts +3 -0
  26. package/dist/components/TaskActions/index.d.ts.map +1 -0
  27. package/dist/components/TaskActions/index.js +3 -0
  28. package/dist/components/TaskActions/index.js.map +1 -0
  29. package/dist/components/TaskDetail/TaskDetail.d.ts +8 -0
  30. package/dist/components/TaskDetail/TaskDetail.d.ts.map +1 -0
  31. package/dist/components/TaskDetail/TaskDetail.js +116 -0
  32. package/dist/components/TaskDetail/TaskDetail.js.map +1 -0
  33. package/dist/components/TaskDetail/TaskDetailError.d.ts +7 -0
  34. package/dist/components/TaskDetail/TaskDetailError.d.ts.map +1 -0
  35. package/dist/components/TaskDetail/TaskDetailError.js +8 -0
  36. package/dist/components/TaskDetail/TaskDetailError.js.map +1 -0
  37. package/dist/components/TaskDetail/TaskDetailHeader.d.ts +7 -0
  38. package/dist/components/TaskDetail/TaskDetailHeader.d.ts.map +1 -0
  39. package/dist/components/TaskDetail/TaskDetailHeader.js +39 -0
  40. package/dist/components/TaskDetail/TaskDetailHeader.js.map +1 -0
  41. package/dist/components/TaskDetail/TaskDetailNotFound.d.ts +5 -0
  42. package/dist/components/TaskDetail/TaskDetailNotFound.d.ts.map +1 -0
  43. package/dist/components/TaskDetail/TaskDetailNotFound.js +6 -0
  44. package/dist/components/TaskDetail/TaskDetailNotFound.js.map +1 -0
  45. package/dist/components/TaskDetail/TaskDetailSkeleton.d.ts +5 -0
  46. package/dist/components/TaskDetail/TaskDetailSkeleton.d.ts.map +1 -0
  47. package/dist/components/TaskDetail/TaskDetailSkeleton.js +6 -0
  48. package/dist/components/TaskDetail/TaskDetailSkeleton.js.map +1 -0
  49. package/dist/components/TaskDetail/index.d.ts +6 -0
  50. package/dist/components/TaskDetail/index.d.ts.map +1 -0
  51. package/dist/components/TaskDetail/index.js +6 -0
  52. package/dist/components/TaskDetail/index.js.map +1 -0
  53. package/dist/components/TaskInbox/TaskCard.d.ts +10 -0
  54. package/dist/components/TaskInbox/TaskCard.d.ts.map +1 -0
  55. package/dist/components/TaskInbox/TaskCard.js +90 -0
  56. package/dist/components/TaskInbox/TaskCard.js.map +1 -0
  57. package/dist/components/TaskInbox/TaskFilters.d.ts +10 -0
  58. package/dist/components/TaskInbox/TaskFilters.d.ts.map +1 -0
  59. package/dist/components/TaskInbox/TaskFilters.js +59 -0
  60. package/dist/components/TaskInbox/TaskFilters.js.map +1 -0
  61. package/dist/components/TaskInbox/TaskInbox.d.ts +12 -0
  62. package/dist/components/TaskInbox/TaskInbox.d.ts.map +1 -0
  63. package/dist/components/TaskInbox/TaskInbox.js +85 -0
  64. package/dist/components/TaskInbox/TaskInbox.js.map +1 -0
  65. package/dist/components/TaskInbox/TaskInboxEmpty.d.ts +7 -0
  66. package/dist/components/TaskInbox/TaskInboxEmpty.d.ts.map +1 -0
  67. package/dist/components/TaskInbox/TaskInboxEmpty.js +6 -0
  68. package/dist/components/TaskInbox/TaskInboxEmpty.js.map +1 -0
  69. package/dist/components/TaskInbox/TaskInboxError.d.ts +7 -0
  70. package/dist/components/TaskInbox/TaskInboxError.d.ts.map +1 -0
  71. package/dist/components/TaskInbox/TaskInboxError.js +8 -0
  72. package/dist/components/TaskInbox/TaskInboxError.js.map +1 -0
  73. package/dist/components/TaskInbox/TaskInboxSkeleton.d.ts +6 -0
  74. package/dist/components/TaskInbox/TaskInboxSkeleton.d.ts.map +1 -0
  75. package/dist/components/TaskInbox/TaskInboxSkeleton.js +6 -0
  76. package/dist/components/TaskInbox/TaskInboxSkeleton.js.map +1 -0
  77. package/dist/components/TaskInbox/index.d.ts +7 -0
  78. package/dist/components/TaskInbox/index.d.ts.map +1 -0
  79. package/dist/components/TaskInbox/index.js +7 -0
  80. package/dist/components/TaskInbox/index.js.map +1 -0
  81. package/dist/components/WorkflowForm/FieldRenderer.d.ts +14 -0
  82. package/dist/components/WorkflowForm/FieldRenderer.d.ts.map +1 -0
  83. package/dist/components/WorkflowForm/FieldRenderer.js +28 -0
  84. package/dist/components/WorkflowForm/FieldRenderer.js.map +1 -0
  85. package/dist/components/WorkflowForm/FormSection.d.ts +10 -0
  86. package/dist/components/WorkflowForm/FormSection.d.ts.map +1 -0
  87. package/dist/components/WorkflowForm/FormSection.js +12 -0
  88. package/dist/components/WorkflowForm/FormSection.js.map +1 -0
  89. package/dist/components/WorkflowForm/WorkflowForm.d.ts +11 -0
  90. package/dist/components/WorkflowForm/WorkflowForm.d.ts.map +1 -0
  91. package/dist/components/WorkflowForm/WorkflowForm.js +61 -0
  92. package/dist/components/WorkflowForm/WorkflowForm.js.map +1 -0
  93. package/dist/components/WorkflowForm/buildZodSchema.d.ts +4 -0
  94. package/dist/components/WorkflowForm/buildZodSchema.d.ts.map +1 -0
  95. package/dist/components/WorkflowForm/buildZodSchema.js +79 -0
  96. package/dist/components/WorkflowForm/buildZodSchema.js.map +1 -0
  97. package/dist/components/WorkflowForm/fields/CheckboxField.d.ts +3 -0
  98. package/dist/components/WorkflowForm/fields/CheckboxField.d.ts.map +1 -0
  99. package/dist/components/WorkflowForm/fields/CheckboxField.js +7 -0
  100. package/dist/components/WorkflowForm/fields/CheckboxField.js.map +1 -0
  101. package/dist/components/WorkflowForm/fields/DateField.d.ts +3 -0
  102. package/dist/components/WorkflowForm/fields/DateField.d.ts.map +1 -0
  103. package/dist/components/WorkflowForm/fields/DateField.js +7 -0
  104. package/dist/components/WorkflowForm/fields/DateField.js.map +1 -0
  105. package/dist/components/WorkflowForm/fields/FileUploadField.d.ts +3 -0
  106. package/dist/components/WorkflowForm/fields/FileUploadField.d.ts.map +1 -0
  107. package/dist/components/WorkflowForm/fields/FileUploadField.js +80 -0
  108. package/dist/components/WorkflowForm/fields/FileUploadField.js.map +1 -0
  109. package/dist/components/WorkflowForm/fields/MultiSelectField.d.ts +3 -0
  110. package/dist/components/WorkflowForm/fields/MultiSelectField.d.ts.map +1 -0
  111. package/dist/components/WorkflowForm/fields/MultiSelectField.js +33 -0
  112. package/dist/components/WorkflowForm/fields/MultiSelectField.js.map +1 -0
  113. package/dist/components/WorkflowForm/fields/NumberField.d.ts +3 -0
  114. package/dist/components/WorkflowForm/fields/NumberField.d.ts.map +1 -0
  115. package/dist/components/WorkflowForm/fields/NumberField.js +16 -0
  116. package/dist/components/WorkflowForm/fields/NumberField.js.map +1 -0
  117. package/dist/components/WorkflowForm/fields/ReadonlyField.d.ts +3 -0
  118. package/dist/components/WorkflowForm/fields/ReadonlyField.d.ts.map +1 -0
  119. package/dist/components/WorkflowForm/fields/ReadonlyField.js +6 -0
  120. package/dist/components/WorkflowForm/fields/ReadonlyField.js.map +1 -0
  121. package/dist/components/WorkflowForm/fields/SelectField.d.ts +3 -0
  122. package/dist/components/WorkflowForm/fields/SelectField.d.ts.map +1 -0
  123. package/dist/components/WorkflowForm/fields/SelectField.js +7 -0
  124. package/dist/components/WorkflowForm/fields/SelectField.js.map +1 -0
  125. package/dist/components/WorkflowForm/fields/TextField.d.ts +3 -0
  126. package/dist/components/WorkflowForm/fields/TextField.d.ts.map +1 -0
  127. package/dist/components/WorkflowForm/fields/TextField.js +7 -0
  128. package/dist/components/WorkflowForm/fields/TextField.js.map +1 -0
  129. package/dist/components/WorkflowForm/fields/TextareaField.d.ts +3 -0
  130. package/dist/components/WorkflowForm/fields/TextareaField.d.ts.map +1 -0
  131. package/dist/components/WorkflowForm/fields/TextareaField.js +7 -0
  132. package/dist/components/WorkflowForm/fields/TextareaField.js.map +1 -0
  133. package/dist/components/WorkflowForm/fields/UnknownField.d.ts +3 -0
  134. package/dist/components/WorkflowForm/fields/UnknownField.d.ts.map +1 -0
  135. package/dist/components/WorkflowForm/fields/UnknownField.js +7 -0
  136. package/dist/components/WorkflowForm/fields/UnknownField.js.map +1 -0
  137. package/dist/components/WorkflowForm/fields/shared.d.ts +22 -0
  138. package/dist/components/WorkflowForm/fields/shared.d.ts.map +1 -0
  139. package/dist/components/WorkflowForm/fields/shared.js +2 -0
  140. package/dist/components/WorkflowForm/fields/shared.js.map +1 -0
  141. package/dist/components/WorkflowForm/index.d.ts +5 -0
  142. package/dist/components/WorkflowForm/index.d.ts.map +1 -0
  143. package/dist/components/WorkflowForm/index.js +5 -0
  144. package/dist/components/WorkflowForm/index.js.map +1 -0
  145. package/dist/hooks/mutation-error-handler.d.ts +3 -0
  146. package/dist/hooks/mutation-error-handler.d.ts.map +1 -0
  147. package/dist/hooks/mutation-error-handler.js +20 -0
  148. package/dist/hooks/mutation-error-handler.js.map +1 -0
  149. package/dist/hooks/useProcessTimeline.d.ts +8 -0
  150. package/dist/hooks/useProcessTimeline.d.ts.map +1 -0
  151. package/dist/hooks/useProcessTimeline.js +17 -0
  152. package/dist/hooks/useProcessTimeline.js.map +1 -0
  153. package/dist/hooks/useTask.d.ts +3 -0
  154. package/dist/hooks/useTask.d.ts.map +1 -0
  155. package/dist/hooks/useTask.js +11 -0
  156. package/dist/hooks/useTask.js.map +1 -0
  157. package/dist/hooks/useTaskAction.d.ts +3 -0
  158. package/dist/hooks/useTaskAction.d.ts.map +1 -0
  159. package/dist/hooks/useTaskAction.js +15 -0
  160. package/dist/hooks/useTaskAction.js.map +1 -0
  161. package/dist/hooks/useTaskClaim.d.ts +5 -0
  162. package/dist/hooks/useTaskClaim.d.ts.map +1 -0
  163. package/dist/hooks/useTaskClaim.js +23 -0
  164. package/dist/hooks/useTaskClaim.js.map +1 -0
  165. package/dist/hooks/useTaskList.d.ts +3 -0
  166. package/dist/hooks/useTaskList.d.ts.map +1 -0
  167. package/dist/hooks/useTaskList.js +23 -0
  168. package/dist/hooks/useTaskList.js.map +1 -0
  169. package/dist/index.d.ts +13 -0
  170. package/dist/index.d.ts.map +1 -0
  171. package/dist/index.js +12 -0
  172. package/dist/index.js.map +1 -0
  173. package/dist/provider/WorkflowProvider.d.ts +32 -0
  174. package/dist/provider/WorkflowProvider.d.ts.map +1 -0
  175. package/dist/provider/WorkflowProvider.js +52 -0
  176. package/dist/provider/WorkflowProvider.js.map +1 -0
  177. package/dist/test-setup.d.ts +2 -0
  178. package/dist/test-setup.d.ts.map +1 -0
  179. package/dist/test-setup.js +2 -0
  180. package/dist/test-setup.js.map +1 -0
  181. package/dist/tsconfig.build.tsbuildinfo +1 -0
  182. package/dist/types.d.ts +141 -0
  183. package/dist/types.d.ts.map +1 -0
  184. package/dist/types.js +2 -0
  185. package/dist/types.js.map +1 -0
  186. package/package.json +53 -0
@@ -0,0 +1,14 @@
1
+ import type { WorkflowFormField } from '../../types';
2
+ import type { RegisterReturn } from './fields/shared';
3
+ interface FieldRendererProps {
4
+ field: WorkflowFormField;
5
+ register: (name: string) => RegisterReturn;
6
+ setValue: (name: string, value: unknown) => void;
7
+ error?: string;
8
+ readOnly?: boolean;
9
+ value?: unknown;
10
+ className?: string;
11
+ }
12
+ export declare const FieldRenderer: import("react").ForwardRefExoticComponent<FieldRendererProps & import("react").RefAttributes<HTMLDivElement>>;
13
+ export {};
14
+ //# sourceMappingURL=FieldRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldRenderer.d.ts","sourceRoot":"","sources":["../../../src/components/WorkflowForm/FieldRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAYtD,UAAU,kBAAkB;IAC1B,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,cAAc,CAAC;IAC3C,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD,eAAO,MAAM,aAAa,+GAUxB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from 'react';
3
+ import { TextField } from './fields/TextField';
4
+ import { TextareaField } from './fields/TextareaField';
5
+ import { NumberField } from './fields/NumberField';
6
+ import { SelectField } from './fields/SelectField';
7
+ import { MultiSelectField } from './fields/MultiSelectField';
8
+ import { CheckboxField } from './fields/CheckboxField';
9
+ import { DateField } from './fields/DateField';
10
+ import { FileUploadField } from './fields/FileUploadField';
11
+ import { ReadonlyField } from './fields/ReadonlyField';
12
+ import { UnknownField } from './fields/UnknownField';
13
+ const FIELD_MAP = {
14
+ text: TextField,
15
+ textarea: TextareaField,
16
+ number: NumberField,
17
+ select: SelectField,
18
+ multiselect: MultiSelectField,
19
+ checkbox: CheckboxField,
20
+ date: DateField,
21
+ file: FileUploadField,
22
+ readonly: ReadonlyField,
23
+ };
24
+ export const FieldRenderer = forwardRef(function FieldRenderer({ className, ...props }, ref) {
25
+ const Component = FIELD_MAP[props.field.type] ?? UnknownField;
26
+ return (_jsx("div", { ref: ref, className: className, children: _jsx(Component, { ...props }) }));
27
+ });
28
+ //# sourceMappingURL=FieldRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldRenderer.js","sourceRoot":"","sources":["../../../src/components/WorkflowForm/FieldRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAYrD,MAAM,SAAS,GAAqC;IAClD,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,aAAa;IACvB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,gBAAgB;IAC7B,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,aAAa;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAqC,SAAS,aAAa,CAChG,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EACvB,GAAG;IAEH,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC;IAC9D,OAAO,CACL,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,YACjC,KAAC,SAAS,OAAK,KAAK,GAAI,GACpB,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type ReactNode } from 'react';
2
+ interface FormSectionProps {
3
+ label: string;
4
+ columns?: number;
5
+ children: ReactNode;
6
+ className?: string;
7
+ }
8
+ export declare const FormSection: import("react").ForwardRefExoticComponent<FormSectionProps & import("react").RefAttributes<HTMLFieldSetElement>>;
9
+ export {};
10
+ //# sourceMappingURL=FormSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormSection.d.ts","sourceRoot":"","sources":["../../../src/components/WorkflowForm/FormSection.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEnD,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,kHAoBtB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { forwardRef } from 'react';
3
+ export const FormSection = forwardRef(function FormSection({ label, columns, children, className }, ref) {
4
+ const cols = columns && columns > 1 ? columns : 2;
5
+ const gridClass = cols === 3
6
+ ? 'grid grid-cols-3 gap-x-10 gap-y-5'
7
+ : cols === 4
8
+ ? 'grid grid-cols-4 gap-x-10 gap-y-5'
9
+ : 'grid grid-cols-2 gap-x-10 gap-y-5';
10
+ return (_jsxs("fieldset", { ref: ref, className: `border-t border-border pt-5 ${className ?? ''}`, children: [_jsx("legend", { className: "mb-4 text-[11px] font-semibold uppercase tracking-wider text-muted-foreground", children: label }), _jsx("div", { className: gridClass, children: children })] }));
11
+ });
12
+ //# sourceMappingURL=FormSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormSection.js","sourceRoot":"","sources":["../../../src/components/WorkflowForm/FormSection.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,OAAO,CAAC;AASnD,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAwC,SAAS,WAAW,CAC/F,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EACvC,GAAG;IAEH,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,SAAS,GACb,IAAI,KAAK,CAAC;QACR,CAAC,CAAC,mCAAmC;QACrC,CAAC,CAAC,IAAI,KAAK,CAAC;YACV,CAAC,CAAC,mCAAmC;YACrC,CAAC,CAAC,mCAAmC,CAAC;IAE5C,OAAO,CACL,oBAAU,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,+BAA+B,SAAS,IAAI,EAAE,EAAE,aAC7E,iBAAQ,SAAS,EAAC,+EAA+E,YAC9F,KAAK,GACC,EACT,cAAK,SAAS,EAAE,SAAS,YAAG,QAAQ,GAAO,IAClC,CACZ,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { WorkflowFormSchema } from '../../types';
2
+ export interface WorkflowFormProps {
3
+ schema: WorkflowFormSchema;
4
+ initialValues?: Record<string, unknown>;
5
+ onSubmit?: (data: Record<string, unknown>) => void | Promise<void>;
6
+ activeAction?: string;
7
+ readOnly?: boolean;
8
+ className?: string;
9
+ }
10
+ export declare const WorkflowForm: import("react").ForwardRefExoticComponent<WorkflowFormProps & import("react").RefAttributes<HTMLFormElement>>;
11
+ //# sourceMappingURL=WorkflowForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowForm.d.ts","sourceRoot":"","sources":["../../../src/components/WorkflowForm/WorkflowForm.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAqB,MAAM,aAAa,CAAC;AAKzE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyBD,eAAO,MAAM,YAAY,+GA2FvB,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo, forwardRef } from 'react';
3
+ import { useForm } from '@quanticjs/react-forms';
4
+ import { buildZodSchema } from './buildZodSchema';
5
+ import { FieldRenderer } from './FieldRenderer';
6
+ import { FormSection } from './FormSection';
7
+ function computeDefaults(fields, initialValues) {
8
+ const result = {};
9
+ for (const field of fields) {
10
+ if (field.type === 'readonly')
11
+ continue;
12
+ const initial = initialValues?.[field.name];
13
+ if (initial !== undefined) {
14
+ result[field.name] = initial;
15
+ }
16
+ else if (field.default !== undefined) {
17
+ result[field.name] = field.default;
18
+ }
19
+ else if (field.type === 'checkbox') {
20
+ result[field.name] = false;
21
+ }
22
+ else if (field.type === 'multiselect' || field.type === 'file') {
23
+ result[field.name] = [];
24
+ }
25
+ else {
26
+ result[field.name] = '';
27
+ }
28
+ }
29
+ return result;
30
+ }
31
+ export const WorkflowForm = forwardRef(function WorkflowForm({ schema, initialValues, onSubmit, activeAction, readOnly, className }, ref) {
32
+ const zodSchema = useMemo(() => buildZodSchema(schema.fields, activeAction), [schema.fields, activeAction]);
33
+ const defaults = useMemo(() => computeDefaults(schema.fields, initialValues), [schema.fields, initialValues]);
34
+ const form = useForm({
35
+ schema: zodSchema,
36
+ defaultValues: defaults,
37
+ onSubmit: async (data) => {
38
+ await onSubmit?.(data);
39
+ },
40
+ });
41
+ const sections = schema.layout?.sections;
42
+ const sectionedFieldNames = new Set(sections?.flatMap((s) => s.fields) ?? []);
43
+ const unsectionedFields = schema.fields.filter((f) => !sectionedFieldNames.has(f.name));
44
+ const renderField = (field) => {
45
+ const fieldValue = field.type === 'readonly'
46
+ ? (initialValues?.[field.name] ?? field.default)
47
+ : form.values[field.name];
48
+ return (_jsx(FieldRenderer, { field: field, register: form.register, setValue: form.setValue, error: form.errors[field.name], readOnly: readOnly, value: fieldValue }, field.name));
49
+ };
50
+ const fieldsByName = useMemo(() => {
51
+ const map = new Map();
52
+ for (const f of schema.fields)
53
+ map.set(f.name, f);
54
+ return map;
55
+ }, [schema.fields]);
56
+ return (_jsxs("form", { ref: ref, onSubmit: form.handleSubmit, className: className, noValidate: true, "aria-label": "Workflow form", children: [form.errors._root && (_jsx("div", { className: "mb-4 rounded-xl border border-destructive/30 bg-destructive/5 px-4 py-3 text-sm text-destructive", role: "alert", "aria-live": "assertive", children: form.errors._root })), sections && sections.length > 0 ? (_jsxs(_Fragment, { children: [sections.map((section) => (_jsx(FormSection, { label: section.label, columns: section.columns, children: section.fields
57
+ .map((name) => fieldsByName.get(name))
58
+ .filter((f) => !!f)
59
+ .map(renderField) }, section.name))), unsectionedFields.length > 0 && (_jsx("div", { className: "grid grid-cols-2 gap-x-10 gap-y-5", children: unsectionedFields.map(renderField) }))] })) : (_jsx("div", { className: "grid grid-cols-2 gap-x-10 gap-y-5", children: schema.fields.map(renderField) }))] }));
60
+ });
61
+ //# sourceMappingURL=WorkflowForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowForm.js","sourceRoot":"","sources":["../../../src/components/WorkflowForm/WorkflowForm.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { z, type ZodTypeAny } from 'zod';
2
+ import type { WorkflowFormField } from '../../types';
3
+ export declare function buildZodSchema(fields: WorkflowFormField[], activeAction?: string): z.ZodObject<Record<string, ZodTypeAny>>;
4
+ //# sourceMappingURL=buildZodSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildZodSchema.d.ts","sourceRoot":"","sources":["../../../src/components/WorkflowForm/buildZodSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAwErD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,iBAAiB,EAAE,EAC3B,YAAY,CAAC,EAAE,MAAM,GACpB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAOzC"}
@@ -0,0 +1,79 @@
1
+ import { z } from 'zod';
2
+ function isFieldRequired(field, activeAction) {
3
+ if (field.requiredForActions && field.requiredForActions.length > 0) {
4
+ return !!activeAction && field.requiredForActions.includes(activeAction);
5
+ }
6
+ return !!field.required;
7
+ }
8
+ function buildStringField(field, required) {
9
+ let schema = z.string();
10
+ if (required)
11
+ schema = schema.min(1, `${field.label} is required`);
12
+ if (field.validation?.minLength != null) {
13
+ schema = schema.min(field.validation.minLength, `Minimum ${field.validation.minLength} characters`);
14
+ }
15
+ if (field.validation?.maxLength != null) {
16
+ schema = schema.max(field.validation.maxLength, `Maximum ${field.validation.maxLength} characters`);
17
+ }
18
+ if (field.validation?.pattern) {
19
+ schema = schema.regex(new RegExp(field.validation.pattern), 'Invalid format');
20
+ }
21
+ return required ? schema : schema.or(z.literal(''));
22
+ }
23
+ function buildNumberField(field, required) {
24
+ if (!required) {
25
+ return z.union([
26
+ z.number()
27
+ .pipe(z.number()
28
+ .min(field.validation?.min ?? -Infinity)
29
+ .max(field.validation?.max ?? Infinity)),
30
+ z.nan(),
31
+ z.literal(''),
32
+ ]).transform(v => (v === '' || (typeof v === 'number' && isNaN(v)) ? undefined : v));
33
+ }
34
+ let schema = z.number({ invalid_type_error: `${field.label} must be a number` });
35
+ if (field.validation?.min != null)
36
+ schema = schema.min(field.validation.min, `Minimum value is ${field.validation.min}`);
37
+ if (field.validation?.max != null)
38
+ schema = schema.max(field.validation.max, `Maximum value is ${field.validation.max}`);
39
+ return schema;
40
+ }
41
+ function buildFieldSchema(field, activeAction) {
42
+ const required = isFieldRequired(field, activeAction);
43
+ switch (field.type) {
44
+ case 'number':
45
+ return buildNumberField(field, required);
46
+ case 'checkbox':
47
+ return z.boolean().default(false);
48
+ case 'select':
49
+ return required
50
+ ? z.string().min(1, `${field.label} is required`)
51
+ : z.string();
52
+ case 'multiselect':
53
+ return required
54
+ ? z.array(z.string()).min(1, `${field.label} is required`)
55
+ : z.array(z.string()).default([]);
56
+ case 'date':
57
+ return required
58
+ ? z.string().min(1, `${field.label} is required`)
59
+ : z.string();
60
+ case 'file':
61
+ return required
62
+ ? z.array(z.object({ id: z.string(), name: z.string(), url: z.string() })).min(1, `${field.label} is required`)
63
+ : z.array(z.object({ id: z.string(), name: z.string(), url: z.string() })).default([]);
64
+ case 'readonly':
65
+ return z.unknown().optional();
66
+ default:
67
+ return buildStringField(field, required);
68
+ }
69
+ }
70
+ export function buildZodSchema(fields, activeAction) {
71
+ const shape = {};
72
+ for (const field of fields) {
73
+ if (field.type === 'readonly')
74
+ continue;
75
+ shape[field.name] = buildFieldSchema(field, activeAction);
76
+ }
77
+ return z.object(shape);
78
+ }
79
+ //# sourceMappingURL=buildZodSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildZodSchema.js","sourceRoot":"","sources":["../../../src/components/WorkflowForm/buildZodSchema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { FieldProps } from './shared';
2
+ export declare function CheckboxField({ field, error, readOnly, value, setValue }: FieldProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=CheckboxField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckboxField.d.ts","sourceRoot":"","sources":["../../../../src/components/WorkflowForm/fields/CheckboxField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,2CA4BpF"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function CheckboxField({ field, error, readOnly, value, setValue }) {
3
+ const checked = !!value;
4
+ const errorId = `${field.name}-error`;
5
+ return (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center gap-2.5", children: [_jsx("input", { id: field.name, type: "checkbox", checked: checked, disabled: readOnly, onChange: (e) => setValue(field.name, e.target.checked), "aria-invalid": !!error || undefined, "aria-describedby": error ? errorId : undefined, className: "h-4 w-4 shrink-0 rounded border-border text-primary accent-primary focus:ring-2 focus:ring-primary disabled:opacity-60" }), _jsx("label", { htmlFor: field.name, className: "text-sm font-semibold text-foreground", children: field.label })] }), error && (_jsx("p", { id: errorId, className: "mt-1 text-xs text-destructive", role: "alert", children: error }))] }));
6
+ }
7
+ //# sourceMappingURL=CheckboxField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckboxField.js","sourceRoot":"","sources":["../../../../src/components/WorkflowForm/fields/CheckboxField.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAc;IACnF,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC;IACxB,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,QAAQ,CAAC;IAEtC,OAAO,CACL,0BACE,eAAK,SAAS,EAAC,2BAA2B,aACxC,gBACE,EAAE,EAAE,KAAK,CAAC,IAAI,EACd,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,kBACzC,CAAC,CAAC,KAAK,IAAI,SAAS,sBAChB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAC7C,SAAS,EAAC,wHAAwH,GAClI,EACF,gBAAO,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAC,uCAAuC,YAC1E,KAAK,CAAC,KAAK,GACN,IACJ,EACL,KAAK,IAAI,CACR,YAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,+BAA+B,EAAC,IAAI,EAAC,OAAO,YACnE,KAAK,GACJ,CACL,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FieldProps } from './shared';
2
+ export declare function DateField({ field, register, error, readOnly }: FieldProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=DateField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateField.d.ts","sourceRoot":"","sources":["../../../../src/components/WorkflowForm/fields/DateField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,2CA6BzE"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function DateField({ field, register, error, readOnly }) {
3
+ const props = register(field.name);
4
+ const errorId = `${field.name}-error`;
5
+ return (_jsxs("div", { children: [_jsx("label", { htmlFor: field.name, className: "mb-1 block text-[11px] font-semibold uppercase tracking-wider text-muted-foreground", children: field.label }), _jsx("input", { id: field.name, type: "date", ...props, disabled: readOnly, "aria-required": !readOnly && field.required ? 'true' : undefined, "aria-invalid": !!error || undefined, "aria-describedby": error ? errorId : undefined, className: `w-full rounded-xl border bg-muted/30 px-4 py-3 text-sm text-foreground transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent disabled:opacity-60 ${error ? 'border-destructive' : 'border-border'}` }), error && (_jsx("p", { id: errorId, className: "mt-1 text-xs text-destructive", role: "alert", children: error }))] }));
6
+ }
7
+ //# sourceMappingURL=DateField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateField.js","sourceRoot":"","sources":["../../../../src/components/WorkflowForm/fields/DateField.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAc;IACxE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,QAAQ,CAAC;IAEtC,OAAO,CACL,0BACE,gBACE,OAAO,EAAE,KAAK,CAAC,IAAI,EACnB,SAAS,EAAC,qFAAqF,YAE9F,KAAK,CAAC,KAAK,GACN,EACR,gBACE,EAAE,EAAE,KAAK,CAAC,IAAI,EACd,IAAI,EAAC,MAAM,KACP,KAAK,EACT,QAAQ,EAAE,QAAQ,mBACH,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,kBACjD,CAAC,CAAC,KAAK,IAAI,SAAS,sBAChB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAC7C,SAAS,EAAE,4LAA4L,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,eAAe,EAAE,GACvP,EACD,KAAK,IAAI,CACR,YAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,+BAA+B,EAAC,IAAI,EAAC,OAAO,YACnE,KAAK,GACJ,CACL,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FieldProps } from './shared';
2
+ export declare function FileUploadField({ field, error, readOnly, value, setValue }: FieldProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=FileUploadField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileUploadField.d.ts","sourceRoot":"","sources":["../../../../src/components/WorkflowForm/fields/FileUploadField.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,UAAU,CAAC;AAQ1D,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,2CA6LtF"}
@@ -0,0 +1,80 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useRef, useCallback } from 'react';
3
+ import { useWorkflowContext } from '../../../provider/WorkflowProvider';
4
+ export function FileUploadField({ field, error, readOnly, value, setValue }) {
5
+ const { fileUploadUrl, fileDownloadUrl } = useWorkflowContext();
6
+ const files = Array.isArray(value) ? value : [];
7
+ const [uploadState, setUploadState] = useState({
8
+ uploading: false,
9
+ progress: 0,
10
+ });
11
+ const inputRef = useRef(null);
12
+ const errorId = `${field.name}-error`;
13
+ const displayError = uploadState.error ?? error;
14
+ const handleUpload = useCallback(async (fileList) => {
15
+ if (!fileUploadUrl)
16
+ return;
17
+ setUploadState({ uploading: true, progress: 0 });
18
+ const uploaded = [...files];
19
+ for (let i = 0; i < fileList.length; i++) {
20
+ const file = fileList[i];
21
+ if (!file)
22
+ continue;
23
+ const formData = new FormData();
24
+ formData.append('file', file);
25
+ try {
26
+ const xhr = new XMLHttpRequest();
27
+ const result = await new Promise((resolve, reject) => {
28
+ xhr.upload.addEventListener('progress', (e) => {
29
+ if (e.lengthComputable) {
30
+ setUploadState((s) => ({
31
+ ...s,
32
+ progress: Math.round((e.loaded / e.total) * 100),
33
+ }));
34
+ }
35
+ });
36
+ xhr.addEventListener('load', () => {
37
+ if (xhr.status >= 200 && xhr.status < 300) {
38
+ resolve(JSON.parse(xhr.responseText));
39
+ }
40
+ else {
41
+ reject(new Error('Upload failed'));
42
+ }
43
+ });
44
+ xhr.addEventListener('error', () => reject(new Error('Upload failed')));
45
+ xhr.open('POST', fileUploadUrl);
46
+ xhr.send(formData);
47
+ });
48
+ uploaded.push(result);
49
+ }
50
+ catch {
51
+ setUploadState({ uploading: false, progress: 0, error: `Failed to upload ${file.name}` });
52
+ return;
53
+ }
54
+ }
55
+ setValue(field.name, uploaded);
56
+ setUploadState({ uploading: false, progress: 0 });
57
+ }, [fileUploadUrl, files, field.name, setValue]);
58
+ const removeFile = useCallback((fileId) => {
59
+ setValue(field.name, files.filter((f) => f.id !== fileId));
60
+ }, [files, field.name, setValue]);
61
+ if (readOnly) {
62
+ return (_jsxs("div", { children: [_jsx("span", { className: "mb-1 block text-[11px] font-semibold uppercase tracking-wider text-muted-foreground", children: field.label }), files.length === 0 ? (_jsx("p", { className: "text-sm text-muted-foreground", children: "No files" })) : (_jsx("ul", { className: "space-y-1", children: files.map((f) => (_jsx("li", { children: _jsx("a", { href: fileDownloadUrl ? `${fileDownloadUrl}/${f.id}` : f.url, target: "_blank", rel: "noopener noreferrer", className: "text-sm font-medium text-primary hover:underline", children: f.name }) }, f.id))) }))] }));
63
+ }
64
+ return (_jsxs("div", { className: "col-span-2", children: [_jsx("label", { htmlFor: field.name, className: "mb-1.5 block text-[11px] font-semibold uppercase tracking-wider text-muted-foreground", children: field.label }), _jsxs("div", { className: `flex cursor-pointer flex-col items-center justify-center rounded-xl border-2 border-dashed bg-muted/20 px-6 py-8 text-center transition-colors hover:bg-muted/40 ${displayError ? 'border-destructive' : 'border-border'}`, role: "button", tabIndex: 0, "aria-label": `Upload file for ${field.label}`, "aria-required": field.required ? 'true' : undefined, "aria-invalid": !!displayError || undefined, "aria-describedby": displayError ? errorId : undefined, onClick: () => inputRef.current?.click(), onKeyDown: (e) => {
65
+ if (e.key === 'Enter' || e.key === ' ') {
66
+ e.preventDefault();
67
+ inputRef.current?.click();
68
+ }
69
+ }, onDragOver: (e) => e.preventDefault(), onDrop: (e) => {
70
+ e.preventDefault();
71
+ if (e.dataTransfer.files.length > 0) {
72
+ handleUpload(e.dataTransfer.files);
73
+ }
74
+ }, children: [_jsx("input", { ref: inputRef, id: field.name, type: "file", multiple: true, className: "sr-only", onChange: (e) => {
75
+ if (e.target.files && e.target.files.length > 0) {
76
+ handleUpload(e.target.files);
77
+ }
78
+ } }), uploadState.uploading ? (_jsxs("div", { className: "w-full max-w-xs", children: [_jsxs("div", { role: "status", "aria-label": "Uploading", className: "mb-2 text-sm text-muted-foreground", children: ["Uploading... ", uploadState.progress, "%"] }), _jsx("div", { className: "h-1.5 w-full overflow-hidden rounded-full bg-muted", children: _jsx("div", { className: "h-full rounded-full bg-primary transition-all", style: { width: `${uploadState.progress}%` } }) })] })) : (_jsx("p", { className: "text-sm text-muted-foreground", children: "Drop files here or click to upload" }))] }), files.length > 0 && (_jsx("ul", { className: "mt-2 space-y-1", children: files.map((f) => (_jsxs("li", { className: "flex items-center justify-between rounded-lg bg-muted/30 px-3 py-1.5", children: [_jsx("span", { className: "text-sm text-foreground", children: f.name }), _jsx("button", { type: "button", "aria-label": `Remove ${f.name}`, className: "text-muted-foreground hover:text-destructive", onClick: () => removeFile(f.id), children: "\u00D7" })] }, f.id))) })), displayError && (_jsx("p", { id: errorId, className: "mt-1 text-xs text-destructive", role: "alert", children: displayError }))] }));
79
+ }
80
+ //# sourceMappingURL=FileUploadField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileUploadField.js","sourceRoot":"","sources":["../../../../src/components/WorkflowForm/fields/FileUploadField.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { FieldProps } from './shared';
2
+ export declare function MultiSelectField({ field, error, readOnly, value, setValue }: FieldProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=MultiSelectField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiSelectField.d.ts","sourceRoot":"","sources":["../../../../src/components/WorkflowForm/fields/MultiSelectField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,2CAgHvF"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useRef, useCallback } from 'react';
3
+ export function MultiSelectField({ field, error, readOnly, value, setValue }) {
4
+ const selected = Array.isArray(value) ? value : [];
5
+ const [open, setOpen] = useState(false);
6
+ const containerRef = useRef(null);
7
+ const errorId = `${field.name}-error`;
8
+ const toggle = useCallback((optValue) => {
9
+ const next = selected.includes(optValue)
10
+ ? selected.filter((v) => v !== optValue)
11
+ : [...selected, optValue];
12
+ setValue(field.name, next);
13
+ }, [selected, field.name, setValue]);
14
+ const remove = useCallback((optValue) => {
15
+ setValue(field.name, selected.filter((v) => v !== optValue));
16
+ }, [selected, field.name, setValue]);
17
+ const labelFor = (val) => field.options?.find((o) => o.value === val)?.label ?? val;
18
+ return (_jsxs("div", { ref: containerRef, children: [_jsx("label", { id: `${field.name}-label`, className: "mb-1 block text-[11px] font-semibold uppercase tracking-wider text-muted-foreground", children: field.label }), _jsxs("div", { role: "listbox", "aria-labelledby": `${field.name}-label`, "aria-multiselectable": "true", "aria-required": !readOnly && field.required ? 'true' : undefined, "aria-invalid": !!error || undefined, "aria-describedby": error ? errorId : undefined, tabIndex: readOnly ? -1 : 0, className: `flex min-h-[44px] cursor-pointer flex-wrap items-center gap-1.5 rounded-xl border bg-muted/30 px-4 py-2.5 text-sm transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent ${error ? 'border-destructive' : 'border-border'}`, onClick: () => !readOnly && setOpen((o) => !o), onKeyDown: (e) => {
19
+ if (!readOnly && (e.key === 'Enter' || e.key === ' ')) {
20
+ e.preventDefault();
21
+ setOpen((o) => !o);
22
+ }
23
+ }, children: [selected.length === 0 && _jsx("span", { className: "text-muted-foreground/50", children: "Select..." }), selected.map((val) => (_jsxs("span", { className: "inline-flex items-center gap-1 rounded-md bg-primary/10 px-2 py-0.5 text-xs font-medium text-primary", role: "option", "aria-selected": "true", children: [labelFor(val), !readOnly && (_jsx("button", { type: "button", "aria-label": `Remove ${labelFor(val)}`, className: "text-primary/60 hover:text-primary", onClick: (e) => {
24
+ e.stopPropagation();
25
+ remove(val);
26
+ }, children: "\u00D7" }))] }, val)))] }), open && !readOnly && (_jsx("ul", { className: "mt-1 max-h-48 overflow-y-auto rounded-xl border border-border bg-card shadow-lg", role: "listbox", children: field.options?.map((opt) => (_jsx("li", { role: "option", "aria-selected": selected.includes(opt.value), tabIndex: 0, className: `cursor-pointer px-4 py-2.5 text-sm transition-colors hover:bg-accent ${selected.includes(opt.value) ? 'bg-primary/5 font-semibold text-primary' : 'text-foreground'}`, onClick: () => toggle(opt.value), onKeyDown: (e) => {
27
+ if (e.key === 'Enter' || e.key === ' ') {
28
+ e.preventDefault();
29
+ toggle(opt.value);
30
+ }
31
+ }, children: opt.label }, opt.value))) })), error && (_jsx("p", { id: errorId, className: "mt-1 text-xs text-destructive", role: "alert", children: error }))] }));
32
+ }
33
+ //# sourceMappingURL=MultiSelectField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiSelectField.js","sourceRoot":"","sources":["../../../../src/components/WorkflowForm/fields/MultiSelectField.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { FieldProps } from './shared';
2
+ export declare function NumberField({ field, register, error, readOnly, setValue }: FieldProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=NumberField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberField.d.ts","sourceRoot":"","sources":["../../../../src/components/WorkflowForm/fields/NumberField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,UAAU,2CA4CrF"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function NumberField({ field, register, error, readOnly, setValue }) {
3
+ const props = register(field.name);
4
+ const errorId = `${field.name}-error`;
5
+ const handleChange = (e) => {
6
+ const raw = e.target.value;
7
+ if (raw === '') {
8
+ setValue(field.name, '');
9
+ }
10
+ else {
11
+ setValue(field.name, Number(raw));
12
+ }
13
+ };
14
+ return (_jsxs("div", { children: [_jsx("label", { htmlFor: field.name, className: "mb-1 block text-[11px] font-semibold uppercase tracking-wider text-muted-foreground", children: field.label }), _jsx("input", { id: field.name, type: "number", name: props.name, value: String(props.value ?? ''), onChange: handleChange, onBlur: props.onBlur, step: field.validation?.step, min: field.validation?.min, max: field.validation?.max, disabled: readOnly, "aria-required": !readOnly && field.required ? 'true' : undefined, "aria-invalid": !!error || undefined, "aria-describedby": error ? errorId : undefined, className: `w-full rounded-xl border bg-muted/30 px-4 py-3 text-sm font-bold text-foreground placeholder-muted-foreground/50 transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent disabled:opacity-60 ${error ? 'border-destructive' : 'border-border'}` }), error && (_jsx("p", { id: errorId, className: "mt-1 text-xs text-destructive", role: "alert", children: error }))] }));
15
+ }
16
+ //# sourceMappingURL=NumberField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberField.js","sourceRoot":"","sources":["../../../../src/components/WorkflowForm/fields/NumberField.tsx"],"names":[],"mappings":";AAGA,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAc;IACpF,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,QAAQ,CAAC;IAEtC,MAAM,YAAY,GAAG,CAAC,CAAgC,EAAE,EAAE;QACxD,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;YACf,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,0BACE,gBACE,OAAO,EAAE,KAAK,CAAC,IAAI,EACnB,SAAS,EAAC,qFAAqF,YAE9F,KAAK,CAAC,KAAK,GACN,EACR,gBACE,EAAE,EAAE,KAAK,CAAC,IAAI,EACd,IAAI,EAAC,QAAQ,EACb,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,EAChC,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAC5B,GAAG,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,EAC1B,GAAG,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,EAC1B,QAAQ,EAAE,QAAQ,mBACH,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,kBACjD,CAAC,CAAC,KAAK,IAAI,SAAS,sBAChB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAC7C,SAAS,EAAE,sOAAsO,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,eAAe,EAAE,GACjS,EACD,KAAK,IAAI,CACR,YAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,+BAA+B,EAAC,IAAI,EAAC,OAAO,YACnE,KAAK,GACJ,CACL,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FieldProps } from './shared';
2
+ export declare function ReadonlyField({ field, value }: FieldProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=ReadonlyField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadonlyField.d.ts","sourceRoot":"","sources":["../../../../src/components/WorkflowForm/fields/ReadonlyField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,UAAU,2CAezD"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function ReadonlyField({ field, value }) {
3
+ const displayValue = value != null ? String(value) : '';
4
+ return (_jsxs("div", { children: [_jsx("span", { className: "mb-1 block text-[11px] font-semibold uppercase tracking-wider text-muted-foreground", children: field.label }), displayValue ? (_jsx("span", { className: "block text-sm font-semibold text-foreground", children: displayValue })) : (_jsx("span", { className: "block text-sm text-muted-foreground", children: "\u2014" }))] }));
5
+ }
6
+ //# sourceMappingURL=ReadonlyField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadonlyField.js","sourceRoot":"","sources":["../../../../src/components/WorkflowForm/fields/ReadonlyField.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAc;IACxD,MAAM,YAAY,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAExD,OAAO,CACL,0BACE,eAAM,SAAS,EAAC,qFAAqF,YAClG,KAAK,CAAC,KAAK,GACP,EACN,YAAY,CAAC,CAAC,CAAC,CACd,eAAM,SAAS,EAAC,6CAA6C,YAAE,YAAY,GAAQ,CACpF,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,qCAAqC,uBAAS,CAC/D,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FieldProps } from './shared';
2
+ export declare function SelectField({ field, register, error, readOnly }: FieldProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=SelectField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectField.d.ts","sourceRoot":"","sources":["../../../../src/components/WorkflowForm/fields/SelectField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,2CAmC3E"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function SelectField({ field, register, error, readOnly }) {
3
+ const props = register(field.name);
4
+ const errorId = `${field.name}-error`;
5
+ return (_jsxs("div", { children: [_jsx("label", { htmlFor: field.name, className: "mb-1 block text-[11px] font-semibold uppercase tracking-wider text-muted-foreground", children: field.label }), _jsxs("select", { id: field.name, ...props, disabled: readOnly, "aria-required": !readOnly && field.required ? 'true' : undefined, "aria-invalid": !!error || undefined, "aria-describedby": error ? errorId : undefined, className: `w-full appearance-none rounded-xl border bg-muted/30 px-4 py-3 text-sm text-foreground transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent disabled:opacity-60 ${error ? 'border-destructive' : 'border-border'}`, children: [_jsx("option", { value: "", children: "Select..." }), field.options?.map((opt) => (_jsx("option", { value: opt.value, children: opt.label }, opt.value)))] }), error && (_jsx("p", { id: errorId, className: "mt-1 text-xs text-destructive", role: "alert", children: error }))] }));
6
+ }
7
+ //# sourceMappingURL=SelectField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectField.js","sourceRoot":"","sources":["../../../../src/components/WorkflowForm/fields/SelectField.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAc;IAC1E,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,QAAQ,CAAC;IAEtC,OAAO,CACL,0BACE,gBACE,OAAO,EAAE,KAAK,CAAC,IAAI,EACnB,SAAS,EAAC,qFAAqF,YAE9F,KAAK,CAAC,KAAK,GACN,EACR,kBACE,EAAE,EAAE,KAAK,CAAC,IAAI,KACV,KAAK,EACT,QAAQ,EAAE,QAAQ,mBACH,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,kBACjD,CAAC,CAAC,KAAK,IAAI,SAAS,sBAChB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAC7C,SAAS,EAAE,4MAA4M,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,eAAe,EAAE,aAEvQ,iBAAQ,KAAK,EAAC,EAAE,0BAAmB,EAClC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAC3B,iBAAwB,KAAK,EAAE,GAAG,CAAC,KAAK,YACrC,GAAG,CAAC,KAAK,IADC,GAAG,CAAC,KAAK,CAEb,CACV,CAAC,IACK,EACR,KAAK,IAAI,CACR,YAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,+BAA+B,EAAC,IAAI,EAAC,OAAO,YACnE,KAAK,GACJ,CACL,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FieldProps } from './shared';
2
+ export declare function TextField({ field, register, error, readOnly }: FieldProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=TextField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextField.d.ts","sourceRoot":"","sources":["../../../../src/components/WorkflowForm/fields/TextField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,2CA6BzE"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function TextField({ field, register, error, readOnly }) {
3
+ const props = register(field.name);
4
+ const errorId = `${field.name}-error`;
5
+ return (_jsxs("div", { children: [_jsx("label", { htmlFor: field.name, className: "mb-1 block text-[11px] font-semibold uppercase tracking-wider text-muted-foreground", children: field.label }), _jsx("input", { id: field.name, type: "text", ...props, disabled: readOnly, "aria-required": !readOnly && field.required ? 'true' : undefined, "aria-invalid": !!error || undefined, "aria-describedby": error ? errorId : undefined, className: `w-full rounded-xl border bg-muted/30 px-4 py-3 text-sm text-foreground placeholder-muted-foreground/50 transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent disabled:opacity-60 ${error ? 'border-destructive' : 'border-border'}` }), error && (_jsx("p", { id: errorId, className: "mt-1 text-xs text-destructive", role: "alert", children: error }))] }));
6
+ }
7
+ //# sourceMappingURL=TextField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextField.js","sourceRoot":"","sources":["../../../../src/components/WorkflowForm/fields/TextField.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAc;IACxE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,QAAQ,CAAC;IAEtC,OAAO,CACL,0BACE,gBACE,OAAO,EAAE,KAAK,CAAC,IAAI,EACnB,SAAS,EAAC,qFAAqF,YAE9F,KAAK,CAAC,KAAK,GACN,EACR,gBACE,EAAE,EAAE,KAAK,CAAC,IAAI,EACd,IAAI,EAAC,MAAM,KACP,KAAK,EACT,QAAQ,EAAE,QAAQ,mBACH,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,kBACjD,CAAC,CAAC,KAAK,IAAI,SAAS,sBAChB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAC7C,SAAS,EAAE,4NAA4N,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,eAAe,EAAE,GACvR,EACD,KAAK,IAAI,CACR,YAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,+BAA+B,EAAC,IAAI,EAAC,OAAO,YACnE,KAAK,GACJ,CACL,IACG,CACP,CAAC;AACJ,CAAC"}