@stackcraftmx/calcita 0.32.1 → 0.47.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 (338) hide show
  1. package/README.md +263 -2
  2. package/cli/packageVersions.js +12 -3
  3. package/cli/projectFiles.js +5 -2
  4. package/cli/templates/module/__Name__Page.test.jsx.tpl +24 -0
  5. package/cli/templates/project/README.md.tpl +14 -1
  6. package/cli/templates/project/src/app/appRouter.jsx.tpl +5 -2
  7. package/cli/templates/project/src/core/accountConnector.js.tpl +4 -2
  8. package/cli/templates/project/src/modules/auth/SignInPage.test.jsx.tpl +20 -0
  9. package/cli/templates/project/src/modules/home/HomePage.test.jsx.tpl +16 -0
  10. package/cli/templates/project/src/testing/browserGaps.js.tpl +70 -0
  11. package/cli/templates/project/src/testing/openScreen.jsx.tpl +58 -0
  12. package/cli/templates/project/src/testing/setup.js.tpl +25 -0
  13. package/cli/templates/project/vite.config.js.tpl +12 -0
  14. package/dist/DataTable/GoToPage.js +69 -13
  15. package/dist/DataTable/GoToPage.js.map +1 -1
  16. package/dist/DataTable/ServerTable.js +2 -0
  17. package/dist/DataTable/ServerTable.js.map +1 -1
  18. package/dist/DataTable/ServerTableFilterDrawer.js +52 -0
  19. package/dist/DataTable/ServerTableFilterDrawer.js.map +1 -0
  20. package/dist/DataTable/filterContext.js.map +1 -1
  21. package/dist/DataTable/goToPageOptions.js +17 -0
  22. package/dist/DataTable/goToPageOptions.js.map +1 -0
  23. package/dist/date-pickers.js +28 -2
  24. package/dist/date-pickers.js.map +1 -1
  25. package/dist/datePickers/DateInput.js +15 -34
  26. package/dist/datePickers/DateInput.js.map +1 -1
  27. package/dist/datePickers/DateTimeInput.js +75 -0
  28. package/dist/datePickers/DateTimeInput.js.map +1 -0
  29. package/dist/datePickers/FormDateTimeField.js +12 -0
  30. package/dist/datePickers/FormDateTimeField.js.map +1 -0
  31. package/dist/datePickers/FormMonthField.js +12 -0
  32. package/dist/datePickers/FormMonthField.js.map +1 -0
  33. package/dist/datePickers/FormTimeField.js +12 -0
  34. package/dist/datePickers/FormTimeField.js.map +1 -0
  35. package/dist/datePickers/MonthInput.js +58 -0
  36. package/dist/datePickers/MonthInput.js.map +1 -0
  37. package/dist/datePickers/PickerFrame.js +27 -0
  38. package/dist/datePickers/PickerFrame.js.map +1 -0
  39. package/dist/datePickers/TimeInput.js +55 -0
  40. package/dist/datePickers/TimeInput.js.map +1 -0
  41. package/dist/datePickers/dateTimeRules.js +24 -0
  42. package/dist/datePickers/dateTimeRules.js.map +1 -0
  43. package/dist/datePickers/pickerValues.js +106 -0
  44. package/dist/datePickers/pickerValues.js.map +1 -0
  45. package/dist/datePickers/useCurrentMinute.js +28 -0
  46. package/dist/datePickers/useCurrentMinute.js.map +1 -0
  47. package/dist/datePickers/usePickerField.js +22 -0
  48. package/dist/datePickers/usePickerField.js.map +1 -0
  49. package/dist/dictionaries/dictionaries.js +3 -1
  50. package/dist/dictionaries/dictionaries.js.map +1 -1
  51. package/dist/forms/FormAttachmentsField.js +12 -0
  52. package/dist/forms/FormAttachmentsField.js.map +1 -0
  53. package/dist/forms/FormCheckboxGroupField.js +12 -0
  54. package/dist/forms/FormCheckboxGroupField.js.map +1 -0
  55. package/dist/forms/FormFileField.js +12 -0
  56. package/dist/forms/FormFileField.js.map +1 -0
  57. package/dist/forms/FormFileUploadField.js +12 -0
  58. package/dist/forms/FormFileUploadField.js.map +1 -0
  59. package/dist/forms/FormImageField.js +12 -0
  60. package/dist/forms/FormImageField.js.map +1 -0
  61. package/dist/forms/FormMaskedField.js +12 -0
  62. package/dist/forms/FormMaskedField.js.map +1 -0
  63. package/dist/forms/FormRepeatingFields.js +54 -0
  64. package/dist/forms/FormRepeatingFields.js.map +1 -0
  65. package/dist/forms/FormTransferListField.js +12 -0
  66. package/dist/forms/FormTransferListField.js.map +1 -0
  67. package/dist/forms/applyServerProblem.js +10 -3
  68. package/dist/forms/applyServerProblem.js.map +1 -1
  69. package/dist/forms/listRules.js +111 -0
  70. package/dist/forms/listRules.js.map +1 -0
  71. package/dist/forms/serverProblemFields.js +17 -0
  72. package/dist/forms/serverProblemFields.js.map +1 -1
  73. package/dist/forms.js +51 -29
  74. package/dist/forms.js.map +1 -1
  75. package/dist/hookForm/FormAttachmentsField.js +12 -0
  76. package/dist/hookForm/FormAttachmentsField.js.map +1 -0
  77. package/dist/hookForm/FormCheckboxGroupField.js +12 -0
  78. package/dist/hookForm/FormCheckboxGroupField.js.map +1 -0
  79. package/dist/hookForm/FormFileField.js +12 -0
  80. package/dist/hookForm/FormFileField.js.map +1 -0
  81. package/dist/hookForm/FormFileUploadField.js +12 -0
  82. package/dist/hookForm/FormFileUploadField.js.map +1 -0
  83. package/dist/hookForm/FormImageField.js +12 -0
  84. package/dist/hookForm/FormImageField.js.map +1 -0
  85. package/dist/hookForm/FormMaskedField.js +12 -0
  86. package/dist/hookForm/FormMaskedField.js.map +1 -0
  87. package/dist/hookForm/FormRepeatingFields.js +44 -0
  88. package/dist/hookForm/FormRepeatingFields.js.map +1 -0
  89. package/dist/hookForm/FormTransferListField.js +12 -0
  90. package/dist/hookForm/FormTransferListField.js.map +1 -0
  91. package/dist/hookForm/applyServerProblem.js +8 -3
  92. package/dist/hookForm/applyServerProblem.js.map +1 -1
  93. package/dist/index.js +188 -100
  94. package/dist/index.js.map +1 -1
  95. package/dist/inputs/CatalogInput.js +74 -7
  96. package/dist/inputs/CatalogInput.js.map +1 -1
  97. package/dist/inputs/CheckboxGroupInput.js +100 -0
  98. package/dist/inputs/CheckboxGroupInput.js.map +1 -0
  99. package/dist/inputs/MaskedInput.js +86 -0
  100. package/dist/inputs/MaskedInput.js.map +1 -0
  101. package/dist/inputs/NumberInput.js +12 -1
  102. package/dist/inputs/NumberInput.js.map +1 -1
  103. package/dist/inputs/RepeatingFields.js +177 -0
  104. package/dist/inputs/RepeatingFields.js.map +1 -0
  105. package/dist/inputs/SelectInput.js +43 -5
  106. package/dist/inputs/SelectInput.js.map +1 -1
  107. package/dist/inputs/TransferListInput.js +215 -0
  108. package/dist/inputs/TransferListInput.js.map +1 -0
  109. package/dist/inputs/inputMasks.js +84 -0
  110. package/dist/inputs/inputMasks.js.map +1 -0
  111. package/dist/inputs/selectAllState.js +20 -0
  112. package/dist/inputs/selectAllState.js.map +1 -0
  113. package/dist/inputs/useRowKeys.js +26 -0
  114. package/dist/inputs/useRowKeys.js.map +1 -0
  115. package/dist/legal/CookieNotice.js +79 -0
  116. package/dist/legal/CookieNotice.js.map +1 -0
  117. package/dist/legal/TermsAcceptanceDialog.js +129 -0
  118. package/dist/legal/TermsAcceptanceDialog.js.map +1 -0
  119. package/dist/legal/consentStorage.js +18 -0
  120. package/dist/legal/consentStorage.js.map +1 -0
  121. package/dist/legal/useCookieConsent.js +17 -0
  122. package/dist/legal/useCookieConsent.js.map +1 -0
  123. package/dist/locales/en.js +233 -1
  124. package/dist/locales/en.js.map +1 -1
  125. package/dist/locales/es.js +233 -1
  126. package/dist/locales/es.js.map +1 -1
  127. package/dist/mexico/CfdiSummary.js +81 -0
  128. package/dist/mexico/CfdiSummary.js.map +1 -0
  129. package/dist/mexico/EfirmaFields.js +167 -0
  130. package/dist/mexico/EfirmaFields.js.map +1 -0
  131. package/dist/mexico/certificateReader.js +79 -0
  132. package/dist/mexico/certificateReader.js.map +1 -0
  133. package/dist/mexico/cfdiReader.js +81 -0
  134. package/dist/mexico/cfdiReader.js.map +1 -0
  135. package/dist/mexico/derReader.js +81 -0
  136. package/dist/mexico/derReader.js.map +1 -0
  137. package/dist/mexico/efirmaKey.js +51 -0
  138. package/dist/mexico/efirmaKey.js.map +1 -0
  139. package/dist/mexico/mexicoIdentifiers.js +86 -0
  140. package/dist/mexico/mexicoIdentifiers.js.map +1 -0
  141. package/dist/mexico/mexicoRules.js +16 -0
  142. package/dist/mexico/mexicoRules.js.map +1 -0
  143. package/dist/mexico.js +32 -0
  144. package/dist/mexico.js.map +1 -0
  145. package/dist/react-hook-form.js +40 -17
  146. package/dist/react-hook-form.js.map +1 -1
  147. package/dist/rich-text.js +19 -0
  148. package/dist/rich-text.js.map +1 -0
  149. package/dist/richText/FormRichTextField.js +12 -0
  150. package/dist/richText/FormRichTextField.js.map +1 -0
  151. package/dist/richText/RichTextEditor.js +108 -0
  152. package/dist/richText/RichTextEditor.js.map +1 -0
  153. package/dist/richText/RichTextLinkPopover.js +57 -0
  154. package/dist/richText/RichTextLinkPopover.js.map +1 -0
  155. package/dist/richText/RichTextToolbar.js +189 -0
  156. package/dist/richText/RichTextToolbar.js.map +1 -0
  157. package/dist/richText/RichTextView.js +26 -0
  158. package/dist/richText/RichTextView.js.map +1 -0
  159. package/dist/richText/richTextContentSx.js +42 -0
  160. package/dist/richText/richTextContentSx.js.map +1 -0
  161. package/dist/richText/richTextExtensions.js +44 -0
  162. package/dist/richText/richTextExtensions.js.map +1 -0
  163. package/dist/richText/richTextRules.js +46 -0
  164. package/dist/richText/richTextRules.js.map +1 -0
  165. package/dist/security/SessionsCard.js +11 -7
  166. package/dist/security/SessionsCard.js.map +1 -1
  167. package/dist/table.js +2 -0
  168. package/dist/table.js.map +1 -1
  169. package/dist/theme/components/glassComponents.js +27 -0
  170. package/dist/theme/components/glassComponents.js.map +1 -1
  171. package/dist/theme/components/minimalComponents.js +12 -0
  172. package/dist/theme/components/minimalComponents.js.map +1 -1
  173. package/dist/types/DataTable/ServerTableFilterDrawer.d.ts +21 -0
  174. package/dist/types/DataTable/filterContext.d.ts +2 -1
  175. package/dist/types/DataTable/goToPageOptions.d.ts +15 -0
  176. package/dist/types/DataTable/index.d.ts +1 -0
  177. package/dist/types/date-pickers.d.ts +10 -1
  178. package/dist/types/datePickers/DateInput.d.ts +6 -4
  179. package/dist/types/datePickers/DateTimeInput.d.ts +50 -0
  180. package/dist/types/datePickers/FormDateTimeField.d.ts +7 -0
  181. package/dist/types/datePickers/FormMonthField.d.ts +7 -0
  182. package/dist/types/datePickers/FormTimeField.d.ts +7 -0
  183. package/dist/types/datePickers/MonthInput.d.ts +39 -0
  184. package/dist/types/datePickers/PickerFrame.d.ts +22 -0
  185. package/dist/types/datePickers/TimeInput.d.ts +38 -0
  186. package/dist/types/datePickers/dateTimeRules.d.ts +31 -0
  187. package/dist/types/datePickers/pickerValues.d.ts +114 -0
  188. package/dist/types/datePickers/useCurrentMinute.d.ts +5 -0
  189. package/dist/types/datePickers/usePickerField.d.ts +24 -0
  190. package/dist/types/dictionaries/dictionaries.d.ts +6 -3
  191. package/dist/types/forms/FormAttachmentsField.d.ts +7 -0
  192. package/dist/types/forms/FormCheckboxGroupField.d.ts +7 -0
  193. package/dist/types/forms/FormFileField.d.ts +7 -0
  194. package/dist/types/forms/FormFileUploadField.d.ts +7 -0
  195. package/dist/types/forms/FormImageField.d.ts +7 -0
  196. package/dist/types/forms/FormMaskedField.d.ts +7 -0
  197. package/dist/types/forms/FormRepeatingFields.d.ts +25 -0
  198. package/dist/types/forms/FormTransferListField.d.ts +7 -0
  199. package/dist/types/forms/index.d.ts +10 -1
  200. package/dist/types/forms/listRules.d.ts +48 -0
  201. package/dist/types/forms/serverProblemFields.d.ts +13 -0
  202. package/dist/types/forms.d.ts +1 -1
  203. package/dist/types/hookForm/FormAttachmentsField.d.ts +8 -0
  204. package/dist/types/hookForm/FormCheckboxGroupField.d.ts +8 -0
  205. package/dist/types/hookForm/FormFileField.d.ts +8 -0
  206. package/dist/types/hookForm/FormFileUploadField.d.ts +8 -0
  207. package/dist/types/hookForm/FormImageField.d.ts +8 -0
  208. package/dist/types/hookForm/FormMaskedField.d.ts +9 -0
  209. package/dist/types/hookForm/FormRepeatingFields.d.ts +27 -0
  210. package/dist/types/hookForm/FormTransferListField.d.ts +8 -0
  211. package/dist/types/index.d.ts +25 -3
  212. package/dist/types/inputs/CatalogInput.d.ts +7 -1
  213. package/dist/types/inputs/CheckboxGroupInput.d.ts +39 -0
  214. package/dist/types/inputs/MaskedInput.d.ts +35 -0
  215. package/dist/types/inputs/RepeatingFields.d.ts +52 -0
  216. package/dist/types/inputs/SelectInput.d.ts +6 -1
  217. package/dist/types/inputs/TransferListInput.d.ts +43 -0
  218. package/dist/types/inputs/inputMasks.d.ts +52 -0
  219. package/dist/types/inputs/selectAllState.d.ts +11 -0
  220. package/dist/types/inputs/useRowKeys.d.ts +11 -0
  221. package/dist/types/legal/CookieNotice.d.ts +30 -0
  222. package/dist/types/legal/TermsAcceptanceDialog.d.ts +32 -0
  223. package/dist/types/legal/consentStorage.d.ts +16 -0
  224. package/dist/types/legal/useCookieConsent.d.ts +13 -0
  225. package/dist/types/locales/en.d.ts +232 -0
  226. package/dist/types/locales/es.d.ts +232 -0
  227. package/dist/types/mexico/CfdiSummary.d.ts +17 -0
  228. package/dist/types/mexico/EfirmaFields.d.ts +38 -0
  229. package/dist/types/mexico/certificateReader.d.ts +37 -0
  230. package/dist/types/mexico/cfdiReader.d.ts +95 -0
  231. package/dist/types/mexico/derReader.d.ts +54 -0
  232. package/dist/types/mexico/efirmaKey.d.ts +26 -0
  233. package/dist/types/mexico/mexicoIdentifiers.d.ts +61 -0
  234. package/dist/types/mexico/mexicoRules.d.ts +29 -0
  235. package/dist/types/mexico.d.ts +11 -0
  236. package/dist/types/react-hook-form.d.ts +10 -1
  237. package/dist/types/rich-text.d.ts +5 -0
  238. package/dist/types/richText/FormRichTextField.d.ts +7 -0
  239. package/dist/types/richText/RichTextEditor.d.ts +42 -0
  240. package/dist/types/richText/RichTextLinkPopover.d.ts +17 -0
  241. package/dist/types/richText/RichTextToolbar.d.ts +15 -0
  242. package/dist/types/richText/RichTextView.d.ts +13 -0
  243. package/dist/types/richText/richTextContentSx.d.ts +7 -0
  244. package/dist/types/richText/richTextExtensions.d.ts +15 -0
  245. package/dist/types/richText/richTextRules.d.ts +41 -0
  246. package/dist/types/table.d.ts +1 -1
  247. package/dist/types/ui/actions/ActionsMenu.d.ts +18 -3
  248. package/dist/types/ui/actions/CopyButton.d.ts +7 -4
  249. package/dist/types/ui/actions/tableRowText.d.ts +6 -0
  250. package/dist/types/ui/cards/RecordCard.d.ts +65 -0
  251. package/dist/types/ui/cards/RecordCardSkeleton.d.ts +17 -0
  252. package/dist/types/ui/countdown/Countdown.d.ts +31 -0
  253. package/dist/types/ui/countdown/countdownParts.d.ts +39 -0
  254. package/dist/types/ui/countdown/useCountdown.d.ts +14 -0
  255. package/dist/types/ui/documents/PdfViewerDialog.d.ts +21 -0
  256. package/dist/types/ui/filters/FilterDrawer.d.ts +34 -0
  257. package/dist/types/ui/filters/filterDrawerFields.d.ts +139 -0
  258. package/dist/types/ui/help/HelpButton.d.ts +15 -0
  259. package/dist/types/ui/help/HelpCarouselDialog.d.ts +35 -0
  260. package/dist/types/ui/help/useHelpCarousel.d.ts +21 -0
  261. package/dist/types/ui/index.d.ts +10 -0
  262. package/dist/types/ui/labels/IconBadge.d.ts +34 -0
  263. package/dist/types/ui/navigation/RouteTabs.d.ts +44 -0
  264. package/dist/types/ui/navigation/routeTabMatching.d.ts +27 -0
  265. package/dist/types/upload/AttachmentsInput.d.ts +62 -0
  266. package/dist/types/upload/FileChip.d.ts +18 -0
  267. package/dist/types/upload/FileDropzone.d.ts +3 -0
  268. package/dist/types/upload/FileInput.d.ts +48 -0
  269. package/dist/types/upload/FileUploadInput.d.ts +80 -0
  270. package/dist/types/upload/ImageInput.d.ts +53 -0
  271. package/dist/types/upload/TemplateDownloadButton.d.ts +39 -0
  272. package/dist/types/upload/fileAppearance.d.ts +8 -0
  273. package/dist/types/upload/fileRules.d.ts +38 -0
  274. package/dist/types/upload/transferProgress.d.ts +18 -0
  275. package/dist/types/upload/uploadMachine.d.ts +6 -2
  276. package/dist/types/upload/uploadWithProgress.d.ts +6 -2
  277. package/dist/types/upload/useFilePicker.d.ts +39 -0
  278. package/dist/ui/actions/ActionsMenu.js +98 -15
  279. package/dist/ui/actions/ActionsMenu.js.map +1 -1
  280. package/dist/ui/actions/CopyButton.js +31 -11
  281. package/dist/ui/actions/CopyButton.js.map +1 -1
  282. package/dist/ui/actions/tableRowText.js +7 -0
  283. package/dist/ui/actions/tableRowText.js.map +1 -0
  284. package/dist/ui/cards/RecordCard.js +145 -0
  285. package/dist/ui/cards/RecordCard.js.map +1 -0
  286. package/dist/ui/cards/RecordCardSkeleton.js +33 -0
  287. package/dist/ui/cards/RecordCardSkeleton.js.map +1 -0
  288. package/dist/ui/countdown/Countdown.js +38 -0
  289. package/dist/ui/countdown/Countdown.js.map +1 -0
  290. package/dist/ui/countdown/countdownParts.js +34 -0
  291. package/dist/ui/countdown/countdownParts.js.map +1 -0
  292. package/dist/ui/countdown/useCountdown.js +35 -0
  293. package/dist/ui/countdown/useCountdown.js.map +1 -0
  294. package/dist/ui/documents/PdfViewerDialog.js +81 -0
  295. package/dist/ui/documents/PdfViewerDialog.js.map +1 -0
  296. package/dist/ui/filters/FilterDrawer.js +211 -0
  297. package/dist/ui/filters/FilterDrawer.js.map +1 -0
  298. package/dist/ui/filters/filterDrawerFields.js +119 -0
  299. package/dist/ui/filters/filterDrawerFields.js.map +1 -0
  300. package/dist/ui/help/HelpButton.js +17 -0
  301. package/dist/ui/help/HelpButton.js.map +1 -0
  302. package/dist/ui/help/HelpCarouselDialog.js +154 -0
  303. package/dist/ui/help/HelpCarouselDialog.js.map +1 -0
  304. package/dist/ui/help/useHelpCarousel.js +25 -0
  305. package/dist/ui/help/useHelpCarousel.js.map +1 -0
  306. package/dist/ui/labels/IconBadge.js +82 -0
  307. package/dist/ui/labels/IconBadge.js.map +1 -0
  308. package/dist/ui/navigation/RouteTabs.js +75 -0
  309. package/dist/ui/navigation/RouteTabs.js.map +1 -0
  310. package/dist/ui/navigation/routeTabMatching.js +23 -0
  311. package/dist/ui/navigation/routeTabMatching.js.map +1 -0
  312. package/dist/upload/AttachmentsInput.js +127 -0
  313. package/dist/upload/AttachmentsInput.js.map +1 -0
  314. package/dist/upload/FileChip.js +27 -0
  315. package/dist/upload/FileChip.js.map +1 -0
  316. package/dist/upload/FileDropzone.js +19 -84
  317. package/dist/upload/FileDropzone.js.map +1 -1
  318. package/dist/upload/FileInput.js +112 -0
  319. package/dist/upload/FileInput.js.map +1 -0
  320. package/dist/upload/FileUploadInput.js +285 -0
  321. package/dist/upload/FileUploadInput.js.map +1 -0
  322. package/dist/upload/ImageInput.js +125 -0
  323. package/dist/upload/ImageInput.js.map +1 -0
  324. package/dist/upload/TemplateDownloadButton.js +67 -0
  325. package/dist/upload/TemplateDownloadButton.js.map +1 -0
  326. package/dist/upload/fileAppearance.js +21 -0
  327. package/dist/upload/fileAppearance.js.map +1 -0
  328. package/dist/upload/fileRules.js +27 -1
  329. package/dist/upload/fileRules.js.map +1 -1
  330. package/dist/upload/transferProgress.js +23 -0
  331. package/dist/upload/transferProgress.js.map +1 -0
  332. package/dist/upload/uploadMachine.js +8 -8
  333. package/dist/upload/uploadMachine.js.map +1 -1
  334. package/dist/upload/uploadWithProgress.js +1 -1
  335. package/dist/upload/uploadWithProgress.js.map +1 -1
  336. package/dist/upload/useFilePicker.js +101 -0
  337. package/dist/upload/useFilePicker.js.map +1 -0
  338. package/package.json +44 -1
