@mantis-core/ui 0.4.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 (377) hide show
  1. package/CHANGELOG.md +144 -0
  2. package/COMPONENTS.md +113 -15
  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 +39 -12
  223. package/docs/components/admin-page-configurator.md +42 -0
  224. package/docs/components/admin-page-header.md +32 -16
  225. package/docs/components/admin-page-layout-shell.md +36 -0
  226. package/docs/components/admin-page-layout.md +41 -21
  227. package/docs/components/app-shell.md +45 -0
  228. package/docs/components/auto-complete-field.md +60 -0
  229. package/docs/components/avatar.md +29 -0
  230. package/docs/components/bar-chart.md +39 -0
  231. package/docs/components/breadcrumbs.md +28 -0
  232. package/docs/components/button.md +41 -17
  233. package/docs/components/card-skeleton.md +21 -0
  234. package/docs/components/change-password-form.md +36 -0
  235. package/docs/components/checkbox-field.md +38 -0
  236. package/docs/components/ckeditor-input.md +47 -16
  237. package/docs/components/color-picker-input.md +30 -0
  238. package/docs/components/command-palette.md +38 -0
  239. package/docs/components/confirm-dialog.md +45 -16
  240. package/docs/components/data-state.md +39 -14
  241. package/docs/components/date-field.md +39 -0
  242. package/docs/components/date-presets.md +32 -0
  243. package/docs/components/description-list.md +34 -0
  244. package/docs/components/dirty-form-guard.md +28 -24
  245. package/docs/components/donut-chart.md +38 -0
  246. package/docs/components/drawer.md +38 -0
  247. package/docs/components/empty-state.md +28 -0
  248. package/docs/components/error-boundary.md +31 -0
  249. package/docs/components/error-message.md +29 -8
  250. package/docs/components/field-shell.md +47 -0
  251. package/docs/components/file-dropzone.md +45 -17
  252. package/docs/components/filter-pannel.md +40 -15
  253. package/docs/components/forgot-password-form.md +36 -0
  254. package/docs/components/form-actions-bar.md +47 -17
  255. package/docs/components/form-field-render.md +43 -15
  256. package/docs/components/form-section.md +26 -10
  257. package/docs/components/form-wizard.md +47 -0
  258. package/docs/components/hidden-field.md +27 -14
  259. package/docs/components/index-column.md +31 -8
  260. package/docs/components/line-chart.md +39 -0
  261. package/docs/components/loading.md +23 -12
  262. package/docs/components/login-form.md +47 -0
  263. package/docs/components/mantis-data-table.md +61 -0
  264. package/docs/components/map-picker-client.md +35 -14
  265. package/docs/components/map-picker-osm.md +33 -13
  266. package/docs/components/map-picker.md +34 -16
  267. package/docs/components/mask-field.md +31 -0
  268. package/docs/components/menu-button.md +28 -17
  269. package/docs/components/modal.md +45 -0
  270. package/docs/components/multi-select-filter.md +31 -15
  271. package/docs/components/number-field.md +40 -0
  272. package/docs/components/otp-input.md +31 -0
  273. package/docs/components/page-tabs.md +35 -0
  274. package/docs/components/page-title.md +15 -8
  275. package/docs/components/paginated-table.md +42 -26
  276. package/docs/components/pagination.md +28 -18
  277. package/docs/components/password-input.md +31 -0
  278. package/docs/components/phone-input.md +28 -0
  279. package/docs/components/radio-group.md +50 -0
  280. package/docs/components/range-slider.md +32 -0
  281. package/docs/components/rating-input.md +30 -0
  282. package/docs/components/render-field.md +41 -18
  283. package/docs/components/reset-password-form.md +37 -0
  284. package/docs/components/rich-text-preview.md +26 -13
  285. package/docs/components/search-input.md +30 -0
  286. package/docs/components/select-field.md +55 -0
  287. package/docs/components/stat-card.md +30 -0
  288. package/docs/components/status-badge.md +25 -9
  289. package/docs/components/switch-field.md +32 -0
  290. package/docs/components/table-filter-field.md +30 -16
  291. package/docs/components/table-skeleton.md +22 -0
  292. package/docs/components/table-toolbar.md +28 -14
  293. package/docs/components/tag.md +27 -0
  294. package/docs/components/tags-input.md +32 -0
  295. package/docs/components/text-area.md +25 -15
  296. package/docs/components/text-field.md +32 -0
  297. package/docs/components/timeline.md +31 -0
  298. package/docs/components/toggle-inline-button.md +48 -17
  299. package/docs/components/upload-files-preview.md +39 -20
  300. package/docs/components/use-field-controller.md +58 -0
  301. package/docs/components/user-menu.md +39 -0
  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 +120 -0
  305. package/docs/contracts/dependency-map.md +76 -39
  306. package/docs/contracts/field-controller.md +138 -0
  307. package/docs/contracts/style-imports.md +21 -14
  308. package/llms.txt +104 -0
  309. package/package.json +39 -10
  310. package/PRIMEREACT_MAPPING.md +0 -6
  311. package/dist/components/Forms/AsyncSelect.d.ts +0 -20
  312. package/dist/components/Forms/AsyncSelect.d.ts.map +0 -1
  313. package/dist/components/Forms/AsyncSelect.js +0 -77
  314. package/dist/components/Forms/AsyncSelect.js.map +0 -1
  315. package/dist/components/Forms/Combobox.d.ts +0 -10
  316. package/dist/components/Forms/Combobox.d.ts.map +0 -1
  317. package/dist/components/Forms/Combobox.js +0 -11
  318. package/dist/components/Forms/Combobox.js.map +0 -1
  319. package/dist/components/Forms/CurrencyInput.d.ts +0 -12
  320. package/dist/components/Forms/CurrencyInput.d.ts.map +0 -1
  321. package/dist/components/Forms/CurrencyInput.js +0 -9
  322. package/dist/components/Forms/CurrencyInput.js.map +0 -1
  323. package/dist/components/Forms/DateInput.d.ts +0 -10
  324. package/dist/components/Forms/DateInput.d.ts.map +0 -1
  325. package/dist/components/Forms/DateInput.js +0 -11
  326. package/dist/components/Forms/DateInput.js.map +0 -1
  327. package/dist/components/Forms/DateRangeInput.d.ts +0 -10
  328. package/dist/components/Forms/DateRangeInput.d.ts.map +0 -1
  329. package/dist/components/Forms/DateRangeInput.js +0 -13
  330. package/dist/components/Forms/DateRangeInput.js.map +0 -1
  331. package/dist/components/Forms/DropDown.d.ts +0 -10
  332. package/dist/components/Forms/DropDown.d.ts.map +0 -1
  333. package/dist/components/Forms/DropDown.js +0 -11
  334. package/dist/components/Forms/DropDown.js.map +0 -1
  335. package/dist/components/Forms/MultiSelect.d.ts +0 -10
  336. package/dist/components/Forms/MultiSelect.d.ts.map +0 -1
  337. package/dist/components/Forms/MultiSelect.js +0 -13
  338. package/dist/components/Forms/MultiSelect.js.map +0 -1
  339. package/dist/components/Forms/NumberInput.d.ts +0 -10
  340. package/dist/components/Forms/NumberInput.d.ts.map +0 -1
  341. package/dist/components/Forms/NumberInput.js +0 -16
  342. package/dist/components/Forms/NumberInput.js.map +0 -1
  343. package/dist/components/Forms/Select.d.ts +0 -15
  344. package/dist/components/Forms/Select.d.ts.map +0 -1
  345. package/dist/components/Forms/Select.js +0 -48
  346. package/dist/components/Forms/Select.js.map +0 -1
  347. package/dist/components/Forms/Switch.d.ts +0 -18
  348. package/dist/components/Forms/Switch.d.ts.map +0 -1
  349. package/dist/components/Forms/Switch.js +0 -30
  350. package/dist/components/Forms/Switch.js.map +0 -1
  351. package/dist/components/Forms/TextInput.d.ts +0 -11
  352. package/dist/components/Forms/TextInput.d.ts.map +0 -1
  353. package/dist/components/Forms/TextInput.js +0 -12
  354. package/dist/components/Forms/TextInput.js.map +0 -1
  355. package/dist/components/Forms/TimePicker.d.ts +0 -13
  356. package/dist/components/Forms/TimePicker.d.ts.map +0 -1
  357. package/dist/components/Forms/TimePicker.js +0 -19
  358. package/dist/components/Forms/TimePicker.js.map +0 -1
  359. package/dist/components/Forms/Toggle.d.ts +0 -14
  360. package/dist/components/Forms/Toggle.d.ts.map +0 -1
  361. package/dist/components/Forms/Toggle.js +0 -10
  362. package/dist/components/Forms/Toggle.js.map +0 -1
  363. package/dist/components/Forms/types.d.ts +0 -9
  364. package/dist/components/Forms/types.d.ts.map +0 -1
  365. package/dist/components/Forms/types.js +0 -2
  366. package/dist/components/Forms/types.js.map +0 -1
  367. package/docs/components/async-select.md +0 -26
  368. package/docs/components/date-input.md +0 -22
  369. package/docs/components/drop-down.md +0 -28
  370. package/docs/components/multi-select.md +0 -23
  371. package/docs/components/number-input.md +0 -20
  372. package/docs/components/select.md +0 -28
  373. package/docs/components/switch.md +0 -27
  374. package/docs/components/text-input.md +0 -23
  375. package/docs/components/time-picker.md +0 -22
  376. package/docs/components/toggle.md +0 -21
  377. package/docs/contracts/controller-props.md +0 -28
