@gnwebsoft/ui 4.0.2 → 4.0.4
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/README.md +98 -74
- package/dist/{chunk-GLN5JSFF.cjs → chunk-2QTXS736.cjs} +344 -293
- package/dist/{chunk-DS524L7W.cjs → chunk-3RZ4JNO3.cjs} +5 -5
- package/dist/chunk-HKO2FXDM.js +2232 -0
- package/dist/{chunk-QLQ6OH25.cjs → chunk-IKHMJW5A.cjs} +52 -30
- package/dist/chunk-LUW7V5GI.cjs +1 -1
- package/dist/chunk-MVPLBJRK.cjs +1 -1
- package/dist/chunk-NMJ5V7FQ.js +2512 -0
- package/dist/chunk-XN3KVY4J.js +467 -0
- package/dist/chunk-XTPFOURJ.cjs +72 -0
- package/dist/chunk-Y3QTSDLJ.cjs +1 -1
- package/dist/core/api/ApiClient.d.ts +329 -0
- package/dist/core/api/ApiClient.d.ts.map +1 -0
- package/dist/core/api/CorrelationIdGenerator.d.ts +52 -0
- package/dist/core/api/CorrelationIdGenerator.d.ts.map +1 -0
- package/dist/core/api/Errors/ErrorNormalizer.d.ts +106 -0
- package/dist/core/api/Errors/ErrorNormalizer.d.ts.map +1 -0
- package/dist/core/api/Interceptors/InterceptorManager.d.ts +236 -0
- package/dist/core/api/Interceptors/InterceptorManager.d.ts.map +1 -0
- package/dist/core/api/Models/FilterModel.d.ts +22 -0
- package/dist/core/api/Models/FilterModel.d.ts.map +1 -0
- package/dist/core/api/Models/QueryParams.d.ts +13 -0
- package/dist/core/api/Models/QueryParams.d.ts.map +1 -0
- package/dist/core/api/Models/index.d.ts +3 -0
- package/dist/core/api/Models/index.d.ts.map +1 -0
- package/dist/core/api/RequestManager.d.ts +142 -0
- package/dist/core/api/RequestManager.d.ts.map +1 -0
- package/dist/core/api/Retry/RetryHandler.d.ts +100 -0
- package/dist/core/api/Retry/RetryHandler.d.ts.map +1 -0
- package/dist/core/api/Signals/SignalManager.d.ts +153 -0
- package/dist/core/api/Signals/SignalManager.d.ts.map +1 -0
- package/dist/core/api/Utils/ResponseParser.d.ts +105 -0
- package/dist/core/api/Utils/ResponseParser.d.ts.map +1 -0
- package/dist/core/api/Utils/UrlBuilder.d.ts +111 -0
- package/dist/core/api/Utils/UrlBuilder.d.ts.map +1 -0
- package/dist/core/api/createApiClient.d.ts +243 -0
- package/dist/core/api/createApiClient.d.ts.map +1 -0
- package/dist/core/api/index.d.ts +7 -0
- package/dist/core/api/index.d.ts.map +1 -0
- package/dist/core/api/types/ApiError.d.ts +17 -0
- package/dist/core/api/types/ApiError.d.ts.map +1 -0
- package/dist/core/api/types/ApiResponse.d.ts +76 -0
- package/dist/core/api/types/ApiResponse.d.ts.map +1 -0
- package/dist/core/api/types/CancelToken.d.ts +15 -0
- package/dist/core/api/types/CancelToken.d.ts.map +1 -0
- package/dist/core/api/types/ErrorInterceptor.d.ts +3 -0
- package/dist/core/api/types/ErrorInterceptor.d.ts.map +1 -0
- package/dist/core/api/types/ErrorResponseData.d.ts +68 -0
- package/dist/core/api/types/ErrorResponseData.d.ts.map +1 -0
- package/dist/core/api/types/RequestConfig.d.ts +21 -0
- package/dist/core/api/types/RequestConfig.d.ts.map +1 -0
- package/dist/core/api/types/RequestInterceptor.d.ts +3 -0
- package/dist/core/api/types/RequestInterceptor.d.ts.map +1 -0
- package/dist/core/api/types/ResponseInterceptor.d.ts +3 -0
- package/dist/core/api/types/ResponseInterceptor.d.ts.map +1 -0
- package/dist/core/api/types/ValidationErrors.d.ts +7 -0
- package/dist/core/api/types/ValidationErrors.d.ts.map +1 -0
- package/dist/core/api/types/index.d.ts +10 -0
- package/dist/core/api/types/index.d.ts.map +1 -0
- package/dist/core/api/useValidationErrors.d.ts +11 -0
- package/dist/core/api/useValidationErrors.d.ts.map +1 -0
- package/dist/core/components/AuthorizedView/AuthorizedView.d.ts +7 -0
- package/dist/core/components/AuthorizedView/AuthorizedView.d.ts.map +1 -0
- package/dist/core/components/AuthorizedView/index.d.ts +2 -0
- package/dist/core/components/AuthorizedView/index.d.ts.map +1 -0
- package/dist/core/components/CancelButton/CancelButton.d.ts +4 -0
- package/dist/core/components/CancelButton/CancelButton.d.ts.map +1 -0
- package/dist/core/components/CancelButton/index.d.ts +2 -0
- package/dist/core/components/CancelButton/index.d.ts.map +1 -0
- package/dist/core/components/ClearButton/ClearButton.d.ts +63 -0
- package/dist/core/components/ClearButton/ClearButton.d.ts.map +1 -0
- package/dist/core/components/ClearButton/index.d.ts +2 -0
- package/dist/core/components/ClearButton/index.d.ts.map +1 -0
- package/dist/core/components/Containers/SimpleContainer.d.ts +10 -0
- package/dist/core/components/Containers/SimpleContainer.d.ts.map +1 -0
- package/dist/core/components/Containers/index.d.ts +2 -0
- package/dist/core/components/Containers/index.d.ts.map +1 -0
- package/dist/core/components/FilterButton/FilterButton.d.ts +86 -0
- package/dist/core/components/FilterButton/FilterButton.d.ts.map +1 -0
- package/dist/core/components/FilterButton/index.d.ts +2 -0
- package/dist/core/components/FilterButton/index.d.ts.map +1 -0
- package/dist/core/components/FilterDisplay/FilterChip.d.ts +9 -0
- package/dist/core/components/FilterDisplay/FilterChip.d.ts.map +1 -0
- package/dist/core/components/FilterDisplay/FilterDisplay.d.ts +10 -0
- package/dist/core/components/FilterDisplay/FilterDisplay.d.ts.map +1 -0
- package/dist/core/components/FilterDisplay/index.d.ts +3 -0
- package/dist/core/components/FilterDisplay/index.d.ts.map +1 -0
- package/dist/core/components/FilterWrapper/FilterWrapper.d.ts +99 -0
- package/dist/core/components/FilterWrapper/FilterWrapper.d.ts.map +1 -0
- package/dist/core/components/FilterWrapper/index.d.ts +2 -0
- package/dist/core/components/FilterWrapper/index.d.ts.map +1 -0
- package/dist/core/components/Footer/Footer.d.ts +3 -0
- package/dist/core/components/Footer/Footer.d.ts.map +1 -0
- package/dist/core/components/Footer/index.d.ts +2 -0
- package/dist/core/components/Footer/index.d.ts.map +1 -0
- package/dist/core/components/LabelText/LabelText.d.ts +103 -0
- package/dist/core/components/LabelText/LabelText.d.ts.map +1 -0
- package/dist/core/components/LabelText/index.d.ts +2 -0
- package/dist/core/components/LabelText/index.d.ts.map +1 -0
- package/dist/core/components/RenderIf/RenderIf.d.ts +7 -0
- package/dist/core/components/RenderIf/RenderIf.d.ts.map +1 -0
- package/dist/core/components/RenderIf/index.d.ts +2 -0
- package/dist/core/components/RenderIf/index.d.ts.map +1 -0
- package/dist/core/components/SectionBox/SectionBox.d.ts +15 -0
- package/dist/core/components/SectionBox/SectionBox.d.ts.map +1 -0
- package/dist/core/components/SectionBox/index.d.ts +2 -0
- package/dist/core/components/SectionBox/index.d.ts.map +1 -0
- package/dist/core/components/SimpleTabs/SimpleTabs.d.ts +17 -0
- package/dist/core/components/SimpleTabs/SimpleTabs.d.ts.map +1 -0
- package/dist/core/components/SimpleTabs/index.d.ts +2 -0
- package/dist/core/components/SimpleTabs/index.d.ts.map +1 -0
- package/dist/core/components/SubmitButton/SubmitButton.d.ts +6 -0
- package/dist/core/components/SubmitButton/SubmitButton.d.ts.map +1 -0
- package/dist/core/components/SubmitButton/index.d.ts +2 -0
- package/dist/core/components/SubmitButton/index.d.ts.map +1 -0
- package/dist/core/components/WithRef/WithRef.d.ts +14 -0
- package/dist/core/components/WithRef/WithRef.d.ts.map +1 -0
- package/dist/core/components/WithRef/index.d.ts +2 -0
- package/dist/core/components/WithRef/index.d.ts.map +1 -0
- package/dist/core/components/index.d.ts +15 -0
- package/dist/core/components/index.d.ts.map +1 -0
- package/dist/core/config.d.ts +24 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/hooks/index.d.ts +3 -0
- package/dist/core/hooks/index.d.ts.map +1 -0
- package/dist/core/hooks/makeQuery.d.ts +12 -0
- package/dist/core/hooks/makeQuery.d.ts.map +1 -0
- package/dist/core/hooks/useApiClient.d.ts +3 -0
- package/dist/core/hooks/useApiClient.d.ts.map +1 -0
- package/dist/core/hooks/useFormErrorHandler.d.ts +35 -0
- package/dist/core/hooks/useFormErrorHandler.d.ts.map +1 -0
- package/dist/core/hooks/useListView.d.ts +20 -0
- package/dist/core/hooks/useListView.d.ts.map +1 -0
- package/dist/core/index.cjs +3 -3
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +1 -1
- package/dist/core/models.d.ts +5 -0
- package/dist/core/models.d.ts.map +1 -0
- package/dist/core/types/FilterLabel.d.ts +6 -0
- package/dist/core/types/FilterLabel.d.ts.map +1 -0
- package/dist/core/types/ListModels.d.ts +18 -0
- package/dist/core/types/ListModels.d.ts.map +1 -0
- package/dist/core/types/OptionsRequest.d.ts +4 -0
- package/dist/core/types/OptionsRequest.d.ts.map +1 -0
- package/dist/core/types/index.d.ts +4 -0
- package/dist/core/types/index.d.ts.map +1 -0
- package/dist/core/utils/CacheUtility/index.d.ts +15 -0
- package/dist/core/utils/CacheUtility/index.d.ts.map +1 -0
- package/dist/core/utils/calculateFilterCount.d.ts +2 -0
- package/dist/core/utils/calculateFilterCount.d.ts.map +1 -0
- package/dist/core/utils/format-time.d.ts +79 -0
- package/dist/core/utils/format-time.d.ts.map +1 -0
- package/dist/core/utils/getEmptyObject.d.ts +7 -0
- package/dist/core/utils/getEmptyObject.d.ts.map +1 -0
- package/dist/core/utils/index.d.ts +7 -0
- package/dist/core/utils/index.d.ts.map +1 -0
- package/dist/core/utils/useStableRowCount.d.ts +9 -0
- package/dist/core/utils/useStableRowCount.d.ts.map +1 -0
- package/dist/core/utils/watch/core.d.ts +22 -0
- package/dist/core/utils/watch/core.d.ts.map +1 -0
- package/dist/core/utils/watch/index.d.ts +49 -0
- package/dist/core/utils/watch/index.d.ts.map +1 -0
- package/dist/core/utils/watch/utilities.d.ts +34 -0
- package/dist/core/utils/watch/utilities.d.ts.map +1 -0
- package/dist/hooks/index.cjs +1 -1
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/useTransform/enhanced.d.ts +133 -0
- package/dist/hooks/useTransform/enhanced.d.ts.map +1 -0
- package/dist/hooks/useTransform/index.d.ts +93 -0
- package/dist/hooks/useTransform/index.d.ts.map +1 -0
- package/dist/index.cjs +6 -6
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -18
- package/dist/types/AsyncSelectPayload.d.ts +9 -0
- package/dist/types/AsyncSelectPayload.d.ts.map +1 -0
- package/dist/types/OperationResponse.d.ts +5 -0
- package/dist/types/OperationResponse.d.ts.map +1 -0
- package/dist/types/OptionItem.d.ts +75 -0
- package/dist/types/OptionItem.d.ts.map +1 -0
- package/dist/types/api.d.ts +127 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/events.d.ts +74 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/index.cjs +3 -3
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -1
- package/dist/types/utilities.d.ts +458 -0
- package/dist/types/utilities.d.ts.map +1 -0
- package/dist/utils/api.d.ts +14 -0
- package/dist/utils/api.d.ts.map +1 -0
- package/dist/utils/api2.d.ts +14 -0
- package/dist/utils/api2.d.ts.map +1 -0
- package/dist/utils/flattenObjectKeys.d.ts +63 -0
- package/dist/utils/flattenObjectKeys.d.ts.map +1 -0
- package/dist/utils/getTimezone.d.ts +4 -0
- package/dist/utils/getTimezone.d.ts.map +1 -0
- package/dist/utils/handleServerErrors.d.ts +70 -0
- package/dist/utils/handleServerErrors.d.ts.map +1 -0
- package/dist/utils/index.cjs +3 -3
- package/dist/utils/index.d.ts +11 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +1 -1
- package/dist/utils/propertyExists.d.ts +35 -0
- package/dist/utils/propertyExists.d.ts.map +1 -0
- package/dist/utils/readValueAsDate.d.ts +4 -0
- package/dist/utils/readValueAsDate.d.ts.map +1 -0
- package/dist/utils/removeLeadingTrailingSlashes.d.ts +2 -0
- package/dist/utils/removeLeadingTrailingSlashes.d.ts.map +1 -0
- package/dist/utils/schemaTools.d.ts +82 -0
- package/dist/utils/schemaTools.d.ts.map +1 -0
- package/dist/utils/typeGuards.d.ts +316 -0
- package/dist/utils/typeGuards.d.ts.map +1 -0
- package/dist/utils/watch/core.d.ts +22 -0
- package/dist/utils/watch/core.d.ts.map +1 -0
- package/dist/utils/watch/index.d.ts +49 -0
- package/dist/utils/watch/index.d.ts.map +1 -0
- package/dist/utils/watch/utilities.d.ts +34 -0
- package/dist/utils/watch/utilities.d.ts.map +1 -0
- package/dist/wrappers/AsyncMultiSelect/AsyncMultiSelect.d.ts +9 -0
- package/dist/wrappers/AsyncMultiSelect/AsyncMultiSelect.d.ts.map +1 -0
- package/dist/wrappers/AsyncMultiSelect/index.d.ts +3 -0
- package/dist/wrappers/AsyncMultiSelect/index.d.ts.map +1 -0
- package/dist/wrappers/AsyncMultiSelect/types.d.ts +19 -0
- package/dist/wrappers/AsyncMultiSelect/types.d.ts.map +1 -0
- package/dist/wrappers/AsyncMultiSelect2/AsyncMultiSelect2.d.ts +8 -0
- package/dist/wrappers/AsyncMultiSelect2/AsyncMultiSelect2.d.ts.map +1 -0
- package/dist/wrappers/AsyncMultiSelect2/index.d.ts +3 -0
- package/dist/wrappers/AsyncMultiSelect2/index.d.ts.map +1 -0
- package/dist/wrappers/AsyncMultiSelect2/types.d.ts +29 -0
- package/dist/wrappers/AsyncMultiSelect2/types.d.ts.map +1 -0
- package/dist/wrappers/AsyncSelect/index.d.ts +9 -0
- package/dist/wrappers/AsyncSelect/index.d.ts.map +1 -0
- package/dist/wrappers/AsyncSelect/types.d.ts +19 -0
- package/dist/wrappers/AsyncSelect/types.d.ts.map +1 -0
- package/dist/wrappers/Button.d.ts +49 -0
- package/dist/wrappers/Button.d.ts.map +1 -0
- package/dist/wrappers/CheckboxElement/CheckboxElement.d.ts +102 -0
- package/dist/wrappers/CheckboxElement/CheckboxElement.d.ts.map +1 -0
- package/dist/wrappers/CheckboxElement/index.d.ts +3 -0
- package/dist/wrappers/CheckboxElement/index.d.ts.map +1 -0
- package/dist/wrappers/CheckboxElement/types.d.ts +76 -0
- package/dist/wrappers/CheckboxElement/types.d.ts.map +1 -0
- package/dist/wrappers/CheckboxGroup/CheckboxGroup.d.ts +96 -0
- package/dist/wrappers/CheckboxGroup/CheckboxGroup.d.ts.map +1 -0
- package/dist/wrappers/CheckboxGroup/EnhancedCheckboxGroup.d.ts +49 -0
- package/dist/wrappers/CheckboxGroup/EnhancedCheckboxGroup.d.ts.map +1 -0
- package/dist/wrappers/CheckboxGroup/enhanced-types.d.ts +171 -0
- package/dist/wrappers/CheckboxGroup/enhanced-types.d.ts.map +1 -0
- package/dist/wrappers/CheckboxGroup/index.d.ts +3 -0
- package/dist/wrappers/CheckboxGroup/index.d.ts.map +1 -0
- package/dist/wrappers/CheckboxGroup/types.d.ts +106 -0
- package/dist/wrappers/CheckboxGroup/types.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/DatePickerElement.d.ts +131 -0
- package/dist/wrappers/DatePickerElement/DatePickerElement.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/DatePickerElementCore.d.ts +57 -0
- package/dist/wrappers/DatePickerElement/DatePickerElementCore.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/hooks/index.d.ts +24 -0
- package/dist/wrappers/DatePickerElement/hooks/index.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/hooks/useDatePickerStyles.d.ts +63 -0
- package/dist/wrappers/DatePickerElement/hooks/useDatePickerStyles.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/hooks/useDatePickerValidation.d.ts +79 -0
- package/dist/wrappers/DatePickerElement/hooks/useDatePickerValidation.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/hooks/useDatePickerValue.d.ts +73 -0
- package/dist/wrappers/DatePickerElement/hooks/useDatePickerValue.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/index.d.ts +47 -0
- package/dist/wrappers/DatePickerElement/index.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/types.d.ts +183 -0
- package/dist/wrappers/DatePickerElement/types.d.ts.map +1 -0
- package/dist/wrappers/DatePickerElement/utils.d.ts +89 -0
- package/dist/wrappers/DatePickerElement/utils.d.ts.map +1 -0
- package/dist/wrappers/DateTimePickerElement/index.d.ts +1 -0
- package/dist/wrappers/DateTimePickerElement/index.d.ts.map +1 -0
- package/dist/wrappers/DateTimePickerElement/types.d.ts +1 -0
- package/dist/wrappers/DateTimePickerElement/types.d.ts.map +1 -0
- package/dist/wrappers/Field/index.d.ts +42 -0
- package/dist/wrappers/Field/index.d.ts.map +1 -0
- package/dist/wrappers/NumberFieldElement/NumberFieldElement.d.ts +176 -0
- package/dist/wrappers/NumberFieldElement/NumberFieldElement.d.ts.map +1 -0
- package/dist/wrappers/NumberFieldElement/index.d.ts +3 -0
- package/dist/wrappers/NumberFieldElement/index.d.ts.map +1 -0
- package/dist/wrappers/OTPInputElement/HelperText.d.ts +8 -0
- package/dist/wrappers/OTPInputElement/HelperText.d.ts.map +1 -0
- package/dist/wrappers/OTPInputElement/OTPInputElement.d.ts +32 -0
- package/dist/wrappers/OTPInputElement/OTPInputElement.d.ts.map +1 -0
- package/dist/wrappers/OTPInputElement/index.d.ts +3 -0
- package/dist/wrappers/OTPInputElement/index.d.ts.map +1 -0
- package/dist/wrappers/PasswordElement/PasswordElement.d.ts +104 -0
- package/dist/wrappers/PasswordElement/PasswordElement.d.ts.map +1 -0
- package/dist/wrappers/PasswordElement/index.d.ts +2 -0
- package/dist/wrappers/PasswordElement/index.d.ts.map +1 -0
- package/dist/wrappers/RadioButtonGroup/RadioButtonGroup.d.ts +38 -0
- package/dist/wrappers/RadioButtonGroup/RadioButtonGroup.d.ts.map +1 -0
- package/dist/wrappers/RadioButtonGroup/index.d.ts +2 -0
- package/dist/wrappers/RadioButtonGroup/index.d.ts.map +1 -0
- package/dist/wrappers/SelectCascadeElement/SelectCascadeElement.d.ts +22 -0
- package/dist/wrappers/SelectCascadeElement/SelectCascadeElement.d.ts.map +1 -0
- package/dist/wrappers/SelectCascadeElement/index.d.ts +2 -0
- package/dist/wrappers/SelectCascadeElement/index.d.ts.map +1 -0
- package/dist/wrappers/SelectElement/SelectElement.d.ts +152 -0
- package/dist/wrappers/SelectElement/SelectElement.d.ts.map +1 -0
- package/dist/wrappers/SelectElement/index.d.ts +2 -0
- package/dist/wrappers/SelectElement/index.d.ts.map +1 -0
- package/dist/wrappers/SelectMultiElement/SelectMultiElement.d.ts +21 -0
- package/dist/wrappers/SelectMultiElement/SelectMultiElement.d.ts.map +1 -0
- package/dist/wrappers/SelectMultiElement/index.d.ts +2 -0
- package/dist/wrappers/SelectMultiElement/index.d.ts.map +1 -0
- package/dist/wrappers/TextFieldElement/TextFieldElement.d.ts +179 -0
- package/dist/wrappers/TextFieldElement/TextFieldElement.d.ts.map +1 -0
- package/dist/wrappers/TextFieldElement/index.d.ts +3 -0
- package/dist/wrappers/TextFieldElement/index.d.ts.map +1 -0
- package/dist/wrappers/TimePickerElement/TimePickerElement.d.ts +30 -0
- package/dist/wrappers/TimePickerElement/TimePickerElement.d.ts.map +1 -0
- package/dist/wrappers/TimePickerElement/index.d.ts +2 -0
- package/dist/wrappers/TimePickerElement/index.d.ts.map +1 -0
- package/dist/wrappers/index.cjs +3 -3
- package/dist/wrappers/index.d.ts +14 -0
- package/dist/wrappers/index.d.ts.map +1 -0
- package/dist/wrappers/index.js +1 -1
- package/dist/wrappers/types/common.d.ts +87 -0
- package/dist/wrappers/types/common.d.ts.map +1 -0
- package/dist/wrappers/types/index.d.ts +8 -0
- package/dist/wrappers/types/index.d.ts.map +1 -0
- package/package.json +4 -2
- package/dist/chunk-BXF3QEBN.js +0 -2181
- package/dist/chunk-GHW77WIM.cjs +0 -72
- package/dist/chunk-M526GQZS.js +0 -2490
- package/dist/chunk-PUQIPRL2.js +0 -467
- /package/dist/{chunk-MULSVYFT.js → chunk-6GKAC3KH.js} +0 -0
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ npm install react react-dom @mui/material @mui/icons-material @emotion/react @em
|
|
|
40
40
|
```json
|
|
41
41
|
{
|
|
42
42
|
"@emotion/cache": "^11.14.0",
|
|
43
|
-
"@emotion/react": "^11.14.0",
|
|
43
|
+
"@emotion/react": "^11.14.0",
|
|
44
44
|
"@emotion/styled": "^11.14.0",
|
|
45
45
|
"@hookform/resolvers": "^5.2.1",
|
|
46
46
|
"@mui/icons-material": "^7.3.1",
|
|
@@ -61,6 +61,7 @@ npm install react react-dom @mui/material @mui/icons-material @emotion/react @em
|
|
|
61
61
|
"zustand": "^5.0.2"
|
|
62
62
|
}
|
|
63
63
|
```
|
|
64
|
+
|
|
64
65
|
</details>
|
|
65
66
|
|
|
66
67
|
## Quick Start
|
|
@@ -77,8 +78,8 @@ function App() {
|
|
|
77
78
|
<ThemeProvider theme={theme}>
|
|
78
79
|
<div>
|
|
79
80
|
<LabelText>Welcome to @gnwebsoft/ui</LabelText>
|
|
80
|
-
<SimpleButton
|
|
81
|
-
variant="contained"
|
|
81
|
+
<SimpleButton
|
|
82
|
+
variant="contained"
|
|
82
83
|
color="primary"
|
|
83
84
|
onClick={() => alert('Hello World!')}
|
|
84
85
|
>
|
|
@@ -110,19 +111,20 @@ import { SimpleButton, TextFieldElement } from '@gnwebsoft/ui';
|
|
|
110
111
|
|
|
111
112
|
### Available Modules
|
|
112
113
|
|
|
113
|
-
| Module
|
|
114
|
-
|
|
115
|
-
| **Components** | UI components
|
|
116
|
-
| **Wrappers**
|
|
117
|
-
| **Hooks**
|
|
118
|
-
| **Types**
|
|
119
|
-
| **Utils**
|
|
114
|
+
| Module | Description | Import Path |
|
|
115
|
+
| -------------- | ---------------------- | -------------------------- |
|
|
116
|
+
| **Components** | UI components | `@gnwebsoft/ui/components` |
|
|
117
|
+
| **Wrappers** | Form element wrappers | `@gnwebsoft/ui/wrappers` |
|
|
118
|
+
| **Hooks** | Custom React hooks | `@gnwebsoft/ui/hooks` |
|
|
119
|
+
| **Types** | TypeScript definitions | `@gnwebsoft/ui/types` |
|
|
120
|
+
| **Utils** | Utility functions | `@gnwebsoft/ui/utils` |
|
|
120
121
|
|
|
121
122
|
## Components
|
|
122
123
|
|
|
123
124
|
### Basic Components
|
|
124
125
|
|
|
125
126
|
#### SimpleButton
|
|
127
|
+
|
|
126
128
|
Enhanced MUI Button with loading states and conditional rendering.
|
|
127
129
|
|
|
128
130
|
```tsx
|
|
@@ -136,10 +138,11 @@ import { SimpleButton } from '@gnwebsoft/ui/components';
|
|
|
136
138
|
onClick={handleSubmit}
|
|
137
139
|
>
|
|
138
140
|
Save Changes
|
|
139
|
-
</SimpleButton
|
|
141
|
+
</SimpleButton>;
|
|
140
142
|
```
|
|
141
143
|
|
|
142
144
|
**Features:**
|
|
145
|
+
|
|
143
146
|
- Loading state with spinner
|
|
144
147
|
- Conditional rendering
|
|
145
148
|
- Automatic disabling during loading
|
|
@@ -147,22 +150,24 @@ import { SimpleButton } from '@gnwebsoft/ui/components';
|
|
|
147
150
|
- Full TypeScript support
|
|
148
151
|
|
|
149
152
|
#### LabelText
|
|
153
|
+
|
|
150
154
|
Responsive label-value display component with grid layout and hover effects.
|
|
151
155
|
|
|
152
156
|
```tsx
|
|
153
157
|
import { LabelText } from '@gnwebsoft/ui/components';
|
|
154
158
|
|
|
155
|
-
<LabelText
|
|
156
|
-
label="Full Name"
|
|
159
|
+
<LabelText
|
|
160
|
+
label="Full Name"
|
|
157
161
|
value="John Doe"
|
|
158
162
|
gridSize={{
|
|
159
163
|
labelSize: { xs: 12, sm: 4, md: 3 },
|
|
160
|
-
valueSize: { xs: 12, sm: 8, md: 9 }
|
|
164
|
+
valueSize: { xs: 12, sm: 8, md: 9 },
|
|
161
165
|
}}
|
|
162
|
-
|
|
166
|
+
/>;
|
|
163
167
|
```
|
|
164
168
|
|
|
165
169
|
**Features:**
|
|
170
|
+
|
|
166
171
|
- Responsive grid layout
|
|
167
172
|
- Hover effects with background color change
|
|
168
173
|
- Text overflow handling with ellipsis
|
|
@@ -170,6 +175,7 @@ import { LabelText } from '@gnwebsoft/ui/components';
|
|
|
170
175
|
- Customizable spacing and styling
|
|
171
176
|
|
|
172
177
|
#### AuthorizedView
|
|
178
|
+
|
|
173
179
|
Simple conditional rendering component based on a boolean show prop.
|
|
174
180
|
|
|
175
181
|
```tsx
|
|
@@ -177,32 +183,34 @@ import { AuthorizedView } from '@gnwebsoft/ui/components';
|
|
|
177
183
|
|
|
178
184
|
<AuthorizedView show={user.hasAdminRole}>
|
|
179
185
|
<AdminPanel />
|
|
180
|
-
</AuthorizedView
|
|
186
|
+
</AuthorizedView>;
|
|
181
187
|
```
|
|
182
188
|
|
|
183
189
|
**Features:**
|
|
190
|
+
|
|
184
191
|
- Minimal overhead conditional rendering
|
|
185
192
|
- Returns empty fragment when hidden
|
|
186
193
|
- TypeScript support
|
|
187
194
|
|
|
188
195
|
#### ClearButton, CancelButton, FilterButton
|
|
196
|
+
|
|
189
197
|
Standardized button components for common form actions.
|
|
190
198
|
|
|
191
199
|
```tsx
|
|
192
200
|
import { ClearButton, CancelButton, FilterButton } from '@gnwebsoft/ui/components';
|
|
193
201
|
|
|
194
|
-
<ClearButton
|
|
202
|
+
<ClearButton
|
|
195
203
|
isSubmitting={isLoading}
|
|
196
204
|
handleClear={() => reset()}
|
|
197
205
|
storeKey="userFormData" // Optional localStorage cleanup
|
|
198
206
|
/>
|
|
199
207
|
|
|
200
|
-
<CancelButton
|
|
208
|
+
<CancelButton
|
|
201
209
|
isSubmitting={isLoading}
|
|
202
210
|
handleCancel={() => navigate('/dashboard')}
|
|
203
211
|
/>
|
|
204
212
|
|
|
205
|
-
<FilterButton
|
|
213
|
+
<FilterButton
|
|
206
214
|
isSubmitting={isFiltering}
|
|
207
215
|
show={hasFilters}
|
|
208
216
|
title="Apply Filters"
|
|
@@ -213,12 +221,13 @@ import { ClearButton, CancelButton, FilterButton } from '@gnwebsoft/ui/component
|
|
|
213
221
|
### Layout Components
|
|
214
222
|
|
|
215
223
|
#### FormWrapper
|
|
224
|
+
|
|
216
225
|
Card-based container for forms with header, title, and action buttons.
|
|
217
226
|
|
|
218
227
|
```tsx
|
|
219
228
|
import { FormWrapper } from '@gnwebsoft/ui/components';
|
|
220
229
|
|
|
221
|
-
<FormWrapper
|
|
230
|
+
<FormWrapper
|
|
222
231
|
title="User Profile"
|
|
223
232
|
icon={<PersonIcon />}
|
|
224
233
|
actionButton={
|
|
@@ -229,16 +238,18 @@ import { FormWrapper } from '@gnwebsoft/ui/components';
|
|
|
229
238
|
>
|
|
230
239
|
<TextFieldElement name="firstName" label="First Name" />
|
|
231
240
|
<TextFieldElement name="lastName" label="Last Name" />
|
|
232
|
-
</FormWrapper
|
|
241
|
+
</FormWrapper>;
|
|
233
242
|
```
|
|
234
243
|
|
|
235
244
|
**Features:**
|
|
245
|
+
|
|
236
246
|
- Card-based layout with header and content areas
|
|
237
247
|
- Divider between header and content
|
|
238
248
|
- Flexible action button placement
|
|
239
249
|
- Grid container for content with spacing
|
|
240
250
|
|
|
241
251
|
#### FilterWrapper, ListWrapper, SimpleToolbar
|
|
252
|
+
|
|
242
253
|
Specialized container components for different UI patterns.
|
|
243
254
|
|
|
244
255
|
```tsx
|
|
@@ -272,7 +283,7 @@ import {
|
|
|
272
283
|
TextFieldElement,
|
|
273
284
|
SelectElement,
|
|
274
285
|
DatePickerElement,
|
|
275
|
-
CheckboxElement
|
|
286
|
+
CheckboxElement,
|
|
276
287
|
} from '@gnwebsoft/ui/wrappers';
|
|
277
288
|
|
|
278
289
|
const schema = z.object({
|
|
@@ -280,14 +291,14 @@ const schema = z.object({
|
|
|
280
291
|
email: z.string().email('Invalid email'),
|
|
281
292
|
category: z.string(),
|
|
282
293
|
birthDate: z.date(),
|
|
283
|
-
subscribe: z.boolean()
|
|
294
|
+
subscribe: z.boolean(),
|
|
284
295
|
});
|
|
285
296
|
|
|
286
297
|
type FormData = z.infer<typeof schema>;
|
|
287
298
|
|
|
288
299
|
function ContactForm() {
|
|
289
300
|
const { control, handleSubmit } = useForm<FormData>({
|
|
290
|
-
resolver: zodResolver(schema)
|
|
301
|
+
resolver: zodResolver(schema),
|
|
291
302
|
});
|
|
292
303
|
|
|
293
304
|
return (
|
|
@@ -298,7 +309,7 @@ function ContactForm() {
|
|
|
298
309
|
label="Full Name"
|
|
299
310
|
required
|
|
300
311
|
/>
|
|
301
|
-
|
|
312
|
+
|
|
302
313
|
<TextFieldElement
|
|
303
314
|
control={control}
|
|
304
315
|
name="email"
|
|
@@ -306,29 +317,29 @@ function ContactForm() {
|
|
|
306
317
|
type="email"
|
|
307
318
|
required
|
|
308
319
|
/>
|
|
309
|
-
|
|
320
|
+
|
|
310
321
|
<SelectElement
|
|
311
322
|
control={control}
|
|
312
323
|
name="category"
|
|
313
324
|
label="Category"
|
|
314
325
|
options={[
|
|
315
326
|
{ value: 'general', label: 'General Inquiry' },
|
|
316
|
-
{ value: 'support', label: 'Support' }
|
|
327
|
+
{ value: 'support', label: 'Support' },
|
|
317
328
|
]}
|
|
318
329
|
/>
|
|
319
|
-
|
|
330
|
+
|
|
320
331
|
<DatePickerElement
|
|
321
332
|
control={control}
|
|
322
333
|
name="birthDate"
|
|
323
334
|
label="Birth Date"
|
|
324
335
|
/>
|
|
325
|
-
|
|
336
|
+
|
|
326
337
|
<CheckboxElement
|
|
327
338
|
control={control}
|
|
328
339
|
name="subscribe"
|
|
329
340
|
label="Subscribe to newsletter"
|
|
330
341
|
/>
|
|
331
|
-
|
|
342
|
+
|
|
332
343
|
<SimpleButton type="submit" variant="contained">
|
|
333
344
|
Submit
|
|
334
345
|
</SimpleButton>
|
|
@@ -339,24 +350,25 @@ function ContactForm() {
|
|
|
339
350
|
|
|
340
351
|
### Available Form Wrappers
|
|
341
352
|
|
|
342
|
-
| Component
|
|
343
|
-
|
|
344
|
-
| `TextFieldElement`
|
|
345
|
-
| `PasswordElement`
|
|
346
|
-
| `SelectElement`
|
|
347
|
-
| `SelectMultiElement`
|
|
348
|
-
| `SelectCascadeElement` | Dependent dropdown selections
|
|
349
|
-
| `AsyncSelect`
|
|
350
|
-
| `AsyncMultiSelect`
|
|
351
|
-
| `DatePickerElement`
|
|
352
|
-
| `TimePickerElement`
|
|
353
|
-
| `CheckboxElement`
|
|
354
|
-
| `CheckboxGroup`
|
|
355
|
-
| `RadioButtonGroup`
|
|
353
|
+
| Component | Description | Use Case | Features |
|
|
354
|
+
| ---------------------- | ------------------------------------- | --------------------------------- | ----------------------------------------------------- |
|
|
355
|
+
| `TextFieldElement` | Text input wrapper | Single-line text, email, password | Value transformation, grid layout, auto-validation |
|
|
356
|
+
| `PasswordElement` | Password input with visibility toggle | Secure password entry | Eye icon toggle, all TextFieldElement features |
|
|
357
|
+
| `SelectElement` | Single selection dropdown | Categories, statuses | Auto-select single option, custom label/value keys |
|
|
358
|
+
| `SelectMultiElement` | Multiple selection dropdown | Tags, permissions | Chip display, select all/none functionality |
|
|
359
|
+
| `SelectCascadeElement` | Dependent dropdown selections | Country → State → City | Hierarchical options, parent-child relationships |
|
|
360
|
+
| `AsyncSelect` | Async searchable dropdown | User search, API data | Debounced search, loading states, no options handling |
|
|
361
|
+
| `AsyncMultiSelect` | Async multiple selection | Multiple user selection | Async loading with multi-select capabilities |
|
|
362
|
+
| `DatePickerElement` | Date selection | Birth dates, deadlines | MUI date picker integration, keyboard input |
|
|
363
|
+
| `TimePickerElement` | Time selection | Appointments, schedules | MUI time picker integration, 12/24 hour format |
|
|
364
|
+
| `CheckboxElement` | Single checkbox | Agreements, preferences | Boolean value handling, label integration |
|
|
365
|
+
| `CheckboxGroup` | Multiple checkboxes | Multiple selections | Array value handling, group validation |
|
|
366
|
+
| `RadioButtonGroup` | Radio button group | Exclusive selections | Single selection from multiple options |
|
|
356
367
|
|
|
357
368
|
## Hooks
|
|
358
369
|
|
|
359
370
|
### useTransform
|
|
371
|
+
|
|
360
372
|
Transform values with memoization and change handling for form components.
|
|
361
373
|
|
|
362
374
|
```tsx
|
|
@@ -366,13 +378,14 @@ const { value, onChange } = useTransform({
|
|
|
366
378
|
value: formValue,
|
|
367
379
|
onChange: field.onChange,
|
|
368
380
|
transform: {
|
|
369
|
-
input:
|
|
370
|
-
output:
|
|
371
|
-
}
|
|
381
|
+
input: value => value?.toString() || '',
|
|
382
|
+
output: event => parseInt(event.target.value) || null,
|
|
383
|
+
},
|
|
372
384
|
});
|
|
373
385
|
```
|
|
374
386
|
|
|
375
387
|
**Features:**
|
|
388
|
+
|
|
376
389
|
- Memoized transformations for performance
|
|
377
390
|
- Input/output transformation support
|
|
378
391
|
- Change event handling
|
|
@@ -380,6 +393,7 @@ const { value, onChange } = useTransform({
|
|
|
380
393
|
- Integration with form components
|
|
381
394
|
|
|
382
395
|
**Common Use Cases:**
|
|
396
|
+
|
|
383
397
|
- Number input formatting
|
|
384
398
|
- Date formatting
|
|
385
399
|
- Currency formatting
|
|
@@ -390,32 +404,34 @@ const { value, onChange } = useTransform({
|
|
|
390
404
|
Comprehensive TypeScript interfaces for API integration and form handling:
|
|
391
405
|
|
|
392
406
|
```tsx
|
|
393
|
-
import type {
|
|
394
|
-
ApiResponse,
|
|
395
|
-
OperationResponse,
|
|
407
|
+
import type {
|
|
408
|
+
ApiResponse,
|
|
409
|
+
OperationResponse,
|
|
396
410
|
ValidationErrors,
|
|
397
411
|
OptionItem,
|
|
398
412
|
PostModel,
|
|
399
|
-
ListResponse
|
|
413
|
+
ListResponse,
|
|
400
414
|
} from '@gnwebsoft/ui/types';
|
|
401
415
|
|
|
402
416
|
// API response structure
|
|
403
417
|
const response: ApiResponse<User[]> = {
|
|
404
418
|
status: 200,
|
|
405
|
-
|
|
406
|
-
traceId: 'abc123'
|
|
419
|
+
data: users,
|
|
420
|
+
traceId: 'abc123',
|
|
407
421
|
};
|
|
408
422
|
|
|
409
423
|
// Form options
|
|
410
424
|
const options: OptionItem[] = [
|
|
411
425
|
{ Label: 'Option 1', Value: '1' },
|
|
412
|
-
{ Label: 'Option 2', Value: '2' }
|
|
426
|
+
{ Label: 'Option 2', Value: '2' },
|
|
413
427
|
];
|
|
414
428
|
|
|
415
429
|
// Paginated list response
|
|
416
430
|
const listResponse: ListResponse<User> = {
|
|
417
|
-
Data: [
|
|
418
|
-
|
|
431
|
+
Data: [
|
|
432
|
+
/* users */
|
|
433
|
+
],
|
|
434
|
+
Total: 150,
|
|
419
435
|
};
|
|
420
436
|
|
|
421
437
|
// Filter/search request
|
|
@@ -424,11 +440,12 @@ const filterRequest: PostModel<UserFilter> = {
|
|
|
424
440
|
pageOffset: 0,
|
|
425
441
|
pageSize: 20,
|
|
426
442
|
sortField: 'name',
|
|
427
|
-
sortOrder: 'asc'
|
|
443
|
+
sortOrder: 'asc',
|
|
428
444
|
};
|
|
429
445
|
```
|
|
430
446
|
|
|
431
447
|
**Available Types:**
|
|
448
|
+
|
|
432
449
|
- `ApiResponse<T>` - Standard API response structure
|
|
433
450
|
- `ValidationErrors` - Form validation errors
|
|
434
451
|
- `OptionItem` / `OptionItem2` - Select options
|
|
@@ -446,7 +463,10 @@ import { api, handleServerErrors } from '@gnwebsoft/ui/utils';
|
|
|
446
463
|
// API calls with automatic authentication
|
|
447
464
|
const users = await api.get<User[]>('/users');
|
|
448
465
|
const newUser = await api.post<User>('/users', userData);
|
|
449
|
-
const filteredUsers = await api.filter<User, UserFilter>(
|
|
466
|
+
const filteredUsers = await api.filter<User, UserFilter>(
|
|
467
|
+
'/users/search',
|
|
468
|
+
filterModel
|
|
469
|
+
);
|
|
450
470
|
|
|
451
471
|
// File upload
|
|
452
472
|
const uploadResult = await api.upload<UploadResponse>('/upload', formData);
|
|
@@ -457,7 +477,7 @@ try {
|
|
|
457
477
|
} catch (error) {
|
|
458
478
|
handleServerErrors({
|
|
459
479
|
errors: error.response.data.errors,
|
|
460
|
-
setError
|
|
480
|
+
setError,
|
|
461
481
|
});
|
|
462
482
|
}
|
|
463
483
|
```
|
|
@@ -465,12 +485,12 @@ try {
|
|
|
465
485
|
### Data Transformation
|
|
466
486
|
|
|
467
487
|
```tsx
|
|
468
|
-
import {
|
|
469
|
-
flattenObjectKeys,
|
|
488
|
+
import {
|
|
489
|
+
flattenObjectKeys,
|
|
470
490
|
readValueAsDate,
|
|
471
491
|
propertyExists,
|
|
472
492
|
removeLeadingTrailingSlashes,
|
|
473
|
-
getTimezone
|
|
493
|
+
getTimezone,
|
|
474
494
|
} from '@gnwebsoft/ui/utils';
|
|
475
495
|
|
|
476
496
|
// Flatten nested objects
|
|
@@ -496,6 +516,7 @@ const timezone = getTimezone();
|
|
|
496
516
|
```
|
|
497
517
|
|
|
498
518
|
**Available Utilities:**
|
|
519
|
+
|
|
499
520
|
- `api` / `api2` - HTTP clients with authentication
|
|
500
521
|
- `handleServerErrors` - Form error mapping
|
|
501
522
|
- `flattenObjectKeys` - Nested object flattening
|
|
@@ -528,9 +549,7 @@ const theme = createTheme({
|
|
|
528
549
|
|
|
529
550
|
function App() {
|
|
530
551
|
return (
|
|
531
|
-
<ThemeProvider theme={theme}>
|
|
532
|
-
{/* Your app components */}
|
|
533
|
-
</ThemeProvider>
|
|
552
|
+
<ThemeProvider theme={theme}>{/* Your app components */}</ThemeProvider>
|
|
534
553
|
);
|
|
535
554
|
}
|
|
536
555
|
```
|
|
@@ -546,16 +565,16 @@ import { AsyncSelect } from '@gnwebsoft/ui/wrappers';
|
|
|
546
565
|
control={control}
|
|
547
566
|
name="assignee"
|
|
548
567
|
label="Assign to User"
|
|
549
|
-
loadOptions={async
|
|
568
|
+
loadOptions={async searchValue => {
|
|
550
569
|
const response = await api.get(`/users/search?q=${searchValue}`);
|
|
551
570
|
return response.data.map(user => ({
|
|
552
571
|
value: user.id,
|
|
553
|
-
label: `${user.name} (${user.email})
|
|
572
|
+
label: `${user.name} (${user.email})`,
|
|
554
573
|
}));
|
|
555
574
|
}}
|
|
556
575
|
placeholder="Search users..."
|
|
557
576
|
noOptionsText="No users found"
|
|
558
|
-
|
|
577
|
+
/>;
|
|
559
578
|
```
|
|
560
579
|
|
|
561
580
|
### Cascade Selects
|
|
@@ -573,11 +592,11 @@ import { SelectCascadeElement } from '@gnwebsoft/ui/wrappers';
|
|
|
573
592
|
label: 'United States',
|
|
574
593
|
children: [
|
|
575
594
|
{ value: 'ny', label: 'New York' },
|
|
576
|
-
{ value: 'ca', label: 'California' }
|
|
577
|
-
]
|
|
578
|
-
}
|
|
595
|
+
{ value: 'ca', label: 'California' },
|
|
596
|
+
],
|
|
597
|
+
},
|
|
579
598
|
]}
|
|
580
|
-
|
|
599
|
+
/>;
|
|
581
600
|
```
|
|
582
601
|
|
|
583
602
|
## Testing
|
|
@@ -594,7 +613,7 @@ test('renders button with loading state', () => {
|
|
|
594
613
|
Submit
|
|
595
614
|
</SimpleButton>
|
|
596
615
|
);
|
|
597
|
-
|
|
616
|
+
|
|
598
617
|
expect(screen.getByText('Loading...')).toBeInTheDocument();
|
|
599
618
|
expect(screen.getByRole('button')).toBeDisabled();
|
|
600
619
|
});
|
|
@@ -613,6 +632,7 @@ test('renders button with loading state', () => {
|
|
|
613
632
|
Comprehensive documentation is available for all components and utilities:
|
|
614
633
|
|
|
615
634
|
### 📚 Complete Documentation
|
|
635
|
+
|
|
616
636
|
- **[Component Documentation](./docs/COMPONENT_DOCUMENTATION.md)** - Detailed guide for all components
|
|
617
637
|
- **[Components](./docs/components/README.md)** - UI Components documentation
|
|
618
638
|
- **[Form Wrappers](./docs/wrappers/README.md)** - Form wrapper components documentation
|
|
@@ -621,12 +641,15 @@ Comprehensive documentation is available for all components and utilities:
|
|
|
621
641
|
- **[Types](./docs/types/README.md)** - TypeScript types documentation
|
|
622
642
|
|
|
623
643
|
### 🎯 Quick References
|
|
644
|
+
|
|
624
645
|
- **[Getting Started Guide](./docs/guides/getting-started.md)** - Setup and basic usage
|
|
625
646
|
- **[Forms Guide](./docs/guides/forms.md)** - Form handling patterns
|
|
626
647
|
- **[API Documentation](./docs/api/README.md)** - Generated API docs
|
|
627
648
|
|
|
628
649
|
### 📖 Examples
|
|
650
|
+
|
|
629
651
|
Each component includes:
|
|
652
|
+
|
|
630
653
|
- ✅ Basic usage examples
|
|
631
654
|
- ✅ Advanced configuration options
|
|
632
655
|
- ✅ TypeScript integration examples
|
|
@@ -657,6 +680,7 @@ pnpm run check-exports
|
|
|
657
680
|
```
|
|
658
681
|
|
|
659
682
|
### Development Workflow
|
|
683
|
+
|
|
660
684
|
The package supports instant development with hot module reloading:
|
|
661
685
|
|
|
662
686
|
```bash
|
|
@@ -685,4 +709,4 @@ See [CHANGELOG.md](./CHANGELOG.md) for release history.
|
|
|
685
709
|
|
|
686
710
|
---
|
|
687
711
|
|
|
688
|
-
**Made with ❤️ by GNWebsoft Team**
|
|
712
|
+
**Made with ❤️ by GNWebsoft Team**
|