@uipath/apollo-wind 0.7.2-pr188.4865fad

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 (254) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +188 -0
  3. package/dist/components/forms/data-fetcher.cjs +250 -0
  4. package/dist/components/forms/data-fetcher.d.ts +173 -0
  5. package/dist/components/forms/data-fetcher.js +207 -0
  6. package/dist/components/forms/demo-mocks.cjs +1031 -0
  7. package/dist/components/forms/demo-mocks.d.ts +10 -0
  8. package/dist/components/forms/demo-mocks.js +997 -0
  9. package/dist/components/forms/field-renderer.cjs +595 -0
  10. package/dist/components/forms/field-renderer.d.ts +14 -0
  11. package/dist/components/forms/field-renderer.js +561 -0
  12. package/dist/components/forms/form-designer.cjs +2314 -0
  13. package/dist/components/forms/form-designer.d.ts +1 -0
  14. package/dist/components/forms/form-designer.js +2280 -0
  15. package/dist/components/forms/form-examples.cjs +962 -0
  16. package/dist/components/forms/form-examples.d.ts +46 -0
  17. package/dist/components/forms/form-examples.js +907 -0
  18. package/dist/components/forms/form-plugins.cjs +225 -0
  19. package/dist/components/forms/form-plugins.d.ts +11 -0
  20. package/dist/components/forms/form-plugins.js +176 -0
  21. package/dist/components/forms/form-schema.cjs +56 -0
  22. package/dist/components/forms/form-schema.d.ts +324 -0
  23. package/dist/components/forms/form-schema.js +13 -0
  24. package/dist/components/forms/form-state-viewer.cjs +498 -0
  25. package/dist/components/forms/form-state-viewer.d.ts +15 -0
  26. package/dist/components/forms/form-state-viewer.js +464 -0
  27. package/dist/components/forms/index.cjs +103 -0
  28. package/dist/components/forms/index.d.ts +13 -0
  29. package/dist/components/forms/index.js +9 -0
  30. package/dist/components/forms/metadata-form.cjs +400 -0
  31. package/dist/components/forms/metadata-form.d.ts +16 -0
  32. package/dist/components/forms/metadata-form.js +366 -0
  33. package/dist/components/forms/rules-engine.cjs +343 -0
  34. package/dist/components/forms/rules-engine.d.ts +99 -0
  35. package/dist/components/forms/rules-engine.js +293 -0
  36. package/dist/components/forms/schema-serializer.cjs +250 -0
  37. package/dist/components/forms/schema-serializer.d.ts +27 -0
  38. package/dist/components/forms/schema-serializer.js +213 -0
  39. package/dist/components/forms/schema-viewer.cjs +157 -0
  40. package/dist/components/forms/schema-viewer.d.ts +29 -0
  41. package/dist/components/forms/schema-viewer.js +117 -0
  42. package/dist/components/forms/validation-converter.cjs +154 -0
  43. package/dist/components/forms/validation-converter.d.ts +42 -0
  44. package/dist/components/forms/validation-converter.js +114 -0
  45. package/dist/components/ui/accordion.cjs +82 -0
  46. package/dist/components/ui/accordion.d.ts +7 -0
  47. package/dist/components/ui/accordion.js +39 -0
  48. package/dist/components/ui/alert-dialog.cjs +126 -0
  49. package/dist/components/ui/alert-dialog.d.ts +20 -0
  50. package/dist/components/ui/alert-dialog.js +62 -0
  51. package/dist/components/ui/alert.cjs +77 -0
  52. package/dist/components/ui/alert.d.ts +8 -0
  53. package/dist/components/ui/alert.js +37 -0
  54. package/dist/components/ui/aspect-ratio.cjs +38 -0
  55. package/dist/components/ui/aspect-ratio.d.ts +3 -0
  56. package/dist/components/ui/aspect-ratio.js +4 -0
  57. package/dist/components/ui/avatar.cjs +63 -0
  58. package/dist/components/ui/avatar.d.ts +6 -0
  59. package/dist/components/ui/avatar.js +23 -0
  60. package/dist/components/ui/badge.cjs +63 -0
  61. package/dist/components/ui/badge.d.ts +9 -0
  62. package/dist/components/ui/badge.js +26 -0
  63. package/dist/components/ui/breadcrumb.cjs +118 -0
  64. package/dist/components/ui/breadcrumb.d.ts +19 -0
  65. package/dist/components/ui/breadcrumb.js +66 -0
  66. package/dist/components/ui/button-group.cjs +68 -0
  67. package/dist/components/ui/button-group.d.ts +14 -0
  68. package/dist/components/ui/button-group.js +28 -0
  69. package/dist/components/ui/button.cjs +78 -0
  70. package/dist/components/ui/button.d.ts +11 -0
  71. package/dist/components/ui/button.js +41 -0
  72. package/dist/components/ui/calendar.cjs +144 -0
  73. package/dist/components/ui/calendar.d.ts +8 -0
  74. package/dist/components/ui/calendar.js +107 -0
  75. package/dist/components/ui/card.cjs +89 -0
  76. package/dist/components/ui/card.d.ts +8 -0
  77. package/dist/components/ui/card.js +40 -0
  78. package/dist/components/ui/checkbox.cjs +52 -0
  79. package/dist/components/ui/checkbox.d.ts +6 -0
  80. package/dist/components/ui/checkbox.js +18 -0
  81. package/dist/components/ui/collapsible.cjs +45 -0
  82. package/dist/components/ui/collapsible.d.ts +5 -0
  83. package/dist/components/ui/collapsible.js +5 -0
  84. package/dist/components/ui/combobox.cjs +102 -0
  85. package/dist/components/ui/combobox.d.ts +15 -0
  86. package/dist/components/ui/combobox.js +68 -0
  87. package/dist/components/ui/command.cjs +131 -0
  88. package/dist/components/ui/command.d.ts +80 -0
  89. package/dist/components/ui/command.js +73 -0
  90. package/dist/components/ui/context-menu.cjs +173 -0
  91. package/dist/components/ui/context-menu.d.ts +27 -0
  92. package/dist/components/ui/context-menu.js +97 -0
  93. package/dist/components/ui/data-table.cjs +292 -0
  94. package/dist/components/ui/data-table.d.ts +23 -0
  95. package/dist/components/ui/data-table.js +252 -0
  96. package/dist/components/ui/date-picker.cjs +118 -0
  97. package/dist/components/ui/date-picker.d.ts +21 -0
  98. package/dist/components/ui/date-picker.js +81 -0
  99. package/dist/components/ui/datetime-picker.cjs +154 -0
  100. package/dist/components/ui/datetime-picker.d.ts +9 -0
  101. package/dist/components/ui/datetime-picker.js +120 -0
  102. package/dist/components/ui/dialog.cjs +159 -0
  103. package/dist/components/ui/dialog.d.ts +15 -0
  104. package/dist/components/ui/dialog.js +98 -0
  105. package/dist/components/ui/drawer.cjs +116 -0
  106. package/dist/components/ui/drawer.d.ts +18 -0
  107. package/dist/components/ui/drawer.js +55 -0
  108. package/dist/components/ui/dropdown-menu.cjs +174 -0
  109. package/dist/components/ui/dropdown-menu.d.ts +27 -0
  110. package/dist/components/ui/dropdown-menu.js +98 -0
  111. package/dist/components/ui/editable-cell.cjs +256 -0
  112. package/dist/components/ui/editable-cell.d.ts +24 -0
  113. package/dist/components/ui/editable-cell.js +219 -0
  114. package/dist/components/ui/empty-state.cjs +73 -0
  115. package/dist/components/ui/empty-state.d.ts +16 -0
  116. package/dist/components/ui/empty-state.js +39 -0
  117. package/dist/components/ui/file-upload.cjs +236 -0
  118. package/dist/components/ui/file-upload.d.ts +10 -0
  119. package/dist/components/ui/file-upload.js +202 -0
  120. package/dist/components/ui/hover-card.cjs +55 -0
  121. package/dist/components/ui/hover-card.d.ts +6 -0
  122. package/dist/components/ui/hover-card.js +15 -0
  123. package/dist/components/ui/index.cjs +546 -0
  124. package/dist/components/ui/index.d.ts +55 -0
  125. package/dist/components/ui/index.js +55 -0
  126. package/dist/components/ui/input.cjs +45 -0
  127. package/dist/components/ui/input.d.ts +5 -0
  128. package/dist/components/ui/input.js +11 -0
  129. package/dist/components/ui/label.cjs +47 -0
  130. package/dist/components/ui/label.d.ts +7 -0
  131. package/dist/components/ui/label.js +13 -0
  132. package/dist/components/ui/layout/column.cjs +84 -0
  133. package/dist/components/ui/layout/column.d.ts +21 -0
  134. package/dist/components/ui/layout/column.js +50 -0
  135. package/dist/components/ui/layout/grid.cjs +101 -0
  136. package/dist/components/ui/layout/grid.d.ts +22 -0
  137. package/dist/components/ui/layout/grid.js +67 -0
  138. package/dist/components/ui/layout/index.cjs +44 -0
  139. package/dist/components/ui/layout/index.d.ts +7 -0
  140. package/dist/components/ui/layout/index.js +4 -0
  141. package/dist/components/ui/layout/row.cjs +84 -0
  142. package/dist/components/ui/layout/row.d.ts +21 -0
  143. package/dist/components/ui/layout/row.js +50 -0
  144. package/dist/components/ui/layout/types.cjs +18 -0
  145. package/dist/components/ui/layout/types.d.ts +149 -0
  146. package/dist/components/ui/layout/types.js +0 -0
  147. package/dist/components/ui/layout/utils.cjs +324 -0
  148. package/dist/components/ui/layout/utils.d.ts +76 -0
  149. package/dist/components/ui/layout/utils.js +239 -0
  150. package/dist/components/ui/menubar.cjs +210 -0
  151. package/dist/components/ui/menubar.d.ts +28 -0
  152. package/dist/components/ui/menubar.js +131 -0
  153. package/dist/components/ui/multi-select.cjs +187 -0
  154. package/dist/components/ui/multi-select.d.ts +18 -0
  155. package/dist/components/ui/multi-select.js +153 -0
  156. package/dist/components/ui/navigation-menu.cjs +122 -0
  157. package/dist/components/ui/navigation-menu.d.ts +12 -0
  158. package/dist/components/ui/navigation-menu.js +64 -0
  159. package/dist/components/ui/pagination.cjs +131 -0
  160. package/dist/components/ui/pagination.d.ts +28 -0
  161. package/dist/components/ui/pagination.js +79 -0
  162. package/dist/components/ui/popover.cjs +61 -0
  163. package/dist/components/ui/popover.d.ts +7 -0
  164. package/dist/components/ui/popover.js +18 -0
  165. package/dist/components/ui/progress.cjs +51 -0
  166. package/dist/components/ui/progress.d.ts +4 -0
  167. package/dist/components/ui/progress.js +17 -0
  168. package/dist/components/ui/radio-group.cjs +61 -0
  169. package/dist/components/ui/radio-group.d.ts +5 -0
  170. package/dist/components/ui/radio-group.js +24 -0
  171. package/dist/components/ui/resizable.cjs +60 -0
  172. package/dist/components/ui/resizable.d.ts +23 -0
  173. package/dist/components/ui/resizable.js +20 -0
  174. package/dist/components/ui/scroll-area.cjs +67 -0
  175. package/dist/components/ui/scroll-area.d.ts +5 -0
  176. package/dist/components/ui/scroll-area.js +30 -0
  177. package/dist/components/ui/search.cjs +153 -0
  178. package/dist/components/ui/search.d.ts +19 -0
  179. package/dist/components/ui/search.js +116 -0
  180. package/dist/components/ui/select.cjs +151 -0
  181. package/dist/components/ui/select.d.ts +13 -0
  182. package/dist/components/ui/select.js +90 -0
  183. package/dist/components/ui/separator.cjs +47 -0
  184. package/dist/components/ui/separator.d.ts +4 -0
  185. package/dist/components/ui/separator.js +13 -0
  186. package/dist/components/ui/sheet.cjs +142 -0
  187. package/dist/components/ui/sheet.d.ts +25 -0
  188. package/dist/components/ui/sheet.js +81 -0
  189. package/dist/components/ui/skeleton.cjs +43 -0
  190. package/dist/components/ui/skeleton.d.ts +2 -0
  191. package/dist/components/ui/skeleton.js +9 -0
  192. package/dist/components/ui/slider.cjs +63 -0
  193. package/dist/components/ui/slider.d.ts +4 -0
  194. package/dist/components/ui/slider.js +29 -0
  195. package/dist/components/ui/sonner.cjs +76 -0
  196. package/dist/components/ui/sonner.d.ts +4 -0
  197. package/dist/components/ui/sonner.js +39 -0
  198. package/dist/components/ui/spinner.cjs +78 -0
  199. package/dist/components/ui/spinner.d.ts +11 -0
  200. package/dist/components/ui/spinner.js +41 -0
  201. package/dist/components/ui/stats-card.cjs +102 -0
  202. package/dist/components/ui/stats-card.d.ts +15 -0
  203. package/dist/components/ui/stats-card.js +68 -0
  204. package/dist/components/ui/stepper.cjs +99 -0
  205. package/dist/components/ui/stepper.d.ts +14 -0
  206. package/dist/components/ui/stepper.js +65 -0
  207. package/dist/components/ui/switch.cjs +48 -0
  208. package/dist/components/ui/switch.d.ts +4 -0
  209. package/dist/components/ui/switch.js +14 -0
  210. package/dist/components/ui/table.cjs +110 -0
  211. package/dist/components/ui/table.d.ts +10 -0
  212. package/dist/components/ui/table.js +55 -0
  213. package/dist/components/ui/tabs.cjs +67 -0
  214. package/dist/components/ui/tabs.d.ts +7 -0
  215. package/dist/components/ui/tabs.js +24 -0
  216. package/dist/components/ui/textarea.cjs +44 -0
  217. package/dist/components/ui/textarea.d.ts +4 -0
  218. package/dist/components/ui/textarea.js +10 -0
  219. package/dist/components/ui/toggle-group.cjs +73 -0
  220. package/dist/components/ui/toggle-group.d.ts +12 -0
  221. package/dist/components/ui/toggle-group.js +36 -0
  222. package/dist/components/ui/toggle.cjs +71 -0
  223. package/dist/components/ui/toggle.d.ts +12 -0
  224. package/dist/components/ui/toggle.js +34 -0
  225. package/dist/components/ui/tooltip.cjs +58 -0
  226. package/dist/components/ui/tooltip.d.ts +7 -0
  227. package/dist/components/ui/tooltip.js +15 -0
  228. package/dist/examples/admin-layout-example.d.ts +92 -0
  229. package/dist/examples/app-shell-example.d.ts +52 -0
  230. package/dist/examples/dashboard-example.d.ts +11 -0
  231. package/dist/examples/data-management-example.d.ts +1 -0
  232. package/dist/examples/flow-editor-layout-example.d.ts +22 -0
  233. package/dist/examples/flow-start-example.d.ts +30 -0
  234. package/dist/examples/form-builder-example.d.ts +1 -0
  235. package/dist/examples/new-project-example.d.ts +30 -0
  236. package/dist/examples/settings-example.d.ts +1 -0
  237. package/dist/examples/vscode-example.d.ts +80 -0
  238. package/dist/index.cjs +830 -0
  239. package/dist/index.d.ts +86 -0
  240. package/dist/index.js +67 -0
  241. package/dist/lib/index.cjs +42 -0
  242. package/dist/lib/index.d.ts +1 -0
  243. package/dist/lib/index.js +2 -0
  244. package/dist/lib/utils.cjs +70 -0
  245. package/dist/lib/utils.d.ts +14 -0
  246. package/dist/lib/utils.js +30 -0
  247. package/dist/postcss.config.export.cjs +43 -0
  248. package/dist/postcss.config.export.js +9 -0
  249. package/dist/styles.css +6868 -0
  250. package/dist/tailwind.css +239 -0
  251. package/dist/tailwind.preset.cjs +77 -0
  252. package/dist/tailwind.preset.js +43 -0
  253. package/package.json +157 -0
  254. package/postcss.config.export.js +9 -0