@@ -1,22 +1,43 @@
1
- # MapPickerClient
2
-
3
- - Export: `MapPickerClient`
4
- - Extra exports: `MapPickerClientProps`
5
- - Import: `import { MapPickerClient } from "@mantis-core/ui";`
6
- - Base library: `react-leaflet` + `leaflet`
7
- - Base typing: `{ onLocationSelect: (lat: number, lng: number) => void; initialLat?: number | null; initialLng?: number | null }`
8
- - Required styles: Leaflet CSS is imported by the component
1
+ ---
2
+ name: MapPickerClient
3
+ category: maps
4
+ import: '@mantis-core/ui/components/Maps/MapPickerClient'
5
+ whenToUse: Client-only react-leaflet map (click-to-pick marker); the piece MapPicker lazy-loads. Use directly only if you already own the ssr:false boundary.
6
+ baseLibrary: leaflet
7
+ requiredStyles: []
8
+ relatedComponents: [MapPicker, MapPickerOSM]
9
+ relatedNextCore: []
10
+ props:
11
+ - { name: onLocationSelect, type: '(lat: number, lng: number) => void', required: true, description: 'Fired on map click with the picked coordinates.' }
12
+ - { name: initialLat, type: 'number | null', required: false, description: 'Initial marker/center latitude; defaults to a fixed Yunguilla-area center when omitted.' }
13
+ - { name: initialLng, type: 'number | null', required: false, description: 'Initial marker/center longitude; defaults to a fixed Yunguilla-area center when omitted.' }
14
+ ---
9
15
 
