@mantis-core/ui 0.5.0 → 0.6.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 (379) hide show
  1. package/CHANGELOG.md +144 -0
  2. package/COMPONENTS.md +71 -73
  3. package/README.md +13 -6
  4. package/catalog.json +3031 -0
  5. package/dist/components/Buttons/Button.d.ts +39 -9
  6. package/dist/components/Buttons/Button.d.ts.map +1 -1
  7. package/dist/components/Buttons/Button.js +21 -13
  8. package/dist/components/Buttons/Button.js.map +1 -1
  9. package/dist/components/Forms/AutoCompleteField.d.ts +60 -0
  10. package/dist/components/Forms/AutoCompleteField.d.ts.map +1 -0
  11. package/dist/components/Forms/AutoCompleteField.js +125 -0
  12. package/dist/components/Forms/AutoCompleteField.js.map +1 -0
  13. package/dist/components/Forms/CKEditorInput.d.ts +5 -2
  14. package/dist/components/Forms/CKEditorInput.d.ts.map +1 -1
  15. package/dist/components/Forms/CKEditorInput.js +5 -2
  16. package/dist/components/Forms/CKEditorInput.js.map +1 -1
  17. package/dist/components/Forms/CheckboxField.d.ts +14 -0
  18. package/dist/components/Forms/CheckboxField.d.ts.map +1 -0
  19. package/dist/components/Forms/CheckboxField.js +26 -0
  20. package/dist/components/Forms/CheckboxField.js.map +1 -0
  21. package/dist/components/Forms/ColorPickerInput.d.ts +27 -8
  22. package/dist/components/Forms/ColorPickerInput.d.ts.map +1 -1
  23. package/dist/components/Forms/ColorPickerInput.js +57 -11
  24. package/dist/components/Forms/ColorPickerInput.js.map +1 -1
  25. package/dist/components/Forms/DateField.d.ts +68 -0
  26. package/dist/components/Forms/DateField.d.ts.map +1 -0
  27. package/dist/components/Forms/DateField.js +108 -0
  28. package/dist/components/Forms/DateField.js.map +1 -0
  29. package/dist/components/Forms/DatePresets.d.ts.map +1 -1
  30. package/dist/components/Forms/DatePresets.js +6 -3
  31. package/dist/components/Forms/DatePresets.js.map +1 -1
  32. package/dist/components/Forms/FieldShell.d.ts +24 -0
  33. package/dist/components/Forms/FieldShell.d.ts.map +1 -0
  34. package/dist/components/Forms/FieldShell.js +39 -0
  35. package/dist/components/Forms/FieldShell.js.map +1 -0
  36. package/dist/components/Forms/FileDropzone.d.ts +4 -2
  37. package/dist/components/Forms/FileDropzone.d.ts.map +1 -1
  38. package/dist/components/Forms/FileDropzone.js.map +1 -1
  39. package/dist/components/Forms/FormActionsBar.js +2 -2
  40. package/dist/components/Forms/FormActionsBar.js.map +1 -1
  41. package/dist/components/Forms/FormWizard.d.ts +1 -1
  42. package/dist/components/Forms/FormWizard.d.ts.map +1 -1
  43. package/dist/components/Forms/FormWizard.js +4 -5
  44. package/dist/components/Forms/FormWizard.js.map +1 -1
  45. package/dist/components/Forms/HiddenField.d.ts +12 -6
  46. package/dist/components/Forms/HiddenField.d.ts.map +1 -1
  47. package/dist/components/Forms/HiddenField.js +14 -5
  48. package/dist/components/Forms/HiddenField.js.map +1 -1
  49. package/dist/components/Forms/MaskField.d.ts +28 -0
  50. package/dist/components/Forms/MaskField.d.ts.map +1 -0
  51. package/dist/components/Forms/MaskField.js +74 -0
  52. package/dist/components/Forms/MaskField.js.map +1 -0
  53. package/dist/components/Forms/NumberField.d.ts +14 -0
  54. package/dist/components/Forms/NumberField.d.ts.map +1 -0
  55. package/dist/components/Forms/NumberField.js +51 -0
  56. package/dist/components/Forms/NumberField.js.map +1 -0
  57. package/dist/components/Forms/OtpInput.d.ts +23 -8
  58. package/dist/components/Forms/OtpInput.d.ts.map +1 -1
  59. package/dist/components/Forms/OtpInput.js +37 -8
  60. package/dist/components/Forms/OtpInput.js.map +1 -1
  61. package/dist/components/Forms/PasswordInput.d.ts +22 -9
  62. package/dist/components/Forms/PasswordInput.d.ts.map +1 -1
  63. package/dist/components/Forms/PasswordInput.js +63 -28
  64. package/dist/components/Forms/PasswordInput.js.map +1 -1
  65. package/dist/components/Forms/PhoneInput.d.ts +16 -8
  66. package/dist/components/Forms/PhoneInput.d.ts.map +1 -1
  67. package/dist/components/Forms/PhoneInput.js +13 -6
  68. package/dist/components/Forms/PhoneInput.js.map +1 -1
  69. package/dist/components/Forms/RadioGroup.d.ts +34 -13
  70. package/dist/components/Forms/RadioGroup.d.ts.map +1 -1
  71. package/dist/components/Forms/RadioGroup.js +49 -6
  72. package/dist/components/Forms/RadioGroup.js.map +1 -1
  73. package/dist/components/Forms/RangeSlider.d.ts +26 -11
  74. package/dist/components/Forms/RangeSlider.d.ts.map +1 -1
  75. package/dist/components/Forms/RangeSlider.js +40 -7
  76. package/dist/components/Forms/RangeSlider.js.map +1 -1
  77. package/dist/components/Forms/RatingInput.d.ts +24 -8
  78. package/dist/components/Forms/RatingInput.d.ts.map +1 -1
  79. package/dist/components/Forms/RatingInput.js +41 -9
  80. package/dist/components/Forms/RatingInput.js.map +1 -1
  81. package/dist/components/Forms/SearchInput.d.ts +18 -10
  82. package/dist/components/Forms/SearchInput.d.ts.map +1 -1
  83. package/dist/components/Forms/SearchInput.js +44 -23
  84. package/dist/components/Forms/SearchInput.js.map +1 -1
  85. package/dist/components/Forms/SelectField.d.ts +41 -0
  86. package/dist/components/Forms/SelectField.d.ts.map +1 -0
  87. package/dist/components/Forms/SelectField.js +110 -0
  88. package/dist/components/Forms/SelectField.js.map +1 -0
  89. package/dist/components/Forms/SwitchField.d.ts +14 -0
  90. package/dist/components/Forms/SwitchField.d.ts.map +1 -0
  91. package/dist/components/Forms/SwitchField.js +26 -0
  92. package/dist/components/Forms/SwitchField.js.map +1 -0
  93. package/dist/components/Forms/TagsInput.d.ts +29 -8
  94. package/dist/components/Forms/TagsInput.d.ts.map +1 -1
  95. package/dist/components/Forms/TagsInput.js +53 -9
  96. package/dist/components/Forms/TagsInput.js.map +1 -1
  97. package/dist/components/Forms/TextArea.d.ts +13 -10
  98. package/dist/components/Forms/TextArea.d.ts.map +1 -1
  99. package/dist/components/Forms/TextArea.js +27 -9
  100. package/dist/components/Forms/TextArea.js.map +1 -1
  101. package/dist/components/Forms/TextField.d.ts +14 -0
  102. package/dist/components/Forms/TextField.d.ts.map +1 -0
  103. package/dist/components/Forms/TextField.js +29 -0
  104. package/dist/components/Forms/TextField.js.map +1 -0
  105. package/dist/components/Forms/ToggleInlineButton.d.ts +33 -12
  106. package/dist/components/Forms/ToggleInlineButton.d.ts.map +1 -1
  107. package/dist/components/Forms/ToggleInlineButton.js +56 -6
  108. package/dist/components/Forms/ToggleInlineButton.js.map +1 -1
  109. package/dist/components/Forms/UploadFilesPreview.js +3 -3
  110. package/dist/components/Forms/UploadFilesPreview.js.map +1 -1
  111. package/dist/components/Forms/field-typing.test-d.d.ts +2 -0
  112. package/dist/components/Forms/field-typing.test-d.d.ts.map +1 -0
  113. package/dist/components/Forms/field-typing.test-d.js +24 -0
  114. package/dist/components/Forms/field-typing.test-d.js.map +1 -0
  115. package/dist/components/Forms/useFieldController.d.ts +85 -0
  116. package/dist/components/Forms/useFieldController.d.ts.map +1 -0
  117. package/dist/components/Forms/useFieldController.js +54 -0
  118. package/dist/components/Forms/useFieldController.js.map +1 -0
  119. package/dist/components/Loaders/Loading.d.ts.map +1 -1
  120. package/dist/components/Loaders/Loading.js +3 -2
  121. package/dist/components/Loaders/Loading.js.map +1 -1
  122. package/dist/components/Tables/ActionColumn.d.ts +20 -4
  123. package/dist/components/Tables/ActionColumn.d.ts.map +1 -1
  124. package/dist/components/Tables/ActionColumn.js +24 -5
  125. package/dist/components/Tables/ActionColumn.js.map +1 -1
  126. package/dist/components/Tables/FilterPannel.d.ts +9 -2
  127. package/dist/components/Tables/FilterPannel.d.ts.map +1 -1
  128. package/dist/components/Tables/FilterPannel.js +15 -11
  129. package/dist/components/Tables/FilterPannel.js.map +1 -1
  130. package/dist/components/Tables/IndexColumn.d.ts +12 -3
  131. package/dist/components/Tables/IndexColumn.d.ts.map +1 -1
  132. package/dist/components/Tables/IndexColumn.js +21 -5
  133. package/dist/components/Tables/IndexColumn.js.map +1 -1
  134. package/dist/components/Tables/MantisDataTable.d.ts +45 -0
  135. package/dist/components/Tables/MantisDataTable.d.ts.map +1 -0
  136. package/dist/components/Tables/MantisDataTable.js +63 -0
  137. package/dist/components/Tables/MantisDataTable.js.map +1 -0
  138. package/dist/components/Tables/MenuButton.d.ts +28 -7
  139. package/dist/components/Tables/MenuButton.d.ts.map +1 -1
  140. package/dist/components/Tables/MenuButton.js +20 -10
  141. package/dist/components/Tables/MenuButton.js.map +1 -1
  142. package/dist/components/Tables/PaginatedTable.d.ts +26 -17
  143. package/dist/components/Tables/PaginatedTable.d.ts.map +1 -1
  144. package/dist/components/Tables/PaginatedTable.js +24 -22
  145. package/dist/components/Tables/PaginatedTable.js.map +1 -1
  146. package/dist/components/Tables/cell-presets.d.ts +35 -0
  147. package/dist/components/Tables/cell-presets.d.ts.map +1 -0
  148. package/dist/components/Tables/cell-presets.js +40 -0
  149. package/dist/components/Tables/cell-presets.js.map +1 -0
  150. package/dist/components/Tables/columns.d.ts +40 -0
  151. package/dist/components/Tables/columns.d.ts.map +1 -0
  152. package/dist/components/Tables/columns.js +2 -0
  153. package/dist/components/Tables/columns.js.map +1 -0
  154. package/dist/components/Tables/filters/MultiSelectFilter.d.ts +24 -6
  155. package/dist/components/Tables/filters/MultiSelectFilter.d.ts.map +1 -1
  156. package/dist/components/Tables/filters/MultiSelectFilter.js +19 -6
  157. package/dist/components/Tables/filters/MultiSelectFilter.js.map +1 -1
  158. package/dist/components/auth/ChangePasswordForm.d.ts.map +1 -1
  159. package/dist/components/auth/ChangePasswordForm.js +12 -12
  160. package/dist/components/auth/ChangePasswordForm.js.map +1 -1
  161. package/dist/components/auth/ForgotPasswordForm.d.ts.map +1 -1
  162. package/dist/components/auth/ForgotPasswordForm.js +7 -5
  163. package/dist/components/auth/ForgotPasswordForm.js.map +1 -1
  164. package/dist/components/auth/LoginForm.d.ts +2 -2
  165. package/dist/components/auth/LoginForm.d.ts.map +1 -1
  166. package/dist/components/auth/LoginForm.js +15 -15
  167. package/dist/components/auth/LoginForm.js.map +1 -1
  168. package/dist/components/auth/ResetPasswordForm.d.ts.map +1 -1
  169. package/dist/components/auth/ResetPasswordForm.js +11 -12
  170. package/dist/components/auth/ResetPasswordForm.js.map +1 -1
  171. package/dist/components/auth/UserMenu.d.ts +11 -1
  172. package/dist/components/auth/UserMenu.d.ts.map +1 -1
  173. package/dist/components/auth/UserMenu.js +30 -87
  174. package/dist/components/auth/UserMenu.js.map +1 -1
  175. package/dist/components/data/Timeline.d.ts +2 -2
  176. package/dist/components/data/Timeline.d.ts.map +1 -1
  177. package/dist/components/data/Timeline.js +17 -17
  178. package/dist/components/data/Timeline.js.map +1 -1
  179. package/dist/components/feedback/Avatar.d.ts +4 -2
  180. package/dist/components/feedback/Avatar.d.ts.map +1 -1
  181. package/dist/components/feedback/Avatar.js +4 -4
  182. package/dist/components/feedback/Avatar.js.map +1 -1
  183. package/dist/components/feedback/CardSkeleton.d.ts.map +1 -1
  184. package/dist/components/feedback/CardSkeleton.js +3 -3
  185. package/dist/components/feedback/CardSkeleton.js.map +1 -1
  186. package/dist/components/feedback/TableSkeleton.d.ts.map +1 -1
  187. package/dist/components/feedback/TableSkeleton.js +3 -3
  188. package/dist/components/feedback/TableSkeleton.js.map +1 -1
  189. package/dist/components/feedback/Tag.d.ts +4 -2
  190. package/dist/components/feedback/Tag.d.ts.map +1 -1
  191. package/dist/components/feedback/Tag.js +4 -4
  192. package/dist/components/feedback/Tag.js.map +1 -1
  193. package/dist/components/navigation/CommandPalette.d.ts.map +1 -1
  194. package/dist/components/navigation/CommandPalette.js +5 -2
  195. package/dist/components/navigation/CommandPalette.js.map +1 -1
  196. package/dist/components/navigation/PageTabs.d.ts +10 -8
  197. package/dist/components/navigation/PageTabs.d.ts.map +1 -1
  198. package/dist/components/navigation/PageTabs.js +17 -13
  199. package/dist/components/navigation/PageTabs.js.map +1 -1
  200. package/dist/components/overlays/Drawer.d.ts +16 -3
  201. package/dist/components/overlays/Drawer.d.ts.map +1 -1
  202. package/dist/components/overlays/Drawer.js +9 -5
  203. package/dist/components/overlays/Drawer.js.map +1 -1
  204. package/dist/components/overlays/Modal.d.ts +18 -3
  205. package/dist/components/overlays/Modal.d.ts.map +1 -1
  206. package/dist/components/overlays/Modal.js +13 -5
  207. package/dist/components/overlays/Modal.js.map +1 -1
  208. package/dist/components/pages/app-shell/AppShell.d.ts.map +1 -1
  209. package/dist/components/pages/app-shell/AppShell.js +6 -6
  210. package/dist/components/pages/app-shell/AppShell.js.map +1 -1
  211. package/dist/components/ui/ConfirmDialog.d.ts +1 -2
  212. package/dist/components/ui/ConfirmDialog.d.ts.map +1 -1
  213. package/dist/components/ui/ConfirmDialog.js +10 -4
  214. package/dist/components/ui/ConfirmDialog.js.map +1 -1
  215. package/dist/components/ui/DataState.js +2 -2
  216. package/dist/components/ui/DataState.js.map +1 -1
  217. package/dist/index.d.ts +71 -42
  218. package/dist/index.d.ts.map +1 -1
  219. package/dist/index.js +114 -22
  220. package/dist/index.js.map +1 -1
  221. package/docs/README.md +1 -1
  222. package/docs/components/action-column.md +33 -7
  223. package/docs/components/admin-page-configurator.md +24 -5
  224. package/docs/components/admin-page-header.md +21 -3
  225. package/docs/components/admin-page-layout-shell.md +18 -4
  226. package/docs/components/admin-page-layout.md +34 -5
  227. package/docs/components/app-shell.md +31 -6
  228. package/docs/components/auto-complete-field.md +60 -0
  229. package/docs/components/avatar.md +18 -8
  230. package/docs/components/bar-chart.md +25 -7
  231. package/docs/components/breadcrumbs.md +15 -2
  232. package/docs/components/button.md +34 -15
  233. package/docs/components/card-skeleton.md +9 -3
  234. package/docs/components/change-password-form.md +23 -4
  235. package/docs/components/checkbox-field.md +38 -0
  236. package/docs/components/ckeditor-input.md +40 -8
  237. package/docs/components/color-picker-input.md +19 -8
  238. package/docs/components/command-palette.md +23 -2
  239. package/docs/components/confirm-dialog.md +36 -9
  240. package/docs/components/data-state.md +31 -6
  241. package/docs/components/date-field.md +39 -0
  242. package/docs/components/date-presets.md +19 -5
  243. package/docs/components/description-list.md +20 -2
  244. package/docs/components/dirty-form-guard.md +16 -4
  245. package/docs/components/donut-chart.md +24 -7
  246. package/docs/components/drawer.md +27 -8
  247. package/docs/components/empty-state.md +12 -2
  248. package/docs/components/error-boundary.md +16 -2
  249. package/docs/components/error-message.md +22 -3
  250. package/docs/components/field-shell.md +47 -0
  251. package/docs/components/file-dropzone.md +22 -6
  252. package/docs/components/filter-pannel.md +34 -7
  253. package/docs/components/forgot-password-form.md +23 -5
  254. package/docs/components/form-actions-bar.md +21 -2
  255. package/docs/components/form-field-render.md +36 -8
  256. package/docs/components/form-section.md +13 -1
  257. package/docs/components/form-wizard.md +34 -5
  258. package/docs/components/hidden-field.md +22 -6
  259. package/docs/components/index-column.md +25 -5
  260. package/docs/components/line-chart.md +25 -7
  261. package/docs/components/loading.md +14 -5
  262. package/docs/components/login-form.md +31 -6
  263. package/docs/components/mantis-data-table.md +61 -0
  264. package/docs/components/map-picker-client.md +29 -8
  265. package/docs/components/map-picker-osm.md +27 -9
  266. package/docs/components/map-picker.md +25 -4
  267. package/docs/components/mask-field.md +31 -0
  268. package/docs/components/menu-button.md +22 -7
  269. package/docs/components/modal.md +34 -9
  270. package/docs/components/multi-select-filter.md +25 -7
  271. package/docs/components/number-field.md +40 -0
  272. package/docs/components/otp-input.md +20 -7
  273. package/docs/components/page-tabs.md +23 -4
  274. package/docs/components/page-title.md +6 -1
  275. package/docs/components/paginated-table.md +36 -13
  276. package/docs/components/pagination.md +20 -7
  277. package/docs/components/password-input.md +20 -8
  278. package/docs/components/phone-input.md +17 -7
  279. package/docs/components/radio-group.md +39 -9
  280. package/docs/components/range-slider.md +18 -6
  281. package/docs/components/rating-input.md +19 -8
  282. package/docs/components/render-field.md +31 -3
  283. package/docs/components/reset-password-form.md +24 -4
  284. package/docs/components/rich-text-preview.md +17 -5
  285. package/docs/components/search-input.md +18 -7
  286. package/docs/components/select-field.md +55 -0
  287. package/docs/components/stat-card.md +14 -3
  288. package/docs/components/status-badge.md +17 -7
  289. package/docs/components/switch-field.md +32 -0
  290. package/docs/components/table-filter-field.md +22 -4
  291. package/docs/components/table-skeleton.md +9 -3
  292. package/docs/components/table-toolbar.md +18 -5
  293. package/docs/components/tag.md +16 -7
  294. package/docs/components/tags-input.md +21 -8
  295. package/docs/components/text-area.md +18 -8
  296. package/docs/components/text-field.md +32 -0
  297. package/docs/components/timeline.md +19 -3
  298. package/docs/components/toggle-inline-button.md +42 -10
  299. package/docs/components/upload-files-preview.md +23 -2
  300. package/docs/components/use-field-controller.md +58 -0
  301. package/docs/components/user-menu.md +26 -6
  302. package/docs/contracts/STORYBOOK_IMPLEMENTATION_AND_VOBO.md +92 -0
  303. package/docs/contracts/STORYBOOK_VOBO_LEDGER.md +195 -0
  304. package/docs/contracts/component-doc-schema.md +57 -15
  305. package/docs/contracts/dependency-map.md +50 -52
  306. package/docs/contracts/field-controller.md +138 -0
  307. package/docs/contracts/style-imports.md +1 -20
  308. package/llms.txt +70 -72
  309. package/package.json +39 -10
  310. package/dist/components/Forms/AsyncSelect.d.ts +0 -20
  311. package/dist/components/Forms/AsyncSelect.d.ts.map +0 -1
  312. package/dist/components/Forms/AsyncSelect.js +0 -77
  313. package/dist/components/Forms/AsyncSelect.js.map +0 -1
  314. package/dist/components/Forms/Combobox.d.ts +0 -10
  315. package/dist/components/Forms/Combobox.d.ts.map +0 -1
  316. package/dist/components/Forms/Combobox.js +0 -11
  317. package/dist/components/Forms/Combobox.js.map +0 -1
  318. package/dist/components/Forms/CurrencyInput.d.ts +0 -12
  319. package/dist/components/Forms/CurrencyInput.d.ts.map +0 -1
  320. package/dist/components/Forms/CurrencyInput.js +0 -9
  321. package/dist/components/Forms/CurrencyInput.js.map +0 -1
  322. package/dist/components/Forms/DateInput.d.ts +0 -10
  323. package/dist/components/Forms/DateInput.d.ts.map +0 -1
  324. package/dist/components/Forms/DateInput.js +0 -11
  325. package/dist/components/Forms/DateInput.js.map +0 -1
  326. package/dist/components/Forms/DateRangeInput.d.ts +0 -10
  327. package/dist/components/Forms/DateRangeInput.d.ts.map +0 -1
  328. package/dist/components/Forms/DateRangeInput.js +0 -13
  329. package/dist/components/Forms/DateRangeInput.js.map +0 -1
  330. package/dist/components/Forms/DropDown.d.ts +0 -10
  331. package/dist/components/Forms/DropDown.d.ts.map +0 -1
  332. package/dist/components/Forms/DropDown.js +0 -11
  333. package/dist/components/Forms/DropDown.js.map +0 -1
  334. package/dist/components/Forms/MultiSelect.d.ts +0 -10
  335. package/dist/components/Forms/MultiSelect.d.ts.map +0 -1
  336. package/dist/components/Forms/MultiSelect.js +0 -13
  337. package/dist/components/Forms/MultiSelect.js.map +0 -1
  338. package/dist/components/Forms/NumberInput.d.ts +0 -10
  339. package/dist/components/Forms/NumberInput.d.ts.map +0 -1
  340. package/dist/components/Forms/NumberInput.js +0 -16
  341. package/dist/components/Forms/NumberInput.js.map +0 -1
  342. package/dist/components/Forms/Select.d.ts +0 -15
  343. package/dist/components/Forms/Select.d.ts.map +0 -1
  344. package/dist/components/Forms/Select.js +0 -48
  345. package/dist/components/Forms/Select.js.map +0 -1
  346. package/dist/components/Forms/Switch.d.ts +0 -18
  347. package/dist/components/Forms/Switch.d.ts.map +0 -1
  348. package/dist/components/Forms/Switch.js +0 -30
  349. package/dist/components/Forms/Switch.js.map +0 -1
  350. package/dist/components/Forms/TextInput.d.ts +0 -11
  351. package/dist/components/Forms/TextInput.d.ts.map +0 -1
  352. package/dist/components/Forms/TextInput.js +0 -12
  353. package/dist/components/Forms/TextInput.js.map +0 -1
  354. package/dist/components/Forms/TimePicker.d.ts +0 -13
  355. package/dist/components/Forms/TimePicker.d.ts.map +0 -1
  356. package/dist/components/Forms/TimePicker.js +0 -19
  357. package/dist/components/Forms/TimePicker.js.map +0 -1
  358. package/dist/components/Forms/Toggle.d.ts +0 -14
  359. package/dist/components/Forms/Toggle.d.ts.map +0 -1
  360. package/dist/components/Forms/Toggle.js +0 -10
  361. package/dist/components/Forms/Toggle.js.map +0 -1
  362. package/dist/components/Forms/types.d.ts +0 -9
  363. package/dist/components/Forms/types.d.ts.map +0 -1
  364. package/dist/components/Forms/types.js +0 -2
  365. package/dist/components/Forms/types.js.map +0 -1
  366. package/docs/components/async-select.md +0 -27
  367. package/docs/components/combobox.md +0 -19
  368. package/docs/components/currency-input.md +0 -21
  369. package/docs/components/date-input.md +0 -21
  370. package/docs/components/date-range-input.md +0 -20
  371. package/docs/components/drop-down.md +0 -26
  372. package/docs/components/multi-select.md +0 -22
  373. package/docs/components/number-input.md +0 -21
  374. package/docs/components/select.md +0 -28
  375. package/docs/components/switch.md +0 -24
  376. package/docs/components/text-input.md +0 -24
  377. package/docs/components/time-picker.md +0 -25
  378. package/docs/components/toggle.md +0 -24
  379. package/docs/contracts/controller-props.md +0 -28
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: MaskField
3
+ category: forms
4
+ import: '@mantis-core/ui/components/Forms/MaskField'
5
+ whenToUse: Generic masked text input (digit/letter/alphanumeric tokens) wired to react-hook-form; value is the masked display string.
6
+ baseLibrary: '@primereact/ui/inputtext'
7
+ formContract: FieldControllerProps
8
+ relatedComponents: ['PhoneInput', 'TextField']
9
+ relatedNextCore: []
10
+ props:
11
+ - { name: mask, type: string, required: true, description: "Pattern: '9'=digit, 'a'=letter, '*'=alphanumeric; any other character is a literal emitted automatically." }
12
+ ---
13
+
14
+ ## Example
15
+
16
+ ```tsx
17
+ import { MaskField } from '@mantis-core/ui/components/Forms/MaskField';
18
+ import { useForm } from 'react-hook-form';
19
+
20
+ function Example() {
21
+ const { control } = useForm({ defaultValues: { code: '' } });
22
+ return <MaskField name='code' control={control} mask='999-999' label='Code' />;
23
+ }
24
+ ```
25
+
26
+ ## Notes
27
+
28
+ - PR11 dropped the `inputmask` primitive — this wrapper owns masking itself over plain `InputText`, no `react-imask` dependency.
29
+ - Value = the **masked** string as displayed (e.g. `"(555) 123-4567"`), not the raw digits — that's exactly what gets stored in the form.
30
+ - Also exports `applyMask(raw, mask)`, the pure formatter used internally, for previewing/testing a mask outside the field.
31
+ - `PhoneInput` is the phone preset built on top of this (`mask="(999) 999-9999"` by default).
@@ -2,17 +2,32 @@
2
2
  name: MenuButton
