@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
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: PasswordInput
3
+ category: forms
4
+ import: '@mantis-core/ui/components/Forms/PasswordInput'
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
+ relatedNextCore: []
10
+ props:
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.' }
13
+ ---
14
+
15
+ ## Example
16
+
17
+ ```tsx
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
+ }
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`.
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: PhoneInput
3
+ category: forms
4
+ import: '@mantis-core/ui/components/Forms/PhoneInput'
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']
9
+ relatedNextCore: []
10
+ props:
11
+ - { name: mask, type: string, required: false, default: "'(999) 999-9999'", description: 'Override the phone mask for other formats.' }
12
+ ---
13
+
14
+ ## Example
15
+
16
+ ```tsx
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
+ }
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"`).
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: RadioGroup
3
+ category: forms
4
+ import: '@mantis-core/ui/components/Forms/RadioGroup'
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']
9
+ relatedNextCore: []
10
+ props:
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
+ ---
16
+
17
+ ## Example
18
+
19
+ ```tsx
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
+ }
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.
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: RangeSlider
3
+ category: forms
4
+ import: '@mantis-core/ui/components/Forms/RangeSlider'
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: []
9
+ relatedNextCore: []
10
+ props:
11
+ - { name: min, type: number, required: false }
12
+ - { name: max, type: number, required: false }
13
+ - { name: step, type: number, required: false }
14
+ - { name: orientation, type: "'horizontal' | 'vertical'", required: false }
15
+ ---
16
+
17
+ ## Example
18
+
19
+ ```tsx
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
+ }
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.
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: RatingInput
3
+ category: forms
4
+ import: '@mantis-core/ui/components/Forms/RatingInput'
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: []
9
+ relatedNextCore: []
10
+ props:
11
+ - { name: stars, type: number, required: false, default: '5', description: 'How many star options render.' }
12
+ ---
13
+
14
+ ## Example
15
+
16
+ ```tsx
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
+ }
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`.
@@ -1,24 +1,47 @@
1
- # RenderField
2
-
3
- - Export: `RenderField`
4
- - Extra exports: `RenderFieldProps`
5
- - Import: `import { RenderField } from "@mantis-core/ui";`
6
- - Base library: `react-hook-form` `Controller`
7
- - Base typing: `{ name: string; defaultValue?: any; control?: Control; render: (props: RenderProps) => ReactElement; rules?: RegisterOptions }`
8
- - Required styles: none
1
+ ---
2
+ name: RenderField
3
+ category: forms
4
+ import: '@mantis-core/ui/components/Forms/RenderField'
5
+ whenToUse: 'Low-level escape hatch wrapping react-hook-form''s Controller via a render prop; use to wire any custom or third-party input without building a full FieldControllerProps wrapper.'
6
+ baseLibrary: custom
7
+ relatedComponents: ['FormFieldRender', 'useFieldController']
8
+ relatedNextCore: []
9
+ props:
10
+ - { name: name, type: string, required: true }
11
+ - { name: render, type: '(props: { field, fieldState, formState, value }) => ReactElement', required: true }
12
+ - { name: defaultValue, type: any, required: false }
13
+ - { name: rules, type: RegisterOptions, required: false }
14
+ - { name: control, type: Control, required: false }
15
+ ---
9
16
 
10
17
  ## Example
11
18
 
12
19
  ```tsx
13
- <RenderField
14
- name="featured"
15
- control={form.control}
16
- render={({ field }) => (
17
- <input
18
- type="checkbox"
19
- checked={!!field.value}
20
- onChange={(e) => field.onChange(e.target.checked)}
20
+ import RenderField from '@mantis-core/ui/components/Forms/RenderField';
21
+ import { useForm, type FieldValues } from 'react-hook-form';
22
+
23
+ function Example() {
24
+ const { control } = useForm<FieldValues>({ defaultValues: { rating: 0 } });
25
+ return (
26
+ <RenderField
27
+ name='rating'
28
+ control={control}
29
+ render={({ field }) => (
30
+ <input
31
+ type='number'
32
+ value={field.value}
33
+ onChange={(e) => field.onChange(Number(e.target.value))}
34
+ />
35
+ )}
21
36
  />
22
- )}
23
- />
37
+ );
38
+ }
24
39
  ```