10
16
  ## Example
11
17
 
12
18
  ```tsx
13
- <MapPickerClient
14
- initialLat={-2.9}
15
- initialLng={-79.0}
16
- onLocationSelect={(lat, lng) => console.log(lat, lng)}
17
- />
19
+ 'use client';
20
+ import { useState } from 'react';
21
+ import MapPickerClient from '@mantis-core/ui/components/Maps/MapPickerClient';
22
+
23
+ function Example() {
24
+ const [coords, setCoords] = useState<{ lat: number; lng: number } | null>(null);
25
+
26
+ return (
27
+ <MapPickerClient
28
+ onLocationSelect={(lat, lng) => setCoords({ lat, lng })}
29
+ initialLat={-3.26}
30
+ initialLng={-79.28}
31
+ />
32
+ );
33
+ }
18
34
  ```
19
35
 
20
36
  ## Notes
21
37
 
22
- - Marker assets are expected under `/leaflet/*`.
38
+ - `"use client"` component imports `leaflet/dist/leaflet.css` and `react-leaflet` directly, so it
39
+ cannot render during SSR. Prefer `MapPicker` unless the caller already guarantees a client-only tree.
40
+ - Marker icon assets are expected at `/leaflet/marker-icon.png`, `/leaflet/marker-icon-2x.png`,
41
+ `/leaflet/marker-shadow.png` (served from the consuming app's `public/`).
42
+ - Internally handles container resize (`ResizeObserver` + `map.invalidateSize`) and recenters when
43
+ `initialLat`/`initialLng` change — no manual `invalidateSize` call needed from the caller.
@@ -1,18 +1,38 @@
1
- # MapPickerOSM
2
-
3
- - Export: `MapPickerOSM`
4
- - Extra exports: `MapPickerOSMProps`, `LatLng`
5
- - Import: `import { MapPickerOSM } from "@mantis-core/ui";`
6
- - Base library: Leaflet loaded from CDN
7
- - Base typing: `{ initialPosition?: LatLng; zoom?: number; height?: string; onChange?: (pos: LatLng) => void; onSave?: (pos: LatLng) => void }`
8
- - Required styles: no `@mantis-core/styles` partial; Leaflet CSS is injected from CDN
1
+ ---
2
+ name: MapPickerOSM
3
+ category: maps
4
+ import: '@mantis-core/ui/components/Maps/MapPickerOSM'
5
+ whenToUse: Script-injected Leaflet map (no react-leaflet/SSR bundle cost) with a draggable marker and an explicit "save location" button.
6
+ baseLibrary: leaflet
7
+ requiredStyles: []
8
+ relatedComponents: [MapPicker, MapPickerClient]
9
+ relatedNextCore: []
10
+ props:
11
+ - { name: initialPosition, type: LatLng, required: false, default: '{ lat: -12.0464, lng: -77.0428 }', description: 'Initial marker/center position.' }
12
+ - { name: zoom, type: number, required: false, default: '12' }
13
+ - { name: height, type: string, required: false, default: '''400px''', description: 'CSS height of the map container.' }
14
+ - { name: onChange, type: '(pos: LatLng) => void', required: false, description: 'Fired on every click or marker drag.' }
15
+ - { name: onSave, type: '(pos: LatLng) => void', required: false, description: 'Fired only when the user clicks the "Guardar ubicación" button.' }
16
+ ---
9
17
 
10
18
  ## Example
11
19
 
12
20
  ```tsx
13
- <MapPickerOSM
14
- initialPosition={{ lat: -12.0464, lng: -77.0428 }}
15
- onChange={(pos) => console.log(pos)}
16
- onSave={(pos) => saveCoordinates(pos)}
17
- />
21
+ 'use client';
22
+ import MapPickerOSM from '@mantis-core/ui/components/Maps/MapPickerOSM';
23
+ import type { LatLng } from '@mantis-core/ui/components/Maps/MapPickerOSM';
24
+
25
+ function Example() {
26
+ const handleSave = (pos: LatLng) => console.log('saved', pos);
27
+
28
+ return <MapPickerOSM initialPosition={{ lat: -3.26, lng: -79.28 }} onSave={handleSave} />;
29
+ }
18
30
  ```
31
+
32
+ ## Notes
33
+
34
+ - Loads Leaflet from the `unpkg.com` CDN at runtime (script + stylesheet injected into
35
+ `document.head`/`document.body`) instead of importing the `leaflet` package — no bundler cost, but
36
+ requires network access to `unpkg.com` and has no offline/self-hosted mode.
37
+ - Spanish-only UI strings are hardcoded ("Cargando mapa...", "Guardar ubicación", error text) — not
38
+ currently prop-configurable.
@@ -1,21 +1,39 @@
1
- # MapPicker
2
-
3
- - Export: `MapPicker`
4
- - Extra exports: `MapPickerProps`
5
- - Import: `import { MapPicker } from "@mantis-core/ui";`
6
- - Base library: `next/dynamic` wrapper over `MapPickerClient`
7
- - Base typing: `{ onLocationSelect: (lat: number, lng: number) => void; initialLat?: number | null; initialLng?: number | null }`
8
- - Required styles: Leaflet CSS comes from the client implementation
1
+ ---
2
+ name: MapPicker
3
+ category: maps
4
+ import: '@mantis-core/ui/components/Maps/MapPicker'
5
+ whenToUse: SSR-safe entry point for the Leaflet lat/lng picker; lazy-loads MapPickerClient via next/dynamic (ssr:false).
6
+ baseLibrary: leaflet
7
+ requiredStyles: []
8
+ relatedComponents: [MapPickerClient, MapPickerOSM]
9
+ relatedNextCore: []
10
+ props:
11
+ - { name: onLocationSelect, type: '(lat: number, lng: number) => void', required: true, description: 'Fired on map click with the picked coordinates.' }
12
+ - { name: initialLat, type: 'number | null', required: false }
13
+ - { name: initialLng, type: 'number | null', required: false }
14
+ ---
9
15
 
10
16
  ## Example
11
17
 
12
18
  ```tsx
13
- <MapPicker
14
- initialLat={-2.9}
15
- initialLng={-79.0}
16
- onLocationSelect={(lat, lng) => {
17
- form.setValue("lat", lat);
18
- form.setValue("lng", lng);
19
- }}
20
- />
19
+ import { useState } from 'react';
20
+ import MapPicker from '@mantis-core/ui/components/Maps/MapPicker';
21
+
22
+ function Example() {
23
+ const [coords, setCoords] = useState<{ lat: number; lng: number } | null>(null);
24
+
25
+ return (
26
+ <MapPicker
27
+ onLocationSelect={(lat, lng) => setCoords({ lat, lng })}
28
+ initialLat={-3.26}
29
+ initialLng={-79.28}
30
+ />
31
+ );
32
+ }
21
33
  ```
34
+
35
+ ## Notes
36
+
37
+ - Just a `next/dynamic(() => import('./MapPickerClient'), { ssr: false })` wrapper — use this
38
+ (not `MapPickerClient` directly) in App Router pages/layouts to avoid a `leaflet` SSR crash.
39
+ - Loading fallback is a plain `<p>Loading map...</p>` (not themed) while the client chunk loads.
@@ -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).
@@ -1,22 +1,33 @@
1
- # MenuButton
2
-
3
- - Export: `MenuButton`
4
- - Extra exports: `MenuButtonProps`, `ActionMenuItem`
5
- - Import: `import { MenuButton } from "@mantis-core/ui";`
6
- - Base library: `primereact/tieredmenu`
7
- - Base typing:
8
- - `ActionMenuItem extends MenuItem { route?: string; items?: ActionMenuItem[] | ActionMenuItem[][] }`
9
- - `MenuButtonProps = { label?: string; icon?: string; items?: ActionMenuItem[] }`
10
- - Required styles: [`buttons.scss`](../../../../packages/mantis-core-styles/docs/styles/buttons.md) indirectly through `Button`
1
+ ---
2
+ name: MenuButton
3
+ category: tables
4
+ import: '@mantis-core/ui/components/Tables/MenuButton'
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
+ relatedNextCore: []
9
+ props:
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
+ ---
11
14
 
