@verbb/plugin-kit-react 1.0.9 → 2.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 (720) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +91 -16
  3. package/dist/app/PluginKitProvider.d.ts +28 -0
  4. package/dist/app/PluginKitProvider.d.ts.map +1 -0
  5. package/dist/app/PluginKitProvider.js +39 -0
  6. package/dist/app/PluginKitProvider.js.map +1 -0
  7. package/dist/app/configure.d.ts +29 -0
  8. package/dist/app/configure.d.ts.map +1 -0
  9. package/dist/app/configure.js +35 -0
  10. package/dist/app/configure.js.map +1 -0
  11. package/dist/app/index.d.ts +5 -0
  12. package/dist/app/index.d.ts.map +1 -0
  13. package/dist/app/index.js +5 -0
  14. package/dist/app/mountShadowApp.d.ts +6 -0
  15. package/dist/app/mountShadowApp.d.ts.map +1 -0
  16. package/dist/app/mountShadowApp.js +2 -0
  17. package/dist/components/Button.d.ts +26 -25
  18. package/dist/components/Button.d.ts.map +1 -1
  19. package/dist/components/Button.js +34 -141
  20. package/dist/components/Button.js.map +1 -1
  21. package/dist/components/ButtonGroup.d.ts +15 -10
  22. package/dist/components/ButtonGroup.d.ts.map +1 -1
  23. package/dist/components/ButtonGroup.js +24 -54
  24. package/dist/components/ButtonGroup.js.map +1 -1
  25. package/dist/components/Calendar.d.ts +17 -10
  26. package/dist/components/Calendar.d.ts.map +1 -1
  27. package/dist/components/Calendar.js +17 -129
  28. package/dist/components/Calendar.js.map +1 -1
  29. package/dist/components/Checkbox.d.ts +27 -4
  30. package/dist/components/Checkbox.d.ts.map +1 -1
  31. package/dist/components/Checkbox.js +37 -34
  32. package/dist/components/Checkbox.js.map +1 -1
  33. package/dist/components/CheckboxInput.d.ts +10 -10
  34. package/dist/components/CheckboxInput.d.ts.map +1 -1
  35. package/dist/components/CheckboxInput.js +30 -10
  36. package/dist/components/CheckboxInput.js.map +1 -1
  37. package/dist/components/CheckboxSelect.d.ts +18 -17
  38. package/dist/components/CheckboxSelect.d.ts.map +1 -1
  39. package/dist/components/CheckboxSelect.js +30 -58
  40. package/dist/components/CheckboxSelect.js.map +1 -1
  41. package/dist/components/CodeEditor.d.ts +16 -10
  42. package/dist/components/CodeEditor.d.ts.map +1 -1
  43. package/dist/components/CodeEditor.js +32 -71
  44. package/dist/components/CodeEditor.js.map +1 -1
  45. package/dist/components/ColorInput.d.ts +25 -12
  46. package/dist/components/ColorInput.d.ts.map +1 -1
  47. package/dist/components/ColorInput.js +42 -142
  48. package/dist/components/ColorInput.js.map +1 -1
  49. package/dist/components/Combobox.d.ts +31 -39
  50. package/dist/components/Combobox.d.ts.map +1 -1
  51. package/dist/components/Combobox.js +47 -385
  52. package/dist/components/Combobox.js.map +1 -1
  53. package/dist/components/ComboboxInput.d.ts +34 -17
  54. package/dist/components/ComboboxInput.d.ts.map +1 -1
  55. package/dist/components/ComboboxInput.js +81 -161
  56. package/dist/components/ComboboxInput.js.map +1 -1
  57. package/dist/components/CopyButton.d.ts +12 -8
  58. package/dist/components/CopyButton.d.ts.map +1 -1
  59. package/dist/components/CopyButton.js +15 -36
  60. package/dist/components/CopyButton.js.map +1 -1
  61. package/dist/components/DatePicker.d.ts +28 -7
  62. package/dist/components/DatePicker.d.ts.map +1 -1
  63. package/dist/components/DatePicker.js +82 -53
  64. package/dist/components/DatePicker.js.map +1 -1
  65. package/dist/components/Dialog.d.ts +20 -20
  66. package/dist/components/Dialog.d.ts.map +1 -1
  67. package/dist/components/Dialog.js +50 -175
  68. package/dist/components/Dialog.js.map +1 -1
  69. package/dist/components/DropdownMenu.d.ts +39 -46
  70. package/dist/components/DropdownMenu.d.ts.map +1 -1
  71. package/dist/components/DropdownMenu.js +40 -232
  72. package/dist/components/DropdownMenu.js.map +1 -1
  73. package/dist/components/EditableTable.d.ts +82 -27
  74. package/dist/components/EditableTable.d.ts.map +1 -1
  75. package/dist/components/EditableTable.js +183 -133
  76. package/dist/components/EditableTable.js.map +1 -1
  77. package/dist/components/Field.d.ts +13 -0
  78. package/dist/components/Field.d.ts.map +1 -0
  79. package/dist/components/Field.js +32 -0
  80. package/dist/components/Field.js.map +1 -0
  81. package/dist/components/Icon.d.ts +7 -0
  82. package/dist/components/Icon.d.ts.map +1 -0
  83. package/dist/components/Icon.js +15 -0
  84. package/dist/components/Icon.js.map +1 -0
  85. package/dist/components/Input.d.ts +20 -8
  86. package/dist/components/Input.d.ts.map +1 -1
  87. package/dist/components/Input.js +37 -34
  88. package/dist/components/Input.js.map +1 -1
  89. package/dist/components/InputGroup.d.ts +39 -19
  90. package/dist/components/InputGroup.d.ts.map +1 -1
  91. package/dist/components/InputGroup.js +83 -102
  92. package/dist/components/InputGroup.js.map +1 -1
  93. package/dist/components/Lightswitch.d.ts +15 -8
  94. package/dist/components/Lightswitch.d.ts.map +1 -1
  95. package/dist/components/Lightswitch.js +22 -47
  96. package/dist/components/Lightswitch.js.map +1 -1
  97. package/dist/components/Popover.d.ts +23 -11
  98. package/dist/components/Popover.d.ts.map +1 -1
  99. package/dist/components/Popover.js +46 -65
  100. package/dist/components/Popover.js.map +1 -1
  101. package/dist/components/Popup.d.ts +14 -0
  102. package/dist/components/Popup.d.ts.map +1 -0
  103. package/dist/components/Popup.js +19 -0
  104. package/dist/components/Popup.js.map +1 -0
  105. package/dist/components/RadioGroup.d.ts +26 -5
  106. package/dist/components/RadioGroup.d.ts.map +1 -1
  107. package/dist/components/RadioGroup.js +56 -26
  108. package/dist/components/RadioGroup.js.map +1 -1
  109. package/dist/components/RadioGroupInput.d.ts +19 -0
  110. package/dist/components/RadioGroupInput.d.ts.map +1 -0
  111. package/dist/components/RadioGroupInput.js +35 -0
  112. package/dist/components/RadioGroupInput.js.map +1 -0
  113. package/dist/components/ScrollArea.d.ts +11 -15
  114. package/dist/components/ScrollArea.d.ts.map +1 -1
  115. package/dist/components/ScrollArea.js +11 -42
  116. package/dist/components/ScrollArea.js.map +1 -1
  117. package/dist/components/Select.d.ts +46 -22
  118. package/dist/components/Select.d.ts.map +1 -1
  119. package/dist/components/Select.js +74 -196
  120. package/dist/components/Select.js.map +1 -1
  121. package/dist/components/SelectInput.d.ts +28 -21
  122. package/dist/components/SelectInput.d.ts.map +1 -1
  123. package/dist/components/SelectInput.js +62 -76
  124. package/dist/components/SelectInput.js.map +1 -1
  125. package/dist/components/Separator.d.ts +7 -3
  126. package/dist/components/Separator.d.ts.map +1 -1
  127. package/dist/components/Separator.js +11 -13
  128. package/dist/components/Separator.js.map +1 -1
  129. package/dist/components/Spinner.d.ts +12 -8
  130. package/dist/components/Spinner.d.ts.map +1 -1
  131. package/dist/components/Spinner.js +15 -34
  132. package/dist/components/Spinner.js.map +1 -1
  133. package/dist/components/Status.d.ts +7 -7
  134. package/dist/components/Status.d.ts.map +1 -1
  135. package/dist/components/Status.js +11 -51
  136. package/dist/components/Status.js.map +1 -1
  137. package/dist/components/Tabs.d.ts +31 -7
  138. package/dist/components/Tabs.d.ts.map +1 -1
  139. package/dist/components/Tabs.js +57 -30
  140. package/dist/components/Tabs.js.map +1 -1
  141. package/dist/components/Textarea.d.ts +18 -7
  142. package/dist/components/Textarea.d.ts.map +1 -1
  143. package/dist/components/Textarea.js +33 -18
  144. package/dist/components/Textarea.js.map +1 -1
  145. package/dist/components/TimePicker.d.ts +18 -8
  146. package/dist/components/TimePicker.d.ts.map +1 -1
  147. package/dist/components/TimePicker.js +38 -36
  148. package/dist/components/TimePicker.js.map +1 -1
  149. package/dist/components/Tiptap.d.ts +43 -0
  150. package/dist/components/Tiptap.d.ts.map +1 -0
  151. package/dist/components/Tiptap.js +96 -0
  152. package/dist/components/Tiptap.js.map +1 -0
  153. package/dist/components/Toggle.d.ts +13 -8
  154. package/dist/components/Toggle.d.ts.map +1 -1
  155. package/dist/components/Toggle.js +13 -42
  156. package/dist/components/Toggle.js.map +1 -1
  157. package/dist/components/ToggleGroup.d.ts +11 -10
  158. package/dist/components/ToggleGroup.d.ts.map +1 -1
  159. package/dist/components/ToggleGroup.js +11 -65
  160. package/dist/components/ToggleGroup.js.map +1 -1
  161. package/dist/components/Tooltip.d.ts +18 -8
  162. package/dist/components/Tooltip.d.ts.map +1 -1
  163. package/dist/components/Tooltip.js +18 -47
  164. package/dist/components/Tooltip.js.map +1 -1
  165. package/dist/components/index.d.ts +37 -45
  166. package/dist/components/index.d.ts.map +1 -1
  167. package/dist/components/index.js +35 -43
  168. package/dist/fault/AppFaultBoundary.d.ts +18 -0
  169. package/dist/fault/AppFaultBoundary.d.ts.map +1 -0
  170. package/dist/fault/AppFaultBoundary.js +24 -0
  171. package/dist/fault/AppFaultBoundary.js.map +1 -0
  172. package/dist/fault/AppFaultProvider.d.ts +43 -0
  173. package/dist/fault/AppFaultProvider.d.ts.map +1 -0
  174. package/dist/fault/AppFaultProvider.js +192 -0
  175. package/dist/fault/AppFaultProvider.js.map +1 -0
  176. package/dist/fault/FaultFallback.d.ts +16 -0
  177. package/dist/fault/FaultFallback.d.ts.map +1 -0
  178. package/dist/fault/FaultFallback.js +67 -0
  179. package/dist/fault/FaultFallback.js.map +1 -0
  180. package/dist/fault/buildSupportBundle.d.ts +3 -0
  181. package/dist/fault/buildSupportBundle.d.ts.map +1 -0
  182. package/dist/fault/buildSupportBundle.js +22 -0
  183. package/dist/fault/buildSupportBundle.js.map +1 -0
  184. package/dist/fault/index.d.ts +8 -0
  185. package/dist/fault/index.d.ts.map +1 -0
  186. package/dist/fault/index.js +7 -0
  187. package/dist/fault/isIgnorableGlobalError.d.ts +3 -0
  188. package/dist/fault/isIgnorableGlobalError.d.ts.map +1 -0
  189. package/dist/fault/isIgnorableGlobalError.js +14 -0
  190. package/dist/fault/isIgnorableGlobalError.js.map +1 -0
  191. package/dist/fault/types.d.ts +18 -0
  192. package/dist/fault/types.d.ts.map +1 -0
  193. package/dist/fault/useUiWatchdog.d.ts +13 -0
  194. package/dist/fault/useUiWatchdog.d.ts.map +1 -0
  195. package/dist/fault/useUiWatchdog.js +38 -0
  196. package/dist/fault/useUiWatchdog.js.map +1 -0
  197. package/dist/forms/Field.d.ts +19 -31
  198. package/dist/forms/Field.d.ts.map +1 -1
  199. package/dist/forms/Field.js +28 -164
  200. package/dist/forms/Field.js.map +1 -1
  201. package/dist/forms/SchemaFormEngine.d.ts +5 -4
  202. package/dist/forms/SchemaFormEngine.d.ts.map +1 -1
  203. package/dist/forms/SchemaFormEngine.js +36 -16
  204. package/dist/forms/SchemaFormEngine.js.map +1 -1
  205. package/dist/forms/SchemaFormFieldNode.d.ts +13 -0
  206. package/dist/forms/SchemaFormFieldNode.d.ts.map +1 -0
  207. package/dist/forms/SchemaFormFieldNode.js +48 -0
  208. package/dist/forms/SchemaFormFieldNode.js.map +1 -0
  209. package/dist/forms/assertSchemaRegistry.d.ts +18 -0
  210. package/dist/forms/assertSchemaRegistry.d.ts.map +1 -0
  211. package/dist/forms/assertSchemaRegistry.js +71 -0
  212. package/dist/forms/assertSchemaRegistry.js.map +1 -0
  213. package/dist/forms/builtin-field-loaders.d.ts +11 -0
  214. package/dist/forms/builtin-field-loaders.d.ts.map +1 -0
  215. package/dist/forms/builtin-field-loaders.js +31 -0
  216. package/dist/forms/builtin-field-loaders.js.map +1 -0
  217. package/dist/forms/components/FieldWrap.d.ts +7 -1
  218. package/dist/forms/components/FieldWrap.d.ts.map +1 -1
  219. package/dist/forms/components/FieldWrap.js +17 -23
  220. package/dist/forms/components/FieldWrap.js.map +1 -1
  221. package/dist/forms/components/ModalTabs.d.ts +28 -13
  222. package/dist/forms/components/ModalTabs.d.ts.map +1 -1
  223. package/dist/forms/components/ModalTabs.js +99 -30
  224. package/dist/forms/components/ModalTabs.js.map +1 -1
  225. package/dist/forms/components/index.d.ts +3 -2
  226. package/dist/forms/components/index.d.ts.map +1 -1
  227. package/dist/forms/components/schemaErrors.d.ts +5 -0
  228. package/dist/forms/components/schemaErrors.d.ts.map +1 -0
  229. package/dist/forms/components/schemaErrors.js +34 -0
  230. package/dist/forms/components/schemaErrors.js.map +1 -0
  231. package/dist/forms/datetime.d.ts +12 -0
  232. package/dist/forms/datetime.d.ts.map +1 -0
  233. package/dist/forms/datetime.js +34 -0
  234. package/dist/forms/datetime.js.map +1 -0
  235. package/dist/forms/engine/context.d.ts +4 -19
  236. package/dist/forms/engine/context.d.ts.map +1 -1
  237. package/dist/forms/engine/context.js.map +1 -1
  238. package/dist/forms/fields/CheckboxSelectField.d.ts +3 -3
  239. package/dist/forms/fields/CheckboxSelectField.d.ts.map +1 -1
  240. package/dist/forms/fields/CheckboxSelectField.js +1 -3
  241. package/dist/forms/fields/CheckboxSelectField.js.map +1 -1
  242. package/dist/forms/fields/CodeEditorField.d.ts +3 -3
  243. package/dist/forms/fields/CodeEditorField.d.ts.map +1 -1
  244. package/dist/forms/fields/CodeEditorField.js +7 -7
  245. package/dist/forms/fields/CodeEditorField.js.map +1 -1
  246. package/dist/forms/fields/ColorField.d.ts +1 -1
  247. package/dist/forms/fields/ColorField.d.ts.map +1 -1
  248. package/dist/forms/fields/ColorField.js +4 -5
  249. package/dist/forms/fields/ColorField.js.map +1 -1
  250. package/dist/forms/fields/ComboboxField.d.ts +4 -5
  251. package/dist/forms/fields/ComboboxField.d.ts.map +1 -1
  252. package/dist/forms/fields/ComboboxField.js +2 -5
  253. package/dist/forms/fields/ComboboxField.js.map +1 -1
  254. package/dist/forms/fields/DateTimeField.d.ts +1 -1
  255. package/dist/forms/fields/DateTimeField.d.ts.map +1 -1
  256. package/dist/forms/fields/DateTimeField.js +22 -18
  257. package/dist/forms/fields/DateTimeField.js.map +1 -1
  258. package/dist/forms/fields/GroupField.d.ts +2 -2
  259. package/dist/forms/fields/GroupField.d.ts.map +1 -1
  260. package/dist/forms/fields/GroupField.js +0 -1
  261. package/dist/forms/fields/GroupField.js.map +1 -1
  262. package/dist/forms/fields/LightswitchField.d.ts +1 -1
  263. package/dist/forms/fields/LightswitchField.d.ts.map +1 -1
  264. package/dist/forms/fields/LightswitchField.js +2 -6
  265. package/dist/forms/fields/LightswitchField.js.map +1 -1
  266. package/dist/forms/fields/NumberField.d.ts +1 -1
  267. package/dist/forms/fields/NumberField.d.ts.map +1 -1
  268. package/dist/forms/fields/NumberField.js +4 -5
  269. package/dist/forms/fields/NumberField.js.map +1 -1
  270. package/dist/forms/fields/RadioGroupField.d.ts +2 -2
  271. package/dist/forms/fields/RadioGroupField.d.ts.map +1 -1
  272. package/dist/forms/fields/RadioGroupField.js +14 -39
  273. package/dist/forms/fields/RadioGroupField.js.map +1 -1
  274. package/dist/forms/fields/SelectField.d.ts +2 -2
  275. package/dist/forms/fields/SelectField.d.ts.map +1 -1
  276. package/dist/forms/fields/SelectField.js +1 -2
  277. package/dist/forms/fields/SelectField.js.map +1 -1
  278. package/dist/forms/fields/TextField.d.ts +1 -1
  279. package/dist/forms/fields/TextField.d.ts.map +1 -1
  280. package/dist/forms/fields/TextField.js +3 -4
  281. package/dist/forms/fields/TextField.js.map +1 -1
  282. package/dist/forms/fields/TextareaField.d.ts +1 -1
  283. package/dist/forms/fields/TextareaField.d.ts.map +1 -1
  284. package/dist/forms/fields/TextareaField.js +3 -5
  285. package/dist/forms/fields/TextareaField.js.map +1 -1
  286. package/dist/forms/index.d.ts +12 -7
  287. package/dist/forms/index.d.ts.map +1 -1
  288. package/dist/forms/index.js +9 -7
  289. package/dist/forms/registry.d.ts +4 -1
  290. package/dist/forms/registry.d.ts.map +1 -1
  291. package/dist/forms/registry.js +18 -50
  292. package/dist/forms/registry.js.map +1 -1
  293. package/dist/forms/useEngineField.d.ts +1 -1
  294. package/dist/forms/useEngineField.d.ts.map +1 -1
  295. package/dist/forms/useEngineField.js.map +1 -1
  296. package/dist/forms/utils.d.ts +6 -0
  297. package/dist/forms/utils.d.ts.map +1 -0
  298. package/dist/forms/utils.js +14 -0
  299. package/dist/forms/utils.js.map +1 -0
  300. package/dist/hooks/index.d.ts +1 -2
  301. package/dist/hooks/index.d.ts.map +1 -1
  302. package/dist/hooks/index.js +1 -2
  303. package/dist/hooks/useTranslation.d.ts +2 -1
  304. package/dist/hooks/useTranslation.d.ts.map +1 -1
  305. package/dist/hooks/useTranslation.js +3 -5
  306. package/dist/hooks/useTranslation.js.map +1 -1
  307. package/dist/index.d.ts +2 -1
  308. package/dist/index.d.ts.map +1 -1
  309. package/dist/index.js +42 -2
  310. package/dist/utils/cn.d.ts +4 -0
  311. package/dist/utils/cn.d.ts.map +1 -0
  312. package/dist/utils/cn.js +11 -0
  313. package/dist/utils/cn.js.map +1 -0
  314. package/dist/utils/craftHostBridge.d.ts +3 -2
  315. package/dist/utils/craftHostBridge.d.ts.map +1 -1
  316. package/dist/utils/craftHostBridge.js +1 -0
  317. package/dist/utils/craftHostBridge.js.map +1 -1
  318. package/dist/utils/create-plugin-kit-component.d.ts +16 -0
  319. package/dist/utils/create-plugin-kit-component.d.ts.map +1 -0
  320. package/dist/utils/create-plugin-kit-component.js +97 -0
  321. package/dist/utils/create-plugin-kit-component.js.map +1 -0
  322. package/dist/utils/index.d.ts +8 -19
  323. package/dist/utils/index.d.ts.map +1 -1
  324. package/dist/utils/index.js +7 -73
  325. package/dist/utils/isHostEvent.d.ts +7 -0
  326. package/dist/utils/isHostEvent.d.ts.map +1 -0
  327. package/dist/utils/isHostEvent.js +13 -0
  328. package/dist/utils/isHostEvent.js.map +1 -0
  329. package/dist/utils/lit-react-booleans.d.ts +9 -0
  330. package/dist/utils/lit-react-booleans.d.ts.map +1 -0
  331. package/dist/utils/lit-react-booleans.js +17 -0
  332. package/dist/utils/lit-react-booleans.js.map +1 -0
  333. package/dist/utils/pk-change.d.ts +5 -0
  334. package/dist/utils/pk-change.d.ts.map +1 -0
  335. package/dist/utils/pk-change.js +13 -0
  336. package/dist/utils/pk-change.js.map +1 -0
  337. package/package.json +34 -80
  338. package/style.css +16 -0
  339. package/tailwind-preflight-scope.css +28 -0
  340. package/tailwind-theme.css +245 -0
  341. package/vite-dev.mjs +22 -2
  342. package/dist/_virtual/_rolldown/runtime.js +0 -34
  343. package/dist/components/Command.d.ts +0 -26
  344. package/dist/components/Command.d.ts.map +0 -1
  345. package/dist/components/Command.js +0 -94
  346. package/dist/components/Command.js.map +0 -1
  347. package/dist/components/FadeIn.d.ts +0 -12
  348. package/dist/components/FadeIn.d.ts.map +0 -1
  349. package/dist/components/FadeIn.js +0 -24
  350. package/dist/components/FadeIn.js.map +0 -1
  351. package/dist/components/Label.d.ts +0 -4
  352. package/dist/components/Label.d.ts.map +0 -1
  353. package/dist/components/Label.js +0 -15
  354. package/dist/components/Label.js.map +0 -1
  355. package/dist/components/Markdown.d.ts +0 -11
  356. package/dist/components/Markdown.d.ts.map +0 -1
  357. package/dist/components/Markdown.js +0 -46
  358. package/dist/components/Markdown.js.map +0 -1
  359. package/dist/components/MenuButton.d.ts +0 -40
  360. package/dist/components/MenuButton.d.ts.map +0 -1
  361. package/dist/components/MenuButton.js +0 -122
  362. package/dist/components/MenuButton.js.map +0 -1
  363. package/dist/components/ModalTabs.d.ts +0 -8
  364. package/dist/components/ModalTabs.d.ts.map +0 -1
  365. package/dist/components/ModalTabs.js +0 -37
  366. package/dist/components/ModalTabs.js.map +0 -1
  367. package/dist/components/PaneTabs.d.ts +0 -8
  368. package/dist/components/PaneTabs.d.ts.map +0 -1
  369. package/dist/components/PaneTabs.js +0 -37
  370. package/dist/components/PaneTabs.js.map +0 -1
  371. package/dist/components/SlideUp.d.ts +0 -12
  372. package/dist/components/SlideUp.d.ts.map +0 -1
  373. package/dist/components/SlideUp.js +0 -36
  374. package/dist/components/SlideUp.js.map +0 -1
  375. package/dist/components/Slot.d.ts +0 -6
  376. package/dist/components/Slot.d.ts.map +0 -1
  377. package/dist/components/Slot.js +0 -52
  378. package/dist/components/Slot.js.map +0 -1
  379. package/dist/components/Table.d.ts +0 -10
  380. package/dist/components/Table.d.ts.map +0 -1
  381. package/dist/components/Table.js +0 -64
  382. package/dist/components/Table.js.map +0 -1
  383. package/dist/components/TiptapContent.d.ts +0 -9
  384. package/dist/components/TiptapContent.d.ts.map +0 -1
  385. package/dist/components/TiptapContent.js +0 -43
  386. package/dist/components/TiptapContent.js.map +0 -1
  387. package/dist/components/TiptapEditor.d.ts +0 -43
  388. package/dist/components/TiptapEditor.d.ts.map +0 -1
  389. package/dist/components/TiptapEditor.js +0 -573
  390. package/dist/components/TiptapEditor.js.map +0 -1
  391. package/dist/components/TiptapInput.d.ts +0 -20
  392. package/dist/components/TiptapInput.d.ts.map +0 -1
  393. package/dist/components/TiptapInput.js +0 -140
  394. package/dist/components/TiptapInput.js.map +0 -1
  395. package/dist/components/VirtualizedScrollArea.d.ts +0 -25
  396. package/dist/components/VirtualizedScrollArea.d.ts.map +0 -1
  397. package/dist/components/VirtualizedScrollArea.js +0 -80
  398. package/dist/components/VirtualizedScrollArea.js.map +0 -1
  399. package/dist/components/editable-table/RowDataCells.d.ts +0 -3
  400. package/dist/components/editable-table/RowDataCells.d.ts.map +0 -1
  401. package/dist/components/editable-table/RowDataCells.js +0 -33
  402. package/dist/components/editable-table/RowDataCells.js.map +0 -1
  403. package/dist/components/editable-table/TableCell.d.ts +0 -13
  404. package/dist/components/editable-table/TableCell.d.ts.map +0 -1
  405. package/dist/components/editable-table/TableCell.js +0 -415
  406. package/dist/components/editable-table/TableCell.js.map +0 -1
  407. package/dist/components/editable-table/TableRow.d.ts +0 -3
  408. package/dist/components/editable-table/TableRow.d.ts.map +0 -1
  409. package/dist/components/editable-table/TableRow.js +0 -166
  410. package/dist/components/editable-table/TableRow.js.map +0 -1
  411. package/dist/components/editable-table/helpers.d.ts +0 -12
  412. package/dist/components/editable-table/helpers.d.ts.map +0 -1
  413. package/dist/components/editable-table/helpers.js +0 -23
  414. package/dist/components/editable-table/helpers.js.map +0 -1
  415. package/dist/components/editable-table/index.d.ts +0 -4
  416. package/dist/components/editable-table/index.d.ts.map +0 -1
  417. package/dist/components/editable-table/index.js +0 -4
  418. package/dist/components/editable-table/types.d.ts +0 -55
  419. package/dist/components/editable-table/types.d.ts.map +0 -1
  420. package/dist/components/editable-table/types.js +0 -0
  421. package/dist/components/editable-table/useEditableTableCellChange.d.ts +0 -17
  422. package/dist/components/editable-table/useEditableTableCellChange.d.ts.map +0 -1
  423. package/dist/components/editable-table/useEditableTableCellChange.js +0 -152
  424. package/dist/components/editable-table/useEditableTableCellChange.js.map +0 -1
  425. package/dist/components/editable-table/useEditableTableDnd.d.ts +0 -18
  426. package/dist/components/editable-table/useEditableTableDnd.d.ts.map +0 -1
  427. package/dist/components/editable-table/useEditableTableDnd.js +0 -55
  428. package/dist/components/editable-table/useEditableTableDnd.js.map +0 -1
  429. package/dist/components/editable-table/useEditableTableRows.d.ts +0 -17
  430. package/dist/components/editable-table/useEditableTableRows.d.ts.map +0 -1
  431. package/dist/components/editable-table/useEditableTableRows.js +0 -108
  432. package/dist/components/editable-table/useEditableTableRows.js.map +0 -1
  433. package/dist/components/tiptap/InlineVariablePickerPopover.d.ts +0 -24
  434. package/dist/components/tiptap/InlineVariablePickerPopover.d.ts.map +0 -1
  435. package/dist/components/tiptap/InlineVariablePickerPopover.js +0 -63
  436. package/dist/components/tiptap/InlineVariablePickerPopover.js.map +0 -1
  437. package/dist/components/tiptap/InsertLinkDialog.d.ts +0 -14
  438. package/dist/components/tiptap/InsertLinkDialog.d.ts.map +0 -1
  439. package/dist/components/tiptap/InsertLinkDialog.js +0 -145
  440. package/dist/components/tiptap/InsertLinkDialog.js.map +0 -1
  441. package/dist/components/tiptap/LinkBubbleMenu.d.ts +0 -10
  442. package/dist/components/tiptap/LinkBubbleMenu.d.ts.map +0 -1
  443. package/dist/components/tiptap/LinkBubbleMenu.js +0 -106
  444. package/dist/components/tiptap/LinkBubbleMenu.js.map +0 -1
  445. package/dist/components/tiptap/LinkDropdown.d.ts +0 -53
  446. package/dist/components/tiptap/LinkDropdown.d.ts.map +0 -1
  447. package/dist/components/tiptap/LinkDropdown.js +0 -155
  448. package/dist/components/tiptap/LinkDropdown.js.map +0 -1
  449. package/dist/components/tiptap/VariableCommandList.d.ts +0 -37
  450. package/dist/components/tiptap/VariableCommandList.d.ts.map +0 -1
  451. package/dist/components/tiptap/VariableCommandList.js +0 -166
  452. package/dist/components/tiptap/VariableCommandList.js.map +0 -1
  453. package/dist/components/tiptap/VariableDropdown.d.ts +0 -40
  454. package/dist/components/tiptap/VariableDropdown.d.ts.map +0 -1
  455. package/dist/components/tiptap/VariableDropdown.js +0 -121
  456. package/dist/components/tiptap/VariableDropdown.js.map +0 -1
  457. package/dist/components/tiptap/VariablePickerContext.d.ts +0 -58
  458. package/dist/components/tiptap/VariablePickerContext.d.ts.map +0 -1
  459. package/dist/components/tiptap/VariablePickerContext.js +0 -34
  460. package/dist/components/tiptap/VariablePickerContext.js.map +0 -1
  461. package/dist/components/tiptap/VariableTag.d.ts +0 -6
  462. package/dist/components/tiptap/VariableTag.d.ts.map +0 -1
  463. package/dist/components/tiptap/VariableTag.js +0 -153
  464. package/dist/components/tiptap/VariableTag.js.map +0 -1
  465. package/dist/components/tiptap/VariableTagView.d.ts +0 -3
  466. package/dist/components/tiptap/VariableTagView.d.ts.map +0 -1
  467. package/dist/components/tiptap/VariableTagView.js +0 -584
  468. package/dist/components/tiptap/VariableTagView.js.map +0 -1
  469. package/dist/components/tiptap/VariableTransformControls.d.ts +0 -37
  470. package/dist/components/tiptap/VariableTransformControls.d.ts.map +0 -1
  471. package/dist/components/tiptap/VariableTransformControls.js +0 -157
  472. package/dist/components/tiptap/VariableTransformControls.js.map +0 -1
  473. package/dist/components/tiptap/editorConfig.d.ts +0 -15
  474. package/dist/components/tiptap/editorConfig.d.ts.map +0 -1
  475. package/dist/components/tiptap/editorConfig.js +0 -191
  476. package/dist/components/tiptap/editorConfig.js.map +0 -1
  477. package/dist/components/tiptap/useInlineVariablePicker.d.ts +0 -34
  478. package/dist/components/tiptap/useInlineVariablePicker.d.ts.map +0 -1
  479. package/dist/components/tiptap/useInlineVariablePicker.js +0 -240
  480. package/dist/components/tiptap/useInlineVariablePicker.js.map +0 -1
  481. package/dist/components/tiptap/useVariablePicker.d.ts +0 -28
  482. package/dist/components/tiptap/useVariablePicker.d.ts.map +0 -1
  483. package/dist/components/tiptap/useVariablePicker.js +0 -122
  484. package/dist/components/tiptap/useVariablePicker.js.map +0 -1
  485. package/dist/components/tiptap/variablePickerUtils.d.ts +0 -11
  486. package/dist/components/tiptap/variablePickerUtils.d.ts.map +0 -1
  487. package/dist/components/tiptap/variablePickerUtils.js +0 -63
  488. package/dist/components/tiptap/variablePickerUtils.js.map +0 -1
  489. package/dist/components/tiptap/variableSerialization.d.ts +0 -53
  490. package/dist/components/tiptap/variableSerialization.d.ts.map +0 -1
  491. package/dist/components/tiptap/variableSerialization.js +0 -291
  492. package/dist/components/tiptap/variableSerialization.js.map +0 -1
  493. package/dist/css/core.css +0 -288
  494. package/dist/css/style.css +0 -295
  495. package/dist/forms/TranslationIcon.d.ts +0 -5
  496. package/dist/forms/TranslationIcon.d.ts.map +0 -1
  497. package/dist/forms/TranslationIcon.js +0 -18
  498. package/dist/forms/TranslationIcon.js.map +0 -1
  499. package/dist/forms/components/index.js +0 -3
  500. package/dist/forms/contexts/VariableCategoriesContext.d.ts +0 -19
  501. package/dist/forms/contexts/VariableCategoriesContext.d.ts.map +0 -1
  502. package/dist/forms/contexts/VariableCategoriesContext.js +0 -20
  503. package/dist/forms/contexts/VariableCategoriesContext.js.map +0 -1
  504. package/dist/forms/engine/FormStateStore.d.ts +0 -24
  505. package/dist/forms/engine/FormStateStore.d.ts.map +0 -1
  506. package/dist/forms/engine/FormStateStore.js +0 -97
  507. package/dist/forms/engine/FormStateStore.js.map +0 -1
  508. package/dist/forms/engine/SchemaIndex.d.ts +0 -33
  509. package/dist/forms/engine/SchemaIndex.d.ts.map +0 -1
  510. package/dist/forms/engine/SchemaIndex.js +0 -21
  511. package/dist/forms/engine/SchemaIndex.js.map +0 -1
  512. package/dist/forms/engine/ValidationEngine.d.ts +0 -13
  513. package/dist/forms/engine/ValidationEngine.d.ts.map +0 -1
  514. package/dist/forms/engine/ValidationEngine.js +0 -155
  515. package/dist/forms/engine/ValidationEngine.js.map +0 -1
  516. package/dist/forms/engine/buildGroupedMessage.d.ts +0 -2
  517. package/dist/forms/engine/buildGroupedMessage.d.ts.map +0 -1
  518. package/dist/forms/engine/buildGroupedMessage.js +0 -20
  519. package/dist/forms/engine/buildGroupedMessage.js.map +0 -1
  520. package/dist/forms/engine/rules/email.d.ts +0 -2
  521. package/dist/forms/engine/rules/email.d.ts.map +0 -1
  522. package/dist/forms/engine/rules/email.js +0 -11
  523. package/dist/forms/engine/rules/email.js.map +0 -1
  524. package/dist/forms/engine/rules/emailOrVariable.d.ts +0 -2
  525. package/dist/forms/engine/rules/emailOrVariable.d.ts.map +0 -1
  526. package/dist/forms/engine/rules/emailOrVariable.js +0 -13
  527. package/dist/forms/engine/rules/emailOrVariable.js.map +0 -1
  528. package/dist/forms/engine/rules/handle.d.ts +0 -2
  529. package/dist/forms/engine/rules/handle.d.ts.map +0 -1
  530. package/dist/forms/engine/rules/handle.js +0 -12
  531. package/dist/forms/engine/rules/handle.js.map +0 -1
  532. package/dist/forms/engine/rules/index.d.ts +0 -9
  533. package/dist/forms/engine/rules/index.d.ts.map +0 -1
  534. package/dist/forms/engine/rules/index.js +0 -35
  535. package/dist/forms/engine/rules/index.js.map +0 -1
  536. package/dist/forms/engine/rules/max.d.ts +0 -2
  537. package/dist/forms/engine/rules/max.d.ts.map +0 -1
  538. package/dist/forms/engine/rules/max.js +0 -16
  539. package/dist/forms/engine/rules/max.js.map +0 -1
  540. package/dist/forms/engine/rules/min.d.ts +0 -2
  541. package/dist/forms/engine/rules/min.d.ts.map +0 -1
  542. package/dist/forms/engine/rules/min.js +0 -16
  543. package/dist/forms/engine/rules/min.js.map +0 -1
  544. package/dist/forms/engine/rules/required.d.ts +0 -2
  545. package/dist/forms/engine/rules/required.d.ts.map +0 -1
  546. package/dist/forms/engine/rules/required.js +0 -11
  547. package/dist/forms/engine/rules/required.js.map +0 -1
  548. package/dist/forms/engine/rules/uniqueHandle.d.ts +0 -9
  549. package/dist/forms/engine/rules/uniqueHandle.d.ts.map +0 -1
  550. package/dist/forms/engine/rules/uniqueHandle.js +0 -95
  551. package/dist/forms/engine/rules/uniqueHandle.js.map +0 -1
  552. package/dist/forms/engine/rules/utils.d.ts +0 -3
  553. package/dist/forms/engine/rules/utils.d.ts.map +0 -1
  554. package/dist/forms/engine/rules/utils.js +0 -21
  555. package/dist/forms/engine/rules/utils.js.map +0 -1
  556. package/dist/forms/fields/CalculationsField.d.ts +0 -24
  557. package/dist/forms/fields/CalculationsField.d.ts.map +0 -1
  558. package/dist/forms/fields/CalculationsField.js +0 -215
  559. package/dist/forms/fields/CalculationsField.js.map +0 -1
  560. package/dist/forms/fields/CalculationsToolbar.d.ts +0 -17
  561. package/dist/forms/fields/CalculationsToolbar.d.ts.map +0 -1
  562. package/dist/forms/fields/CalculationsToolbar.js +0 -130
  563. package/dist/forms/fields/CalculationsToolbar.js.map +0 -1
  564. package/dist/forms/fields/EditableTableField.d.ts +0 -22
  565. package/dist/forms/fields/EditableTableField.d.ts.map +0 -1
  566. package/dist/forms/fields/EditableTableField.js +0 -37
  567. package/dist/forms/fields/EditableTableField.js.map +0 -1
  568. package/dist/forms/fields/ElementSelectField.d.ts +0 -20
  569. package/dist/forms/fields/ElementSelectField.d.ts.map +0 -1
  570. package/dist/forms/fields/ElementSelectField.js +0 -215
  571. package/dist/forms/fields/ElementSelectField.js.map +0 -1
  572. package/dist/forms/fields/HandleField.d.ts +0 -20
  573. package/dist/forms/fields/HandleField.d.ts.map +0 -1
  574. package/dist/forms/fields/HandleField.js +0 -70
  575. package/dist/forms/fields/HandleField.js.map +0 -1
  576. package/dist/forms/fields/ListField.d.ts +0 -18
  577. package/dist/forms/fields/ListField.d.ts.map +0 -1
  578. package/dist/forms/fields/ListField.js +0 -52
  579. package/dist/forms/fields/ListField.js.map +0 -1
  580. package/dist/forms/fields/RichTextField.d.ts +0 -24
  581. package/dist/forms/fields/RichTextField.d.ts.map +0 -1
  582. package/dist/forms/fields/RichTextField.js +0 -53
  583. package/dist/forms/fields/RichTextField.js.map +0 -1
  584. package/dist/forms/fields/StaticTableField.d.ts +0 -34
  585. package/dist/forms/fields/StaticTableField.d.ts.map +0 -1
  586. package/dist/forms/fields/StaticTableField.js +0 -128
  587. package/dist/forms/fields/StaticTableField.js.map +0 -1
  588. package/dist/forms/fields/VariablePickerField.d.ts +0 -21
  589. package/dist/forms/fields/VariablePickerField.d.ts.map +0 -1
  590. package/dist/forms/fields/VariablePickerField.js +0 -51
  591. package/dist/forms/fields/VariablePickerField.js.map +0 -1
  592. package/dist/forms/store/element-store.d.ts +0 -11
  593. package/dist/forms/store/element-store.d.ts.map +0 -1
  594. package/dist/forms/store/element-store.js +0 -41
  595. package/dist/forms/store/element-store.js.map +0 -1
  596. package/dist/forms/useEditableTableFieldBinding.d.ts +0 -13
  597. package/dist/forms/useEditableTableFieldBinding.d.ts.map +0 -1
  598. package/dist/forms/useEditableTableFieldBinding.js +0 -91
  599. package/dist/forms/useEditableTableFieldBinding.js.map +0 -1
  600. package/dist/hooks/useKeyboardShortcuts.d.ts +0 -14
  601. package/dist/hooks/useKeyboardShortcuts.d.ts.map +0 -1
  602. package/dist/hooks/useKeyboardShortcuts.js +0 -67
  603. package/dist/hooks/useKeyboardShortcuts.js.map +0 -1
  604. package/dist/node_modules/@babel/runtime/helpers/arrayLikeToArray.js +0 -15
  605. package/dist/node_modules/@babel/runtime/helpers/arrayLikeToArray.js.map +0 -1
  606. package/dist/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js +0 -15
  607. package/dist/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js.map +0 -1
  608. package/dist/node_modules/@babel/runtime/helpers/classCallCheck.js +0 -13
  609. package/dist/node_modules/@babel/runtime/helpers/classCallCheck.js.map +0 -1
  610. package/dist/node_modules/@babel/runtime/helpers/createClass.js +0 -21
  611. package/dist/node_modules/@babel/runtime/helpers/createClass.js.map +0 -1
  612. package/dist/node_modules/@babel/runtime/helpers/defineProperty.js +0 -20
  613. package/dist/node_modules/@babel/runtime/helpers/defineProperty.js.map +0 -1
  614. package/dist/node_modules/@babel/runtime/helpers/interopRequireDefault.js +0 -13
  615. package/dist/node_modules/@babel/runtime/helpers/interopRequireDefault.js.map +0 -1
  616. package/dist/node_modules/@babel/runtime/helpers/iterableToArray.js +0 -13
  617. package/dist/node_modules/@babel/runtime/helpers/iterableToArray.js.map +0 -1
  618. package/dist/node_modules/@babel/runtime/helpers/nonIterableSpread.js +0 -13
  619. package/dist/node_modules/@babel/runtime/helpers/nonIterableSpread.js.map +0 -1
  620. package/dist/node_modules/@babel/runtime/helpers/toConsumableArray.js +0 -21
  621. package/dist/node_modules/@babel/runtime/helpers/toConsumableArray.js.map +0 -1
  622. package/dist/node_modules/@babel/runtime/helpers/toPrimitive.js +0 -22
  623. package/dist/node_modules/@babel/runtime/helpers/toPrimitive.js.map +0 -1
  624. package/dist/node_modules/@babel/runtime/helpers/toPropertyKey.js +0 -18
  625. package/dist/node_modules/@babel/runtime/helpers/toPropertyKey.js.map +0 -1
  626. package/dist/node_modules/@babel/runtime/helpers/typeof.js +0 -18
  627. package/dist/node_modules/@babel/runtime/helpers/typeof.js.map +0 -1
  628. package/dist/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js +0 -19
  629. package/dist/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js.map +0 -1
  630. package/dist/node_modules/jexl/dist/Expression.js +0 -84
  631. package/dist/node_modules/jexl/dist/Expression.js.map +0 -1
  632. package/dist/node_modules/jexl/dist/Jexl.js +0 -165
  633. package/dist/node_modules/jexl/dist/Jexl.js.map +0 -1
  634. package/dist/node_modules/jexl/dist/Lexer.js +0 -152
  635. package/dist/node_modules/jexl/dist/Lexer.js.map +0 -1
  636. package/dist/node_modules/jexl/dist/PromiseSync.js +0 -87
  637. package/dist/node_modules/jexl/dist/PromiseSync.js.map +0 -1
  638. package/dist/node_modules/jexl/dist/evaluator/Evaluator.js +0 -98
  639. package/dist/node_modules/jexl/dist/evaluator/Evaluator.js.map +0 -1
  640. package/dist/node_modules/jexl/dist/evaluator/handlers.js +0 -162
  641. package/dist/node_modules/jexl/dist/evaluator/handlers.js.map +0 -1
  642. package/dist/node_modules/jexl/dist/grammar.js +0 -195
  643. package/dist/node_modules/jexl/dist/grammar.js.map +0 -1
  644. package/dist/node_modules/jexl/dist/parser/Parser.js +0 -135
  645. package/dist/node_modules/jexl/dist/parser/Parser.js.map +0 -1
  646. package/dist/node_modules/jexl/dist/parser/handlers.js +0 -205
  647. package/dist/node_modules/jexl/dist/parser/handlers.js.map +0 -1
  648. package/dist/node_modules/jexl/dist/parser/states.js +0 -158
  649. package/dist/node_modules/jexl/dist/parser/states.js.map +0 -1
  650. package/dist/types/global.d.d.ts +0 -1
  651. package/dist/types/global.d.js +0 -0
  652. package/dist/utils/classes.d.ts +0 -18
  653. package/dist/utils/classes.d.ts.map +0 -1
  654. package/dist/utils/classes.js +0 -25
  655. package/dist/utils/classes.js.map +0 -1
  656. package/dist/utils/config.d.ts +0 -14
  657. package/dist/utils/config.d.ts.map +0 -1
  658. package/dist/utils/config.js +0 -20
  659. package/dist/utils/config.js.map +0 -1
  660. package/dist/utils/datetime.d.ts +0 -10
  661. package/dist/utils/datetime.d.ts.map +0 -1
  662. package/dist/utils/datetime.js +0 -60
  663. package/dist/utils/datetime.js.map +0 -1
  664. package/dist/utils/documentScrollStability.d.ts +0 -7
  665. package/dist/utils/documentScrollStability.d.ts.map +0 -1
  666. package/dist/utils/documentScrollStability.js +0 -19
  667. package/dist/utils/documentScrollStability.js.map +0 -1
  668. package/dist/utils/handle.d.ts +0 -10
  669. package/dist/utils/handle.d.ts.map +0 -1
  670. package/dist/utils/handle.js +0 -51
  671. package/dist/utils/handle.js.map +0 -1
  672. package/dist/utils/hostBridge.d.ts +0 -40
  673. package/dist/utils/hostBridge.d.ts.map +0 -1
  674. package/dist/utils/hostBridge.js +0 -35
  675. package/dist/utils/hostBridge.js.map +0 -1
  676. package/dist/utils/index.js.map +0 -1
  677. package/dist/utils/portal.d.ts +0 -17
  678. package/dist/utils/portal.d.ts.map +0 -1
  679. package/dist/utils/portal.js +0 -51
  680. package/dist/utils/portal.js.map +0 -1
  681. package/dist/utils/schema.d.ts +0 -17
  682. package/dist/utils/schema.d.ts.map +0 -1
  683. package/dist/utils/schema.js +0 -56
  684. package/dist/utils/schema.js.map +0 -1
  685. package/dist/utils/schemaFieldNames.d.ts +0 -2
  686. package/dist/utils/schemaFieldNames.d.ts.map +0 -1
  687. package/dist/utils/schemaFieldNames.js +0 -16
  688. package/dist/utils/schemaFieldNames.js.map +0 -1
  689. package/dist/utils/schemaIndex.d.ts +0 -6
  690. package/dist/utils/schemaIndex.d.ts.map +0 -1
  691. package/dist/utils/schemaIndex.js +0 -31
  692. package/dist/utils/schemaIndex.js.map +0 -1
  693. package/dist/utils/schemaIndexCache.d.ts +0 -6
  694. package/dist/utils/schemaIndexCache.d.ts.map +0 -1
  695. package/dist/utils/schemaIndexCache.js +0 -32
  696. package/dist/utils/schemaIndexCache.js.map +0 -1
  697. package/dist/utils/schemaNormalize.d.ts +0 -13
  698. package/dist/utils/schemaNormalize.d.ts.map +0 -1
  699. package/dist/utils/schemaNormalize.js +0 -17
  700. package/dist/utils/schemaNormalize.js.map +0 -1
  701. package/dist/utils/store.d.ts +0 -7
  702. package/dist/utils/store.d.ts.map +0 -1
  703. package/dist/utils/store.js +0 -6
  704. package/dist/utils/store.js.map +0 -1
  705. package/dist/utils/timeOptions.d.ts +0 -6
  706. package/dist/utils/timeOptions.d.ts.map +0 -1
  707. package/dist/utils/timeOptions.js +0 -42
  708. package/dist/utils/timeOptions.js.map +0 -1
  709. package/dist/utils/tiptap.d.ts +0 -13
  710. package/dist/utils/tiptap.d.ts.map +0 -1
  711. package/dist/utils/tiptap.js +0 -39
  712. package/dist/utils/tiptap.js.map +0 -1
  713. package/dist/utils/translation.d.ts +0 -5
  714. package/dist/utils/translation.d.ts.map +0 -1
  715. package/dist/utils/translation.js +0 -21
  716. package/dist/utils/translation.js.map +0 -1
  717. package/dist/utils/validation.d.ts +0 -4
  718. package/dist/utils/validation.d.ts.map +0 -1
  719. package/dist/utils/validation.js +0 -253
  720. package/dist/utils/validation.js.map +0 -1