3
3
  category: tables
4
4
  import: '@mantis-core/ui/components/Tables/MenuButton'
5
- whenToUse: Dropdown button with a list of actions; used inside table rows.
6
- baseLibrary: primereact/tieredmenu
7
- relatedComponents: [ActionColumn]
5
+ whenToUse: 'Row-action overlay menu — a trigger button that opens a popup list of actions; used inside `actionColumn`/table row cells, or standalone.'
6
+ baseLibrary: '@primereact/ui/menu'
7
+ relatedComponents: [ActionColumn, MantisDataTable]
8
8
  relatedNextCore: []
9
9
  props:
10
- - { name: items, type: 'ActionMenuItem[]', required: true }
11
- - { name: label, type: string, required: false }
12
- - { name: icon, type: string, required: false }
10
+ - { name: label, type: string, required: false, description: 'Trigger button label.' }
11
+ - { name: icon, type: string, required: false, default: "'pi pi-cog'", description: 'Trigger button icon (PrimeIcons class).' }
12
+ - { name: items, type: 'ActionMenuItem[]', required: false, default: '[]' }
13
13
  ---
14
+
14
15
  ## Example
15
16
 
16
17
  ```tsx
17
- <MenuButton items={[{ label: 'Edit', command: onEdit }, { label: 'Delete', command: onDelete }]} />
18
+ import MenuButton, { type ActionMenuItem } from '@mantis-core/ui/components/Tables/MenuButton';
19
+
20
+ function Example() {
21
+ const items: ActionMenuItem[] = [
22
+ { label: 'Edit', icon: 'pi pi-pencil', route: '/properties/1/edit' },
23
+ { label: 'Delete', icon: 'pi pi-trash', command: () => console.log('delete') },
24
+ ];
25
+ return <MenuButton items={items} label='Actions' />;
26
+ }
18
27
  ```
