@mantis-core/ui 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/CHANGELOG.md +144 -0
  2. package/COMPONENTS.md +71 -73
  3. package/README.md +13 -6
  4. package/catalog.json +3031 -0
  5. package/dist/components/Buttons/Button.d.ts +39 -9
  6. package/dist/components/Buttons/Button.d.ts.map +1 -1
  7. package/dist/components/Buttons/Button.js +21 -13
  8. package/dist/components/Buttons/Button.js.map +1 -1
  9. package/dist/components/Forms/AutoCompleteField.d.ts +60 -0
  10. package/dist/components/Forms/AutoCompleteField.d.ts.map +1 -0
  11. package/dist/components/Forms/AutoCompleteField.js +125 -0
  12. package/dist/components/Forms/AutoCompleteField.js.map +1 -0
  13. package/dist/components/Forms/CKEditorInput.d.ts +5 -2
  14. package/dist/components/Forms/CKEditorInput.d.ts.map +1 -1
  15. package/dist/components/Forms/CKEditorInput.js +5 -2
  16. package/dist/components/Forms/CKEditorInput.js.map +1 -1
  17. package/dist/components/Forms/CheckboxField.d.ts +14 -0
  18. package/dist/components/Forms/CheckboxField.d.ts.map +1 -0
  19. package/dist/components/Forms/CheckboxField.js +26 -0
  20. package/dist/components/Forms/CheckboxField.js.map +1 -0
  21. package/dist/components/Forms/ColorPickerInput.d.ts +27 -8
  22. package/dist/components/Forms/ColorPickerInput.d.ts.map +1 -1
  23. package/dist/components/Forms/ColorPickerInput.js +57 -11
  24. package/dist/components/Forms/ColorPickerInput.js.map +1 -1
  25. package/dist/components/Forms/DateField.d.ts +68 -0
  26. package/dist/components/Forms/DateField.d.ts.map +1 -0
  27. package/dist/components/Forms/DateField.js +108 -0
  28. package/dist/components/Forms/DateField.js.map +1 -0
  29. package/dist/components/Forms/DatePresets.d.ts.map +1 -1
  30. package/dist/components/Forms/DatePresets.js +6 -3
  31. package/dist/components/Forms/DatePresets.js.map +1 -1
  32. package/dist/components/Forms/FieldShell.d.ts +24 -0
  33. package/dist/components/Forms/FieldShell.d.ts.map +1 -0
  34. package/dist/components/Forms/FieldShell.js +39 -0
  35. package/dist/components/Forms/FieldShell.js.map +1 -0
  36. package/dist/components/Forms/FileDropzone.d.ts +4 -2
  37. package/dist/components/Forms/FileDropzone.d.ts.map +1 -1
  38. package/dist/components/Forms/FileDropzone.js.map +1 -1
  39. package/dist/components/Forms/FormActionsBar.js +2 -2
  40. package/dist/components/Forms/FormActionsBar.js.map +1 -1
  41. package/dist/components/Forms/FormWizard.d.ts +1 -1
  42. package/dist/components/Forms/FormWizard.d.ts.map +1 -1
  43. package/dist/components/Forms/FormWizard.js +4 -5
  44. package/dist/components/Forms/FormWizard.js.map +1 -1
  45. package/dist/components/Forms/HiddenField.d.ts +12 -6
  46. package/dist/components/Forms/HiddenField.d.ts.map +1 -1
  47. package/dist/components/Forms/HiddenField.js +14 -5
  48. package/dist/components/Forms/HiddenField.js.map +1 -1
  49. package/dist/components/Forms/MaskField.d.ts +28 -0
  50. package/dist/components/Forms/MaskField.d.ts.map +1 -0
  51. package/dist/components/Forms/MaskField.js +74 -0
  52. package/dist/components/Forms/MaskField.js.map +1 -0
  53. package/dist/components/Forms/NumberField.d.ts +14 -0
  54. package/dist/components/Forms/NumberField.d.ts.map +1 -0
  55. package/dist/components/Forms/NumberField.js +51 -0
  56. package/dist/components/Forms/NumberField.js.map +1 -0
  57. package/dist/components/Forms/OtpInput.d.ts +23 -8
  58. package/dist/components/Forms/OtpInput.d.ts.map +1 -1
  59. package/dist/components/Forms/OtpInput.js +37 -8
  60. package/dist/components/Forms/OtpInput.js.map +1 -1
  61. package/dist/components/Forms/PasswordInput.d.ts +22 -9
  62. package/dist/components/Forms/PasswordInput.d.ts.map +1 -1
  63. package/dist/components/Forms/PasswordInput.js +63 -28
  64. package/dist/components/Forms/PasswordInput.js.map +1 -1
  65. package/dist/components/Forms/PhoneInput.d.ts +16 -8
  66. package/dist/components/Forms/PhoneInput.d.ts.map +1 -1
  67. package/dist/components/Forms/PhoneInput.js +13 -6
  68. package/dist/components/Forms/PhoneInput.js.map +1 -1
  69. package/dist/components/Forms/RadioGroup.d.ts +34 -13
  70. package/dist/components/Forms/RadioGroup.d.ts.map +1 -1
  71. package/dist/components/Forms/RadioGroup.js +49 -6
  72. package/dist/components/Forms/RadioGroup.js.map +1 -1
  73. package/dist/components/Forms/RangeSlider.d.ts +26 -11
  74. package/dist/components/Forms/RangeSlider.d.ts.map +1 -1
  75. package/dist/components/Forms/RangeSlider.js +40 -7
  76. package/dist/components/Forms/RangeSlider.js.map +1 -1
  77. package/dist/components/Forms/RatingInput.d.ts +24 -8
  78. package/dist/components/Forms/RatingInput.d.ts.map +1 -1
  79. package/dist/components/Forms/RatingInput.js +41 -9
  80. package/dist/components/Forms/RatingInput.js.map +1 -1
  81. package/dist/components/Forms/SearchInput.d.ts +18 -10
  82. package/dist/components/Forms/SearchInput.d.ts.map +1 -1
  83. package/dist/components/Forms/SearchInput.js +44 -23
  84. package/dist/components/Forms/SearchInput.js.map +1 -1
  85. package/dist/components/Forms/SelectField.d.ts +41 -0
  86. package/dist/components/Forms/SelectField.d.ts.map +1 -0
  87. package/dist/components/Forms/SelectField.js +110 -0
  88. package/dist/components/Forms/SelectField.js.map +1 -0
  89. package/dist/components/Forms/SwitchField.d.ts +14 -0
  90. package/dist/components/Forms/SwitchField.d.ts.map +1 -0
  91. package/dist/components/Forms/SwitchField.js +26 -0
  92. package/dist/components/Forms/SwitchField.js.map +1 -0
  93. package/dist/components/Forms/TagsInput.d.ts +29 -8
  94. package/dist/components/Forms/TagsInput.d.ts.map +1 -1
  95. package/dist/components/Forms/TagsInput.js +53 -9
  96. package/dist/components/Forms/TagsInput.js.map +1 -1
  97. package/dist/components/Forms/TextArea.d.ts +13 -10
  98. package/dist/components/Forms/TextArea.d.ts.map +1 -1
  99. package/dist/components/Forms/TextArea.js +27 -9
  100. package/dist/components/Forms/TextArea.js.map +1 -1
  101. package/dist/components/Forms/TextField.d.ts +14 -0
  102. package/dist/components/Forms/TextField.d.ts.map +1 -0
  103. package/dist/components/Forms/TextField.js +29 -0
  104. package/dist/components/Forms/TextField.js.map +1 -0
  105. package/dist/components/Forms/ToggleInlineButton.d.ts +33 -12
  106. package/dist/components/Forms/ToggleInlineButton.d.ts.map +1 -1
  107. package/dist/components/Forms/ToggleInlineButton.js +56 -6
  108. package/dist/components/Forms/ToggleInlineButton.js.map +1 -1
  109. package/dist/components/Forms/UploadFilesPreview.js +3 -3
  110. package/dist/components/Forms/UploadFilesPreview.js.map +1 -1
  111. package/dist/components/Forms/field-typing.test-d.d.ts +2 -0
  112. package/dist/components/Forms/field-typing.test-d.d.ts.map +1 -0
  113. package/dist/components/Forms/field-typing.test-d.js +24 -0
  114. package/dist/components/Forms/field-typing.test-d.js.map +1 -0
  115. package/dist/components/Forms/useFieldController.d.ts +85 -0
  116. package/dist/components/Forms/useFieldController.d.ts.map +1 -0
  117. package/dist/components/Forms/useFieldController.js +54 -0
  118. package/dist/components/Forms/useFieldController.js.map +1 -0
  119. package/dist/components/Loaders/Loading.d.ts.map +1 -1
  120. package/dist/components/Loaders/Loading.js +3 -2
  121. package/dist/components/Loaders/Loading.js.map +1 -1
  122. package/dist/components/Tables/ActionColumn.d.ts +20 -4
  123. package/dist/components/Tables/ActionColumn.d.ts.map +1 -1
  124. package/dist/components/Tables/ActionColumn.js +24 -5
  125. package/dist/components/Tables/ActionColumn.js.map +1 -1
  126. package/dist/components/Tables/FilterPannel.d.ts +9 -2
  127. package/dist/components/Tables/FilterPannel.d.ts.map +1 -1
  128. package/dist/components/Tables/FilterPannel.js +15 -11
  129. package/dist/components/Tables/FilterPannel.js.map +1 -1
  130. package/dist/components/Tables/IndexColumn.d.ts +12 -3
  131. package/dist/components/Tables/IndexColumn.d.ts.map +1 -1
  132. package/dist/components/Tables/IndexColumn.js +21 -5
  133. package/dist/components/Tables/IndexColumn.js.map +1 -1
  134. package/dist/components/Tables/MantisDataTable.d.ts +45 -0
  135. package/dist/components/Tables/MantisDataTable.d.ts.map +1 -0
  136. package/dist/components/Tables/MantisDataTable.js +63 -0
  137. package/dist/components/Tables/MantisDataTable.js.map +1 -0
  138. package/dist/components/Tables/MenuButton.d.ts +28 -7
  139. package/dist/components/Tables/MenuButton.d.ts.map +1 -1
  140. package/dist/components/Tables/MenuButton.js +20 -10
  141. package/dist/components/Tables/MenuButton.js.map +1 -1
  142. package/dist/components/Tables/PaginatedTable.d.ts +26 -17
  143. package/dist/components/Tables/PaginatedTable.d.ts.map +1 -1
  144. package/dist/components/Tables/PaginatedTable.js +24 -22
  145. package/dist/components/Tables/PaginatedTable.js.map +1 -1
  146. package/dist/components/Tables/cell-presets.d.ts +35 -0
  147. package/dist/components/Tables/cell-presets.d.ts.map +1 -0
  148. package/dist/components/Tables/cell-presets.js +40 -0
  149. package/dist/components/Tables/cell-presets.js.map +1 -0
  150. package/dist/components/Tables/columns.d.ts +40 -0
  151. package/dist/components/Tables/columns.d.ts.map +1 -0
  152. package/dist/components/Tables/columns.js +2 -0
  153. package/dist/components/Tables/columns.js.map +1 -0
  154. package/dist/components/Tables/filters/MultiSelectFilter.d.ts +24 -6
  155. package/dist/components/Tables/filters/MultiSelectFilter.d.ts.map +1 -1
  156. package/dist/components/Tables/filters/MultiSelectFilter.js +19 -6
  157. package/dist/components/Tables/filters/MultiSelectFilter.js.map +1 -1
  158. package/dist/components/auth/ChangePasswordForm.d.ts.map +1 -1
  159. package/dist/components/auth/ChangePasswordForm.js +12 -12
  160. package/dist/components/auth/ChangePasswordForm.js.map +1 -1
  161. package/dist/components/auth/ForgotPasswordForm.d.ts.map +1 -1
  162. package/dist/components/auth/ForgotPasswordForm.js +7 -5
  163. package/dist/components/auth/ForgotPasswordForm.js.map +1 -1
  164. package/dist/components/auth/LoginForm.d.ts +2 -2
  165. package/dist/components/auth/LoginForm.d.ts.map +1 -1
  166. package/dist/components/auth/LoginForm.js +15 -15
  167. package/dist/components/auth/LoginForm.js.map +1 -1
  168. package/dist/components/auth/ResetPasswordForm.d.ts.map +1 -1
  169. package/dist/components/auth/ResetPasswordForm.js +11 -12
  170. package/dist/components/auth/ResetPasswordForm.js.map +1 -1
  171. package/dist/components/auth/UserMenu.d.ts +11 -1
  172. package/dist/components/auth/UserMenu.d.ts.map +1 -1
  173. package/dist/components/auth/UserMenu.js +30 -87
  174. package/dist/components/auth/UserMenu.js.map +1 -1
  175. package/dist/components/data/Timeline.d.ts +2 -2
  176. package/dist/components/data/Timeline.d.ts.map +1 -1
  177. package/dist/components/data/Timeline.js +17 -17
  178. package/dist/components/data/Timeline.js.map +1 -1
  179. package/dist/components/feedback/Avatar.d.ts +4 -2
  180. package/dist/components/feedback/Avatar.d.ts.map +1 -1
  181. package/dist/components/feedback/Avatar.js +4 -4
  182. package/dist/components/feedback/Avatar.js.map +1 -1
  183. package/dist/components/feedback/CardSkeleton.d.ts.map +1 -1
  184. package/dist/components/feedback/CardSkeleton.js +3 -3
  185. package/dist/components/feedback/CardSkeleton.js.map +1 -1
  186. package/dist/components/feedback/TableSkeleton.d.ts.map +1 -1
  187. package/dist/components/feedback/TableSkeleton.js +3 -3
  188. package/dist/components/feedback/TableSkeleton.js.map +1 -1
  189. package/dist/components/feedback/Tag.d.ts +4 -2
  190. package/dist/components/feedback/Tag.d.ts.map +1 -1
  191. package/dist/components/feedback/Tag.js +4 -4
  192. package/dist/components/feedback/Tag.js.map +1 -1
  193. package/dist/components/navigation/CommandPalette.d.ts.map +1 -1
  194. package/dist/components/navigation/CommandPalette.js +5 -2
  195. package/dist/components/navigation/CommandPalette.js.map +1 -1
  196. package/dist/components/navigation/PageTabs.d.ts +10 -8
  197. package/dist/components/navigation/PageTabs.d.ts.map +1 -1
  198. package/dist/components/navigation/PageTabs.js +17 -13
  199. package/dist/components/navigation/PageTabs.js.map +1 -1
  200. package/dist/components/overlays/Drawer.d.ts +16 -3
  201. package/dist/components/overlays/Drawer.d.ts.map +1 -1
  202. package/dist/components/overlays/Drawer.js +9 -5
  203. package/dist/components/overlays/Drawer.js.map +1 -1
  204. package/dist/components/overlays/Modal.d.ts +18 -3
  205. package/dist/components/overlays/Modal.d.ts.map +1 -1
  206. package/dist/components/overlays/Modal.js +13 -5
  207. package/dist/components/overlays/Modal.js.map +1 -1
  208. package/dist/components/pages/app-shell/AppShell.d.ts.map +1 -1
  209. package/dist/components/pages/app-shell/AppShell.js +6 -6
  210. package/dist/components/pages/app-shell/AppShell.js.map +1 -1
  211. package/dist/components/ui/ConfirmDialog.d.ts +1 -2
  212. package/dist/components/ui/ConfirmDialog.d.ts.map +1 -1
  213. package/dist/components/ui/ConfirmDialog.js +10 -4
  214. package/dist/components/ui/ConfirmDialog.js.map +1 -1
  215. package/dist/components/ui/DataState.js +2 -2
  216. package/dist/components/ui/DataState.js.map +1 -1
  217. package/dist/index.d.ts +71 -42
  218. package/dist/index.d.ts.map +1 -1
  219. package/dist/index.js +114 -22
  220. package/dist/index.js.map +1 -1
  221. package/docs/README.md +1 -1
  222. package/docs/components/action-column.md +33 -7
  223. package/docs/components/admin-page-configurator.md +24 -5
  224. package/docs/components/admin-page-header.md +21 -3
  225. package/docs/components/admin-page-layout-shell.md +18 -4
  226. package/docs/components/admin-page-layout.md +34 -5
  227. package/docs/components/app-shell.md +31 -6
  228. package/docs/components/auto-complete-field.md +60 -0
  229. package/docs/components/avatar.md +18 -8
  230. package/docs/components/bar-chart.md +25 -7
  231. package/docs/components/breadcrumbs.md +15 -2
  232. package/docs/components/button.md +34 -15
  233. package/docs/components/card-skeleton.md +9 -3
  234. package/docs/components/change-password-form.md +23 -4
  235. package/docs/components/checkbox-field.md +38 -0
  236. package/docs/components/ckeditor-input.md +40 -8
  237. package/docs/components/color-picker-input.md +19 -8
  238. package/docs/components/command-palette.md +23 -2
  239. package/docs/components/confirm-dialog.md +36 -9
  240. package/docs/components/data-state.md +31 -6
  241. package/docs/components/date-field.md +39 -0
  242. package/docs/components/date-presets.md +19 -5
  243. package/docs/components/description-list.md +20 -2
  244. package/docs/components/dirty-form-guard.md +16 -4
  245. package/docs/components/donut-chart.md +24 -7
  246. package/docs/components/drawer.md +27 -8
  247. package/docs/components/empty-state.md +12 -2
  248. package/docs/components/error-boundary.md +16 -2
  249. package/docs/components/error-message.md +22 -3
  250. package/docs/components/field-shell.md +47 -0
  251. package/docs/components/file-dropzone.md +22 -6
  252. package/docs/components/filter-pannel.md +34 -7
  253. package/docs/components/forgot-password-form.md +23 -5
  254. package/docs/components/form-actions-bar.md +21 -2
  255. package/docs/components/form-field-render.md +36 -8
  256. package/docs/components/form-section.md +13 -1
  257. package/docs/components/form-wizard.md +34 -5
  258. package/docs/components/hidden-field.md +22 -6
  259. package/docs/components/index-column.md +25 -5
  260. package/docs/components/line-chart.md +25 -7
  261. package/docs/components/loading.md +14 -5
  262. package/docs/components/login-form.md +31 -6
  263. package/docs/components/mantis-data-table.md +61 -0
  264. package/docs/components/map-picker-client.md +29 -8
  265. package/docs/components/map-picker-osm.md +27 -9
  266. package/docs/components/map-picker.md +25 -4
  267. package/docs/components/mask-field.md +31 -0
  268. package/docs/components/menu-button.md +22 -7
  269. package/docs/components/modal.md +34 -9
  270. package/docs/components/multi-select-filter.md +25 -7
  271. package/docs/components/number-field.md +40 -0
  272. package/docs/components/otp-input.md +20 -7
  273. package/docs/components/page-tabs.md +23 -4
  274. package/docs/components/page-title.md +6 -1
  275. package/docs/components/paginated-table.md +36 -13
  276. package/docs/components/pagination.md +20 -7
  277. package/docs/components/password-input.md +20 -8
  278. package/docs/components/phone-input.md +17 -7
  279. package/docs/components/radio-group.md +39 -9
  280. package/docs/components/range-slider.md +18 -6
  281. package/docs/components/rating-input.md +19 -8
  282. package/docs/components/render-field.md +31 -3
  283. package/docs/components/reset-password-form.md +24 -4
  284. package/docs/components/rich-text-preview.md +17 -5
  285. package/docs/components/search-input.md +18 -7
  286. package/docs/components/select-field.md +55 -0
  287. package/docs/components/stat-card.md +14 -3
  288. package/docs/components/status-badge.md +17 -7
  289. package/docs/components/switch-field.md +32 -0
  290. package/docs/components/table-filter-field.md +22 -4
  291. package/docs/components/table-skeleton.md +9 -3
  292. package/docs/components/table-toolbar.md +18 -5
  293. package/docs/components/tag.md +16 -7
  294. package/docs/components/tags-input.md +21 -8
  295. package/docs/components/text-area.md +18 -8
  296. package/docs/components/text-field.md +32 -0
  297. package/docs/components/timeline.md +19 -3
  298. package/docs/components/toggle-inline-button.md +42 -10
  299. package/docs/components/upload-files-preview.md +23 -2
  300. package/docs/components/use-field-controller.md +58 -0
  301. package/docs/components/user-menu.md +26 -6
  302. package/docs/contracts/STORYBOOK_IMPLEMENTATION_AND_VOBO.md +92 -0
  303. package/docs/contracts/STORYBOOK_VOBO_LEDGER.md +195 -0
  304. package/docs/contracts/component-doc-schema.md +57 -15
  305. package/docs/contracts/dependency-map.md +50 -52
  306. package/docs/contracts/field-controller.md +138 -0
  307. package/docs/contracts/style-imports.md +1 -20
  308. package/llms.txt +70 -72
  309. package/package.json +39 -10
  310. package/dist/components/Forms/AsyncSelect.d.ts +0 -20
  311. package/dist/components/Forms/AsyncSelect.d.ts.map +0 -1
  312. package/dist/components/Forms/AsyncSelect.js +0 -77
  313. package/dist/components/Forms/AsyncSelect.js.map +0 -1
  314. package/dist/components/Forms/Combobox.d.ts +0 -10
  315. package/dist/components/Forms/Combobox.d.ts.map +0 -1
  316. package/dist/components/Forms/Combobox.js +0 -11
  317. package/dist/components/Forms/Combobox.js.map +0 -1
  318. package/dist/components/Forms/CurrencyInput.d.ts +0 -12
  319. package/dist/components/Forms/CurrencyInput.d.ts.map +0 -1
  320. package/dist/components/Forms/CurrencyInput.js +0 -9
  321. package/dist/components/Forms/CurrencyInput.js.map +0 -1
  322. package/dist/components/Forms/DateInput.d.ts +0 -10
  323. package/dist/components/Forms/DateInput.d.ts.map +0 -1
  324. package/dist/components/Forms/DateInput.js +0 -11
  325. package/dist/components/Forms/DateInput.js.map +0 -1
  326. package/dist/components/Forms/DateRangeInput.d.ts +0 -10
  327. package/dist/components/Forms/DateRangeInput.d.ts.map +0 -1
  328. package/dist/components/Forms/DateRangeInput.js +0 -13
  329. package/dist/components/Forms/DateRangeInput.js.map +0 -1
  330. package/dist/components/Forms/DropDown.d.ts +0 -10
  331. package/dist/components/Forms/DropDown.d.ts.map +0 -1
  332. package/dist/components/Forms/DropDown.js +0 -11
  333. package/dist/components/Forms/DropDown.js.map +0 -1
  334. package/dist/components/Forms/MultiSelect.d.ts +0 -10
  335. package/dist/components/Forms/MultiSelect.d.ts.map +0 -1
  336. package/dist/components/Forms/MultiSelect.js +0 -13
  337. package/dist/components/Forms/MultiSelect.js.map +0 -1
  338. package/dist/components/Forms/NumberInput.d.ts +0 -10
  339. package/dist/components/Forms/NumberInput.d.ts.map +0 -1
  340. package/dist/components/Forms/NumberInput.js +0 -16
  341. package/dist/components/Forms/NumberInput.js.map +0 -1
  342. package/dist/components/Forms/Select.d.ts +0 -15
  343. package/dist/components/Forms/Select.d.ts.map +0 -1
  344. package/dist/components/Forms/Select.js +0 -48
  345. package/dist/components/Forms/Select.js.map +0 -1
  346. package/dist/components/Forms/Switch.d.ts +0 -18
  347. package/dist/components/Forms/Switch.d.ts.map +0 -1
  348. package/dist/components/Forms/Switch.js +0 -30
  349. package/dist/components/Forms/Switch.js.map +0 -1
  350. package/dist/components/Forms/TextInput.d.ts +0 -11
  351. package/dist/components/Forms/TextInput.d.ts.map +0 -1
  352. package/dist/components/Forms/TextInput.js +0 -12
  353. package/dist/components/Forms/TextInput.js.map +0 -1
  354. package/dist/components/Forms/TimePicker.d.ts +0 -13
  355. package/dist/components/Forms/TimePicker.d.ts.map +0 -1
  356. package/dist/components/Forms/TimePicker.js +0 -19
  357. package/dist/components/Forms/TimePicker.js.map +0 -1
  358. package/dist/components/Forms/Toggle.d.ts +0 -14
  359. package/dist/components/Forms/Toggle.d.ts.map +0 -1
  360. package/dist/components/Forms/Toggle.js +0 -10
  361. package/dist/components/Forms/Toggle.js.map +0 -1
  362. package/dist/components/Forms/types.d.ts +0 -9
  363. package/dist/components/Forms/types.d.ts.map +0 -1
  364. package/dist/components/Forms/types.js +0 -2
  365. package/dist/components/Forms/types.js.map +0 -1
  366. package/docs/components/async-select.md +0 -27
  367. package/docs/components/combobox.md +0 -19
  368. package/docs/components/currency-input.md +0 -21
  369. package/docs/components/date-input.md +0 -21
  370. package/docs/components/date-range-input.md +0 -20
  371. package/docs/components/drop-down.md +0 -26
  372. package/docs/components/multi-select.md +0 -22
  373. package/docs/components/number-input.md +0 -21
  374. package/docs/components/select.md +0 -28
  375. package/docs/components/switch.md +0 -24
  376. package/docs/components/text-input.md +0 -24
  377. package/docs/components/time-picker.md +0 -25
  378. package/docs/components/toggle.md +0 -24
  379. package/docs/contracts/controller-props.md +0 -28
