@mantis-core/ui 0.5.0 → 0.7.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 (378) hide show
  1. package/CHANGELOG.md +155 -0
  2. package/COMPONENTS.md +71 -73
  3. package/README.md +19 -6
  4. package/bin/mantis-llm.mjs +242 -0
  5. package/catalog.json +3031 -0
  6. package/dist/components/Buttons/Button.d.ts +39 -9
  7. package/dist/components/Buttons/Button.d.ts.map +1 -1
  8. package/dist/components/Buttons/Button.js +21 -13
  9. package/dist/components/Buttons/Button.js.map +1 -1
  10. package/dist/components/Forms/AutoCompleteField.d.ts +60 -0
  11. package/dist/components/Forms/AutoCompleteField.d.ts.map +1 -0
  12. package/dist/components/Forms/AutoCompleteField.js +125 -0
  13. package/dist/components/Forms/AutoCompleteField.js.map +1 -0
  14. package/dist/components/Forms/CKEditorInput.d.ts +5 -2
  15. package/dist/components/Forms/CKEditorInput.d.ts.map +1 -1
  16. package/dist/components/Forms/CKEditorInput.js +5 -2
  17. package/dist/components/Forms/CKEditorInput.js.map +1 -1
  18. package/dist/components/Forms/CheckboxField.d.ts +14 -0
  19. package/dist/components/Forms/CheckboxField.d.ts.map +1 -0
  20. package/dist/components/Forms/CheckboxField.js +26 -0
  21. package/dist/components/Forms/CheckboxField.js.map +1 -0
  22. package/dist/components/Forms/ColorPickerInput.d.ts +27 -8
  23. package/dist/components/Forms/ColorPickerInput.d.ts.map +1 -1
  24. package/dist/components/Forms/ColorPickerInput.js +57 -11
  25. package/dist/components/Forms/ColorPickerInput.js.map +1 -1
  26. package/dist/components/Forms/DateField.d.ts +68 -0
  27. package/dist/components/Forms/DateField.d.ts.map +1 -0
  28. package/dist/components/Forms/DateField.js +108 -0
  29. package/dist/components/Forms/DateField.js.map +1 -0
  30. package/dist/components/Forms/DatePresets.d.ts.map +1 -1
  31. package/dist/components/Forms/DatePresets.js +6 -3
  32. package/dist/components/Forms/DatePresets.js.map +1 -1
  33. package/dist/components/Forms/FieldShell.d.ts +24 -0
  34. package/dist/components/Forms/FieldShell.d.ts.map +1 -0
  35. package/dist/components/Forms/FieldShell.js +39 -0
  36. package/dist/components/Forms/FieldShell.js.map +1 -0
  37. package/dist/components/Forms/FileDropzone.d.ts +4 -2
  38. package/dist/components/Forms/FileDropzone.d.ts.map +1 -1
  39. package/dist/components/Forms/FileDropzone.js.map +1 -1
  40. package/dist/components/Forms/FormActionsBar.js +2 -2
  41. package/dist/components/Forms/FormActionsBar.js.map +1 -1
  42. package/dist/components/Forms/FormWizard.d.ts +1 -1
  43. package/dist/components/Forms/FormWizard.d.ts.map +1 -1
  44. package/dist/components/Forms/FormWizard.js +4 -5
  45. package/dist/components/Forms/FormWizard.js.map +1 -1
  46. package/dist/components/Forms/HiddenField.d.ts +12 -6
  47. package/dist/components/Forms/HiddenField.d.ts.map +1 -1
  48. package/dist/components/Forms/HiddenField.js +14 -5
  49. package/dist/components/Forms/HiddenField.js.map +1 -1
  50. package/dist/components/Forms/MaskField.d.ts +28 -0
  51. package/dist/components/Forms/MaskField.d.ts.map +1 -0
  52. package/dist/components/Forms/MaskField.js +74 -0
  53. package/dist/components/Forms/MaskField.js.map +1 -0
  54. package/dist/components/Forms/NumberField.d.ts +14 -0
  55. package/dist/components/Forms/NumberField.d.ts.map +1 -0
  56. package/dist/components/Forms/NumberField.js +51 -0
  57. package/dist/components/Forms/NumberField.js.map +1 -0
  58. package/dist/components/Forms/OtpInput.d.ts +23 -8
  59. package/dist/components/Forms/OtpInput.d.ts.map +1 -1
  60. package/dist/components/Forms/OtpInput.js +37 -8
  61. package/dist/components/Forms/OtpInput.js.map +1 -1
  62. package/dist/components/Forms/PasswordInput.d.ts +22 -9
  63. package/dist/components/Forms/PasswordInput.d.ts.map +1 -1
  64. package/dist/components/Forms/PasswordInput.js +63 -28
  65. package/dist/components/Forms/PasswordInput.js.map +1 -1
  66. package/dist/components/Forms/PhoneInput.d.ts +16 -8
  67. package/dist/components/Forms/PhoneInput.d.ts.map +1 -1
  68. package/dist/components/Forms/PhoneInput.js +13 -6
  69. package/dist/components/Forms/PhoneInput.js.map +1 -1
  70. package/dist/components/Forms/RadioGroup.d.ts +34 -13
  71. package/dist/components/Forms/RadioGroup.d.ts.map +1 -1
  72. package/dist/components/Forms/RadioGroup.js +49 -6
  73. package/dist/components/Forms/RadioGroup.js.map +1 -1
  74. package/dist/components/Forms/RangeSlider.d.ts +26 -11
  75. package/dist/components/Forms/RangeSlider.d.ts.map +1 -1
  76. package/dist/components/Forms/RangeSlider.js +40 -7
  77. package/dist/components/Forms/RangeSlider.js.map +1 -1
  78. package/dist/components/Forms/RatingInput.d.ts +24 -8
  79. package/dist/components/Forms/RatingInput.d.ts.map +1 -1
  80. package/dist/components/Forms/RatingInput.js +41 -9
  81. package/dist/components/Forms/RatingInput.js.map +1 -1
  82. package/dist/components/Forms/SearchInput.d.ts +18 -10
  83. package/dist/components/Forms/SearchInput.d.ts.map +1 -1
  84. package/dist/components/Forms/SearchInput.js +44 -23
  85. package/dist/components/Forms/SearchInput.js.map +1 -1
  86. package/dist/components/Forms/SelectField.d.ts +41 -0
  87. package/dist/components/Forms/SelectField.d.ts.map +1 -0
  88. package/dist/components/Forms/SelectField.js +110 -0
  89. package/dist/components/Forms/SelectField.js.map +1 -0
  90. package/dist/components/Forms/SwitchField.d.ts +14 -0
  91. package/dist/components/Forms/SwitchField.d.ts.map +1 -0
  92. package/dist/components/Forms/SwitchField.js +26 -0
  93. package/dist/components/Forms/SwitchField.js.map +1 -0
  94. package/dist/components/Forms/TagsInput.d.ts +29 -8
  95. package/dist/components/Forms/TagsInput.d.ts.map +1 -1
  96. package/dist/components/Forms/TagsInput.js +53 -9
  97. package/dist/components/Forms/TagsInput.js.map +1 -1
  98. package/dist/components/Forms/TextArea.d.ts +13 -10
  99. package/dist/components/Forms/TextArea.d.ts.map +1 -1
  100. package/dist/components/Forms/TextArea.js +27 -9
  101. package/dist/components/Forms/TextArea.js.map +1 -1
  102. package/dist/components/Forms/TextField.d.ts +14 -0
  103. package/dist/components/Forms/TextField.d.ts.map +1 -0
  104. package/dist/components/Forms/TextField.js +29 -0
  105. package/dist/components/Forms/TextField.js.map +1 -0
  106. package/dist/components/Forms/ToggleInlineButton.d.ts +33 -12
  107. package/dist/components/Forms/ToggleInlineButton.d.ts.map +1 -1
  108. package/dist/components/Forms/ToggleInlineButton.js +56 -6
  109. package/dist/components/Forms/ToggleInlineButton.js.map +1 -1
  110. package/dist/components/Forms/UploadFilesPreview.js +3 -3
  111. package/dist/components/Forms/UploadFilesPreview.js.map +1 -1
  112. package/dist/components/Forms/field-typing.test-d.d.ts +2 -0
  113. package/dist/components/Forms/field-typing.test-d.d.ts.map +1 -0
  114. package/dist/components/Forms/field-typing.test-d.js +24 -0
  115. package/dist/components/Forms/field-typing.test-d.js.map +1 -0
  116. package/dist/components/Forms/useFieldController.d.ts +85 -0
  117. package/dist/components/Forms/useFieldController.d.ts.map +1 -0
  118. package/dist/components/Forms/useFieldController.js +54 -0
  119. package/dist/components/Forms/useFieldController.js.map +1 -0
  120. package/dist/components/Loaders/Loading.d.ts.map +1 -1
  121. package/dist/components/Loaders/Loading.js +3 -2
  122. package/dist/components/Loaders/Loading.js.map +1 -1
  123. package/dist/components/Tables/ActionColumn.d.ts +20 -4
  124. package/dist/components/Tables/ActionColumn.d.ts.map +1 -1
  125. package/dist/components/Tables/ActionColumn.js +24 -5
  126. package/dist/components/Tables/ActionColumn.js.map +1 -1
  127. package/dist/components/Tables/FilterPannel.d.ts +9 -2
  128. package/dist/components/Tables/FilterPannel.d.ts.map +1 -1
  129. package/dist/components/Tables/FilterPannel.js +15 -11
  130. package/dist/components/Tables/FilterPannel.js.map +1 -1
  131. package/dist/components/Tables/IndexColumn.d.ts +12 -3
  132. package/dist/components/Tables/IndexColumn.d.ts.map +1 -1
  133. package/dist/components/Tables/IndexColumn.js +21 -5
  134. package/dist/components/Tables/IndexColumn.js.map +1 -1
  135. package/dist/components/Tables/MantisDataTable.d.ts +45 -0
  136. package/dist/components/Tables/MantisDataTable.d.ts.map +1 -0
  137. package/dist/components/Tables/MantisDataTable.js +63 -0
  138. package/dist/components/Tables/MantisDataTable.js.map +1 -0
  139. package/dist/components/Tables/MenuButton.d.ts +28 -7
  140. package/dist/components/Tables/MenuButton.d.ts.map +1 -1
  141. package/dist/components/Tables/MenuButton.js +20 -10
  142. package/dist/components/Tables/MenuButton.js.map +1 -1
  143. package/dist/components/Tables/PaginatedTable.d.ts +26 -17
  144. package/dist/components/Tables/PaginatedTable.d.ts.map +1 -1
  145. package/dist/components/Tables/PaginatedTable.js +24 -22
  146. package/dist/components/Tables/PaginatedTable.js.map +1 -1
  147. package/dist/components/Tables/cell-presets.d.ts +35 -0
  148. package/dist/components/Tables/cell-presets.d.ts.map +1 -0
  149. package/dist/components/Tables/cell-presets.js +40 -0
  150. package/dist/components/Tables/cell-presets.js.map +1 -0
  151. package/dist/components/Tables/columns.d.ts +40 -0
  152. package/dist/components/Tables/columns.d.ts.map +1 -0
  153. package/dist/components/Tables/columns.js +2 -0
  154. package/dist/components/Tables/columns.js.map +1 -0
  155. package/dist/components/Tables/filters/MultiSelectFilter.d.ts +24 -6
  156. package/dist/components/Tables/filters/MultiSelectFilter.d.ts.map +1 -1
  157. package/dist/components/Tables/filters/MultiSelectFilter.js +19 -6
  158. package/dist/components/Tables/filters/MultiSelectFilter.js.map +1 -1
  159. package/dist/components/auth/ChangePasswordForm.d.ts.map +1 -1
  160. package/dist/components/auth/ChangePasswordForm.js +12 -12
  161. package/dist/components/auth/ChangePasswordForm.js.map +1 -1
  162. package/dist/components/auth/ForgotPasswordForm.d.ts.map +1 -1
  163. package/dist/components/auth/ForgotPasswordForm.js +7 -5
  164. package/dist/components/auth/ForgotPasswordForm.js.map +1 -1
  165. package/dist/components/auth/LoginForm.d.ts +2 -2
  166. package/dist/components/auth/LoginForm.d.ts.map +1 -1
  167. package/dist/components/auth/LoginForm.js +15 -15
  168. package/dist/components/auth/LoginForm.js.map +1 -1
  169. package/dist/components/auth/ResetPasswordForm.d.ts.map +1 -1
  170. package/dist/components/auth/ResetPasswordForm.js +11 -12
  171. package/dist/components/auth/ResetPasswordForm.js.map +1 -1
  172. package/dist/components/auth/UserMenu.d.ts +11 -1
  173. package/dist/components/auth/UserMenu.d.ts.map +1 -1
  174. package/dist/components/auth/UserMenu.js +30 -87
  175. package/dist/components/auth/UserMenu.js.map +1 -1
  176. package/dist/components/data/Timeline.d.ts +2 -2
  177. package/dist/components/data/Timeline.d.ts.map +1 -1
  178. package/dist/components/data/Timeline.js +17 -17
  179. package/dist/components/data/Timeline.js.map +1 -1
  180. package/dist/components/feedback/Avatar.d.ts +4 -2
  181. package/dist/components/feedback/Avatar.d.ts.map +1 -1
  182. package/dist/components/feedback/Avatar.js +4 -4
  183. package/dist/components/feedback/Avatar.js.map +1 -1
  184. package/dist/components/feedback/CardSkeleton.d.ts.map +1 -1
  185. package/dist/components/feedback/CardSkeleton.js +3 -3
  186. package/dist/components/feedback/CardSkeleton.js.map +1 -1
  187. package/dist/components/feedback/TableSkeleton.d.ts.map +1 -1
  188. package/dist/components/feedback/TableSkeleton.js +3 -3
  189. package/dist/components/feedback/TableSkeleton.js.map +1 -1
  190. package/dist/components/feedback/Tag.d.ts +4 -2
  191. package/dist/components/feedback/Tag.d.ts.map +1 -1
  192. package/dist/components/feedback/Tag.js +4 -4
  193. package/dist/components/feedback/Tag.js.map +1 -1
  194. package/dist/components/navigation/CommandPalette.d.ts.map +1 -1
  195. package/dist/components/navigation/CommandPalette.js +5 -2
  196. package/dist/components/navigation/CommandPalette.js.map +1 -1
  197. package/dist/components/navigation/PageTabs.d.ts +10 -8
  198. package/dist/components/navigation/PageTabs.d.ts.map +1 -1
  199. package/dist/components/navigation/PageTabs.js +17 -13
  200. package/dist/components/navigation/PageTabs.js.map +1 -1
  201. package/dist/components/overlays/Drawer.d.ts +16 -3
  202. package/dist/components/overlays/Drawer.d.ts.map +1 -1
  203. package/dist/components/overlays/Drawer.js +9 -5
  204. package/dist/components/overlays/Drawer.js.map +1 -1
  205. package/dist/components/overlays/Modal.d.ts +18 -3
  206. package/dist/components/overlays/Modal.d.ts.map +1 -1
  207. package/dist/components/overlays/Modal.js +13 -5
  208. package/dist/components/overlays/Modal.js.map +1 -1
  209. package/dist/components/pages/app-shell/AppShell.d.ts.map +1 -1
  210. package/dist/components/pages/app-shell/AppShell.js +6 -6
  211. package/dist/components/pages/app-shell/AppShell.js.map +1 -1
  212. package/dist/components/ui/ConfirmDialog.d.ts +1 -2
  213. package/dist/components/ui/ConfirmDialog.d.ts.map +1 -1
  214. package/dist/components/ui/ConfirmDialog.js +10 -4
  215. package/dist/components/ui/ConfirmDialog.js.map +1 -1
  216. package/dist/components/ui/DataState.js +2 -2
  217. package/dist/components/ui/DataState.js.map +1 -1
  218. package/dist/index.d.ts +71 -42
  219. package/dist/index.d.ts.map +1 -1
  220. package/dist/index.js +114 -22
  221. package/dist/index.js.map +1 -1
  222. package/docs/README.md +1 -1
  223. package/docs/components/action-column.md +33 -7
  224. package/docs/components/admin-page-configurator.md +24 -5
  225. package/docs/components/admin-page-header.md +21 -3
  226. package/docs/components/admin-page-layout-shell.md +18 -4
  227. package/docs/components/admin-page-layout.md +34 -5
  228. package/docs/components/app-shell.md +31 -6
  229. package/docs/components/auto-complete-field.md +60 -0
  230. package/docs/components/avatar.md +18 -8
  231. package/docs/components/bar-chart.md +25 -7
  232. package/docs/components/breadcrumbs.md +15 -2
  233. package/docs/components/button.md +34 -15
  234. package/docs/components/card-skeleton.md +9 -3
  235. package/docs/components/change-password-form.md +23 -4
  236. package/docs/components/checkbox-field.md +38 -0
  237. package/docs/components/ckeditor-input.md +40 -8
  238. package/docs/components/color-picker-input.md +19 -8
  239. package/docs/components/command-palette.md +23 -2
  240. package/docs/components/confirm-dialog.md +36 -9
  241. package/docs/components/data-state.md +31 -6
  242. package/docs/components/date-field.md +39 -0
  243. package/docs/components/date-presets.md +19 -5
  244. package/docs/components/description-list.md +20 -2
  245. package/docs/components/dirty-form-guard.md +16 -4
  246. package/docs/components/donut-chart.md +24 -7
  247. package/docs/components/drawer.md +27 -8
  248. package/docs/components/empty-state.md +12 -2
  249. package/docs/components/error-boundary.md +16 -2
  250. package/docs/components/error-message.md +22 -3
  251. package/docs/components/field-shell.md +47 -0
  252. package/docs/components/file-dropzone.md +22 -6
  253. package/docs/components/filter-pannel.md +34 -7
  254. package/docs/components/forgot-password-form.md +23 -5
  255. package/docs/components/form-actions-bar.md +21 -2
  256. package/docs/components/form-field-render.md +36 -8
  257. package/docs/components/form-section.md +13 -1
  258. package/docs/components/form-wizard.md +34 -5
  259. package/docs/components/hidden-field.md +22 -6
  260. package/docs/components/index-column.md +25 -5
  261. package/docs/components/line-chart.md +25 -7
  262. package/docs/components/loading.md +14 -5
  263. package/docs/components/login-form.md +31 -6
  264. package/docs/components/mantis-data-table.md +61 -0
  265. package/docs/components/map-picker-client.md +29 -8
  266. package/docs/components/map-picker-osm.md +27 -9
  267. package/docs/components/map-picker.md +25 -4
  268. package/docs/components/mask-field.md +31 -0
  269. package/docs/components/menu-button.md +22 -7
  270. package/docs/components/modal.md +34 -9
  271. package/docs/components/multi-select-filter.md +25 -7
  272. package/docs/components/number-field.md +40 -0
  273. package/docs/components/otp-input.md +20 -7
  274. package/docs/components/page-tabs.md +23 -4
  275. package/docs/components/page-title.md +6 -1
  276. package/docs/components/paginated-table.md +36 -13
  277. package/docs/components/pagination.md +20 -7
  278. package/docs/components/password-input.md +20 -8
  279. package/docs/components/phone-input.md +17 -7
  280. package/docs/components/radio-group.md +39 -9
  281. package/docs/components/range-slider.md +18 -6
  282. package/docs/components/rating-input.md +19 -8
  283. package/docs/components/render-field.md +31 -3
  284. package/docs/components/reset-password-form.md +24 -4
  285. package/docs/components/rich-text-preview.md +17 -5
  286. package/docs/components/search-input.md +18 -7
  287. package/docs/components/select-field.md +55 -0
  288. package/docs/components/stat-card.md +14 -3
  289. package/docs/components/status-badge.md +17 -7
  290. package/docs/components/switch-field.md +32 -0
  291. package/docs/components/table-filter-field.md +22 -4
  292. package/docs/components/table-skeleton.md +9 -3
  293. package/docs/components/table-toolbar.md +18 -5
  294. package/docs/components/tag.md +16 -7
  295. package/docs/components/tags-input.md +21 -8
  296. package/docs/components/text-area.md +18 -8
  297. package/docs/components/text-field.md +32 -0
  298. package/docs/components/timeline.md +19 -3
  299. package/docs/components/toggle-inline-button.md +42 -10
  300. package/docs/components/upload-files-preview.md +23 -2
  301. package/docs/components/use-field-controller.md +58 -0
  302. package/docs/components/user-menu.md +26 -6
  303. package/docs/contracts/dependency-map.md +50 -52
  304. package/docs/contracts/field-controller.md +138 -0
  305. package/docs/contracts/style-imports.md +1 -20
  306. package/llms.txt +70 -72
  307. package/package.json +48 -11
  308. package/dist/components/Forms/AsyncSelect.d.ts +0 -20
  309. package/dist/components/Forms/AsyncSelect.d.ts.map +0 -1
  310. package/dist/components/Forms/AsyncSelect.js +0 -77
  311. package/dist/components/Forms/AsyncSelect.js.map +0 -1
  312. package/dist/components/Forms/Combobox.d.ts +0 -10
  313. package/dist/components/Forms/Combobox.d.ts.map +0 -1
  314. package/dist/components/Forms/Combobox.js +0 -11
  315. package/dist/components/Forms/Combobox.js.map +0 -1
  316. package/dist/components/Forms/CurrencyInput.d.ts +0 -12
  317. package/dist/components/Forms/CurrencyInput.d.ts.map +0 -1
  318. package/dist/components/Forms/CurrencyInput.js +0 -9
  319. package/dist/components/Forms/CurrencyInput.js.map +0 -1
  320. package/dist/components/Forms/DateInput.d.ts +0 -10
  321. package/dist/components/Forms/DateInput.d.ts.map +0 -1
  322. package/dist/components/Forms/DateInput.js +0 -11
  323. package/dist/components/Forms/DateInput.js.map +0 -1
  324. package/dist/components/Forms/DateRangeInput.d.ts +0 -10
  325. package/dist/components/Forms/DateRangeInput.d.ts.map +0 -1
  326. package/dist/components/Forms/DateRangeInput.js +0 -13
  327. package/dist/components/Forms/DateRangeInput.js.map +0 -1
  328. package/dist/components/Forms/DropDown.d.ts +0 -10
  329. package/dist/components/Forms/DropDown.d.ts.map +0 -1
  330. package/dist/components/Forms/DropDown.js +0 -11
  331. package/dist/components/Forms/DropDown.js.map +0 -1
  332. package/dist/components/Forms/MultiSelect.d.ts +0 -10
  333. package/dist/components/Forms/MultiSelect.d.ts.map +0 -1
  334. package/dist/components/Forms/MultiSelect.js +0 -13
  335. package/dist/components/Forms/MultiSelect.js.map +0 -1
  336. package/dist/components/Forms/NumberInput.d.ts +0 -10
  337. package/dist/components/Forms/NumberInput.d.ts.map +0 -1
  338. package/dist/components/Forms/NumberInput.js +0 -16
  339. package/dist/components/Forms/NumberInput.js.map +0 -1
  340. package/dist/components/Forms/Select.d.ts +0 -15
  341. package/dist/components/Forms/Select.d.ts.map +0 -1
  342. package/dist/components/Forms/Select.js +0 -48
  343. package/dist/components/Forms/Select.js.map +0 -1
  344. package/dist/components/Forms/Switch.d.ts +0 -18
  345. package/dist/components/Forms/Switch.d.ts.map +0 -1
  346. package/dist/components/Forms/Switch.js +0 -30
  347. package/dist/components/Forms/Switch.js.map +0 -1
  348. package/dist/components/Forms/TextInput.d.ts +0 -11
  349. package/dist/components/Forms/TextInput.d.ts.map +0 -1
  350. package/dist/components/Forms/TextInput.js +0 -12
  351. package/dist/components/Forms/TextInput.js.map +0 -1
  352. package/dist/components/Forms/TimePicker.d.ts +0 -13
  353. package/dist/components/Forms/TimePicker.d.ts.map +0 -1
  354. package/dist/components/Forms/TimePicker.js +0 -19
  355. package/dist/components/Forms/TimePicker.js.map +0 -1
  356. package/dist/components/Forms/Toggle.d.ts +0 -14
  357. package/dist/components/Forms/Toggle.d.ts.map +0 -1
  358. package/dist/components/Forms/Toggle.js +0 -10
  359. package/dist/components/Forms/Toggle.js.map +0 -1
  360. package/dist/components/Forms/types.d.ts +0 -9
  361. package/dist/components/Forms/types.d.ts.map +0 -1
  362. package/dist/components/Forms/types.js +0 -2
  363. package/dist/components/Forms/types.js.map +0 -1
  364. package/docs/components/async-select.md +0 -27
  365. package/docs/components/combobox.md +0 -19
  366. package/docs/components/currency-input.md +0 -21
  367. package/docs/components/date-input.md +0 -21
  368. package/docs/components/date-range-input.md +0 -20
  369. package/docs/components/drop-down.md +0 -26
  370. package/docs/components/multi-select.md +0 -22
  371. package/docs/components/number-input.md +0 -21
  372. package/docs/components/select.md +0 -28
  373. package/docs/components/switch.md +0 -24
  374. package/docs/components/text-input.md +0 -24
  375. package/docs/components/time-picker.md +0 -25
  376. package/docs/components/toggle.md +0 -24
  377. package/docs/contracts/component-doc-schema.md +0 -78
  378. package/docs/contracts/controller-props.md +0 -28