12
15
  ## Example
13
16
 
14
17
  ```tsx
15
- <MenuButton
16
- label="Actions"
17
- items={[
18
- { label: "Edit", icon: "pi pi-pencil", route: "/admin/listings/1" },
19
- { label: "Delete", icon: "pi pi-trash", command: () => setOpen(true) },
20
- ]}
21
- />
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
+ }
22
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.
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: Modal
3
+ category: overlays
4
+ import: '@mantis-core/ui/components/overlays/Modal'
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']
8
+ relatedNextCore: []
9
+ props:
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 }
18
+ ---
19
+
20
+ ## Example
21
+
22
+ ```tsx
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
+ }
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.
@@ -1,20 +1,36 @@
1
- # MultiSelectFilter
2
-
3
- - Export: `MultiSelectFilter`
4
- - Import: `import { MultiSelectFilter } from "@mantis-core/ui";`
5
- - Base library: `primereact/multiselect`
6
- - Base typing: `Omit<MultiSelectProps, "value" | "onChange"> & { filterProps: ColumnFilterElementTemplateOptions }`
7
- - Required styles: `@mantis-core/styles/scss/inputs.scss`
1
+ ---
2
+ name: MultiSelectFilter
3
+ category: tables
4
+ import: '@mantis-core/ui/components/Tables/filters/MultiSelectFilter'
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
+ relatedNextCore: []
9
+ props:
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'" }
15
+ ---
8
16
 