@@ -6,34 +6,56 @@ Which base library each component wraps.
6
6
 
7
7
  ## PrimeReact wrappers
8
8
 
9
- - `ActionColumn`: `primereact/column`
10
- - `Button`: `primereact/button`
11
- - `ConfirmDialog`: `primereact/dialog`
12
- - `DateInput`: `primereact/calendar`
13
- - `DropDown`: `primereact/dropdown`
14
- - `FilterPannel`: `primereact/sidebar`
15
- - `IndexColumn`: `primereact/column`
16
- - `MenuButton`: `primereact/tieredmenu`
17
- - `MultiSelect`: `primereact/multiselect`
18
- - `MultiSelectFilter`: `primereact/multiselect`
19
- - `NumberInput`: `primereact/inputnumber`
20
- - `PaginatedTable`: `primereact/datatable`
21
- - `TextArea`: `primereact/inputtextarea`
22
- - `TextInput`: `primereact/inputtext`
23
- - `Toggle`: `primereact/checkbox`
24
- - `ToggleInlineButton`: `primereact/selectbutton`
9
+ - `ActionColumn`: `@primereact/ui/menu`
10
+ - `AutoCompleteField`: `@primereact/ui/autocomplete`
11
+ - `Avatar`: `@primereact/ui/avatar`
12
+ - `Button`: `@primereact/ui/button`
13
+ - `CardSkeleton`: `@primereact/ui/skeleton`
14
+ - `CheckboxField`: `@primereact/ui/checkbox`
15
+ - `ColorPickerInput`: `@primereact/ui/inputcolor`
16
+ - `DateField`: `@primereact/ui/datepicker`
17
+ - `DatePresets`: `@primereact/ui/button`
18
+ - `Drawer`: `@primereact/ui/drawer`
19
+ - `FormWizard`: `@primereact/ui/stepper`
20
+ - `IndexColumn`: `@primereact/ui/datatable`
21
+ - `Loading`: `@primereact/ui/progressspinner`
22
+ - `MantisDataTable`: `@primereact/ui/datatable`
23
+ - `MaskField`: `@primereact/ui/inputtext`
24
+ - `MenuButton`: `@primereact/ui/menu`
25
+ - `Modal`: `@primereact/ui/dialog`
26
+ - `MultiSelectFilter`: `@primereact/ui/select`
27
+ - `NumberField`: `@primereact/ui/inputnumber`
28
+ - `OtpInput`: `@primereact/ui/inputotp`
29
+ - `PageTabs`: `@primereact/ui/tabs`
30
+ - `PaginatedTable`: `@primereact/ui/datatable`
31
+ - `PasswordInput`: `@primereact/ui/inputpassword`
32
+ - `PhoneInput`: `@primereact/ui/inputtext`
33
+ - `RadioGroup`: `@primereact/ui/radiobutton`
34
+ - `RangeSlider`: `@primereact/ui/slider`
35
+ - `RatingInput`: `@primereact/ui/rating`
36
+ - `SearchInput`: `@primereact/ui/inputtext`
37
+ - `SelectField`: `@primereact/ui/select`
38
+ - `SwitchField`: `@primereact/ui/toggleswitch`
39
+ - `TableSkeleton`: `@primereact/ui/skeleton`
40
+ - `Tag`: `@primereact/ui/tag`
41
+ - `TagsInput`: `@primereact/ui/inputtags`
42
+ - `TextArea`: `@primereact/ui/textarea`
43
+ - `TextField`: `@primereact/ui/inputtext`
44
+ - `Timeline`: `@primereact/ui/timeline`
45
+ - `ToggleInlineButton`: `@primereact/ui/togglebutton`
46
+ - `UserMenu`: `@primereact/ui/menu`
25
47
 