@@ -2,18 +2,46 @@
2
2
  name: RenderField
3
3
  category: forms
4
4
  import: '@mantis-core/ui/components/Forms/RenderField'
5
- whenToUse: 'Low-level escape hatch: connects any custom UI to react-hook-form via a render prop.'
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
6
  baseLibrary: custom
7
+ relatedComponents: ['FormFieldRender', 'useFieldController']
7
8
  relatedNextCore: []
8
9
  props:
9
10
  - { name: name, type: string, required: true }
10
- - { name: render, type: '(props: RenderProps) => ReactElement', required: true }
11
+ - { name: render, type: '(props: { field, fieldState, formState, value }) => ReactElement', required: true }
11
12
  - { name: defaultValue, type: any, required: false }
12
13
  - { name: rules, type: RegisterOptions, required: false }
13
14
  - { name: control, type: Control, required: false }
14
15
  ---
16
+
15
17
  ## Example
16
18
 
17
19
  ```tsx
18
- <RenderField name='rating' render={({ field }) => <StarPicker value={field.value} onChange={field.onChange} />} />
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
+ )}
36
+ />
37
+ );
38
+ }
19
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.
@@ -2,16 +2,36 @@
2
2
  name: ResetPasswordForm
3
3
  category: auth
4
4
  import: '@mantis-core/ui/components/auth/ResetPasswordForm'
5
- whenToUse: New password + confirm form; caller owns token validation and API call.
5
+ whenToUse: New password + confirm-password form for a reset-token flow; caller owns token validation and the API call.
6
6
  baseLibrary: custom
7
+ requiredStyles: []
8
+ relatedComponents: [ForgotPasswordForm, ChangePasswordForm, LoginForm]
7
9
  relatedNextCore: []
8
10
  props:
9
- - { name: onSubmit, type: '(values: ResetPasswordFormValues) => void | Promise<void>', required: true }
10
- - { name: minPasswordLength, type: number, required: false, default: '8' }
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.' }
11
16
  - { name: className, type: string, required: false }
12
17
  ---
18
+
13
19
  ## Example
14
20
 
15
21
  ```tsx