40
+
41
+ ## Notes
42
+
43
+ - Thin pass-through over RHF's `<Controller>` — `field`/`fieldState`/`formState`/`control` are
44
+ untyped (`any`-form), unlike `FieldControllerProps`, which types `name`/`defaultValue`/`rules` by
45
+ path against the caller's form shape.
46
+ - No presentation (label/help/error/aria) — pair with `FormFieldRender` or `ErrorMessage` for that,
47
+ or build a proper wrapper with `useFieldController` + `FieldShell` if it will be reused.
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: ResetPasswordForm
3
+ category: auth
4
+ import: '@mantis-core/ui/components/auth/ResetPasswordForm'
5
+ whenToUse: New password + confirm-password form for a reset-token flow; caller owns token validation and the API call.
6
+ baseLibrary: custom
7
+ requiredStyles: []
8
+ relatedComponents: [ForgotPasswordForm, ChangePasswordForm, LoginForm]
9
+ relatedNextCore: []
10
+ props:
11
+ - { name: onSubmit, type: '(values: ResetPasswordFormValues) => void | Promise<void>', required: true, description: 'Receives { newPassword, confirmPassword }; form manages isSubmitting via RHF.' }
12
+ - { name: title, type: string, required: false, default: '"Nueva contraseña"' }
13
+ - { name: subtitle, type: string, required: false }
14
+ - { name: submitLabel, type: string, required: false, default: '"Guardar contraseña"' }
15
+ - { name: minPasswordLength, type: number, required: false, default: '8', description: 'Feeds minLengthRule for the newPassword field.' }
16
+ - { name: className, type: string, required: false }
17
+ ---
18
+
19
+ ## Example
20
+
21
+ ```tsx
22
+ import ResetPasswordForm from '@mantis-core/ui/components/auth/ResetPasswordForm';
23
+ import type { ResetPasswordFormValues } from '@mantis-core/ui/components/auth/ResetPasswordForm';
24
+
25
+ function Example() {
26
+ const handleSubmit = async ({ newPassword }: ResetPasswordFormValues) => {
27
+ await fetch('/api/auth/reset-password', { method: 'POST', body: JSON.stringify({ newPassword }) });
28
+ };
29
+
30
+ return <ResetPasswordForm onSubmit={handleSubmit} minPasswordLength={10} />;
31
+ }
32
+ ```
33
+
34
+ ## Notes
35
+
36
+ - `confirmPassword`'s match-check (`v === watch('newPassword')`) is hardcoded in the component, not
37
+ a prop — it is not configurable beyond `minPasswordLength`.
@@ -1,18 +1,31 @@
1
- # RichTextPreview
2
-
3
- - Export: `RichTextPreview`
4
- - Extra exports: `RichTextPreviewProps`
5
- - Import: `import { RichTextPreview } from "@mantis-core/ui";`
6
- - Base library: sanitized HTML renderer via `@mantis-core/utils`
7
- - Base typing: `{ html?: string | null; className?: string; sanitize?: boolean; size?: "sm" | "md" | "lg"; emptyFallback?: ReactNode }`
8
- - Required styles: `@mantis-core/styles/scss/rich-text-preview.scss`
1
+ ---
2
+ name: RichTextPreview
3
+ category: feedback
4
+ import: '@mantis-core/ui/components/ui/RichTextPreview'
5
+ whenToUse: Safely renders a CKEditor HTML string (sanitized by default) with CKEditor content styles applied.
6
+ baseLibrary: custom
7
+ requiredStyles: [scss/rich-text-preview.scss]
8
+ relatedComponents: ['CKEditorInput']
9
+ relatedNextCore: []
10
+ props:
11
+ - { name: html, type: 'string | null', required: false, description: 'HTML source. `null`/undefined is treated as empty.' }
12
+ - { name: className, type: string, required: false }
13
+ - { name: sanitize, type: boolean, required: false, default: 'true', description: 'Runs the HTML through `sanitizeHtmlContent` (`@mantis-core/utils`) before rendering.' }
14
+ - { name: size, type: "'sm' | 'md' | 'lg'", required: false, default: "'md'" }
15
+ - { name: emptyFallback, type: ReactNode, required: false, default: 'null', description: 'Rendered instead when the (sanitized) content is empty/whitespace-only.' }
16
+ ---
9
17
 