@@ -0,0 +1,71 @@
1
+ import { getFormComponentRegistry, getFormFieldRegistry } from "./registry.js";
2
+ import { isBuiltinFormFieldType } from "./builtin-field-loaders.js";
3
+ //#region src/forms/assertSchemaRegistry.ts
4
+ var isRecord = (value) => {
5
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
6
+ };
7
+ var walkSchema = (schema, path, visit) => {
8
+ if (typeof schema === "string") return;
9
+ if (Array.isArray(schema)) {
10
+ schema.forEach((item, index) => {
11
+ if (typeof item === "string" || !isRecord(item)) return;
12
+ const itemPath = `${path}[${index}]`;
13
+ visit(item, itemPath);
14
+ walkSchema(item, itemPath, visit);
15
+ });
16
+ return;
17
+ }
18
+ if (!isRecord(schema)) return;
19
+ const node = schema;
20
+ visit(node, path);
21
+ if (node.children) walkSchema(node.children, `${path}.children`, visit);
22
+ if (node.schema) walkSchema(node.schema, `${path}.schema`, visit);
23
+ };
24
+ /**
25
+ * Walk a SchemaForm tree and verify every `$field` / `$cmp` key is registered.
26
+ * Use in dev/test bootstraps for large plugins (Formie-scale) before shipping CP screens.
27
+ */
28
+ var assertSchemaRegistry = (schema, options = {}) => {
29
+ const { failFast = false } = options;
30
+ const fieldRegistry = getFormFieldRegistry();
31
+ const componentRegistry = getFormComponentRegistry();
32
+ const issues = [];
33
+ walkSchema(schema, "schema", (node, nodePath) => {
34
+ if (node.$field) {
35
+ const key = String(node.$field);
36
+ if (!fieldRegistry[key] && !isBuiltinFormFieldType(key)) {
37
+ const issue = {
38
+ path: nodePath,
39
+ kind: "field",
40
+ key
41
+ };
42
+ issues.push(issue);
43
+ if (failFast) throw new Error(`SchemaForm: unregistered field "${key}" at ${nodePath}`);
44
+ }
45
+ }
46
+ if (node.$cmp) {
47
+ const key = String(node.$cmp);
48
+ if (!componentRegistry[key]) {
49
+ const issue = {
50
+ path: nodePath,
51
+ kind: "component",
52
+ key
53
+ };
54
+ issues.push(issue);
55
+ if (failFast) throw new Error(`SchemaForm: unregistered component "${key}" at ${nodePath}`);
56
+ }
57
+ }
58
+ });
59
+ return issues;
60
+ };
61
+ /** Dev helper: log registry gaps for a schema index root tree. */
62
+ var debugSchemaRegistry = (schemaIndex, options) => {
63
+ if (!schemaIndex?.schema) return [];
64
+ const issues = assertSchemaRegistry(schemaIndex.schema, options);
65
+ if (issues.length) console.warn("[plugin-kit] SchemaForm registry gaps:", issues);
66
+ return issues;
67
+ };
68
+ //#endregion
69
+ export { assertSchemaRegistry, debugSchemaRegistry };
70
+
71
+ //# sourceMappingURL=assertSchemaRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertSchemaRegistry.js","names":[],"sources":["../../src/forms/assertSchemaRegistry.ts"],"sourcesContent":["import type { SchemaIndex, SchemaNode, SchemaRenderable } from '@verbb/plugin-kit-forms';\n\nimport { isBuiltinFormFieldType } from './builtin-field-loaders.js';\nimport { getFormComponentRegistry, getFormFieldRegistry } from './registry.js';\n\nexport type AssertSchemaRegistryOptions = {\n /** When true, throw on the first missing registry key instead of collecting all. */\n failFast?: boolean;\n};\n\nexport type SchemaRegistryIssue = {\n path: string;\n kind: 'field' | 'component';\n key: string;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n};\n\nconst walkSchema = (\n schema: SchemaRenderable,\n path: string,\n visit: (node: SchemaNode, path: string) => void,\n): void => {\n if (typeof schema === 'string') {\n return;\n }\n\n if (Array.isArray(schema)) {\n schema.forEach((item, index) => {\n if (typeof item === 'string' || !isRecord(item)) {\n return;\n }\n\n const itemPath = `${path}[${index}]`;\n visit(item as SchemaNode, itemPath);\n walkSchema(item as SchemaRenderable, itemPath, visit);\n });\n return;\n }\n\n if (!isRecord(schema)) {\n return;\n }\n\n const node = schema as SchemaNode;\n visit(node, path);\n\n if (node.children) {\n walkSchema(node.children as SchemaRenderable, `${path}.children`, visit);\n }\n\n if (node.schema) {\n walkSchema(node.schema as SchemaRenderable, `${path}.schema`, visit);\n }\n};\n\n/**\n * Walk a SchemaForm tree and verify every `$field` / `$cmp` key is registered.\n * Use in dev/test bootstraps for large plugins (Formie-scale) before shipping CP screens.\n */\nexport const assertSchemaRegistry = (\n schema: SchemaRenderable,\n options: AssertSchemaRegistryOptions = {},\n): SchemaRegistryIssue[] => {\n const { failFast = false } = options;\n\n const fieldRegistry = getFormFieldRegistry();\n const componentRegistry = getFormComponentRegistry();\n const issues: SchemaRegistryIssue[] = [];\n\n walkSchema(schema, 'schema', (node, nodePath) => {\n if (node.$field) {\n const key = String(node.$field);\n if (!fieldRegistry[key] && !isBuiltinFormFieldType(key)) {\n const issue: SchemaRegistryIssue = { path: nodePath, kind: 'field', key };\n issues.push(issue);\n if (failFast) {\n throw new Error(`SchemaForm: unregistered field \"${key}\" at ${nodePath}`);\n }\n }\n }\n\n if (node.$cmp) {\n const key = String(node.$cmp);\n if (!componentRegistry[key]) {\n const issue: SchemaRegistryIssue = { path: nodePath, kind: 'component', key };\n issues.push(issue);\n if (failFast) {\n throw new Error(`SchemaForm: unregistered component \"${key}\" at ${nodePath}`);\n }\n }\n }\n });\n\n return issues;\n};\n\n/** Dev helper: log registry gaps for a schema index root tree. */\nexport const debugSchemaRegistry = (\n schemaIndex: SchemaIndex | null | undefined,\n options?: AssertSchemaRegistryOptions,\n): SchemaRegistryIssue[] => {\n if (!schemaIndex?.schema) {\n return [];\n }\n\n const issues = assertSchemaRegistry(schemaIndex.schema, options);\n\n if (issues.length) {\n console.warn('[plugin-kit] SchemaForm registry gaps:', issues);\n }\n\n return issues;\n};\n"],"mappings":";;;AAgBA,IAAM,YAAY,UAAqD;AACnE,QAAO,QAAQ,MAAM,IAAI,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,MAAM;;AAG/E,IAAM,cACF,QACA,MACA,UACO;AACP,KAAI,OAAO,WAAW,SAClB;AAGJ,KAAI,MAAM,QAAQ,OAAO,EAAE;AACvB,SAAO,SAAS,MAAM,UAAU;AAC5B,OAAI,OAAO,SAAS,YAAY,CAAC,SAAS,KAAK,CAC3C;GAGJ,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM;AAClC,SAAM,MAAoB,SAAS;AACnC,cAAW,MAA0B,UAAU,MAAM;IACvD;AACF;;AAGJ,KAAI,CAAC,SAAS,OAAO,CACjB;CAGJ,MAAM,OAAO;AACb,OAAM,MAAM,KAAK;AAEjB,KAAI,KAAK,SACL,YAAW,KAAK,UAA8B,GAAG,KAAK,YAAY,MAAM;AAG5E,KAAI,KAAK,OACL,YAAW,KAAK,QAA4B,GAAG,KAAK,UAAU,MAAM;;;;;;AAQ5E,IAAa,wBACT,QACA,UAAuC,EAAE,KACjB;CACxB,MAAM,EAAE,WAAW,UAAU;CAE7B,MAAM,gBAAgB,sBAAsB;CAC5C,MAAM,oBAAoB,0BAA0B;CACpD,MAAM,SAAgC,EAAE;AAExC,YAAW,QAAQ,WAAW,MAAM,aAAa;AAC7C,MAAI,KAAK,QAAQ;GACb,MAAM,MAAM,OAAO,KAAK,OAAO;AAC/B,OAAI,CAAC,cAAc,QAAQ,CAAC,uBAAuB,IAAI,EAAE;IACrD,MAAM,QAA6B;KAAE,MAAM;KAAU,MAAM;KAAS;KAAK;AACzE,WAAO,KAAK,MAAM;AAClB,QAAI,SACA,OAAM,IAAI,MAAM,mCAAmC,IAAI,OAAO,WAAW;;;AAKrF,MAAI,KAAK,MAAM;GACX,MAAM,MAAM,OAAO,KAAK,KAAK;AAC7B,OAAI,CAAC,kBAAkB,MAAM;IACzB,MAAM,QAA6B;KAAE,MAAM;KAAU,MAAM;KAAa;KAAK;AAC7E,WAAO,KAAK,MAAM;AAClB,QAAI,SACA,OAAM,IAAI,MAAM,uCAAuC,IAAI,OAAO,WAAW;;;GAI3F;AAEF,QAAO;;;AAIX,IAAa,uBACT,aACA,YACwB;AACxB,KAAI,CAAC,aAAa,OACd,QAAO,EAAE;CAGb,MAAM,SAAS,qBAAqB,YAAY,QAAQ,QAAQ;AAEhE,KAAI,OAAO,OACP,SAAQ,KAAK,0CAA0C,OAAO;AAGlE,QAAO"}
@@ -0,0 +1,11 @@
1
+ import { SchemaFormFieldComponent } from './engine/context.js';
2
+ type BuiltinFieldLoader = () => Promise<SchemaFormFieldComponent>;
3
+ /**
4
+ * Built-in SchemaForm `$field` types load on first render so CP bundles only pay for
5
+ * field modules that appear in the active schema (e.g. no CodeMirror until `codeEditor`).
6
+ */
7
+ export declare const builtinFormFieldLoaders: Record<string, BuiltinFieldLoader>;
8
+ export declare const isBuiltinFormFieldType: (name: string) => boolean;
9
+ export declare const loadBuiltinFormField: (name: string) => Promise<SchemaFormFieldComponent | null>;
10
+ export {};
11
+ //# sourceMappingURL=builtin-field-loaders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin-field-loaders.d.ts","sourceRoot":"","sources":["../../src/forms/builtin-field-loaders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEpE,KAAK,kBAAkB,GAAG,MAAM,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAatE,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,MAAM,MAAM,KAAG,OAErD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAQhG,CAAC"}
@@ -0,0 +1,31 @@
1
+ //#region src/forms/builtin-field-loaders.ts
2
+ /**
3
+ * Built-in SchemaForm `$field` types load on first render so CP bundles only pay for
4
+ * field modules that appear in the active schema (e.g. no CodeMirror until `codeEditor`).
5
+ */
6
+ var builtinFormFieldLoaders = {
7
+ text: async () => (await import("./fields/TextField.js")).TextField,
8
+ textarea: async () => (await import("./fields/TextareaField.js")).TextareaField,
9
+ number: async () => (await import("./fields/NumberField.js")).NumberField,
10
+ select: async () => (await import("./fields/SelectField.js")).SelectField,
11
+ lightswitch: async () => (await import("./fields/LightswitchField.js")).LightswitchField,
12
+ color: async () => (await import("./fields/ColorField.js")).ColorField,
13
+ radioGroup: async () => (await import("./fields/RadioGroupField.js")).RadioGroupField,
14
+ checkboxSelect: async () => (await import("./fields/CheckboxSelectField.js")).CheckboxSelectField,
15
+ combobox: async () => (await import("./fields/ComboboxField.js")).ComboboxField,
16
+ group: async () => (await import("./fields/GroupField.js")).GroupField,
17
+ date: async () => (await import("./fields/DateTimeField.js")).DateTimeField,
18
+ codeEditor: async () => (await import("./fields/CodeEditorField.js")).CodeEditorField
19
+ };
20
+ var isBuiltinFormFieldType = (name) => {
21
+ return Object.prototype.hasOwnProperty.call(builtinFormFieldLoaders, name);
22
+ };
23
+ var loadBuiltinFormField = async (name) => {
24
+ const loader = builtinFormFieldLoaders[name];
25
+ if (!loader) return null;
26
+ return loader();
27
+ };
28
+ //#endregion
29
+ export { isBuiltinFormFieldType, loadBuiltinFormField };
30
+
31
+ //# sourceMappingURL=builtin-field-loaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin-field-loaders.js","names":[],"sources":["../../src/forms/builtin-field-loaders.ts"],"sourcesContent":["import type { SchemaFormFieldComponent } from './engine/context.js';\n\ntype BuiltinFieldLoader = () => Promise<SchemaFormFieldComponent>;\n\n/**\n * Built-in SchemaForm `$field` types load on first render so CP bundles only pay for\n * field modules that appear in the active schema (e.g. no CodeMirror until `codeEditor`).\n */\nexport const builtinFormFieldLoaders: Record<string, BuiltinFieldLoader> = {\n text: async () => (await import('./fields/TextField.js')).TextField as SchemaFormFieldComponent,\n textarea: async () => (await import('./fields/TextareaField.js')).TextareaField as SchemaFormFieldComponent,\n number: async () => (await import('./fields/NumberField.js')).NumberField as SchemaFormFieldComponent,\n select: async () => (await import('./fields/SelectField.js')).SelectField as SchemaFormFieldComponent,\n lightswitch: async () => (await import('./fields/LightswitchField.js')).LightswitchField as SchemaFormFieldComponent,\n color: async () => (await import('./fields/ColorField.js')).ColorField as SchemaFormFieldComponent,\n radioGroup: async () => (await import('./fields/RadioGroupField.js')).RadioGroupField as SchemaFormFieldComponent,\n checkboxSelect: async () => (await import('./fields/CheckboxSelectField.js')).CheckboxSelectField as SchemaFormFieldComponent,\n combobox: async () => (await import('./fields/ComboboxField.js')).ComboboxField as SchemaFormFieldComponent,\n group: async () => (await import('./fields/GroupField.js')).GroupField as SchemaFormFieldComponent,\n date: async () => (await import('./fields/DateTimeField.js')).DateTimeField as SchemaFormFieldComponent,\n codeEditor: async () => (await import('./fields/CodeEditorField.js')).CodeEditorField as SchemaFormFieldComponent,\n};\n\nexport const isBuiltinFormFieldType = (name: string): boolean => {\n return Object.prototype.hasOwnProperty.call(builtinFormFieldLoaders, name);\n};\n\nexport const loadBuiltinFormField = async (name: string): Promise<SchemaFormFieldComponent | null> => {\n const loader = builtinFormFieldLoaders[name];\n\n if (!loader) {\n return null;\n }\n\n return loader();\n};\n"],"mappings":";;;;;AAQA,IAAa,0BAA8D;CACvE,MAAM,aAAa,MAAM,OAAO,0BAA0B;CAC1D,UAAU,aAAa,MAAM,OAAO,8BAA8B;CAClE,QAAQ,aAAa,MAAM,OAAO,4BAA4B;CAC9D,QAAQ,aAAa,MAAM,OAAO,4BAA4B;CAC9D,aAAa,aAAa,MAAM,OAAO,iCAAiC;CACxE,OAAO,aAAa,MAAM,OAAO,2BAA2B;CAC5D,YAAY,aAAa,MAAM,OAAO,gCAAgC;CACtE,gBAAgB,aAAa,MAAM,OAAO,oCAAoC;CAC9E,UAAU,aAAa,MAAM,OAAO,8BAA8B;CAClE,OAAO,aAAa,MAAM,OAAO,2BAA2B;CAC5D,MAAM,aAAa,MAAM,OAAO,8BAA8B;CAC9D,YAAY,aAAa,MAAM,OAAO,gCAAgC;CACzE;AAED,IAAa,0BAA0B,SAA0B;AAC7D,QAAO,OAAO,UAAU,eAAe,KAAK,yBAAyB,KAAK;;AAG9E,IAAa,uBAAuB,OAAO,SAA2D;CAClG,MAAM,SAAS,wBAAwB;AAEvC,KAAI,CAAC,OACD,QAAO;AAGX,QAAO,QAAQ"}
@@ -1,10 +1,16 @@
1
- import { SchemaFormComponentProps } from '../engine/context';
1
+ import { ReactNode } from 'react';
2
+ import { SchemaFormComponentProps } from '../engine/context.js';
3
+ /**
4
+ * Schema `$cmp: 'FieldWrap'` — labels a horizontal cluster of nested fields and
5
+ * surfaces grouped nested errors on the wrapper (kit v1 FieldWrap contract).
6
+ */
2
7
  export declare const FieldWrap: (({ name, label, instructions, required, warning, children, schemaNode, }: SchemaFormComponentProps & {
3
8
  name?: string;
4
9
  label?: string;
5
10
  instructions?: string;
6
11
  required?: boolean;
7
12
  warning?: string;
13
+ children?: ReactNode;
8
14
  }) => import("react/jsx-runtime").JSX.Element) & {
9
15
  usesSchemaNode: true;
10
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"FieldWrap.d.ts","sourceRoot":"","sources":["../../../src/forms/components/FieldWrap.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AA6ClE,eAAO,MAAM,SAAS,6EAQnB,wBAAwB,GAAG;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;;CAgEoC,CAAC"}
1
+ {"version":3,"file":"FieldWrap.d.ts","sourceRoot":"","sources":["../../../src/forms/components/FieldWrap.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAsBrE;;;GAGG;AACH,eAAO,MAAM,SAAS,6EAQnB,wBAAwB,GAAG;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB;;CAyEoC,CAAC"}
@@ -1,20 +1,9 @@
1
- import { FieldLayout, InlineFieldErrorVisibilityContext } from "../Field.js";
1
+ import { FieldLayout } from "../Field.js";
2
2
  import { useSchemaEngineContext } from "../engine/context.js";
3
+ import { collectSchemaFieldNames } from "./schemaErrors.js";
3
4
  import { useMemo, useSyncExternalStore } from "react";
4
5
  import { jsx } from "react/jsx-runtime";
5
6
  //#region src/forms/components/FieldWrap.tsx
6
- var collectFieldNames = (schema, names) => {
7
- if (Array.isArray(schema)) {
8
- schema.forEach((entry) => {
9
- collectFieldNames(entry, names);
10
- });
11
- return;
12
- }
13
- if (!schema || typeof schema !== "object") return;
14
- if (schema.$field && typeof schema.name === "string" && schema.name) names.add(schema.name);
15
- if (Array.isArray(schema.children)) collectFieldNames(schema.children, names);
16
- if (Array.isArray(schema.schema)) collectFieldNames(schema.schema, names);
17
- };
18
7
  var ATTRIBUTE_MESSAGE_PATTERN = /^(.+?) (cannot be blank\.|must be .+)$/;
19
8
  var formatWrapperMessage = (message, wrapperLabel) => {
20
9
  if (!wrapperLabel) return message;
@@ -25,13 +14,15 @@ var formatWrapperMessage = (message, wrapperLabel) => {
25
14
  }
26
15
  return `${wrapperLabel} ${message}`;
27
16
  };
17
+ /**
18
+ * Schema `$cmp: 'FieldWrap'` — labels a horizontal cluster of nested fields and
19
+ * surfaces grouped nested errors on the wrapper (kit v1 FieldWrap contract).
20
+ */
28
21
  var FieldWrap = Object.assign(({ name, label, instructions, required, warning, children, schemaNode }) => {
29
22
  const form = useSchemaEngineContext();
30
23
  const fieldName = name || label || "field";
31
24
  const nestedFieldNames = useMemo(() => {
32
- const names = /* @__PURE__ */ new Set();
33
- collectFieldNames(schemaNode?.children || [], names);
34
- return Array.from(names);
25
+ return Array.from(collectSchemaFieldNames(schemaNode?.children || []));
35
26
  }, [schemaNode]);
36
27
  const errorMap = useSyncExternalStore(form.store.subscribe.bind(form.store), () => {
37
28
  return form.getErrorMapFields() || {};
@@ -68,13 +59,16 @@ var FieldWrap = Object.assign(({ name, label, instructions, required, warning, c
68
59
  name,
69
60
  nestedFieldNames
70
61
  ]),
71
- withControl: false,
72
- children: /* @__PURE__ */ jsx(InlineFieldErrorVisibilityContext.Provider, {
73
- value: false,
74
- children: /* @__PURE__ */ jsx("div", {
75
- className: "flex items-center flex-row gap-2",
76
- children
77
- })
62
+ children: /* @__PURE__ */ jsx("div", {
63
+ "data-pk-field-wrap-controls": "",
64
+ style: {
65
+ display: "flex",
66
+ alignItems: "center",
67
+ flexDirection: "row",
68
+ flexWrap: "wrap",
69
+ gap: "0.5rem"
70
+ },
71
+ children
78
72
  })
79
73
  });
80
74
  }, { usesSchemaNode: true });
@@ -1 +1 @@
1
- {"version":3,"file":"FieldWrap.js","names":[],"sources":["../../../src/forms/components/FieldWrap.tsx"],"sourcesContent":["import { useMemo, useSyncExternalStore } from 'react';\n\nimport { FieldLayout, InlineFieldErrorVisibilityContext } from '../Field';\nimport type { SchemaFormComponentProps } from '../engine/context';\nimport { useSchemaEngineContext } from '../engine/context';\nimport type { SchemaRenderable } from '../engine/SchemaIndex';\n\nconst collectFieldNames = (schema: SchemaRenderable, names: Set<string>) => {\n if (Array.isArray(schema)) {\n schema.forEach((entry) => {\n collectFieldNames(entry, names);\n });\n return;\n }\n\n if (!schema || typeof schema !== 'object') {\n return;\n }\n\n if (schema.$field && typeof schema.name === 'string' && schema.name) {\n names.add(schema.name);\n }\n\n if (Array.isArray(schema.children)) {\n collectFieldNames(schema.children, names);\n }\n\n if (Array.isArray(schema.schema)) {\n collectFieldNames(schema.schema, names);\n }\n};\n\nconst ATTRIBUTE_MESSAGE_PATTERN = /^(.+?) (cannot be blank\\.|must be .+)$/;\n\nconst formatWrapperMessage = (message: string, wrapperLabel?: string) => {\n if (!wrapperLabel) {\n return message;\n }\n\n const match = String(message).match(ATTRIBUTE_MESSAGE_PATTERN);\n if (match) {\n const [, , suffix] = match;\n return `${wrapperLabel} ${suffix}`;\n }\n\n return `${wrapperLabel} ${message}`;\n};\n\nexport const FieldWrap = Object.assign(({\n name,\n label,\n instructions,\n required,\n warning,\n children,\n schemaNode,\n}: SchemaFormComponentProps & {\n name?: string;\n label?: string;\n instructions?: string;\n required?: boolean;\n warning?: string;\n}) => {\n const form = useSchemaEngineContext();\n const fieldName = name || label || 'field';\n const nestedFieldNames = useMemo(() => {\n const names = new Set<string>();\n collectFieldNames(schemaNode?.children || [], names);\n return Array.from(names);\n }, [schemaNode]);\n const errorMap = useSyncExternalStore(\n form.store.subscribe.bind(form.store),\n () => {\n return (form.getErrorMapFields() || {}) as Record<string, string[]>;\n },\n () => {\n return {} as Record<string, string[]>;\n },\n );\n const errors = useMemo(() => {\n if (name && typeof form?.getGroupedErrorsForPath === 'function') {\n return form.getGroupedErrorsForPath(name) || [];\n }\n\n if (!nestedFieldNames.length) {\n return [];\n }\n\n const groupedErrors: string[] = [];\n\n nestedFieldNames.forEach((fieldPath) => {\n (errorMap[fieldPath] || []).forEach((message: string) => {\n groupedErrors.push(formatWrapperMessage(String(message), label || name || fieldName));\n });\n\n Object.entries(errorMap).forEach(([errorPath, messages]) => {\n if (!errorPath.startsWith(`${fieldPath}.`)) {\n return;\n }\n\n (messages || []).forEach((message: string) => {\n groupedErrors.push(formatWrapperMessage(String(message), label || name || fieldName));\n });\n });\n });\n\n return Array.from(new Set(groupedErrors));\n }, [errorMap, fieldName, form, label, name, nestedFieldNames]);\n\n return (\n <FieldLayout\n name={fieldName}\n label={label}\n instructions={instructions}\n required={required}\n warning={warning}\n errors={errors}\n withControl={false}\n >\n <InlineFieldErrorVisibilityContext.Provider value={false}>\n <div className=\"flex items-center flex-row gap-2\">\n {children}\n </div>\n </InlineFieldErrorVisibilityContext.Provider>\n </FieldLayout>\n );\n}, { usesSchemaNode: true as const });\n"],"mappings":";;;;;AAOA,IAAM,qBAAqB,QAA0B,UAAuB;AACxE,KAAI,MAAM,QAAQ,OAAO,EAAE;AACvB,SAAO,SAAS,UAAU;AACtB,qBAAkB,OAAO,MAAM;IACjC;AACF;;AAGJ,KAAI,CAAC,UAAU,OAAO,WAAW,SAC7B;AAGJ,KAAI,OAAO,UAAU,OAAO,OAAO,SAAS,YAAY,OAAO,KAC3D,OAAM,IAAI,OAAO,KAAK;AAG1B,KAAI,MAAM,QAAQ,OAAO,SAAS,CAC9B,mBAAkB,OAAO,UAAU,MAAM;AAG7C,KAAI,MAAM,QAAQ,OAAO,OAAO,CAC5B,mBAAkB,OAAO,QAAQ,MAAM;;AAI/C,IAAM,4BAA4B;AAElC,IAAM,wBAAwB,SAAiB,iBAA0B;AACrE,KAAI,CAAC,aACD,QAAO;CAGX,MAAM,QAAQ,OAAO,QAAQ,CAAC,MAAM,0BAA0B;AAC9D,KAAI,OAAO;EACP,MAAM,KAAK,UAAU;AACrB,SAAO,GAAG,aAAa,GAAG;;AAG9B,QAAO,GAAG,aAAa,GAAG;;AAG9B,IAAa,YAAY,OAAO,QAAQ,EACpC,MACA,OACA,cACA,UACA,SACA,UACA,iBAOE;CACF,MAAM,OAAO,wBAAwB;CACrC,MAAM,YAAY,QAAQ,SAAS;CACnC,MAAM,mBAAmB,cAAc;EACnC,MAAM,wBAAQ,IAAI,KAAa;AAC/B,oBAAkB,YAAY,YAAY,EAAE,EAAE,MAAM;AACpD,SAAO,MAAM,KAAK,MAAM;IACzB,CAAC,WAAW,CAAC;CAChB,MAAM,WAAW,qBACb,KAAK,MAAM,UAAU,KAAK,KAAK,MAAM,QAC/B;AACF,SAAQ,KAAK,mBAAmB,IAAI,EAAE;UAEpC;AACF,SAAO,EAAE;GAEhB;AA+BD,QACI,oBAAC,aAAD;EACI,MAAM;EACC;EACO;EACJ;EACD;EACD,QArCD,cAAc;AACzB,OAAI,QAAQ,OAAO,MAAM,4BAA4B,WACjD,QAAO,KAAK,wBAAwB,KAAK,IAAI,EAAE;AAGnD,OAAI,CAAC,iBAAiB,OAClB,QAAO,EAAE;GAGb,MAAM,gBAA0B,EAAE;AAElC,oBAAiB,SAAS,cAAc;AACpC,KAAC,SAAS,cAAc,EAAE,EAAE,SAAS,YAAoB;AACrD,mBAAc,KAAK,qBAAqB,OAAO,QAAQ,EAAE,SAAS,QAAQ,UAAU,CAAC;MACvF;AAEF,WAAO,QAAQ,SAAS,CAAC,SAAS,CAAC,WAAW,cAAc;AACxD,SAAI,CAAC,UAAU,WAAW,GAAG,UAAU,GAAG,CACtC;AAGJ,MAAC,YAAY,EAAE,EAAE,SAAS,YAAoB;AAC1C,oBAAc,KAAK,qBAAqB,OAAO,QAAQ,EAAE,SAAS,QAAQ,UAAU,CAAC;OACvF;MACJ;KACJ;AAEF,UAAO,MAAM,KAAK,IAAI,IAAI,cAAc,CAAC;KAC1C;GAAC;GAAU;GAAW;GAAM;GAAO;GAAM;GAAiB,CAS7C;EACR,aAAa;YAEb,oBAAC,kCAAkC,UAAnC;GAA4C,OAAO;aAC/C,oBAAC,OAAD;IAAK,WAAU;IACV;IACC,CAAA;GACmC,CAAA;EACnC,CAAA;GAEnB,EAAE,gBAAgB,MAAe,CAAC"}
1
+ {"version":3,"file":"FieldWrap.js","names":[],"sources":["../../../src/forms/components/FieldWrap.tsx"],"sourcesContent":["import { useMemo, useSyncExternalStore, type ReactNode } from 'react';\n\nimport { FieldLayout } from '../Field.js';\nimport type { SchemaFormComponentProps } from '../engine/context.js';\nimport { useSchemaEngineContext } from '../engine/context.js';\nimport type { SchemaRenderable } from '@verbb/plugin-kit-forms';\n\nimport { collectSchemaFieldNames } from './schemaErrors.js';\n\nconst ATTRIBUTE_MESSAGE_PATTERN = /^(.+?) (cannot be blank\\.|must be .+)$/;\n\nconst formatWrapperMessage = (message: string, wrapperLabel?: string) => {\n if (!wrapperLabel) {\n return message;\n }\n\n const match = String(message).match(ATTRIBUTE_MESSAGE_PATTERN);\n if (match) {\n const [, , suffix] = match;\n return `${wrapperLabel} ${suffix}`;\n }\n\n return `${wrapperLabel} ${message}`;\n};\n\n/**\n * Schema `$cmp: 'FieldWrap'` — labels a horizontal cluster of nested fields and\n * surfaces grouped nested errors on the wrapper (kit v1 FieldWrap contract).\n */\nexport const FieldWrap = Object.assign(({\n name,\n label,\n instructions,\n required,\n warning,\n children,\n schemaNode,\n}: SchemaFormComponentProps & {\n name?: string;\n label?: string;\n instructions?: string;\n required?: boolean;\n warning?: string;\n children?: ReactNode;\n}) => {\n const form = useSchemaEngineContext();\n const fieldName = name || label || 'field';\n const nestedFieldNames = useMemo(() => {\n return Array.from(collectSchemaFieldNames(schemaNode?.children || [] as SchemaRenderable));\n }, [schemaNode]);\n const errorMap = useSyncExternalStore(\n form.store.subscribe.bind(form.store),\n () => {\n return (form.getErrorMapFields() || {}) as Record<string, string[]>;\n },\n () => {\n return {} as Record<string, string[]>;\n },\n );\n const errors = useMemo(() => {\n if (name && typeof form?.getGroupedErrorsForPath === 'function') {\n return form.getGroupedErrorsForPath(name) || [];\n }\n\n if (!nestedFieldNames.length) {\n return [];\n }\n\n const groupedErrors: string[] = [];\n\n nestedFieldNames.forEach((fieldPath) => {\n (errorMap[fieldPath] || []).forEach((message: string) => {\n groupedErrors.push(formatWrapperMessage(String(message), label || name || fieldName));\n });\n\n Object.entries(errorMap).forEach(([errorPath, messages]) => {\n if (!errorPath.startsWith(`${fieldPath}.`)) {\n return;\n }\n\n (messages || []).forEach((message: string) => {\n groupedErrors.push(formatWrapperMessage(String(message), label || name || fieldName));\n });\n });\n });\n\n return Array.from(new Set(groupedErrors));\n }, [errorMap, fieldName, form, label, name, nestedFieldNames]);\n\n return (\n <FieldLayout\n name={fieldName}\n label={label}\n instructions={instructions}\n required={required}\n warning={warning}\n errors={errors}\n >\n {/*\n Horizontal control cluster (v1 FieldWrap). Nested pk-fields shrink via\n `[data-pk-field-wrap-controls] pk-field` in kit-react style.css — not a\n global unlabeled FieldLayout rule (that broke full-width conditions tables).\n */}\n <div\n data-pk-field-wrap-controls=\"\"\n style={{\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: '0.5rem',\n }}\n >\n {children}\n </div>\n </FieldLayout>\n );\n}, { usesSchemaNode: true as const });\n"],"mappings":";;;;;;AASA,IAAM,4BAA4B;AAElC,IAAM,wBAAwB,SAAiB,iBAA0B;AACrE,KAAI,CAAC,aACD,QAAO;CAGX,MAAM,QAAQ,OAAO,QAAQ,CAAC,MAAM,0BAA0B;AAC9D,KAAI,OAAO;EACP,MAAM,KAAK,UAAU;AACrB,SAAO,GAAG,aAAa,GAAG;;AAG9B,QAAO,GAAG,aAAa,GAAG;;;;;;AAO9B,IAAa,YAAY,OAAO,QAAQ,EACpC,MACA,OACA,cACA,UACA,SACA,UACA,iBAQE;CACF,MAAM,OAAO,wBAAwB;CACrC,MAAM,YAAY,QAAQ,SAAS;CACnC,MAAM,mBAAmB,cAAc;AACnC,SAAO,MAAM,KAAK,wBAAwB,YAAY,YAAY,EAAE,CAAqB,CAAC;IAC3F,CAAC,WAAW,CAAC;CAChB,MAAM,WAAW,qBACb,KAAK,MAAM,UAAU,KAAK,KAAK,MAAM,QAC/B;AACF,SAAQ,KAAK,mBAAmB,IAAI,EAAE;UAEpC;AACF,SAAO,EAAE;GAEhB;AA+BD,QACI,oBAAC,aAAD;EACI,MAAM;EACC;EACO;EACJ;EACD;EACD,QArCD,cAAc;AACzB,OAAI,QAAQ,OAAO,MAAM,4BAA4B,WACjD,QAAO,KAAK,wBAAwB,KAAK,IAAI,EAAE;AAGnD,OAAI,CAAC,iBAAiB,OAClB,QAAO,EAAE;GAGb,MAAM,gBAA0B,EAAE;AAElC,oBAAiB,SAAS,cAAc;AACpC,KAAC,SAAS,cAAc,EAAE,EAAE,SAAS,YAAoB;AACrD,mBAAc,KAAK,qBAAqB,OAAO,QAAQ,EAAE,SAAS,QAAQ,UAAU,CAAC;MACvF;AAEF,WAAO,QAAQ,SAAS,CAAC,SAAS,CAAC,WAAW,cAAc;AACxD,SAAI,CAAC,UAAU,WAAW,GAAG,UAAU,GAAG,CACtC;AAGJ,MAAC,YAAY,EAAE,EAAE,SAAS,YAAoB;AAC1C,oBAAc,KAAK,qBAAqB,OAAO,QAAQ,EAAE,SAAS,QAAQ,UAAU,CAAC;OACvF;MACJ;KACJ;AAEF,UAAO,MAAM,KAAK,IAAI,IAAI,cAAc,CAAC;KAC1C;GAAC;GAAU;GAAW;GAAM;GAAO;GAAM;GAAiB,CAS7C;YAOR,oBAAC,OAAD;GACI,+BAA4B;GAC5B,OAAO;IACH,SAAS;IACT,YAAY;IACZ,eAAe;IACf,UAAU;IACV,KAAK;IACR;GAEA;GACC,CAAA;EACI,CAAA;GAEnB,EAAE,gBAAgB,MAAe,CAAC"}
@@ -1,21 +1,36 @@
1
- import { SchemaFormComponentProps } from '../engine/context';
1
+ import { ReactNode } from 'react';
2
+ import { SchemaFormComponentProps } from '../engine/context.js';
3
+ import { SchemaNode } from '@verbb/plugin-kit-forms';
2
4
  export declare const useModalTabsErrors: () => Record<string, boolean>;
3
- declare const ModalTabs: (({ children, schema, schemaNode, ...props }: SchemaFormComponentProps) => import("react/jsx-runtime").JSX.Element) & {
5
+ type ModalTabsRootProps = SchemaFormComponentProps & {
6
+ children?: ReactNode;
7
+ className?: string;
8
+ value?: string;
9
+ defaultValue?: string;
10
+ };
11
+ /**
12
+ * Schema `$cmp: 'ModalTabs'` — wraps stock `Tabs` `variant="modal"`.
13
+ * Owns tab ↔ schema error mapping (same contract as kit v1 ModalTabs).
14
+ */
15
+ declare const ModalTabs: (({ children, schemaNode, schema, _id: _schemaId, _data: _schemaData, className, value: controlledValue, defaultValue, ...props }: ModalTabsRootProps & {
16
+ schema?: SchemaNode;
17
+ _id?: string;
18
+ _data?: Record<string, unknown>;
19
+ }) => import("react/jsx-runtime").JSX.Element) & {
4
20
  usesSchemaNode: true;
5
21
  };
6
- declare function ModalTabsList({ children, ...props }: {
7
- [x: string]: any;
8
- children: any;
22
+ declare function ModalTabsList({ children }: {
23
+ children?: ReactNode;
9
24
  }): import("react/jsx-runtime").JSX.Element;
10
- declare function ModalTabsTrigger({ children, value, ...props }: {
11
- [x: string]: any;
12
- children: any;
13
- value: any;
25
+ declare function ModalTabsTrigger({ children, value, className, ...props }: {
26
+ children?: ReactNode;
27
+ value?: string;
28
+ className?: string;
14
29
  }): import("react/jsx-runtime").JSX.Element;
15
- declare function ModalTabsContent({ children, value, ...props }: {
16
- [x: string]: any;
17
- children: any;
18
- value: any;
30
+ declare function ModalTabsContent({ children, className, ...props }: {
31
+ children?: ReactNode;
32
+ className?: string;
33
+ value?: string;
19
34
  }): import("react/jsx-runtime").JSX.Element;
20
35
  export { ModalTabs, ModalTabsList, ModalTabsTrigger, ModalTabsContent, };
21
36
  //# sourceMappingURL=ModalTabs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModalTabs.d.ts","sourceRoot":"","sources":["../../../src/forms/components/ModalTabs.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAOlE,eAAO,MAAM,kBAAkB,+BAE9B,CAAC;AAEF,QAAA,MAAM,SAAS,gDAEZ,wBAAwB;;CAmDU,CAAC;AAEtC,iBAAS,aAAa,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE;;;CAAA,2CAE5C;AAED,iBAAS,gBAAgB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE;;;;CAAA,2CAsBtD;AAED,iBAAS,gBAAgB,CAAC,EACtB,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAC5B;;;;CAAA,2CAQA;AAED,OAAO,EACH,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACnB,CAAC"}
1
+ {"version":3,"file":"ModalTabs.d.ts","sourceRoot":"","sources":["../../../src/forms/components/ModalTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQH,KAAK,SAAS,EACjB,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAM1D,eAAO,MAAM,kBAAkB,+BAE9B,CAAC;AAEF,KAAK,kBAAkB,GAAG,wBAAwB,GAAG;IACjD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AA8DF;;;GAGG;AACH,QAAA,MAAM,SAAS,qIAYZ,kBAAkB,GAAG;IACpB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;;CAmIoC,CAAC;AAEtC,iBAAS,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,2CAG5D;AAED,iBAAS,gBAAgB,CAAC,EACtB,QAAQ,EACR,KAAK,EACL,SAAS,EACT,GAAG,KAAK,EACX,EAAE;IACC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,2CAsBA;AAED,iBAAS,gBAAgB,CAAC,EACtB,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACX,EAAE;IACC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,2CAQA;AAED,OAAO,EACH,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACnB,CAAC"}
@@ -1,22 +1,57 @@
1
- import { cn } from "../../utils/classes.js";
2
- import { hasSchemaErrorsCached } from "../../utils/schemaIndexCache.js";
3
- import "../../utils/index.js";
4
- import { ModalTabs as ModalTabs$1, ModalTabsContent as ModalTabsContent$1, ModalTabsList as ModalTabsList$1, ModalTabsTrigger as ModalTabsTrigger$1 } from "../../components/ModalTabs.js";
5
- import "../../components/index.js";
1
+ import { Icon } from "../../components/Icon.js";
2
+ import { Tab, TabPanel, Tabs } from "../../components/Tabs.js";
6
3
  import { SchemaEngineContext } from "../engine/context.js";
7
- import { createContext, useCallback, useContext, useEffect, useState } from "react";
4
+ import { schemaSubtreeHasErrors } from "./schemaErrors.js";
5
+ import { cn } from "../../utils/cn.js";
6
+ import { Fragment, createContext, useCallback, useContext, useEffect, useMemo, useState } from "react";
8
7
  import { jsx, jsxs } from "react/jsx-runtime";
9
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
10
- import { faTriangleExclamation } from "@fortawesome/pro-solid-svg-icons";
8
+ import { evaluateCondition } from "@verbb/plugin-kit-forms";
11
9
  //#region src/forms/components/ModalTabs.tsx
12
10
  var ModalTabsErrorsContext = createContext({});
13
11
  var useModalTabsErrors = () => {
14
12
  return useContext(ModalTabsErrorsContext);
15
13
  };
16
- var ModalTabs = Object.assign(({ children, schema, schemaNode, ...props }) => {
14
+ var isRecord = (value) => {
15
+ return typeof value === "object" && value !== null && !Array.isArray(value);
16
+ };
17
+ /**
18
+ * Collect ModalTabsTrigger handles + optional tab-level `if` from schema.
19
+ * O(schema nodes under this ModalTabs) once per schema identity — not nested field visibility.
20
+ */
21
+ var collectTabHandles = (node) => {
22
+ if (!node?.children) return [];
23
+ const handles = [];
24
+ const visit = (items) => {
25
+ if (!Array.isArray(items)) return;
26
+ items.forEach((item) => {
27
+ if (!isRecord(item)) return;
28
+ const child = item;
29
+ if (child.$cmp === "ModalTabsTrigger") {
30
+ const value = typeof child.props?.value === "string" ? child.props.value : typeof child.value === "string" ? child.value : "";
31
+ if (value) handles.push({
32
+ value,
33
+ if: typeof child.if === "string" ? child.if : void 0
34
+ });
35
+ return;
36
+ }
37
+ if (child.children) visit(child.children);
38
+ });
39
+ };
40
+ visit(node.children);
41
+ return handles;
42
+ };
43
+ /**
44
+ * Schema `$cmp: 'ModalTabs'` — wraps stock `Tabs` `variant="modal"`.
45
+ * Owns tab ↔ schema error mapping (same contract as kit v1 ModalTabs).
46
+ */
47
+ var ModalTabs = Object.assign(({ children, schemaNode, schema, _id: _schemaId, _data: _schemaData, className, value: controlledValue, defaultValue = "", ...props }) => {
17
48
  const form = useContext(SchemaEngineContext);
18
49
  const node = schemaNode ?? schema;
19
50
  const [tabErrors, setTabErrors] = useState({});
51
+ const [uncontrolledValue, setUncontrolledValue] = useState(() => controlledValue ?? defaultValue ?? "");
52
+ const isControlled = controlledValue !== void 0 && controlledValue !== null;
53
+ const resolvedValue = isControlled ? String(controlledValue) : uncontrolledValue;
54
+ const tabHandles = useMemo(() => collectTabHandles(node), [node]);
20
55
  const getTabErrors = useCallback(() => {
21
56
  const errors = {};
22
57
  if (!node?.children || !form?.getErrorMapFields) return errors;
@@ -25,10 +60,21 @@ var ModalTabs = Object.assign(({ children, schema, schemaNode, ...props }) => {
25
60
  if (typeof item !== "object" || item === null || Array.isArray(item)) return;
26
61
  const childNode = item;
27
62
  const value = typeof childNode.props?.value === "string" ? childNode.props.value : "";
28
- if (childNode.$cmp === "ModalTabsContent" && value) errors[value] = hasSchemaErrorsCached(formErrors, childNode.children || []);
63
+ if (childNode.$cmp === "ModalTabsContent" && value) errors[value] = schemaSubtreeHasErrors(formErrors, childNode.children || []);
29
64
  });
30
65
  return errors;
31
66
  }, [form, node]);
67
+ /** First tab whose tab-level `if` (if any) currently passes. */
68
+ const getFirstVisibleTabValue = useCallback((values) => {
69
+ for (const handle of tabHandles) if (!handle.if || evaluateCondition(handle.if, values)) return handle.value;
70
+ return tabHandles[0]?.value ?? "";
71
+ }, [tabHandles]);
72
+ const isTabVisible = useCallback((tabValue, values) => {
73
+ const handle = tabHandles.find((item) => item.value === tabValue);
74
+ if (!handle) return false;
75
+ if (!handle.if) return true;
76
+ return evaluateCondition(handle.if, values);
77
+ }, [tabHandles]);
32
78
  useEffect(() => {
33
79
  if (!form?.store?.subscribe) {
34
80
  setTabErrors(getTabErrors());
@@ -36,44 +82,67 @@ var ModalTabs = Object.assign(({ children, schema, schemaNode, ...props }) => {
36
82
  }
37
83
  const update = () => {
38
84
  setTabErrors(getTabErrors());
85
+ if (isControlled) return;
86
+ const { values } = form.store.state;
87
+ const formValues = values && typeof values === "object" ? values : {};
88
+ if (!resolvedValue || isTabVisible(resolvedValue, formValues)) return;
89
+ const next = getFirstVisibleTabValue(formValues);
90
+ if (next && next !== resolvedValue) setUncontrolledValue(next);
39
91
  };
40
92
  update();
41
93
  return form.store.subscribe(update);
42
- }, [form, getTabErrors]);
94
+ }, [
95
+ form,
96
+ getFirstVisibleTabValue,
97
+ getTabErrors,
98
+ isControlled,
99
+ isTabVisible,
100
+ resolvedValue
101
+ ]);
43
102
  return /* @__PURE__ */ jsx(ModalTabsErrorsContext.Provider, {
44
103
  value: tabErrors,
45
- children: /* @__PURE__ */ jsx(ModalTabs$1, {
104
+ children: /* @__PURE__ */ jsx(Tabs, {
105
+ variant: "modal",
106
+ value: resolvedValue,
107
+ className: cn("h-full min-h-0", className),
46
108
  ...props,
109
+ onPkChange: (event) => {
110
+ event.stopPropagation();
111
+ const next = event.detail?.value;
112
+ if (typeof next !== "string" || !next || isControlled) return;
113
+ setUncontrolledValue(next);
114
+ },
47
115
  children
48
116
  })
49
117
  });
50
118
  }, { usesSchemaNode: true });
51
- function ModalTabsList({ children, ...props }) {
52
- return /* @__PURE__ */ jsx(ModalTabsList$1, {
53
- ...props,
54
- children
55
- });
119
+ function ModalTabsList({ children }) {
120
+ return /* @__PURE__ */ jsx(Fragment, { children });
56
121
  }
57
- function ModalTabsTrigger({ children, value, ...props }) {
122
+ function ModalTabsTrigger({ children, value, className, ...props }) {
58
123
  const tabErrors = useModalTabsErrors();
59
- const hasErrors = Boolean(tabErrors[value]);
60
- return /* @__PURE__ */ jsxs(ModalTabsTrigger$1, {
124
+ const hasErrors = Boolean(value && tabErrors[value]);
125
+ return /* @__PURE__ */ jsx(Tab, {
61
126
  value,
62
- "data-has-errors": hasErrors,
63
- className: cn("flex items-center gap-1", hasErrors && "text-error"),
127
+ "data-has-errors": hasErrors ? "true" : void 0,
128
+ className,
64
129
  ...props,
65
- children: [children, hasErrors && /* @__PURE__ */ jsx(FontAwesomeIcon, {
66
- icon: faTriangleExclamation,
67
- className: "block size-3"
68
- })]
130
+ slot: "nav",
131
+ children: /* @__PURE__ */ jsxs("span", {
132
+ className: "inline-flex items-center gap-1",
133
+ children: [children, hasErrors ? /* @__PURE__ */ jsx(Icon, {
134
+ icon: "triangle-exclamation",
135
+ className: "block size-3"
136
+ }) : null]
137
+ })
69
138
  });
70
139
  }
71
- function ModalTabsContent({ children, value, ...props }) {
72
- return /* @__PURE__ */ jsx(ModalTabsContent$1, {
73
- value,
140
+ function ModalTabsContent({ children, className, ...props }) {
141
+ return /* @__PURE__ */ jsx(TabPanel, {
142
+ className,
74
143
  ...props,
75
144
  children: /* @__PURE__ */ jsx("div", {
76
- className: cn("grid grid-cols-1 gap-4"),
145
+ className: "grid grid-cols-1 gap-4",
77
146
  children
78
147
  })
79
148
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ModalTabs.js","names":[],"sources":["../../../src/forms/components/ModalTabs.tsx"],"sourcesContent":["import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faTriangleExclamation } from '@fortawesome/pro-solid-svg-icons';\n\nimport {\n ModalTabs as BaseModalTabs,\n ModalTabsList as BaseModalTabsList,\n ModalTabsTrigger as BaseModalTabsTrigger,\n ModalTabsContent as BaseModalTabsContent,\n} from '../../components';\n\nimport { cn } from '../../utils';\nimport { hasSchemaErrorsCached } from '../../utils/schemaIndexCache';\n\nimport {\n createContext, useCallback, useContext, useEffect, useState,\n} from 'react';\n\nimport type { SchemaFormComponentProps } from '../engine/context';\nimport { SchemaEngineContext } from '../engine/context';\nimport type { SchemaNode } from '../engine/SchemaIndex';\n\n// Create a context to pass tab error information down\nconst ModalTabsErrorsContext = createContext<Record<string, boolean>>({});\n\nexport const useModalTabsErrors = () => {\n return useContext(ModalTabsErrorsContext);\n};\n\nconst ModalTabs = Object.assign(({\n children, schema, schemaNode, ...props\n}: SchemaFormComponentProps) => {\n const form = useContext(SchemaEngineContext);\n const node = schemaNode ?? schema;\n\n const [tabErrors, setTabErrors] = useState<Record<string, boolean>>({});\n\n const getTabErrors = useCallback(() => {\n const errors: Record<string, boolean> = {};\n\n if (!node?.children || !form?.getErrorMapFields) {\n return errors;\n }\n\n const formErrors = form.getErrorMapFields?.() || {};\n\n // Process schema children to find tab content\n Object.values(node.children as Record<string, unknown>).forEach((item) => {\n if (typeof item !== 'object' || item === null || Array.isArray(item)) {\n return;\n }\n\n const childNode = item as SchemaNode;\n const value = typeof childNode.props?.value === 'string' ? childNode.props.value : '';\n if (childNode.$cmp === 'ModalTabsContent' && value) {\n errors[value] = hasSchemaErrorsCached(formErrors, childNode.children || []);\n }\n });\n\n return errors;\n }, [form, node]);\n\n useEffect(() => {\n if (!form?.store?.subscribe) {\n setTabErrors(getTabErrors());\n return;\n }\n\n const update = () => {\n setTabErrors(getTabErrors());\n };\n\n update();\n const unsubscribe = form.store.subscribe(update);\n return unsubscribe;\n }, [form, getTabErrors]);\n\n return (\n <ModalTabsErrorsContext.Provider value={tabErrors}>\n <BaseModalTabs {...props}>{children}</BaseModalTabs>\n </ModalTabsErrorsContext.Provider>\n );\n}, { usesSchemaNode: true as const });\n\nfunction ModalTabsList({ children, ...props }) {\n return <BaseModalTabsList {...props}>{children}</BaseModalTabsList>;\n}\n\nfunction ModalTabsTrigger({ children, value, ...props }) {\n // Get tab errors from context\n const tabErrors = useModalTabsErrors();\n\n // Check if this specific tab has errors\n const hasErrors = Boolean(tabErrors[value]);\n\n return <BaseModalTabsTrigger\n value={value}\n data-has-errors={hasErrors}\n className={cn(\n 'flex items-center gap-1',\n hasErrors && 'text-error',\n )}\n {...props}\n >\n {children}\n\n {hasErrors && (\n <FontAwesomeIcon icon={faTriangleExclamation} className=\"block size-3\" />\n )}\n </BaseModalTabsTrigger>;\n}\n\nfunction ModalTabsContent({\n children, value, ...props\n}) {\n return (\n <BaseModalTabsContent value={value} {...props}>\n <div className={cn(\n 'grid grid-cols-1 gap-4',\n )}>{children}</div>\n </BaseModalTabsContent>\n );\n}\n\nexport {\n ModalTabs,\n ModalTabsList,\n ModalTabsTrigger,\n ModalTabsContent,\n};\n"],"mappings":";;;;;;;;;;;AAsBA,IAAM,yBAAyB,cAAuC,EAAE,CAAC;AAEzE,IAAa,2BAA2B;AACpC,QAAO,WAAW,uBAAuB;;AAG7C,IAAM,YAAY,OAAO,QAAQ,EAC7B,UAAU,QAAQ,YAAY,GAAG,YACL;CAC5B,MAAM,OAAO,WAAW,oBAAoB;CAC5C,MAAM,OAAO,cAAc;CAE3B,MAAM,CAAC,WAAW,gBAAgB,SAAkC,EAAE,CAAC;CAEvE,MAAM,eAAe,kBAAkB;EACnC,MAAM,SAAkC,EAAE;AAE1C,MAAI,CAAC,MAAM,YAAY,CAAC,MAAM,kBAC1B,QAAO;EAGX,MAAM,aAAa,KAAK,qBAAqB,IAAI,EAAE;AAGnD,SAAO,OAAO,KAAK,SAAoC,CAAC,SAAS,SAAS;AACtE,OAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,MAAM,QAAQ,KAAK,CAChE;GAGJ,MAAM,YAAY;GAClB,MAAM,QAAQ,OAAO,UAAU,OAAO,UAAU,WAAW,UAAU,MAAM,QAAQ;AACnF,OAAI,UAAU,SAAS,sBAAsB,MACzC,QAAO,SAAS,sBAAsB,YAAY,UAAU,YAAY,EAAE,CAAC;IAEjF;AAEF,SAAO;IACR,CAAC,MAAM,KAAK,CAAC;AAEhB,iBAAgB;AACZ,MAAI,CAAC,MAAM,OAAO,WAAW;AACzB,gBAAa,cAAc,CAAC;AAC5B;;EAGJ,MAAM,eAAe;AACjB,gBAAa,cAAc,CAAC;;AAGhC,UAAQ;AAER,SADoB,KAAK,MAAM,UAAU,OAClC;IACR,CAAC,MAAM,aAAa,CAAC;AAExB,QACI,oBAAC,uBAAuB,UAAxB;EAAiC,OAAO;YACpC,oBAAC,aAAD;GAAe,GAAI;GAAQ;GAAyB,CAAA;EACtB,CAAA;GAEvC,EAAE,gBAAgB,MAAe,CAAC;AAErC,SAAS,cAAc,EAAE,UAAU,GAAG,SAAS;AAC3C,QAAO,oBAAC,iBAAD;EAAmB,GAAI;EAAQ;EAA6B,CAAA;;AAGvE,SAAS,iBAAiB,EAAE,UAAU,OAAO,GAAG,SAAS;CAErD,MAAM,YAAY,oBAAoB;CAGtC,MAAM,YAAY,QAAQ,UAAU,OAAO;AAE3C,QAAO,qBAAC,oBAAD;EACI;EACP,mBAAiB;EACjB,WAAW,GACP,2BACA,aAAa,aAChB;EACD,GAAI;YAPD,CASF,UAEA,aACG,oBAAC,iBAAD;GAAiB,MAAM;GAAuB,WAAU;GAAiB,CAAA,CAE1D;;;AAG3B,SAAS,iBAAiB,EACtB,UAAU,OAAO,GAAG,SACrB;AACC,QACI,oBAAC,oBAAD;EAA6B;EAAO,GAAI;YACpC,oBAAC,OAAD;GAAK,WAAW,GACZ,yBACH;GAAG;GAAe,CAAA;EACA,CAAA"}
1
+ {"version":3,"file":"ModalTabs.js","names":[],"sources":["../../../src/forms/components/ModalTabs.tsx"],"sourcesContent":["import {\n Fragment,\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from 'react';\n\nimport { evaluateCondition } from '@verbb/plugin-kit-forms';\nimport { Icon, Tab, TabPanel, Tabs } from '../../components/index.js';\nimport { cn } from '../../utils/index.js';\nimport type { SchemaFormComponentProps } from '../engine/context.js';\nimport { SchemaEngineContext } from '../engine/context.js';\nimport type { SchemaNode } from '@verbb/plugin-kit-forms';\n\nimport { schemaSubtreeHasErrors } from './schemaErrors.js';\n\nconst ModalTabsErrorsContext = createContext<Record<string, boolean>>({});\n\nexport const useModalTabsErrors = () => {\n return useContext(ModalTabsErrorsContext);\n};\n\ntype ModalTabsRootProps = SchemaFormComponentProps & {\n children?: ReactNode;\n className?: string;\n value?: string;\n defaultValue?: string;\n};\n\ntype TabHandleMeta = {\n value: string;\n if?: string;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n};\n\n/**\n * Collect ModalTabsTrigger handles + optional tab-level `if` from schema.\n * O(schema nodes under this ModalTabs) once per schema identity — not nested field visibility.\n */\nconst collectTabHandles = (node: SchemaNode | undefined): TabHandleMeta[] => {\n if (!node?.children) {\n return [];\n }\n\n const handles: TabHandleMeta[] = [];\n\n const visit = (items: unknown): void => {\n if (!Array.isArray(items)) {\n return;\n }\n\n items.forEach((item) => {\n if (!isRecord(item)) {\n return;\n }\n\n const child = item as SchemaNode;\n\n if (child.$cmp === 'ModalTabsTrigger') {\n const value = typeof child.props?.value === 'string'\n ? child.props.value\n : (typeof (child as { value?: unknown }).value === 'string'\n ? (child as { value: string }).value\n : '');\n\n if (value) {\n handles.push({\n value,\n if: typeof child.if === 'string' ? child.if : undefined,\n });\n }\n\n return;\n }\n\n if (child.children) {\n visit(child.children);\n }\n });\n };\n\n visit(node.children);\n\n return handles;\n};\n\n/**\n * Schema `$cmp: 'ModalTabs'` — wraps stock `Tabs` `variant=\"modal\"`.\n * Owns tab ↔ schema error mapping (same contract as kit v1 ModalTabs).\n */\nconst ModalTabs = Object.assign(({\n children,\n schemaNode,\n // Pull schema bookkeeping off before Tabs — even if the renderer strips these,\n // keep the same contract as kit v1 (schemaNode ?? schema for error mapping).\n schema,\n _id: _schemaId,\n _data: _schemaData,\n className,\n value: controlledValue,\n defaultValue = '',\n ...props\n}: ModalTabsRootProps & {\n schema?: SchemaNode;\n _id?: string;\n _data?: Record<string, unknown>;\n}) => {\n void _schemaId;\n void _schemaData;\n\n const form = useContext(SchemaEngineContext);\n const node = schemaNode ?? schema;\n const [tabErrors, setTabErrors] = useState<Record<string, boolean>>({});\n const [uncontrolledValue, setUncontrolledValue] = useState(\n () => controlledValue ?? defaultValue ?? '',\n );\n\n const isControlled = controlledValue !== undefined && controlledValue !== null;\n const resolvedValue = isControlled ? String(controlledValue) : uncontrolledValue;\n\n // Tab handles + optional `if` — fixed for a given schema node (not recomputed per field).\n const tabHandles = useMemo(() => collectTabHandles(node), [node]);\n\n const getTabErrors = useCallback(() => {\n const errors: Record<string, boolean> = {};\n\n if (!node?.children || !form?.getErrorMapFields) {\n return errors;\n }\n\n const formErrors = form.getErrorMapFields?.() || {};\n\n Object.values(node.children as Record<string, unknown>).forEach((item) => {\n if (typeof item !== 'object' || item === null || Array.isArray(item)) {\n return;\n }\n\n const childNode = item as SchemaNode;\n const value = typeof childNode.props?.value === 'string' ? childNode.props.value : '';\n if (childNode.$cmp === 'ModalTabsContent' && value) {\n errors[value] = schemaSubtreeHasErrors(formErrors, childNode.children || []);\n }\n });\n\n return errors;\n }, [form, node]);\n\n /** First tab whose tab-level `if` (if any) currently passes. */\n const getFirstVisibleTabValue = useCallback((values: Record<string, unknown>) => {\n for (const handle of tabHandles) {\n if (!handle.if || evaluateCondition(handle.if, values)) {\n return handle.value;\n }\n }\n\n return tabHandles[0]?.value ?? '';\n }, [tabHandles]);\n\n const isTabVisible = useCallback((tabValue: string, values: Record<string, unknown>) => {\n const handle = tabHandles.find((item) => item.value === tabValue);\n\n if (!handle) {\n return false;\n }\n\n if (!handle.if) {\n return true;\n }\n\n return evaluateCondition(handle.if, values);\n }, [tabHandles]);\n\n useEffect(() => {\n if (!form?.store?.subscribe) {\n setTabErrors(getTabErrors());\n return undefined;\n }\n\n const update = () => {\n setTabErrors(getTabErrors());\n\n // Tab-level `if` can hide the active tab (e.g. Name → multi fields).\n // Cheap: only re-eval each tab's own `if` — never walk nested field visibility.\n if (isControlled) {\n return;\n }\n\n const { values } = form.store.state;\n const formValues = (values && typeof values === 'object')\n ? values as Record<string, unknown>\n : {};\n\n if (!resolvedValue || isTabVisible(resolvedValue, formValues)) {\n return;\n }\n\n const next = getFirstVisibleTabValue(formValues);\n\n if (next && next !== resolvedValue) {\n setUncontrolledValue(next);\n }\n };\n\n update();\n return form.store.subscribe(update);\n }, [\n form,\n getFirstVisibleTabValue,\n getTabErrors,\n isControlled,\n isTabVisible,\n resolvedValue,\n ]);\n\n return (\n <ModalTabsErrorsContext.Provider value={tabErrors}>\n <Tabs\n variant=\"modal\"\n value={resolvedValue}\n className={cn('h-full min-h-0', className)}\n {...props}\n onPkChange={(event) => {\n // Nested inside FormBuilderTabs — stop bubble so pane routing does not navigate away.\n event.stopPropagation();\n\n const detail = (event as CustomEvent<{ value?: string }>).detail;\n const next = detail?.value;\n if (typeof next !== 'string' || !next || isControlled) {\n return;\n }\n setUncontrolledValue(next);\n }}\n >\n {children}\n </Tabs>\n </ModalTabsErrorsContext.Provider>\n );\n}, { usesSchemaNode: true as const });\n\nfunction ModalTabsList({ children }: { children?: ReactNode }) {\n // pk-tabs only indexes `pk-tab` nodes on `slot=\"nav\"` — no list wrapper.\n return <Fragment>{children}</Fragment>;\n}\n\nfunction ModalTabsTrigger({\n children,\n value,\n className,\n ...props\n}: {\n children?: ReactNode;\n value?: string;\n className?: string;\n}) {\n const tabErrors = useModalTabsErrors();\n const hasErrors = Boolean(value && tabErrors[value]);\n\n return (\n <Tab\n value={value}\n data-has-errors={hasErrors ? 'true' : undefined}\n // Host text-* cannot pierce pk-tab — error color is :host([data-has-errors]) in kit.\n className={className}\n {...props}\n slot=\"nav\"\n >\n {/* Default slot (not status): :has(::slotted(*)) on .status is unreliable across browsers. */}\n <span className=\"inline-flex items-center gap-1\">\n {children}\n {hasErrors ? (\n <Icon icon=\"triangle-exclamation\" className=\"block size-3\" />\n ) : null}\n </span>\n </Tab>\n );\n}\n\nfunction ModalTabsContent({\n children,\n className,\n ...props\n}: {\n children?: ReactNode;\n className?: string;\n value?: string;\n}) {\n return (\n <TabPanel className={className} {...props}>\n <div className=\"grid grid-cols-1 gap-4\">\n {children}\n </div>\n </TabPanel>\n );\n}\n\nexport {\n ModalTabs,\n ModalTabsList,\n ModalTabsTrigger,\n ModalTabsContent,\n};\n"],"mappings":";;;;;;;;;AAoBA,IAAM,yBAAyB,cAAuC,EAAE,CAAC;AAEzE,IAAa,2BAA2B;AACpC,QAAO,WAAW,uBAAuB;;AAe7C,IAAM,YAAY,UAAqD;AACnE,QAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,MAAM;;;;;;AAO/E,IAAM,qBAAqB,SAAkD;AACzE,KAAI,CAAC,MAAM,SACP,QAAO,EAAE;CAGb,MAAM,UAA2B,EAAE;CAEnC,MAAM,SAAS,UAAyB;AACpC,MAAI,CAAC,MAAM,QAAQ,MAAM,CACrB;AAGJ,QAAM,SAAS,SAAS;AACpB,OAAI,CAAC,SAAS,KAAK,CACf;GAGJ,MAAM,QAAQ;AAEd,OAAI,MAAM,SAAS,oBAAoB;IACnC,MAAM,QAAQ,OAAO,MAAM,OAAO,UAAU,WACtC,MAAM,MAAM,QACX,OAAQ,MAA8B,UAAU,WAC5C,MAA4B,QAC7B;AAEV,QAAI,MACA,SAAQ,KAAK;KACT;KACA,IAAI,OAAO,MAAM,OAAO,WAAW,MAAM,KAAK,KAAA;KACjD,CAAC;AAGN;;AAGJ,OAAI,MAAM,SACN,OAAM,MAAM,SAAS;IAE3B;;AAGN,OAAM,KAAK,SAAS;AAEpB,QAAO;;;;;;AAOX,IAAM,YAAY,OAAO,QAAQ,EAC7B,UACA,YAGA,QACA,KAAK,WACL,OAAO,aACP,WACA,OAAO,iBACP,eAAe,IACf,GAAG,YAKD;CAIF,MAAM,OAAO,WAAW,oBAAoB;CAC5C,MAAM,OAAO,cAAc;CAC3B,MAAM,CAAC,WAAW,gBAAgB,SAAkC,EAAE,CAAC;CACvE,MAAM,CAAC,mBAAmB,wBAAwB,eACxC,mBAAmB,gBAAgB,GAC5C;CAED,MAAM,eAAe,oBAAoB,KAAA,KAAa,oBAAoB;CAC1E,MAAM,gBAAgB,eAAe,OAAO,gBAAgB,GAAG;CAG/D,MAAM,aAAa,cAAc,kBAAkB,KAAK,EAAE,CAAC,KAAK,CAAC;CAEjE,MAAM,eAAe,kBAAkB;EACnC,MAAM,SAAkC,EAAE;AAE1C,MAAI,CAAC,MAAM,YAAY,CAAC,MAAM,kBAC1B,QAAO;EAGX,MAAM,aAAa,KAAK,qBAAqB,IAAI,EAAE;AAEnD,SAAO,OAAO,KAAK,SAAoC,CAAC,SAAS,SAAS;AACtE,OAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,MAAM,QAAQ,KAAK,CAChE;GAGJ,MAAM,YAAY;GAClB,MAAM,QAAQ,OAAO,UAAU,OAAO,UAAU,WAAW,UAAU,MAAM,QAAQ;AACnF,OAAI,UAAU,SAAS,sBAAsB,MACzC,QAAO,SAAS,uBAAuB,YAAY,UAAU,YAAY,EAAE,CAAC;IAElF;AAEF,SAAO;IACR,CAAC,MAAM,KAAK,CAAC;;CAGhB,MAAM,0BAA0B,aAAa,WAAoC;AAC7E,OAAK,MAAM,UAAU,WACjB,KAAI,CAAC,OAAO,MAAM,kBAAkB,OAAO,IAAI,OAAO,CAClD,QAAO,OAAO;AAItB,SAAO,WAAW,IAAI,SAAS;IAChC,CAAC,WAAW,CAAC;CAEhB,MAAM,eAAe,aAAa,UAAkB,WAAoC;EACpF,MAAM,SAAS,WAAW,MAAM,SAAS,KAAK,UAAU,SAAS;AAEjE,MAAI,CAAC,OACD,QAAO;AAGX,MAAI,CAAC,OAAO,GACR,QAAO;AAGX,SAAO,kBAAkB,OAAO,IAAI,OAAO;IAC5C,CAAC,WAAW,CAAC;AAEhB,iBAAgB;AACZ,MAAI,CAAC,MAAM,OAAO,WAAW;AACzB,gBAAa,cAAc,CAAC;AAC5B;;EAGJ,MAAM,eAAe;AACjB,gBAAa,cAAc,CAAC;AAI5B,OAAI,aACA;GAGJ,MAAM,EAAE,WAAW,KAAK,MAAM;GAC9B,MAAM,aAAc,UAAU,OAAO,WAAW,WAC1C,SACA,EAAE;AAER,OAAI,CAAC,iBAAiB,aAAa,eAAe,WAAW,CACzD;GAGJ,MAAM,OAAO,wBAAwB,WAAW;AAEhD,OAAI,QAAQ,SAAS,cACjB,sBAAqB,KAAK;;AAIlC,UAAQ;AACR,SAAO,KAAK,MAAM,UAAU,OAAO;IACpC;EACC;EACA;EACA;EACA;EACA;EACA;EACH,CAAC;AAEF,QACI,oBAAC,uBAAuB,UAAxB;EAAiC,OAAO;YACpC,oBAAC,MAAD;GACI,SAAQ;GACR,OAAO;GACP,WAAW,GAAG,kBAAkB,UAAU;GAC1C,GAAI;GACJ,aAAa,UAAU;AAEnB,UAAM,iBAAiB;IAGvB,MAAM,OADU,MAA0C,QACrC;AACrB,QAAI,OAAO,SAAS,YAAY,CAAC,QAAQ,aACrC;AAEJ,yBAAqB,KAAK;;GAG7B;GACE,CAAA;EACuB,CAAA;GAEvC,EAAE,gBAAgB,MAAe,CAAC;AAErC,SAAS,cAAc,EAAE,YAAsC;AAE3D,QAAO,oBAAC,UAAD,EAAW,UAAoB,CAAA;;AAG1C,SAAS,iBAAiB,EACtB,UACA,OACA,WACA,GAAG,SAKJ;CACC,MAAM,YAAY,oBAAoB;CACtC,MAAM,YAAY,QAAQ,SAAS,UAAU,OAAO;AAEpD,QACI,oBAAC,KAAD;EACW;EACP,mBAAiB,YAAY,SAAS,KAAA;EAE3B;EACX,GAAI;EACJ,MAAK;YAGL,qBAAC,QAAD;GAAM,WAAU;aAAhB,CACK,UACA,YACG,oBAAC,MAAD;IAAM,MAAK;IAAuB,WAAU;IAAiB,CAAA,GAC7D,KACD;;EACL,CAAA;;AAId,SAAS,iBAAiB,EACtB,UACA,WACA,GAAG,SAKJ;AACC,QACI,oBAAC,UAAD;EAAqB;EAAW,GAAI;YAChC,oBAAC,OAAD;GAAK,WAAU;GACV;GACC,CAAA;EACC,CAAA"}
@@ -1,3 +1,4 @@
1
- export * from './FieldWrap';
2
- export * from './ModalTabs';
1
+ export { FieldWrap } from './FieldWrap.js';
2
+ export { ModalTabs, ModalTabsList, ModalTabsTrigger, ModalTabsContent, useModalTabsErrors, } from './ModalTabs.js';
3
+ export { collectSchemaFieldNames, schemaSubtreeHasErrors, } from './schemaErrors.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACH,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACH,uBAAuB,EACvB,sBAAsB,GACzB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { SchemaRenderable } from '@verbb/plugin-kit-forms';
2
+ /** Collect `$field` names under a schema subtree for tab/wrapper error chrome. */
3
+ export declare const collectSchemaFieldNames: (schema: SchemaRenderable, names?: Set<string>) => Set<string>;
4
+ export declare const schemaSubtreeHasErrors: (errors: Record<string, unknown> | undefined, schema: SchemaRenderable) => boolean;
5
+ //# sourceMappingURL=schemaErrors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaErrors.d.ts","sourceRoot":"","sources":["../../../src/forms/components/schemaErrors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAqB5E,kFAAkF;AAClF,eAAO,MAAM,uBAAuB,GAAI,QAAQ,gBAAgB,EAAE,QAAO,GAAG,CAAC,MAAM,CAAa,KAAG,GAAG,CAAC,MAAM,CA2B5G,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAC/B,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC3C,QAAQ,gBAAgB,KACzB,OAOF,CAAC"}
@@ -0,0 +1,34 @@
1
+ //#region src/forms/components/schemaErrors.ts
2
+ var hasErrorValue = (value) => {
3
+ if (Array.isArray(value)) return value.length > 0;
4
+ if (!value) return false;
5
+ if (typeof value === "object") {
6
+ const entry = value;
7
+ if (Array.isArray(entry.errors)) return entry.errors.length > 0;
8
+ }
9
+ return Boolean(value);
10
+ };
11
+ /** Collect `$field` names under a schema subtree for tab/wrapper error chrome. */
12
+ var collectSchemaFieldNames = (schema, names = /* @__PURE__ */ new Set()) => {
13
+ if (Array.isArray(schema)) {
14
+ schema.forEach((entry) => {
15
+ collectSchemaFieldNames(entry, names);
16
+ });
17
+ return names;
18
+ }
19
+ if (!schema || typeof schema !== "object") return names;
20
+ const node = schema;
21
+ if (node.$field && typeof node.name === "string" && node.name) names.add(node.name);
22
+ if (node.children) collectSchemaFieldNames(node.children, names);
23
+ if (node.schema) collectSchemaFieldNames(node.schema, names);
24
+ return names;
25
+ };
26
+ var schemaSubtreeHasErrors = (errors, schema) => {
27
+ if (!errors || !schema) return false;
28
+ const fieldNames = collectSchemaFieldNames(schema);
29
+ return Array.from(fieldNames).some((fieldName) => hasErrorValue(errors[fieldName]));
30
+ };
31
+ //#endregion
32
+ export { collectSchemaFieldNames, schemaSubtreeHasErrors };
33
+
34
+ //# sourceMappingURL=schemaErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaErrors.js","names":[],"sources":["../../../src/forms/components/schemaErrors.ts"],"sourcesContent":["import type { SchemaNode, SchemaRenderable } from '@verbb/plugin-kit-forms';\n\nconst hasErrorValue = (value: unknown): boolean => {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n if (!value) {\n return false;\n }\n\n if (typeof value === 'object') {\n const entry = value as { errors?: unknown[] };\n if (Array.isArray(entry.errors)) {\n return entry.errors.length > 0;\n }\n }\n\n return Boolean(value);\n};\n\n/** Collect `$field` names under a schema subtree for tab/wrapper error chrome. */\nexport const collectSchemaFieldNames = (schema: SchemaRenderable, names: Set<string> = new Set()): Set<string> => {\n if (Array.isArray(schema)) {\n schema.forEach((entry) => {\n collectSchemaFieldNames(entry, names);\n });\n return names;\n }\n\n if (!schema || typeof schema !== 'object') {\n return names;\n }\n\n const node = schema as SchemaNode;\n\n if (node.$field && typeof node.name === 'string' && node.name) {\n names.add(node.name);\n }\n\n if (node.children) {\n collectSchemaFieldNames(node.children as SchemaRenderable, names);\n }\n\n if (node.schema) {\n collectSchemaFieldNames(node.schema as SchemaRenderable, names);\n }\n\n return names;\n};\n\nexport const schemaSubtreeHasErrors = (\n errors: Record<string, unknown> | undefined,\n schema: SchemaRenderable,\n): boolean => {\n if (!errors || !schema) {\n return false;\n }\n\n const fieldNames = collectSchemaFieldNames(schema);\n return Array.from(fieldNames).some((fieldName) => hasErrorValue(errors[fieldName]));\n};\n"],"mappings":";AAEA,IAAM,iBAAiB,UAA4B;AAC/C,KAAI,MAAM,QAAQ,MAAM,CACpB,QAAO,MAAM,SAAS;AAG1B,KAAI,CAAC,MACD,QAAO;AAGX,KAAI,OAAO,UAAU,UAAU;EAC3B,MAAM,QAAQ;AACd,MAAI,MAAM,QAAQ,MAAM,OAAO,CAC3B,QAAO,MAAM,OAAO,SAAS;;AAIrC,QAAO,QAAQ,MAAM;;;AAIzB,IAAa,2BAA2B,QAA0B,wBAAqB,IAAI,KAAK,KAAkB;AAC9G,KAAI,MAAM,QAAQ,OAAO,EAAE;AACvB,SAAO,SAAS,UAAU;AACtB,2BAAwB,OAAO,MAAM;IACvC;AACF,SAAO;;AAGX,KAAI,CAAC,UAAU,OAAO,WAAW,SAC7B,QAAO;CAGX,MAAM,OAAO;AAEb,KAAI,KAAK,UAAU,OAAO,KAAK,SAAS,YAAY,KAAK,KACrD,OAAM,IAAI,KAAK,KAAK;AAGxB,KAAI,KAAK,SACL,yBAAwB,KAAK,UAA8B,MAAM;AAGrE,KAAI,KAAK,OACL,yBAAwB,KAAK,QAA4B,MAAM;AAGnE,QAAO;;AAGX,IAAa,0BACT,QACA,WACU;AACV,KAAI,CAAC,UAAU,CAAC,OACZ,QAAO;CAGX,MAAM,aAAa,wBAAwB,OAAO;AAClD,QAAO,MAAM,KAAK,WAAW,CAAC,MAAM,cAAc,cAAc,OAAO,WAAW,CAAC"}