9
17
  ## Example
10
18
 
11
19
  ```tsx
12
- filterElement={(filterProps) => (
13
- <MultiSelectFilter
14
- filterProps={filterProps}
15
- options={statusOptions}
16
- optionLabel="label"
17
- optionValue="value"
18
- />
19
- )}
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
+ }
20
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`.
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: OtpInput
3
+ category: forms
4
+ import: '@mantis-core/ui/components/Forms/OtpInput'
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: []
9
+ relatedNextCore: []
10
+ props:
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.' }
14
+ ---
15
+
16
+ ## Example
17
+
18
+ ```tsx
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
+ }
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`.
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: PageTabs
3
+ category: navigation
4
+ import: '@mantis-core/ui/components/navigation/PageTabs'
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']
8
+ relatedNextCore: []
9
+ props:
10
+ - { name: tabs, type: '{ label: string; icon?: ReactNode; href?: string; command?: () => void }[]', required: true }
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'" }
13
+ ---
14
+
15
+ ## Example
16
+
17
+ ```tsx
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
+ }
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.
@@ -1,13 +1,20 @@
1
- # PageTitle
2
-
3
- - Export: `PageTitle`
4
- - Import: `import { PageTitle } from "@mantis-core/ui";`
5
- - Base library: custom typographic wrapper
6
- - Base typing: `PropsWithChildren`
7
- - Required styles: none
1
+ ---
2
+ name: PageTitle
3
+ category: pages
4
+ import: '@mantis-core/ui/components/pages/PageTitle'
5
+ whenToUse: Centered display-font heading for public-facing pages.
6
+ baseLibrary: custom
7
+ relatedNextCore: []
8
+ props:
9
+ - { name: children, type: ReactNode, required: true }
10
+ ---
8
11
 
9
12
  ## Example
10
13
 
11
14
  ```tsx