28
+
29
+ ## Notes
30
+
31
+ - Not re-exported from the package root — import the deep path.
32
+ - `ActionMenuItem`: `label`, `icon?`, `route?` (navigates via `next/router`, wins over `command`), `command?` (ignored when `route` is set), `disabled?` (never fires `onSelect`).
33
+ - Migrated to PR11's compound `Menu`: `Menu.Root` owns its own open state; the trigger renders the migrated `Button` via `Menu.Trigger as={Button}` — PR11's `asChild` does NOT wire the trigger (no `aria-haspopup`, overlay never opens), so the `as` prop is required.
@@ -2,19 +2,44 @@
2
2
  name: Modal
3
3
  category: overlays
4
4
  import: '@mantis-core/ui/components/overlays/Modal'
5
- whenToUse: Dialog/modal (PrimeReact Dialog wrapper); dismissable mask and non-draggable by default.
6
- baseLibrary: custom
5
+ whenToUse: Controlled dialog/modal; composes PR11's headless Dialog compound (Root/Portal/Backdrop/Positioner/Popup/Header/Content/Footer) behind a simple `open`/`title`/`footer` API.
6
+ baseLibrary: '@primereact/ui/dialog'
7
+ relatedComponents: ['Drawer', 'ConfirmDialog', 'CommandPalette']
7
8
  relatedNextCore: []