26
48
  ## Non-PrimeReact wrappers
27
49
 
28
50
  - `AdminPageLayout`: `React context + custom shell`
29
- - `AsyncSelect`: `react-select/async`
30
- - `CKEditorInput`: `@ckeditor/ckeditor5-react`
51
+ - `BarChart`: `chart.js`
52
+ - `CKEditorInput`: `ckeditor`
53
+ - `DonutChart`: `chart.js`
31
54
  - `ErrorMessage`: `@hookform/error-message`
32
- - `HiddenField`: `react-hook-form`
33
- - `MapPicker`: `next/dynamic`
34
- - `MapPickerClient`: `react-leaflet`
35
- - `Select`: `react-select`
36
- - `TimePicker`: `react-datepicker`
55
+ - `LineChart`: `chart.js`
56
+ - `MapPicker`: `leaflet`
57
+ - `MapPickerClient`: `leaflet`
58
+ - `MapPickerOSM`: `leaflet`
37
59
 
38
60
  ## Custom components
39
61
 
@@ -41,56 +63,32 @@ Which base library each component wraps.
41
63
  - `AdminPageHeader`
42
64
  - `AdminPageLayoutShell`
43
65
  - `AppShell`
44
- - `Avatar`
45
- - `BarChart`
46
66
  - `Breadcrumbs`
