@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
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: MaskField
|
|
3
|
+
category: forms
|
|
4
|
+
import: '@mantis-core/ui/components/Forms/MaskField'
|
|
5
|
+
whenToUse: Generic masked text input (digit/letter/alphanumeric tokens) wired to react-hook-form; value is the masked display string.
|
|
6
|
+
baseLibrary: '@primereact/ui/inputtext'
|
|
7
|
+
formContract: FieldControllerProps
|
|
8
|
+
relatedComponents: ['PhoneInput', 'TextField']
|
|
9
|
+
relatedNextCore: []
|
|
10
|
+
props:
|
|
11
|
+
- { name: mask, type: string, required: true, description: "Pattern: '9'=digit, 'a'=letter, '*'=alphanumeric; any other character is a literal emitted automatically." }
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Example
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
import { MaskField } from '@mantis-core/ui/components/Forms/MaskField';
|
|
18
|
+
import { useForm } from 'react-hook-form';
|
|
19
|
+
|
|
20
|
+
function Example() {
|
|
21
|
+
const { control } = useForm({ defaultValues: { code: '' } });
|
|
22
|
+
return <MaskField name='code' control={control} mask='999-999' label='Code' />;
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Notes
|
|
27
|
+
|
|
28
|
+
- PR11 dropped the `inputmask` primitive — this wrapper owns masking itself over plain `InputText`, no `react-imask` dependency.
|
|
29
|
+
- Value = the **masked** string as displayed (e.g. `"(555) 123-4567"`), not the raw digits — that's exactly what gets stored in the form.
|
|
30
|
+
- Also exports `applyMask(raw, mask)`, the pure formatter used internally, for previewing/testing a mask outside the field.
|
|
31
|
+
- `PhoneInput` is the phone preset built on top of this (`mask="(999) 999-9999"` by default).
|
|
@@ -2,17 +2,32 @@
|
|
|
2
2
|
name: MenuButton
|
|
3
3
|
category: tables
|
|
4
4
|
import: '@mantis-core/ui/components/Tables/MenuButton'
|
|
5
|
-
whenToUse:
|
|
6
|
-
baseLibrary: primereact/
|
|
7
|
-
relatedComponents: [ActionColumn]
|
|
5
|
+
whenToUse: 'Row-action overlay menu — a trigger button that opens a popup list of actions; used inside `actionColumn`/table row cells, or standalone.'
|
|
6
|
+
baseLibrary: '@primereact/ui/menu'
|
|
7
|
+
relatedComponents: [ActionColumn, MantisDataTable]
|
|
8
8
|
relatedNextCore: []
|
|
9
9
|
props:
|
|
10
|
-
- { name:
|
|
11
|
-
- { name:
|
|
12
|
-
- { name:
|
|
10
|
+
- { name: label, type: string, required: false, description: 'Trigger button label.' }
|
|
11
|
+
- { name: icon, type: string, required: false, default: "'pi pi-cog'", description: 'Trigger button icon (PrimeIcons class).' }
|
|
12
|
+
- { name: items, type: 'ActionMenuItem[]', required: false, default: '[]' }
|
|
13
13
|
---
|
|
14
|
+
|
|
14
15
|
## Example
|
|
15
16
|
|
|
16
17
|
```tsx
|
|
17
|
-
|
|
18
|
+
import MenuButton, { type ActionMenuItem } from '@mantis-core/ui/components/Tables/MenuButton';
|
|
19
|
+
|
|
20
|
+
function Example() {
|
|
21
|
+
const items: ActionMenuItem[] = [
|
|
22
|
+
{ label: 'Edit', icon: 'pi pi-pencil', route: '/properties/1/edit' },
|
|
23
|
+
{ label: 'Delete', icon: 'pi pi-trash', command: () => console.log('delete') },
|
|
24
|
+
];
|
|
25
|
+
return <MenuButton items={items} label='Actions' />;
|
|
26
|
+
}
|
|
18
27
|
```
|
|
28
|
+
|
|
29
|
+
## Notes
|
|
30
|
+
|
|
31
|
+
- Not re-exported from the package root — import the deep path.
|
|
32
|
+
- `ActionMenuItem`: `label`, `icon?`, `route?` (navigates via `next/router`, wins over `command`), `command?` (ignored when `route` is set), `disabled?` (never fires `onSelect`).
|
|
33
|
+
- Migrated to PR11's compound `Menu`: `Menu.Root` owns its own open state; the trigger renders the migrated `Button` via `Menu.Trigger as={Button}` — PR11's `asChild` does NOT wire the trigger (no `aria-haspopup`, overlay never opens), so the `as` prop is required.
|
package/docs/components/modal.md
CHANGED
|
@@ -2,19 +2,44 @@
|
|
|
2
2
|
name: Modal
|
|
3
3
|
category: overlays
|
|
4
4
|
import: '@mantis-core/ui/components/overlays/Modal'
|
|
5
|
-
whenToUse:
|
|
6
|
-
baseLibrary:
|
|
5
|
+
whenToUse: Controlled dialog/modal; composes PR11's headless Dialog compound (Root/Portal/Backdrop/Positioner/Popup/Header/Content/Footer) behind a simple `open`/`title`/`footer` API.
|
|
6
|
+
baseLibrary: '@primereact/ui/dialog'
|
|
7
|
+
relatedComponents: ['Drawer', 'ConfirmDialog', 'CommandPalette']
|
|
7
8
|
relatedNextCore: []
|
|
8
9
|
props:
|
|
9
|
-
- { name:
|
|
10
|
-
- { name:
|
|
11
|
-
- { name:
|
|
12
|
-
- { name: footer, type: ReactNode, required: false }
|
|
13
|
-
- { name:
|
|
14
|
-
- { name:
|
|
10
|
+
- { name: open, type: boolean, required: true, description: 'Controlled visibility.' }
|
|
11
|
+
- { name: onOpenChange, type: '(open: boolean) => void', required: true, description: 'Fires with the next open value when the backdrop/close toggles it.' }
|
|
12
|
+
- { name: title, type: ReactNode, required: false, description: 'Header title. Omit to render no header.' }
|
|
13
|
+
- { name: footer, type: ReactNode, required: false, description: 'Footer content, usually action buttons. Omit to render no footer.' }
|
|
14
|
+
- { name: size, type: "'sm' | 'md' | 'lg' | 'xl'", required: false, default: "'md'", description: 'Popup width preset.' }
|
|
15
|
+
- { name: modal, type: boolean, required: false, default: 'true', description: 'Whether the dialog blocks pointer events behind it.' }
|
|
16
|
+
- { name: className, type: string, required: false, description: 'Extra class on the Popup element.' }
|
|
17
|
+
- { name: children, type: ReactNode, required: false }
|
|
15
18
|
---
|
|
19
|
+
|
|
16
20
|
## Example
|
|
17
21
|
|
|
18
22
|
```tsx
|
|
19
|
-
|
|
23
|
+
import Modal from '@mantis-core/ui/components/overlays/Modal';
|
|
24
|
+
import { useState } from 'react';
|
|
25
|
+
|
|
26
|
+
function Example() {
|
|
27
|
+
const [open, setOpen] = useState(false);
|
|
28
|
+
return (
|
|
29
|
+
<Modal
|
|
30
|
+
open={open}
|
|
31
|
+
onOpenChange={setOpen}
|
|
32
|
+
title='Edit property'
|
|
33
|
+
size='lg'
|
|
34
|
+
footer={<button onClick={() => setOpen(false)}>Close</button>}>
|
|
35
|
+
<p>Modal content</p>
|
|
36
|
+
</Modal>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
20
39
|
```
|
|
40
|
+
|
|
41
|
+
## Notes
|
|
42
|
+
|
|
43
|
+
- Controlled-only: `open`/`onOpenChange`, not `visible`/`onHide` — matches PR11's Root controlled-state naming.
|
|
44
|
+
- Width is a class on the Popup (from the `size` preset), not a `style` prop; override via `className` for custom widths.
|
|
45
|
+
- No `requiredStyles` — preset-themed.
|
|
@@ -2,17 +2,35 @@
|
|
|
2
2
|
name: MultiSelectFilter
|
|
3
3
|
category: tables
|
|
4
4
|
import: '@mantis-core/ui/components/Tables/filters/MultiSelectFilter'
|
|
5
|
-
whenToUse:
|
|
6
|
-
baseLibrary: primereact/
|
|
7
|
-
relatedComponents: [FilterPannel]
|
|
5
|
+
whenToUse: 'Multi-value header filter over the themed PR11 `Select` (multiple mode) — drops into a `ColumnDef`''s `filterElement` escape hatch when a column needs array-valued filtering instead of the scalar `filters` map.'
|
|
6
|
+
baseLibrary: '@primereact/ui/select'
|
|
7
|
+
relatedComponents: [FilterPannel, MantisDataTable]
|
|
8
8
|
relatedNextCore: []
|
|
9
9
|
props:
|
|
10
|
-
- { name:
|
|
11
|
-
- { name:
|
|
12
|
-
- { name:
|
|
10
|
+
- { name: options, type: 'FilterOption[]', required: true }
|
|
11
|
+
- { name: value, type: 'string[]', required: false, default: '[]' }
|
|
12
|
+
- { name: onChange, type: '(value: string[]) => void', required: true }
|
|
13
|
+
- { name: loading, type: boolean, required: false, default: 'false', description: 'Disables the control while the option list loads.' }
|
|
14
|
+
- { name: placeholder, type: string, required: false, default: "'Seleccione'" }
|
|
13
15
|
---
|
|
16
|
+
|
|
14
17
|
## Example
|
|
15
18
|
|
|
16
19
|
```tsx
|
|
17
|
-
|
|
20
|
+
import MultiSelectFilter from '@mantis-core/ui/components/Tables/filters/MultiSelectFilter';
|
|
21
|
+
import { useState } from 'react';
|
|
22
|
+
|
|
23
|
+
function Example() {
|
|
24
|
+
const [selected, setSelected] = useState<string[]>([]);
|
|
25
|
+
const options = [
|
|
26
|
+
{ label: 'Active', value: 'active' },
|
|
27
|
+
{ label: 'Draft', value: 'draft' },
|
|
28
|
+
];
|
|
29
|
+
return <MultiSelectFilter options={options} value={selected} onChange={setSelected} />;
|
|
30
|
+
}
|
|
18
31
|
```
|
|
32
|
+
|
|
33
|
+
## Notes
|
|
34
|
+
|
|
35
|
+
- Not re-exported from the package root — import the deep path.
|
|
36
|
+
- Migrated replacement for the PR10 `primereact/multiselect`; page-owned `value`/`onChange` (not RHF), so it fits `ColumnDef.filterElement` directly — it does not accept the scalar `{ value, onChange }` shape used by the built-in `text`/`dropdown` filter presets.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: NumberField
|
|
3
|
+
category: forms
|
|
4
|
+
import: '@mantis-core/ui/components/Forms/NumberField'
|
|
5
|
+
whenToUse: Numeric input (integer, decimal, or currency) wired to react-hook-form.
|
|
6
|
+
baseLibrary: '@primereact/ui/inputnumber'
|
|
7
|
+
formContract: FieldControllerProps
|
|
8
|
+
relatedComponents: ['TextField', 'SelectField']
|
|
9
|
+
relatedNextCore: []
|
|
10
|
+
props:
|
|
11
|
+
- { name: mode, type: "'decimal' | 'currency'", required: false, description: 'PR11 InputNumber Root config. `currency` is the sole replacement for the removed CurrencyInput wrapper.' }
|
|
12
|
+
- { name: currency, type: string, required: false, description: 'ISO currency code, only used when mode="currency" (e.g. "USD").' }
|
|
13
|
+
- { name: locale, type: string, required: false, description: 'Intl locale for formatting.' }
|
|
14
|
+
- { name: min, type: number, required: false }
|
|
15
|
+
- { name: max, type: number, required: false }
|
|
16
|
+
- { name: step, type: number, required: false }
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Example
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
import { NumberField } from '@mantis-core/ui/components/Forms/NumberField';
|
|
23
|
+
import { useForm } from 'react-hook-form';
|
|
24
|
+
|
|
25
|
+
function Example() {
|
|
26
|
+
const { control } = useForm({ defaultValues: { price: null as number | null } });
|
|
27
|
+
return (
|
|
28
|
+
<NumberField name='price' control={control} label='Price' mode='currency' currency='USD' />
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Notes
|
|
34
|
+
|
|
35
|
+
- Value is `number | null` — an emptied input normalizes to `null` (not `NaN`), so `number | null`
|
|
36
|
+
RHF fields can actually be cleared.
|
|
37
|
+
- Compound primitive: emits `onValueChange` with a `{ value }` event, not native `onChange`. The
|
|
38
|
+
wrapper handles this internally; callers just get a plain controlled number value.
|
|
39
|
+
- Root config (`mode`, `currency`, `locale`, `min`, `max`, `step`, …) lives on `InputNumberRootProps`
|
|
40
|
+
and passes through via `...rest`.
|
|
@@ -2,17 +2,30 @@
|
|
|
2
2
|
name: OtpInput
|
|
3
3
|
category: forms
|
|
4
4
|
import: '@mantis-core/ui/components/Forms/OtpInput'
|
|
5
|
-
whenToUse:
|
|
6
|
-
baseLibrary:
|
|
7
|
-
formContract:
|
|
5
|
+
whenToUse: RHF-bound one-time-password input over PR11's compound InputOtp; renders `length` segmented boxes.
|
|
6
|
+
baseLibrary: '@primereact/ui/inputotp'
|
|
7
|
+
formContract: ChoiceFieldControllerProps
|
|
8
|
+
relatedComponents: []
|
|
8
9
|
relatedNextCore: []
|
|
9
10
|
props:
|
|
10
|
-
- { name:
|
|
11
|
-
- { name:
|
|
12
|
-
- { name:
|
|
11
|
+
- { name: length, type: number, required: false, default: '6', description: 'How many segmented slots render.' }
|
|
12
|
+
- { name: integerOnly, type: boolean, required: false, description: 'Restrict input to digits.' }
|
|
13
|
+
- { name: mask, type: boolean, required: false, description: 'Obscure each slot like a password.' }
|
|
13
14
|
---
|
|
15
|
+
|
|
14
16
|
## Example
|
|
15
17
|
|
|
16
18
|
```tsx
|
|
17
|
-
|
|
19
|
+
import { OtpInput } from '@mantis-core/ui/components/Forms/OtpInput';
|
|
20
|
+
import { useForm } from 'react-hook-form';
|
|
21
|
+
|
|
22
|
+
function Example() {
|
|
23
|
+
const { control } = useForm({ defaultValues: { code: '' } });
|
|
24
|
+
return <OtpInput name='code' control={control} label='Código' length={6} integerOnly />;
|
|
25
|
+
}
|
|
18
26
|
```
|
|
27
|
+
|
|
28
|
+
## Notes
|
|
29
|
+
|
|
30
|
+
- Value shape: the concatenated `string` code, `""` when unset. Typing advances focus, backspace retreats, paste distributes across slots.
|
|
31
|
+
- Uses `ChoiceFieldControllerProps` (bucket B) — no `labelMode="float"`/addons/`variant`, defaults `labelMode` to `top`.
|
|
@@ -2,15 +2,34 @@
|
|
|
2
2
|
name: PageTabs
|
|
3
3
|
category: navigation
|
|
4
4
|
import: '@mantis-core/ui/components/navigation/PageTabs'
|
|
5
|
-
whenToUse:
|
|
6
|
-
baseLibrary:
|
|
5
|
+
whenToUse: Page-level navigation tab bar (no panels) over PR11's Tabs compound; each tab navigates via `href` (Next.js router) or runs a `command`. Active tab is derived from the current pathname.
|
|
6
|
+
baseLibrary: '@primereact/ui/tabs'
|
|
7
|
+
relatedComponents: ['AppShell']
|
|
7
8
|
relatedNextCore: []
|
|
8
9
|
props:
|
|
9
10
|
- { name: tabs, type: '{ label: string; icon?: ReactNode; href?: string; command?: () => void }[]', required: true }
|
|
10
|
-
- { name: activeIndex, type: number, required: false }
|
|
11
|
+
- { name: activeIndex, type: number, required: false, description: 'Forces the active tab index; otherwise derived from the pathname (matched against the tab `href`).' }
|
|
12
|
+
- { name: className, type: string, required: false, default: "'mantis-core-page-tabs'" }
|
|
11
13
|
---
|
|
14
|
+
|
|
12
15
|
## Example
|
|
13
16
|
|
|
14
17
|
```tsx
|
|
15
|
-
|
|
18
|
+
import PageTabs from '@mantis-core/ui/components/navigation/PageTabs';
|
|
19
|
+
|
|
20
|
+
function Example() {
|
|
21
|
+
return (
|
|
22
|
+
<PageTabs
|
|
23
|
+
tabs={[
|
|
24
|
+
{ label: 'General', href: '/admin/settings' },
|
|
25
|
+
{ label: 'Security', href: '/admin/settings/security' },
|
|
26
|
+
]}
|
|
27
|
+
/>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
16
30
|
```
|
|
31
|
+
|
|
32
|
+
## Notes
|
|
33
|
+
|
|
34
|
+
- This is a nav bar, not a tabbed content panel — selecting a tab pushes `href` or runs `command`, it does not toggle any `Tabs.Panel`.
|
|
35
|
+
- No `requiredStyles` — preset-themed.
|
|
@@ -8,8 +8,13 @@ relatedNextCore: []
|
|
|
8
8
|
props:
|
|
9
9
|
- { name: children, type: ReactNode, required: true }
|
|
10
10
|
---
|
|
11
|
+
|
|
11
12
|
## Example
|
|
12
13
|
|
|
13
14
|
```tsx
|
|
14
|
-
|
|
15
|
+
import PageTitle from '@mantis-core/ui/components/pages/PageTitle';
|
|
16
|
+
|
|
17
|
+
function Example() {
|
|
18
|
+
return <PageTitle>Propiedades en Venta</PageTitle>;
|
|
19
|
+
}
|
|
15
20
|
```
|
|
@@ -2,27 +2,50 @@
|
|
|
2
2
|
name: PaginatedTable
|
|
3
3
|
category: tables
|
|
4
4
|
import: '@mantis-core/ui/components/Tables/PaginatedTable'
|
|
5
|
-
whenToUse: '
|
|
6
|
-
baseLibrary: primereact/datatable
|
|
5
|
+
whenToUse: 'Thin preset over MantisDataTable with `paginator` on by default plus optional index/action columns — the default table shell for admin list pages.'
|
|
6
|
+
baseLibrary: '@primereact/ui/datatable'
|
|
7
7
|
requiredStyles: [scss/table.scss]
|
|
8
|
-
relatedComponents: [ActionColumn, IndexColumn, TableToolbar, FilterPannel]
|
|
8
|
+
relatedComponents: [MantisDataTable, ActionColumn, IndexColumn, TableToolbar, FilterPannel]
|
|
9
9
|
relatedNextCore: []
|
|
10
10
|
props:
|
|
11
|
-
- { name:
|
|
12
|
-
- { name:
|
|
13
|
-
- { name:
|
|
14
|
-
- { name:
|
|
15
|
-
- { name:
|
|
16
|
-
- { name:
|
|
17
|
-
- { name:
|
|
11
|
+
- { name: rows, type: 'T[]', required: true }
|
|
12
|
+
- { name: columns, type: 'ColumnDef<T>[]', required: true }
|
|
13
|
+
- { name: paginator, type: boolean, required: false, default: 'true', description: 'PR11 Root prop; PaginatedTable flips the MantisDataTable default on.' }
|
|
14
|
+
- { name: showIndexColumn, type: boolean, required: false, default: 'true', description: 'Prepend a 1-based row-number column.' }
|
|
15
|
+
- { name: indexColumnOptions, type: 'Partial<ColumnDef<T>>', required: false, description: 'Overrides for the prepended index column.' }
|
|
16
|
+
- { name: showActionColumn, type: boolean, required: false, default: 'false', description: 'Append a row-action menu column.' }
|
|
17
|
+
- { name: actionColumnItems, type: '(row: T) => ActionMenuItem[]', required: false, description: 'Per-row action items for the appended action column.' }
|
|
18
|
+
- { name: actionColumnOptions, type: 'ActionColumnOptions<T>', required: false, description: 'Overrides for the appended action column.' }
|
|
18
19
|
---
|
|
20
|
+
|
|
19
21
|
## Example
|
|
20
22
|
|
|
21
23
|
```tsx
|
|
22
|
-
|
|
24
|
+
import { PaginatedTable } from '@mantis-core/ui/components/Tables/PaginatedTable';
|
|
25
|
+
import type { ColumnDef } from '@mantis-core/ui/components/Tables/columns';
|
|
26
|
+
|
|
27
|
+
interface Property {
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const COLUMNS: ColumnDef<Property>[] = [{ field: 'name', header: 'Name' }];
|
|
33
|
+
|
|
34
|
+
function Example() {
|
|
35
|
+
const rows: Property[] = [{ id: '1', name: 'Casa Ceibos' }];
|
|
36
|
+
return (
|
|
37
|
+
<PaginatedTable
|
|
38
|
+
rows={rows}
|
|
39
|
+
columns={COLUMNS}
|
|
40
|
+
rowsPerPage={10}
|
|
41
|
+
showActionColumn
|
|
42
|
+
actionColumnItems={(p) => [{ label: 'Edit', route: `/properties/${p.id}/edit` }]}
|
|
43
|
+
/>
|
|
44
|
+
);
|
|
45
|
+
}
|
|
23
46
|
```
|
|
24
47
|
|
|
25
48
|
## Notes
|
|
26
49
|
|
|
27
|
-
-
|
|
28
|
-
-
|
|
50
|
+
- Reshaped from the PR10 children-driven `PaginatedTable` to the descriptor-driven PR11 model: it assembles the final `columns` array (index column prepended, action column appended) and forwards everything else — including `rows`, `rowsPerPage`, and any other `MantisDataTableProps<T>`/PR11 root passthrough — straight to `MantisDataTable`.
|
|
51
|
+
- The old `value`/`totalRecords`/`lazy` prop shape is gone; use `rows`/`columns`/`rowsPerPage` and the PR11 root passthrough (`paginator`, `lazy`, `onLazyLoad`, …) documented on `MantisDataTable`.
|
|
@@ -2,23 +2,36 @@
|
|
|
2
2
|
name: Pagination
|
|
3
3
|
category: feedback
|
|
4
4
|
import: '@mantis-core/ui/components/ui/Pagination'
|
|
5
|
-
whenToUse: Standalone
|
|
5
|
+
whenToUse: Standalone page-number control (custom Tailwind markup, not PrimeReact Paginator); use when not relying on PaginatedTable's built-in paginator.
|
|
6
6
|
baseLibrary: custom
|
|
7
|
-
relatedComponents: [
|
|
7
|
+
relatedComponents: ['PaginatedTable']
|
|
8
8
|
relatedNextCore: []
|
|
9
9
|
props:
|
|
10
|
-
- { name: totalRecords, type: number, required: true }
|
|
11
|
-
- { name: pageSize, type: number, required: true }
|
|
12
10
|
- { name: currentPage, type: number, required: true }
|
|
11
|
+
- { name: totalPages, type: number, required: true }
|
|
13
12
|
- { name: onPageChange, type: '(page: number) => void', required: true }
|
|
13
|
+
- { name: hasNextPage, type: boolean, required: false, default: 'currentPage < totalPages' }
|
|
14
|
+
- { name: hasPreviousPage, type: boolean, required: false, default: 'currentPage > 1' }
|
|
15
|
+
- { name: maxVisible, type: number, required: false, default: '7' }
|
|
16
|
+
- { name: showFirstLast, type: boolean, required: false, default: 'true' }
|
|
17
|
+
- { name: disabled, type: boolean, required: false, default: 'false' }
|
|
18
|
+
- { name: className, type: string, required: false }
|
|
14
19
|
---
|
|
20
|
+
|
|
15
21
|
## Example
|
|
16
22
|
|
|
17
23
|
```tsx
|
|
18
|
-
|
|
24
|
+
import { Pagination } from '@mantis-core/ui/components/ui/Pagination';
|
|
25
|
+
import { useState } from 'react';
|
|
26
|
+
|
|
27
|
+
function Example() {
|
|
28
|
+
const [page, setPage] = useState(1);
|
|
29
|
+
return <Pagination currentPage={page} totalPages={12} onPageChange={setPage} />;
|
|
30
|
+
}
|
|
19
31
|
```
|
|
20
32
|
|
|
21
33
|
## Notes
|
|
22
34
|
|
|
23
|
-
-
|
|
24
|
-
- `
|
|
35
|
+
- Renders `null` when `totalPages <= 1`.
|
|
36
|
+
- Same import path also exports `PaginationInfo` — `{ currentPage, pageSize, totalCount, className? }`, a "Showing X to Y of Z results" line — and `PageSizeSelector` — `{ pageSize, onPageSizeChange, options?: number[] (default `[10, 25, 50, 100]`), disabled?, className? }`, a page-size `<select>`.
|
|
37
|
+
- `paginator.scss` styles PrimeReact's own paginator markup (used e.g. by `PaginatedTable`), not this component — no `requiredStyles` here.
|
|
@@ -2,18 +2,30 @@
|
|
|
2
2
|
name: PasswordInput
|
|
3
3
|
category: forms
|
|
4
4
|
import: '@mantis-core/ui/components/Forms/PasswordInput'
|
|
5
|
-
whenToUse:
|
|
6
|
-
baseLibrary:
|
|
7
|
-
formContract:
|
|
8
|
-
|
|
5
|
+
whenToUse: RHF-bound password field over PR11 InputPassword with a native show/hide toggle and a lightweight strength meter.
|
|
6
|
+
baseLibrary: '@primereact/ui/inputpassword'
|
|
7
|
+
formContract: FieldControllerProps
|
|
8
|
+
relatedComponents: ['TextField']
|
|
9
9
|
relatedNextCore: []
|
|
10
10
|
props:
|
|
11
|
-
- { name:
|
|
12
|
-
- { name:
|
|
13
|
-
- { name: showToggle, type: boolean, required: false, default: 'true' }
|
|
11
|
+
- { name: showToggle, type: boolean, required: false, default: 'true', description: 'Renders the Eye/EyeSlash show/hide toggle.' }
|
|
12
|
+
- { name: feedback, type: boolean, required: false, default: 'true', description: 'Renders the strength meter below the input.' }
|
|
14
13
|
---
|
|
14
|
+
|
|
15
15
|
## Example
|
|
16
16
|
|
|
17
17
|
```tsx
|
|
18
|
-
|
|
18
|
+
import { PasswordInput } from '@mantis-core/ui/components/Forms/PasswordInput';
|
|
19
|
+
import { useForm } from 'react-hook-form';
|
|
20
|
+
|
|
21
|
+
function Example() {
|
|
22
|
+
const { control } = useForm({ defaultValues: { password: '' } });
|
|
23
|
+
return <PasswordInput name='password' control={control} label='Contraseña' rules={{ required: true }} />;
|
|
24
|
+
}
|
|
19
25
|
```
|
|
26
|
+
|
|
27
|
+
## Notes
|
|
28
|
+
|
|
29
|
+
- Show/hide uses PR11 `InputPassword`'s own native mask state (`mask`/`onMaskChange`), not a custom-positioned button.
|
|
30
|
+
- `feedback` renders a deterministic 0–4 strength score from length + character-class variety — not zxcvbn or any external scoring lib.
|
|
31
|
+
- `variant`/`size` are not exposed: `InputPasswordProps` doesn't carry them in `11.0.0-rc.1`, unlike `TextField`.
|
|
@@ -2,17 +2,27 @@
|
|
|
2
2
|
name: PhoneInput
|
|
3
3
|
category: forms
|
|
4
4
|
import: '@mantis-core/ui/components/Forms/PhoneInput'
|
|
5
|
-
whenToUse:
|
|
6
|
-
baseLibrary:
|
|
7
|
-
formContract:
|
|
5
|
+
whenToUse: Phone-number preset of MaskField; defaults to a US-style (999) 999-9999 mask.
|
|
6
|
+
baseLibrary: '@primereact/ui/inputtext'
|
|
7
|
+
formContract: FieldControllerProps
|
|
8
|
+
relatedComponents: ['MaskField']
|
|
8
9
|
relatedNextCore: []
|
|
9
10
|
props:
|
|
10
|
-
- { name:
|
|
11
|
-
- { name: mask, type: string, required: false, default: '''(999) 999-9999''' }
|
|
12
|
-
- { name: block, type: boolean, required: false }
|
|
11
|
+
- { name: mask, type: string, required: false, default: "'(999) 999-9999'", description: 'Override the phone mask for other formats.' }
|
|
13
12
|
---
|
|
13
|
+
|
|
14
14
|
## Example
|
|
15
15
|
|
|
16
16
|
```tsx
|
|
17
|
-
|
|
17
|
+
import { PhoneInput } from '@mantis-core/ui/components/Forms/PhoneInput';
|
|
18
|
+
import { useForm } from 'react-hook-form';
|
|
19
|
+
|
|
20
|
+
function Example() {
|
|
21
|
+
const { control } = useForm({ defaultValues: { phone: '' } });
|
|
22
|
+
return <PhoneInput name='phone' control={control} label='Teléfono' />;
|
|
23
|
+
}
|
|
18
24
|
```
|
|
25
|
+
|
|
26
|
+
## Notes
|
|
27
|
+
|
|
28
|
+
- Thin preset over `MaskField` — no rendering logic of its own, just a default `mask`. Value = the masked string (e.g. `"(555) 123-4567"`).
|
|
@@ -2,19 +2,49 @@
|
|
|
2
2
|
name: RadioGroup
|
|
3
3
|
category: forms
|
|
4
4
|
import: '@mantis-core/ui/components/Forms/RadioGroup'
|
|
5
|
-
whenToUse:
|
|
6
|
-
baseLibrary:
|
|
7
|
-
formContract:
|
|
5
|
+
whenToUse: Single-choice radio group over PR11's RadioButtonGroup; value is the selected option's value.
|
|
6
|
+
baseLibrary: '@primereact/ui/radiobutton'
|
|
7
|
+
formContract: ChoiceFieldControllerProps
|
|
8
|
+
relatedComponents: ['ToggleInlineButton', 'SelectField']
|
|
8
9
|
relatedNextCore: []
|
|
9
10
|
props:
|
|
10
|
-
- { name:
|
|
11
|
-
- { name:
|
|
12
|
-
- { name:
|
|
13
|
-
- { name:
|
|
14
|
-
- { name: className, type: string, required: false }
|
|
11
|
+
- { name: options, type: 'Record<string, unknown>[]', required: true, description: 'Option rows rendered as radio items.' }
|
|
12
|
+
- { name: optionLabel, type: string, required: false, default: '''label''', description: 'Key read for each option''s display label.' }
|
|
13
|
+
- { name: optionValue, type: string, required: false, default: '''value''', description: 'Key read for each option''s bound value.' }
|
|
14
|
+
- { name: renderOption, type: '(option: Record<string, unknown>, index: number) => ReactNode', required: false, description: 'Escape hatch: full custom per-item label render.' }
|
|
15
15
|
---
|
|
16
|
+
|
|
16
17
|
## Example
|
|
17
18
|
|
|
18
19
|
```tsx
|
|
19
|
-
|
|
20
|
+
import { RadioGroup } from '@mantis-core/ui/components/Forms/RadioGroup';
|
|
21
|
+
import { useForm } from 'react-hook-form';
|
|
22
|
+
|
|
23
|
+
const PLANS = [
|
|
24
|
+
{ label: 'Basic', value: 'basic' },
|
|
25
|
+
{ label: 'Pro', value: 'pro' },
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
function Example() {
|
|
29
|
+
const { control } = useForm({ defaultValues: { plan: 'basic' } });
|
|
30
|
+
return (
|
|
31
|
+
<RadioGroup
|
|
32
|
+
name='plan'
|
|
33
|
+
control={control}
|
|
34
|
+
label='Plan'
|
|
35
|
+
options={PLANS}
|
|
36
|
+
optionLabel='label'
|
|
37
|
+
optionValue='value'
|
|
38
|
+
/>
|
|
39
|
+
);
|
|
40
|
+
}
|
|
20
41
|
```
|
|
42
|
+
|
|
43
|
+
## Notes
|
|
44
|
+
|
|
45
|
+
- `labelMode` defaults to `'top'` for this wrapper (not the global config default).
|
|
46
|
+
- PR11 `11.0.0-rc.1` gotcha: the styled `RadioButtonGroup` and `RadioButton.Root` are wired through
|
|
47
|
+
two different React contexts in this rc, so the group's `value`/`onValueChange` never reaches its
|
|
48
|
+
children (verified in-browser). Until fixed upstream, this wrapper binds each `RadioButton.Root`
|
|
49
|
+
individually via its documented `checked`/`onCheckedChange` props; `RadioButtonGroup` itself is
|
|
50
|
+
used for layout/styling only, not for value propagation.
|
|
@@ -2,19 +2,31 @@
|
|
|
2
2
|
name: RangeSlider
|
|
3
3
|
category: forms
|
|
4
4
|
import: '@mantis-core/ui/components/Forms/RangeSlider'
|
|
5
|
-
whenToUse: '
|
|
6
|
-
baseLibrary:
|
|
7
|
-
formContract:
|
|
5
|
+
whenToUse: RHF-bound slider over PR11's compound Slider; single-handle by default, dual-handle range when the field holds a [number, number] tuple.
|
|
6
|
+
baseLibrary: '@primereact/ui/slider'
|
|
7
|
+
formContract: ChoiceFieldControllerProps
|
|
8
|
+
relatedComponents: []
|
|
8
9
|
relatedNextCore: []
|
|
9
10
|
props:
|
|
10
|
-
- { name: controller, type: ControllerProps, required: true }
|
|
11
11
|
- { name: min, type: number, required: false }
|
|
12
12
|
- { name: max, type: number, required: false }
|
|
13
13
|
- { name: step, type: number, required: false }
|
|
14
|
-
- { name:
|
|
14
|
+
- { name: orientation, type: "'horizontal' | 'vertical'", required: false }
|
|
15
15
|
---
|
|
16
|
+
|
|
16
17
|
## Example
|
|
17
18
|
|
|
18
19
|
```tsx
|
|
19
|
-
|
|
20
|
+
import { RangeSlider } from '@mantis-core/ui/components/Forms/RangeSlider';
|
|
21
|
+
import { useForm } from 'react-hook-form';
|
|
22
|
+
|
|
23
|
+
function Example() {
|
|
24
|
+
const { control } = useForm({ defaultValues: { price: 100 } });
|
|
25
|
+
return <RangeSlider name='price' control={control} label='Precio' min={0} max={500} />;
|
|
26
|
+
}
|
|
20
27
|
```
|
|
28
|
+
|
|
29
|
+
## Notes
|
|
30
|
+
|
|
31
|
+
- Value shape mirrors PR11 `Slider`: a scalar `number` (single handle) by default, or a `[number, number]` tuple (two handles) when the RHF field holds an array.
|
|
32
|
+
- Uses `ChoiceFieldControllerProps` (bucket B); `labelMode` defaults to `top` — a squeezed inline slider is unusable beside a label.
|
|
@@ -2,18 +2,29 @@
|
|
|
2
2
|
name: RatingInput
|
|
3
3
|
category: forms
|
|
4
4
|
import: '@mantis-core/ui/components/Forms/RatingInput'
|
|
5
|
-
whenToUse:
|
|
6
|
-
baseLibrary:
|
|
7
|
-
formContract:
|
|
5
|
+
whenToUse: RHF-bound star rating over PR11's compound Rating; stores a numeric value.
|
|
6
|
+
baseLibrary: '@primereact/ui/rating'
|
|
7
|
+
formContract: ChoiceFieldControllerProps
|
|
8
|
+
relatedComponents: []
|
|
8
9
|
relatedNextCore: []
|
|
9
10
|
props:
|
|
10
|
-
- { name:
|
|
11
|
-
- { name: stars, type: number, required: false, default: '5' }
|
|
12
|
-
- { name: cancel, type: boolean, required: false }
|
|
13
|
-
- { name: block, type: boolean, required: false }
|
|
11
|
+
- { name: stars, type: number, required: false, default: '5', description: 'How many star options render.' }
|
|
14
12
|
---
|
|
13
|
+
|
|
15
14
|
## Example
|
|
16
15
|
|
|
17
16
|
```tsx
|
|
18
|
-
|
|
17
|
+
import { RatingInput } from '@mantis-core/ui/components/Forms/RatingInput';
|
|
18
|
+
import { useForm } from 'react-hook-form';
|
|
19
|
+
|
|
20
|
+
function Example() {
|
|
21
|
+
const { control } = useForm({ defaultValues: { score: null as number | null } });
|
|
22
|
+
return <RatingInput name='score' control={control} label='Puntaje' stars={5} />;
|
|
23
|
+
}
|
|
19
24
|
```
|
|
25
|
+
|
|
26
|
+
## Notes
|
|
27
|
+
|
|
28
|
+
- Value shape: `number` (stars selected), `null` when unset.
|
|
29
|
+
- Whole-star by default (`allowHalf={false}`) so the bound value stays an integer score; pass `allowHalf` to opt back into PR11's half-star behavior.
|
|
30
|
+
- Uses `ChoiceFieldControllerProps` (bucket B); `labelMode` defaults to `top`.
|