8
9
  props:
9
- - { name: visible, type: boolean, required: true }
10
- - { name: onHide, type: '() => void', required: true }
11
- - { name: header, type: ReactNode, required: false }
12
- - { name: footer, type: ReactNode, required: false }
13
- - { name: style, type: CSSProperties, required: false }
14
- - { name: className, type: string, required: false }
10
+ - { name: open, type: boolean, required: true, description: 'Controlled visibility.' }
11
+ - { name: onOpenChange, type: '(open: boolean) => void', required: true, description: 'Fires with the next open value when the backdrop/close toggles it.' }
12
+ - { name: title, type: ReactNode, required: false, description: 'Header title. Omit to render no header.' }
13
+ - { name: footer, type: ReactNode, required: false, description: 'Footer content, usually action buttons. Omit to render no footer.' }
14
+ - { name: size, type: "'sm' | 'md' | 'lg' | 'xl'", required: false, default: "'md'", description: 'Popup width preset.' }
15
+ - { name: modal, type: boolean, required: false, default: 'true', description: 'Whether the dialog blocks pointer events behind it.' }
16
+ - { name: className, type: string, required: false, description: 'Extra class on the Popup element.' }
17
+ - { name: children, type: ReactNode, required: false }
15
18
  ---
19
+
16
20
  ## Example