47
- - `CardSkeleton`
48
67
  - `ChangePasswordForm`
49
- - `ColorPickerInput`
50
- - `Combobox`
51
68
  - `CommandPalette`
52
- - `CurrencyInput`
69
+ - `ConfirmDialog`
53
70
  - `DataState`
54
- - `DatePresets`
55
- - `DateRangeInput`
56
71
  - `DescriptionList`
57
72
  - `DirtyFormGuard`
58
- - `DonutChart`
59
- - `Drawer`
60
73
  - `EmptyState`
61
74
  - `ErrorBoundary`
75
+ - `FieldShell`
62
76
  - `FileDropzone`
77
+ - `FilterPannel`
63
78
  - `ForgotPasswordForm`
64
79
  - `FormActionsBar`
65
80
  - `FormFieldRender`
66
81
  - `FormSection`
67
- - `FormWizard`
68
- - `LineChart`
69
- - `Loading`
82
+ - `HiddenField`
70
83
  - `LoginForm`
71
- - `MapPickerOSM`
72
- - `Modal`
73
- - `OtpInput`
74
- - `PageTabs`
75
84
  - `PageTitle`
76
85
  - `Pagination`
77
- - `PasswordInput`
78
- - `PhoneInput`
79
- - `RadioGroup`
80
- - `RangeSlider`
81
- - `RatingInput`
82
86
  - `RenderField`
83
87
  - `ResetPasswordForm`
84
88
  - `RichTextPreview`
85
- - `SearchInput`
86
89
  - `StatCard`
87
90
  - `StatusBadge`
88
- - `Switch`
89
91
  - `TableFilterField`
90
- - `TableSkeleton`
91
92
  - `TableToolbar`
92
- - `Tag`
93
- - `TagsInput`
94
- - `Timeline`
95
93
  - `UploadFilesPreview`
96
- - `UserMenu`
94
+ - `useFieldController`
@@ -0,0 +1,138 @@
1
+ # Field Controller
2
+
3
+ Shared react-hook-form contract for every form wrapper in `@mantis-core/ui` (PR11). One hook —
4
+ `useFieldController` — wires RHF's `useController` and the field's presentation shell so each
5
+ wrapper only maps `field.value`/`field.onChange` into its own component's shape.
6
+
7
+ Source: `packages/mantis-core-ui/src/components/Forms/useFieldController.ts` and `FieldShell.tsx`.
8
+
9
+ ## `FieldControllerProps`
10
+
11
+ Form wrappers extend this directly as their own props — there is **no** `controller={{ ... }}`
12
+ object prop. `TFieldValues`/`TName` are generic over the caller's form so `name` is
13
+ autocompleted/validated against real fields, and `defaultValue`/`rules` are typed by path.
14
+
15
+ ```ts
16
+ interface FieldControllerProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> {
17
+ name: TName;
18
+ control?: Control<TFieldValues>;
19
+ rules?: Omit<RegisterOptions<TFieldValues, TName>, 'valueAsNumber' | 'valueAsDate' | 'setValueAs' | 'disabled'>;
20
+ defaultValue?: FieldPathValue<TFieldValues, TName>;
21
+ shouldUnregister?: boolean;
22
+ disabled?: boolean; // OR-ed with the form's isSubmitting state
23
+ label?: string;
24
+ labelMode?: LabelMode; // 'ifta' | 'float' | 'beside' | 'top' | 'none' — defaults to MantisThemeProvider (ifta)
25
+ floatVariant?: FloatVariant; // 'over' | 'in' | 'on' — only used when labelMode='float'
26
+ addonBefore?: ReactNode;
27
+ addonAfter?: ReactNode;
28
+ variant?: InputVariant; // 'outlined' | 'filled' — defaults to MantisThemeProvider
29
+ size?: FieldSize; // 'small' | 'large' — defaults to MantisThemeProvider
30
+ fluid?: boolean; // full-width override for this field
31
+ required?: boolean; // presentational only — validation is `rules`
32
+ helpText?: string;
33
+ id?: string; // override the generated id used to wire input <-> label <-> aria
34
+ }
35
+ ```
36
+
37
+ Usage — no `controller` wrapper, props are flat:
38
+
39
+ ```tsx
40
+ <TextField name='email' control={control} label='Email' rules={{ required: 'Required' }} />
41
+ ```
42
+
43
+ ### `ChoiceFieldControllerProps` (bucket B: toggles, groups, ranges)
44
+
45
+ For non-text-box controls (checkboxes, radio groups, rating, range), text-box-only affordances are
46
+ removed **at the type level** so passing them fails to compile, not just render wrong:
47
+
48
+ ```ts
49
+ type ChoiceFieldControllerProps<TFieldValues, TName> = Omit<
50
+ FieldControllerProps<TFieldValues, TName>,
51
+ 'labelMode' | 'floatVariant' | 'addonBefore' | 'addonAfter' | 'variant'
52
+ > & {
53
+ labelMode?: 'beside' | 'top' | 'none'; // 'beside' default for toggles, 'top' for groups
54
+ };
55
+ ```
56
+
57
+ A `<CheckboxField labelMode='float'>` or an addon on a `<RatingInput>` does not compile — `ifta` /
58
+ `float` / `InputGroup` / `variant` don't apply to these controls.
59
+
60
+ ## `FieldShell` anatomy
61
+
62
+ `FieldShell` owns label + addon + help + error composition; every wrapper supplies only its input
63
+ node as `children`.
64
+
65
+ ```ts
66
+ interface FieldShellProps {
67
+ id: string;
68
+ label?: string;
69
+ required?: boolean;
70
+ helpText?: string;
71
+ errorMessage?: string;
72
+ labelMode?: LabelMode;
73
+ floatVariant?: FloatVariant;
74
+ addonBefore?: ReactNode;
75
+ addonAfter?: ReactNode;
76
+ children: ReactNode;
77
+ }
78
+ ```
79
+
80
+ - **Label modes** (`LabelMode = 'ifta' | 'float' | 'beside' | 'top' | 'none'`):
81
+ - `ifta` — wraps input + label in PR11 `IftaLabel`.
82
+ - `float` — wraps input + label in PR11 `FloatLabel` (position per `floatVariant`: `over` / `in` / `on`).
83
+ - `beside` — label renders next to the control (row layout).
84
+ - `top` — label renders above the control.
85
+ - `none` — no label rendered even if `label` text is provided elsewhere.
86
+ - **Addons** — `addonBefore`/`addonAfter` wrap the (already labeled) control in PR11's
87
+ `InputGroup.Root`, addons outer, labeled control inner.
88
+ - **Fluid** — resolved from the `useFieldConfig()` context (not a per-shell prop); when on, wraps
89
+ the composed control in PR11's `<Fluid>`.
90
+ - **Help/error** — rendered below the control as `<small id="${id}-help">` /
91
+ `<small id="${id}-error">`. Both render independently — if `helpText` and `errorMessage` are both
92
+ truthy, both `<small>` elements show at once; there is no suppression. The only precedence is in
93
+ `aria-describedby`, which prefers the error (see Aria wiring below).
94
+ - **Required marker** — a presentational ` *` appended to the label, `aria-hidden`.
95
+
96
+ ### Aria wiring
97
+
98
+ `useFieldController` owns aria, not `FieldShell`: PR11's `invalid` prop drives styling only, it does
99
+ **not** emit `aria-invalid`. The hook returns an `aria` object —
100
+ `{ 'aria-invalid': fieldState.invalid || undefined, 'aria-describedby': errorId | helpId | undefined }`
101
+ (error id wins over help id when both are present) — spread onto the actual input/trigger element.
102
+
103
+ ## `useFieldController` return shape
104
+
105
+ ```ts
106
+ const f = useFieldController({ name, control, rules, defaultValue, shouldUnregister, disabled, helpText, id, variant, size, fluid });
107
+ // f.field, f.fieldState, f.formState — raw RHF controller result
108
+ // f.id, f.errorId, f.helpId — stable ids for FieldShell + aria
109
+ // f.variant, f.size, f.fluid — resolved (prop ?? MantisThemeProvider config)
110
+ // f.invalid — fieldState.invalid
111
+ // f.disabled — disabled || formState.isSubmitting
112
+ // f.errorMessage — fieldState.error?.message
113
+ // f.aria — { 'aria-invalid', 'aria-describedby' }
114
+ ```
115
+
116
+ ## How to build a new form wrapper
117
+
118
+ Canonical pattern (from `TextField.tsx`):
119
+
120
+ 1. Accept `FieldControllerProps<TFieldValues, TName>` (or `ChoiceFieldControllerProps` for bucket B)
121
+ intersected with the underlying PR11 primitive's own extra props (Omit the primitive's
122
+ controlled/state props — `value`, `onChange`, `invalid`, `disabled`, etc. — since the hook owns
123
+ those).
124
+ 2. Destructure the controller/presentation props out of `props`; call `useFieldController` with
125
+ `name, control, rules, defaultValue, shouldUnregister, disabled, helpText, id, variant, size, fluid`.
126
+ 3. Render `<FieldShell id={f.id} label={label} labelMode={labelMode} floatVariant={floatVariant}
127
+ addonBefore={addonBefore} addonAfter={addonAfter} required={required} helpText={helpText}
128
+ errorMessage={f.errorMessage}>` around the actual PR11 input.
129
+ 4. Wire the PR11 primitive to `f.field` (`name`, `value`, `onChange`/`onValueChange`, `onBlur`,
130
+ `ref`) and `f.id` (`id`), plus `invalid={f.invalid}`, `disabled={f.disabled}`,
131
+ `variant={f.variant}`, `size={f.size}`, `fluid={f.fluid}`, and spread `{...f.aria}` onto the
132
+ element that owns focus (native input, or the trigger button for portal-based compounds like
133
+ `Select`).
134
+ 5. Spread any remaining `...rest` primitive props straight onto the PR11 element as an escape hatch.
135
+
136
+ Portal-based compounds (e.g. `Select`) have no native blur — call `f.field.onBlur()` from the
137
+ compound's `onOpenChange` (fired on close) instead, and put id/aria on the trigger element rather
138
+ than a bare `<input>`.
@@ -7,46 +7,27 @@
7
7
  ## All partials