12
- <PageTitle>Inventory Overview</PageTitle>
15
+ import PageTitle from '@mantis-core/ui/components/pages/PageTitle';
16
+
17
+ function Example() {
18
+ return <PageTitle>Propiedades en Venta</PageTitle>;
19
+ }
13
20
  ```
@@ -1,35 +1,51 @@
1
- # PaginatedTable
2
-
3
- - Export: `PaginatedTable`
4
- - Extra exports: `PaginatedTableProps`
5
- - Import: `import { PaginatedTable } from "@mantis-core/ui";`
6
- - Base library: `primereact/datatable` + `primereact/column`
7
- - Base typing: `DataTableBaseProps<TValue> & { showIndexColumn?; showActionColumn?; useMantisCoreStyles?; indexColumnProps?; actionColumnProps?; actionColumnItems? }`
8
- - Required styles: `@mantis-core/styles/scss/table.scss`
1
+ ---
2
+ name: PaginatedTable
3
+ category: tables
4
+ import: '@mantis-core/ui/components/Tables/PaginatedTable'
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
+ requiredStyles: [scss/table.scss]
8
+ relatedComponents: [MantisDataTable, ActionColumn, IndexColumn, TableToolbar, FilterPannel]
9
+ relatedNextCore: []
10
+ props:
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.' }
19
+ ---
9
20
 
10
21
  ## Example
11
22
 
12
23
  ```tsx
13
- import { Column } from "primereact/column";
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' }];
14
33
 
15
- <PaginatedTable
16
- value={rows}
17
- totalRecords={total}
18
- lazy
19
- first={first}
20
- rows={pageSize}
21
- onPage={onPage}
22
- showActionColumn
23
- actionColumnItems={(row) => [
24
- { label: "Edit", icon: "pi pi-pencil", route: `/admin/listings/${row.id}` },
25
- ]}
26
- >
27
- <Column field="name" header="Name" sortable />
28
- <Column field="status" header="Status" />
29
- </PaginatedTable>
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
+ }
30
46
  ```
31
47
 
32
48
  ## Notes
33
49
 
34
- - It sets Mantis defaults for pagination, stripes, gridlines, sorting, empty state, and responsive layout.
35
- - 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`.
@@ -1,27 +1,37 @@
1
- # Pagination, PaginationInfo, and PageSizeSelector
2
-
3
- - Exports: `Pagination`, `PaginationInfo`, `PageSizeSelector`
4
- - Extra exports: `PaginationProps`, `PaginationInfoProps`, `PageSizeSelectorProps`
5
- - Import: `import { Pagination, PaginationInfo, PageSizeSelector } from "@mantis-core/ui";`
6
- - Base library: custom pagination UI using `@mantis-core/utils`
7
- - Required styles: none
1
+ ---
2
+ name: Pagination
3
+ category: feedback
4
+ import: '@mantis-core/ui/components/ui/Pagination'
5
+ whenToUse: Standalone page-number control (custom Tailwind markup, not PrimeReact Paginator); use when not relying on PaginatedTable's built-in paginator.
6
+ baseLibrary: custom
7
+ relatedComponents: ['PaginatedTable']
8
+ relatedNextCore: []
9
+ props:
10
+ - { name: currentPage, type: number, required: true }
11
+ - { name: totalPages, type: number, required: true }
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 }
19
+ ---
8
20
 
9
21
  ## Example
10
22
 
11
23
  ```tsx
12
- <Pagination
13
- currentPage={page}
14
- totalPages={totalPages}
15
- onPageChange={setPage}
16
- maxVisible={5}
17
- />
18
-
19
- <PaginationInfo currentPage={page} pageSize={pageSize} totalCount={total} />
24
+ import { Pagination } from '@mantis-core/ui/components/ui/Pagination';
25
+ import { useState } from 'react';
20
26
 
21
- <PageSizeSelector pageSize={pageSize} onPageSizeChange={setPageSize} />
27
+ function Example() {
28
+ const [page, setPage] = useState(1);
29
+ return <Pagination currentPage={page} totalPages={12} onPageChange={setPage} />;
30
+ }
22
31
  ```
23
32
 
24
33
  ## Notes
25
34
 
26
- - This is not PrimeReact `Paginator`.
27
- - `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.