17
21
 
18
22
  ```tsx
19
- <Modal visible={showModal} onHide={() => setShowModal(false)} header='Editar propiedad' style={{ width: '40rem' }}><PropertyForm /></Modal>
23
+ import Modal from '@mantis-core/ui/components/overlays/Modal';
24
+ import { useState } from 'react';
25
+
26
+ function Example() {
27
+ const [open, setOpen] = useState(false);
28
+ return (
29
+ <Modal
30
+ open={open}
31
+ onOpenChange={setOpen}
32
+ title='Edit property'
33
+ size='lg'
34
+ footer={<button onClick={() => setOpen(false)}>Close</button>}>
35
+ <p>Modal content</p>
36
+ </Modal>
37
+ );
38
+ }
20
39
  ```
40
+
41
+ ## Notes
42
+
43
+ - Controlled-only: `open`/`onOpenChange`, not `visible`/`onHide` — matches PR11's Root controlled-state naming.
44
+ - Width is a class on the Popup (from the `size` preset), not a `style` prop; override via `className` for custom widths.
45
+ - No `requiredStyles` — preset-themed.
@@ -2,17 +2,35 @@
2
2
  name: MultiSelectFilter
3
3
  category: tables
4
4
  import: '@mantis-core/ui/components/Tables/filters/MultiSelectFilter'
5
- whenToUse: PrimeReact MultiSelect wired for use as a DataTable column filter template.
6
- baseLibrary: primereact/multiselect
7
- relatedComponents: [FilterPannel]
5
+ whenToUse: 'Multi-value header filter over the themed PR11 `Select` (multiple mode) — drops into a `ColumnDef`''s `filterElement` escape hatch when a column needs array-valued filtering instead of the scalar `filters` map.'
6
+ baseLibrary: '@primereact/ui/select'
7
+ relatedComponents: [FilterPannel, MantisDataTable]
8
8
  relatedNextCore: []
9
9
  props:
10
- - { name: filterProps, type: ColumnFilterElementTemplateOptions, required: true }
11
- - { name: options, type: 'any[]', required: false }
12
- - { name: loading, type: boolean, required: false }
10
+ - { name: options, type: 'FilterOption[]', required: true }
11
+ - { name: value, type: 'string[]', required: false, default: '[]' }
12
+ - { name: onChange, type: '(value: string[]) => void', required: true }
13
+ - { name: loading, type: boolean, required: false, default: 'false', description: 'Disables the control while the option list loads.' }
14
+ - { name: placeholder, type: string, required: false, default: "'Seleccione'" }
13
15
  ---
16
+
14
17
  ## Example
15
18
 
16
19
  ```tsx
17
- <Column field='status' filterElement={(opts) => <MultiSelectFilter filterProps={opts} options={statusOptions} />} />
20
+ import MultiSelectFilter from '@mantis-core/ui/components/Tables/filters/MultiSelectFilter';
21
+ import { useState } from 'react';
22
+
23
+ function Example() {
24
+ const [selected, setSelected] = useState<string[]>([]);
25
+ const options = [
26
+ { label: 'Active', value: 'active' },
27
+ { label: 'Draft', value: 'draft' },
28
+ ];
29
+ return <MultiSelectFilter options={options} value={selected} onChange={setSelected} />;
30
+ }
18
31
  ```
32
+
33
+ ## Notes
34
+
35
+ - Not re-exported from the package root — import the deep path.
36
+ - Migrated replacement for the PR10 `primereact/multiselect`; page-owned `value`/`onChange` (not RHF), so it fits `ColumnDef.filterElement` directly — it does not accept the scalar `{ value, onChange }` shape used by the built-in `text`/`dropdown` filter presets.
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: NumberField
3
+ category: forms
4
+ import: '@mantis-core/ui/components/Forms/NumberField'
5
+ whenToUse: Numeric input (integer, decimal, or currency) wired to react-hook-form.
6
+ baseLibrary: '@primereact/ui/inputnumber'
7
+ formContract: FieldControllerProps
8
+ relatedComponents: ['TextField', 'SelectField']
9
+ relatedNextCore: []
10
+ props:
11
+ - { name: mode, type: "'decimal' | 'currency'", required: false, description: 'PR11 InputNumber Root config. `currency` is the sole replacement for the removed CurrencyInput wrapper.' }
12
+ - { name: currency, type: string, required: false, description: 'ISO currency code, only used when mode="currency" (e.g. "USD").' }
13
+ - { name: locale, type: string, required: false, description: 'Intl locale for formatting.' }
14
+ - { name: min, type: number, required: false }
15
+ - { name: max, type: number, required: false }
16
+ - { name: step, type: number, required: false }
17
+ ---
18
+
19
+ ## Example
20
+
21
+ ```tsx
22
+ import { NumberField } from '@mantis-core/ui/components/Forms/NumberField';
23
+ import { useForm } from 'react-hook-form';
24
+
25
+ function Example() {
26
+ const { control } = useForm({ defaultValues: { price: null as number | null } });
27
+ return (
28
+ <NumberField name='price' control={control} label='Price' mode='currency' currency='USD' />
29
+ );
30
+ }
31
+ ```
32
+
33
+ ## Notes
34
+
35
+ - Value is `number | null` — an emptied input normalizes to `null` (not `NaN`), so `number | null`
36
+ RHF fields can actually be cleared.
37
+ - Compound primitive: emits `onValueChange` with a `{ value }` event, not native `onChange`. The
38
+ wrapper handles this internally; callers just get a plain controlled number value.
39
+ - Root config (`mode`, `currency`, `locale`, `min`, `max`, `step`, …) lives on `InputNumberRootProps`
40
+ and passes through via `...rest`.
@@ -2,17 +2,30 @@
2
2
  name: OtpInput