8
8
 
9
9
  ```scss
10
- @use "@mantis-core/styles/scss/buttons.scss";
11
10
  @use "@mantis-core/styles/scss/ckeditor.scss";
12
11
  @use "@mantis-core/styles/scss/confirm-dialog.scss";
13
12
  @use "@mantis-core/styles/scss/data-state.scss";
14
13
  @use "@mantis-core/styles/scss/file-dropzone.scss";
15
14
  @use "@mantis-core/styles/scss/form-actions.scss";
16
- @use "@mantis-core/styles/scss/inputs.scss";
17
15
  @use "@mantis-core/styles/scss/rich-text-preview.scss";
18
- @use "@mantis-core/styles/scss/select-button.scss";
19
- @use "@mantis-core/styles/scss/select.scss";
20
16
  @use "@mantis-core/styles/scss/status-badge.scss";
21
- @use "@mantis-core/styles/scss/switch.scss";
22
17
  @use "@mantis-core/styles/scss/table.scss";
23
18
  ```
24
19
 
25
20
  ## Per component
26
21
 
27
- - `AsyncSelect`: `scss/select.scss`
28
- - `Button`: `scss/buttons.scss`
29
22
  - `CKEditorInput`: `scss/ckeditor.scss`
30
23
  - `ConfirmDialog`: `scss/confirm-dialog.scss`
31
- - `CurrencyInput`: `scss/inputs.scss`
32
24
  - `DataState`: `scss/data-state.scss`
33
- - `DateInput`: `scss/inputs.scss`
34
- - `DateRangeInput`: `scss/inputs.scss`
35
- - `DropDown`: `scss/inputs.scss`
36
25
  - `FileDropzone`: `scss/file-dropzone.scss`
37
26
  - `FormActionsBar`: `scss/form-actions.scss`
38
- - `MultiSelect`: `scss/inputs.scss`
39
- - `NumberInput`: `scss/inputs.scss`
27
+ - `MantisDataTable`: `scss/table.scss`
40
28
  - `PaginatedTable`: `scss/table.scss`
41
- - `PasswordInput`: `scss/inputs.scss`
42
29
  - `RichTextPreview`: `scss/rich-text-preview.scss`
43
- - `Select`: `scss/select.scss`
44
30
  - `StatusBadge`: `scss/status-badge.scss`
45
- - `Switch`: `scss/switch.scss`
46
- - `TextArea`: `scss/inputs.scss`
47
- - `TextInput`: `scss/inputs.scss`
48
- - `TimePicker`: `scss/inputs.scss`
49
- - `ToggleInlineButton`: `scss/select-button.scss`
50
31
 
51
32
  ## Notes
52
33
 
package/llms.txt CHANGED
@@ -3,104 +3,102 @@
3
3
  # Each line: Name — whenToUse — import — doc
4
4
 
5
5
  ## forms
6
- - AsyncSelectSearchable select that loads options asynchronously via loadOptions callback. — `@mantis-core/ui/components/Forms/AsyncSelect` — docs/components/async-select.md
7
- - CKEditorInputRich-text WYSIWYG editor (CKEditor 5) wired to react-hook-form; emits HTML string. — `@mantis-core/ui/components/Forms/CKEditorInput` — docs/components/ckeditor-input.md
8
- - ColorPickerInputColor picker (PrimeReact ColorPicker, hex format) wired to react-hook-form. — `@mantis-core/ui/components/Forms/ColorPickerInput` — docs/components/color-picker-input.md
9
- - ComboboxAutocomplete text input (PrimeReact AutoComplete) wired to react-hook-form; pass suggestions via the suggestions prop. — `@mantis-core/ui/components/Forms/Combobox` — docs/components/combobox.md
10
- - CurrencyInputNumeric input pre-configured for currency display (mode=currency). — `@mantis-core/ui/components/Forms/CurrencyInput` — docs/components/currency-input.md
11
- - DateInputSingle date picker (PrimeReact Calendar, locale=es, format=dd/mm/yy). — `@mantis-core/ui/components/Forms/DateInput` — docs/components/date-input.md
12
- - DatePresetsRow of preset buttons (Hoy, 7 días, 30 días, Este mes) that fire onChange with a [Date, Date] range; pair with DateRangeInput. — `@mantis-core/ui/components/Forms/DatePresets` — docs/components/date-presets.md
13
- - DateRangeInputDate range picker that stores [startDate, endDate] array; selectionMode is locked to 'range'. — `@mantis-core/ui/components/Forms/DateRangeInput` — docs/components/date-range-input.md
14
- - DirtyFormGuardBlocks navigation when a react-hook-form has unsaved changes; also available as useDirtyFormGuard hook. — `@mantis-core/ui/components/Forms/DirtyFormGuard` — docs/components/dirty-form-guard.md
15
- - DropDownPrimeReact Dropdown (single select with filter) wired to react-hook-form; use when you need PrimeReact styling over react-select. — `@mantis-core/ui/components/Forms/DropDown` — docs/components/drop-down.md
16
- - ErrorMessage — Displays a validation error string; use standalone when not using FormFieldRender. — `@mantis-core/ui/components/Forms/ErrorMessage` — docs/components/error-message.md
17
- - FileDropzone — Drag-and-drop file input with validation (type, size, count); supports react-hook-form mode and plain controlled mode. — `@mantis-core/ui/components/Forms/FileDropzone` — docs/components/file-dropzone.md
6
+ - AutoCompleteFieldAsync (or sync) autocomplete text field wired to react-hook-form via `loadOptions`, with optional free-text `creatable` mode. Absorbs the former AsyncSelect + Combobox. — `@mantis-core/ui/components/Forms/AutoCompleteField` — docs/components/auto-complete-field.md
7
+ - CheckboxFieldSingle boolean checkbox wired to react-hook-form. — `@mantis-core/ui/components/Forms/CheckboxField` — docs/components/checkbox-field.md
8
+ - CKEditorInputRich-text WYSIWYG editor (CKEditor 5) wired to react-hook-form; emits an HTML string. — `@mantis-core/ui/components/Forms/CKEditorInput` — docs/components/ckeditor-input.md
9
+ - ColorPickerInputRHF-bound color picker over PR11's compound InputColor (area + sliders + swatch + eyedropper + hex input); value is a hex string. — `@mantis-core/ui/components/Forms/ColorPickerInput` — docs/components/color-picker-input.md
10
+ - DateFieldSingle date, date-range, or time-only picker wired to react-hook-form; one wrapper covers all three via `selectionMode`/`timeOnly`/`showTime`. — `@mantis-core/ui/components/Forms/DateField` — docs/components/date-field.md
11
+ - DatePresetsRow of quick-range preset buttons (Today, 7 days, 30 days, This month) that fire onChange with a [Date, Date] tuple. Not RHF-bound pair with a `DateField` in `selectionMode="range"`. — `@mantis-core/ui/components/Forms/DatePresets` — docs/components/date-presets.md
12
+ - DirtyFormGuardBlocks tab-close/reload when a react-hook-form has unsaved changes; render it declaratively, or use the underlying useDirtyFormGuard hook to also guard programmatic navigation. — `@mantis-core/ui/components/Forms/DirtyFormGuard` — docs/components/dirty-form-guard.md
13
+ - ErrorMessageStandalone validation-error text for one named react-hook-form field, read from form context; use when composing a custom layout instead of FormFieldRender. — `@mantis-core/ui/components/Forms/ErrorMessage` — docs/components/error-message.md
14
+ - FieldShellPresentation primitive for label + addon + help/error composition around one input; every FieldControllerProps-based field wrapper renders it internally — reach for it directly only when hand-building a new wrapper (see field-controller.md). — `@mantis-core/ui/components/Forms/FieldShell` — docs/components/field-shell.md
15
+ - FileDropzoneDrag-and-drop file input with validation (type, size, count); supports a react-hook-form binding or plain controlled value/onChange. — `@mantis-core/ui/components/Forms/FileDropzone` — docs/components/file-dropzone.md
18
16
  - FormActionsBar — Sticky-capable action bar with primary/secondary buttons and optional left/right slots for form pages. — `@mantis-core/ui/components/Forms/FormActionsBar` — docs/components/form-actions-bar.md