@@ -1,2 +1,11 @@
1
- export { CALENDAR_DATE_FORMAT, default as DateInput } from './datePickers/DateInput.js';
1
+ export { default as DateInput } from './datePickers/DateInput.js';
2
2
  export { default as FormDateField } from './datePickers/FormDateField.js';
3
+ export { default as DateTimeInput } from './datePickers/DateTimeInput.js';
4
+ export { default as FormDateTimeField } from './datePickers/FormDateTimeField.js';
5
+ export { default as TimeInput } from './datePickers/TimeInput.js';
6
+ export { default as FormTimeField } from './datePickers/FormTimeField.js';
7
+ export { default as MonthInput } from './datePickers/MonthInput.js';
8
+ export { default as FormMonthField } from './datePickers/FormMonthField.js';
9
+ export { CALENDAR_DATE_FORMAT, CALENDAR_MONTH_FORMAT, DEFAULT_MINUTES_STEP, INSTANT_FORMAT, TIME_OF_DAY_FORMAT, earliestInstantFromNow, instantPlusMinutes, latestInstantOf, timeZoneNameOf, } from './datePickers/pickerValues.js';
10
+ export { minutesAfterRule, minutesFromNowRule } from './datePickers/dateTimeRules.js';
11
+ export { useCurrentMinute } from './datePickers/useCurrentMinute.js';
@@ -1,6 +1,5 @@
1
- import 'dayjs/locale/es';
2
- /** Cómo viaja una fecha de calendario. */
3
- export declare const CALENDAR_DATE_FORMAT = "YYYY-MM-DD";
1
+ import { CALENDAR_DATE_FORMAT } from './pickerValues.js';
2
+ export { CALENDAR_DATE_FORMAT };
4
3
  /**
5
4
  * @param {object} props
6
5
  * @param {string} [props.name]
@@ -17,9 +16,11 @@ export declare const CALENDAR_DATE_FORMAT = "YYYY-MM-DD";
17
16
  * @param {'day'|'month'|'year'} [props.openTo] por dónde abre el calendario (year para un nacimiento)
18
17
  * @param {boolean} [props.disabled]
19
18
  * @param {import('react').Ref<HTMLInputElement>} [props.inputRef]
19
+ * @param {object} [props.pickerProps] lo demás del DatePicker de MUI X que aquí no tiene nombre (shouldDisableDate, slots,
20
+ * slotProps…); value y onChange son del campo
20
21
  * @param {object} [props.texts] los textos que cambian, con la forma de `common` en los textos del paquete
21
22
  */
