@mantis-core/ui 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +144 -0
- package/COMPONENTS.md +113 -15
- package/README.md +13 -6
- 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 +39 -12
- package/docs/components/admin-page-configurator.md +42 -0
- package/docs/components/admin-page-header.md +32 -16
- package/docs/components/admin-page-layout-shell.md +36 -0
- package/docs/components/admin-page-layout.md +41 -21
- package/docs/components/app-shell.md +45 -0
- package/docs/components/auto-complete-field.md +60 -0
- package/docs/components/avatar.md +29 -0
- package/docs/components/bar-chart.md +39 -0
- package/docs/components/breadcrumbs.md +28 -0
- package/docs/components/button.md +41 -17
- package/docs/components/card-skeleton.md +21 -0
- package/docs/components/change-password-form.md +36 -0
- package/docs/components/checkbox-field.md +38 -0
- package/docs/components/ckeditor-input.md +47 -16
- package/docs/components/color-picker-input.md +30 -0
- package/docs/components/command-palette.md +38 -0
- package/docs/components/confirm-dialog.md +45 -16
- package/docs/components/data-state.md +39 -14
- package/docs/components/date-field.md +39 -0
- package/docs/components/date-presets.md +32 -0
- package/docs/components/description-list.md +34 -0
- package/docs/components/dirty-form-guard.md +28 -24
- package/docs/components/donut-chart.md +38 -0
- package/docs/components/drawer.md +38 -0
- package/docs/components/empty-state.md +28 -0
- package/docs/components/error-boundary.md +31 -0
- package/docs/components/error-message.md +29 -8
- package/docs/components/field-shell.md +47 -0
- package/docs/components/file-dropzone.md +45 -17
- package/docs/components/filter-pannel.md +40 -15
- package/docs/components/forgot-password-form.md +36 -0
- package/docs/components/form-actions-bar.md +47 -17
- package/docs/components/form-field-render.md +43 -15
- package/docs/components/form-section.md +26 -10
- package/docs/components/form-wizard.md +47 -0
- package/docs/components/hidden-field.md +27 -14
- package/docs/components/index-column.md +31 -8
- package/docs/components/line-chart.md +39 -0
- package/docs/components/loading.md +23 -12
- package/docs/components/login-form.md +47 -0
- package/docs/components/mantis-data-table.md +61 -0
- package/docs/components/map-picker-client.md +35 -14
- package/docs/components/map-picker-osm.md +33 -13
- package/docs/components/map-picker.md +34 -16
- package/docs/components/mask-field.md +31 -0
- package/docs/components/menu-button.md +28 -17
- package/docs/components/modal.md +45 -0
- package/docs/components/multi-select-filter.md +31 -15
- package/docs/components/number-field.md +40 -0
- package/docs/components/otp-input.md +31 -0
- package/docs/components/page-tabs.md +35 -0
- package/docs/components/page-title.md +15 -8
- package/docs/components/paginated-table.md +42 -26
- package/docs/components/pagination.md +28 -18
- package/docs/components/password-input.md +31 -0
- package/docs/components/phone-input.md +28 -0
- package/docs/components/radio-group.md +50 -0
- package/docs/components/range-slider.md +32 -0
- package/docs/components/rating-input.md +30 -0
- package/docs/components/render-field.md +41 -18
- package/docs/components/reset-password-form.md +37 -0
- package/docs/components/rich-text-preview.md +26 -13
- package/docs/components/search-input.md +30 -0
- package/docs/components/select-field.md +55 -0
- package/docs/components/stat-card.md +30 -0
- package/docs/components/status-badge.md +25 -9
- package/docs/components/switch-field.md +32 -0
- package/docs/components/table-filter-field.md +30 -16
- package/docs/components/table-skeleton.md +22 -0
- package/docs/components/table-toolbar.md +28 -14
- package/docs/components/tag.md +27 -0
- package/docs/components/tags-input.md +32 -0
- package/docs/components/text-area.md +25 -15
- package/docs/components/text-field.md +32 -0
- package/docs/components/timeline.md +31 -0
- package/docs/components/toggle-inline-button.md +48 -17
- package/docs/components/upload-files-preview.md +39 -20
- package/docs/components/use-field-controller.md +58 -0
- package/docs/components/user-menu.md +39 -0
- package/docs/contracts/STORYBOOK_IMPLEMENTATION_AND_VOBO.md +92 -0
- package/docs/contracts/STORYBOOK_VOBO_LEDGER.md +195 -0
- package/docs/contracts/component-doc-schema.md +120 -0
- package/docs/contracts/dependency-map.md +76 -39
- package/docs/contracts/field-controller.md +138 -0
- package/docs/contracts/style-imports.md +21 -14
- package/llms.txt +104 -0
- package/package.json +39 -10
- package/PRIMEREACT_MAPPING.md +0 -6
- 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 -26
- package/docs/components/date-input.md +0 -22
- package/docs/components/drop-down.md +0 -28
- package/docs/components/multi-select.md +0 -23
- package/docs/components/number-input.md +0 -20
- package/docs/components/select.md +0 -28
- package/docs/components/switch.md +0 -27
- package/docs/components/text-input.md +0 -23
- package/docs/components/time-picker.md +0 -22
- package/docs/components/toggle.md +0 -21
- package/docs/contracts/controller-props.md +0 -28
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: PasswordInput
|
|
3
|
+
category: forms
|
|
4
|
+
import: '@mantis-core/ui/components/Forms/PasswordInput'
|
|
5
|
+
whenToUse: RHF-bound password field over PR11 InputPassword with a native show/hide toggle and a lightweight strength meter.
|
|
6
|
+
baseLibrary: '@primereact/ui/inputpassword'
|
|
7
|
+
formContract: FieldControllerProps
|
|
8
|
+
relatedComponents: ['TextField']
|
|
9
|
+
relatedNextCore: []
|
|
10
|
+
props:
|
|
11
|
+
- { name: showToggle, type: boolean, required: false, default: 'true', description: 'Renders the Eye/EyeSlash show/hide toggle.' }
|
|
12
|
+
- { name: feedback, type: boolean, required: false, default: 'true', description: 'Renders the strength meter below the input.' }
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Example
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
import { PasswordInput } from '@mantis-core/ui/components/Forms/PasswordInput';
|
|
19
|
+
import { useForm } from 'react-hook-form';
|
|
20
|
+
|
|
21
|
+
function Example() {
|
|
22
|
+
const { control } = useForm({ defaultValues: { password: '' } });
|
|
23
|
+
return <PasswordInput name='password' control={control} label='Contraseña' rules={{ required: true }} />;
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Notes
|
|
28
|
+
|
|
29
|
+
- Show/hide uses PR11 `InputPassword`'s own native mask state (`mask`/`onMaskChange`), not a custom-positioned button.
|
|
30
|
+
- `feedback` renders a deterministic 0–4 strength score from length + character-class variety — not zxcvbn or any external scoring lib.
|
|
31
|
+
- `variant`/`size` are not exposed: `InputPasswordProps` doesn't carry them in `11.0.0-rc.1`, unlike `TextField`.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: PhoneInput
|
|
3
|
+
category: forms
|
|
4
|
+
import: '@mantis-core/ui/components/Forms/PhoneInput'
|
|
5
|
+
whenToUse: Phone-number preset of MaskField; defaults to a US-style (999) 999-9999 mask.
|
|
6
|
+
baseLibrary: '@primereact/ui/inputtext'
|
|
7
|
+
formContract: FieldControllerProps
|
|
8
|
+
relatedComponents: ['MaskField']
|
|
9
|
+
relatedNextCore: []
|
|
10
|
+
props:
|
|
11
|
+
- { name: mask, type: string, required: false, default: "'(999) 999-9999'", description: 'Override the phone mask for other formats.' }
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Example
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
import { PhoneInput } from '@mantis-core/ui/components/Forms/PhoneInput';
|
|
18
|
+
import { useForm } from 'react-hook-form';
|
|
19
|
+
|
|
20
|
+
function Example() {
|
|
21
|
+
const { control } = useForm({ defaultValues: { phone: '' } });
|
|
22
|
+
return <PhoneInput name='phone' control={control} label='Teléfono' />;
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Notes
|
|
27
|
+
|
|
28
|
+
- Thin preset over `MaskField` — no rendering logic of its own, just a default `mask`. Value = the masked string (e.g. `"(555) 123-4567"`).
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: RadioGroup
|
|
3
|
+
category: forms
|
|
4
|
+
import: '@mantis-core/ui/components/Forms/RadioGroup'
|
|
5
|
+
whenToUse: Single-choice radio group over PR11's RadioButtonGroup; value is the selected option's value.
|
|
6
|
+
baseLibrary: '@primereact/ui/radiobutton'
|
|
7
|
+
formContract: ChoiceFieldControllerProps
|
|
8
|
+
relatedComponents: ['ToggleInlineButton', 'SelectField']
|
|
9
|
+
relatedNextCore: []
|
|
10
|
+
props:
|
|
11
|
+
- { name: options, type: 'Record<string, unknown>[]', required: true, description: 'Option rows rendered as radio items.' }
|
|
12
|
+
- { name: optionLabel, type: string, required: false, default: '''label''', description: 'Key read for each option''s display label.' }
|
|
13
|
+
- { name: optionValue, type: string, required: false, default: '''value''', description: 'Key read for each option''s bound value.' }
|
|
14
|
+
- { name: renderOption, type: '(option: Record<string, unknown>, index: number) => ReactNode', required: false, description: 'Escape hatch: full custom per-item label render.' }
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Example
|
|
18
|
+
|
|
19
|
+
```tsx
|
|
20
|
+
import { RadioGroup } from '@mantis-core/ui/components/Forms/RadioGroup';
|
|
21
|
+
import { useForm } from 'react-hook-form';
|
|
22
|
+
|
|
23
|
+
const PLANS = [
|
|
24
|
+
{ label: 'Basic', value: 'basic' },
|
|
25
|
+
{ label: 'Pro', value: 'pro' },
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
function Example() {
|
|
29
|
+
const { control } = useForm({ defaultValues: { plan: 'basic' } });
|
|
30
|
+
return (
|
|
31
|
+
<RadioGroup
|
|
32
|
+
name='plan'
|
|
33
|
+
control={control}
|
|
34
|
+
label='Plan'
|
|
35
|
+
options={PLANS}
|
|
36
|
+
optionLabel='label'
|
|
37
|
+
optionValue='value'
|
|
38
|
+
/>
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Notes
|
|
44
|
+
|
|
45
|
+
- `labelMode` defaults to `'top'` for this wrapper (not the global config default).
|
|
46
|
+
- PR11 `11.0.0-rc.1` gotcha: the styled `RadioButtonGroup` and `RadioButton.Root` are wired through
|
|
47
|
+
two different React contexts in this rc, so the group's `value`/`onValueChange` never reaches its
|
|
48
|
+
children (verified in-browser). Until fixed upstream, this wrapper binds each `RadioButton.Root`
|
|
49
|
+
individually via its documented `checked`/`onCheckedChange` props; `RadioButtonGroup` itself is
|
|
50
|
+
used for layout/styling only, not for value propagation.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: RangeSlider
|
|
3
|
+
category: forms
|
|
4
|
+
import: '@mantis-core/ui/components/Forms/RangeSlider'
|
|
5
|
+
whenToUse: RHF-bound slider over PR11's compound Slider; single-handle by default, dual-handle range when the field holds a [number, number] tuple.
|
|
6
|
+
baseLibrary: '@primereact/ui/slider'
|
|
7
|
+
formContract: ChoiceFieldControllerProps
|
|
8
|
+
relatedComponents: []
|
|
9
|
+
relatedNextCore: []
|
|
10
|
+
props:
|
|
11
|
+
- { name: min, type: number, required: false }
|
|
12
|
+
- { name: max, type: number, required: false }
|
|
13
|
+
- { name: step, type: number, required: false }
|
|
14
|
+
- { name: orientation, type: "'horizontal' | 'vertical'", required: false }
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Example
|
|
18
|
+
|
|
19
|
+
```tsx
|
|
20
|
+
import { RangeSlider } from '@mantis-core/ui/components/Forms/RangeSlider';
|
|
21
|
+
import { useForm } from 'react-hook-form';
|
|
22
|
+
|
|
23
|
+
function Example() {
|
|
24
|
+
const { control } = useForm({ defaultValues: { price: 100 } });
|
|
25
|
+
return <RangeSlider name='price' control={control} label='Precio' min={0} max={500} />;
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Notes
|
|
30
|
+
|
|
31
|
+
- Value shape mirrors PR11 `Slider`: a scalar `number` (single handle) by default, or a `[number, number]` tuple (two handles) when the RHF field holds an array.
|
|
32
|
+
- Uses `ChoiceFieldControllerProps` (bucket B); `labelMode` defaults to `top` — a squeezed inline slider is unusable beside a label.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: RatingInput
|
|
3
|
+
category: forms
|
|
4
|
+
import: '@mantis-core/ui/components/Forms/RatingInput'
|
|
5
|
+
whenToUse: RHF-bound star rating over PR11's compound Rating; stores a numeric value.
|
|
6
|
+
baseLibrary: '@primereact/ui/rating'
|
|
7
|
+
formContract: ChoiceFieldControllerProps
|
|
8
|
+
relatedComponents: []
|
|
9
|
+
relatedNextCore: []
|
|
10
|
+
props:
|
|
11
|
+
- { name: stars, type: number, required: false, default: '5', description: 'How many star options render.' }
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Example
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
import { RatingInput } from '@mantis-core/ui/components/Forms/RatingInput';
|
|
18
|
+
import { useForm } from 'react-hook-form';
|
|
19
|
+
|
|
20
|
+
function Example() {
|
|
21
|
+
const { control } = useForm({ defaultValues: { score: null as number | null } });
|
|
22
|
+
return <RatingInput name='score' control={control} label='Puntaje' stars={5} />;
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Notes
|
|
27
|
+
|
|
28
|
+
- Value shape: `number` (stars selected), `null` when unset.
|
|
29
|
+
- Whole-star by default (`allowHalf={false}`) so the bound value stays an integer score; pass `allowHalf` to opt back into PR11's half-star behavior.
|
|
30
|
+
- Uses `ChoiceFieldControllerProps` (bucket B); `labelMode` defaults to `top`.
|
|
@@ -1,24 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
---
|
|
2
|
+
name: RenderField
|
|
3
|
+
category: forms
|
|
4
|
+
import: '@mantis-core/ui/components/Forms/RenderField'
|
|
5
|
+
whenToUse: 'Low-level escape hatch wrapping react-hook-form''s Controller via a render prop; use to wire any custom or third-party input without building a full FieldControllerProps wrapper.'
|
|
6
|
+
baseLibrary: custom
|
|
7
|
+
relatedComponents: ['FormFieldRender', 'useFieldController']
|
|
8
|
+
relatedNextCore: []
|
|
9
|
+
props:
|
|
10
|
+
- { name: name, type: string, required: true }
|
|
11
|
+
- { name: render, type: '(props: { field, fieldState, formState, value }) => ReactElement', required: true }
|
|
12
|
+
- { name: defaultValue, type: any, required: false }
|
|
13
|
+
- { name: rules, type: RegisterOptions, required: false }
|
|
14
|
+
- { name: control, type: Control, required: false }
|
|
15
|
+
---
|
|
9
16
|
|
|
10
17
|
## Example
|
|
11
18
|
|
|
12
19
|
```tsx
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
import RenderField from '@mantis-core/ui/components/Forms/RenderField';
|
|
21
|
+
import { useForm, type FieldValues } from 'react-hook-form';
|
|
22
|
+
|
|
23
|
+
function Example() {
|
|
24
|
+
const { control } = useForm<FieldValues>({ defaultValues: { rating: 0 } });
|
|
25
|
+
return (
|
|
26
|
+
<RenderField
|
|
27
|
+
name='rating'
|
|
28
|
+
control={control}
|
|
29
|
+
render={({ field }) => (
|
|
30
|
+
<input
|
|
31
|
+
type='number'
|
|
32
|
+
value={field.value}
|
|
33
|
+
onChange={(e) => field.onChange(Number(e.target.value))}
|
|
34
|
+
/>
|
|
35
|
+
)}
|
|
21
36
|
/>
|
|
22
|
-
)
|
|
23
|
-
|
|
37
|
+
);
|
|
38
|
+
}
|
|
24
39
|
```
|
|
40
|
+
|
|
41
|
+
## Notes
|
|
42
|
+
|
|
43
|
+
- Thin pass-through over RHF's `<Controller>` — `field`/`fieldState`/`formState`/`control` are
|
|
44
|
+
untyped (`any`-form), unlike `FieldControllerProps`, which types `name`/`defaultValue`/`rules` by
|
|
45
|
+
path against the caller's form shape.
|
|
46
|
+
- No presentation (label/help/error/aria) — pair with `FormFieldRender` or `ErrorMessage` for that,
|
|
47
|
+
or build a proper wrapper with `useFieldController` + `FieldShell` if it will be reused.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ResetPasswordForm
|
|
3
|
+
category: auth
|
|
4
|
+
import: '@mantis-core/ui/components/auth/ResetPasswordForm'
|
|
5
|
+
whenToUse: New password + confirm-password form for a reset-token flow; caller owns token validation and the API call.
|
|
6
|
+
baseLibrary: custom
|
|
7
|
+
requiredStyles: []
|
|
8
|
+
relatedComponents: [ForgotPasswordForm, ChangePasswordForm, LoginForm]
|
|
9
|
+
relatedNextCore: []
|
|
10
|
+
props:
|
|
11
|
+
- { name: onSubmit, type: '(values: ResetPasswordFormValues) => void | Promise<void>', required: true, description: 'Receives { newPassword, confirmPassword }; form manages isSubmitting via RHF.' }
|
|
12
|
+
- { name: title, type: string, required: false, default: '"Nueva contraseña"' }
|
|
13
|
+
- { name: subtitle, type: string, required: false }
|
|
14
|
+
- { name: submitLabel, type: string, required: false, default: '"Guardar contraseña"' }
|
|
15
|
+
- { name: minPasswordLength, type: number, required: false, default: '8', description: 'Feeds minLengthRule for the newPassword field.' }
|
|
16
|
+
- { name: className, type: string, required: false }
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Example
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
import ResetPasswordForm from '@mantis-core/ui/components/auth/ResetPasswordForm';
|
|
23
|
+
import type { ResetPasswordFormValues } from '@mantis-core/ui/components/auth/ResetPasswordForm';
|
|
24
|
+
|
|
25
|
+
function Example() {
|
|
26
|
+
const handleSubmit = async ({ newPassword }: ResetPasswordFormValues) => {
|
|
27
|
+
await fetch('/api/auth/reset-password', { method: 'POST', body: JSON.stringify({ newPassword }) });
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
return <ResetPasswordForm onSubmit={handleSubmit} minPasswordLength={10} />;
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Notes
|
|
35
|
+
|
|
36
|
+
- `confirmPassword`'s match-check (`v === watch('newPassword')`) is hardcoded in the component, not
|
|
37
|
+
a prop — it is not configurable beyond `minPasswordLength`.
|
|
@@ -1,18 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
---
|
|
2
|
+
name: RichTextPreview
|
|
3
|
+
category: feedback
|
|
4
|
+
import: '@mantis-core/ui/components/ui/RichTextPreview'
|
|
5
|
+
whenToUse: Safely renders a CKEditor HTML string (sanitized by default) with CKEditor content styles applied.
|
|
6
|
+
baseLibrary: custom
|
|
7
|
+
requiredStyles: [scss/rich-text-preview.scss]
|
|
8
|
+
relatedComponents: ['CKEditorInput']
|
|
9
|
+
relatedNextCore: []
|
|
10
|
+
props:
|
|
11
|
+
- { name: html, type: 'string | null', required: false, description: 'HTML source. `null`/undefined is treated as empty.' }
|
|
12
|
+
- { name: className, type: string, required: false }
|
|
13
|
+
- { name: sanitize, type: boolean, required: false, default: 'true', description: 'Runs the HTML through `sanitizeHtmlContent` (`@mantis-core/utils`) before rendering.' }
|
|
14
|
+
- { name: size, type: "'sm' | 'md' | 'lg'", required: false, default: "'md'" }
|
|
15
|
+
- { name: emptyFallback, type: ReactNode, required: false, default: 'null', description: 'Rendered instead when the (sanitized) content is empty/whitespace-only.' }
|
|
16
|
+
---
|
|
9
17
|
|
|
10
18
|
## Example
|
|
11
19
|
|
|
12
20
|
```tsx
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
21
|
+
import RichTextPreview from '@mantis-core/ui/components/ui/RichTextPreview';
|
|
22
|
+
|
|
23
|
+
function Example() {
|
|
24
|
+
return <RichTextPreview html={'<p>Hello <strong>world</strong></p>'} size='md' />;
|
|
25
|
+
}
|
|
18
26
|
```
|
|
27
|
+
|
|
28
|
+
## Notes
|
|
29
|
+
|
|
30
|
+
- Renders via `dangerouslySetInnerHTML` — keep `sanitize` on (default) for any untrusted HTML source.
|
|
31
|
+
- Applies the `ck-content` class so CKEditor's own content styles apply to the preview.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: SearchInput
|
|
3
|
+
category: forms
|
|
4
|
+
import: '@mantis-core/ui/components/Forms/SearchInput'
|
|
5
|
+
whenToUse: RHF-bound search box over PR11 InputText with a search icon and a debounced onSearch callback; ideal for live table/list filtering.
|
|
6
|
+
baseLibrary: '@primereact/ui/inputtext'
|
|
7
|
+
formContract: FieldControllerProps
|
|
8
|
+
relatedComponents: ['TextField']
|
|
9
|
+
relatedNextCore: []
|
|
10
|
+
props:
|
|
11
|
+
- { name: onSearch, type: '(value: string) => void', required: false, description: 'Fires debounced with the current value on each change.' }
|
|
12
|
+
- { name: debounceMs, type: number, required: false, default: '300' }
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Example
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
import { SearchInput } from '@mantis-core/ui/components/Forms/SearchInput';
|
|
19
|
+
import { useForm } from 'react-hook-form';
|
|
20
|
+
|
|
21
|
+
function Example() {
|
|
22
|
+
const { control } = useForm({ defaultValues: { q: '' } });
|
|
23
|
+
return <SearchInput name='q' control={control} label='Buscar' onSearch={(value) => console.log(value)} />;
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Notes
|
|
28
|
+
|
|
29
|
+
- The RHF field itself updates immediately (undebounced); only `onSearch` is debounced — use the field's `value` for the input, `onSearch` for the expensive call (query/filter).
|
|
30
|
+
- A clear (✕) icon appears once the field is non-empty and resets both the field and `onSearch("")`.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: SelectField
|
|
3
|
+
category: forms
|
|
4
|
+
import: '@mantis-core/ui/components/Forms/SelectField'
|
|
5
|
+
whenToUse: Single- or multi-select dropdown wired to react-hook-form over PR11's portal-based Select; pass `multiple` for array-value mode. Absorbs the former Select/DropDown/MultiSelect.
|
|
6
|
+
baseLibrary: '@primereact/ui/select'
|
|
7
|
+
formContract: FieldControllerProps
|
|
8
|
+
relatedComponents: ['AutoCompleteField', 'RadioGroup']
|
|
9
|
+
relatedNextCore: []
|
|
10
|
+
props:
|
|
11
|
+
- { name: options, type: 'Record<string, unknown>[]', required: true, description: 'Option rows rendered in the popup.' }
|
|
12
|
+
- { name: optionLabel, type: string, required: false, default: '''label''', description: 'Key read for each option''s display label.' }
|
|
13
|
+
- { name: optionValue, type: string, required: false, description: 'Key read for each option''s bound value; falls back to the whole row.' }
|
|
14
|
+
- { name: multiple, type: boolean, required: false, default: 'false', description: 'Array-value mode with in-popup filter + checkmark indicators; empty selection binds `[]`, never `null`.' }
|
|
15
|
+
- { name: placeholder, type: string, required: false, description: 'Trigger placeholder; suppressed automatically in floating label modes (ifta/float) when a label is set.' }
|
|
16
|
+
- { name: optionTemplate, type: "'default' | 'twoLine'", required: false, default: '''default''', description: 'Named per-option render preset; ''twoLine'' adds a second line from `descriptionField`.' }
|
|
17
|
+
- { name: descriptionField, type: string, required: false, description: 'Row key for the second line when optionTemplate is ''twoLine''.' }
|
|
18
|
+
- { name: renderOption, type: '(option: Record<string, unknown>, index: number) => ReactNode', required: false, description: 'Escape hatch: full custom per-option render, overrides optionTemplate.' }
|
|
19
|
+
- { name: className, type: string, required: false }
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Example
|
|
23
|
+
|
|
24
|
+
```tsx
|
|
25
|
+
import { SelectField } from '@mantis-core/ui/components/Forms/SelectField';
|
|
26
|
+
import { useForm } from 'react-hook-form';
|
|
27
|
+
|
|
28
|
+
const CITIES = [
|
|
29
|
+
{ label: 'Quito', value: 'UIO' },
|
|
30
|
+
{ label: 'Cuenca', value: 'CUE' },
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
function Example() {
|
|
34
|
+
const { control } = useForm({ defaultValues: { city: null } });
|
|
35
|
+
return (
|
|
36
|
+
<SelectField
|
|
37
|
+
name='city'
|
|
38
|
+
control={control}
|
|
39
|
+
label='City'
|
|
40
|
+
options={CITIES}
|
|
41
|
+
optionLabel='label'
|
|
42
|
+
optionValue='value'
|
|
43
|
+
/>
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Notes
|
|
49
|
+
|
|
50
|
+
- Value shape: scalar (or `null`) by default; an ARRAY when `multiple`. Clearing a `multiple` field
|
|
51
|
+
binds `[]`, never `null`, so consumers can `.map()`/`.length` it without a guard.
|
|
52
|
+
- Portal-based: id + aria live on `Select.Trigger` (a button, not `<input>`); `field.onBlur()` fires
|
|
53
|
+
on popup close, not native blur.
|
|
54
|
+
- `fluid` does not stretch automatically inside PR11's `<Fluid>` context for `Select` — pass it
|
|
55
|
+
explicitly if needed (handled internally by the wrapper's own `fluid` resolution).
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: StatCard
|
|
3
|
+
category: data
|
|
4
|
+
import: '@mantis-core/ui/components/data/StatCard'
|
|
5
|
+
whenToUse: KPI card showing a metric label, large value, optional icon, trend indicator, and footer.
|
|
6
|
+
baseLibrary: custom
|
|
7
|
+
relatedComponents: ['DescriptionList']
|
|
8
|
+
relatedNextCore: []
|
|
9
|
+
props:
|
|
10
|
+
- { name: label, type: string, required: true }
|
|
11
|
+
- { name: value, type: ReactNode, required: true }
|
|
12
|
+
- { name: icon, type: ReactNode, required: false }
|
|
13
|
+
- { name: trend, type: "{ value: number; direction: 'up' | 'down' }", required: false }
|
|
14
|
+
- { name: footer, type: ReactNode, required: false }
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Example
|
|
18
|
+
|
|
19
|
+
```tsx
|
|
20
|
+
import StatCard from '@mantis-core/ui/components/data/StatCard';
|
|
21
|
+
|
|
22
|
+
function Example() {
|
|
23
|
+
return <StatCard label='Leads' value={142} trend={{ value: 12, direction: 'up' }} />;
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Notes
|
|
28
|
+
|
|
29
|
+
- Not re-exported from the package root — import the deep path shown above.
|
|
30
|
+
- Presentational only (inline styles, no PrimeReact base) — pass `icon` as a rendered node (e.g. a PrimeIcons `<i>` element).
|
|
@@ -1,14 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
---
|
|
2
|
+
name: StatusBadge
|
|
3
|
+
category: feedback
|
|
4
|
+
import: '@mantis-core/ui/components/ui/StatusBadge'
|
|
5
|
+
whenToUse: Colored pill badge to communicate a status with semantic tone (e.g. a lead or property status).
|
|
6
|
+
baseLibrary: custom
|
|
7
|
+
requiredStyles: [scss/status-badge.scss]
|
|
8
|
+
relatedComponents: ['DataState']
|
|
9
|
+
relatedNextCore: []
|
|
10
|
+
props:
|
|
11
|
+
- { name: label, type: ReactNode, required: false, description: 'Takes precedence over `children` when both are given.' }
|
|
12
|
+
- { name: tone, type: "'success' | 'muted' | 'warning' | 'info' | 'danger'", required: false, default: "'muted'" }
|
|
13
|
+
- { name: size, type: "'sm' | 'md'", required: false, default: "'md'" }
|
|
14
|
+
- { name: block, type: boolean, required: false, default: 'false' }
|
|
15
|
+
- { name: children, type: ReactNode, required: false, description: 'Fallback content when `label` is not given.' }
|
|
16
|
+
---
|
|
9
17
|
|
|
10
18
|
## Example
|
|
11
19
|
|
|
12
20
|
```tsx
|
|
13
|
-
|
|
21
|
+
import StatusBadge from '@mantis-core/ui/components/ui/StatusBadge';
|
|
22
|
+
|
|
23
|
+
function Example() {
|
|
24
|
+
return <StatusBadge label='Active' tone='success' />;
|
|
25
|
+
}
|
|
14
26
|
```
|
|
27
|
+
|
|
28
|
+
## Notes
|
|
29
|
+
|
|
30
|
+
- Extends native `<span>` attributes (`Omit<HTMLAttributes<HTMLSpanElement>, 'children'>`) — passes through beyond `className`.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: SwitchField
|
|
3
|
+
category: forms
|
|
4
|
+
import: '@mantis-core/ui/components/Forms/SwitchField'
|
|
5
|
+
whenToUse: Boolean on/off toggle wired to react-hook-form.
|
|
6
|
+
baseLibrary: '@primereact/ui/toggleswitch'
|
|
7
|
+
formContract: ChoiceFieldControllerProps
|
|
8
|
+
relatedComponents: ['CheckboxField']
|
|
9
|
+
relatedNextCore: []
|
|
10
|
+
props: []
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Example
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import { SwitchField } from '@mantis-core/ui/components/Forms/SwitchField';
|
|
17
|
+
import { useForm } from 'react-hook-form';
|
|
18
|
+
|
|
19
|
+
function Example() {
|
|
20
|
+
const { control } = useForm({ defaultValues: { featured: false } });
|
|
21
|
+
return <SwitchField name='featured' control={control} label='Featured' />;
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Notes
|
|
26
|
+
|
|
27
|
+
- Value is a plain `boolean` (`Boolean(field.value)`).
|
|
28
|
+
- `labelMode` defaults to `'beside'` — `ChoiceFieldControllerProps` only allows `'beside' | 'top' | 'none'`.
|
|
29
|
+
- The single on/off survivor of the PR11 migration: the legacy `Switch` + `Toggle` wrappers were
|
|
30
|
+
removed. Use `CheckboxField` instead when the semantic is "check a box", not "flip a switch".
|
|
31
|
+
- Wraps PR11 compound `ToggleSwitch.Root` (+ `Control`/`Handle`); any remaining
|
|
32
|
+
`ToggleSwitchRootProps` pass through via `...rest`.
|
|
@@ -1,21 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
---
|
|
2
|
+
name: TableFilterField
|
|
3
|
+
category: tables
|
|
4
|
+
import: '@mantis-core/ui/components/table-filter-field'
|
|
5
|
+
whenToUse: 'Wraps a form control with a `<label>` inside a `FilterPannel`, providing consistent layout.'
|
|
6
|
+
baseLibrary: custom
|
|
7
|
+
relatedComponents: [FilterPannel]
|
|
8
|
+
relatedNextCore: []
|
|
9
|
+
props:
|
|
10
|
+
- { name: label, type: ReactNode, required: true }
|
|
11
|
+
- { name: htmlFor, type: string, required: true }
|
|
12
|
+
- { name: className, type: string, required: false }
|
|
13
|
+
- { name: labelClassName, type: string, required: false }
|
|
14
|
+
---
|
|
9
15
|
|
|
10
16
|
## Example
|
|
11
17
|
|
|
12
18
|
```tsx
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
</
|
|
19
|
+
import TableFilterField from '@mantis-core/ui/components/table-filter-field';
|
|
20
|
+
|
|
21
|
+
function Example() {
|
|
22
|
+
return (
|
|
23
|
+
<TableFilterField label='Status' htmlFor='filter-status'>
|
|
24
|
+
<select id='filter-status'>
|
|
25
|
+
<option value='active'>Active</option>
|
|
26
|
+
</select>
|
|
27
|
+
</TableFilterField>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
21
30
|
```
|
|
31
|
+
|
|
32
|
+
## Notes
|
|
33
|
+
|
|
34
|
+
- Plain `div`/`label` with `mantis-core-table-filters__*` class hooks — no PrimeReact base, no `requiredStyles` partial.
|
|
35
|
+
- `htmlFor` is required (unlike the pre-PR11 doc, which marked it optional) — the child control must carry a matching `id`.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: TableSkeleton
|
|
3
|
+
category: feedback
|
|
4
|
+
import: '@mantis-core/ui/components/feedback/TableSkeleton'
|
|
5
|
+
whenToUse: Animated skeleton placeholder that mimics a table grid while data loads; composes the PR11 Skeleton primitive.
|
|
6
|
+
baseLibrary: '@primereact/ui/skeleton'
|
|
7
|
+
relatedComponents: ['CardSkeleton']
|
|
8
|
+
relatedNextCore: []
|
|
9
|
+
props:
|
|
10
|
+
- { name: rows, type: number, required: false, default: '5' }
|
|
11
|
+
- { name: columns, type: number, required: false, default: '4' }
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Example
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
import TableSkeleton from '@mantis-core/ui/components/feedback/TableSkeleton';
|
|
18
|
+
|
|
19
|
+
function Example() {
|
|
20
|
+
return <TableSkeleton rows={8} columns={5} />;
|
|
21
|
+
}
|
|
22
|
+
```
|
|
@@ -1,19 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
---
|
|
2
|
+
name: TableToolbar
|
|
3
|
+
category: tables
|
|
4
|
+
import: '@mantis-core/ui/components/table-toolbar'
|
|
5
|
+
whenToUse: 'Header bar above a table showing title, record-count meta, and an action buttons slot.'
|
|
6
|
+
baseLibrary: custom
|
|
7
|
+
relatedComponents: [PaginatedTable, MantisDataTable, Button]
|
|
8
|
+
relatedNextCore: []
|
|
9
|
+
props:
|
|
10
|
+
- { name: title, type: ReactNode, required: false }
|
|
11
|
+
- { name: totalRecords, type: number, required: false, description: 'When `meta` is omitted, renders as "{n} registros disponibles".' }
|
|
12
|
+
- { name: meta, type: ReactNode, required: false, description: 'Overrides the auto-generated `totalRecords` copy.' }
|
|
13
|
+
- { name: actions, type: ReactNode, required: false }
|
|
14
|
+
- { name: className, type: string, required: false }
|
|
15
|
+
- { name: copyClassName, type: string, required: false, description: 'Extra class on the title+meta wrapper.' }
|
|
16
|
+
- { name: actionsClassName, type: string, required: false, description: 'Extra class on the actions wrapper.' }
|
|
17
|
+
---
|
|
9
18
|
|
|
10
19
|
## Example
|
|
11
20
|
|
|
12
21
|
```tsx
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
actions={<Button label=
|
|
18
|
-
|
|
22
|
+
import TableToolbar from '@mantis-core/ui/components/table-toolbar';
|
|
23
|
+
import Button from '@mantis-core/ui/components/Buttons/Button';
|
|
24
|
+
|
|
25
|
+
function Example() {
|
|
26
|
+
return <TableToolbar title='Users' totalRecords={42} actions={<Button label='New' />} />;
|
|
27
|
+
}
|
|
19
28
|
```
|
|
29
|
+
|
|
30
|
+
## Notes
|
|
31
|
+
|
|
32
|
+
- Plain `div`s with `mantis-core-table-toolbar*` class hooks — no PrimeReact base, no `requiredStyles` partial (styled via the consuming app's own CSS/Tailwind).
|
|
33
|
+
- The title/meta block only renders when `title` or a resolved `meta` (explicit or from `totalRecords`) is present; the actions block only renders when `actions` is passed.
|