16
- <ResetPasswordForm onSubmit={({ newPassword }) => resetPassword(token, newPassword)} />
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
+ }
17
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`.
@@ -2,18 +2,30 @@
2
2
  name: RichTextPreview
3
3
  category: feedback
4
4
  import: '@mantis-core/ui/components/ui/RichTextPreview'
5
- whenToUse: Safely renders a CKEditor HTML string with correct CKEditor content styles.
5
+ whenToUse: Safely renders a CKEditor HTML string (sanitized by default) with CKEditor content styles applied.
6
6
  baseLibrary: custom
7
7
  requiredStyles: [scss/rich-text-preview.scss]
8
- relatedComponents: [CKEditorInput]
8
+ relatedComponents: ['CKEditorInput']
9
9
  relatedNextCore: []
10
10
  props:
11
- - { name: content, type: string, required: true }
12
- - { name: size, type: '''sm'' | ''md'' | ''lg''', required: false }
11
+ - { name: html, type: 'string | null', required: false, description: 'HTML source. `null`/undefined is treated as empty.' }
13
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.' }
14
16
  ---
17
+
15
18
  ## Example
16
19
 
17
20
  ```tsx
18
- <RichTextPreview content={post.body} size='md' />
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
+ }
19
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.
@@ -2,18 +2,29 @@
2
2
  name: SearchInput