22
- export default function DateInput({ name, label, value, onChange, onBlur, error, helperText, minDate, maxDate, disableFuture, disablePast, openTo, disabled, inputRef, texts, ...unknownProps }: {
23
+ export default function DateInput({ name, label, value, onChange, onBlur, error, helperText, minDate, maxDate, disableFuture, disablePast, openTo, disabled, inputRef, pickerProps, texts, ...unknownProps }: {
23
24
  name?: string;
24
25
  label: string;
25
26
  value: string | null | undefined;
@@ -37,5 +38,6 @@ export default function DateInput({ name, label, value, onChange, onBlur, error,
37
38
  openTo?: 'day' | 'month' | 'year';
38
39
  disabled?: boolean;
39
40
  inputRef?: import('react').Ref<HTMLInputElement>;
41
+ pickerProps?: object;
40
42
  texts?: object;
41
43
  }): import("react").JSX.Element;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @param {object} props
3
+ * @param {string} [props.name]
4
+ * @param {string} props.label ya traducido
5
+ * @param {string|null|undefined} props.value el instante ('2026-11-01T18:30:00Z' o con desfase) o ''
6
+ * @param {(value: string) => void} props.onChange recibe el instante en UTC ('' al borrar o a medias)
7
+ * @param {() => void} [props.onBlur]
8
+ * @param {string|{key: string, values?: object}} [props.error]
9
+ * @param {string} [props.helperText] ya traducida; va antes del nombre de la zona
10
+ * @param {string} [props.minDateTime] instante (el fin de algo: instantPlusMinutes(startsAt, 30))
11
+ * @param {number} [props.minimumMinutesFromNow] al menos tantos minutos después de ahora; se recorre con el reloj
12
+ * @param {string} [props.maxDateTime] instante
13
+ * @param {boolean} [props.disableFuture]
14
+ * @param {boolean} [props.disablePast] p. ej. un envío programado
15
+ * @param {number} [props.minutesStep] de cuánto en cuánto van los minutos; por omisión de uno en uno (15 para citas de
16
+ * cuarto de hora)
17
+ * @param {string} [props.timeZone] otra zona que la del proveedor (la de una sucursal); rotulada igual
18
+ * @param {boolean} [props.showTimeZone] false quita el nombre de la zona de abajo (por omisión se ve)
19
+ * @param {string} [props.timeZoneLabel] ya traducido, en lugar del nombre que da el navegador
20
+ * @param {boolean} [props.disabled]
21
+ * @param {import('react').Ref<HTMLInputElement>} [props.inputRef]
22
+ * @param {object} [props.pickerProps] lo demás del DateTimePicker de MUI X que aquí no tiene nombre (views, shouldDisableDate,
23
+ * slots, slotProps…); value y onChange son del campo
24
+ * @param {object} [props.texts] los textos que cambian, con la forma de `common` en los textos del paquete
25
+ */
26
+ export default function DateTimeInput({ name, label, value, onChange, onBlur, error, helperText, minDateTime, minimumMinutesFromNow, maxDateTime, disableFuture, disablePast, minutesStep, timeZone, showTimeZone, timeZoneLabel, disabled, inputRef, pickerProps, texts, ...unknownProps }: {
27
+ name?: string;
28
+ label: string;
29
+ value: string | null | undefined;
30
+ onChange: (value: string) => void;
31
+ onBlur?: () => void;
32
+ error?: string | {
33
+ key: string;
34
+ values?: object;
35
+ };
36
+ helperText?: string;
37
+ minDateTime?: string;
38
+ minimumMinutesFromNow?: number;
39
+ maxDateTime?: string;
40
+ disableFuture?: boolean;
41
+ disablePast?: boolean;
42
+ minutesStep?: number;
43
+ timeZone?: string;
44
+ showTimeZone?: boolean;
45
+ timeZoneLabel?: string;
46
+ disabled?: boolean;
47
+ inputRef?: import('react').Ref<HTMLInputElement>;
48
+ pickerProps?: object;
49
+ texts?: object;
50
+ }): import("react").JSX.Element;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @param {{name: string} & Omit<Parameters<typeof import('./DateTimeInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
3
+ * DateTimeInput (minDateTime, minimumMinutesFromNow, disablePast, minutesStep, timeZone…), sin value / onChange / onBlur / error
4
+ */
5
+ export default function FormDateTimeField({ name, ...inputProps }: {
6
+ name: string;
7
+ } & Omit<Parameters<typeof import('./DateTimeInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @param {{name: string} & Omit<Parameters<typeof import('./MonthInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
3
+ * MonthInput (minMonth, maxMonth, disableFuture…), sin value / onChange / onBlur / error
4
+ */
5
+ export default function FormMonthField({ name, ...inputProps }: {
6
+ name: string;
7
+ } & Omit<Parameters<typeof import('./MonthInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @param {{name: string} & Omit<Parameters<typeof import('./TimeInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
3
+ * TimeInput (minTime, maxTime, minutesStep…), sin value / onChange / onBlur / error
4
+ */
5
+ export default function FormTimeField({ name, ...inputProps }: {
6
+ name: string;
7
+ } & Omit<Parameters<typeof import('./TimeInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @param {object} props
3
+ * @param {string} [props.name]
4
+ * @param {string} props.label ya traducido
5
+ * @param {string|null|undefined} props.value 'AAAA-MM' o ''
6
+ * @param {(value: string) => void} props.onChange recibe 'AAAA-MM' ('' al borrar o a medias)
7
+ * @param {() => void} [props.onBlur]
8
+ * @param {string|{key: string, values?: object}} [props.error]
9
+ * @param {string} [props.helperText]
10
+ * @param {string} [props.minMonth] 'AAAA-MM'
11
+ * @param {string} [props.maxMonth] 'AAAA-MM'
12
+ * @param {boolean} [props.disableFuture] p. ej. el mes de un reporte que ya cerró
13
+ * @param {boolean} [props.disablePast]
14
+ * @param {boolean} [props.disabled]
15
+ * @param {import('react').Ref<HTMLInputElement>} [props.inputRef]
16
+ * @param {object} [props.pickerProps] lo demás del DatePicker de MUI X que aquí no tiene nombre (shouldDisableMonth, slots,
17
+ * slotProps…); value y onChange son del campo
18
+ * @param {object} [props.texts] los textos que cambian, con la forma de `common` en los textos del paquete
19
+ */
20
+ export default function MonthInput({ name, label, value, onChange, onBlur, error, helperText, minMonth, maxMonth, disableFuture, disablePast, disabled, inputRef, pickerProps, texts, ...unknownProps }: {
21
+ name?: string;
22
+ label: string;
23
+ value: string | null | undefined;
24
+ onChange: (value: string) => void;
25
+ onBlur?: () => void;
26
+ error?: string | {
27
+ key: string;
28
+ values?: object;
29
+ };
30
+ helperText?: string;
31
+ minMonth?: string;
32
+ maxMonth?: string;
33
+ disableFuture?: boolean;
34
+ disablePast?: boolean;
35
+ disabled?: boolean;
36
+ inputRef?: import('react').Ref<HTMLInputElement>;
37
+ pickerProps?: object;
38
+ texts?: object;
39
+ }): import("react").JSX.Element;
@@ -0,0 +1,22 @@
1
+ import 'dayjs/locale/es.js';
2
+ /**
3
+ * Los slotProps del selector con el campo de la casa y, encima, lo que pasó la pantalla en pickerProps.slotProps.
4
+ *
5
+ * @param {object} textField lo de la casa: id, name, onBlur, error, helperText
6
+ * @param {object} [pickerProps] lo que la pantalla le pasa al selector de MUI X
7
+ * @returns {object}
8
+ */
9
+ export declare function textFieldSlotPropsOf(textField: object, pickerProps?: object): object;
10
+ /**
11
+ * @param {object} props
12
+ * @param {string} props.inputId
13
+ * @param {import('react').ReactNode} props.label ya traducida
14
+ * @param {string} props.language el del proveedor más cercano
15
+ * @param {import('react').ReactNode} props.children el selector de MUI X
16
+ */
17
+ export default function PickerFrame({ inputId, label, language, children }: {
18
+ inputId: string;
19
+ label: import('react').ReactNode;
20
+ language: string;
21
+ children: import('react').ReactNode;
22
+ }): import("react").JSX.Element;
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @param {object} props
3
+ * @param {string} [props.name]
4
+ * @param {string} props.label ya traducido
5
+ * @param {string|null|undefined} props.value 'HH:mm' o ''
6
+ * @param {(value: string) => void} props.onChange recibe 'HH:mm' ('' al borrar o a medias)
7
+ * @param {() => void} [props.onBlur]
8
+ * @param {string|{key: string, values?: object}} [props.error]
9
+ * @param {string} [props.helperText]
10
+ * @param {string} [props.minTime] 'HH:mm'
11
+ * @param {string} [props.maxTime] 'HH:mm'
12
+ * @param {number} [props.minutesStep] de cuánto en cuánto van los minutos; por omisión de uno en uno (30 para citas de
13
+ * media hora)
14
+ * @param {boolean} [props.disabled]
15
+ * @param {import('react').Ref<HTMLInputElement>} [props.inputRef]
16
+ * @param {object} [props.pickerProps] lo demás del TimePicker de MUI X que aquí no tiene nombre (views, shouldDisableTime,
17
+ * slots, slotProps…); value y onChange son del campo
18
+ * @param {object} [props.texts] los textos que cambian, con la forma de `common` en los textos del paquete
19
+ */
20
+ export default function TimeInput({ name, label, value, onChange, onBlur, error, helperText, minTime, maxTime, minutesStep, disabled, inputRef, pickerProps, texts, ...unknownProps }: {
21
+ name?: string;
22
+ label: string;
23
+ value: string | null | undefined;
24
+ onChange: (value: string) => void;
25
+ onBlur?: () => void;
26
+ error?: string | {
27
+ key: string;
28
+ values?: object;
29
+ };
30
+ helperText?: string;
31
+ minTime?: string;
32
+ maxTime?: string;
33
+ minutesStep?: number;
34
+ disabled?: boolean;
35
+ inputRef?: import('react').Ref<HTMLInputElement>;
36
+ pickerProps?: object;
37
+ texts?: object;
38
+ }): import("react").JSX.Element;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @param {number} minutes
3
+ * @returns {{name: string, message: {key: string, values: {count: number}}, test: (value: unknown) => boolean}}
4
+ */
5
+ export declare function minutesFromNowRule(minutes: number): {
6
+ name: string;
7
+ message: {
8
+ key: string;
9
+ values: {
10
+ count: number;
11
+ };
12
+ };
13
+ test: (value: unknown) => boolean;
14
+ };
15
+ /**
16
+ * @param {string} startField el nombre del campo de inicio, en el mismo objeto del esquema
17
+ * @param {number} minutes
18
+ * @returns {{name: string, message: {key: string, values: {count: number}}, test: (value: unknown, context: {parent: object}) => boolean}}
19
+ */
20
+ export declare function minutesAfterRule(startField: string, minutes: number): {
21
+ name: string;
22
+ message: {
23
+ key: string;
24
+ values: {
25
+ count: number;
26
+ };
27
+ };
28
+ test: (value: unknown, context: {
29
+ parent: object;
30
+ }) => boolean;
31
+ };
@@ -0,0 +1,114 @@
1
+ import dayjs from 'dayjs';
2
+ /** Cómo viaja una fecha de calendario. */
3
+ export declare const CALENDAR_DATE_FORMAT = "YYYY-MM-DD";
4
+ /** Cómo viaja un mes. */
5
+ export declare const CALENDAR_MONTH_FORMAT = "YYYY-MM";
6
+ /** Cómo viaja una hora del día (de 24 horas, aunque en pantalla se vea con a.m. y p.m.). */
7
+ export declare const TIME_OF_DAY_FORMAT = "HH:mm";
8
+ /** Cómo viaja un instante: en UTC, con la Z al final. */
9
+ export declare const INSTANT_FORMAT = "YYYY-MM-DDTHH:mm:ss[Z]";
10
+ /** De cuánto en cuánto van los minutos en la fecha con hora y en la hora: de uno en uno (MUI X trae de 5 en 5). */
11
+ export declare const DEFAULT_MINUTES_STEP = 1;
12
+ /** Un minuto. */
13
+ export declare const MILLISECONDS_PER_MINUTE = 60000;
14
+ /**
15
+ * dayjs con las zonas horarias puestas: el selector de MUI X las necesita para pintar un instante en otra zona.
16
+ * OJO: se llama al usarla y no al importar el archivo: el paquete se declara sin efectos al importar (sideEffects: false)
17
+ * y un import solo por su efecto se lo puede saltar el empaquetador del proyecto.
18
+ *
19
+ * @returns {typeof dayjs}
20
+ */
21
+ export declare function zonedDayjs(): typeof dayjs;
22
+ /**
23
+ * Cómo se ven en pantalla los cuatro campos.
24
+ *
25
+ * @param {string} language el del proveedor más cercano
26
+ * @param {'h23'|'h12'} [hourCycle] el del proveedor; por omisión de 24 horas
27
+ * @returns {{date: string, month: string, time: string, dateTime: string, ampm: boolean}}
28
+ */
29
+ export declare function displayFormatsOf(language: string, hourCycle?: 'h23' | 'h12'): {
30
+ date: string;
31
+ month: string;
32
+ time: string;
33
+ dateTime: string;
34
+ ampm: boolean;
35
+ };
36
+ /**
37
+ * El nombre de la zona horaria como lo dice una persona («Hora estándar central», «Pacific Time»), para rotular la fecha
38
+ * con hora. Si el navegador no sabe nombrarla, la zona tal cual (America/Mexico_City).
39
+ *
40
+ * @param {string} timeZone la zona IANA del proveedor
41
+ * @param {string} intlLocale es-MX, en-US…
42
+ * @param {Date} [at] el momento que se nombra (en las zonas con horario de verano el nombre puede cambiar)
43
+ * @returns {string}
44
+ */
45
+ export declare function timeZoneNameOf(timeZone: string, intlLocale: string, at?: Date): string;
46
+ /**
47
+ * Un instante como lo quiere el selector, en la zona en que se pinta; null si está vacío o no se entiende.
48
+ *
49
+ * @param {string|null|undefined} instantText '2026-11-01T18:30:00Z' o con su desfase ('…-06:00')
50
+ * @param {string} timeZone la zona en que se pinta
51
+ * @returns {import('dayjs').Dayjs|null}
52
+ */
53
+ export declare function pickerInstantOf(instantText: string | null | undefined, timeZone: string): import('dayjs').Dayjs | null;
54
+ /**
55
+ * Lo que eligió la persona como instante en UTC; '' si está vacío o a medias.
56
+ *
57
+ * @param {import('dayjs').Dayjs|null} pickedValue
58
+ * @returns {string}
59
+ */
60
+ export declare function instantTextOf(pickedValue: import('dayjs').Dayjs | null): string;
61
+ /**
62
+ * El primer instante que se puede elegir cuando la regla es «al menos N minutos después de ahora» (publicar algo con
63
+ * anticipación): este minuto, sin segundos, más N minutos. Sin segundos para que la regla no cambie entre que la persona
64
+ * mira la hora y la elige.
65
+ *
66
+ * @param {number} minutes
67
+ * @param {Date|number} [now]
68
+ * @returns {string} el instante en UTC ('2026-11-02T18:35:00Z')
69
+ */
70
+ export declare function earliestInstantFromNow(minutes: number, now?: Date | number): string;
71
+ /**
72
+ * Un instante más N minutos (el fin de algo que dura al menos N minutos desde su inicio). '' si el instante viene vacío
73
+ * o no se entiende.
74
+ *
75
+ * @param {string|null|undefined} instantText
76
+ * @param {number} minutes
77
+ * @returns {string}
78
+ */
79
+ export declare function instantPlusMinutes(instantText: string | null | undefined, minutes: number): string;
80
+ /**
81
+ * El más tarde de varios instantes (los vacíos no cuentan): el mínimo que de verdad aplica cuando hay más de una regla.
82
+ *
83
+ * @param {...(string|null|undefined)} instantTexts
84
+ * @returns {string} '' si todos vienen vacíos
85
+ */
86
+ export declare function latestInstantOf(...instantTexts: (string | null | undefined)[]): string;
87
+ /**
88
+ * Una hora del día 'HH:mm' como la quiere el selector; null si está vacía o no tiene esa forma.
89
+ *
90
+ * @param {string|null|undefined} timeText
91
+ * @returns {import('dayjs').Dayjs|null}
92
+ */
93
+ export declare function pickerTimeOf(timeText: string | null | undefined): import('dayjs').Dayjs | null;
94
+ /**
95
+ * Lo que eligió la persona como 'HH:mm'; '' si está vacío o a medias.
96
+ *
97
+ * @param {import('dayjs').Dayjs|null} pickedValue
98
+ * @returns {string}
99
+ */
100
+ export declare function timeTextOf(pickedValue: import('dayjs').Dayjs | null): string;
101
+ /**
102
+ * Un mes 'AAAA-MM' como lo quiere el selector (su día 1); null si está vacío o no tiene esa forma.
103
+ *
104
+ * @param {string|null|undefined} monthText
105
+ * @returns {import('dayjs').Dayjs|null}
106
+ */
107
+ export declare function pickerMonthOf(monthText: string | null | undefined): import('dayjs').Dayjs | null;
108
+ /**
109
+ * Lo que eligió la persona como 'AAAA-MM'; '' si está vacío o a medias.
110
+ *
111
+ * @param {import('dayjs').Dayjs|null} pickedValue
112
+ * @returns {string}
113
+ */
114
+ export declare function monthTextOf(pickedValue: import('dayjs').Dayjs | null): string;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @param {boolean} enabled sin regla que dependa de la hora no hace falta el temporizador
3
+ * @returns {number} el inicio del minuto de ahora, en milisegundos
4
+ */
5
+ export declare function useCurrentMinute(enabled: boolean): number;
@@ -0,0 +1,24 @@
1
+ import { displayFormatsOf } from './pickerValues.js';
2
+ /**
3
+ * @param {object} field
4
+ * @param {string} [field.name]
5
+ * @param {string} field.kind de qué campo es (date, dateTime, time, month): da el principio del id si no hay name
6
+ * @param {string|{key: string, values?: object}} [field.error]
7
+ * @param {object} [field.texts] los textos que cambian, con la forma de `common`
8
+ * @returns {{language: string, timeZone: string, inputId: string, errorText: string|undefined, formats: ReturnType<typeof displayFormatsOf>}}
9
+ */
10
+ export declare function usePickerField({ name, kind, error, texts }: {
11
+ name?: string;
12
+ kind: string;
13
+ error?: string | {
14
+ key: string;
15
+ values?: object;
16
+ };
17
+ texts?: object;
18
+ }): {
19
+ language: string;
20
+ timeZone: string;
21
+ inputId: string;
22
+ errorText: string | undefined;
23
+ formats: ReturnType<typeof displayFormatsOf>;
24
+ };
@@ -4,16 +4,19 @@
4
4
  * @param {string} value el código del API
5
5
  * @param {string} keyPrefix dónde viven sus textos dentro del namespace dictionaries ('orderStatus.paid' → orderStatus.paid.label)
6
6
  * @param {string} color color de paleta de MUI
7
- * @param {{hasShortLabel?: boolean}} [options] hasShortLabel: trae palabra corta (keyPrefix.shortLabel)
8
- * @returns {{value: string, labelKey: string, tooltipKey: string, shortLabelKey?: string, color: string, isKnown: boolean}}
7
+ * @param {{hasShortLabel?: boolean, icon?: import('react').ElementType}} [options] hasShortLabel: trae palabra corta
8
+ * (keyPrefix.shortLabel); icon: el ícono con que se pinta en una insignia (IconBadge), p. ej. CreditCardOutlinedIcon
9
+ * @returns {{value: string, labelKey: string, tooltipKey: string, shortLabelKey?: string, icon?: import('react').ElementType, color: string, isKnown: boolean}}
9
10
  */
10
- export declare function dictionaryEntryOf(value: string, keyPrefix: string, color: string, { hasShortLabel }?: {
11
+ export declare function dictionaryEntryOf(value: string, keyPrefix: string, color: string, { hasShortLabel, icon }?: {
11
12
  hasShortLabel?: boolean;
13
+ icon?: import('react').ElementType;
12
14
  }): {
13
15
  value: string;
14
16
  labelKey: string;
15
17
  tooltipKey: string;
16
18
  shortLabelKey?: string;
19
+ icon?: import('react').ElementType;
17
20
  color: string;
18
21
  isKnown: boolean;
19
22
  };
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @param {{name: string} & Omit<Parameters<typeof import('../upload/AttachmentsInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
3
+ * AttachmentsInput (accept, maxFiles, maxTotalSize, template…), sin value / onChange / onBlur / error
4
+ */
5
+ export default function FormAttachmentsField({ name, ...inputProps }: {
6
+ name: string;
7
+ } & Omit<Parameters<typeof import('../upload/AttachmentsInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @param {{name: string} & Omit<Parameters<typeof import('../inputs/CheckboxGroupInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
3
+ * CheckboxGroupInput, sin value / onChange / onBlur / error
4
+ */
5
+ export default function FormCheckboxGroupField({ name, ...inputProps }: {
6
+ name: string;
7
+ } & Omit<Parameters<typeof import('../inputs/CheckboxGroupInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @param {{name: string} & Omit<Parameters<typeof import('../upload/FileInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
3
+ * FileInput (accept, maxSize, template…), sin value / onChange / onBlur / error
4
+ */
5
+ export default function FormFileField({ name, ...inputProps }: {
6
+ name: string;
7
+ } & Omit<Parameters<typeof import('../upload/FileInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @param {{name: string} & Omit<Parameters<typeof import('../upload/FileUploadInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
3
+ * FileUploadInput (upload, accept, maxSize, download…), sin value / onChange / onBlur / error
4
+ */
5
+ export default function FormFileUploadField({ name, ...inputProps }: {
6
+ name: string;
7
+ } & Omit<Parameters<typeof import('../upload/FileUploadInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @param {{name: string} & Omit<Parameters<typeof import('../upload/ImageInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
3
+ * ImageInput (shape, size, maxSize…), sin value / onChange / onBlur / error
4
+ */
5
+ export default function FormImageField({ name, ...inputProps }: {
6
+ name: string;
7
+ } & Omit<Parameters<typeof import('../upload/ImageInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @param {{name: string} & Omit<Parameters<typeof import('../inputs/MaskedInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props
3
+ * las de MaskedInput (mask, label, helperText, placeholder…)
4
+ */
5
+ export default function FormMaskedField({ name, ...inputProps }: {
6
+ name: string;
7
+ } & Omit<Parameters<typeof import('../inputs/MaskedInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @param {{
3
+ * name: string,
4
+ * emptyRow: object,
5
+ * renderRow: (row: {index: number, row: any, nameOf: (field: string) => string}) => import('react').ReactNode,
6
+ * removeBlockedReason?: (row: any, index: number) => string|null,
7
+ * confirmRemove?: (row: any, index: number) => boolean,
8
+ * onAdd?: (index: number) => void,
9
+ * onRemove?: (row: any, index: number) => void,
10
+ * } & Omit<Parameters<typeof import('../inputs/RepeatingFields.js').default>[0], 'rowKeys'|'renderRow'|'onAdd'|'onRemove'|'onClear'|'removeBlockedReasonOf'|'confirmRemoveOf'|'rowHasErrorOf'|'error'>} props
11
+ * name: la lista del formulario; emptyRow: cómo empieza un renglón nuevo; lo demás, lo de RepeatingFields
12
+ */
13
+ export default function FormRepeatingFields({ name, emptyRow, renderRow, removeBlockedReason, confirmRemove, onAdd, onRemove, ...viewProps }: {
14
+ name: string;
15
+ emptyRow: object;
16
+ renderRow: (row: {
17
+ index: number;
18
+ row: any;
19
+ nameOf: (field: string) => string;
20
+ }) => import('react').ReactNode;
21
+ removeBlockedReason?: (row: any, index: number) => string | null;
22
+ confirmRemove?: (row: any, index: number) => boolean;
23
+ onAdd?: (index: number) => void;
24
+ onRemove?: (row: any, index: number) => void;
25
+ } & Omit<Parameters<typeof import('../inputs/RepeatingFields.js').default>[0], 'rowKeys' | 'renderRow' | 'onAdd' | 'onRemove' | 'onClear' | 'removeBlockedReasonOf' | 'confirmRemoveOf' | 'rowHasErrorOf' | 'error'>): import("react").JSX.Element;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @param {{name: string} & Omit<Parameters<typeof import('../inputs/TransferListInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
3
+ * TransferListInput, sin value / onChange / onBlur / error
4
+ */
5
+ export default function FormTransferListField({ name, ...inputProps }: {
6
+ name: string;
7
+ } & Omit<Parameters<typeof import('../inputs/TransferListInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
@@ -1,7 +1,16 @@
1
+ export { default as FormAttachmentsField } from './FormAttachmentsField.js';
1
2
  export { default as FormCatalogField } from './FormCatalogField.js';
3
+ export { default as FormCheckboxGroupField } from './FormCheckboxGroupField.js';
2
4
  export { default as FormColorField } from './FormColorField.js';
5
+ export { default as FormFileField } from './FormFileField.js';
6
+ export { default as FormFileUploadField } from './FormFileUploadField.js';
7
+ export { default as FormImageField } from './FormImageField.js';
8
+ export { default as FormMaskedField } from './FormMaskedField.js';
3
9
  export { default as FormNumberField } from './FormNumberField.js';
4
10
  export { default as FormProblemAlert } from './FormProblemAlert.js';
11
+ export { default as FormRepeatingFields } from './FormRepeatingFields.js';
12
+ export { default as FormTransferListField } from './FormTransferListField.js';
13
+ export { listTotalAtMostRule, listTotalOf, orderedInListRule, uniqueInListRule } from './listRules.js';
5
14
  export { default as FormSelectField } from './FormSelectField.js';
6
15
  export { default as FormServerProblem } from './FormServerProblem.js';
7
16
  export { default as FormTextField } from './FormTextField.js';
@@ -14,6 +23,6 @@ export { default as TwoStepVerificationCard } from './security/TwoStepVerificati
14
23
  export { RECOVERY_CODE_PATTERN, TOTP_CODE_PATTERN, normalizeRecoveryCode, normalizeTotpCode, } from './security/securityRules.js';
15
24
  export { default as SubmitButton } from './SubmitButton.js';
16
25
  export { applyServerProblem } from './applyServerProblem.js';
17
- export { formLevelMessageOf, splitServerFieldErrors } from './serverProblemFields.js';
26
+ export { formLevelMessageOf, splitRowFieldErrors, splitServerFieldErrors } from './serverProblemFields.js';
18
27
  export { useFormikField } from './useFormikField.js';
19
28
  export { Yup, buildYupLocale, translateValidationMessage } from './validation.js';
@@ -0,0 +1,48 @@
1
+ import { Money } from '../money/money.js';
2
+ /**
3
+ * Sin repetidos en una columna: el renglón que repite dice con cuál choca.
4
+ *
5
+ * @param {string} listName la lista en el formulario ('tiers')
6
+ * @param {string} field la columna ('min_quantity')
7
+ * @returns {import('yup').TestConfig<any, any>} para .test() de yup
8
+ */
9
+ export declare function uniqueInListRule(listName: string, field: string): import('yup').TestConfig<any, any>;
10
+ /**
11
+ * En orden por una columna, comparado con el renglón de arriba y el de abajo que tengan valor.
12
+ *
13
+ * @param {string} listName
14
+ * @param {string} field
15
+ * @param {{ascending?: boolean, allowEqual?: boolean, displayOf?: (text: string) => string}} [options] ascending: de menor
16
+ * a mayor (por omisión); displayOf: cómo se dice el valor del vecino en el mensaje (p. ej. con %)
17
+ * @returns {import('yup').TestConfig<any, any>} para .test() de yup
18
+ */
19
+ export declare function orderedInListRule(listName: string, field: string, { ascending, allowEqual, displayOf }?: {
20
+ ascending?: boolean;
21
+ allowEqual?: boolean;
22
+ displayOf?: (text: string) => string;
23
+ }): import('yup').TestConfig<any, any>;
24
+ /**
25
+ * Lo que suma una columna, con Money (sin errores de decimales). Los vacíos cuentan como cero y los que no son número no
26
+ * cuentan (su propio campo ya lo dice).
27
+ *
28
+ * @param {object[]} rows
29
+ * @param {string} field
30
+ * @param {{currency?: string}} [options]
31
+ * @returns {Money}
32
+ */
33
+ export declare function listTotalOf(rows: object[], field: string, { currency }?: {
34
+ currency?: string;
35
+ }): Money;
36
+ /**
37
+ * Lo que suman entre todos no pasa de un tope (el reparto de un presupuesto, de un límite de crédito). Va en la lista:
38
+ * Yup.array().test(listTotalAtMostRule(…)); el mensaje sale abajo de la lista.
39
+ *
40
+ * @param {string} field la columna que se suma
41
+ * @param {number|string|((parent: object) => number|string|null)} max el tope, o cómo sacarlo de los demás valores del
42
+ * formulario (el límite que se escribió arriba)
43
+ * @param {{currency?: string}} [options]
44
+ * @returns {import('yup').TestConfig<any, any>} para .test() de yup
45
+ */
46
+ export declare function listTotalAtMostRule(field: string, max: number | string | ((parent: object) => number | string | null), { currency }?: {
47
+ currency?: string;
48
+ }): import('yup').TestConfig<any, any>;
@@ -17,3 +17,16 @@ export declare function splitServerFieldErrors(errorsByField: Record<string, str
17
17
  * @returns {string|null}
18
18
  */
19
19
  export declare function formLevelMessageOf(errorsByField: Record<string, string[]>, formFieldNames: string[], generalMessage: string | null | undefined): string | null;
20
+ /**
21
+ * Separa los errores de un 422 que son de un campo DENTRO de un renglón que el formulario sí tiene ('contacts.2.email'
22
+ * con contacts[2] en los valores): esos van a su renglón con la ruta completa. Los demás siguen el camino de siempre
23
+ * (fieldErrorsOf los reduce a su último nombre: 'rows.3.email' → 'email').
24
+ *
25
+ * @param {object|null|undefined} rawErrors problem.errors tal cual ({ruta: [mensajes]})
26
+ * @param {(path: string) => boolean} existsInForm si esa ruta existe en los valores del formulario
27
+ * @returns {{rowFieldErrors: Record<string, string>, otherErrors: Record<string, unknown>}}
28
+ */
29
+ export declare function splitRowFieldErrors(rawErrors: object | null | undefined, existsInForm: (path: string) => boolean): {
30
+ rowFieldErrors: Record<string, string>;
31
+ otherErrors: Record<string, unknown>;
32
+ };
@@ -1,2 +1,2 @@
1
1
  export { FieldArray, Form, Formik, useField, useFormikContext } from 'formik';
2
- export { ChangePasswordForm, ForgotPasswordForm, FormCatalogField, FormColorField, FormNumberField, FormProblemAlert, FormSelectField, FormServerProblem, FormTextField, FormWizard, RECOVERY_CODE_PATTERN, SECOND_STEP_METHOD, SecondStepForm, SignInForm, SubmitButton, TOTP_CODE_PATTERN, TwoStepVerificationCard, Yup, applyServerProblem, buildYupLocale, formLevelMessageOf, normalizeRecoveryCode, normalizeTotpCode, splitServerFieldErrors, translateValidationMessage, useFormikField, } from './forms/index.js';
2
+ export { ChangePasswordForm, ForgotPasswordForm, FormAttachmentsField, FormCatalogField, FormCheckboxGroupField, FormColorField, FormFileField, FormFileUploadField, FormImageField, FormMaskedField, FormNumberField, FormProblemAlert, FormRepeatingFields, FormSelectField, FormServerProblem, FormTransferListField, FormTextField, FormWizard, RECOVERY_CODE_PATTERN, SECOND_STEP_METHOD, SecondStepForm, SignInForm, SubmitButton, TOTP_CODE_PATTERN, TwoStepVerificationCard, Yup, applyServerProblem, buildYupLocale, formLevelMessageOf, normalizeRecoveryCode, normalizeTotpCode, listTotalAtMostRule, listTotalOf, orderedInListRule, splitRowFieldErrors, splitServerFieldErrors, translateValidationMessage, uniqueInListRule, useFormikField, } from './forms/index.js';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @param {{name: string, control?: object} & Omit<Parameters<typeof import('../upload/AttachmentsInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las del campo de la casa, sin
3
+ * value / onChange / onBlur / error; control: el de useForm, si la pantalla no usa FormProvider
4
+ */
5
+ export default function FormAttachmentsField({ name, control, ...inputProps }: {
6
+ name: string;
7
+ control?: object;
8
+ } & Omit<Parameters<typeof import('../upload/AttachmentsInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @param {{name: string, control?: object} & Omit<Parameters<typeof import('../inputs/CheckboxGroupInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las del campo de la casa, sin
3
+ * value / onChange / onBlur / error; control: el de useForm, si la pantalla no usa FormProvider
4
+ */
5
+ export default function FormCheckboxGroupField({ name, control, ...inputProps }: {
6
+ name: string;
7
+ control?: object;
8
+ } & Omit<Parameters<typeof import('../inputs/CheckboxGroupInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;