19
- - FormFieldRender — Wrapper that renders a label, the input slot, and a validation error message; use to compose any form control. — `@mantis-core/ui/components/Forms/FormFieldRender` — docs/components/form-field-render.md
20
- - FormWizard — Multi-step form navigator with step indicator and per-step validation; must render inside a FormProvider, parent owns the <form onSubmit>. — `@mantis-core/ui/components/Forms/FormWizard` — docs/components/form-wizard.md
21
- - HiddenField — Registers a hidden value in react-hook-form without rendering any UI. — `@mantis-core/ui/components/Forms/HiddenField` — docs/components/hidden-field.md
22
- - MultiSelectMulti-value select (PrimeReact) wired to react-hook-form. — `@mantis-core/ui/components/Forms/MultiSelect` — docs/components/multi-select.md
23
- - NumberInput — Numeric input (integer or decimal) wired to react-hook-form. — `@mantis-core/ui/components/Forms/NumberInput` — docs/components/number-input.md
24
- - OtpInput — One-time password input (PrimeReact InputOtp) wired to react-hook-form. — `@mantis-core/ui/components/Forms/OtpInput` — docs/components/otp-input.md
25
- - PasswordInput — Password field with show/hide toggle; Controller pattern, same API as TextInput. — `@mantis-core/ui/components/Forms/PasswordInput` — docs/components/password-input.md
26
- - PhoneInput — Masked phone number input; default mask (999) 999-9999. — `@mantis-core/ui/components/Forms/PhoneInput` — docs/components/phone-input.md
27
- - RadioGroup — Renders a set of radio buttons from an options array; value is the selected option's value. — `@mantis-core/ui/components/Forms/RadioGroup` — docs/components/radio-group.md
28
- - RangeSlider — Dual-handle range slider that stores a [min, max] tuple; backed by PrimeReact Slider. — `@mantis-core/ui/components/Forms/RangeSlider` — docs/components/range-slider.md
29
- - RatingInput — Star rating input (PrimeReact Rating) wired to react-hook-form; stores numeric value. — `@mantis-core/ui/components/Forms/RatingInput` — docs/components/rating-input.md
30
- - RenderField — Low-level escape hatch: connects any custom UI to react-hook-form via a render prop. — `@mantis-core/ui/components/Forms/RenderField` — docs/components/render-field.md
31
- - SearchInput — Debounced text input that calls onSearch instead of using react-hook-form; ideal for live table/list filtering. — `@mantis-core/ui/components/Forms/SearchInput` — docs/components/search-input.md
32
- - Select — Single-value searchable select (react-select); supports creatable mode. — `@mantis-core/ui/components/Forms/Select` — docs/components/select.md
33
- - SwitchToggle/boolean switch wired to react-hook-form. — `@mantis-core/ui/components/Forms/Switch` — docs/components/switch.md
34
- - TagsInput — Chip/tags input (PrimeReact Chips) wired to react-hook-form; stores value as string[]. — `@mantis-core/ui/components/Forms/TagsInput` — docs/components/tags-input.md
17
+ - FormFieldRender — Composes a label, a render-prop input slot, and an inline ErrorMessage for one field; use to wrap a custom/non-Mantis input with the same label+error layout as the field wrappers. — `@mantis-core/ui/components/Forms/FormFieldRender` — docs/components/form-field-render.md
18
+ - FormWizard — Multi-step form navigator with a PR11 Stepper step indicator and per-step field validation; must render inside a FormProvider, parent owns the <form onSubmit>. — `@mantis-core/ui/components/Forms/FormWizard` — docs/components/form-wizard.md
19
+ - HiddenField — Registers a react-hook-form value with no visible UI. — `@mantis-core/ui/components/Forms/HiddenField` — docs/components/hidden-field.md
20
+ - MaskFieldGeneric masked text input (digit/letter/alphanumeric tokens) wired to react-hook-form; value is the masked display string. — `@mantis-core/ui/components/Forms/MaskField` — docs/components/mask-field.md
21
+ - NumberField — Numeric input (integer, decimal, or currency) wired to react-hook-form. — `@mantis-core/ui/components/Forms/NumberField` — docs/components/number-field.md
22
+ - OtpInput — RHF-bound one-time-password input over PR11's compound InputOtp; renders `length` segmented boxes. — `@mantis-core/ui/components/Forms/OtpInput` — docs/components/otp-input.md
23
+ - PasswordInput — RHF-bound password field over PR11 InputPassword with a native show/hide toggle and a lightweight strength meter. — `@mantis-core/ui/components/Forms/PasswordInput` — docs/components/password-input.md
24
+ - PhoneInput — Phone-number preset of MaskField; defaults to a US-style (999) 999-9999 mask. — `@mantis-core/ui/components/Forms/PhoneInput` — docs/components/phone-input.md
25
+ - RadioGroup — Single-choice radio group over PR11's RadioButtonGroup; value is the selected option's value. — `@mantis-core/ui/components/Forms/RadioGroup` — docs/components/radio-group.md
26
+ - RangeSlider — RHF-bound slider over PR11's compound Slider; single-handle by default, dual-handle range when the field holds a [number, number] tuple. — `@mantis-core/ui/components/Forms/RangeSlider` — docs/components/range-slider.md
27
+ - RatingInput — RHF-bound star rating over PR11's compound Rating; stores a numeric value. — `@mantis-core/ui/components/Forms/RatingInput` — docs/components/rating-input.md
28
+ - RenderField — 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. — `@mantis-core/ui/components/Forms/RenderField` — docs/components/render-field.md
29
+ - SearchInput — RHF-bound search box over PR11 InputText with a search icon and a debounced onSearch callback; ideal for live table/list filtering. — `@mantis-core/ui/components/Forms/SearchInput` — docs/components/search-input.md
30
+ - SelectField — 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. — `@mantis-core/ui/components/Forms/SelectField` — docs/components/select-field.md
31
+ - SwitchFieldBoolean on/off toggle wired to react-hook-form. — `@mantis-core/ui/components/Forms/SwitchField` — docs/components/switch-field.md
32
+ - TagsInput — RHF-bound tag/chip input over PR11's compound InputTags; stores value as string[]. — `@mantis-core/ui/components/Forms/TagsInput` — docs/components/tags-input.md
35
33
  - TextArea — Multi-line text field wired to react-hook-form. — `@mantis-core/ui/components/Forms/TextArea` — docs/components/text-area.md
36
- - TextInput — Single-line text field wired to react-hook-form. — `@mantis-core/ui/components/Forms/TextInput` — docs/components/text-input.md
37
- - TimePickerTime-only picker (15-min intervals) wired to react-hook-form; renders as a styled InputText trigger. — `@mantis-core/ui/components/Forms/TimePicker` — docs/components/time-picker.md
38
- - ToggleCheckbox-based boolean toggle wired to react-hook-form with configurable on/off labels. — `@mantis-core/ui/components/Forms/Toggle` — docs/components/toggle.md
39
- - ToggleInlineButtonSegmented button group (single or multi-select) wired to react-hook-form via a controller prop. — `@mantis-core/ui/components/Forms/ToggleInlineButton` — docs/components/toggle-inline-button.md
40
- - UploadFilesPreview — Drag-and-drop upload zone with live preview grid, drag-to-reorder, and async upload queue; designed for image galleries. — `@mantis-core/ui/components/Forms/UploadFilesPreview` — docs/components/upload-files-preview.md
34
+ - TextField — Single-line text field wired to react-hook-form. — `@mantis-core/ui/components/Forms/TextField` — docs/components/text-field.md
35
+ - ToggleInlineButtonSegmented single- or multi-choice control over PR11's ToggleButtonGroup; pass `multiple` for array-value mode. — `@mantis-core/ui/components/Forms/ToggleInlineButton` — docs/components/toggle-inline-button.md
36
+ - UploadFilesPreviewDrag-and-drop upload zone with live preview grid, drag-to-reorder, and async upload queue; designed for image galleries, not react-hook-form bound. — `@mantis-core/ui/components/Forms/UploadFilesPreview` — docs/components/upload-files-preview.md
37
+ - useFieldControllerHook every RHF field wrapper calls internally to wire useController + a stable id/aria/disabled/error-message resolution; call it directly only when hand-building a new field wrapper (see field-controller.md). — `@mantis-core/ui/components/Forms/useFieldController` — docs/components/use-field-controller.md
41
38
 