3
3
  category: forms
4
4
  import: '@mantis-core/ui/components/Forms/OtpInput'
5
- whenToUse: One-time password input (PrimeReact InputOtp) wired to react-hook-form.
6
- baseLibrary: custom
7
- formContract: ControllerProps
5
+ whenToUse: RHF-bound one-time-password input over PR11's compound InputOtp; renders `length` segmented boxes.
6
+ baseLibrary: '@primereact/ui/inputotp'
7
+ formContract: ChoiceFieldControllerProps
8
+ relatedComponents: []
8
9
  relatedNextCore: []
9
10
  props:
10
- - { name: controller, type: ControllerProps, required: true }
11
- - { name: length, type: number, required: false, default: '6' }
12
- - { name: block, type: boolean, required: false }
11
+ - { name: length, type: number, required: false, default: '6', description: 'How many segmented slots render.' }
12
+ - { name: integerOnly, type: boolean, required: false, description: 'Restrict input to digits.' }
13
+ - { name: mask, type: boolean, required: false, description: 'Obscure each slot like a password.' }
13
14
  ---
15
+
14
16
  ## Example
15
17
 
16
18
  ```tsx
17
- <OtpInput controller={{ name: 'otp', rules: { required: true } }} length={6} />
19
+ import { OtpInput } from '@mantis-core/ui/components/Forms/OtpInput';
20
+ import { useForm } from 'react-hook-form';
21
+
22
+ function Example() {
23
+ const { control } = useForm({ defaultValues: { code: '' } });
24
+ return <OtpInput name='code' control={control} label='Código' length={6} integerOnly />;
25
+ }
18
26
  ```
27
+
28
+ ## Notes
29
+
30
+ - Value shape: the concatenated `string` code, `""` when unset. Typing advances focus, backspace retreats, paste distributes across slots.
31
+ - Uses `ChoiceFieldControllerProps` (bucket B) — no `labelMode="float"`/addons/`variant`, defaults `labelMode` to `top`.
@@ -2,15 +2,34 @@
2
2
  name: PageTabs
3
3
  category: navigation
4
4
  import: '@mantis-core/ui/components/navigation/PageTabs'
5
- whenToUse: Tab menu bar for page-level navigation; auto-detects active tab from Next.js pathname when tabs have href.
6
- baseLibrary: custom
5
+ whenToUse: Page-level navigation tab bar (no panels) over PR11's Tabs compound; each tab navigates via `href` (Next.js router) or runs a `command`. Active tab is derived from the current pathname.
6
+ baseLibrary: '@primereact/ui/tabs'
7
+ relatedComponents: ['AppShell']
7
8
  relatedNextCore: []
8
9
  props:
9
10
  - { name: tabs, type: '{ label: string; icon?: ReactNode; href?: string; command?: () => void }[]', required: true }
10
- - { name: activeIndex, type: number, required: false }
11
+ - { name: activeIndex, type: number, required: false, description: 'Forces the active tab index; otherwise derived from the pathname (matched against the tab `href`).' }
12
+ - { name: className, type: string, required: false, default: "'mantis-core-page-tabs'" }
11
13
  ---
14
+
12
15
  ## Example
13
16
 
14
17
  ```tsx
15
- <PageTabs tabs={[{ label: 'General', href: '/admin/settings' }, { label: 'Seguridad', href: '/admin/settings/security' }]} />
18
+ import PageTabs from '@mantis-core/ui/components/navigation/PageTabs';
19
+
20
+ function Example() {
21
+ return (
22
+ <PageTabs
23
+ tabs={[
24
+ { label: 'General', href: '/admin/settings' },
25
+ { label: 'Security', href: '/admin/settings/security' },
26
+ ]}
27
+ />
28
+ );
29
+ }
16
30
  ```
31
+
32
+ ## Notes
33
+
34
+ - This is a nav bar, not a tabbed content panel — selecting a tab pushes `href` or runs `command`, it does not toggle any `Tabs.Panel`.
35
+ - No `requiredStyles` — preset-themed.
@@ -8,8 +8,13 @@ relatedNextCore: []
8
8
  props:
9
9
  - { name: children, type: ReactNode, required: true }
10
10
  ---
11
+
11
12
  ## Example
12
13
 
13
14
  ```tsx
14
- <PageTitle>Propiedades en Venta</PageTitle>
15
+ import PageTitle from '@mantis-core/ui/components/pages/PageTitle';
16
+
17
+ function Example() {
18
+ return <PageTitle>Propiedades en Venta</PageTitle>;
19
+ }
15
20
  ```
@@ -2,27 +2,50 @@
2
2
  name: PaginatedTable
3
3
  category: tables
4
4
  import: '@mantis-core/ui/components/Tables/PaginatedTable'
5
- whenToUse: 'Generic server-side paginated DataTable with built-in index column, action column, and Mantis Core CSS. Wraps PrimeReact DataTable.'
6
- baseLibrary: primereact/datatable
5
+ whenToUse: 'Thin preset over MantisDataTable with `paginator` on by default plus optional index/action columns the default table shell for admin list pages.'
6
+ baseLibrary: '@primereact/ui/datatable'
7
7
  requiredStyles: [scss/table.scss]
8
- relatedComponents: [ActionColumn, IndexColumn, TableToolbar, FilterPannel]
8
+ relatedComponents: [MantisDataTable, ActionColumn, IndexColumn, TableToolbar, FilterPannel]
9
9
  relatedNextCore: []
10
10
  props:
11
- - { name: value, type: TValue, required: true }
12
- - { name: totalRecords, type: number, required: false }
13
- - { name: showIndexColumn, type: boolean, required: false, default: 'true' }
14
- - { name: showActionColumn, type: boolean, required: false, default: 'false' }
15
- - { name: actionColumnItems, type: '(rowData: TValue[number]) => ActionMenuItem[]', required: false }
16
- - { name: useMantisCoreStyles, type: boolean, required: false, default: 'true' }
17
- - { name: lazy, type: boolean, required: false, default: 'true' }
11
+ - { name: rows, type: 'T[]', required: true }
12
+ - { name: columns, type: 'ColumnDef<T>[]', required: true }
13
+ - { name: paginator, type: boolean, required: false, default: 'true', description: 'PR11 Root prop; PaginatedTable flips the MantisDataTable default on.' }
14
+ - { name: showIndexColumn, type: boolean, required: false, default: 'true', description: 'Prepend a 1-based row-number column.' }
15
+ - { name: indexColumnOptions, type: 'Partial<ColumnDef<T>>', required: false, description: 'Overrides for the prepended index column.' }
16
+ - { name: showActionColumn, type: boolean, required: false, default: 'false', description: 'Append a row-action menu column.' }
17
+ - { name: actionColumnItems, type: '(row: T) => ActionMenuItem[]', required: false, description: 'Per-row action items for the appended action column.' }
18
+ - { name: actionColumnOptions, type: 'ActionColumnOptions<T>', required: false, description: 'Overrides for the appended action column.' }
18
19
  ---
20
+
19
21
  ## Example
20
22
 