10
18
  ## Example
11
19
 
12
20
  ```tsx
13
- <RichTextPreview
14
- html={post.bodyHtml}
15
- size="lg"
16
- emptyFallback={<p>No content yet.</p>}
17
- />
21
+ import RichTextPreview from '@mantis-core/ui/components/ui/RichTextPreview';
22
+
23
+ function Example() {
24
+ return <RichTextPreview html={'<p>Hello <strong>world</strong></p>'} size='md' />;
25
+ }
18
26
  ```
27
+
28
+ ## Notes
29
+
30
+ - Renders via `dangerouslySetInnerHTML` — keep `sanitize` on (default) for any untrusted HTML source.
31
+ - Applies the `ck-content` class so CKEditor's own content styles apply to the preview.
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: SearchInput
3
+ category: forms
4
+ import: '@mantis-core/ui/components/Forms/SearchInput'
5
+ whenToUse: RHF-bound search box over PR11 InputText with a search icon and a debounced onSearch callback; ideal for live table/list filtering.
6
+ baseLibrary: '@primereact/ui/inputtext'
7
+ formContract: FieldControllerProps
8
+ relatedComponents: ['TextField']
9
+ relatedNextCore: []
10
+ props:
11
+ - { name: onSearch, type: '(value: string) => void', required: false, description: 'Fires debounced with the current value on each change.' }
12
+ - { name: debounceMs, type: number, required: false, default: '300' }
13
+ ---
14
+
15
+ ## Example
16
+
17
+ ```tsx
18
+ import { SearchInput } from '@mantis-core/ui/components/Forms/SearchInput';
19
+ import { useForm } from 'react-hook-form';
20
+
21
+ function Example() {
22
+ const { control } = useForm({ defaultValues: { q: '' } });
23
+ return <SearchInput name='q' control={control} label='Buscar' onSearch={(value) => console.log(value)} />;
24
+ }
25
+ ```
26
+
27
+ ## Notes
28
+
29
+ - The RHF field itself updates immediately (undebounced); only `onSearch` is debounced — use the field's `value` for the input, `onSearch` for the expensive call (query/filter).
30
+ - A clear (✕) icon appears once the field is non-empty and resets both the field and `onSearch("")`.
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: SelectField
3
+ category: forms
4
+ import: '@mantis-core/ui/components/Forms/SelectField'
5
+ whenToUse: Single- or multi-select dropdown wired to react-hook-form over PR11's portal-based Select; pass `multiple` for array-value mode. Absorbs the former Select/DropDown/MultiSelect.
6
+ baseLibrary: '@primereact/ui/select'
7
+ formContract: FieldControllerProps
8
+ relatedComponents: ['AutoCompleteField', 'RadioGroup']
9
+ relatedNextCore: []
10
+ props:
11
+ - { name: options, type: 'Record<string, unknown>[]', required: true, description: 'Option rows rendered in the popup.' }
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, description: 'Key read for each option''s bound value; falls back to the whole row.' }
14
+ - { name: multiple, type: boolean, required: false, default: 'false', description: 'Array-value mode with in-popup filter + checkmark indicators; empty selection binds `[]`, never `null`.' }
15
+ - { name: placeholder, type: string, required: false, description: 'Trigger placeholder; suppressed automatically in floating label modes (ifta/float) when a label is set.' }
16
+ - { name: optionTemplate, type: "'default' | 'twoLine'", required: false, default: '''default''', description: 'Named per-option render preset; ''twoLine'' adds a second line from `descriptionField`.' }
17
+ - { name: descriptionField, type: string, required: false, description: 'Row key for the second line when optionTemplate is ''twoLine''.' }
18
+ - { name: renderOption, type: '(option: Record<string, unknown>, index: number) => ReactNode', required: false, description: 'Escape hatch: full custom per-option render, overrides optionTemplate.' }
19
+ - { name: className, type: string, required: false }
20
+ ---
21
+
22
+ ## Example
23
+
24
+ ```tsx
25
+ import { SelectField } from '@mantis-core/ui/components/Forms/SelectField';
26
+ import { useForm } from 'react-hook-form';
27
+
28
+ const CITIES = [
29
+ { label: 'Quito', value: 'UIO' },
30
+ { label: 'Cuenca', value: 'CUE' },
31
+ ];
32
+
33
+ function Example() {
34
+ const { control } = useForm({ defaultValues: { city: null } });
35
+ return (
36
+ <SelectField
37
+ name='city'
38
+ control={control}
39
+ label='City'
40
+ options={CITIES}
41
+ optionLabel='label'
42
+ optionValue='value'
43
+ />
44
+ );
45
+ }
46
+ ```
47
+
48
+ ## Notes
49
+
50
+ - Value shape: scalar (or `null`) by default; an ARRAY when `multiple`. Clearing a `multiple` field
51
+ binds `[]`, never `null`, so consumers can `.map()`/`.length` it without a guard.
52
+ - Portal-based: id + aria live on `Select.Trigger` (a button, not `<input>`); `field.onBlur()` fires
53
+ on popup close, not native blur.
54
+ - `fluid` does not stretch automatically inside PR11's `<Fluid>` context for `Select` — pass it
55
+ explicitly if needed (handled internally by the wrapper's own `fluid` resolution).
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: StatCard
3
+ category: data
4
+ import: '@mantis-core/ui/components/data/StatCard'
5
+ whenToUse: KPI card showing a metric label, large value, optional icon, trend indicator, and footer.
6
+ baseLibrary: custom
7
+ relatedComponents: ['DescriptionList']
8
+ relatedNextCore: []
9
+ props:
10
+ - { name: label, type: string, required: true }
11
+ - { name: value, type: ReactNode, required: true }
12
+ - { name: icon, type: ReactNode, required: false }
13
+ - { name: trend, type: "{ value: number; direction: 'up' | 'down' }", required: false }
14
+ - { name: footer, type: ReactNode, required: false }
15
+ ---
16
+
17
+ ## Example
18
+
19
+ ```tsx
20
+ import StatCard from '@mantis-core/ui/components/data/StatCard';
21
+
22
+ function Example() {
23
+ return <StatCard label='Leads' value={142} trend={{ value: 12, direction: 'up' }} />;
24
+ }
25
+ ```
26
+
27
+ ## Notes
28
+
29
+ - Not re-exported from the package root — import the deep path shown above.
30
+ - Presentational only (inline styles, no PrimeReact base) — pass `icon` as a rendered node (e.g. a PrimeIcons `<i>` element).
@@ -1,14 +1,30 @@
1
- # StatusBadge
2
-
3
- - Export: `StatusBadge`
4
- - Extra exports: `StatusBadgeProps`, `StatusBadgeTone`, `StatusBadgeSize`
5
- - Import: `import { StatusBadge } from "@mantis-core/ui";`
6
- - Base library: custom span primitive
7
- - Base typing: `Omit<HTMLAttributes<HTMLSpanElement>, "children"> & { label?: ReactNode; tone?: "success" | "muted" | "warning" | "info" | "danger"; size?: "sm" | "md"; block?: boolean; children?: ReactNode }`
8
- - Required styles: `@mantis-core/styles/scss/status-badge.scss`
1
+ ---
2
+ name: StatusBadge
3
+ category: feedback
4
+ import: '@mantis-core/ui/components/ui/StatusBadge'
5
+ whenToUse: Colored pill badge to communicate a status with semantic tone (e.g. a lead or property status).
6
+ baseLibrary: custom
7
+ requiredStyles: [scss/status-badge.scss]
8
+ relatedComponents: ['DataState']
9
+ relatedNextCore: []
10
+ props:
11
+ - { name: label, type: ReactNode, required: false, description: 'Takes precedence over `children` when both are given.' }
12
+ - { name: tone, type: "'success' | 'muted' | 'warning' | 'info' | 'danger'", required: false, default: "'muted'" }
13
+ - { name: size, type: "'sm' | 'md'", required: false, default: "'md'" }
14
+ - { name: block, type: boolean, required: false, default: 'false' }
15
+ - { name: children, type: ReactNode, required: false, description: 'Fallback content when `label` is not given.' }
16
+ ---
9
17
 
10
18
  ## Example
11
19
 
12
20
  ```tsx
13
- <StatusBadge tone="success" size="sm" label="Published" />
21
+ import StatusBadge from '@mantis-core/ui/components/ui/StatusBadge';
22
+
23
+ function Example() {
24
+ return <StatusBadge label='Active' tone='success' />;
25
+ }
14
26
  ```
27
+
28
+ ## Notes
29
+
30
+ - Extends native `<span>` attributes (`Omit<HTMLAttributes<HTMLSpanElement>, 'children'>`) — passes through beyond `className`.
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: SwitchField
3
+ category: forms
4
+ import: '@mantis-core/ui/components/Forms/SwitchField'
5
+ whenToUse: Boolean on/off toggle wired to react-hook-form.
6
+ baseLibrary: '@primereact/ui/toggleswitch'
7
+ formContract: ChoiceFieldControllerProps
8
+ relatedComponents: ['CheckboxField']
9
+ relatedNextCore: []
10
+ props: []
11
+ ---
12
+
13
+ ## Example
14
+
15
+ ```tsx
16
+ import { SwitchField } from '@mantis-core/ui/components/Forms/SwitchField';
17
+ import { useForm } from 'react-hook-form';
18
+
19
+ function Example() {
20
+ const { control } = useForm({ defaultValues: { featured: false } });
21
+ return <SwitchField name='featured' control={control} label='Featured' />;
22
+ }
23
+ ```
24
+
25
+ ## Notes
26
+
27
+ - Value is a plain `boolean` (`Boolean(field.value)`).
28
+ - `labelMode` defaults to `'beside'` — `ChoiceFieldControllerProps` only allows `'beside' | 'top' | 'none'`.
29
+ - The single on/off survivor of the PR11 migration: the legacy `Switch` + `Toggle` wrappers were
30
+ removed. Use `CheckboxField` instead when the semantic is "check a box", not "flip a switch".
31
+ - Wraps PR11 compound `ToggleSwitch.Root` (+ `Control`/`Handle`); any remaining
32
+ `ToggleSwitchRootProps` pass through via `...rest`.
@@ -1,21 +1,35 @@
1
- # TableFilterField
2
-
3
- - Export: `TableFilterField`
4
- - Extra exports: `TableFilterFieldProps`
5
- - Import: `import { TableFilterField } from "@mantis-core/ui";`
6
- - Base library: custom filter wrapper
7
- - Base typing: `{ label: ReactNode; htmlFor: string; children: ReactNode; className?: string; labelClassName?: string }`
8
- - Required styles: `@mantis-core/styles/scss/table.scss`
1
+ ---
2
+ name: TableFilterField
3
+ category: tables
4
+ import: '@mantis-core/ui/components/table-filter-field'
5
+ whenToUse: 'Wraps a form control with a `<label>` inside a `FilterPannel`, providing consistent layout.'
6
+ baseLibrary: custom
7
+ relatedComponents: [FilterPannel]
8
+ relatedNextCore: []
9
+ props:
10
+ - { name: label, type: ReactNode, required: true }
11
+ - { name: htmlFor, type: string, required: true }
12
+ - { name: className, type: string, required: false }
13
+ - { name: labelClassName, type: string, required: false }
14
+ ---
9
15
 
10
16
  ## Example
11
17
 
12
18
  ```tsx
13
- <TableFilterField label="Status" htmlFor="status-filter">
14
- <DropDown
15
- controller={{ name: "status", control: form.control }}
16
- block
17
- inputId="status-filter"
18
- options={statusOptions}
19
- />
20
- </TableFilterField>
19
+ import TableFilterField from '@mantis-core/ui/components/table-filter-field';
20
+
21
+ function Example() {
22
+ return (
23
+ <TableFilterField label='Status' htmlFor='filter-status'>
24
+ <select id='filter-status'>
25
+ <option value='active'>Active</option>
26
+ </select>
27
+ </TableFilterField>
28
+ );
29
+ }
21
30
  ```
31
+
32
+ ## Notes
33
+
34
+ - Plain `div`/`label` with `mantis-core-table-filters__*` class hooks — no PrimeReact base, no `requiredStyles` partial.
35
+ - `htmlFor` is required (unlike the pre-PR11 doc, which marked it optional) — the child control must carry a matching `id`.
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: TableSkeleton
3
+ category: feedback
4
+ import: '@mantis-core/ui/components/feedback/TableSkeleton'
5
+ whenToUse: Animated skeleton placeholder that mimics a table grid while data loads; composes the PR11 Skeleton primitive.
6
+ baseLibrary: '@primereact/ui/skeleton'
7
+ relatedComponents: ['CardSkeleton']
8
+ relatedNextCore: []
9
+ props:
10
+ - { name: rows, type: number, required: false, default: '5' }
11
+ - { name: columns, type: number, required: false, default: '4' }
12
+ ---
13
+
14
+ ## Example
15
+
16
+ ```tsx
17
+ import TableSkeleton from '@mantis-core/ui/components/feedback/TableSkeleton';
18
+
19
+ function Example() {
20
+ return <TableSkeleton rows={8} columns={5} />;
21
+ }
22
+ ```
@@ -1,19 +1,33 @@
1
- # TableToolbar
2
-
3
- - Export: `TableToolbar`
4
- - Extra exports: `TableToolbarProps`
5
- - Import: `import { TableToolbar } from "@mantis-core/ui";`
6
- - Base library: custom layout
7
- - Base typing: `{ title?: ReactNode; totalRecords?: number; meta?: ReactNode; actions?: ReactNode; className?: string; copyClassName?: string; actionsClassName?: string }`
8
- - Required styles: `@mantis-core/styles/scss/table.scss`
1
+ ---
2
+ name: TableToolbar
3
+ category: tables
4
+ import: '@mantis-core/ui/components/table-toolbar'
5
+ whenToUse: 'Header bar above a table showing title, record-count meta, and an action buttons slot.'
6
+ baseLibrary: custom
7
+ relatedComponents: [PaginatedTable, MantisDataTable, Button]
8
+ relatedNextCore: []
9
+ props:
10
+ - { name: title, type: ReactNode, required: false }
11
+ - { name: totalRecords, type: number, required: false, description: 'When `meta` is omitted, renders as "{n} registros disponibles".' }
12
+ - { name: meta, type: ReactNode, required: false, description: 'Overrides the auto-generated `totalRecords` copy.' }
13
+ - { name: actions, type: ReactNode, required: false }
14
+ - { name: className, type: string, required: false }
15
+ - { name: copyClassName, type: string, required: false, description: 'Extra class on the title+meta wrapper.' }
16
+ - { name: actionsClassName, type: string, required: false, description: 'Extra class on the actions wrapper.' }
17
+ ---
9
18
 
10
19
  ## Example
11
20
 
12
21
  ```tsx
13
- <TableToolbar
14
- title="Listings"
15
- totalRecords={total}
16
- meta="Updated today"
17
- actions={<Button label="New listing" icon="pi pi-plus" />}
18
- />
22
+ import TableToolbar from '@mantis-core/ui/components/table-toolbar';
23
+ import Button from '@mantis-core/ui/components/Buttons/Button';
24
+
25
+ function Example() {
26
+ return <TableToolbar title='Users' totalRecords={42} actions={<Button label='New' />} />;
27
+ }
19
28
  ```
29
+
30
+ ## Notes
31
+
32
+ - Plain `div`s with `mantis-core-table-toolbar*` class hooks — no PrimeReact base, no `requiredStyles` partial (styled via the consuming app's own CSS/Tailwind).
33
+ - The title/meta block only renders when `title` or a resolved `meta` (explicit or from `totalRecords`) is present; the actions block only renders when `actions` is passed.