@@ -0,0 +1,561 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useMemo, useRef, useState } from "react";
3
+ import { Controller, useFormContext } from "react-hook-form";
4
+ import { hasOptions, isCustomField } from "./form-schema.js";
5
+ import { RulesEngine } from "./rules-engine.js";
6
+ import { DataFetcher } from "./data-fetcher.js";
7
+ import { Input } from "../ui/input.js";
8
+ import { Textarea } from "../ui/textarea.js";
9
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../ui/select.js";
10
+ import { MultiSelect } from "../ui/multi-select.js";
11
+ import { Checkbox } from "../ui/checkbox.js";
12
+ import { Switch } from "../ui/switch.js";
13
+ import { RadioGroup, RadioGroupItem } from "../ui/radio-group.js";
14
+ import { Slider } from "../ui/slider.js";
15
+ import { Label } from "../ui/label.js";
16
+ import { DatePicker } from "../ui/date-picker.js";
17
+ import { DateTimePicker } from "../ui/datetime-picker.js";
18
+ import { FileUpload } from "../ui/file-upload.js";
19
+ import { cn, deepEqual } from "../../lib/index.js";
20
+ function FormFieldRenderer({ field, context, customComponents, disabled: formDisabled = false }) {
21
+ const { control, watch, getValues } = useFormContext();
22
+ const contextRef = useRef(context);
23
+ contextRef.current = context;
24
+ const getInitialVisibility = ()=>{
25
+ if (!field.rules || 0 === field.rules.length) return true;
26
+ const hasShowRule = field.rules.some((rule)=>rule.effects?.visible === true);
27
+ const hasHideRule = field.rules.some((rule)=>rule.effects?.visible === false);
28
+ if (!hasShowRule && !hasHideRule) return true;
29
+ const allValues = getValues();
30
+ const ruleResult = RulesEngine.applyRules(field.rules, allValues, context);
31
+ if (void 0 !== ruleResult.visible) return ruleResult.visible;
32
+ return !hasShowRule;
33
+ };
34
+ const getInitialRequired = ()=>{
35
+ const staticRequired = field.validation?.required ?? false;
36
+ if (!field.rules || 0 === field.rules.length) return staticRequired;
37
+ const allValues = getValues();
38
+ const ruleResult = RulesEngine.applyRules(field.rules, allValues, context);
39
+ return ruleResult.required ?? staticRequired;
40
+ };
41
+ const [fieldState, setFieldState] = useState({
42
+ visible: getInitialVisibility(),
43
+ disabled: false,
44
+ required: getInitialRequired(),
45
+ options: hasOptions(field) ? field.options || [] : []
46
+ });
47
+ const dependentFields = useMemo(()=>{
48
+ if (!field.rules || 0 === field.rules.length) return [];
49
+ const fields = new Set();
50
+ field.rules.forEach((rule)=>{
51
+ rule.conditions?.forEach((condition)=>{
52
+ if ('when' in condition && condition.when) fields.add(condition.when);
53
+ });
54
+ });
55
+ return Array.from(fields);
56
+ }, [
57
+ field.rules
58
+ ]);
59
+ const dataSourceDependentFields = useMemo(()=>{
60
+ if (!field.dataSource) return [];
61
+ const fields = new Set();
62
+ if ('params' in field.dataSource && field.dataSource.params) Object.values(field.dataSource.params).forEach((value)=>{
63
+ if ('string' == typeof value && value.startsWith('$')) fields.add(value.slice(1));
64
+ });
65
+ if ('computed' === field.dataSource.type && 'dependency' in field.dataSource) field.dataSource.dependency.forEach((dep)=>fields.add(dep));
66
+ return Array.from(fields);
67
+ }, [
68
+ field.dataSource
69
+ ]);
70
+ const watchedDataSourceValues = watch(dataSourceDependentFields);
71
+ const watchedRuleDependentValues = watch(dependentFields);
72
+ useEffect(()=>{
73
+ if (!field.rules || 0 === field.rules.length) return;
74
+ const allValues = getValues();
75
+ const ruleResult = RulesEngine.applyRules(field.rules, allValues, contextRef.current);
76
+ const hasShowRule = field.rules.some((rule)=>rule.effects?.visible === true);
77
+ const hasHideRule = field.rules.some((rule)=>rule.effects?.visible === false);
78
+ const hasRequiredRule = field.rules.some((rule)=>rule.effects?.required !== void 0);
79
+ const hasDisabledRule = field.rules.some((rule)=>rule.effects?.disabled !== void 0);
80
+ const newState = {};
81
+ if (void 0 !== ruleResult.visible) newState.visible = ruleResult.visible;
82
+ else if (hasShowRule || hasHideRule) newState.visible = !hasShowRule;
83
+ if (void 0 !== ruleResult.required) newState.required = ruleResult.required;
84
+ else if (hasRequiredRule) {
85
+ const hasUnconditionalRequired = field.rules.some((rule)=>rule.effects?.required === true && 0 === rule.conditions.length);
86
+ newState.required = hasUnconditionalRequired || (field.validation?.required ?? false);
87
+ }
88
+ if (void 0 !== ruleResult.disabled) newState.disabled = ruleResult.disabled;
89
+ else if (hasDisabledRule) newState.disabled = false;
90
+ setFieldState((prev)=>{
91
+ const nextState = {
92
+ ...prev,
93
+ ...newState
94
+ };
95
+ if (deepEqual(prev, nextState)) return prev;
96
+ return nextState;
97
+ });
98
+ }, [
99
+ field.rules,
100
+ field.validation?.required,
101
+ getValues,
102
+ watchedRuleDependentValues
103
+ ]);
104
+ useEffect(()=>{
105
+ if (field.dataSource) return;
106
+ if (!hasOptions(field)) return;
107
+ const inlineOptions = field.options || [];
108
+ setFieldState((prev)=>{
109
+ if (deepEqual(prev.options, inlineOptions)) return prev;
110
+ return {
111
+ ...prev,
112
+ options: inlineOptions
113
+ };
114
+ });
115
+ }, [
116
+ field
117
+ ]);
118
+ useEffect(()=>{
119
+ if (!field.dataSource) return;
120
+ const fetchOptions = async ()=>{
121
+ try {
122
+ const allValues = getValues();
123
+ const data = await DataFetcher.fetch(field.dataSource, allValues);
124
+ setFieldState((prev)=>{
125
+ if (deepEqual(prev.options, data)) return prev;
126
+ return {
127
+ ...prev,
128
+ options: data
129
+ };
130
+ });
131
+ } catch (error) {
132
+ console.error(`Failed to fetch options for ${field.name}:`, error);
133
+ }
134
+ };
135
+ fetchOptions();
136
+ }, [
137
+ field.dataSource,
138
+ field.name,
139
+ getValues,
140
+ watchedDataSourceValues
141
+ ]);
142
+ if (!fieldState.visible) return null;
143
+ const gridSpan = field.grid?.span || 1;
144
+ const gridStyle = {
145
+ gridColumn: `span ${gridSpan}`
146
+ };
147
+ if (isCustomField(field) && customComponents[field.component]) {
148
+ const CustomComponent = customComponents[field.component];
149
+ return /*#__PURE__*/ jsx("div", {
150
+ style: gridStyle,
151
+ children: /*#__PURE__*/ jsx(Controller, {
152
+ name: field.name,
153
+ control: control,
154
+ defaultValue: field.defaultValue,
155
+ render: ({ field: formField, fieldState: { error } })=>/*#__PURE__*/ jsx(CustomComponent, {
156
+ ...formField,
157
+ ...field.componentProps,
158
+ field: field,
159
+ disabled: formDisabled || fieldState.disabled,
160
+ required: fieldState.required,
161
+ error: error?.message
162
+ })
163
+ })
164
+ });
165
+ }
166
+ return /*#__PURE__*/ jsx("div", {
167
+ style: gridStyle,
168
+ children: /*#__PURE__*/ jsx(Controller, {
169
+ name: field.name,
170
+ control: control,
171
+ defaultValue: field.defaultValue,
172
+ render: ({ field: formField, fieldState: { error } })=>/*#__PURE__*/ jsx(FieldByType, {
173
+ field: field,
174
+ formField: formField,
175
+ error: error?.message,
176
+ disabled: formDisabled || fieldState.disabled,
177
+ required: fieldState.required,
178
+ options: fieldState.options
179
+ })
180
+ })
181
+ });
182
+ }
183
+ function FieldByType({ field, formField, error, disabled, required, options }) {
184
+ switch(field.type){
185
+ case 'text':
186
+ case 'email':
187
+ return /*#__PURE__*/ jsxs(FormField, {
188
+ children: [
189
+ /*#__PURE__*/ jsx(FormLabel, {
190
+ required: required,
191
+ children: field.label
192
+ }),
193
+ /*#__PURE__*/ jsx(Input, {
194
+ value: formField.value,
195
+ onChange: (e)=>formField.onChange(e.target.value),
196
+ onBlur: formField.onBlur,
197
+ name: formField.name,
198
+ ref: formField.ref,
199
+ type: field.type,
200
+ placeholder: field.placeholder,
201
+ disabled: disabled,
202
+ "aria-label": field.ariaLabel
203
+ }),
204
+ /*#__PURE__*/ jsx(FormDescription, {
205
+ children: field.description
206
+ }),
207
+ /*#__PURE__*/ jsx(FormError, {
208
+ children: error
209
+ })
210
+ ]
211
+ });
212
+ case 'number':
213
+ return /*#__PURE__*/ jsxs(FormField, {
214
+ children: [
215
+ /*#__PURE__*/ jsx(FormLabel, {
216
+ required: required,
217
+ children: field.label
218
+ }),
219
+ /*#__PURE__*/ jsx(Input, {
220
+ value: formField.value,
221
+ onBlur: formField.onBlur,
222
+ name: formField.name,
223
+ ref: formField.ref,
224
+ type: "number",
225
+ min: field.min,
226
+ max: field.max,
227
+ step: field.step,
228
+ placeholder: field.placeholder,
229
+ disabled: disabled,
230
+ onChange: (e)=>formField.onChange(parseFloat(e.target.value))
231
+ }),
232
+ /*#__PURE__*/ jsx(FormDescription, {
233
+ children: field.description
234
+ }),
235
+ /*#__PURE__*/ jsx(FormError, {
236
+ children: error
237
+ })
238
+ ]
239
+ });
240
+ case 'textarea':
241
+ return /*#__PURE__*/ jsxs(FormField, {
242
+ children: [
243
+ /*#__PURE__*/ jsx(FormLabel, {
244
+ required: required,
245
+ children: field.label
246
+ }),
247
+ /*#__PURE__*/ jsx(Textarea, {
248
+ value: formField.value,
249
+ onChange: (e)=>formField.onChange(e.target.value),
250
+ onBlur: formField.onBlur,
251
+ name: formField.name,
252
+ ref: formField.ref,
253
+ placeholder: field.placeholder,
254
+ disabled: disabled,
255
+ rows: field.rows || 4
256
+ }),
257
+ /*#__PURE__*/ jsx(FormDescription, {
258
+ children: field.description
259
+ }),
260
+ /*#__PURE__*/ jsx(FormError, {
261
+ children: error
262
+ })
263
+ ]
264
+ });
265
+ case 'select':
266
+ return /*#__PURE__*/ jsxs(FormField, {
267
+ children: [
268
+ /*#__PURE__*/ jsx(FormLabel, {
269
+ required: required,
270
+ children: field.label
271
+ }),
272
+ /*#__PURE__*/ jsxs(Select, {
273
+ value: formField.value,
274
+ onValueChange: formField.onChange,
275
+ disabled: disabled,
276
+ children: [
277
+ /*#__PURE__*/ jsx(SelectTrigger, {
278
+ children: /*#__PURE__*/ jsx(SelectValue, {
279
+ placeholder: field.placeholder || 'Select...'
280
+ })
281
+ }),
282
+ /*#__PURE__*/ jsx(SelectContent, {
283
+ children: options.map((option)=>/*#__PURE__*/ jsx(SelectItem, {
284
+ value: String(option.value),
285
+ disabled: 'disabled' in option ? Boolean(option.disabled) : false,
286
+ children: option.label
287
+ }, String(option.value)))
288
+ })
289
+ ]
290
+ }),
291
+ /*#__PURE__*/ jsx(FormDescription, {
292
+ children: field.description
293
+ }),
294
+ /*#__PURE__*/ jsx(FormError, {
295
+ children: error
296
+ })
297
+ ]
298
+ });
299
+ case 'multiselect':
300
+ return /*#__PURE__*/ jsxs(FormField, {
301
+ children: [
302
+ /*#__PURE__*/ jsx(FormLabel, {
303
+ required: required,
304
+ children: field.label
305
+ }),
306
+ /*#__PURE__*/ jsx(MultiSelect, {
307
+ selected: formField.value || [],
308
+ onChange: formField.onChange,
309
+ options: options.map((opt)=>({
310
+ label: opt.label,
311
+ value: String(opt.value)
312
+ })),
313
+ disabled: disabled,
314
+ placeholder: field.placeholder || 'Select items...',
315
+ emptyMessage: "No items found.",
316
+ searchPlaceholder: "Search...",
317
+ maxSelected: field.maxSelected
318
+ }),
319
+ /*#__PURE__*/ jsx(FormDescription, {
320
+ children: field.description
321
+ }),
322
+ /*#__PURE__*/ jsx(FormError, {
323
+ children: error
324
+ })
325
+ ]
326
+ });
327
+ case 'checkbox':
328
+ return /*#__PURE__*/ jsxs(FormField, {
329
+ children: [
330
+ /*#__PURE__*/ jsxs("div", {
331
+ className: "flex items-start space-x-2",
332
+ children: [
333
+ /*#__PURE__*/ jsx(Checkbox, {
334
+ checked: true === formField.value,
335
+ onCheckedChange: (checked)=>formField.onChange(true === checked),
336
+ disabled: disabled,
337
+ id: field.name
338
+ }),
339
+ /*#__PURE__*/ jsxs("div", {
340
+ className: "space-y-1 leading-none",
341
+ children: [
342
+ /*#__PURE__*/ jsx(FormLabel, {
343
+ htmlFor: field.name,
344
+ className: "font-normal",
345
+ children: field.label
346
+ }),
347
+ /*#__PURE__*/ jsx(FormDescription, {
348
+ children: field.description
349
+ })
350
+ ]
351
+ })
352
+ ]
353
+ }),
354
+ /*#__PURE__*/ jsx(FormError, {
355
+ children: error
356
+ })
357
+ ]
358
+ });
359
+ case 'switch':
360
+ return /*#__PURE__*/ jsxs(FormField, {
361
+ children: [
362
+ /*#__PURE__*/ jsxs("div", {
363
+ className: "flex items-center justify-between",
364
+ children: [
365
+ /*#__PURE__*/ jsxs("div", {
366
+ className: "space-y-0.5",
367
+ children: [
368
+ /*#__PURE__*/ jsx(FormLabel, {
369
+ children: field.label
370
+ }),
371
+ /*#__PURE__*/ jsx(FormDescription, {
372
+ children: field.description
373
+ })
374
+ ]
375
+ }),
376
+ /*#__PURE__*/ jsx(Switch, {
377
+ checked: true === formField.value,
378
+ onCheckedChange: (checked)=>formField.onChange(true === checked),
379
+ disabled: disabled
380
+ })
381
+ ]
382
+ }),
383
+ /*#__PURE__*/ jsx(FormError, {
384
+ children: error
385
+ })
386
+ ]
387
+ });
388
+ case 'radio':
389
+ return /*#__PURE__*/ jsxs(FormField, {
390
+ children: [
391
+ /*#__PURE__*/ jsx(FormLabel, {
392
+ required: required,
393
+ children: field.label
394
+ }),
395
+ /*#__PURE__*/ jsx(RadioGroup, {
396
+ value: formField.value,
397
+ onValueChange: formField.onChange,
398
+ disabled: disabled,
399
+ children: options.map((option)=>/*#__PURE__*/ jsxs("div", {
400
+ className: "flex items-center space-x-2",
401
+ children: [
402
+ /*#__PURE__*/ jsx(RadioGroupItem, {
403
+ value: String(option.value),
404
+ id: `${field.name}-${option.value}`,
405
+ disabled: 'disabled' in option ? Boolean(option.disabled) : false
406
+ }),
407
+ /*#__PURE__*/ jsx(Label, {
408
+ htmlFor: `${field.name}-${option.value}`,
409
+ children: option.label
410
+ })
411
+ ]
412
+ }, String(option.value)))
413
+ }),
414
+ /*#__PURE__*/ jsx(FormDescription, {
415
+ children: field.description
416
+ }),
417
+ /*#__PURE__*/ jsx(FormError, {
418
+ children: error
419
+ })
420
+ ]
421
+ });
422
+ case 'slider':
423
+ return /*#__PURE__*/ jsxs(FormField, {
424
+ children: [
425
+ /*#__PURE__*/ jsxs("div", {
426
+ className: "flex justify-between",
427
+ children: [
428
+ /*#__PURE__*/ jsx(FormLabel, {
429
+ required: required,
430
+ children: field.label
431
+ }),
432
+ /*#__PURE__*/ jsx("span", {
433
+ className: "text-sm text-muted-foreground",
434
+ children: formField.value
435
+ })
436
+ ]
437
+ }),
438
+ /*#__PURE__*/ jsx(Slider, {
439
+ value: [
440
+ formField.value
441
+ ],
442
+ onValueChange: (values)=>formField.onChange(values[0]),
443
+ min: field.min || 0,
444
+ max: field.max || 100,
445
+ step: field.step || 1,
446
+ disabled: disabled
447
+ }),
448
+ /*#__PURE__*/ jsx(FormDescription, {
449
+ children: field.description
450
+ }),
451
+ /*#__PURE__*/ jsx(FormError, {
452
+ children: error
453
+ })
454
+ ]
455
+ });
456
+ case 'date':
457
+ return /*#__PURE__*/ jsxs(FormField, {
458
+ children: [
459
+ /*#__PURE__*/ jsx(FormLabel, {
460
+ required: required,
461
+ children: field.label
462
+ }),
463
+ /*#__PURE__*/ jsx(DatePicker, {
464
+ value: formField.value,
465
+ onValueChange: formField.onChange,
466
+ disabled: disabled,
467
+ placeholder: field.placeholder
468
+ }),
469
+ /*#__PURE__*/ jsx(FormDescription, {
470
+ children: field.description
471
+ }),
472
+ /*#__PURE__*/ jsx(FormError, {
473
+ children: error
474
+ })
475
+ ]
476
+ });
477
+ case 'datetime':
478
+ return /*#__PURE__*/ jsxs(FormField, {
479
+ children: [
480
+ /*#__PURE__*/ jsx(FormLabel, {
481
+ required: required,
482
+ children: field.label
483
+ }),
484
+ /*#__PURE__*/ jsx(DateTimePicker, {
485
+ value: formField.value,
486
+ onValueChange: formField.onChange,
487
+ disabled: disabled,
488
+ placeholder: field.placeholder,
489
+ use12Hour: field.use12Hour
490
+ }),
491
+ /*#__PURE__*/ jsx(FormDescription, {
492
+ children: field.description
493
+ }),
494
+ /*#__PURE__*/ jsx(FormError, {
495
+ children: error
496
+ })
497
+ ]
498
+ });
499
+ case 'file':
500
+ return /*#__PURE__*/ jsxs(FormField, {
501
+ children: [
502
+ /*#__PURE__*/ jsx(FormLabel, {
503
+ required: required,
504
+ children: field.label
505
+ }),
506
+ /*#__PURE__*/ jsx(FileUpload, {
507
+ accept: field.accept,
508
+ multiple: field.multiple,
509
+ disabled: disabled,
510
+ maxSize: field.maxSize,
511
+ showPreview: field.showPreview,
512
+ onFilesChange: (files)=>{
513
+ formField.onChange(field.multiple ? files : files[0]);
514
+ }
515
+ }),
516
+ /*#__PURE__*/ jsx(FormDescription, {
517
+ children: field.description
518
+ }),
519
+ /*#__PURE__*/ jsx(FormError, {
520
+ children: error
521
+ })
522
+ ]
523
+ });
524
+ default:
525
+ return null;
526
+ }
527
+ }
528
+ function FormField({ children, className = '' }) {
529
+ return /*#__PURE__*/ jsx("div", {
530
+ className: cn('space-y-2', className),
531
+ children: children
532
+ });
533
+ }
534
+ function FormLabel({ children, required, htmlFor, className = '' }) {
535
+ return /*#__PURE__*/ jsxs(Label, {
536
+ htmlFor: htmlFor,
537
+ className: className,
538
+ children: [
539
+ children,
540
+ required && /*#__PURE__*/ jsx("span", {
541
+ className: "text-destructive ml-1",
542
+ children: "*"
543
+ })
544
+ ]
545
+ });
546
+ }
547
+ function FormDescription({ children }) {
548
+ if (!children) return null;
549
+ return /*#__PURE__*/ jsx("p", {
550
+ className: "text-sm text-muted-foreground",
551
+ children: children
552
+ });
553
+ }
554
+ function FormError({ children }) {
555
+ if (!children) return null;
556
+ return /*#__PURE__*/ jsx("p", {
557
+ className: "text-sm text-destructive",
558
+ children: children
559
+ });
560
+ }
561
+ export { FormFieldRenderer };