3
3
  category: forms
4
4
  import: '@mantis-core/ui/components/Forms/SearchInput'
5
- whenToUse: Debounced text input that calls onSearch instead of using react-hook-form; ideal for live table/list filtering.
6
- baseLibrary: custom
7
- formContract: ControllerProps
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']
8
9
  relatedNextCore: []
9
10
  props:
10
- - { name: controller, type: ControllerProps, required: true }
11
- - { name: onSearch, type: '(value: string) => void', required: false }
11
+ - { name: onSearch, type: '(value: string) => void', required: false, description: 'Fires debounced with the current value on each change.' }
12
12
  - { name: debounceMs, type: number, required: false, default: '300' }
13
- - { name: block, type: boolean, required: false }
14
13
  ---
14
+
15
15
  ## Example
16
16
 
17
17
  ```tsx
18
- <SearchInput controller={{ name: 'q' }} onSearch={setQuery} debounceMs={400} block />
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
+ }
19
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).
@@ -2,18 +2,29 @@
2
2
  name: StatCard
3
3
  category: data
4
4
  import: '@mantis-core/ui/components/data/StatCard'
5
- whenToUse: 'KPI card showing a metric label, large value, optional icon, trend indicator, and footer.'
5
+ whenToUse: KPI card showing a metric label, large value, optional icon, trend indicator, and footer.
6
6
  baseLibrary: custom
7
+ relatedComponents: ['DescriptionList']
7
8
  relatedNextCore: []
8
9
  props:
9
10
  - { name: label, type: string, required: true }
10
11
  - { name: value, type: ReactNode, required: true }
11
12
  - { name: icon, type: ReactNode, required: false }
12
- - { name: trend, type: '{ value: number; direction: ''up'' | ''down'' }', required: false }
13
+ - { name: trend, type: "{ value: number; direction: 'up' | 'down' }", required: false }
13
14
  - { name: footer, type: ReactNode, required: false }
14
15
  ---
16
+
15
17
  ## Example
16
18
 
17
19
  ```tsx