21
23
  ```tsx
22
- <PaginatedTable value={rows} totalRecords={total} showActionColumn actionColumnItems={(row) => [{ label: 'Edit', command: () => edit(row) }]}><Column field='name' header='Name' /></PaginatedTable>
24
+ import { PaginatedTable } from '@mantis-core/ui/components/Tables/PaginatedTable';
25
+ import type { ColumnDef } from '@mantis-core/ui/components/Tables/columns';
26
+
27
+ interface Property {
28
+ id: string;
29
+ name: string;
30
+ }
31
+
32
+ const COLUMNS: ColumnDef<Property>[] = [{ field: 'name', header: 'Name' }];
33
+
34
+ function Example() {
35
+ const rows: Property[] = [{ id: '1', name: 'Casa Ceibos' }];
36
+ return (
37
+ <PaginatedTable
38
+ rows={rows}
39
+ columns={COLUMNS}
40
+ rowsPerPage={10}
41
+ showActionColumn
42
+ actionColumnItems={(p) => [{ label: 'Edit', route: `/properties/${p.id}/edit` }]}
43
+ />
44
+ );
45
+ }
23
46
  ```
24
47
 
25
48
  ## Notes
26
49
 
27
- - It sets Mantis defaults for pagination, stripes, gridlines, sorting, empty state, and responsive layout.
28
- - Set `useMantisCoreStyles={false}` only if you want plain PrimeReact styling.
50
+ - Reshaped from the PR10 children-driven `PaginatedTable` to the descriptor-driven PR11 model: it assembles the final `columns` array (index column prepended, action column appended) and forwards everything else — including `rows`, `rowsPerPage`, and any other `MantisDataTableProps<T>`/PR11 root passthrough — straight to `MantisDataTable`.
51
+ - The old `value`/`totalRecords`/`lazy` prop shape is gone; use `rows`/`columns`/`rowsPerPage` and the PR11 root passthrough (`paginator`, `lazy`, `onLazyLoad`, …) documented on `MantisDataTable`.
@@ -2,23 +2,36 @@
2
2
  name: Pagination
3
3
  category: feedback
4
4
  import: '@mantis-core/ui/components/ui/Pagination'
5
- whenToUse: Standalone pagination control; use when not relying on PaginatedTable's built-in paginator.
5
+ whenToUse: Standalone page-number control (custom Tailwind markup, not PrimeReact Paginator); use when not relying on PaginatedTable's built-in paginator.
6
6
  baseLibrary: custom
7
- relatedComponents: [PaginationInfo, PageSizeSelector]
7
+ relatedComponents: ['PaginatedTable']
8
8
  relatedNextCore: []
9
9
  props:
10
- - { name: totalRecords, type: number, required: true }
11
- - { name: pageSize, type: number, required: true }
12
10
  - { name: currentPage, type: number, required: true }
11
+ - { name: totalPages, type: number, required: true }
13
12
  - { name: onPageChange, type: '(page: number) => void', required: true }
13
+ - { name: hasNextPage, type: boolean, required: false, default: 'currentPage < totalPages' }
14
+ - { name: hasPreviousPage, type: boolean, required: false, default: 'currentPage > 1' }
15
+ - { name: maxVisible, type: number, required: false, default: '7' }
16
+ - { name: showFirstLast, type: boolean, required: false, default: 'true' }
17
+ - { name: disabled, type: boolean, required: false, default: 'false' }
18
+ - { name: className, type: string, required: false }
14
19
  ---
20
+
15
21
  ## Example
16
22
 
17
23
  ```tsx
18
- <Pagination totalRecords={200} pageSize={20} currentPage={page} onPageChange={setPage} />
24
+ import { Pagination } from '@mantis-core/ui/components/ui/Pagination';
25
+ import { useState } from 'react';
26
+
27
+ function Example() {
28
+ const [page, setPage] = useState(1);
29
+ return <Pagination currentPage={page} totalPages={12} onPageChange={setPage} />;
30
+ }
19
31
  ```
20
32
 
21
33
  ## Notes
22
34
 
23
- - This is not PrimeReact `Paginator`.
24
- - `paginator.scss` styles PrimeReact paginator markup, not these exports.
35
+ - Renders `null` when `totalPages <= 1`.
36
+ - Same import path also exports `PaginationInfo` `{ currentPage, pageSize, totalCount, className? }`, a "Showing X to Y of Z results" line — and `PageSizeSelector` — `{ pageSize, onPageSizeChange, options?: number[] (default `[10, 25, 50, 100]`), disabled?, className? }`, a page-size `<select>`.
37
+ - `paginator.scss` styles PrimeReact's own paginator markup (used e.g. by `PaginatedTable`), not this component — no `requiredStyles` here.
@@ -2,18 +2,30 @@
2
2
  name: PasswordInput
3
3
  category: forms
4
4
  import: '@mantis-core/ui/components/Forms/PasswordInput'
5
- whenToUse: 'Password field with show/hide toggle; Controller pattern, same API as TextInput.'
6
- baseLibrary: custom
7
- formContract: ControllerProps
8
- requiredStyles: [scss/inputs.scss]
5
+ whenToUse: RHF-bound password field over PR11 InputPassword with a native show/hide toggle and a lightweight strength meter.
6
+ baseLibrary: '@primereact/ui/inputpassword'
7
+ formContract: FieldControllerProps
8
+ relatedComponents: ['TextField']
9
9
  relatedNextCore: []
10
10
  props:
11
- - { name: controller, type: ControllerProps, required: true }
12
- - { name: block, type: boolean, required: false }
13
- - { name: showToggle, type: boolean, required: false, default: 'true' }
11
+ - { name: showToggle, type: boolean, required: false, default: 'true', description: 'Renders the Eye/EyeSlash show/hide toggle.' }
12
+ - { name: feedback, type: boolean, required: false, default: 'true', description: 'Renders the strength meter below the input.' }
14
13
  ---
14
+
15
15
  ## Example
16
16
 
17
17
  ```tsx
18
- <PasswordInput controller={{ name: 'password', rules: notEmptyRule() }} block />
18
+ import { PasswordInput } from '@mantis-core/ui/components/Forms/PasswordInput';
19
+ import { useForm } from 'react-hook-form';
20
+
21
+ function Example() {
22
+ const { control } = useForm({ defaultValues: { password: '' } });
23
+ return <PasswordInput name='password' control={control} label='Contraseña' rules={{ required: true }} />;
24
+ }
19
25
  ```
26
+
27
+ ## Notes
28
+
29
+ - Show/hide uses PR11 `InputPassword`'s own native mask state (`mask`/`onMaskChange`), not a custom-positioned button.
30
+ - `feedback` renders a deterministic 0–4 strength score from length + character-class variety — not zxcvbn or any external scoring lib.
31
+ - `variant`/`size` are not exposed: `InputPasswordProps` doesn't carry them in `11.0.0-rc.1`, unlike `TextField`.
@@ -2,17 +2,27 @@
2
2
  name: PhoneInput
3
3
  category: forms
4
4
  import: '@mantis-core/ui/components/Forms/PhoneInput'
5
- whenToUse: Masked phone number input; default mask (999) 999-9999.
6
- baseLibrary: custom
7
- formContract: ControllerProps
5
+ whenToUse: Phone-number preset of MaskField; defaults to a US-style (999) 999-9999 mask.
6
+ baseLibrary: '@primereact/ui/inputtext'
7
+ formContract: FieldControllerProps
8
+ relatedComponents: ['MaskField']
8
9
  relatedNextCore: []
9
10
  props:
10
- - { name: controller, type: ControllerProps, required: true }
11
- - { name: mask, type: string, required: false, default: '''(999) 999-9999''' }
12
- - { name: block, type: boolean, required: false }
11
+ - { name: mask, type: string, required: false, default: "'(999) 999-9999'", description: 'Override the phone mask for other formats.' }
13
12
  ---
13
+
14
14
  ## Example
15
15
 
