@verbb/plugin-kit-react 1.0.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 (593) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/LICENSE.md +21 -0
  3. package/README.md +31 -0
  4. package/dist/_virtual/_rolldown/runtime.js +34 -0
  5. package/dist/components/Button.d.ts +26 -0
  6. package/dist/components/Button.d.ts.map +1 -0
  7. package/dist/components/Button.js +148 -0
  8. package/dist/components/Button.js.map +1 -0
  9. package/dist/components/ButtonGroup.d.ts +11 -0
  10. package/dist/components/ButtonGroup.d.ts.map +1 -0
  11. package/dist/components/ButtonGroup.js +59 -0
  12. package/dist/components/ButtonGroup.js.map +1 -0
  13. package/dist/components/Calendar.d.ts +11 -0
  14. package/dist/components/Calendar.d.ts.map +1 -0
  15. package/dist/components/Calendar.js +133 -0
  16. package/dist/components/Calendar.js.map +1 -0
  17. package/dist/components/Checkbox.d.ts +5 -0
  18. package/dist/components/Checkbox.d.ts.map +1 -0
  19. package/dist/components/Checkbox.js +41 -0
  20. package/dist/components/Checkbox.js.map +1 -0
  21. package/dist/components/CheckboxInput.d.ts +14 -0
  22. package/dist/components/CheckboxInput.d.ts.map +1 -0
  23. package/dist/components/CheckboxInput.js +31 -0
  24. package/dist/components/CheckboxInput.js.map +1 -0
  25. package/dist/components/CheckboxSelect.d.ts +19 -0
  26. package/dist/components/CheckboxSelect.d.ts.map +1 -0
  27. package/dist/components/CheckboxSelect.js +63 -0
  28. package/dist/components/CheckboxSelect.js.map +1 -0
  29. package/dist/components/ColorInput.d.ts +14 -0
  30. package/dist/components/ColorInput.d.ts.map +1 -0
  31. package/dist/components/ColorInput.js +148 -0
  32. package/dist/components/ColorInput.js.map +1 -0
  33. package/dist/components/Combobox.d.ts +40 -0
  34. package/dist/components/Combobox.d.ts.map +1 -0
  35. package/dist/components/Combobox.js +393 -0
  36. package/dist/components/Combobox.js.map +1 -0
  37. package/dist/components/ComboboxInput.d.ts +28 -0
  38. package/dist/components/ComboboxInput.d.ts.map +1 -0
  39. package/dist/components/ComboboxInput.js +165 -0
  40. package/dist/components/ComboboxInput.js.map +1 -0
  41. package/dist/components/Command.d.ts +26 -0
  42. package/dist/components/Command.d.ts.map +1 -0
  43. package/dist/components/Command.js +94 -0
  44. package/dist/components/Command.js.map +1 -0
  45. package/dist/components/CopyButton.d.ts +9 -0
  46. package/dist/components/CopyButton.d.ts.map +1 -0
  47. package/dist/components/CopyButton.js +40 -0
  48. package/dist/components/CopyButton.js.map +1 -0
  49. package/dist/components/DatePicker.d.ts +9 -0
  50. package/dist/components/DatePicker.d.ts.map +1 -0
  51. package/dist/components/DatePicker.js +46 -0
  52. package/dist/components/DatePicker.js.map +1 -0
  53. package/dist/components/Dialog.d.ts +21 -0
  54. package/dist/components/Dialog.d.ts.map +1 -0
  55. package/dist/components/Dialog.js +179 -0
  56. package/dist/components/Dialog.js.map +1 -0
  57. package/dist/components/DropdownMenu.d.ts +47 -0
  58. package/dist/components/DropdownMenu.d.ts.map +1 -0
  59. package/dist/components/DropdownMenu.js +240 -0
  60. package/dist/components/DropdownMenu.js.map +1 -0
  61. package/dist/components/EditableTable.d.ts +28 -0
  62. package/dist/components/EditableTable.d.ts.map +1 -0
  63. package/dist/components/EditableTable.js +145 -0
  64. package/dist/components/EditableTable.js.map +1 -0
  65. package/dist/components/FadeIn.d.ts +12 -0
  66. package/dist/components/FadeIn.d.ts.map +1 -0
  67. package/dist/components/FadeIn.js +24 -0
  68. package/dist/components/FadeIn.js.map +1 -0
  69. package/dist/components/Input.d.ts +9 -0
  70. package/dist/components/Input.d.ts.map +1 -0
  71. package/dist/components/Input.js +43 -0
  72. package/dist/components/Input.js.map +1 -0
  73. package/dist/components/InputGroup.d.ts +20 -0
  74. package/dist/components/InputGroup.d.ts.map +1 -0
  75. package/dist/components/InputGroup.js +111 -0
  76. package/dist/components/InputGroup.js.map +1 -0
  77. package/dist/components/Label.d.ts +4 -0
  78. package/dist/components/Label.d.ts.map +1 -0
  79. package/dist/components/Label.js +15 -0
  80. package/dist/components/Label.js.map +1 -0
  81. package/dist/components/Lightswitch.d.ts +9 -0
  82. package/dist/components/Lightswitch.d.ts.map +1 -0
  83. package/dist/components/Lightswitch.js +56 -0
  84. package/dist/components/Lightswitch.js.map +1 -0
  85. package/dist/components/Markdown.d.ts +11 -0
  86. package/dist/components/Markdown.d.ts.map +1 -0
  87. package/dist/components/Markdown.js +46 -0
  88. package/dist/components/Markdown.js.map +1 -0
  89. package/dist/components/MenuButton.d.ts +40 -0
  90. package/dist/components/MenuButton.d.ts.map +1 -0
  91. package/dist/components/MenuButton.js +122 -0
  92. package/dist/components/MenuButton.js.map +1 -0
  93. package/dist/components/ModalTabs.d.ts +8 -0
  94. package/dist/components/ModalTabs.d.ts.map +1 -0
  95. package/dist/components/ModalTabs.js +37 -0
  96. package/dist/components/ModalTabs.js.map +1 -0
  97. package/dist/components/PaneTabs.d.ts +8 -0
  98. package/dist/components/PaneTabs.d.ts.map +1 -0
  99. package/dist/components/PaneTabs.js +37 -0
  100. package/dist/components/PaneTabs.js.map +1 -0
  101. package/dist/components/Popover.d.ts +12 -0
  102. package/dist/components/Popover.d.ts.map +1 -0
  103. package/dist/components/Popover.js +70 -0
  104. package/dist/components/Popover.js.map +1 -0
  105. package/dist/components/RadioGroup.d.ts +6 -0
  106. package/dist/components/RadioGroup.d.ts.map +1 -0
  107. package/dist/components/RadioGroup.js +34 -0
  108. package/dist/components/RadioGroup.js.map +1 -0
  109. package/dist/components/ScrollArea.d.ts +16 -0
  110. package/dist/components/ScrollArea.d.ts.map +1 -0
  111. package/dist/components/ScrollArea.js +47 -0
  112. package/dist/components/ScrollArea.js.map +1 -0
  113. package/dist/components/Select.d.ts +23 -0
  114. package/dist/components/Select.d.ts.map +1 -0
  115. package/dist/components/Select.js +205 -0
  116. package/dist/components/Select.js.map +1 -0
  117. package/dist/components/SelectInput.d.ts +33 -0
  118. package/dist/components/SelectInput.d.ts.map +1 -0
  119. package/dist/components/SelectInput.js +85 -0
  120. package/dist/components/SelectInput.js.map +1 -0
  121. package/dist/components/Separator.d.ts +4 -0
  122. package/dist/components/Separator.d.ts.map +1 -0
  123. package/dist/components/Separator.js +17 -0
  124. package/dist/components/Separator.js.map +1 -0
  125. package/dist/components/SlideUp.d.ts +12 -0
  126. package/dist/components/SlideUp.d.ts.map +1 -0
  127. package/dist/components/SlideUp.js +36 -0
  128. package/dist/components/SlideUp.js.map +1 -0
  129. package/dist/components/Slot.d.ts +6 -0
  130. package/dist/components/Slot.d.ts.map +1 -0
  131. package/dist/components/Slot.js +52 -0
  132. package/dist/components/Slot.js.map +1 -0
  133. package/dist/components/Spinner.d.ts +9 -0
  134. package/dist/components/Spinner.d.ts.map +1 -0
  135. package/dist/components/Spinner.js +43 -0
  136. package/dist/components/Spinner.js.map +1 -0
  137. package/dist/components/Status.d.ts +8 -0
  138. package/dist/components/Status.d.ts.map +1 -0
  139. package/dist/components/Status.js +55 -0
  140. package/dist/components/Status.js.map +1 -0
  141. package/dist/components/Table.d.ts +10 -0
  142. package/dist/components/Table.d.ts.map +1 -0
  143. package/dist/components/Table.js +64 -0
  144. package/dist/components/Table.js.map +1 -0
  145. package/dist/components/Tabs.d.ts +8 -0
  146. package/dist/components/Tabs.d.ts.map +1 -0
  147. package/dist/components/Tabs.js +37 -0
  148. package/dist/components/Tabs.js.map +1 -0
  149. package/dist/components/Textarea.d.ts +8 -0
  150. package/dist/components/Textarea.d.ts.map +1 -0
  151. package/dist/components/Textarea.js +26 -0
  152. package/dist/components/Textarea.js.map +1 -0
  153. package/dist/components/TimePicker.d.ts +9 -0
  154. package/dist/components/TimePicker.d.ts.map +1 -0
  155. package/dist/components/TimePicker.js +40 -0
  156. package/dist/components/TimePicker.js.map +1 -0
  157. package/dist/components/TiptapContent.d.ts +9 -0
  158. package/dist/components/TiptapContent.d.ts.map +1 -0
  159. package/dist/components/TiptapContent.js +24 -0
  160. package/dist/components/TiptapContent.js.map +1 -0
  161. package/dist/components/TiptapEditor.d.ts +41 -0
  162. package/dist/components/TiptapEditor.d.ts.map +1 -0
  163. package/dist/components/TiptapEditor.js +555 -0
  164. package/dist/components/TiptapEditor.js.map +1 -0
  165. package/dist/components/TiptapInput.d.ts +15 -0
  166. package/dist/components/TiptapInput.d.ts.map +1 -0
  167. package/dist/components/TiptapInput.js +138 -0
  168. package/dist/components/TiptapInput.js.map +1 -0
  169. package/dist/components/Toggle.d.ts +9 -0
  170. package/dist/components/Toggle.d.ts.map +1 -0
  171. package/dist/components/Toggle.js +48 -0
  172. package/dist/components/Toggle.js.map +1 -0
  173. package/dist/components/ToggleGroup.d.ts +11 -0
  174. package/dist/components/ToggleGroup.d.ts.map +1 -0
  175. package/dist/components/ToggleGroup.js +70 -0
  176. package/dist/components/ToggleGroup.js.map +1 -0
  177. package/dist/components/Tooltip.d.ts +9 -0
  178. package/dist/components/Tooltip.d.ts.map +1 -0
  179. package/dist/components/Tooltip.js +51 -0
  180. package/dist/components/Tooltip.js.map +1 -0
  181. package/dist/components/VirtualizedScrollArea.d.ts +25 -0
  182. package/dist/components/VirtualizedScrollArea.d.ts.map +1 -0
  183. package/dist/components/VirtualizedScrollArea.js +80 -0
  184. package/dist/components/VirtualizedScrollArea.js.map +1 -0
  185. package/dist/components/editable-table/RowDataCells.d.ts +3 -0
  186. package/dist/components/editable-table/RowDataCells.d.ts.map +1 -0
  187. package/dist/components/editable-table/RowDataCells.js +33 -0
  188. package/dist/components/editable-table/RowDataCells.js.map +1 -0
  189. package/dist/components/editable-table/TableCell.d.ts +13 -0
  190. package/dist/components/editable-table/TableCell.d.ts.map +1 -0
  191. package/dist/components/editable-table/TableCell.js +415 -0
  192. package/dist/components/editable-table/TableCell.js.map +1 -0
  193. package/dist/components/editable-table/TableRow.d.ts +3 -0
  194. package/dist/components/editable-table/TableRow.d.ts.map +1 -0
  195. package/dist/components/editable-table/TableRow.js +163 -0
  196. package/dist/components/editable-table/TableRow.js.map +1 -0
  197. package/dist/components/editable-table/helpers.d.ts +12 -0
  198. package/dist/components/editable-table/helpers.d.ts.map +1 -0
  199. package/dist/components/editable-table/helpers.js +23 -0
  200. package/dist/components/editable-table/helpers.js.map +1 -0
  201. package/dist/components/editable-table/index.d.ts +4 -0
  202. package/dist/components/editable-table/index.d.ts.map +1 -0
  203. package/dist/components/editable-table/index.js +4 -0
  204. package/dist/components/editable-table/types.d.ts +43 -0
  205. package/dist/components/editable-table/types.d.ts.map +1 -0
  206. package/dist/components/editable-table/types.js +0 -0
  207. package/dist/components/editable-table/useEditableTableCellChange.d.ts +17 -0
  208. package/dist/components/editable-table/useEditableTableCellChange.d.ts.map +1 -0
  209. package/dist/components/editable-table/useEditableTableCellChange.js +152 -0
  210. package/dist/components/editable-table/useEditableTableCellChange.js.map +1 -0
  211. package/dist/components/editable-table/useEditableTableDnd.d.ts +18 -0
  212. package/dist/components/editable-table/useEditableTableDnd.d.ts.map +1 -0
  213. package/dist/components/editable-table/useEditableTableDnd.js +55 -0
  214. package/dist/components/editable-table/useEditableTableDnd.js.map +1 -0
  215. package/dist/components/editable-table/useEditableTableRows.d.ts +17 -0
  216. package/dist/components/editable-table/useEditableTableRows.d.ts.map +1 -0
  217. package/dist/components/editable-table/useEditableTableRows.js +108 -0
  218. package/dist/components/editable-table/useEditableTableRows.js.map +1 -0
  219. package/dist/components/index.d.ts +45 -0
  220. package/dist/components/index.d.ts.map +1 -0
  221. package/dist/components/index.js +45 -0
  222. package/dist/components/tiptap/InlineVariablePickerPopover.d.ts +24 -0
  223. package/dist/components/tiptap/InlineVariablePickerPopover.d.ts.map +1 -0
  224. package/dist/components/tiptap/InlineVariablePickerPopover.js +63 -0
  225. package/dist/components/tiptap/InlineVariablePickerPopover.js.map +1 -0
  226. package/dist/components/tiptap/InsertLinkDialog.d.ts +14 -0
  227. package/dist/components/tiptap/InsertLinkDialog.d.ts.map +1 -0
  228. package/dist/components/tiptap/InsertLinkDialog.js +145 -0
  229. package/dist/components/tiptap/InsertLinkDialog.js.map +1 -0
  230. package/dist/components/tiptap/LinkBubbleMenu.d.ts +10 -0
  231. package/dist/components/tiptap/LinkBubbleMenu.d.ts.map +1 -0
  232. package/dist/components/tiptap/LinkBubbleMenu.js +106 -0
  233. package/dist/components/tiptap/LinkBubbleMenu.js.map +1 -0
  234. package/dist/components/tiptap/LinkDropdown.d.ts +53 -0
  235. package/dist/components/tiptap/LinkDropdown.d.ts.map +1 -0
  236. package/dist/components/tiptap/LinkDropdown.js +155 -0
  237. package/dist/components/tiptap/LinkDropdown.js.map +1 -0
  238. package/dist/components/tiptap/VariableCommandList.d.ts +37 -0
  239. package/dist/components/tiptap/VariableCommandList.d.ts.map +1 -0
  240. package/dist/components/tiptap/VariableCommandList.js +166 -0
  241. package/dist/components/tiptap/VariableCommandList.js.map +1 -0
  242. package/dist/components/tiptap/VariableDropdown.d.ts +33 -0
  243. package/dist/components/tiptap/VariableDropdown.d.ts.map +1 -0
  244. package/dist/components/tiptap/VariableDropdown.js +121 -0
  245. package/dist/components/tiptap/VariableDropdown.js.map +1 -0
  246. package/dist/components/tiptap/VariablePickerContext.d.ts +38 -0
  247. package/dist/components/tiptap/VariablePickerContext.d.ts.map +1 -0
  248. package/dist/components/tiptap/VariablePickerContext.js +30 -0
  249. package/dist/components/tiptap/VariablePickerContext.js.map +1 -0
  250. package/dist/components/tiptap/VariableTag.d.ts +6 -0
  251. package/dist/components/tiptap/VariableTag.d.ts.map +1 -0
  252. package/dist/components/tiptap/VariableTag.js +153 -0
  253. package/dist/components/tiptap/VariableTag.js.map +1 -0
  254. package/dist/components/tiptap/VariableTagView.d.ts +3 -0
  255. package/dist/components/tiptap/VariableTagView.d.ts.map +1 -0
  256. package/dist/components/tiptap/VariableTagView.js +445 -0
  257. package/dist/components/tiptap/VariableTagView.js.map +1 -0
  258. package/dist/components/tiptap/VariableTransformControls.d.ts +37 -0
  259. package/dist/components/tiptap/VariableTransformControls.d.ts.map +1 -0
  260. package/dist/components/tiptap/VariableTransformControls.js +157 -0
  261. package/dist/components/tiptap/VariableTransformControls.js.map +1 -0
  262. package/dist/components/tiptap/editorConfig.d.ts +15 -0
  263. package/dist/components/tiptap/editorConfig.d.ts.map +1 -0
  264. package/dist/components/tiptap/editorConfig.js +191 -0
  265. package/dist/components/tiptap/editorConfig.js.map +1 -0
  266. package/dist/components/tiptap/useInlineVariablePicker.d.ts +34 -0
  267. package/dist/components/tiptap/useInlineVariablePicker.d.ts.map +1 -0
  268. package/dist/components/tiptap/useInlineVariablePicker.js +240 -0
  269. package/dist/components/tiptap/useInlineVariablePicker.js.map +1 -0
  270. package/dist/components/tiptap/useVariablePicker.d.ts +28 -0
  271. package/dist/components/tiptap/useVariablePicker.d.ts.map +1 -0
  272. package/dist/components/tiptap/useVariablePicker.js +122 -0
  273. package/dist/components/tiptap/useVariablePicker.js.map +1 -0
  274. package/dist/components/tiptap/variablePickerUtils.d.ts +11 -0
  275. package/dist/components/tiptap/variablePickerUtils.d.ts.map +1 -0
  276. package/dist/components/tiptap/variablePickerUtils.js +63 -0
  277. package/dist/components/tiptap/variablePickerUtils.js.map +1 -0
  278. package/dist/components/tiptap/variableSerialization.d.ts +49 -0
  279. package/dist/components/tiptap/variableSerialization.d.ts.map +1 -0
  280. package/dist/components/tiptap/variableSerialization.js +250 -0
  281. package/dist/components/tiptap/variableSerialization.js.map +1 -0
  282. package/dist/css/core.css +288 -0
  283. package/dist/css/style.css +295 -0
  284. package/dist/forms/Field.d.ts +37 -0
  285. package/dist/forms/Field.d.ts.map +1 -0
  286. package/dist/forms/Field.js +159 -0
  287. package/dist/forms/Field.js.map +1 -0
  288. package/dist/forms/SchemaFormEngine.d.ts +23 -0
  289. package/dist/forms/SchemaFormEngine.d.ts.map +1 -0
  290. package/dist/forms/SchemaFormEngine.js +444 -0
  291. package/dist/forms/SchemaFormEngine.js.map +1 -0
  292. package/dist/forms/components/FieldWrap.d.ts +11 -0
  293. package/dist/forms/components/FieldWrap.d.ts.map +1 -0
  294. package/dist/forms/components/FieldWrap.js +84 -0
  295. package/dist/forms/components/FieldWrap.js.map +1 -0
  296. package/dist/forms/components/ModalTabs.d.ts +21 -0
  297. package/dist/forms/components/ModalTabs.d.ts.map +1 -0
  298. package/dist/forms/components/ModalTabs.js +84 -0
  299. package/dist/forms/components/ModalTabs.js.map +1 -0
  300. package/dist/forms/components/index.d.ts +3 -0
  301. package/dist/forms/components/index.d.ts.map +1 -0
  302. package/dist/forms/components/index.js +3 -0
  303. package/dist/forms/contexts/VariableCategoriesContext.d.ts +17 -0
  304. package/dist/forms/contexts/VariableCategoriesContext.d.ts.map +1 -0
  305. package/dist/forms/contexts/VariableCategoriesContext.js +18 -0
  306. package/dist/forms/contexts/VariableCategoriesContext.js.map +1 -0
  307. package/dist/forms/engine/FormStateStore.d.ts +24 -0
  308. package/dist/forms/engine/FormStateStore.d.ts.map +1 -0
  309. package/dist/forms/engine/FormStateStore.js +97 -0
  310. package/dist/forms/engine/FormStateStore.js.map +1 -0
  311. package/dist/forms/engine/SchemaIndex.d.ts +33 -0
  312. package/dist/forms/engine/SchemaIndex.d.ts.map +1 -0
  313. package/dist/forms/engine/SchemaIndex.js +21 -0
  314. package/dist/forms/engine/SchemaIndex.js.map +1 -0
  315. package/dist/forms/engine/ValidationEngine.d.ts +13 -0
  316. package/dist/forms/engine/ValidationEngine.d.ts.map +1 -0
  317. package/dist/forms/engine/ValidationEngine.js +155 -0
  318. package/dist/forms/engine/ValidationEngine.js.map +1 -0
  319. package/dist/forms/engine/buildGroupedMessage.d.ts +2 -0
  320. package/dist/forms/engine/buildGroupedMessage.d.ts.map +1 -0
  321. package/dist/forms/engine/buildGroupedMessage.js +20 -0
  322. package/dist/forms/engine/buildGroupedMessage.js.map +1 -0
  323. package/dist/forms/engine/context.d.ts +60 -0
  324. package/dist/forms/engine/context.d.ts.map +1 -0
  325. package/dist/forms/engine/context.js +12 -0
  326. package/dist/forms/engine/context.js.map +1 -0
  327. package/dist/forms/engine/rules/email.d.ts +2 -0
  328. package/dist/forms/engine/rules/email.d.ts.map +1 -0
  329. package/dist/forms/engine/rules/email.js +11 -0
  330. package/dist/forms/engine/rules/email.js.map +1 -0
  331. package/dist/forms/engine/rules/emailOrVariable.d.ts +2 -0
  332. package/dist/forms/engine/rules/emailOrVariable.d.ts.map +1 -0
  333. package/dist/forms/engine/rules/emailOrVariable.js +13 -0
  334. package/dist/forms/engine/rules/emailOrVariable.js.map +1 -0
  335. package/dist/forms/engine/rules/handle.d.ts +2 -0
  336. package/dist/forms/engine/rules/handle.d.ts.map +1 -0
  337. package/dist/forms/engine/rules/handle.js +12 -0
  338. package/dist/forms/engine/rules/handle.js.map +1 -0
  339. package/dist/forms/engine/rules/index.d.ts +9 -0
  340. package/dist/forms/engine/rules/index.d.ts.map +1 -0
  341. package/dist/forms/engine/rules/index.js +35 -0
  342. package/dist/forms/engine/rules/index.js.map +1 -0
  343. package/dist/forms/engine/rules/max.d.ts +2 -0
  344. package/dist/forms/engine/rules/max.d.ts.map +1 -0
  345. package/dist/forms/engine/rules/max.js +16 -0
  346. package/dist/forms/engine/rules/max.js.map +1 -0
  347. package/dist/forms/engine/rules/min.d.ts +2 -0
  348. package/dist/forms/engine/rules/min.d.ts.map +1 -0
  349. package/dist/forms/engine/rules/min.js +16 -0
  350. package/dist/forms/engine/rules/min.js.map +1 -0
  351. package/dist/forms/engine/rules/required.d.ts +2 -0
  352. package/dist/forms/engine/rules/required.d.ts.map +1 -0
  353. package/dist/forms/engine/rules/required.js +11 -0
  354. package/dist/forms/engine/rules/required.js.map +1 -0
  355. package/dist/forms/engine/rules/uniqueHandle.d.ts +9 -0
  356. package/dist/forms/engine/rules/uniqueHandle.d.ts.map +1 -0
  357. package/dist/forms/engine/rules/uniqueHandle.js +95 -0
  358. package/dist/forms/engine/rules/uniqueHandle.js.map +1 -0
  359. package/dist/forms/engine/rules/utils.d.ts +3 -0
  360. package/dist/forms/engine/rules/utils.d.ts.map +1 -0
  361. package/dist/forms/engine/rules/utils.js +21 -0
  362. package/dist/forms/engine/rules/utils.js.map +1 -0
  363. package/dist/forms/fields/CalculationsField.d.ts +24 -0
  364. package/dist/forms/fields/CalculationsField.d.ts.map +1 -0
  365. package/dist/forms/fields/CalculationsField.js +215 -0
  366. package/dist/forms/fields/CalculationsField.js.map +1 -0
  367. package/dist/forms/fields/CalculationsToolbar.d.ts +17 -0
  368. package/dist/forms/fields/CalculationsToolbar.d.ts.map +1 -0
  369. package/dist/forms/fields/CalculationsToolbar.js +130 -0
  370. package/dist/forms/fields/CalculationsToolbar.js.map +1 -0
  371. package/dist/forms/fields/CheckboxSelectField.d.ts +19 -0
  372. package/dist/forms/fields/CheckboxSelectField.d.ts.map +1 -0
  373. package/dist/forms/fields/CheckboxSelectField.js +30 -0
  374. package/dist/forms/fields/CheckboxSelectField.js.map +1 -0
  375. package/dist/forms/fields/ColorField.d.ts +15 -0
  376. package/dist/forms/fields/ColorField.d.ts.map +1 -0
  377. package/dist/forms/fields/ColorField.js +30 -0
  378. package/dist/forms/fields/ColorField.js.map +1 -0
  379. package/dist/forms/fields/ComboboxField.d.ts +23 -0
  380. package/dist/forms/fields/ComboboxField.d.ts.map +1 -0
  381. package/dist/forms/fields/ComboboxField.js +38 -0
  382. package/dist/forms/fields/ComboboxField.js.map +1 -0
  383. package/dist/forms/fields/DateTimeField.d.ts +14 -0
  384. package/dist/forms/fields/DateTimeField.d.ts.map +1 -0
  385. package/dist/forms/fields/DateTimeField.js +53 -0
  386. package/dist/forms/fields/DateTimeField.js.map +1 -0
  387. package/dist/forms/fields/EditableTableField.d.ts +22 -0
  388. package/dist/forms/fields/EditableTableField.d.ts.map +1 -0
  389. package/dist/forms/fields/EditableTableField.js +37 -0
  390. package/dist/forms/fields/EditableTableField.js.map +1 -0
  391. package/dist/forms/fields/ElementSelectField.d.ts +20 -0
  392. package/dist/forms/fields/ElementSelectField.d.ts.map +1 -0
  393. package/dist/forms/fields/ElementSelectField.js +215 -0
  394. package/dist/forms/fields/ElementSelectField.js.map +1 -0
  395. package/dist/forms/fields/GroupField.d.ts +19 -0
  396. package/dist/forms/fields/GroupField.d.ts.map +1 -0
  397. package/dist/forms/fields/GroupField.js +50 -0
  398. package/dist/forms/fields/GroupField.js.map +1 -0
  399. package/dist/forms/fields/HandleField.d.ts +20 -0
  400. package/dist/forms/fields/HandleField.d.ts.map +1 -0
  401. package/dist/forms/fields/HandleField.js +70 -0
  402. package/dist/forms/fields/HandleField.js.map +1 -0
  403. package/dist/forms/fields/LightswitchField.d.ts +14 -0
  404. package/dist/forms/fields/LightswitchField.d.ts.map +1 -0
  405. package/dist/forms/fields/LightswitchField.js +29 -0
  406. package/dist/forms/fields/LightswitchField.js.map +1 -0
  407. package/dist/forms/fields/ListField.d.ts +17 -0
  408. package/dist/forms/fields/ListField.d.ts.map +1 -0
  409. package/dist/forms/fields/ListField.js +51 -0
  410. package/dist/forms/fields/ListField.js.map +1 -0
  411. package/dist/forms/fields/NumberField.d.ts +17 -0
  412. package/dist/forms/fields/NumberField.d.ts.map +1 -0
  413. package/dist/forms/fields/NumberField.js +33 -0
  414. package/dist/forms/fields/NumberField.js.map +1 -0
  415. package/dist/forms/fields/RadioGroupField.d.ts +25 -0
  416. package/dist/forms/fields/RadioGroupField.d.ts.map +1 -0
  417. package/dist/forms/fields/RadioGroupField.js +102 -0
  418. package/dist/forms/fields/RadioGroupField.js.map +1 -0
  419. package/dist/forms/fields/RichTextField.d.ts +23 -0
  420. package/dist/forms/fields/RichTextField.d.ts.map +1 -0
  421. package/dist/forms/fields/RichTextField.js +50 -0
  422. package/dist/forms/fields/RichTextField.js.map +1 -0
  423. package/dist/forms/fields/SelectField.d.ts +25 -0
  424. package/dist/forms/fields/SelectField.d.ts.map +1 -0
  425. package/dist/forms/fields/SelectField.js +73 -0
  426. package/dist/forms/fields/SelectField.js.map +1 -0
  427. package/dist/forms/fields/StaticTableField.d.ts +34 -0
  428. package/dist/forms/fields/StaticTableField.d.ts.map +1 -0
  429. package/dist/forms/fields/StaticTableField.js +128 -0
  430. package/dist/forms/fields/StaticTableField.js.map +1 -0
  431. package/dist/forms/fields/TextField.d.ts +16 -0
  432. package/dist/forms/fields/TextField.d.ts.map +1 -0
  433. package/dist/forms/fields/TextField.js +31 -0
  434. package/dist/forms/fields/TextField.js.map +1 -0
  435. package/dist/forms/fields/TextareaField.d.ts +17 -0
  436. package/dist/forms/fields/TextareaField.d.ts.map +1 -0
  437. package/dist/forms/fields/TextareaField.js +32 -0
  438. package/dist/forms/fields/TextareaField.js.map +1 -0
  439. package/dist/forms/fields/VariablePickerField.d.ts +21 -0
  440. package/dist/forms/fields/VariablePickerField.d.ts.map +1 -0
  441. package/dist/forms/fields/VariablePickerField.js +49 -0
  442. package/dist/forms/fields/VariablePickerField.js.map +1 -0
  443. package/dist/forms/index.d.ts +8 -0
  444. package/dist/forms/index.d.ts.map +1 -0
  445. package/dist/forms/index.js +10 -0
  446. package/dist/forms/registry.d.ts +8 -0
  447. package/dist/forms/registry.d.ts.map +1 -0
  448. package/dist/forms/registry.js +76 -0
  449. package/dist/forms/registry.js.map +1 -0
  450. package/dist/forms/store/element-store.d.ts +11 -0
  451. package/dist/forms/store/element-store.d.ts.map +1 -0
  452. package/dist/forms/store/element-store.js +41 -0
  453. package/dist/forms/store/element-store.js.map +1 -0
  454. package/dist/forms/useEditableTableFieldBinding.d.ts +13 -0
  455. package/dist/forms/useEditableTableFieldBinding.d.ts.map +1 -0
  456. package/dist/forms/useEditableTableFieldBinding.js +91 -0
  457. package/dist/forms/useEditableTableFieldBinding.js.map +1 -0
  458. package/dist/forms/useEngineField.d.ts +9 -0
  459. package/dist/forms/useEngineField.d.ts.map +1 -0
  460. package/dist/forms/useEngineField.js +32 -0
  461. package/dist/forms/useEngineField.js.map +1 -0
  462. package/dist/hooks/index.d.ts +3 -0
  463. package/dist/hooks/index.d.ts.map +1 -0
  464. package/dist/hooks/index.js +3 -0
  465. package/dist/hooks/useKeyboardShortcuts.d.ts +14 -0
  466. package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  467. package/dist/hooks/useKeyboardShortcuts.js +67 -0
  468. package/dist/hooks/useKeyboardShortcuts.js.map +1 -0
  469. package/dist/hooks/useTranslation.d.ts +3 -0
  470. package/dist/hooks/useTranslation.d.ts.map +1 -0
  471. package/dist/hooks/useTranslation.js +12 -0
  472. package/dist/hooks/useTranslation.js.map +1 -0
  473. package/dist/index.d.ts +2 -0
  474. package/dist/index.d.ts.map +1 -0
  475. package/dist/index.js +2 -0
  476. package/dist/node_modules/@babel/runtime/helpers/arrayLikeToArray.js +15 -0
  477. package/dist/node_modules/@babel/runtime/helpers/arrayLikeToArray.js.map +1 -0
  478. package/dist/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js +15 -0
  479. package/dist/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js.map +1 -0
  480. package/dist/node_modules/@babel/runtime/helpers/classCallCheck.js +13 -0
  481. package/dist/node_modules/@babel/runtime/helpers/classCallCheck.js.map +1 -0
  482. package/dist/node_modules/@babel/runtime/helpers/createClass.js +21 -0
  483. package/dist/node_modules/@babel/runtime/helpers/createClass.js.map +1 -0
  484. package/dist/node_modules/@babel/runtime/helpers/defineProperty.js +20 -0
  485. package/dist/node_modules/@babel/runtime/helpers/defineProperty.js.map +1 -0
  486. package/dist/node_modules/@babel/runtime/helpers/interopRequireDefault.js +13 -0
  487. package/dist/node_modules/@babel/runtime/helpers/interopRequireDefault.js.map +1 -0
  488. package/dist/node_modules/@babel/runtime/helpers/iterableToArray.js +13 -0
  489. package/dist/node_modules/@babel/runtime/helpers/iterableToArray.js.map +1 -0
  490. package/dist/node_modules/@babel/runtime/helpers/nonIterableSpread.js +13 -0
  491. package/dist/node_modules/@babel/runtime/helpers/nonIterableSpread.js.map +1 -0
  492. package/dist/node_modules/@babel/runtime/helpers/toConsumableArray.js +21 -0
  493. package/dist/node_modules/@babel/runtime/helpers/toConsumableArray.js.map +1 -0
  494. package/dist/node_modules/@babel/runtime/helpers/toPrimitive.js +22 -0
  495. package/dist/node_modules/@babel/runtime/helpers/toPrimitive.js.map +1 -0
  496. package/dist/node_modules/@babel/runtime/helpers/toPropertyKey.js +18 -0
  497. package/dist/node_modules/@babel/runtime/helpers/toPropertyKey.js.map +1 -0
  498. package/dist/node_modules/@babel/runtime/helpers/typeof.js +18 -0
  499. package/dist/node_modules/@babel/runtime/helpers/typeof.js.map +1 -0
  500. package/dist/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js +19 -0
  501. package/dist/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js.map +1 -0
  502. package/dist/node_modules/jexl/dist/Expression.js +84 -0
  503. package/dist/node_modules/jexl/dist/Expression.js.map +1 -0
  504. package/dist/node_modules/jexl/dist/Jexl.js +165 -0
  505. package/dist/node_modules/jexl/dist/Jexl.js.map +1 -0
  506. package/dist/node_modules/jexl/dist/Lexer.js +152 -0
  507. package/dist/node_modules/jexl/dist/Lexer.js.map +1 -0
  508. package/dist/node_modules/jexl/dist/PromiseSync.js +87 -0
  509. package/dist/node_modules/jexl/dist/PromiseSync.js.map +1 -0
  510. package/dist/node_modules/jexl/dist/evaluator/Evaluator.js +98 -0
  511. package/dist/node_modules/jexl/dist/evaluator/Evaluator.js.map +1 -0
  512. package/dist/node_modules/jexl/dist/evaluator/handlers.js +162 -0
  513. package/dist/node_modules/jexl/dist/evaluator/handlers.js.map +1 -0
  514. package/dist/node_modules/jexl/dist/grammar.js +195 -0
  515. package/dist/node_modules/jexl/dist/grammar.js.map +1 -0
  516. package/dist/node_modules/jexl/dist/parser/Parser.js +135 -0
  517. package/dist/node_modules/jexl/dist/parser/Parser.js.map +1 -0
  518. package/dist/node_modules/jexl/dist/parser/handlers.js +205 -0
  519. package/dist/node_modules/jexl/dist/parser/handlers.js.map +1 -0
  520. package/dist/node_modules/jexl/dist/parser/states.js +158 -0
  521. package/dist/node_modules/jexl/dist/parser/states.js.map +1 -0
  522. package/dist/types/global.d.d.ts +1 -0
  523. package/dist/types/global.d.js +0 -0
  524. package/dist/utils/classes.d.ts +18 -0
  525. package/dist/utils/classes.d.ts.map +1 -0
  526. package/dist/utils/classes.js +25 -0
  527. package/dist/utils/classes.js.map +1 -0
  528. package/dist/utils/config.d.ts +14 -0
  529. package/dist/utils/config.d.ts.map +1 -0
  530. package/dist/utils/config.js +16 -0
  531. package/dist/utils/config.js.map +1 -0
  532. package/dist/utils/craftHostBridge.d.ts +16 -0
  533. package/dist/utils/craftHostBridge.d.ts.map +1 -0
  534. package/dist/utils/craftHostBridge.js +28 -0
  535. package/dist/utils/craftHostBridge.js.map +1 -0
  536. package/dist/utils/handle.d.ts +10 -0
  537. package/dist/utils/handle.d.ts.map +1 -0
  538. package/dist/utils/handle.js +51 -0
  539. package/dist/utils/handle.js.map +1 -0
  540. package/dist/utils/hostBridge.d.ts +40 -0
  541. package/dist/utils/hostBridge.d.ts.map +1 -0
  542. package/dist/utils/hostBridge.js +35 -0
  543. package/dist/utils/hostBridge.js.map +1 -0
  544. package/dist/utils/index.d.ts +18 -0
  545. package/dist/utils/index.d.ts.map +1 -0
  546. package/dist/utils/index.js +66 -0
  547. package/dist/utils/index.js.map +1 -0
  548. package/dist/utils/portal.d.ts +17 -0
  549. package/dist/utils/portal.d.ts.map +1 -0
  550. package/dist/utils/portal.js +51 -0
  551. package/dist/utils/portal.js.map +1 -0
  552. package/dist/utils/schema.d.ts +17 -0
  553. package/dist/utils/schema.d.ts.map +1 -0
  554. package/dist/utils/schema.js +56 -0
  555. package/dist/utils/schema.js.map +1 -0
  556. package/dist/utils/schemaFieldNames.d.ts +2 -0
  557. package/dist/utils/schemaFieldNames.d.ts.map +1 -0
  558. package/dist/utils/schemaFieldNames.js +16 -0
  559. package/dist/utils/schemaFieldNames.js.map +1 -0
  560. package/dist/utils/schemaIndex.d.ts +6 -0
  561. package/dist/utils/schemaIndex.d.ts.map +1 -0
  562. package/dist/utils/schemaIndex.js +31 -0
  563. package/dist/utils/schemaIndex.js.map +1 -0
  564. package/dist/utils/schemaIndexCache.d.ts +6 -0
  565. package/dist/utils/schemaIndexCache.d.ts.map +1 -0
  566. package/dist/utils/schemaIndexCache.js +32 -0
  567. package/dist/utils/schemaIndexCache.js.map +1 -0
  568. package/dist/utils/schemaNormalize.d.ts +13 -0
  569. package/dist/utils/schemaNormalize.d.ts.map +1 -0
  570. package/dist/utils/schemaNormalize.js +17 -0
  571. package/dist/utils/schemaNormalize.js.map +1 -0
  572. package/dist/utils/store.d.ts +7 -0
  573. package/dist/utils/store.d.ts.map +1 -0
  574. package/dist/utils/store.js +6 -0
  575. package/dist/utils/store.js.map +1 -0
  576. package/dist/utils/timeOptions.d.ts +6 -0
  577. package/dist/utils/timeOptions.d.ts.map +1 -0
  578. package/dist/utils/timeOptions.js +42 -0
  579. package/dist/utils/timeOptions.js.map +1 -0
  580. package/dist/utils/tiptap.d.ts +13 -0
  581. package/dist/utils/tiptap.d.ts.map +1 -0
  582. package/dist/utils/tiptap.js +39 -0
  583. package/dist/utils/tiptap.js.map +1 -0
  584. package/dist/utils/translation.d.ts +5 -0
  585. package/dist/utils/translation.d.ts.map +1 -0
  586. package/dist/utils/translation.js +21 -0
  587. package/dist/utils/translation.js.map +1 -0
  588. package/dist/utils/validation.d.ts +4 -0
  589. package/dist/utils/validation.d.ts.map +1 -0
  590. package/dist/utils/validation.js +253 -0
  591. package/dist/utils/validation.js.map +1 -0
  592. package/package.json +167 -0
  593. package/vite-dev.mjs +56 -0