18
- <StatCard label='Leads' value={142} icon={<i className='pi pi-users' />} trend={{ value: 12, direction: 'up' }} />
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
+ }
19
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).
@@ -2,19 +2,29 @@
2
2
  name: StatusBadge
3
3
  category: feedback
4
4
  import: '@mantis-core/ui/components/ui/StatusBadge'
5
- whenToUse: Colored pill badge to communicate a status or label with semantic tone.
5
+ whenToUse: Colored pill badge to communicate a status with semantic tone (e.g. a lead or property status).
6
6
  baseLibrary: custom
7
7
  requiredStyles: [scss/status-badge.scss]
8
- relatedComponents: [DataState]
8
+ relatedComponents: ['DataState']
9
9
  relatedNextCore: []
10
10
  props:
11
- - { name: label, type: ReactNode, required: false }
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 }
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.' }
15
16
  ---
17
+
16
18
  ## Example
17
19
 
18
20
  ```tsx
19
- <StatusBadge label='Activo' tone='success' />
21
+ import StatusBadge from '@mantis-core/ui/components/ui/StatusBadge';
22
+
23
+ function Example() {
24
+ return <StatusBadge label='Active' tone='success' />;
25
+ }
20
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`.
@@ -2,16 +2,34 @@
2
2
  name: TableFilterField