16
16
  ```tsx
17
- <PhoneInput controller={{ name: 'phone', rules: { required: true } }} block />
17
+ import { PhoneInput } from '@mantis-core/ui/components/Forms/PhoneInput';
18
+ import { useForm } from 'react-hook-form';
19
+
20
+ function Example() {
21
+ const { control } = useForm({ defaultValues: { phone: '' } });
22
+ return <PhoneInput name='phone' control={control} label='Teléfono' />;
23
+ }
18
24
  ```
25
+
26
+ ## Notes
27
+
28
+ - Thin preset over `MaskField` — no rendering logic of its own, just a default `mask`. Value = the masked string (e.g. `"(555) 123-4567"`).
@@ -2,19 +2,49 @@
2
2
  name: RadioGroup
3
3
  category: forms
4
4
  import: '@mantis-core/ui/components/Forms/RadioGroup'
5
- whenToUse: Renders a set of radio buttons from an options array; value is the selected option's value.
6
- baseLibrary: custom
7
- formContract: ControllerProps
5
+ whenToUse: Single-choice radio group over PR11's RadioButtonGroup; value is the selected option's value.
6
+ baseLibrary: '@primereact/ui/radiobutton'
7
+ formContract: ChoiceFieldControllerProps
8
+ relatedComponents: ['ToggleInlineButton', 'SelectField']
8
9
  relatedNextCore: []
9
10
  props:
10
- - { name: controller, type: ControllerProps, required: true }
11
- - { name: options, type: '{ label: string; value: any }[]', required: true }
12
- - { name: block, type: boolean, required: false }
13
- - { name: disabled, type: boolean, required: false }
14
- - { name: className, type: string, required: false }
11
+ - { name: options, type: 'Record<string, unknown>[]', required: true, description: 'Option rows rendered as radio items.' }
12
+ - { name: optionLabel, type: string, required: false, default: '''label''', description: 'Key read for each option''s display label.' }
13
+ - { name: optionValue, type: string, required: false, default: '''value''', description: 'Key read for each option''s bound value.' }
14
+ - { name: renderOption, type: '(option: Record<string, unknown>, index: number) => ReactNode', required: false, description: 'Escape hatch: full custom per-item label render.' }
15
15
  ---
16
+
16
17
  ## Example
17
18
 
18
19
  ```tsx
19
- <RadioGroup controller={{ name: 'role' }} options={[{ label: 'Admin', value: 'admin' }, { label: 'User', value: 'user' }]} />
20
+ import { RadioGroup } from '@mantis-core/ui/components/Forms/RadioGroup';
21
+ import { useForm } from 'react-hook-form';
22
+
23
+ const PLANS = [
24
+ { label: 'Basic', value: 'basic' },
25
+ { label: 'Pro', value: 'pro' },
26
+ ];
27
+
28
+ function Example() {
29
+ const { control } = useForm({ defaultValues: { plan: 'basic' } });
30
+ return (
31
+ <RadioGroup
32
+ name='plan'
33
+ control={control}
34
+ label='Plan'
35
+ options={PLANS}
36
+ optionLabel='label'
37
+ optionValue='value'
38
+ />
39
+ );
40
+ }
20
41
  ```
42
+
43
+ ## Notes
44
+
45
+ - `labelMode` defaults to `'top'` for this wrapper (not the global config default).
46
+ - PR11 `11.0.0-rc.1` gotcha: the styled `RadioButtonGroup` and `RadioButton.Root` are wired through
47
+ two different React contexts in this rc, so the group's `value`/`onValueChange` never reaches its
48
+ children (verified in-browser). Until fixed upstream, this wrapper binds each `RadioButton.Root`
49
+ individually via its documented `checked`/`onCheckedChange` props; `RadioButtonGroup` itself is
50
+ used for layout/styling only, not for value propagation.
@@ -2,19 +2,31 @@
2
2
  name: RangeSlider
3
3
  category: forms
4
4
  import: '@mantis-core/ui/components/Forms/RangeSlider'
5
- whenToUse: 'Dual-handle range slider that stores a [min, max] tuple; backed by PrimeReact Slider.'
6
- baseLibrary: custom
7
- formContract: ControllerProps
5
+ whenToUse: RHF-bound slider over PR11's compound Slider; single-handle by default, dual-handle range when the field holds a [number, number] tuple.
6
+ baseLibrary: '@primereact/ui/slider'
7
+ formContract: ChoiceFieldControllerProps
8
+ relatedComponents: []
8
9
  relatedNextCore: []
9
10
  props:
10
- - { name: controller, type: ControllerProps, required: true }
11
11
  - { name: min, type: number, required: false }
12
12
  - { name: max, type: number, required: false }
13
13
  - { name: step, type: number, required: false }
14
- - { name: block, type: boolean, required: false }
14
+ - { name: orientation, type: "'horizontal' | 'vertical'", required: false }
15
15
  ---
16
+
16
17
  ## Example
17
18
 
18
19
  ```tsx
19
- <RangeSlider controller={{ name: 'priceRange' }} min={0} max={500000} step={1000} block />
20
+ import { RangeSlider } from '@mantis-core/ui/components/Forms/RangeSlider';
21
+ import { useForm } from 'react-hook-form';
22
+
23
+ function Example() {
24
+ const { control } = useForm({ defaultValues: { price: 100 } });
25
+ return <RangeSlider name='price' control={control} label='Precio' min={0} max={500} />;
26
+ }
20
27
  ```
28
+
29
+ ## Notes
30
+
31
+ - Value shape mirrors PR11 `Slider`: a scalar `number` (single handle) by default, or a `[number, number]` tuple (two handles) when the RHF field holds an array.
32
+ - Uses `ChoiceFieldControllerProps` (bucket B); `labelMode` defaults to `top` — a squeezed inline slider is unusable beside a label.
@@ -2,18 +2,29 @@
2
2
  name: RatingInput
3
3
  category: forms
4
4
  import: '@mantis-core/ui/components/Forms/RatingInput'
5
- whenToUse: Star rating input (PrimeReact Rating) wired to react-hook-form; stores numeric value.
6
- baseLibrary: custom
7
- formContract: ControllerProps
5
+ whenToUse: RHF-bound star rating over PR11's compound Rating; stores a numeric value.
6
+ baseLibrary: '@primereact/ui/rating'
7
+ formContract: ChoiceFieldControllerProps
8
+ relatedComponents: []
8
9
  relatedNextCore: []
9
10
  props:
10
- - { name: controller, type: ControllerProps, required: true }
11
- - { name: stars, type: number, required: false, default: '5' }
12
- - { name: cancel, type: boolean, required: false }
13
- - { name: block, type: boolean, required: false }
11
+ - { name: stars, type: number, required: false, default: '5', description: 'How many star options render.' }
14
12
  ---
13
+
15
14
  ## Example
16
15
 
17
16
  ```tsx
18
- <RatingInput controller={{ name: 'score' }} stars={5} />
17
+ import { RatingInput } from '@mantis-core/ui/components/Forms/RatingInput';
18
+ import { useForm } from 'react-hook-form';
19
+
20
+ function Example() {
21
+ const { control } = useForm({ defaultValues: { score: null as number | null } });
22
+ return <RatingInput name='score' control={control} label='Puntaje' stars={5} />;
23
+ }
19
24
  ```
25
+
26
+ ## Notes
27
+
28
+ - Value shape: `number` (stars selected), `null` when unset.
29
+ - Whole-star by default (`allowHalf={false}`) so the bound value stays an integer score; pass `allowHalf` to opt back into PR11's half-star behavior.
30
+ - Uses `ChoiceFieldControllerProps` (bucket B); `labelMode` defaults to `top`.