42
39
  ## tables
43
- - ActionColumn — Factory function that returns a PrimeReact Column with a dropdown action menu; call as ActionColumn(itemsFn, props). — `@mantis-core/ui/components/Tables/ActionColumn` — docs/components/action-column.md
44
- - FilterPannel — Slide-in sidebar filter panel for tables; wraps children in FormProvider and calls onApplyFilter with cleaned form data. — `@mantis-core/ui/components/Tables/FilterPannel` — docs/components/filter-pannel.md
45
- - IndexColumn — Returns a PrimeReact Column that renders the row's 1-based visual index; call as IndexColumn(colProps). — `@mantis-core/ui/components/Tables/IndexColumn` — docs/components/index-column.md
46
- - MenuButtonDropdown button with a list of actions; used inside table rows. — `@mantis-core/ui/components/Tables/MenuButton` — docs/components/menu-button.md
47
- - MultiSelectFilterPrimeReact MultiSelect wired for use as a DataTable column filter template. — `@mantis-core/ui/components/Tables/filters/MultiSelectFilter` — docs/components/multi-select-filter.md
48
- - PaginatedTableGeneric server-side paginated DataTable with built-in index column, action column, and Mantis Core CSS. Wraps PrimeReact DataTable. — `@mantis-core/ui/components/Tables/PaginatedTable` — docs/components/paginated-table.md
49
- - TableFilterFieldWraps a form control inside FilterPannel with a label; provides consistent layout. — `@mantis-core/ui/components/table-filter-field` — docs/components/table-filter-field.md
50
- - TableToolbarHeader bar above a table showing title, record count, and action buttons slot. — `@mantis-core/ui/components/table-toolbar` — docs/components/table-toolbar.md
40
+ - ActionColumn — Factory that returns a row-action `ColumnDef` for MantisDataTable/PaginatedTable's `columns` array; each row's `body` renders a `MenuButton` populated by `items(row)`. — `@mantis-core/ui/components/Tables/ActionColumn` — docs/components/action-column.md
41
+ - FilterPannel — Slide-in filter sidebar for tables; wraps RHF-bound filter fields in their own `FormProvider` and calls `onApplyFilter` with the cleaned form data. — `@mantis-core/ui/components/Tables/FilterPannel` — docs/components/filter-pannel.md
42
+ - IndexColumn — Factory that returns a 1-based row-number `ColumnDef` for MantisDataTable/PaginatedTable's `columns` array. — `@mantis-core/ui/components/Tables/IndexColumn` — docs/components/index-column.md
43
+ - MantisDataTableThe 90% shortcut over PR11's compound DataTable — one flat `columns: ColumnDef[]` array renders the whole TableContainer→Table→THead→TBody→EmptyTBody tree with striped rows + gridlines. Default table for any grid; drop to `PaginatedTable` for pagination + index/action columns baked in. — `@mantis-core/ui/components/Tables/MantisDataTable` — docs/components/mantis-data-table.md
44
+ - MenuButtonRow-action overlay menu a trigger button that opens a popup list of actions; used inside `actionColumn`/table row cells, or standalone. — `@mantis-core/ui/components/Tables/MenuButton` — docs/components/menu-button.md
45
+ - MultiSelectFilterMulti-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. — `@mantis-core/ui/components/Tables/filters/MultiSelectFilter` — docs/components/multi-select-filter.md
46
+ - PaginatedTableThin preset over MantisDataTable with `paginator` on by default plus optional index/action columns — the default table shell for admin list pages. — `@mantis-core/ui/components/Tables/PaginatedTable` — docs/components/paginated-table.md
47
+ - TableFilterFieldWraps a form control with a `<label>` inside a `FilterPannel`, providing consistent layout. — `@mantis-core/ui/components/table-filter-field` — docs/components/table-filter-field.md
48
+ - TableToolbar — Header bar above a table showing title, record-count meta, and an action buttons slot. — `@mantis-core/ui/components/table-toolbar` — docs/components/table-toolbar.md
51
49
 
52
50
  ## pages
53
- - AdminPageConfigurator — Sets the page title, description, and breadcrumbs in the admin layout shell via context; wrap each page's content with this. — `@mantis-core/ui/components/pages/admin-layout/AdminPageConfigurator` — docs/components/admin-page-configurator.md
54
- - AdminPageHeader — Gradient page header with title, optional description, breadcrumbs, and right-side actions slot; rendered by AdminPageLayoutShell — avoid rendering directly inside feature views. — `@mantis-core/ui/components/pages/AdminPageHeader` — docs/components/admin-page-header.md
55
- - AdminPageLayoutShell — Root layout shell for admin pages; renders AdminPageHeader from context set by AdminPageConfigurator and provides the layout grid. — `@mantis-core/ui/components/pages/admin-layout/AdminPageLayoutShell` — docs/components/admin-page-layout-shell.md
51
+ - AdminPageConfigurator — Sets the page title, description, breadcrumbs, and actions in the admin layout shell via context; wrap each page's content with this. — `@mantis-core/ui/components/pages/admin-layout/AdminPageConfigurator` — docs/components/admin-page-configurator.md
52
+ - AdminPageHeader — Gradient page header with title, optional description, breadcrumbs, and a right-side actions slot; rendered by AdminPageLayoutShell — avoid rendering directly inside feature views. — `@mantis-core/ui/components/pages/AdminPageHeader` — docs/components/admin-page-header.md
53
+ - AdminPageLayoutShell — Root layout shell for admin pages; renders AdminPageHeader from context set by AdminPageConfigurator and provides the page grid/max-width. — `@mantis-core/ui/components/pages/admin-layout/AdminPageLayoutShell` — docs/components/admin-page-layout-shell.md
56
54
  - AppShell — Full-page app shell with responsive sidebar nav, topbar, and mobile drawer; use as the root layout wrapper for authenticated pages. — `@mantis-core/ui/components/pages/app-shell/AppShell` — docs/components/app-shell.md
57
55
  - Breadcrumbs — Standalone breadcrumb nav; renders nothing when items is empty. — `@mantis-core/ui/components/pages/app-shell/Breadcrumbs` — docs/components/breadcrumbs.md
58
56
  - FormSection — Bordered card section with a header (title + description + icon) and a padded body; groups related form fields. — `@mantis-core/ui/components/pages/FormSection` — docs/components/form-section.md
59
57
  - PageTitle — Centered display-font heading for public-facing pages. — `@mantis-core/ui/components/pages/PageTitle` — docs/components/page-title.md
60
58
 
61
59
  ## maps
62
- - MapPicker — Interactive Leaflet map that lets the user click to select a lat/lng coordinate; SSR-safe via next/dynamic. — `@mantis-core/ui/components/Maps/MapPicker` — docs/components/map-picker.md
63
- - MapPickerClient — Client-only Leaflet map that lets the user click to pick a coordinate; controlled via initialLat/initialLng. — `@mantis-core/ui/components/Maps/MapPickerClient` — docs/components/map-picker-client.md
64
- - MapPickerOSM — Script-injected Leaflet map (no SSR bundle cost) with click/drag marker and a save-location button. — `@mantis-core/ui/components/Maps/MapPickerOSM` — docs/components/map-picker-osm.md
60
+ - MapPicker — SSR-safe entry point for the Leaflet lat/lng picker; lazy-loads MapPickerClient via next/dynamic (ssr:false). — `@mantis-core/ui/components/Maps/MapPicker` — docs/components/map-picker.md
61
+ - MapPickerClient — 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. — `@mantis-core/ui/components/Maps/MapPickerClient` — docs/components/map-picker-client.md
62
+ - MapPickerOSM — Script-injected Leaflet map (no react-leaflet/SSR bundle cost) with a draggable marker and an explicit "save location" button. — `@mantis-core/ui/components/Maps/MapPickerOSM` — docs/components/map-picker-osm.md
65
63
 
66
64
  ## overlays
67
- - Drawer — Slide-in side panel (PrimeReact Sidebar wrapper); defaults to right position. — `@mantis-core/ui/components/overlays/Drawer` — docs/components/drawer.md
68
- - Modal — Dialog/modal (PrimeReact Dialog wrapper); dismissable mask and non-draggable by default. — `@mantis-core/ui/components/overlays/Modal` — docs/components/modal.md
65
+ - Drawer — Controlled slide-in side panel; composes PR11's headless Drawer compound (Root/Portal/Backdrop/Popup/Header/Content/Footer no Positioner, unlike Dialog) behind a simple `open`/`side`/`title`/`footer` API. — `@mantis-core/ui/components/overlays/Drawer` — docs/components/drawer.md
66
+ - Modal — Controlled dialog/modal; composes PR11's headless Dialog compound (Root/Portal/Backdrop/Positioner/Popup/Header/Content/Footer) behind a simple `open`/`title`/`footer` API. — `@mantis-core/ui/components/overlays/Modal` — docs/components/modal.md
69
67
 
70
68
  ## navigation
71
- - CommandPalette — Keyboard-driven command search overlay (Ctrl+K); pair with useCommandPalette hook to wire the shortcut. — `@mantis-core/ui/components/navigation/CommandPalette` — docs/components/command-palette.md
72
- - PageTabs — Tab menu bar for page-level navigation; auto-detects active tab from Next.js pathname when tabs have href. — `@mantis-core/ui/components/navigation/PageTabs` — docs/components/page-tabs.md
69
+ - CommandPalette — Keyboard-driven command search overlay (Ctrl/Cmd+K); pair with the `useCommandPalette` hook to wire the shortcut. — `@mantis-core/ui/components/navigation/CommandPalette` — docs/components/command-palette.md
70
+ - PageTabs — 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. — `@mantis-core/ui/components/navigation/PageTabs` — docs/components/page-tabs.md
73
71
 