3
3
  category: tables
4
4
  import: '@mantis-core/ui/components/table-filter-field'
5
- whenToUse: Wraps a form control inside FilterPannel with a label; provides consistent layout.
5
+ whenToUse: 'Wraps a form control with a `<label>` inside a `FilterPannel`, providing consistent layout.'
6
6
  baseLibrary: custom
7
+ relatedComponents: [FilterPannel]
7
8
  relatedNextCore: []
8
9
  props:
9
- - { name: label, type: string, required: true }
10
- - { name: htmlFor, type: string, required: false }
10
+ - { name: label, type: ReactNode, required: true }
11
+ - { name: htmlFor, type: string, required: true }
11
12
  - { name: className, type: string, required: false }
13
+ - { name: labelClassName, type: string, required: false }
12
14
  ---
15
+
13
16
  ## Example
14
17
 
15
18
  ```tsx
16
- <TableFilterField label='Status' htmlFor='filter-status'><DropDown controller={{ name: 'status' }} options={statusOpts} /></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
+ }
17
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`.
@@ -2,15 +2,21 @@
2
2
  name: TableSkeleton
3
3
  category: feedback
4
4
  import: '@mantis-core/ui/components/feedback/TableSkeleton'
5
- whenToUse: Animated skeleton placeholder that mimics a table grid while data loads.
6
- baseLibrary: custom
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']
7
8
  relatedNextCore: []