@@ -0,0 +1,53 @@
1
+ import { DatePicker } from "../../components/DatePicker.js";
2
+ import { TimePicker } from "../../components/TimePicker.js";
3
+ import "../../components/index.js";
4
+ import { FieldLayout } from "../Field.js";
5
+ import { useEngineField } from "../useEngineField.js";
6
+ import { useEffect, useState } from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ //#region src/forms/fields/DateTimeField.tsx
9
+ var DateTimeField = ({ form, field }) => {
10
+ const { value, setValue, errors } = useEngineField(form, field.name);
11
+ const initialDate = value ? new Date(String(value)) : null;
12
+ const initialTime = initialDate ? initialDate.toTimeString().slice(0, 5) : "";
13
+ const [dateValue, setDateValue] = useState(initialDate);
14
+ const [timeValue, setTimeValue] = useState(initialTime);
15
+ useEffect(() => {
16
+ let nextValue = "";
17
+ if (dateValue && timeValue) nextValue = (/* @__PURE__ */ new Date(`${dateValue.toISOString().split("T")[0]}T${timeValue}`)).toISOString();
18
+ else if (dateValue) nextValue = (/* @__PURE__ */ new Date(`${dateValue.toISOString().split("T")[0]}T00:00:00`)).toISOString();
19
+ if (String(value ?? "") !== nextValue) setValue(nextValue);
20
+ }, [
21
+ dateValue,
22
+ timeValue,
23
+ setValue,
24
+ value
25
+ ]);
26
+ return /* @__PURE__ */ jsx(FieldLayout, {
27
+ name: field.name,
28
+ label: field.label,
29
+ instructions: field.instructions,
30
+ warning: field.warning,
31
+ required: field.required,
32
+ errors,
33
+ withControl: false,
34
+ children: /* @__PURE__ */ jsxs("div", {
35
+ className: "flex gap-2",
36
+ children: [/* @__PURE__ */ jsx(DatePicker, {
37
+ value: dateValue,
38
+ onValueChange: (nextValue) => {
39
+ setDateValue(nextValue ?? null);
40
+ },
41
+ isInvalid: errors.length > 0
42
+ }), /* @__PURE__ */ jsx(TimePicker, {
43
+ value: timeValue,
44
+ onValueChange: setTimeValue,
45
+ isInvalid: errors.length > 0
46
+ })]
47
+ })
48
+ });
49
+ };
50
+ //#endregion
51
+ export { DateTimeField };
52
+
53
+ //# sourceMappingURL=DateTimeField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateTimeField.js","names":[],"sources":["../../../src/forms/fields/DateTimeField.tsx"],"sourcesContent":["import { DatePicker, TimePicker } from '@verbb/plugin-kit-react/components';\nimport { useEffect, useState } from 'react';\nimport { FieldLayout } from '../Field';\nimport type { SchemaFormEngineApi } from '../engine/context';\nimport { useEngineField } from '../useEngineField';\n\ntype DateTimeFieldProps = {\n form: SchemaFormEngineApi;\n field: {\n name: string;\n label?: string;\n instructions?: string;\n warning?: string;\n required?: boolean;\n };\n};\n\nexport const DateTimeField = ({ form, field }: DateTimeFieldProps) => {\n const { value, setValue, errors } = useEngineField(form, field.name);\n const initialDate = value ? new Date(String(value)) : null;\n const initialTime = initialDate ? initialDate.toTimeString().slice(0, 5) : '';\n\n const [dateValue, setDateValue] = useState<Date | null>(initialDate);\n const [timeValue, setTimeValue] = useState<string>(initialTime);\n\n useEffect(() => {\n let nextValue = '';\n\n if (dateValue && timeValue) {\n const combinedDateTime = new Date(`${dateValue.toISOString().split('T')[0]}T${timeValue}`);\n nextValue = combinedDateTime.toISOString();\n } else if (dateValue) {\n const dateOnly = new Date(`${dateValue.toISOString().split('T')[0]}T00:00:00`);\n nextValue = dateOnly.toISOString();\n }\n\n if (String(value ?? '') !== nextValue) {\n setValue(nextValue);\n }\n }, [dateValue, timeValue, setValue, value]);\n\n return (\n <FieldLayout\n name={field.name}\n label={field.label}\n instructions={field.instructions}\n warning={field.warning}\n required={field.required}\n errors={errors}\n withControl={false}\n >\n <div className=\"flex gap-2\">\n <DatePicker\n value={dateValue}\n onValueChange={(nextValue) => { setDateValue(nextValue ?? null); }}\n isInvalid={errors.length > 0}\n />\n <TimePicker\n value={timeValue}\n onValueChange={setTimeValue}\n isInvalid={errors.length > 0}\n />\n </div>\n </FieldLayout>\n );\n};\n"],"mappings":";;;;;;;;AAiBA,IAAa,iBAAiB,EAAE,MAAM,YAAgC;CAClE,MAAM,EAAE,OAAO,UAAU,WAAW,eAAe,MAAM,MAAM,KAAK;CACpE,MAAM,cAAc,QAAQ,IAAI,KAAK,OAAO,MAAM,CAAC,GAAG;CACtD,MAAM,cAAc,cAAc,YAAY,cAAc,CAAC,MAAM,GAAG,EAAE,GAAG;CAE3E,MAAM,CAAC,WAAW,gBAAgB,SAAsB,YAAY;CACpE,MAAM,CAAC,WAAW,gBAAgB,SAAiB,YAAY;AAE/D,iBAAgB;EACZ,IAAI,YAAY;AAEhB,MAAI,aAAa,UAEb,8BAAY,IADiB,KAAK,GAAG,UAAU,aAAa,CAAC,MAAM,IAAI,CAAC,GAAG,GAAG,YAClE,EAAiB,aAAa;WACnC,UAEP,8BAAY,IADS,KAAK,GAAG,UAAU,aAAa,CAAC,MAAM,IAAI,CAAC,GAAG,WACvD,EAAS,aAAa;AAGtC,MAAI,OAAO,SAAS,GAAG,KAAK,UACxB,UAAS,UAAU;IAExB;EAAC;EAAW;EAAW;EAAU;EAAM,CAAC;AAE3C,QACI,oBAAC,aAAD;EACI,MAAM,MAAM;EACZ,OAAO,MAAM;EACb,cAAc,MAAM;EACpB,SAAS,MAAM;EACf,UAAU,MAAM;EACR;EACR,aAAa;YAEb,qBAAC,OAAD;GAAK,WAAU;aAAf,CACI,oBAAC,YAAD;IACI,OAAO;IACP,gBAAgB,cAAc;AAAE,kBAAa,aAAa,KAAK;;IAC/D,WAAW,OAAO,SAAS;IAC7B,CAAA,EACF,oBAAC,YAAD;IACI,OAAO;IACP,eAAe;IACf,WAAW,OAAO,SAAS;IAC7B,CAAA,CACA;;EACI,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { EditableTable } from '../../components';
2
+ import { ComponentProps } from 'react';
3
+ import { SchemaFormEngineApi } from '../engine/context';
4
+ type EditableTableFieldProps = {
5
+ form: SchemaFormEngineApi;
6
+ field: {
7
+ name: string;
8
+ label?: string;
9
+ instructions?: string;
10
+ warning?: string;
11
+ required?: boolean;
12
+ columns: ComponentProps<typeof EditableTable>['columns'];
13
+ addRowLabel?: string;
14
+ allowReorder?: boolean;
15
+ allowAdd?: boolean;
16
+ allowDelete?: boolean;
17
+ newRowDefaults?: Record<string, unknown>;
18
+ };
19
+ };
20
+ export declare const EditableTableField: ({ form, field }: EditableTableFieldProps) => import("react/jsx-runtime").JSX.Element;
21
+ export {};
22
+ //# sourceMappingURL=EditableTableField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditableTableField.d.ts","sourceRoot":"","sources":["../../../src/forms/fields/EditableTableField.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG7D,KAAK,uBAAuB,GAAG;IAC3B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,cAAc,CAAC,OAAO,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC;QACzD,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,CAAC;CACL,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,iBAAiB,uBAAuB,4CAoC1E,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { EditableTable } from "../../components/EditableTable.js";
2
+ import "../../components/index.js";
3
+ import { FieldLayout } from "../Field.js";
4
+ import { useEditableTableFieldBinding } from "../useEditableTableFieldBinding.js";
5
+ import { jsx } from "react/jsx-runtime";
6
+ //#region src/forms/fields/EditableTableField.tsx
7
+ var EditableTableField = ({ form, field }) => {
8
+ const { rows, setRows, errors, cellErrors, handleCellChange } = useEditableTableFieldBinding(form, field.name);
9
+ return /* @__PURE__ */ jsx(FieldLayout, {
10
+ name: field.name,
11
+ label: field.label,
12
+ instructions: field.instructions,
13
+ warning: field.warning,
14
+ required: field.required,
15
+ errors,
16
+ withControl: false,
17
+ children: /* @__PURE__ */ jsx(EditableTable, {
18
+ columns: field.columns,
19
+ rows,
20
+ onChange: setRows,
21
+ onCellChange: handleCellChange,
22
+ addRowLabel: field.addRowLabel,
23
+ allowReorder: field.allowReorder,
24
+ allowAdd: field.allowAdd,
25
+ allowDelete: field.allowDelete,
26
+ newRowDefaults: field.newRowDefaults,
27
+ className: "",
28
+ fieldName: field.name,
29
+ cellErrors,
30
+ modifyColumn: void 0
31
+ })
32
+ });
33
+ };
34
+ //#endregion
35
+ export { EditableTableField };
36
+
37
+ //# sourceMappingURL=EditableTableField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditableTableField.js","names":[],"sources":["../../../src/forms/fields/EditableTableField.tsx"],"sourcesContent":["import { EditableTable } from '@verbb/plugin-kit-react/components';\nimport type { ComponentProps } from 'react';\nimport { FieldLayout } from '../Field';\nimport type { SchemaFormEngineApi } from '../engine/context';\nimport { useEditableTableFieldBinding } from '../useEditableTableFieldBinding';\n\ntype EditableTableFieldProps = {\n form: SchemaFormEngineApi;\n field: {\n name: string;\n label?: string;\n instructions?: string;\n warning?: string;\n required?: boolean;\n columns: ComponentProps<typeof EditableTable>['columns'];\n addRowLabel?: string;\n allowReorder?: boolean;\n allowAdd?: boolean;\n allowDelete?: boolean;\n newRowDefaults?: Record<string, unknown>;\n };\n};\n\nexport const EditableTableField = ({ form, field }: EditableTableFieldProps) => {\n const {\n rows,\n setRows,\n errors,\n cellErrors,\n handleCellChange,\n } = useEditableTableFieldBinding(form, field.name);\n\n return (\n <FieldLayout\n name={field.name}\n label={field.label}\n instructions={field.instructions}\n warning={field.warning}\n required={field.required}\n errors={errors}\n withControl={false}\n >\n <EditableTable\n columns={field.columns}\n rows={rows}\n onChange={setRows}\n onCellChange={handleCellChange}\n addRowLabel={field.addRowLabel}\n allowReorder={field.allowReorder}\n allowAdd={field.allowAdd}\n allowDelete={field.allowDelete}\n newRowDefaults={field.newRowDefaults}\n className=\"\"\n fieldName={field.name}\n cellErrors={cellErrors}\n modifyColumn={undefined}\n />\n </FieldLayout>\n );\n};\n"],"mappings":";;;;;;AAuBA,IAAa,sBAAsB,EAAE,MAAM,YAAqC;CAC5E,MAAM,EACF,MACA,SACA,QACA,YACA,qBACA,6BAA6B,MAAM,MAAM,KAAK;AAElD,QACI,oBAAC,aAAD;EACI,MAAM,MAAM;EACZ,OAAO,MAAM;EACb,cAAc,MAAM;EACpB,SAAS,MAAM;EACf,UAAU,MAAM;EACR;EACR,aAAa;YAEb,oBAAC,eAAD;GACI,SAAS,MAAM;GACT;GACN,UAAU;GACV,cAAc;GACd,aAAa,MAAM;GACnB,cAAc,MAAM;GACpB,UAAU,MAAM;GAChB,aAAa,MAAM;GACnB,gBAAgB,MAAM;GACtB,WAAU;GACV,WAAW,MAAM;GACL;GACZ,cAAc,KAAA;GAChB,CAAA;EACQ,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { SchemaFormEngineApi } from '../engine/context';
2
+ type ElementSelectFieldProps = {
3
+ form: SchemaFormEngineApi;
4
+ field: {
5
+ name: string;
6
+ label?: string;
7
+ instructions?: string;
8
+ warning?: string;
9
+ required?: boolean;
10
+ elementType?: string;
11
+ sources?: string[];
12
+ criteria?: Record<string, unknown>;
13
+ limit?: number;
14
+ elementSelectOptionsAction?: string;
15
+ elementSelectStorageKeyPrefix?: string;
16
+ };
17
+ };
18
+ export declare const ElementSelectField: ({ form, field }: ElementSelectFieldProps) => import("react/jsx-runtime").JSX.Element;
19
+ export {};
20
+ //# sourceMappingURL=ElementSelectField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElementSelectField.d.ts","sourceRoot":"","sources":["../../../src/forms/fields/ElementSelectField.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAW7D,KAAK,uBAAuB,GAAG;IAC3B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,0BAA0B,CAAC,EAAE,MAAM,CAAC;QACpC,6BAA6B,CAAC,EAAE,MAAM,CAAC;KAC1C,CAAC;CACL,CAAC;AAkEF,eAAO,MAAM,kBAAkB,GAAI,iBAAiB,uBAAuB,4CAsL1E,CAAC"}
@@ -0,0 +1,215 @@
1
+ import { cn } from "../../utils/classes.js";
2
+ import { hostOpenElementSelector, hostRequest } from "../../utils/hostBridge.js";
3
+ import "../../utils/index.js";
4
+ import { useTranslation } from "../../hooks/useTranslation.js";
5
+ import "../../hooks/index.js";
6
+ import { Spinner } from "../../components/Spinner.js";
7
+ import { Status } from "../../components/Status.js";
8
+ import "../../components/index.js";
9
+ import { Button } from "../../components/Button.js";
10
+ import { FieldLayout } from "../Field.js";
11
+ import useElementStoreV2 from "../store/element-store.js";
12
+ import { useEffect, useState } from "react";
13
+ import { jsx, jsxs } from "react/jsx-runtime";
14
+ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
15
+ import { faPlus, faXmark } from "@fortawesome/pro-solid-svg-icons";
16
+ //#region src/forms/fields/ElementSelectField.tsx
17
+ var isRecord = (value) => {
18
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
19
+ };
20
+ var isElementReference = (value) => {
21
+ return isRecord(value) && typeof value.id === "number" && typeof value.siteId === "number";
22
+ };
23
+ var normalizeSelectedElement = (element, elementType) => {
24
+ const url = typeof element.$element?.data === "function" ? element.$element.data("cp-url") : null;
25
+ return {
26
+ id: element.id,
27
+ siteId: element.siteId,
28
+ label: element.label,
29
+ url: typeof url === "string" ? url : null,
30
+ status: element.status ?? null,
31
+ elementType
32
+ };
33
+ };
34
+ var normalizeStoredElement = (value, elementType) => {
35
+ if (!isRecord(value) || typeof value.id !== "number" || typeof value.siteId !== "number") return null;
36
+ return {
37
+ id: value.id,
38
+ siteId: value.siteId,
39
+ label: typeof value.label === "string" ? value.label : `Element ${value.id}`,
40
+ url: typeof value.url === "string" ? value.url : null,
41
+ status: typeof value.status === "string" ? value.status : null,
42
+ elementType: typeof value.elementType === "string" ? value.elementType : elementType
43
+ };
44
+ };
45
+ var ElementSelectField = ({ form, field }) => {
46
+ const [isLoading, setIsLoading] = useState(false);
47
+ const { getElementData, setElementData, hasElementData } = useElementStoreV2();
48
+ const t = useTranslation();
49
+ const selectedElements = getElementData(field.name) || [];
50
+ const errors = form?.getErrorMapFields?.()[field.name] || [];
51
+ const { elementSelectOptionsAction } = field;
52
+ const { elementSelectStorageKeyPrefix } = field;
53
+ const handleButtonClick = () => {
54
+ const elementType = field.elementType || "craft\\elements\\Entry";
55
+ if (!elementSelectStorageKeyPrefix) throw new Error(`ElementSelectField requires "elementSelectStorageKeyPrefix" for "${field.name}".`);
56
+ hostOpenElementSelector(elementType, {
57
+ storageKey: `${elementSelectStorageKeyPrefix}.${field.name}.${elementType}`,
58
+ sources: field.sources || ["*"],
59
+ criteria: field.criteria || {},
60
+ multiSelect: field.limit ? false : true,
61
+ limit: field.limit || null,
62
+ autoFocusSearchBox: false,
63
+ onShow: () => {
64
+ document.body.style.pointerEvents = "";
65
+ },
66
+ onSelect: (elements) => {
67
+ const newElements = elements.map((element) => {
68
+ return normalizeSelectedElement(element, elementType);
69
+ });
70
+ const updatedElements = [...selectedElements, ...newElements];
71
+ setElementData(field.name, updatedElements);
72
+ const formValue = updatedElements.map((element) => {
73
+ return {
74
+ id: element.id,
75
+ siteId: element.siteId
76
+ };
77
+ });
78
+ form.setFieldValue(field.name, formValue);
79
+ },
80
+ closeOtherModals: false
81
+ });
82
+ };
83
+ const removeElement = (elementId) => {
84
+ const updatedElements = selectedElements.filter((el) => {
85
+ return el.id !== elementId;
86
+ });
87
+ setElementData(field.name, updatedElements);
88
+ const formValue = updatedElements.map((element) => {
89
+ return {
90
+ id: element.id,
91
+ siteId: element.siteId
92
+ };
93
+ });
94
+ form.setFieldValue(field.name, formValue);
95
+ };
96
+ useEffect(() => {
97
+ const loadElements = async () => {
98
+ if (field.name && !hasElementData(field.name)) {
99
+ const currentValue = form.getFieldValue(field.name);
100
+ if (currentValue && Array.isArray(currentValue) && currentValue.length > 0) {
101
+ const currentReferences = currentValue.filter(isElementReference);
102
+ if (!currentReferences.length) return;
103
+ setIsLoading(true);
104
+ try {
105
+ if (!elementSelectOptionsAction) throw new Error(`ElementSelectField requires "elementSelectOptionsAction" for "${field.name}".`);
106
+ const response = await hostRequest("POST", elementSelectOptionsAction, { data: { elements: currentReferences } });
107
+ if (response.data && Array.isArray(response.data)) {
108
+ const normalizedElements = response.data.map((item) => {
109
+ return normalizeStoredElement(item, field.elementType || "craft\\elements\\Entry");
110
+ }).filter((item) => {
111
+ return item !== null;
112
+ });
113
+ setElementData(field.name, normalizedElements);
114
+ }
115
+ } catch {
116
+ const fallbackElements = currentReferences.map((item) => {
117
+ return {
118
+ id: item.id,
119
+ siteId: item.siteId,
120
+ label: `Element ${item.id}`,
121
+ url: null,
122
+ status: null,
123
+ elementType: field.elementType || "craft\\elements\\Entry"
124
+ };
125
+ });
126
+ setElementData(field.name, fallbackElements);
127
+ } finally {
128
+ setIsLoading(false);
129
+ }
130
+ }
131
+ }
132
+ };
133
+ loadElements();
134
+ }, [
135
+ form,
136
+ field.name,
137
+ field.elementType,
138
+ elementSelectOptionsAction,
139
+ getElementData,
140
+ setElementData,
141
+ hasElementData
142
+ ]);
143
+ return /* @__PURE__ */ jsx(FieldLayout, {
144
+ name: field.name,
145
+ label: field.label,
146
+ instructions: field.instructions,
147
+ warning: field.warning,
148
+ required: field.required,
149
+ errors,
150
+ withControl: false,
151
+ children: /* @__PURE__ */ jsxs("div", {
152
+ className: "space-y-3",
153
+ children: [
154
+ isLoading && /* @__PURE__ */ jsxs("div", {
155
+ className: "relative flex items-center text-sm text-gray-500 min-h-[34px]",
156
+ children: [/* @__PURE__ */ jsx(Spinner, {
157
+ size: "xs",
158
+ variant: "default",
159
+ className: "absolute left-0"
160
+ }), /* @__PURE__ */ jsx("span", {
161
+ className: "ml-6",
162
+ children: t("Loading elements...")
163
+ })]
164
+ }),
165
+ selectedElements.length > 0 && /* @__PURE__ */ jsx("div", {
166
+ className: "flex flex-wrap gap-2",
167
+ children: selectedElements.map((element) => {
168
+ return /* @__PURE__ */ jsxs("div", {
169
+ className: cn("flex items-center gap-1.5", "border border-gray-200 rounded-lg text-sm", "px-2 py-1.5", "bg-[rgb(243,247,252)]", "shadow-sm"),
170
+ children: [/* @__PURE__ */ jsxs("div", {
171
+ className: "flex items-center gap-2",
172
+ children: [element.status && /* @__PURE__ */ jsx(Status, { status: element.status }), /* @__PURE__ */ jsx("a", {
173
+ href: element.url,
174
+ children: /* @__PURE__ */ jsx("span", { children: element.label })
175
+ })]
176
+ }), /* @__PURE__ */ jsx(Button, {
177
+ type: "button",
178
+ variant: "transparent",
179
+ size: "xs",
180
+ onClick: () => {
181
+ return removeElement(element.id);
182
+ },
183
+ className: cn("-mr-1"),
184
+ "aria-label": t("Remove element"),
185
+ children: /* @__PURE__ */ jsx(FontAwesomeIcon, {
186
+ icon: faXmark,
187
+ className: "size-[15px]"
188
+ })
189
+ })]
190
+ }, `${element.id}-${element.siteId}`);
191
+ })
192
+ }),
193
+ (!field.limit || selectedElements.length < field.limit) && !isLoading && /* @__PURE__ */ jsxs(Button, {
194
+ type: "button",
195
+ variant: "dashed",
196
+ "aria-label": t("Choose"),
197
+ className: cn("pl-1.5", errors.length > 0 && ["border-rose-600!", "focus-visible:shadow-[0_0_0_1px_var(--color-rose-600),0_0_4px_0_hsl(from_var(--color-rose-600)_h_s_l/0.7)]!"]),
198
+ onClick: handleButtonClick,
199
+ children: [
200
+ /* @__PURE__ */ jsx(FontAwesomeIcon, {
201
+ icon: faPlus,
202
+ className: "size-[16px]"
203
+ }),
204
+ " ",
205
+ t("Choose")
206
+ ]
207
+ })
208
+ ]
209
+ })
210
+ });
211
+ };
212
+ //#endregion
213
+ export { ElementSelectField };
214
+
215
+ //# sourceMappingURL=ElementSelectField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElementSelectField.js","names":[],"sources":["../../../src/forms/fields/ElementSelectField.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { Button, Spinner, Status } from '@verbb/plugin-kit-react/components';\nimport { FieldLayout } from '../Field';\nimport type { SchemaFormEngineApi } from '../engine/context';\nimport useElementStore from '../store/element-store';\nimport { useTranslation } from '@verbb/plugin-kit-react/hooks';\nimport {\n cn,\n hostOpenElementSelector,\n hostRequest,\n} from '@verbb/plugin-kit-react/utils';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faPlus, faXmark } from '@fortawesome/pro-solid-svg-icons';\n\ntype ElementSelectFieldProps = {\n form: SchemaFormEngineApi;\n field: {\n name: string;\n label?: string;\n instructions?: string;\n warning?: string;\n required?: boolean;\n elementType?: string;\n sources?: string[];\n criteria?: Record<string, unknown>;\n limit?: number;\n elementSelectOptionsAction?: string;\n elementSelectStorageKeyPrefix?: string;\n };\n};\n\ntype Element = {\n id: number;\n siteId: number;\n label: string;\n url: string | null;\n status: string | null;\n elementType: string;\n};\n\ntype ElementReference = {\n id: number;\n siteId: number;\n};\n\ntype HostElementDataAccessor = {\n data: (key: string) => unknown;\n};\n\ntype HostSelectedElement = {\n id: number;\n siteId: number;\n label: string;\n status?: string | null;\n $element?: HostElementDataAccessor;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n};\n\nconst isElementReference = (value: unknown): value is ElementReference => {\n return isRecord(value) && typeof value.id === 'number' && typeof value.siteId === 'number';\n};\n\nconst normalizeSelectedElement = (element: HostSelectedElement, elementType: string): Element => {\n const url = typeof element.$element?.data === 'function'\n ? element.$element.data('cp-url')\n : null;\n\n return {\n id: element.id,\n siteId: element.siteId,\n label: element.label,\n url: typeof url === 'string' ? url : null,\n status: element.status ?? null,\n elementType,\n };\n};\n\nconst normalizeStoredElement = (value: unknown, elementType: string): Element | null => {\n if (!isRecord(value) || typeof value.id !== 'number' || typeof value.siteId !== 'number') {\n return null;\n }\n\n return {\n id: value.id,\n siteId: value.siteId,\n label: typeof value.label === 'string' ? value.label : `Element ${value.id}`,\n url: typeof value.url === 'string' ? value.url : null,\n status: typeof value.status === 'string' ? value.status : null,\n elementType: typeof value.elementType === 'string' ? value.elementType : elementType,\n };\n};\n\nexport const ElementSelectField = ({ form, field }: ElementSelectFieldProps) => {\n const [isLoading, setIsLoading] = useState(false);\n const { getElementData, setElementData, hasElementData } = useElementStore();\n const t = useTranslation();\n const selectedElements = getElementData<Element[]>(field.name) || [];\n const errors = form?.getErrorMapFields?.()[field.name] || [];\n const { elementSelectOptionsAction } = field;\n const { elementSelectStorageKeyPrefix } = field;\n\n const handleButtonClick = () => {\n const elementType = field.elementType || 'craft\\\\elements\\\\Entry';\n\n if (!elementSelectStorageKeyPrefix) {\n throw new Error(`ElementSelectField requires \"elementSelectStorageKeyPrefix\" for \"${field.name}\".`);\n }\n\n hostOpenElementSelector(elementType, {\n storageKey: `${elementSelectStorageKeyPrefix}.${field.name}.${elementType}`,\n sources: field.sources || ['*'],\n criteria: field.criteria || {},\n multiSelect: field.limit ? false : true,\n limit: field.limit || null,\n autoFocusSearchBox: false,\n onShow: () => {\n document.body.style.pointerEvents = '';\n },\n onSelect: (elements: HostSelectedElement[]) => {\n const newElements = elements.map((element) => {\n return normalizeSelectedElement(element, elementType);\n });\n\n const updatedElements = [...selectedElements, ...newElements];\n setElementData(field.name, updatedElements);\n\n const formValue = updatedElements.map((element) => {\n return { id: element.id, siteId: element.siteId };\n });\n\n form.setFieldValue(field.name, formValue);\n },\n closeOtherModals: false,\n });\n };\n\n const removeElement = (elementId: number) => {\n const updatedElements = selectedElements.filter((el) => { return el.id !== elementId; });\n setElementData(field.name, updatedElements);\n\n const formValue = updatedElements.map((element) => {\n return { id: element.id, siteId: element.siteId };\n });\n\n form.setFieldValue(field.name, formValue);\n };\n\n useEffect(() => {\n const loadElements = async() => {\n if (field.name && !hasElementData(field.name)) {\n const currentValue = form.getFieldValue(field.name);\n\n if (currentValue && Array.isArray(currentValue) && currentValue.length > 0) {\n const currentReferences = currentValue.filter(isElementReference);\n if (!currentReferences.length) {\n return;\n }\n\n setIsLoading(true);\n\n try {\n if (!elementSelectOptionsAction) {\n throw new Error(`ElementSelectField requires \"elementSelectOptionsAction\" for \"${field.name}\".`);\n }\n\n const response = await hostRequest('POST', elementSelectOptionsAction, {\n data: { elements: currentReferences },\n });\n\n if (response.data && Array.isArray(response.data)) {\n const normalizedElements = response.data\n .map((item) => { return normalizeStoredElement(item, field.elementType || 'craft\\\\elements\\\\Entry'); })\n .filter((item): item is Element => {\n return item !== null;\n });\n setElementData(field.name, normalizedElements);\n }\n } catch {\n const fallbackElements: Element[] = currentReferences.map((item) => {\n return {\n id: item.id,\n siteId: item.siteId,\n label: `Element ${item.id}`,\n url: null,\n status: null,\n elementType: field.elementType || 'craft\\\\elements\\\\Entry',\n };\n });\n setElementData(field.name, fallbackElements);\n } finally {\n setIsLoading(false);\n }\n }\n }\n };\n\n loadElements();\n }, [form, field.name, field.elementType, elementSelectOptionsAction, getElementData, setElementData, hasElementData]);\n\n return (\n <FieldLayout\n name={field.name}\n label={field.label}\n instructions={field.instructions}\n warning={field.warning}\n required={field.required}\n errors={errors}\n withControl={false}\n >\n <div className=\"space-y-3\">\n {isLoading && (\n <div className=\"relative flex items-center text-sm text-gray-500 min-h-[34px]\">\n <Spinner size=\"xs\" variant=\"default\" className=\"absolute left-0\" />\n <span className=\"ml-6\">{t('Loading elements...')}</span>\n </div>\n )}\n\n {selectedElements.length > 0 && (\n <div className=\"flex flex-wrap gap-2\">\n {selectedElements.map((element) => {\n return (\n <div\n key={`${element.id}-${element.siteId}`}\n className={cn(\n 'flex items-center gap-1.5',\n 'border border-gray-200 rounded-lg text-sm',\n 'px-2 py-1.5',\n 'bg-[rgb(243,247,252)]',\n 'shadow-sm',\n )}\n >\n <div className=\"flex items-center gap-2\">\n {element.status && <Status status={element.status} />}\n <a href={element.url}>\n <span>{element.label}</span>\n </a>\n </div>\n\n <Button\n type=\"button\"\n variant=\"transparent\"\n size=\"xs\"\n onClick={() => { return removeElement(element.id); }}\n className={cn('-mr-1')}\n aria-label={t('Remove element')}\n >\n <FontAwesomeIcon icon={faXmark} className=\"size-[15px]\" />\n </Button>\n </div>\n );\n })}\n </div>\n )}\n\n {(!field.limit || selectedElements.length < field.limit) && !isLoading && (\n <Button\n type=\"button\"\n variant=\"dashed\"\n aria-label={t('Choose')}\n className={cn(\n 'pl-1.5',\n errors.length > 0 && [\n 'border-rose-600!',\n 'focus-visible:shadow-[0_0_0_1px_var(--color-rose-600),0_0_4px_0_hsl(from_var(--color-rose-600)_h_s_l/0.7)]!',\n ],\n )}\n onClick={handleButtonClick}\n >\n <FontAwesomeIcon icon={faPlus} className=\"size-[16px]\" /> {t('Choose')}\n </Button>\n )}\n </div>\n </FieldLayout>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { ReactNode } from 'react';
2
+ import { SchemaFormEngineApi } from '../engine/context';
3
+ import { SchemaRenderable } from '../engine/SchemaIndex';
4
+ type GroupFieldProps = {
5
+ form: SchemaFormEngineApi;
6
+ field: {
7
+ name?: string;
8
+ label?: string;
9
+ instructions?: string;
10
+ warning?: string;
11
+ required?: boolean;
12
+ schema?: SchemaRenderable;
13
+ children?: SchemaRenderable;
14
+ };
15
+ children?: ReactNode;
16
+ };
17
+ export declare const GroupField: ({ form, field, children }: GroupFieldProps) => import("react/jsx-runtime").JSX.Element | null;
18
+ export {};
19
+ //# sourceMappingURL=GroupField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupField.d.ts","sourceRoot":"","sources":["../../../src/forms/fields/GroupField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAc,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE1E,KAAK,eAAe,GAAG;IACnB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,MAAM,CAAC,EAAE,gBAAgB,CAAC;QAC1B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;KAC/B,CAAC;IACF,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB,CAAC;AAsCF,eAAO,MAAM,UAAU,GAAI,2BAA2B,eAAe,mDAsCpE,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { FieldLayout } from "../Field.js";
2
+ import { useMemo } from "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/forms/fields/GroupField.tsx
5
+ var prefixGroupSchema = (schema, prefix, scopePath) => {
6
+ if (Array.isArray(schema)) return schema.map((item) => {
7
+ return prefixGroupSchema(item, prefix, scopePath);
8
+ });
9
+ if (!schema || typeof schema !== "object") return schema;
10
+ const nextSchema = { ...schema };
11
+ if (typeof scopePath === "string" && scopePath && !nextSchema._scopePath) nextSchema._scopePath = scopePath;
12
+ if (typeof nextSchema.name === "string" && nextSchema.name && nextSchema.$field) nextSchema.name = `${prefix}${nextSchema.name}`;
13
+ if (nextSchema.$field !== "group") {
14
+ if (Array.isArray(nextSchema.schema)) nextSchema.schema = prefixGroupSchema(nextSchema.schema, prefix, scopePath);
15
+ if (Array.isArray(nextSchema.children)) nextSchema.children = prefixGroupSchema(nextSchema.children, prefix, scopePath);
16
+ }
17
+ return nextSchema;
18
+ };
19
+ var GroupField = ({ form, field, children }) => {
20
+ const Renderer = form?.SchemaRenderer;
21
+ const prefix = field.name ? `${field.name}.` : "";
22
+ const scopedSchema = useMemo(() => {
23
+ const schema = field.schema ?? field.children ?? children ?? [];
24
+ if (!prefix) return schema;
25
+ return prefixGroupSchema(schema, prefix, field.name || "");
26
+ }, [
27
+ children,
28
+ field.children,
29
+ field.name,
30
+ field.schema,
31
+ prefix
32
+ ]);
33
+ if (!Renderer) return null;
34
+ const errors = field.name ? form?.getGroupedErrorsForPath?.(field.name) ?? form?.getErrorMapFields?.()[field.name] ?? [] : [];
35
+ if (field.label || field.instructions || field.warning) return /* @__PURE__ */ jsx(FieldLayout, {
36
+ name: field.name || "group",
37
+ label: field.label,
38
+ instructions: field.instructions,
39
+ warning: field.warning,
40
+ required: field.required,
41
+ errors,
42
+ withControl: false,
43
+ children: /* @__PURE__ */ jsx(Renderer, { schema: scopedSchema })
44
+ });
45
+ return /* @__PURE__ */ jsx(Renderer, { schema: scopedSchema });
46
+ };
47
+ //#endregion
48
+ export { GroupField };
49
+
50
+ //# sourceMappingURL=GroupField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupField.js","names":[],"sources":["../../../src/forms/fields/GroupField.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport { FieldLayout } from '../Field';\nimport type { SchemaFormEngineApi } from '../engine/context';\nimport type { SchemaNode, SchemaRenderable } from '../engine/SchemaIndex';\n\ntype GroupFieldProps = {\n form: SchemaFormEngineApi;\n field: {\n name?: string;\n label?: string;\n instructions?: string;\n warning?: string;\n required?: boolean;\n schema?: SchemaRenderable;\n children?: SchemaRenderable;\n };\n children?: ReactNode;\n};\n\nconst prefixGroupSchema = (schema: SchemaRenderable, prefix: string, scopePath: string): SchemaRenderable => {\n if (Array.isArray(schema)) {\n return schema.map((item) => {\n return prefixGroupSchema(item, prefix, scopePath);\n });\n }\n\n if (!schema || typeof schema !== 'object') {\n return schema;\n }\n\n const nextSchema: SchemaNode = { ...schema };\n const hasScope = typeof scopePath === 'string' && scopePath;\n\n if (hasScope && !nextSchema._scopePath) {\n nextSchema._scopePath = scopePath;\n }\n\n if (typeof nextSchema.name === 'string' && nextSchema.name && nextSchema.$field) {\n nextSchema.name = `${prefix}${nextSchema.name}`;\n }\n\n // Let nested group fields scope their own descendants to avoid double-prefixing.\n if (nextSchema.$field !== 'group') {\n if (Array.isArray(nextSchema.schema)) {\n nextSchema.schema = prefixGroupSchema(nextSchema.schema, prefix, scopePath);\n }\n\n if (Array.isArray(nextSchema.children)) {\n nextSchema.children = prefixGroupSchema(nextSchema.children, prefix, scopePath);\n }\n }\n\n return nextSchema;\n};\n\nexport const GroupField = ({ form, field, children }: GroupFieldProps) => {\n const Renderer = form?.SchemaRenderer;\n const prefix = field.name ? `${field.name}.` : '';\n const scopedSchema = useMemo(() => {\n const schema = field.schema ?? field.children ?? children ?? [];\n\n if (!prefix) {\n return schema;\n }\n\n return prefixGroupSchema(schema, prefix, field.name || '');\n }, [children, field.children, field.name, field.schema, prefix]);\n\n if (!Renderer) {\n return null;\n }\n\n const errors = field.name\n ? form?.getGroupedErrorsForPath?.(field.name) ?? form?.getErrorMapFields?.()[field.name] ?? []\n : [];\n\n if (field.label || field.instructions || field.warning) {\n return (\n <FieldLayout\n name={field.name || 'group'}\n label={field.label}\n instructions={field.instructions}\n warning={field.warning}\n required={field.required}\n errors={errors}\n withControl={false}\n >\n <Renderer schema={scopedSchema} />\n </FieldLayout>\n );\n }\n\n return <Renderer schema={scopedSchema} />;\n};\n"],"mappings":";;;;AAoBA,IAAM,qBAAqB,QAA0B,QAAgB,cAAwC;AACzG,KAAI,MAAM,QAAQ,OAAO,CACrB,QAAO,OAAO,KAAK,SAAS;AACxB,SAAO,kBAAkB,MAAM,QAAQ,UAAU;GACnD;AAGN,KAAI,CAAC,UAAU,OAAO,WAAW,SAC7B,QAAO;CAGX,MAAM,aAAyB,EAAE,GAAG,QAAQ;AAG5C,KAFiB,OAAO,cAAc,YAAY,aAElC,CAAC,WAAW,WACxB,YAAW,aAAa;AAG5B,KAAI,OAAO,WAAW,SAAS,YAAY,WAAW,QAAQ,WAAW,OACrE,YAAW,OAAO,GAAG,SAAS,WAAW;AAI7C,KAAI,WAAW,WAAW,SAAS;AAC/B,MAAI,MAAM,QAAQ,WAAW,OAAO,CAChC,YAAW,SAAS,kBAAkB,WAAW,QAAQ,QAAQ,UAAU;AAG/E,MAAI,MAAM,QAAQ,WAAW,SAAS,CAClC,YAAW,WAAW,kBAAkB,WAAW,UAAU,QAAQ,UAAU;;AAIvF,QAAO;;AAGX,IAAa,cAAc,EAAE,MAAM,OAAO,eAAgC;CACtE,MAAM,WAAW,MAAM;CACvB,MAAM,SAAS,MAAM,OAAO,GAAG,MAAM,KAAK,KAAK;CAC/C,MAAM,eAAe,cAAc;EAC/B,MAAM,SAAS,MAAM,UAAU,MAAM,YAAY,YAAY,EAAE;AAE/D,MAAI,CAAC,OACD,QAAO;AAGX,SAAO,kBAAkB,QAAQ,QAAQ,MAAM,QAAQ,GAAG;IAC3D;EAAC;EAAU,MAAM;EAAU,MAAM;EAAM,MAAM;EAAQ;EAAO,CAAC;AAEhE,KAAI,CAAC,SACD,QAAO;CAGX,MAAM,SAAS,MAAM,OACf,MAAM,0BAA0B,MAAM,KAAK,IAAI,MAAM,qBAAqB,CAAC,MAAM,SAAS,EAAE,GAC5F,EAAE;AAER,KAAI,MAAM,SAAS,MAAM,gBAAgB,MAAM,QAC3C,QACI,oBAAC,aAAD;EACI,MAAM,MAAM,QAAQ;EACpB,OAAO,MAAM;EACb,cAAc,MAAM;EACpB,SAAS,MAAM;EACf,UAAU,MAAM;EACR;EACR,aAAa;YAEb,oBAAC,UAAD,EAAU,QAAQ,cAAgB,CAAA;EACxB,CAAA;AAItB,QAAO,oBAAC,UAAD,EAAU,QAAQ,cAAgB,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { SchemaFormEngineApi } from '../engine/context';
2
+ type HandleFieldProps = {
3
+ form: SchemaFormEngineApi;
4
+ field: {
5
+ name: string;
6
+ label?: string;
7
+ instructions?: string;
8
+ warning?: string;
9
+ placeholder?: string;
10
+ source?: string;
11
+ reservedHandles?: string[];
12
+ reservedFieldValues?: string[];
13
+ maxLength?: number;
14
+ required?: boolean;
15
+ disabled?: boolean;
16
+ };
17
+ };
18
+ export declare const HandleField: ({ form, field }: HandleFieldProps) => import("react/jsx-runtime").JSX.Element;
19
+ export {};
20
+ //# sourceMappingURL=HandleField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandleField.d.ts","sourceRoot":"","sources":["../../../src/forms/fields/HandleField.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG7D,KAAK,gBAAgB,GAAG;IACpB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;CACL,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,iBAAiB,gBAAgB,4CAqE5D,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { cn } from "../../utils/classes.js";
2
+ import { buildUniqueHandleFromSource } from "../../utils/handle.js";
3
+ import "../../utils/index.js";
4
+ import { Input } from "../../components/Input.js";
5
+ import "../../components/index.js";
6
+ import { FieldLayout } from "../Field.js";
7
+ import { useEngineField } from "../useEngineField.js";
8
+ import { useState } from "react";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+ //#region src/forms/fields/HandleField.tsx
11
+ var HandleField = ({ form, field }) => {
12
+ const { value, setValue, setTouched, errors, isInvalid } = useEngineField(form, field.name);
13
+ const [rotate, setRotate] = useState(0);
14
+ const refreshHandle = (e) => {
15
+ e.preventDefault();
16
+ if (field.disabled) return;
17
+ setRotate((current) => {
18
+ return current + 180;
19
+ });
20
+ if (!field.source) return;
21
+ setValue(buildUniqueHandleFromSource({
22
+ sourceValue: form.getFieldValue(field.source),
23
+ values: form.store.state.values ?? {},
24
+ reservedHandles: field.reservedHandles || [],
25
+ reservedFieldValues: field.reservedFieldValues || [],
26
+ maxLength: field.maxLength
27
+ }));
28
+ };
29
+ return /* @__PURE__ */ jsx(FieldLayout, {
30
+ name: field.name,
31
+ label: field.label,
32
+ instructions: field.instructions,
33
+ warning: field.warning,
34
+ required: field.required,
35
+ errors,
36
+ children: /* @__PURE__ */ jsxs("div", {
37
+ className: "relative",
38
+ children: [/* @__PURE__ */ jsx(Input, {
39
+ value: String(value ?? ""),
40
+ onChange: (event) => {
41
+ return setValue(event.target.value);
42
+ },
43
+ onBlur: setTouched,
44
+ placeholder: field.placeholder,
45
+ disabled: field.disabled,
46
+ "aria-invalid": isInvalid,
47
+ className: "font-mono text-[13px]"
48
+ }), /* @__PURE__ */ jsx("div", {
49
+ className: cn("absolute top-1/2 right-0 p-[7px_10px]", field.disabled ? "opacity-30 cursor-not-allowed" : "opacity-50 hover:opacity-100", "text-[#606d7b]", "transition-all duration-200 ease-in-out", "select-none", "transform", "transition-transform duration-500 ease-in-out", "[&>svg]:w-3.5 [&>svg]:h-3.5 [&>svg]:block"),
50
+ style: { transform: `translateY(-50%) rotate(${rotate}deg)` },
51
+ onClick: refreshHandle,
52
+ children: /* @__PURE__ */ jsx("svg", {
53
+ "aria-hidden": "true",
54
+ focusable: "false",
55
+ role: "img",
56
+ xmlns: "http://www.w3.org/2000/svg",
57
+ viewBox: "0 0 512 512",
58
+ children: /* @__PURE__ */ jsx("path", {
59
+ fill: "currentColor",
60
+ d: "M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z"
61
+ })
62
+ })
63
+ })]
64
+ })
65
+ });
66
+ };
67
+ //#endregion
68
+ export { HandleField };
69
+
70
+ //# sourceMappingURL=HandleField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandleField.js","names":[],"sources":["../../../src/forms/fields/HandleField.tsx"],"sourcesContent":["import { Input } from '@verbb/plugin-kit-react/components';\nimport { buildUniqueHandleFromSource, cn } from '@verbb/plugin-kit-react/utils';\nimport { MouseEvent, useState } from 'react';\nimport { FieldLayout } from '../Field';\nimport type { SchemaFormEngineApi } from '../engine/context';\nimport { useEngineField } from '../useEngineField';\n\ntype HandleFieldProps = {\n form: SchemaFormEngineApi;\n field: {\n name: string;\n label?: string;\n instructions?: string;\n warning?: string;\n placeholder?: string;\n source?: string;\n reservedHandles?: string[];\n reservedFieldValues?: string[];\n maxLength?: number;\n required?: boolean;\n disabled?: boolean;\n };\n};\n\nexport const HandleField = ({ form, field }: HandleFieldProps) => {\n const {\n value, setValue, setTouched, errors, isInvalid,\n } = useEngineField(form, field.name);\n const [rotate, setRotate] = useState(0);\n\n const refreshHandle = (e: MouseEvent) => {\n e.preventDefault();\n\n if (field.disabled) {\n return;\n }\n\n setRotate((current) => { return current + 180; });\n\n if (!field.source) {\n return;\n }\n\n const uniqueHandle = buildUniqueHandleFromSource({\n sourceValue: form.getFieldValue(field.source),\n values: form.store.state.values ?? {},\n reservedHandles: field.reservedHandles || [],\n reservedFieldValues: field.reservedFieldValues || [],\n maxLength: field.maxLength,\n });\n setValue(uniqueHandle);\n };\n\n return (\n <FieldLayout\n name={field.name}\n label={field.label}\n instructions={field.instructions}\n warning={field.warning}\n required={field.required}\n errors={errors}\n >\n <div className=\"relative\">\n <Input\n value={String(value ?? '')}\n onChange={(event) => { return setValue(event.target.value); }}\n onBlur={setTouched}\n placeholder={field.placeholder}\n disabled={field.disabled}\n aria-invalid={isInvalid}\n className=\"font-mono text-[13px]\"\n />\n <div\n className={cn(\n 'absolute top-1/2 right-0 p-[7px_10px]',\n field.disabled ? 'opacity-30 cursor-not-allowed' : 'opacity-50 hover:opacity-100',\n 'text-[#606d7b]',\n 'transition-all duration-200 ease-in-out',\n 'select-none',\n 'transform',\n 'transition-transform duration-500 ease-in-out',\n '[&>svg]:w-3.5 [&>svg]:h-3.5 [&>svg]:block',\n )}\n style={{ transform: `translateY(-50%) rotate(${rotate}deg)` }}\n onClick={refreshHandle}\n >\n <svg aria-hidden=\"true\" focusable=\"false\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path fill=\"currentColor\" d=\"M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z\" />\n </svg>\n </div>\n </div>\n </FieldLayout>\n );\n};\n"],"mappings":";;;;;;;;;;AAwBA,IAAa,eAAe,EAAE,MAAM,YAA8B;CAC9D,MAAM,EACF,OAAO,UAAU,YAAY,QAAQ,cACrC,eAAe,MAAM,MAAM,KAAK;CACpC,MAAM,CAAC,QAAQ,aAAa,SAAS,EAAE;CAEvC,MAAM,iBAAiB,MAAkB;AACrC,IAAE,gBAAgB;AAElB,MAAI,MAAM,SACN;AAGJ,aAAW,YAAY;AAAE,UAAO,UAAU;IAAO;AAEjD,MAAI,CAAC,MAAM,OACP;AAUJ,WAPqB,4BAA4B;GAC7C,aAAa,KAAK,cAAc,MAAM,OAAO;GAC7C,QAAQ,KAAK,MAAM,MAAM,UAAU,EAAE;GACrC,iBAAiB,MAAM,mBAAmB,EAAE;GAC5C,qBAAqB,MAAM,uBAAuB,EAAE;GACpD,WAAW,MAAM;GACpB,CACQ,CAAa;;AAG1B,QACI,oBAAC,aAAD;EACI,MAAM,MAAM;EACZ,OAAO,MAAM;EACb,cAAc,MAAM;EACpB,SAAS,MAAM;EACf,UAAU,MAAM;EACR;YAER,qBAAC,OAAD;GAAK,WAAU;aAAf,CACI,oBAAC,OAAD;IACI,OAAO,OAAO,SAAS,GAAG;IAC1B,WAAW,UAAU;AAAE,YAAO,SAAS,MAAM,OAAO,MAAM;;IAC1D,QAAQ;IACR,aAAa,MAAM;IACnB,UAAU,MAAM;IAChB,gBAAc;IACd,WAAU;IACZ,CAAA,EACF,oBAAC,OAAD;IACI,WAAW,GACP,yCACA,MAAM,WAAW,kCAAkC,gCACnD,kBACA,2CACA,eACA,aACA,iDACA,4CACH;IACD,OAAO,EAAE,WAAW,2BAA2B,OAAO,OAAO;IAC7D,SAAS;cAET,oBAAC,OAAD;KAAK,eAAY;KAAO,WAAU;KAAQ,MAAK;KAAM,OAAM;KAA6B,SAAQ;eAC5F,oBAAC,QAAD;MAAM,MAAK;MAAe,GAAE;MAAwnB,CAAA;KAClpB,CAAA;IACJ,CAAA,CACJ;;EACI,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { SchemaFormEngineApi } from '../engine/context';
2
+ type LightswitchFieldProps = {
3
+ form: SchemaFormEngineApi;
4
+ field: {
5
+ name: string;
6
+ label?: string;
7
+ instructions?: string;
8
+ warning?: string;
9
+ required?: boolean;
10
+ };
11
+ };
12
+ export declare const LightswitchField: ({ form, field }: LightswitchFieldProps) => import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=LightswitchField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LightswitchField.d.ts","sourceRoot":"","sources":["../../../src/forms/fields/LightswitchField.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG7D,KAAK,qBAAqB,GAAG;IACzB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;CACL,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,iBAAiB,qBAAqB,4CAoBtE,CAAC"}