74
72
  ## data
75
73
  - DescriptionList — Grid-based label/value list for detail views; supports 1, 2, or 3 columns. — `@mantis-core/ui/components/data/DescriptionList` — docs/components/description-list.md
76
74
  - StatCard — KPI card showing a metric label, large value, optional icon, trend indicator, and footer. — `@mantis-core/ui/components/data/StatCard` — docs/components/stat-card.md
77
- - Timeline — Vertical event timeline backed by PrimeReact Timeline; items render title, description, date, and optional icon. — `@mantis-core/ui/components/data/Timeline` — docs/components/timeline.md
75
+ - Timeline — Vertical event timeline backed by the PR11 Timeline compound; items render a title, description, date, and optional icon/color. — `@mantis-core/ui/components/data/Timeline` — docs/components/timeline.md
78
76
 
79
77
  ## feedback
80
- - Avatar — User avatar that auto-generates initials from a name when no image is supplied; wraps PrimeReact Avatar. — `@mantis-core/ui/components/feedback/Avatar` — docs/components/avatar.md
81
- - CardSkeleton — Animated skeleton for card grid layouts while data loads. — `@mantis-core/ui/components/feedback/CardSkeleton` — docs/components/card-skeleton.md
82
- - ConfirmDialog — Modal confirmation dialog with confirm/cancel buttons and severity-aware styling. — `@mantis-core/ui/components/ui/ConfirmDialog` — docs/components/confirm-dialog.md
83
- - DataState — Full-area empty/error/loading state placeholder for data-fetching views. — `@mantis-core/ui/components/ui/DataState` — docs/components/data-state.md
78
+ - Avatar — User avatar that renders an image or auto-derived initials; composes the PR11 headless Avatar (Root/Image/Fallback). — `@mantis-core/ui/components/feedback/Avatar` — docs/components/avatar.md
79
+ - CardSkeleton — Animated skeleton for card-grid layouts while data loads; composes the PR11 Skeleton primitive. — `@mantis-core/ui/components/feedback/CardSkeleton` — docs/components/card-skeleton.md
80
+ - ConfirmDialog — Confirm/cancel dialog for destructive or non-trivial actions; composed from the migrated Modal + Button. — `@mantis-core/ui/components/ui/ConfirmDialog` — docs/components/confirm-dialog.md
81
+ - DataState — Loading/empty/error/ready placeholder for data-fetching views; renders `children` unchanged when `status="ready"`, otherwise a titled state panel. — `@mantis-core/ui/components/ui/DataState` — docs/components/data-state.md
84
82
  - EmptyState — Centered empty-state placeholder with icon, title, optional description, and action button. — `@mantis-core/ui/components/feedback/EmptyState` — docs/components/empty-state.md
85
- - ErrorBoundary — React error boundary; renders fallback UI on uncaught errors; fallback can be a ReactNode or render function. — `@mantis-core/ui/components/feedback/ErrorBoundary` — docs/components/error-boundary.md
86
- - Loading — Full-screen loading overlay with animated spinner; renders children when loading=false. — `@mantis-core/ui/components/Loaders/Loading` — docs/components/loading.md
87
- - Pagination — Standalone pagination control; use when not relying on PaginatedTable's built-in paginator. — `@mantis-core/ui/components/ui/Pagination` — docs/components/pagination.md
88
- - RichTextPreview — Safely renders a CKEditor HTML string with correct CKEditor content styles. — `@mantis-core/ui/components/ui/RichTextPreview` — docs/components/rich-text-preview.md
89
- - StatusBadge — Colored pill badge to communicate a status or label with semantic tone. — `@mantis-core/ui/components/ui/StatusBadge` — docs/components/status-badge.md
90
- - TableSkeleton — Animated skeleton placeholder that mimics a table grid while data loads. — `@mantis-core/ui/components/feedback/TableSkeleton` — docs/components/table-skeleton.md
91
- - Tag — Styled label chip (PrimeReact Tag wrapper with Mantis Core CSS); use for status labels, categories, or counts. — `@mantis-core/ui/components/feedback/Tag` — docs/components/tag.md
83
+ - ErrorBoundary — React class error boundary; renders fallback UI on uncaught render errors in its children. — `@mantis-core/ui/components/feedback/ErrorBoundary` — docs/components/error-boundary.md
84
+ - Loading — Full-screen loading overlay with a themed spinner; renders children unchanged when not loading. — `@mantis-core/ui/components/Loaders/Loading` — docs/components/loading.md
85
+ - Pagination — Standalone page-number control (custom Tailwind markup, not PrimeReact Paginator); use when not relying on PaginatedTable's built-in paginator. — `@mantis-core/ui/components/ui/Pagination` — docs/components/pagination.md
86
+ - RichTextPreview — Safely renders a CKEditor HTML string (sanitized by default) with CKEditor content styles applied. — `@mantis-core/ui/components/ui/RichTextPreview` — docs/components/rich-text-preview.md
87
+ - StatusBadge — Colored pill badge to communicate a status with semantic tone (e.g. a lead or property status). — `@mantis-core/ui/components/ui/StatusBadge` — docs/components/status-badge.md
88
+ - TableSkeleton — Animated skeleton placeholder that mimics a table grid while data loads; composes the PR11 Skeleton primitive. — `@mantis-core/ui/components/feedback/TableSkeleton` — docs/components/table-skeleton.md
89
+ - Tag — Styled label chip for status labels, categories, or counts; wraps the PR11 Tag primitive. — `@mantis-core/ui/components/feedback/Tag` — docs/components/tag.md
92
90
 
93
91
  ## auth
94
- - ChangePasswordForm — Current + new + confirm password form for authenticated users. — `@mantis-core/ui/components/auth/ChangePasswordForm` — docs/components/change-password-form.md
95
- - ForgotPasswordForm — Email-only form to trigger password reset; caller owns the reset logic. — `@mantis-core/ui/components/auth/ForgotPasswordForm` — docs/components/forgot-password-form.md
96
- - LoginForm — Self-contained login form with email/username + password fields; pass onSubmit to wire signIn/Supabase from the app layer. — `@mantis-core/ui/components/auth/LoginForm` — docs/components/login-form.md
97
- - ResetPasswordForm — New password + confirm form; caller owns token validation and API call. — `@mantis-core/ui/components/auth/ResetPasswordForm` — docs/components/reset-password-form.md
98
- - UserMenu — Topbar user avatar + dropdown with custom nav items and sign-out; no auth lib coupling. — `@mantis-core/ui/components/auth/UserMenu` — docs/components/user-menu.md
92
+ - ChangePasswordForm — Current + new + confirm password form for an authenticated user changing their own password. — `@mantis-core/ui/components/auth/ChangePasswordForm` — docs/components/change-password-form.md
93
+ - ForgotPasswordForm — Email-only form to trigger a password-reset email; caller owns the actual reset request. — `@mantis-core/ui/components/auth/ForgotPasswordForm` — docs/components/forgot-password-form.md
94
+ - LoginForm — Self-contained login form (identifier + password) built on migrated TextField/PasswordInput/Button; pass onSubmit to wire signIn/Supabase from the app layer. — `@mantis-core/ui/components/auth/LoginForm` — docs/components/login-form.md
95
+ - ResetPasswordForm — New password + confirm-password form for a reset-token flow; caller owns token validation and the API call. — `@mantis-core/ui/components/auth/ResetPasswordForm` — docs/components/reset-password-form.md
96
+ - UserMenu — Topbar avatar-triggered dropdown (custom nav items + sign-out); no auth-lib coupling. — `@mantis-core/ui/components/auth/UserMenu` — docs/components/user-menu.md
99
97
 
100
98
  ## buttons
101
- - Button — Primary action button; wraps PrimeReact Button with Mantis Core variant tokens and optional Next.js href navigation. — `@mantis-core/ui/components/Buttons/Button` — docs/components/button.md
99
+ - Button — Primary action button; wraps PR11's `@primereact/ui/button`, mapping the Mantis semantic `variant` to PR11 `severity` and restoring the `label`/`icon`/`loading` affordances PR11 dropped. Supports `href` for Next.js client navigation. — `@mantis-core/ui/components/Buttons/Button` — docs/components/button.md
102
100
 
103
101
  ## charts
104
- - BarChart — Categorical comparisons rendered as a bar chart. Same prop shape as LineChart. — `@mantis-core/ui/components/charts/BarChart` — docs/components/bar-chart.md
105
- - DonutChart — Part-to-whole breakdown rendered as a doughnut chart. — `@mantis-core/ui/components/charts/DonutChart` — docs/components/donut-chart.md
106
- - LineChart — Time-series or trend data rendered as a line chart. Zero-config defaults with full options override. — `@mantis-core/ui/components/charts/LineChart` — docs/components/line-chart.md
102
+ - BarChart — Categorical comparisons rendered as a bar chart, zero-config over chart.js defaults. — `@mantis-core/ui/components/charts/BarChart` — docs/components/bar-chart.md
103
+ - DonutChart — Part-to-whole breakdown rendered as a doughnut chart, zero-config over chart.js defaults. — `@mantis-core/ui/components/charts/DonutChart` — docs/components/donut-chart.md
104
+ - LineChart — Time-series/trend data rendered as a line chart, zero-config over chart.js defaults. — `@mantis-core/ui/components/charts/LineChart` — docs/components/line-chart.md