@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,42 @@
1
+ import { hostGetLocale, hostGetTimepickerOptions } from "./hostBridge.js";
2
+ //#region src/utils/timeOptions.ts
3
+ var timeOptionsCache = null;
4
+ var generateTimeOptions = () => {
5
+ if (timeOptionsCache) return timeOptionsCache;
6
+ const options = [];
7
+ const timepickerOptions = hostGetTimepickerOptions() || {};
8
+ const lang = timepickerOptions.lang || {
9
+ AM: "AM",
10
+ PM: "PM"
11
+ };
12
+ const timeFormat = timepickerOptions.timeFormat || "g:i A";
13
+ for (let hour = 0; hour < 24; hour++) for (let minute = 0; minute < 60; minute += 30) {
14
+ const timeString = `${hour.toString().padStart(2, "0")}:${minute.toString().padStart(2, "0")}`;
15
+ let displayTime;
16
+ if (timeFormat === "g:i A") {
17
+ let displayHour = hour;
18
+ if (hour === 0) displayHour = 12;
19
+ else if (hour > 12) displayHour = hour - 12;
20
+ const ampm = hour >= 12 ? lang.PM : lang.AM;
21
+ displayTime = `${displayHour}:${minute.toString().padStart(2, "0")} ${ampm}`;
22
+ } else if (timeFormat === "G:i") displayTime = timeString;
23
+ else displayTime = (/* @__PURE__ */ new Date(`2000-01-01T${timeString}:00`)).toLocaleTimeString(hostGetLocale() || "en-US", {
24
+ hour: "numeric",
25
+ minute: "2-digit",
26
+ hour12: timeFormat.includes("A")
27
+ });
28
+ options.push({
29
+ value: timeString,
30
+ label: displayTime
31
+ });
32
+ }
33
+ timeOptionsCache = options;
34
+ return options;
35
+ };
36
+ var clearTimeOptionsCache = () => {
37
+ timeOptionsCache = null;
38
+ };
39
+ //#endregion
40
+ export { clearTimeOptionsCache, generateTimeOptions };
41
+
42
+ //# sourceMappingURL=timeOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeOptions.js","names":[],"sources":["../../src/utils/timeOptions.ts"],"sourcesContent":["import { hostGetLocale, hostGetTimepickerOptions } from './hostBridge';\n\n// Cache for time options to avoid regenerating on every render\nlet timeOptionsCache: Array<{ value: string; label: string }> | null = null;\n\n// Generate time options in 30-minute increments starting from midnight\nexport const generateTimeOptions = (): Array<{ value: string; label: string }> => {\n // Return cached options if available\n if (timeOptionsCache) {\n return timeOptionsCache;\n }\n\n const options: Array<{ value: string; label: string }> = [];\n const timepickerOptions = hostGetTimepickerOptions() || {};\n const lang = timepickerOptions.lang || { AM: 'AM', PM: 'PM' };\n const timeFormat = timepickerOptions.timeFormat || 'g:i A';\n\n for (let hour = 0; hour < 24; hour++) {\n for (let minute = 0; minute < 60; minute += 30) {\n const timeString = `${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}`;\n\n // Use Craft's time formatting\n let displayTime: string;\n if (timeFormat === 'g:i A') {\n // 12-hour format with AM/PM\n let displayHour = hour;\n if (hour === 0) {\n displayHour = 12;\n } else if (hour > 12) {\n displayHour = hour - 12;\n }\n const ampm = hour >= 12 ? lang.PM : lang.AM;\n displayTime = `${displayHour}:${minute.toString().padStart(2, '0')} ${ampm}`;\n } else if (timeFormat === 'G:i') {\n // 24-hour format\n displayTime = timeString;\n } else {\n // Fallback to browser's locale formatting\n displayTime = new Date(`2000-01-01T${timeString}:00`).toLocaleTimeString(hostGetLocale() || 'en-US', {\n hour: 'numeric',\n minute: '2-digit',\n hour12: timeFormat.includes('A'),\n });\n }\n\n options.push({\n value: timeString,\n label: displayTime,\n });\n }\n }\n\n // Cache the result\n timeOptionsCache = options;\n return options;\n};\n\n// Clear cache (useful for testing or if Craft settings change)\nexport const clearTimeOptionsCache = (): void => {\n timeOptionsCache = null;\n};\n"],"mappings":";;AAGA,IAAI,mBAAmE;AAGvE,IAAa,4BAAqE;AAE9E,KAAI,iBACA,QAAO;CAGX,MAAM,UAAmD,EAAE;CAC3D,MAAM,oBAAoB,0BAA0B,IAAI,EAAE;CAC1D,MAAM,OAAO,kBAAkB,QAAQ;EAAE,IAAI;EAAM,IAAI;EAAM;CAC7D,MAAM,aAAa,kBAAkB,cAAc;AAEnD,MAAK,IAAI,OAAO,GAAG,OAAO,IAAI,OAC1B,MAAK,IAAI,SAAS,GAAG,SAAS,IAAI,UAAU,IAAI;EAC5C,MAAM,aAAa,GAAG,KAAK,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,OAAO,UAAU,CAAC,SAAS,GAAG,IAAI;EAG5F,IAAI;AACJ,MAAI,eAAe,SAAS;GAExB,IAAI,cAAc;AAClB,OAAI,SAAS,EACT,eAAc;YACP,OAAO,GACd,eAAc,OAAO;GAEzB,MAAM,OAAO,QAAQ,KAAK,KAAK,KAAK,KAAK;AACzC,iBAAc,GAAG,YAAY,GAAG,OAAO,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG;aAC/D,eAAe,MAEtB,eAAc;MAGd,gCAAc,IAAI,KAAK,cAAc,WAAW,KAAK,EAAC,mBAAmB,eAAe,IAAI,SAAS;GACjG,MAAM;GACN,QAAQ;GACR,QAAQ,WAAW,SAAS,IAAI;GACnC,CAAC;AAGN,UAAQ,KAAK;GACT,OAAO;GACP,OAAO;GACV,CAAC;;AAKV,oBAAmB;AACnB,QAAO;;AAIX,IAAa,8BAAoC;AAC7C,oBAAmB"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Convert ProseMirror JSON content to HTML
3
+ * @param {Array} json - ProseMirror JSON content array
4
+ * @returns {string} - Generated HTML string
5
+ */
6
+ export declare const getRichTextHtml: (json: any) => any;
7
+ /**
8
+ * Extract plain text from ProseMirror JSON content
9
+ * @param {Array} json - ProseMirror JSON content array
10
+ * @returns {string} - Plain text string
11
+ */
12
+ export declare const getRichTextText: (json: any) => any;
13
+ //# sourceMappingURL=tiptap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiptap.d.ts","sourceRoot":"","sources":["../../src/utils/tiptap.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,SAAI,QAuBnC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,SAAI,QAmBnC,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { generateHTML } from "@tiptap/core";
2
+ import Document from "@tiptap/extension-document";
3
+ import Paragraph from "@tiptap/extension-paragraph";
4
+ import Text from "@tiptap/extension-text";
5
+ //#region src/utils/tiptap.ts
6
+ /**
7
+ * Convert ProseMirror JSON content to HTML
8
+ * @param {Array} json - ProseMirror JSON content array
9
+ * @returns {string} - Generated HTML string
10
+ */
11
+ var getRichTextHtml = (json) => {
12
+ if (!json) return "";
13
+ if (typeof json === "string") try {
14
+ json = JSON.parse(json);
15
+ } catch {
16
+ return json;
17
+ }
18
+ return generateHTML({
19
+ type: "doc",
20
+ content: json
21
+ }, [
22
+ Document,
23
+ Paragraph,
24
+ Text
25
+ ]);
26
+ };
27
+ /**
28
+ * Extract plain text from ProseMirror JSON content
29
+ * @param {Array} json - ProseMirror JSON content array
30
+ * @returns {string} - Plain text string
31
+ */
32
+ var getRichTextText = (json) => {
33
+ if (!json) return "";
34
+ return getRichTextHtml(json).replace(/<[^>]*>/g, " ").replace(/&nbsp;/g, " ").replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, "\"").replace(/&#39;/g, "'").replace(/\s+/g, " ").trim();
35
+ };
36
+ //#endregion
37
+ export { getRichTextHtml, getRichTextText };
38
+
39
+ //# sourceMappingURL=tiptap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiptap.js","names":[],"sources":["../../src/utils/tiptap.ts"],"sourcesContent":["import { generateHTML } from '@tiptap/core';\nimport Document from '@tiptap/extension-document';\nimport Paragraph from '@tiptap/extension-paragraph';\nimport Text from '@tiptap/extension-text';\n\n/**\n * Convert ProseMirror JSON content to HTML\n * @param {Array} json - ProseMirror JSON content array\n * @returns {string} - Generated HTML string\n */\nexport const getRichTextHtml = (json) => {\n if (!json) {\n return '';\n }\n\n if (typeof json === 'string') {\n // If this is json-encoded, try to parse it\n try {\n json = JSON.parse(json);\n } catch {\n // If it's not valid JSON, return the original string\n return json;\n }\n }\n\n return generateHTML({\n type: 'doc',\n content: json,\n }, [\n Document,\n Paragraph,\n Text,\n ]);\n};\n\n/**\n * Extract plain text from ProseMirror JSON content\n * @param {Array} json - ProseMirror JSON content array\n * @returns {string} - Plain text string\n */\nexport const getRichTextText = (json) => {\n if (!json) {\n return '';\n }\n\n // Generate HTML first\n const html = getRichTextHtml(json);\n\n // Strip HTML tags and decode entities\n return html\n .replace(/<[^>]*>/g, ' ') // Replace HTML tags with spaces\n .replace(/&nbsp;/g, ' ') // Replace non-breaking spaces\n .replace(/&amp;/g, '&') // Decode common HTML entities\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&quot;/g, '\"')\n .replace(/&#39;/g, \"'\")\n .replace(/\\s+/g, ' ') // Replace multiple spaces with single space\n .trim();\n};\n"],"mappings":";;;;;;;;;;AAUA,IAAa,mBAAmB,SAAS;AACrC,KAAI,CAAC,KACD,QAAO;AAGX,KAAI,OAAO,SAAS,SAEhB,KAAI;AACA,SAAO,KAAK,MAAM,KAAK;SACnB;AAEJ,SAAO;;AAIf,QAAO,aAAa;EAChB,MAAM;EACN,SAAS;EACZ,EAAE;EACC;EACA;EACA;EACH,CAAC;;;;;;;AAQN,IAAa,mBAAmB,SAAS;AACrC,KAAI,CAAC,KACD,QAAO;AAOX,QAHa,gBAAgB,KAGtB,CACF,QAAQ,YAAY,IAAI,CACxB,QAAQ,WAAW,IAAI,CACvB,QAAQ,UAAU,IAAI,CACtB,QAAQ,SAAS,IAAI,CACrB,QAAQ,SAAS,IAAI,CACrB,QAAQ,WAAW,KAAI,CACvB,QAAQ,UAAU,IAAI,CACtB,QAAQ,QAAQ,IAAI,CACpB,MAAM"}
@@ -0,0 +1,5 @@
1
+ export type TranslateParams = Record<string, string>;
2
+ export declare const setTranslationCategory: (category: string) => void;
3
+ export declare const setTranslateFunction: (fn?: (category: string, message: string, params?: TranslateParams) => string) => void;
4
+ export declare const translate: (message: string, params?: TranslateParams) => string;
5
+ //# sourceMappingURL=translation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translation.d.ts","sourceRoot":"","sources":["../../src/utils/translation.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAKrD,eAAO,MAAM,sBAAsB,GAAI,UAAU,MAAM,KAAG,IAEzD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,KAAK,MAAM,KAAG,IAEnH,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,SAAS,MAAM,EAAE,SAAS,eAAe,KAAG,MAcrE,CAAC"}
@@ -0,0 +1,21 @@
1
+ //#region src/utils/translation.ts
2
+ var translationCategory = "plugin-handle";
3
+ var translateFn;
4
+ var setTranslationCategory = (category) => {
5
+ translationCategory = category.trim() || "plugin-handle";
6
+ };
7
+ var setTranslateFunction = (fn) => {
8
+ translateFn = fn;
9
+ };
10
+ var translate = (message, params) => {
11
+ if (translateFn) return translateFn(translationCategory, message, params);
12
+ if (typeof window !== "undefined") {
13
+ const craft = window.Craft;
14
+ if (craft?.t) return craft.t(translationCategory, message, params);
15
+ }
16
+ return message;
17
+ };
18
+ //#endregion
19
+ export { setTranslateFunction, setTranslationCategory, translate };
20
+
21
+ //# sourceMappingURL=translation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translation.js","names":[],"sources":["../../src/utils/translation.ts"],"sourcesContent":["export type TranslateParams = Record<string, string>;\n\nlet translationCategory = 'plugin-handle';\nlet translateFn: ((category: string, message: string, params?: TranslateParams) => string) | undefined;\n\nexport const setTranslationCategory = (category: string): void => {\n translationCategory = category.trim() || 'plugin-handle';\n};\n\nexport const setTranslateFunction = (fn?: (category: string, message: string, params?: TranslateParams) => string): void => {\n translateFn = fn;\n};\n\nexport const translate = (message: string, params?: TranslateParams): string => {\n if (translateFn) {\n return translateFn(translationCategory, message, params);\n }\n\n if (typeof window !== 'undefined') {\n const craft = (window as { Craft?: { t?: (category: string, message: string, params?: TranslateParams) => string } }).Craft;\n\n if (craft?.t) {\n return craft.t(translationCategory, message, params);\n }\n }\n\n return message;\n};\n"],"mappings":";AAEA,IAAI,sBAAsB;AAC1B,IAAI;AAEJ,IAAa,0BAA0B,aAA2B;AAC9D,uBAAsB,SAAS,MAAM,IAAI;;AAG7C,IAAa,wBAAwB,OAAuF;AACxH,eAAc;;AAGlB,IAAa,aAAa,SAAiB,WAAqC;AAC5E,KAAI,YACA,QAAO,YAAY,qBAAqB,SAAS,OAAO;AAG5D,KAAI,OAAO,WAAW,aAAa;EAC/B,MAAM,QAAS,OAAuG;AAEtH,MAAI,OAAO,EACP,QAAO,MAAM,EAAE,qBAAqB,SAAS,OAAO;;AAI5D,QAAO"}
@@ -0,0 +1,4 @@
1
+ export declare function validateFormValues(schema: unknown, values: Record<string, unknown>): {
2
+ fields: Record<string, string[]>;
3
+ } | undefined;
4
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AA6VA,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CAAE,GAAG,SAAS,CA0GlD"}
@@ -0,0 +1,253 @@
1
+ import { translate } from "./translation.js";
2
+ import * as v from "valibot";
3
+ //#region src/utils/validation.ts
4
+ var isRecord = (value) => {
5
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
6
+ };
7
+ var parseRules = (field) => {
8
+ const tokens = (typeof field.validation === "string" ? field.validation : "").split("|").map((token) => {
9
+ return token.trim();
10
+ }).filter(Boolean);
11
+ const hasRequiredRule = tokens.some((rule) => {
12
+ return rule === "required" || rule.startsWith("required");
13
+ });
14
+ if (field.required && !hasRequiredRule) tokens.unshift("required");
15
+ return tokens.map((token) => {
16
+ const [name, ...rest] = token.split(":");
17
+ return {
18
+ name,
19
+ args: rest.length > 0 ? rest.join(":").split(",") : []
20
+ };
21
+ });
22
+ };
23
+ var isEmptyValue = (value) => {
24
+ if (value === void 0 || value === null) return true;
25
+ if (typeof value === "string") return value === "";
26
+ if (Array.isArray(value)) return value.length === 0;
27
+ return false;
28
+ };
29
+ var getValueSize = (value) => {
30
+ if (typeof value === "number") return value;
31
+ if (typeof value === "string") {
32
+ const trimmed = value.trim();
33
+ if (trimmed !== "" && Number.isFinite(Number(trimmed))) return Number(trimmed);
34
+ return value.length;
35
+ }
36
+ if (Array.isArray(value)) return value.length;
37
+ return NaN;
38
+ };
39
+ var collectFields = (node, prefix = "", fields = []) => {
40
+ if (!node) return fields;
41
+ if (Array.isArray(node)) {
42
+ node.forEach((child) => {
43
+ return collectFields(child, prefix, fields);
44
+ });
45
+ return fields;
46
+ }
47
+ if (!isRecord(node)) return fields;
48
+ if (node.$field === "list" && node.name) {
49
+ if (node.children) collectFields(node.children, `${prefix}${node.name}.*.`, fields);
50
+ return fields;
51
+ }
52
+ if (node.$field === "table" && node.name) {
53
+ fields.push({
54
+ ...node,
55
+ name: `${prefix}${node.name}`
56
+ });
57
+ if (!Array.isArray(node.columns)) return fields;
58
+ node.columns.forEach((column) => {
59
+ if (!column?.name) return;
60
+ if (column.type === "heading" || column.type === "label") return;
61
+ fields.push({
62
+ ...column,
63
+ name: `${prefix}${node.name}.*.${column.name}`
64
+ });
65
+ });
66
+ return fields;
67
+ }
68
+ if (node.$field && node.name) fields.push({
69
+ ...node,
70
+ name: `${prefix}${node.name}`
71
+ });
72
+ if (node.children) collectFields(node.children, prefix, fields);
73
+ return fields;
74
+ };
75
+ var collectTableDefinitions = (node, tables = {}) => {
76
+ if (!node) return tables;
77
+ if (Array.isArray(node)) {
78
+ node.forEach((child) => {
79
+ return collectTableDefinitions(child, tables);
80
+ });
81
+ return tables;
82
+ }
83
+ if (!isRecord(node)) return tables;
84
+ if (node.$field === "table" && node.name) {
85
+ const tableName = String(node.name);
86
+ const tableLabel = String(node.label || node.name);
87
+ const columns = {};
88
+ if (Array.isArray(node.columns)) node.columns.forEach((column) => {
89
+ if (!column?.name) return;
90
+ columns[String(column.name)] = String(column.label || column.name);
91
+ });
92
+ tables[tableName] = {
93
+ name: tableName,
94
+ label: tableLabel,
95
+ columns
96
+ };
97
+ }
98
+ if (node.children) collectTableDefinitions(node.children, tables);
99
+ return tables;
100
+ };
101
+ var expandWildcardPaths = (values, path) => {
102
+ if (!path.includes("*")) return [path];
103
+ const parts = path.split(".");
104
+ const results = [];
105
+ const walk = (current, index, acc) => {
106
+ if (index >= parts.length) {
107
+ results.push(acc.join("."));
108
+ return;
109
+ }
110
+ const part = parts[index];
111
+ if (part === "*") {
112
+ if (Array.isArray(current)) current.forEach((item, idx) => {
113
+ walk(item, index + 1, [...acc, String(idx)]);
114
+ });
115
+ return;
116
+ }
117
+ if (isRecord(current) && part in current) {
118
+ walk(current[part], index + 1, [...acc, part]);
119
+ return;
120
+ }
121
+ walk(void 0, index + 1, [...acc, part]);
122
+ };
123
+ walk(values, 0, []);
124
+ return results;
125
+ };
126
+ var getValueAtPath = (values, path) => {
127
+ if (!path) return;
128
+ return path.split(".").reduce((current, segment) => {
129
+ if (current === void 0 || current === null) return;
130
+ return current[Array.isArray(current) ? Number(segment) : segment];
131
+ }, values);
132
+ };
133
+ var emailRegex = /(^$|^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$)/;
134
+ var variableRegex = /({.*?})/;
135
+ var buildFieldSchema = (field, rules) => {
136
+ const label = String(field.label || field.name || "");
137
+ const isRequired = rules.some((rule) => {
138
+ return rule.name === "required";
139
+ });
140
+ const actions = [];
141
+ rules.forEach((rule) => {
142
+ const ruleName = rule.name;
143
+ const { args } = rule;
144
+ const maybeSkip = (value) => {
145
+ return !isRequired && isEmptyValue(value);
146
+ };
147
+ switch (ruleName) {
148
+ case "required":
149
+ actions.push(v.check((value) => {
150
+ return !isEmptyValue(value);
151
+ }, translate("{attribute} cannot be blank.", { attribute: label })));
152
+ break;
153
+ case "email":
154
+ actions.push(v.check((value) => {
155
+ if (maybeSkip(value)) return true;
156
+ return emailRegex.test(String(value));
157
+ }, translate("{attribute} must be a valid email address.", { attribute: label })));
158
+ break;
159
+ case "emailOrVariable":
160
+ actions.push(v.check((value) => {
161
+ if (maybeSkip(value)) return true;
162
+ const text = String(value);
163
+ return variableRegex.test(text) || emailRegex.test(text);
164
+ }, translate("{attribute} must be a valid email address or variable.", { attribute: label })));
165
+ break;
166
+ case "min": {
167
+ const min = Number(args[0]);
168
+ actions.push(v.check((value) => {
169
+ if (maybeSkip(value)) return true;
170
+ const size = getValueSize(value);
171
+ return Number.isFinite(size) ? size >= min : false;
172
+ }, translate("{attribute} must be at least {min}.", {
173
+ attribute: label,
174
+ min: String(args[0])
175
+ })));
176
+ break;
177
+ }
178
+ case "max": {
179
+ const max = Number(args[0]);
180
+ actions.push(v.check((value) => {
181
+ if (maybeSkip(value)) return true;
182
+ const size = getValueSize(value);
183
+ return Number.isFinite(size) ? size <= max : false;
184
+ }, translate("{attribute} must be at most {max}.", {
185
+ attribute: label,
186
+ max: String(args[0])
187
+ })));
188
+ break;
189
+ }
190
+ default: break;
191
+ }
192
+ });
193
+ return v.pipe(v.any(), ...actions);
194
+ };
195
+ function validateFormValues(schema, values) {
196
+ const normalizedValues = values && typeof values === "object" ? values : {};
197
+ const fields = collectFields(schema);
198
+ if (!fields.length) return;
199
+ const fieldErrors = {};
200
+ fields.forEach((field) => {
201
+ if (!field?.name) return;
202
+ const rules = parseRules(field);
203
+ if (!rules.length) return;
204
+ const validator = buildFieldSchema(field, rules);
205
+ expandWildcardPaths(normalizedValues, field.name).forEach((path) => {
206
+ const value = getValueAtPath(normalizedValues, path);
207
+ const result = v.safeParse(validator, value);
208
+ if (result.success) return;
209
+ const message = (result.issues || []).map((issue) => {
210
+ return issue.message;
211
+ }).filter(Boolean)[0];
212
+ if (message) fieldErrors[path] = [message];
213
+ });
214
+ });
215
+ const tableDefinitions = collectTableDefinitions(schema);
216
+ const formatColumnMessage = (message, label) => {
217
+ const trimmed = String(message || "").trim();
218
+ if (!trimmed) return label;
219
+ const match = trimmed.match(/^.+?(\s+(?:cannot|must|is)\b.*)$/i);
220
+ if (match) return `${label}${match[1]}`;
221
+ return `${label}: ${trimmed}`;
222
+ };
223
+ Object.entries(tableDefinitions).forEach(([tableName, definition]) => {
224
+ const nestedKeys = Object.keys(fieldErrors).filter((key) => {
225
+ return key.startsWith(`${tableName}.`);
226
+ });
227
+ if (nestedKeys.length === 0) return;
228
+ const columnErrors = {};
229
+ nestedKeys.forEach((key) => {
230
+ const columnName = key.match(new RegExp(`^${tableName}\\.\\d+\\.(.+)$`))?.[1];
231
+ if (!columnName) return;
232
+ const messages = fieldErrors[key] || [];
233
+ if (!messages.length) return;
234
+ if (!columnErrors[columnName]) columnErrors[columnName] = [];
235
+ columnErrors[columnName].push(...messages);
236
+ });
237
+ const columnMessages = Object.entries(columnErrors).flatMap(([columnName, messages]) => {
238
+ if (!messages.length) return [];
239
+ const columnLabel = definition.columns[columnName] || columnName;
240
+ const label = `${definition.label} - ${columnLabel}`;
241
+ const firstMessage = Array.from(new Set(messages))[0];
242
+ return firstMessage ? [formatColumnMessage(firstMessage, label)] : [];
243
+ });
244
+ if (!columnMessages.length) return;
245
+ const merged = new Set([...fieldErrors[tableName] || [], ...columnMessages]);
246
+ fieldErrors[tableName] = Array.from(merged);
247
+ });
248
+ return Object.keys(fieldErrors).length > 0 ? { fields: fieldErrors } : void 0;
249
+ }
250
+ //#endregion
251
+ export { validateFormValues };
252
+
253
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","names":[],"sources":["../../src/utils/validation.ts"],"sourcesContent":["import * as v from 'valibot';\nimport { translate } from '@verbb/plugin-kit-react/utils/translation';\n\n// ============================================================================\n// Valibot schema adapter\n// ============================================================================\n// We accept Laravel-style rule strings from Craft schema and turn them into\n// Valibot validation actions. This keeps the server-driven rules contract\n// while avoiding validatorjs' brittle attribute handling.\n\n// Minimal schema shape required to derive rules/labels.\ntype SchemaField = {\n name?: string;\n label?: string;\n required?: boolean;\n validation?: string;\n $field?: string;\n children?: SchemaValue;\n columns?: Array<SchemaField & { type?: string }>;\n};\n\ntype SchemaValue = SchemaField | SchemaValue[] | null | undefined;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n};\n\ntype RuleToken = {\n name: string;\n args: string[];\n};\n\nconst parseRules = (field: SchemaField): RuleToken[] => {\n const rawRules = typeof field.validation === 'string' ? field.validation : '';\n const tokens = rawRules\n .split('|')\n .map((token) => { return token.trim(); })\n .filter(Boolean);\n\n const hasRequiredRule = tokens.some((rule) => { return rule === 'required' || rule.startsWith('required'); });\n if (field.required && !hasRequiredRule) {\n tokens.unshift('required');\n }\n\n return tokens.map((token) => {\n const [name, ...rest] = token.split(':');\n const args = rest.length > 0 ? rest.join(':').split(',') : [];\n return { name, args };\n });\n};\n\nconst isEmptyValue = (value: unknown) => {\n if (value === undefined || value === null) {\n return true;\n }\n\n if (typeof value === 'string') {\n return value === '';\n }\n\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n\n return false;\n};\n\nconst getValueSize = (value: unknown) => {\n if (typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed !== '' && Number.isFinite(Number(trimmed))) {\n return Number(trimmed);\n }\n\n return value.length;\n }\n\n if (Array.isArray(value)) {\n return value.length;\n }\n\n return NaN;\n};\n\n// Walk schema nodes and collect all fields that can be validated.\n// - list fields: expand children using wildcard paths (`list.*.field`)\n// - table fields: validate the table itself (required / min rules), then each\n// column per row (`table.*.column`)\n// - default fields: just collect as-is\nconst collectFields = (node: SchemaValue, prefix = '', fields: SchemaField[] = []) => {\n if (!node) {\n return fields;\n }\n\n if (Array.isArray(node)) {\n node.forEach((child) => { return collectFields(child, prefix, fields); });\n return fields;\n }\n\n if (!isRecord(node)) {\n return fields;\n }\n\n if (node.$field === 'list' && node.name) {\n if (node.children) {\n collectFields(node.children, `${prefix}${node.name}.*.`, fields);\n }\n return fields;\n }\n\n if (node.$field === 'table' && node.name) {\n fields.push({\n ...node,\n name: `${prefix}${node.name}`,\n });\n\n if (!Array.isArray(node.columns)) {\n return fields;\n }\n\n node.columns.forEach((column: SchemaField & { type?: string }) => {\n if (!column?.name) {\n return;\n }\n\n if (column.type === 'heading' || column.type === 'label') {\n return;\n }\n\n fields.push({\n ...column,\n name: `${prefix}${node.name}.*.${column.name}`,\n });\n });\n\n return fields;\n }\n\n if (node.$field && node.name) {\n fields.push({\n ...node,\n name: `${prefix}${node.name}`,\n });\n }\n\n if (node.children) {\n collectFields(node.children, prefix, fields);\n }\n\n return fields;\n};\n\ntype TableDefinition = {\n name: string;\n label: string;\n columns: Record<string, string>;\n};\n\nconst collectTableDefinitions = (\n node: SchemaValue,\n tables: Record<string, TableDefinition> = {},\n): Record<string, TableDefinition> => {\n if (!node) {\n return tables;\n }\n\n if (Array.isArray(node)) {\n node.forEach((child) => { return collectTableDefinitions(child, tables); });\n return tables;\n }\n\n if (!isRecord(node)) {\n return tables;\n }\n\n if (node.$field === 'table' && node.name) {\n const tableName = String(node.name);\n const tableLabel = String(node.label || node.name);\n const columns: Record<string, string> = {};\n\n if (Array.isArray(node.columns)) {\n node.columns.forEach((column) => {\n if (!column?.name) {\n return;\n }\n\n columns[String(column.name)] = String(column.label || column.name);\n });\n }\n\n tables[tableName] = {\n name: tableName,\n label: tableLabel,\n columns,\n };\n }\n\n if (node.children) {\n collectTableDefinitions(node.children, tables);\n }\n\n return tables;\n};\n\nconst expandWildcardPaths = (values: Record<string, unknown>, path: string) => {\n if (!path.includes('*')) {\n return [path];\n }\n\n const parts = path.split('.');\n const results: string[] = [];\n\n const walk = (current: unknown, index: number, acc: string[]) => {\n if (index >= parts.length) {\n results.push(acc.join('.'));\n return;\n }\n\n const part = parts[index];\n if (part === '*') {\n if (Array.isArray(current)) {\n current.forEach((item, idx) => {\n walk(item, index + 1, [...acc, String(idx)]);\n });\n }\n return;\n }\n\n if (isRecord(current) && part in current) {\n walk(current[part], index + 1, [...acc, part]);\n return;\n }\n\n // Allow missing leaf keys so required rules still validate.\n walk(undefined, index + 1, [...acc, part]);\n };\n\n walk(values, 0, []);\n return results;\n};\n\nconst getValueAtPath = (values: Record<string, unknown>, path: string) => {\n if (!path) {\n return undefined;\n }\n\n return path.split('.').reduce<unknown>((current, segment) => {\n if (current === undefined || current === null) {\n return undefined;\n }\n\n const key = Array.isArray(current) ? Number(segment) : segment;\n return current[key as keyof typeof current];\n }, values);\n};\n\nconst emailRegex = /(^$|^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$)/;\nconst variableRegex = /({.*?})/;\n\nconst buildFieldSchema = (field: SchemaField, rules: RuleToken[]) => {\n const label = String(field.label || field.name || '');\n const isRequired = rules.some((rule) => { return rule.name === 'required'; });\n\n const actions = [];\n\n rules.forEach((rule) => {\n const ruleName = rule.name;\n const { args } = rule;\n\n const maybeSkip = (value: unknown) => {\n return !isRequired && isEmptyValue(value);\n };\n\n switch (ruleName) {\n case 'required':\n actions.push(v.check(\n (value) => { return !isEmptyValue(value); },\n translate('{attribute} cannot be blank.', { attribute: label }),\n ));\n break;\n\n case 'email':\n actions.push(v.check(\n (value) => {\n if (maybeSkip(value)) {\n return true;\n }\n return emailRegex.test(String(value));\n },\n translate('{attribute} must be a valid email address.', { attribute: label }),\n ));\n break;\n\n case 'emailOrVariable':\n actions.push(v.check(\n (value) => {\n if (maybeSkip(value)) {\n return true;\n }\n const text = String(value);\n return variableRegex.test(text) || emailRegex.test(text);\n },\n translate('{attribute} must be a valid email address or variable.', { attribute: label }),\n ));\n break;\n\n case 'min': {\n const min = Number(args[0]);\n actions.push(v.check(\n (value) => {\n if (maybeSkip(value)) {\n return true;\n }\n const size = getValueSize(value);\n return Number.isFinite(size) ? size >= min : false;\n },\n translate('{attribute} must be at least {min}.', { attribute: label, min: String(args[0]) }),\n ));\n break;\n }\n\n case 'max': {\n const max = Number(args[0]);\n actions.push(v.check(\n (value) => {\n if (maybeSkip(value)) {\n return true;\n }\n const size = getValueSize(value);\n return Number.isFinite(size) ? size <= max : false;\n },\n translate('{attribute} must be at most {max}.', { attribute: label, max: String(args[0]) }),\n ));\n break;\n }\n\n default:\n break;\n }\n });\n\n return v.pipe(v.any(), ...actions);\n};\n\n// Run Valibot and return TanStack Form–friendly error shape.\nexport function validateFormValues(\n schema: unknown,\n values: Record<string, unknown>,\n): { fields: Record<string, string[]> } | undefined {\n const normalizedValues = values && typeof values === 'object' ? values : {};\n const fields = collectFields(schema as SchemaValue);\n\n if (!fields.length) {\n return undefined;\n }\n\n const fieldErrors: Record<string, string[]> = {};\n\n fields.forEach((field) => {\n if (!field?.name) {\n return;\n }\n\n const rules = parseRules(field);\n if (!rules.length) {\n return;\n }\n\n const validator = buildFieldSchema(field, rules);\n const paths = expandWildcardPaths(normalizedValues, field.name);\n\n paths.forEach((path) => {\n const value = getValueAtPath(normalizedValues, path);\n const result = v.safeParse(validator, value);\n\n if (result.success) {\n return;\n }\n\n const message = (result.issues || [])\n .map((issue) => { return issue.message; })\n .filter(Boolean)[0];\n\n if (message) {\n fieldErrors[path] = [message];\n }\n });\n });\n\n // Aggregate table row errors up to the parent table field.\n const tableDefinitions = collectTableDefinitions(schema);\n const formatColumnMessage = (message: string, label: string) => {\n const trimmed = String(message || '').trim();\n if (!trimmed) {\n return label;\n }\n\n const match = trimmed.match(/^.+?(\\s+(?:cannot|must|is)\\b.*)$/i);\n if (match) {\n return `${label}${match[1]}`;\n }\n\n return `${label}: ${trimmed}`;\n };\n\n Object.entries(tableDefinitions).forEach(([tableName, definition]) => {\n const nestedKeys = Object.keys(fieldErrors).filter((key) => {\n return key.startsWith(`${tableName}.`);\n });\n if (nestedKeys.length === 0) {\n return;\n }\n\n const columnErrors: Record<string, string[]> = {};\n nestedKeys.forEach((key) => {\n const matches = key.match(new RegExp(`^${tableName}\\\\.\\\\d+\\\\.(.+)$`));\n const columnName = matches?.[1];\n if (!columnName) {\n return;\n }\n\n const messages = fieldErrors[key] || [];\n if (!messages.length) {\n return;\n }\n\n if (!columnErrors[columnName]) {\n columnErrors[columnName] = [];\n }\n\n columnErrors[columnName].push(...messages);\n });\n\n const columnMessages = Object.entries(columnErrors).flatMap(([columnName, messages]) => {\n if (!messages.length) {\n return [];\n }\n\n const columnLabel = definition.columns[columnName] || columnName;\n const label = `${definition.label} - ${columnLabel}`;\n const uniqueMessages = Array.from(new Set(messages));\n const firstMessage = uniqueMessages[0];\n return firstMessage ? [formatColumnMessage(firstMessage, label)] : [];\n });\n\n if (!columnMessages.length) {\n return;\n }\n\n const merged = new Set([...(fieldErrors[tableName] || []), ...columnMessages]);\n fieldErrors[tableName] = Array.from(merged);\n });\n\n return Object.keys(fieldErrors).length > 0 ? { fields: fieldErrors } : undefined;\n}\n"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,167 @@
1
+ {
2
+ "name": "@verbb/plugin-kit-react",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist",
10
+ "vite-dev.mjs",
11
+ "CHANGELOG.md",
12
+ "LICENSE.md"
13
+ ],
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/verbb/plugin-kit-react.git"
17
+ },
18
+ "bugs": {
19
+ "url": "https://github.com/verbb/plugin-kit-react/issues"
20
+ },
21
+ "homepage": "https://docs.verbb.io/plugin-kit/react",
22
+ "engines": {
23
+ "node": ">=20.0.0"
24
+ },
25
+ "exports": {
26
+ ".": {
27
+ "types": "./dist/index.d.ts",
28
+ "import": "./dist/index.js"
29
+ },
30
+ "./components": {
31
+ "types": "./dist/components/index.d.ts",
32
+ "import": "./dist/components/index.js"
33
+ },
34
+ "./components/*": {
35
+ "types": "./dist/components/*.d.ts",
36
+ "import": "./dist/components/*.js"
37
+ },
38
+ "./forms": {
39
+ "types": "./dist/forms/index.d.ts",
40
+ "import": "./dist/forms/index.js"
41
+ },
42
+ "./forms/*": {
43
+ "types": "./dist/forms/*.d.ts",
44
+ "import": "./dist/forms/*.js"
45
+ },
46
+ "./hooks": {
47
+ "types": "./dist/hooks/index.d.ts",
48
+ "import": "./dist/hooks/index.js"
49
+ },
50
+ "./hooks/*": {
51
+ "types": "./dist/hooks/*.d.ts",
52
+ "import": "./dist/hooks/*.js"
53
+ },
54
+ "./utils": {
55
+ "types": "./dist/utils/index.d.ts",
56
+ "import": "./dist/utils/index.js"
57
+ },
58
+ "./utils/*": {
59
+ "types": "./dist/utils/*.d.ts",
60
+ "import": "./dist/utils/*.js"
61
+ },
62
+ "./style.css": {
63
+ "style": "./dist/css/style.css",
64
+ "default": "./dist/css/style.css"
65
+ },
66
+ "./package.json": "./package.json",
67
+ "./vite-dev": "./vite-dev.mjs"
68
+ },
69
+ "publishConfig": {
70
+ "access": "public"
71
+ },
72
+ "scripts": {
73
+ "build": "vite build",
74
+ "dev": "vite build --watch",
75
+ "test": "vitest run",
76
+ "visual-tests:dev": "vite --config vite.visual-tests.config.ts --open /visual-tests/index.html",
77
+ "visual-tests:build": "vite build --config vite.visual-tests.config.ts",
78
+ "docs:dev": "vitepress dev docs",
79
+ "docs:build": "vitepress build docs",
80
+ "docs:preview": "vitepress preview docs"
81
+ },
82
+ "license": "MIT",
83
+ "devDependencies": {
84
+ "@verbb/vitepress-theme": "1.0.0",
85
+ "@tailwindcss/typography": "^0.5.19",
86
+ "@tailwindcss/vite": "^4.2.4",
87
+ "@types/lodash-es": "^4.17.12",
88
+ "@types/node": "^25.6.0",
89
+ "@types/react": "^19.2.14",
90
+ "@types/react-dom": "^19.2.3",
91
+ "@vitejs/plugin-react": "^6.0.1",
92
+ "@vitest/browser": "^4.1.5",
93
+ "@vitest/coverage-v8": "^4.1.5",
94
+ "fs-extra": "^11.3.4",
95
+ "globals": "^17.5.0",
96
+ "react": "^19.2.5",
97
+ "react-dom": "^19.2.5",
98
+ "typescript": "^6.0.3",
99
+ "vite": "^8.0.10",
100
+ "vite-plugin-dts": "^4.5.4",
101
+ "vite-plugin-tailwind-shadowdom": "^1.1.1",
102
+ "vitepress": "^1.6.4",
103
+ "vitest": "^4.1.5"
104
+ },
105
+ "peerDependencies": {
106
+ "react": "^19.2.5",
107
+ "react-dom": "^19.2.5"
108
+ },
109
+ "dependencies": {
110
+ "@base-ui/react": "^1.4.1",
111
+ "@dnd-kit/abstract": "^0.4.0",
112
+ "@dnd-kit/dom": "^0.4.0",
113
+ "@dnd-kit/helpers": "^0.4.0",
114
+ "@dnd-kit/react": "^0.4.0",
115
+ "@fortawesome/fontawesome-svg-core": "^7.2.0",
116
+ "@fortawesome/pro-regular-svg-icons": "^7.2.0",
117
+ "@fortawesome/pro-solid-svg-icons": "^7.2.0",
118
+ "@fortawesome/react-fontawesome": "^3.3.1",
119
+ "@tanstack/react-virtual": "^3.13.24",
120
+ "@tiptap/core": "^3.22.4",
121
+ "@tiptap/extension-blockquote": "^3.22.4",
122
+ "@tiptap/extension-bold": "^3.22.4",
123
+ "@tiptap/extension-bullet-list": "^3.22.4",
124
+ "@tiptap/extension-code": "^3.22.4",
125
+ "@tiptap/extension-code-block": "^3.22.4",
126
+ "@tiptap/extension-document": "^3.22.4",
127
+ "@tiptap/extension-dropcursor": "^3.22.4",
128
+ "@tiptap/extension-gapcursor": "^3.22.4",
129
+ "@tiptap/extension-hard-break": "^3.22.4",
130
+ "@tiptap/extension-heading": "^3.22.4",
131
+ "@tiptap/extension-highlight": "^3.22.4",
132
+ "@tiptap/extension-history": "^3.22.4",
133
+ "@tiptap/extension-horizontal-rule": "^3.22.4",
134
+ "@tiptap/extension-italic": "^3.22.4",
135
+ "@tiptap/extension-link": "^3.22.4",
136
+ "@tiptap/extension-list-item": "^3.22.4",
137
+ "@tiptap/extension-ordered-list": "^3.22.4",
138
+ "@tiptap/extension-paragraph": "^3.22.4",
139
+ "@tiptap/extension-strike": "^3.22.4",
140
+ "@tiptap/extension-subscript": "^3.22.4",
141
+ "@tiptap/extension-superscript": "^3.22.4",
142
+ "@tiptap/extension-table": "^3.22.4",
143
+ "@tiptap/extension-table-cell": "^3.22.4",
144
+ "@tiptap/extension-table-header": "^3.22.4",
145
+ "@tiptap/extension-table-row": "^3.22.4",
146
+ "@tiptap/extension-text": "^3.22.4",
147
+ "@tiptap/extension-text-align": "^3.22.4",
148
+ "@tiptap/extension-underline": "^3.22.4",
149
+ "@tiptap/pm": "^3.22.4",
150
+ "@tiptap/react": "^3.22.4",
151
+ "@types/prismjs": "^1.26.6",
152
+ "@verbb/plugin-kit": "1.0.0",
153
+ "class-variance-authority": "^0.7.1",
154
+ "clsx": "^2.1.1",
155
+ "cmdk": "^1.1.1",
156
+ "framer-motion": "^12.38.0",
157
+ "jexl": "^2.3.0",
158
+ "lodash-es": "^4.18.1",
159
+ "prismjs": "^1.30.0",
160
+ "react-day-picker": "^9.14.0",
161
+ "tailwind-merge": "^3.5.0",
162
+ "tailwindcss": "^4.2.4",
163
+ "tw-animate-css": "^1.4.0",
164
+ "valibot": "^1.3.1",
165
+ "zustand": "^5.0.12"
166
+ }
167
+ }