@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.
- package/CHANGELOG.md +155 -0
- package/COMPONENTS.md +71 -73
- package/README.md +19 -6
- package/bin/mantis-llm.mjs +242 -0
- package/catalog.json +3031 -0
- package/dist/components/Buttons/Button.d.ts +39 -9
- package/dist/components/Buttons/Button.d.ts.map +1 -1
- package/dist/components/Buttons/Button.js +21 -13
- package/dist/components/Buttons/Button.js.map +1 -1
- package/dist/components/Forms/AutoCompleteField.d.ts +60 -0
- package/dist/components/Forms/AutoCompleteField.d.ts.map +1 -0
- package/dist/components/Forms/AutoCompleteField.js +125 -0
- package/dist/components/Forms/AutoCompleteField.js.map +1 -0
- package/dist/components/Forms/CKEditorInput.d.ts +5 -2
- package/dist/components/Forms/CKEditorInput.d.ts.map +1 -1
- package/dist/components/Forms/CKEditorInput.js +5 -2
- package/dist/components/Forms/CKEditorInput.js.map +1 -1
- package/dist/components/Forms/CheckboxField.d.ts +14 -0
- package/dist/components/Forms/CheckboxField.d.ts.map +1 -0
- package/dist/components/Forms/CheckboxField.js +26 -0
- package/dist/components/Forms/CheckboxField.js.map +1 -0
- package/dist/components/Forms/ColorPickerInput.d.ts +27 -8
- package/dist/components/Forms/ColorPickerInput.d.ts.map +1 -1
- package/dist/components/Forms/ColorPickerInput.js +57 -11
- package/dist/components/Forms/ColorPickerInput.js.map +1 -1
- package/dist/components/Forms/DateField.d.ts +68 -0
- package/dist/components/Forms/DateField.d.ts.map +1 -0
- package/dist/components/Forms/DateField.js +108 -0
- package/dist/components/Forms/DateField.js.map +1 -0
- package/dist/components/Forms/DatePresets.d.ts.map +1 -1
- package/dist/components/Forms/DatePresets.js +6 -3
- package/dist/components/Forms/DatePresets.js.map +1 -1
- package/dist/components/Forms/FieldShell.d.ts +24 -0
- package/dist/components/Forms/FieldShell.d.ts.map +1 -0
- package/dist/components/Forms/FieldShell.js +39 -0
- package/dist/components/Forms/FieldShell.js.map +1 -0
- package/dist/components/Forms/FileDropzone.d.ts +4 -2
- package/dist/components/Forms/FileDropzone.d.ts.map +1 -1
- package/dist/components/Forms/FileDropzone.js.map +1 -1
- package/dist/components/Forms/FormActionsBar.js +2 -2
- package/dist/components/Forms/FormActionsBar.js.map +1 -1
- package/dist/components/Forms/FormWizard.d.ts +1 -1
- package/dist/components/Forms/FormWizard.d.ts.map +1 -1
- package/dist/components/Forms/FormWizard.js +4 -5
- package/dist/components/Forms/FormWizard.js.map +1 -1
- package/dist/components/Forms/HiddenField.d.ts +12 -6
- package/dist/components/Forms/HiddenField.d.ts.map +1 -1
- package/dist/components/Forms/HiddenField.js +14 -5
- package/dist/components/Forms/HiddenField.js.map +1 -1
- package/dist/components/Forms/MaskField.d.ts +28 -0
- package/dist/components/Forms/MaskField.d.ts.map +1 -0
- package/dist/components/Forms/MaskField.js +74 -0
- package/dist/components/Forms/MaskField.js.map +1 -0
- package/dist/components/Forms/NumberField.d.ts +14 -0
- package/dist/components/Forms/NumberField.d.ts.map +1 -0
- package/dist/components/Forms/NumberField.js +51 -0
- package/dist/components/Forms/NumberField.js.map +1 -0
- package/dist/components/Forms/OtpInput.d.ts +23 -8
- package/dist/components/Forms/OtpInput.d.ts.map +1 -1
- package/dist/components/Forms/OtpInput.js +37 -8
- package/dist/components/Forms/OtpInput.js.map +1 -1
- package/dist/components/Forms/PasswordInput.d.ts +22 -9
- package/dist/components/Forms/PasswordInput.d.ts.map +1 -1
- package/dist/components/Forms/PasswordInput.js +63 -28
- package/dist/components/Forms/PasswordInput.js.map +1 -1
- package/dist/components/Forms/PhoneInput.d.ts +16 -8
- package/dist/components/Forms/PhoneInput.d.ts.map +1 -1
- package/dist/components/Forms/PhoneInput.js +13 -6
- package/dist/components/Forms/PhoneInput.js.map +1 -1
- package/dist/components/Forms/RadioGroup.d.ts +34 -13
- package/dist/components/Forms/RadioGroup.d.ts.map +1 -1
- package/dist/components/Forms/RadioGroup.js +49 -6
- package/dist/components/Forms/RadioGroup.js.map +1 -1
- package/dist/components/Forms/RangeSlider.d.ts +26 -11
- package/dist/components/Forms/RangeSlider.d.ts.map +1 -1
- package/dist/components/Forms/RangeSlider.js +40 -7
- package/dist/components/Forms/RangeSlider.js.map +1 -1
- package/dist/components/Forms/RatingInput.d.ts +24 -8
- package/dist/components/Forms/RatingInput.d.ts.map +1 -1
- package/dist/components/Forms/RatingInput.js +41 -9
- package/dist/components/Forms/RatingInput.js.map +1 -1
- package/dist/components/Forms/SearchInput.d.ts +18 -10
- package/dist/components/Forms/SearchInput.d.ts.map +1 -1
- package/dist/components/Forms/SearchInput.js +44 -23
- package/dist/components/Forms/SearchInput.js.map +1 -1
- package/dist/components/Forms/SelectField.d.ts +41 -0
- package/dist/components/Forms/SelectField.d.ts.map +1 -0
- package/dist/components/Forms/SelectField.js +110 -0
- package/dist/components/Forms/SelectField.js.map +1 -0
- package/dist/components/Forms/SwitchField.d.ts +14 -0
- package/dist/components/Forms/SwitchField.d.ts.map +1 -0
- package/dist/components/Forms/SwitchField.js +26 -0
- package/dist/components/Forms/SwitchField.js.map +1 -0
- package/dist/components/Forms/TagsInput.d.ts +29 -8
- package/dist/components/Forms/TagsInput.d.ts.map +1 -1
- package/dist/components/Forms/TagsInput.js +53 -9
- package/dist/components/Forms/TagsInput.js.map +1 -1
- package/dist/components/Forms/TextArea.d.ts +13 -10
- package/dist/components/Forms/TextArea.d.ts.map +1 -1
- package/dist/components/Forms/TextArea.js +27 -9
- package/dist/components/Forms/TextArea.js.map +1 -1
- package/dist/components/Forms/TextField.d.ts +14 -0
- package/dist/components/Forms/TextField.d.ts.map +1 -0
- package/dist/components/Forms/TextField.js +29 -0
- package/dist/components/Forms/TextField.js.map +1 -0
- package/dist/components/Forms/ToggleInlineButton.d.ts +33 -12
- package/dist/components/Forms/ToggleInlineButton.d.ts.map +1 -1
- package/dist/components/Forms/ToggleInlineButton.js +56 -6
- package/dist/components/Forms/ToggleInlineButton.js.map +1 -1
- package/dist/components/Forms/UploadFilesPreview.js +3 -3
- package/dist/components/Forms/UploadFilesPreview.js.map +1 -1
- package/dist/components/Forms/field-typing.test-d.d.ts +2 -0
- package/dist/components/Forms/field-typing.test-d.d.ts.map +1 -0
- package/dist/components/Forms/field-typing.test-d.js +24 -0
- package/dist/components/Forms/field-typing.test-d.js.map +1 -0
- package/dist/components/Forms/useFieldController.d.ts +85 -0
- package/dist/components/Forms/useFieldController.d.ts.map +1 -0
- package/dist/components/Forms/useFieldController.js +54 -0
- package/dist/components/Forms/useFieldController.js.map +1 -0
- package/dist/components/Loaders/Loading.d.ts.map +1 -1
- package/dist/components/Loaders/Loading.js +3 -2
- package/dist/components/Loaders/Loading.js.map +1 -1
- package/dist/components/Tables/ActionColumn.d.ts +20 -4
- package/dist/components/Tables/ActionColumn.d.ts.map +1 -1
- package/dist/components/Tables/ActionColumn.js +24 -5
- package/dist/components/Tables/ActionColumn.js.map +1 -1
- package/dist/components/Tables/FilterPannel.d.ts +9 -2
- package/dist/components/Tables/FilterPannel.d.ts.map +1 -1
- package/dist/components/Tables/FilterPannel.js +15 -11
- package/dist/components/Tables/FilterPannel.js.map +1 -1
- package/dist/components/Tables/IndexColumn.d.ts +12 -3
- package/dist/components/Tables/IndexColumn.d.ts.map +1 -1
- package/dist/components/Tables/IndexColumn.js +21 -5
- package/dist/components/Tables/IndexColumn.js.map +1 -1
- package/dist/components/Tables/MantisDataTable.d.ts +45 -0
- package/dist/components/Tables/MantisDataTable.d.ts.map +1 -0
- package/dist/components/Tables/MantisDataTable.js +63 -0
- package/dist/components/Tables/MantisDataTable.js.map +1 -0
- package/dist/components/Tables/MenuButton.d.ts +28 -7
- package/dist/components/Tables/MenuButton.d.ts.map +1 -1
- package/dist/components/Tables/MenuButton.js +20 -10
- package/dist/components/Tables/MenuButton.js.map +1 -1
- package/dist/components/Tables/PaginatedTable.d.ts +26 -17
- package/dist/components/Tables/PaginatedTable.d.ts.map +1 -1
- package/dist/components/Tables/PaginatedTable.js +24 -22
- package/dist/components/Tables/PaginatedTable.js.map +1 -1
- package/dist/components/Tables/cell-presets.d.ts +35 -0
- package/dist/components/Tables/cell-presets.d.ts.map +1 -0
- package/dist/components/Tables/cell-presets.js +40 -0
- package/dist/components/Tables/cell-presets.js.map +1 -0
- package/dist/components/Tables/columns.d.ts +40 -0
- package/dist/components/Tables/columns.d.ts.map +1 -0
- package/dist/components/Tables/columns.js +2 -0
- package/dist/components/Tables/columns.js.map +1 -0
- package/dist/components/Tables/filters/MultiSelectFilter.d.ts +24 -6
- package/dist/components/Tables/filters/MultiSelectFilter.d.ts.map +1 -1
- package/dist/components/Tables/filters/MultiSelectFilter.js +19 -6
- package/dist/components/Tables/filters/MultiSelectFilter.js.map +1 -1
- package/dist/components/auth/ChangePasswordForm.d.ts.map +1 -1
- package/dist/components/auth/ChangePasswordForm.js +12 -12
- package/dist/components/auth/ChangePasswordForm.js.map +1 -1
- package/dist/components/auth/ForgotPasswordForm.d.ts.map +1 -1
- package/dist/components/auth/ForgotPasswordForm.js +7 -5
- package/dist/components/auth/ForgotPasswordForm.js.map +1 -1
- package/dist/components/auth/LoginForm.d.ts +2 -2
- package/dist/components/auth/LoginForm.d.ts.map +1 -1
- package/dist/components/auth/LoginForm.js +15 -15
- package/dist/components/auth/LoginForm.js.map +1 -1
- package/dist/components/auth/ResetPasswordForm.d.ts.map +1 -1
- package/dist/components/auth/ResetPasswordForm.js +11 -12
- package/dist/components/auth/ResetPasswordForm.js.map +1 -1
- package/dist/components/auth/UserMenu.d.ts +11 -1
- package/dist/components/auth/UserMenu.d.ts.map +1 -1
- package/dist/components/auth/UserMenu.js +30 -87
- package/dist/components/auth/UserMenu.js.map +1 -1
- package/dist/components/data/Timeline.d.ts +2 -2
- package/dist/components/data/Timeline.d.ts.map +1 -1
- package/dist/components/data/Timeline.js +17 -17
- package/dist/components/data/Timeline.js.map +1 -1
- package/dist/components/feedback/Avatar.d.ts +4 -2
- package/dist/components/feedback/Avatar.d.ts.map +1 -1
- package/dist/components/feedback/Avatar.js +4 -4
- package/dist/components/feedback/Avatar.js.map +1 -1
- package/dist/components/feedback/CardSkeleton.d.ts.map +1 -1
- package/dist/components/feedback/CardSkeleton.js +3 -3
- package/dist/components/feedback/CardSkeleton.js.map +1 -1
- package/dist/components/feedback/TableSkeleton.d.ts.map +1 -1
- package/dist/components/feedback/TableSkeleton.js +3 -3
- package/dist/components/feedback/TableSkeleton.js.map +1 -1
- package/dist/components/feedback/Tag.d.ts +4 -2
- package/dist/components/feedback/Tag.d.ts.map +1 -1
- package/dist/components/feedback/Tag.js +4 -4
- package/dist/components/feedback/Tag.js.map +1 -1
- package/dist/components/navigation/CommandPalette.d.ts.map +1 -1
- package/dist/components/navigation/CommandPalette.js +5 -2
- package/dist/components/navigation/CommandPalette.js.map +1 -1
- package/dist/components/navigation/PageTabs.d.ts +10 -8
- package/dist/components/navigation/PageTabs.d.ts.map +1 -1
- package/dist/components/navigation/PageTabs.js +17 -13
- package/dist/components/navigation/PageTabs.js.map +1 -1
- package/dist/components/overlays/Drawer.d.ts +16 -3
- package/dist/components/overlays/Drawer.d.ts.map +1 -1
- package/dist/components/overlays/Drawer.js +9 -5
- package/dist/components/overlays/Drawer.js.map +1 -1
- package/dist/components/overlays/Modal.d.ts +18 -3
- package/dist/components/overlays/Modal.d.ts.map +1 -1
- package/dist/components/overlays/Modal.js +13 -5
- package/dist/components/overlays/Modal.js.map +1 -1
- package/dist/components/pages/app-shell/AppShell.d.ts.map +1 -1
- package/dist/components/pages/app-shell/AppShell.js +6 -6
- package/dist/components/pages/app-shell/AppShell.js.map +1 -1
- package/dist/components/ui/ConfirmDialog.d.ts +1 -2
- package/dist/components/ui/ConfirmDialog.d.ts.map +1 -1
- package/dist/components/ui/ConfirmDialog.js +10 -4
- package/dist/components/ui/ConfirmDialog.js.map +1 -1
- package/dist/components/ui/DataState.js +2 -2
- package/dist/components/ui/DataState.js.map +1 -1
- package/dist/index.d.ts +71 -42
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +114 -22
- package/dist/index.js.map +1 -1
- package/docs/README.md +1 -1
- package/docs/components/action-column.md +33 -7
- package/docs/components/admin-page-configurator.md +24 -5
- package/docs/components/admin-page-header.md +21 -3
- package/docs/components/admin-page-layout-shell.md +18 -4
- package/docs/components/admin-page-layout.md +34 -5
- package/docs/components/app-shell.md +31 -6
- package/docs/components/auto-complete-field.md +60 -0
- package/docs/components/avatar.md +18 -8
- package/docs/components/bar-chart.md +25 -7
- package/docs/components/breadcrumbs.md +15 -2
- package/docs/components/button.md +34 -15
- package/docs/components/card-skeleton.md +9 -3
- package/docs/components/change-password-form.md +23 -4
- package/docs/components/checkbox-field.md +38 -0
- package/docs/components/ckeditor-input.md +40 -8
- package/docs/components/color-picker-input.md +19 -8
- package/docs/components/command-palette.md +23 -2
- package/docs/components/confirm-dialog.md +36 -9
- package/docs/components/data-state.md +31 -6
- package/docs/components/date-field.md +39 -0
- package/docs/components/date-presets.md +19 -5
- package/docs/components/description-list.md +20 -2
- package/docs/components/dirty-form-guard.md +16 -4
- package/docs/components/donut-chart.md +24 -7
- package/docs/components/drawer.md +27 -8
- package/docs/components/empty-state.md +12 -2
- package/docs/components/error-boundary.md +16 -2
- package/docs/components/error-message.md +22 -3
- package/docs/components/field-shell.md +47 -0
- package/docs/components/file-dropzone.md +22 -6
- package/docs/components/filter-pannel.md +34 -7
- package/docs/components/forgot-password-form.md +23 -5
- package/docs/components/form-actions-bar.md +21 -2
- package/docs/components/form-field-render.md +36 -8
- package/docs/components/form-section.md +13 -1
- package/docs/components/form-wizard.md +34 -5
- package/docs/components/hidden-field.md +22 -6
- package/docs/components/index-column.md +25 -5
- package/docs/components/line-chart.md +25 -7
- package/docs/components/loading.md +14 -5
- package/docs/components/login-form.md +31 -6
- package/docs/components/mantis-data-table.md +61 -0
- package/docs/components/map-picker-client.md +29 -8
- package/docs/components/map-picker-osm.md +27 -9
- package/docs/components/map-picker.md +25 -4
- package/docs/components/mask-field.md +31 -0
- package/docs/components/menu-button.md +22 -7
- package/docs/components/modal.md +34 -9
- package/docs/components/multi-select-filter.md +25 -7
- package/docs/components/number-field.md +40 -0
- package/docs/components/otp-input.md +20 -7
- package/docs/components/page-tabs.md +23 -4
- package/docs/components/page-title.md +6 -1
- package/docs/components/paginated-table.md +36 -13
- package/docs/components/pagination.md +20 -7
- package/docs/components/password-input.md +20 -8
- package/docs/components/phone-input.md +17 -7
- package/docs/components/radio-group.md +39 -9
- package/docs/components/range-slider.md +18 -6
- package/docs/components/rating-input.md +19 -8
- package/docs/components/render-field.md +31 -3
- package/docs/components/reset-password-form.md +24 -4
- package/docs/components/rich-text-preview.md +17 -5
- package/docs/components/search-input.md +18 -7
- package/docs/components/select-field.md +55 -0
- package/docs/components/stat-card.md +14 -3
- package/docs/components/status-badge.md +17 -7
- package/docs/components/switch-field.md +32 -0
- package/docs/components/table-filter-field.md +22 -4
- package/docs/components/table-skeleton.md +9 -3
- package/docs/components/table-toolbar.md +18 -5
- package/docs/components/tag.md +16 -7
- package/docs/components/tags-input.md +21 -8
- package/docs/components/text-area.md +18 -8
- package/docs/components/text-field.md +32 -0
- package/docs/components/timeline.md +19 -3
- package/docs/components/toggle-inline-button.md +42 -10
- package/docs/components/upload-files-preview.md +23 -2
- package/docs/components/use-field-controller.md +58 -0
- package/docs/components/user-menu.md +26 -6
- package/docs/contracts/dependency-map.md +50 -52
- package/docs/contracts/field-controller.md +138 -0
- package/docs/contracts/style-imports.md +1 -20
- package/llms.txt +70 -72
- package/package.json +48 -11
- package/dist/components/Forms/AsyncSelect.d.ts +0 -20
- package/dist/components/Forms/AsyncSelect.d.ts.map +0 -1
- package/dist/components/Forms/AsyncSelect.js +0 -77
- package/dist/components/Forms/AsyncSelect.js.map +0 -1
- package/dist/components/Forms/Combobox.d.ts +0 -10
- package/dist/components/Forms/Combobox.d.ts.map +0 -1
- package/dist/components/Forms/Combobox.js +0 -11
- package/dist/components/Forms/Combobox.js.map +0 -1
- package/dist/components/Forms/CurrencyInput.d.ts +0 -12
- package/dist/components/Forms/CurrencyInput.d.ts.map +0 -1
- package/dist/components/Forms/CurrencyInput.js +0 -9
- package/dist/components/Forms/CurrencyInput.js.map +0 -1
- package/dist/components/Forms/DateInput.d.ts +0 -10
- package/dist/components/Forms/DateInput.d.ts.map +0 -1
- package/dist/components/Forms/DateInput.js +0 -11
- package/dist/components/Forms/DateInput.js.map +0 -1
- package/dist/components/Forms/DateRangeInput.d.ts +0 -10
- package/dist/components/Forms/DateRangeInput.d.ts.map +0 -1
- package/dist/components/Forms/DateRangeInput.js +0 -13
- package/dist/components/Forms/DateRangeInput.js.map +0 -1
- package/dist/components/Forms/DropDown.d.ts +0 -10
- package/dist/components/Forms/DropDown.d.ts.map +0 -1
- package/dist/components/Forms/DropDown.js +0 -11
- package/dist/components/Forms/DropDown.js.map +0 -1
- package/dist/components/Forms/MultiSelect.d.ts +0 -10
- package/dist/components/Forms/MultiSelect.d.ts.map +0 -1
- package/dist/components/Forms/MultiSelect.js +0 -13
- package/dist/components/Forms/MultiSelect.js.map +0 -1
- package/dist/components/Forms/NumberInput.d.ts +0 -10
- package/dist/components/Forms/NumberInput.d.ts.map +0 -1
- package/dist/components/Forms/NumberInput.js +0 -16
- package/dist/components/Forms/NumberInput.js.map +0 -1
- package/dist/components/Forms/Select.d.ts +0 -15
- package/dist/components/Forms/Select.d.ts.map +0 -1
- package/dist/components/Forms/Select.js +0 -48
- package/dist/components/Forms/Select.js.map +0 -1
- package/dist/components/Forms/Switch.d.ts +0 -18
- package/dist/components/Forms/Switch.d.ts.map +0 -1
- package/dist/components/Forms/Switch.js +0 -30
- package/dist/components/Forms/Switch.js.map +0 -1
- package/dist/components/Forms/TextInput.d.ts +0 -11
- package/dist/components/Forms/TextInput.d.ts.map +0 -1
- package/dist/components/Forms/TextInput.js +0 -12
- package/dist/components/Forms/TextInput.js.map +0 -1
- package/dist/components/Forms/TimePicker.d.ts +0 -13
- package/dist/components/Forms/TimePicker.d.ts.map +0 -1
- package/dist/components/Forms/TimePicker.js +0 -19
- package/dist/components/Forms/TimePicker.js.map +0 -1
- package/dist/components/Forms/Toggle.d.ts +0 -14
- package/dist/components/Forms/Toggle.d.ts.map +0 -1
- package/dist/components/Forms/Toggle.js +0 -10
- package/dist/components/Forms/Toggle.js.map +0 -1
- package/dist/components/Forms/types.d.ts +0 -9
- package/dist/components/Forms/types.d.ts.map +0 -1
- package/dist/components/Forms/types.js +0 -2
- package/dist/components/Forms/types.js.map +0 -1
- package/docs/components/async-select.md +0 -27
- package/docs/components/combobox.md +0 -19
- package/docs/components/currency-input.md +0 -21
- package/docs/components/date-input.md +0 -21
- package/docs/components/date-range-input.md +0 -20
- package/docs/components/drop-down.md +0 -26
- package/docs/components/multi-select.md +0 -22
- package/docs/components/number-input.md +0 -21
- package/docs/components/select.md +0 -28
- package/docs/components/switch.md +0 -24
- package/docs/components/text-input.md +0 -24
- package/docs/components/time-picker.md +0 -25
- package/docs/components/toggle.md +0 -24
- package/docs/contracts/component-doc-schema.md +0 -78
- 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
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
|
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:
|
|
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
|
-
|
|
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:
|
|
6
|
-
baseLibrary:
|
|
7
|
-
formContract:
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
|
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: '
|
|
13
|
-
- { name: size, type: '
|
|
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
|
-
|
|
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
|
|
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:
|
|
10
|
-
- { name: htmlFor, type: string, required:
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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.
|
package/docs/components/tag.md
CHANGED
|
@@ -2,17 +2,26 @@
|
|
|
2
2
|
name: Tag
|
|
3
3
|
category: feedback
|
|
4
4
|
import: '@mantis-core/ui/components/feedback/Tag'
|
|
5
|
-
whenToUse:
|
|
6
|
-
baseLibrary:
|
|
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:
|
|
10
|
-
- { name: severity, type: '''success'
|
|
11
|
-
- { name:
|
|
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
|
-
|
|
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:
|
|
6
|
-
baseLibrary:
|
|
7
|
-
formContract:
|
|
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:
|
|
11
|
-
- { name:
|
|
12
|
-
- { name:
|
|
13
|
-
- { name:
|
|
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
|
-
|
|
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/
|
|
7
|
-
formContract:
|
|
8
|
-
|
|
9
|
-
relatedComponents: [FormFieldRender, TextInput]
|
|
6
|
+
baseLibrary: '@primereact/ui/textarea'
|
|
7
|
+
formContract: FieldControllerProps
|
|
8
|
+
relatedComponents: ['TextField']
|
|
10
9
|
relatedNextCore: []
|
|
11
10
|
props:
|
|
12
|
-
- { name:
|
|
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
|
-
|
|
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:
|
|
6
|
-
baseLibrary:
|
|
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
|
-
|
|
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.
|