8
9
  props:
9
10
  - { name: rows, type: number, required: false, default: '5' }
10
11
  - { name: columns, type: number, required: false, default: '4' }
11
12
  ---
13
+
12
14
  ## Example
13
15
 
14
16
  ```tsx
15
- <TableSkeleton rows={8} columns={5} />
17
+ import TableSkeleton from '@mantis-core/ui/components/feedback/TableSkeleton';
18
+
19
+ function Example() {
20
+ return <TableSkeleton rows={8} columns={5} />;
21
+ }
16
22
  ```
@@ -2,19 +2,32 @@
2
2
  name: TableToolbar
3
3
  category: tables
4
4
  import: '@mantis-core/ui/components/table-toolbar'
5
- whenToUse: 'Header bar above a table showing title, record count, and action buttons slot.'
5
+ whenToUse: 'Header bar above a table showing title, record-count meta, and an action buttons slot.'
6
6
  baseLibrary: custom
7
- relatedComponents: [PaginatedTable, Button]
7
+ relatedComponents: [PaginatedTable, MantisDataTable, Button]
8
8
  relatedNextCore: []
9
9
  props:
10
10
  - { name: title, type: ReactNode, required: false }
11
- - { name: totalRecords, type: number, 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.' }
12
13
  - { name: actions, type: ReactNode, required: false }
13
- - { name: meta, type: ReactNode, required: false }
14
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.' }
15
17
  ---
18
+
16
19
  ## Example
17
20
 
18
21
  ```tsx
19
- <TableToolbar title='Users' totalRecords={total} actions={<Button label='New' onClick={onCreate} />} />
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
+ }
20
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.
@@ -2,17 +2,26 @@
2
2
  name: Tag
3
3
  category: feedback
4
4
  import: '@mantis-core/ui/components/feedback/Tag'
5
- whenToUse: 'Styled label chip (PrimeReact Tag wrapper with Mantis Core CSS); use for status labels, categories, or counts.'
6
- baseLibrary: custom
5
+ whenToUse: Styled label chip for status labels, categories, or counts; wraps the PR11 Tag primitive.
6
+ baseLibrary: '@primereact/ui/tag'
7
+ relatedComponents: ['StatusBadge', 'Avatar']
7
8
  relatedNextCore: []
8
9
  props:
9
- - { name: value, type: ReactNode, required: false }
10
- - { name: severity, type: '''success'' | ''info'' | ''warning'' | ''danger'' | null', required: false }
11
- - { name: icon, type: string, required: false }
12
- - { name: rounded, type: boolean, required: false }
10
+ - { name: children, type: ReactNode, required: false, description: 'Tag content — PR11 dropped value/icon; content is now children.' }
11
+ - { name: severity, type: "'secondary' | 'success' | 'info' | 'warn' | 'danger' | 'contrast'", required: false }
12
+ - { name: rounded, type: boolean, required: false, default: 'false' }
13
13
  ---
14
+
14
15
  ## Example
15
16
 
16
17
  ```tsx
17
- <Tag value='Vendido' severity='success' rounded />
18
+ import Tag from '@mantis-core/ui/components/feedback/Tag';
19
+
20
+ function Example() {
21
+ return <Tag severity='success' rounded>Sold</Tag>;
22
+ }
18
23
  ```
24
+
25
+ ## Notes
26
+
27
+ - PR11 `Tag` has no `value`/`icon` props like PR10 did — pass content as `children` instead.
@@ -2,18 +2,31 @@
2
2
  name: TagsInput
3
3
  category: forms
4
4
  import: '@mantis-core/ui/components/Forms/TagsInput'
5
- whenToUse: 'Chip/tags input (PrimeReact Chips) wired to react-hook-form; stores value as string[].'
6
- baseLibrary: custom
7
- formContract: ControllerProps
5
+ whenToUse: RHF-bound tag/chip input over PR11's compound InputTags; stores value as string[].
6
+ baseLibrary: '@primereact/ui/inputtags'
7
+ formContract: FieldControllerProps
8
+ relatedComponents: []
8
9
  relatedNextCore: []
9
10
  props:
10
- - { name: controller, type: ControllerProps, required: true }
11
- - { name: placeholder, type: string, required: false }
12
- - { name: max, type: number, required: false }
13
- - { name: block, type: boolean, required: false }
11
+ - { name: placeholder, type: string, required: false, description: 'Shown on the entry input only while no tags are present.' }
12
+ - { name: max, type: number, required: false, description: 'Max number of tags.' }
13
+ - { name: delimiter, type: 'string | RegExp', required: false, description: 'Extra character(s) that commit a tag besides Enter.' }
14
+ - { name: allowDuplicate, type: boolean, required: false }
14
15
  ---
16
+
15
17
  ## Example
16
18
 
17
19
  ```tsx
18
- <TagsInput controller={{ name: 'amenities' }} placeholder='Agregar etiqueta...' block />
20
+ import { TagsInput } from '@mantis-core/ui/components/Forms/TagsInput';
21
+ import { useForm } from 'react-hook-form';
22
+
23
+ function Example() {
24
+ const { control } = useForm({ defaultValues: { tags: [] as string[] } });
25
+ return <TagsInput name='tags' control={control} label='Etiquetas' placeholder='Agregar etiqueta...' />;
26
+ }
19
27
  ```
28
+
29
+ ## Notes
30
+
31
+ - Value shape: `string[]`, `[]` when unset. Enter (or `delimiter`) commits a tag; Backspace on an empty entry removes the last one.
32
+ - Chips render as themed `Chip.*`; the entry input is chrome-less (`.p-inputtags` owns the border/focus ring) to avoid a doubled focus ring.
@@ -3,18 +3,28 @@ name: TextArea
3
3
  category: forms
4
4
  import: '@mantis-core/ui/components/Forms/TextArea'
5
5
  whenToUse: Multi-line text field wired to react-hook-form.
6
- baseLibrary: primereact/inputtextarea
7
- formContract: ControllerProps
8
- requiredStyles: [scss/inputs.scss]
9
- relatedComponents: [FormFieldRender, TextInput]
6
+ baseLibrary: '@primereact/ui/textarea'
7
+ formContract: FieldControllerProps
8
+ relatedComponents: ['TextField']
10
9
  relatedNextCore: []
11
10
  props:
12
- - { name: controller, type: ControllerProps, required: true }
13
- - { name: block, type: boolean, required: false }
14
- - { name: rows, type: number, required: false }
11
+ - { name: rows, type: number, required: false, description: 'Native <textarea> passthrough beyond FieldControllerProps.' }
15
12
  ---
13
+
16
14
  ## Example
17
15
 
18
16
  ```tsx
19
- <TextArea controller={{ name: 'description' }} rows={4} block />
17
+ import { TextArea } from '@mantis-core/ui/components/Forms/TextArea';
18
+ import { useForm } from 'react-hook-form';
19
+
20
+ function Example() {
21
+ const { control } = useForm({ defaultValues: { notes: '' } });
22
+ return <TextArea name='notes' control={control} label='Notes' rows={4} />;
23
+ }
20
24
  ```
25
+
26
+ ## Notes
27
+
28
+ - Thin wrapper over PR11 `Textarea`: value/onChange are native (`e.target.value`).
29
+ - Any extra prop not listed above (native `<textarea>` attrs or `TextareaProps`) passes straight
30
+ through as an escape hatch.
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: TextField
3
+ category: forms
4
+ import: '@mantis-core/ui/components/Forms/TextField'
5
+ whenToUse: Single-line text field wired to react-hook-form.
6
+ baseLibrary: '@primereact/ui/inputtext'
7
+ formContract: FieldControllerProps
8
+ relatedComponents: ['TextArea', 'NumberField', 'FieldShell']
9
+ relatedNextCore: []
10
+ props:
11
+ - { name: placeholder, type: string, required: false, description: 'Native <input> passthrough beyond FieldControllerProps.' }
12
+ - { name: maxLength, type: number, required: false, description: 'Native <input> passthrough beyond FieldControllerProps.' }
13
+ ---
14
+
15
+ ## Example
16
+
17
+ ```tsx
18
+ import { TextField } from '@mantis-core/ui/components/Forms/TextField';
19
+ import { useForm } from 'react-hook-form';
20
+
21
+ function Example() {
22
+ const { control } = useForm({ defaultValues: { title: '' } });
23
+ return <TextField name='title' control={control} label='Title' rules={{ required: true }} />;
24
+ }
25
+ ```
26
+
27
+ ## Notes
28
+
29
+ - Thin wrapper over PR11 `InputText`: value/onChange are native (`e.target.value`), unlike the
30
+ compound `InputNumber`/`Select` primitives.
31
+ - Any extra prop not listed above (native `<input>` attrs or `InputTextProps`) passes straight
32
+ through as an escape hatch.
@@ -2,14 +2,30 @@
2
2
  name: Timeline
3
3
  category: data
4
4
  import: '@mantis-core/ui/components/data/Timeline'
5
- whenToUse: 'Vertical event timeline backed by PrimeReact Timeline; items render title, description, date, and optional icon.'
6
- baseLibrary: custom
5
+ whenToUse: Vertical event timeline backed by the PR11 Timeline compound; items render a title, description, date, and optional icon/color.
6
+ baseLibrary: '@primereact/ui/timeline'
7
7
  relatedNextCore: []
8
8
  props:
9
9
  - { name: items, type: '{ title: string; description?: string; date?: string; icon?: ReactNode; color?: string }[]', required: true }
10
10
  ---
11
+
11
12
  ## Example
12
13
 
13
14
  ```tsx
14
- <Timeline items={[{ title: 'Lead creado', date: '2025-01-10', description: 'Formulario web' }, { title: 'Contactado', date: '2025-01-11' }]} />
15
+ import Timeline from '@mantis-core/ui/components/data/Timeline';
16
+
17
+ function Example() {
18
+ return (
19
+ <Timeline
20
+ items={[
21
+ { title: 'Lead created', date: '2025-01-10', description: 'Web form' },
22
+ { title: 'Contacted', date: '2025-01-11' },
23
+ ]}
24
+ />
25
+ );
26
+ }
15
27
  ```
28
+
29
+ ## Notes
30
+
31
+ - PR11's `Timeline` is fully compound (`Root`/`Event`/`Separator`/`Marker`/`Connector`/`Content`) with no render-prop API — the wrapper maps each `items` entry onto the sub-part tree for you, so callers keep the old flat item-list shape.