@makroz/web 1.2.0 → 1.2.2
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/dist/auth/MkAuthContext.d.ts +43 -0
- package/dist/auth/MkAuthContext.d.ts.map +1 -0
- package/dist/auth/MkAuthContext.js +3 -0
- package/dist/auth/MkAuthContext.js.map +1 -0
- package/dist/auth/MkAuthForm.d.ts +42 -0
- package/dist/auth/MkAuthForm.d.ts.map +1 -0
- package/dist/auth/MkAuthForm.js +53 -0
- package/dist/auth/MkAuthForm.js.map +1 -0
- package/dist/auth/MkAuthProvider.d.ts +30 -0
- package/dist/auth/MkAuthProvider.d.ts.map +1 -0
- package/dist/auth/MkAuthProvider.js +317 -0
- package/dist/auth/MkAuthProvider.js.map +1 -0
- package/dist/auth/types.d.ts +63 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +20 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/auth/useMkAuth.d.ts +19 -0
- package/dist/auth/useMkAuth.d.ts.map +1 -0
- package/dist/auth/useMkAuth.js +26 -0
- package/dist/auth/useMkAuth.js.map +1 -0
- package/dist/components/FormField.d.ts +27 -0
- package/dist/components/FormField.d.ts.map +1 -0
- package/dist/components/FormField.js +18 -0
- package/dist/components/FormField.js.map +1 -0
- package/dist/components/FormField.stories.d.ts +11 -0
- package/dist/components/FormField.stories.d.ts.map +1 -0
- package/dist/components/FormField.stories.js +61 -0
- package/dist/components/FormField.stories.js.map +1 -0
- package/dist/components/MkAccordion.d.ts +36 -0
- package/dist/components/MkAccordion.d.ts.map +1 -0
- package/dist/components/MkAccordion.js +23 -0
- package/dist/components/MkAccordion.js.map +1 -0
- package/dist/components/MkAccordion.module.css +79 -0
- package/dist/components/MkAccordion.stories.d.ts +13 -0
- package/dist/components/MkAccordion.stories.d.ts.map +1 -0
- package/dist/components/MkAccordion.stories.js +76 -0
- package/dist/components/MkAccordion.stories.js.map +1 -0
- package/dist/components/MkAccordion.stories.test.d.ts +2 -0
- package/dist/components/MkAccordion.stories.test.d.ts.map +1 -0
- package/dist/components/MkAccordion.stories.test.js +18 -0
- package/dist/components/MkAccordion.stories.test.js.map +1 -0
- package/dist/components/MkAlert.d.ts +25 -0
- package/dist/components/MkAlert.d.ts.map +1 -0
- package/dist/components/MkAlert.js +21 -0
- package/dist/components/MkAlert.js.map +1 -0
- package/dist/components/MkAlert.module.css +103 -0
- package/dist/components/MkAlert.stories.d.ts +13 -0
- package/dist/components/MkAlert.stories.d.ts.map +1 -0
- package/dist/components/MkAlert.stories.js +75 -0
- package/dist/components/MkAlert.stories.js.map +1 -0
- package/dist/components/MkAlert.stories.test.d.ts +2 -0
- package/dist/components/MkAlert.stories.test.d.ts.map +1 -0
- package/dist/components/MkAlert.stories.test.js +16 -0
- package/dist/components/MkAlert.stories.test.js.map +1 -0
- package/dist/components/MkAvatar.d.ts +16 -0
- package/dist/components/MkAvatar.d.ts.map +1 -0
- package/dist/components/MkAvatar.js +23 -0
- package/dist/components/MkAvatar.js.map +1 -0
- package/dist/components/MkAvatar.module.css +62 -0
- package/dist/components/MkAvatar.stories.d.ts +14 -0
- package/dist/components/MkAvatar.stories.d.ts.map +1 -0
- package/dist/components/MkAvatar.stories.js +67 -0
- package/dist/components/MkAvatar.stories.js.map +1 -0
- package/dist/components/MkAvatar.stories.test.d.ts +2 -0
- package/dist/components/MkAvatar.stories.test.d.ts.map +1 -0
- package/dist/components/MkAvatar.stories.test.js +16 -0
- package/dist/components/MkAvatar.stories.test.js.map +1 -0
- package/dist/components/MkBadge.d.ts +15 -0
- package/dist/components/MkBadge.d.ts.map +1 -0
- package/dist/components/MkBadge.js +7 -0
- package/dist/components/MkBadge.js.map +1 -0
- package/dist/components/MkBadge.module.css +74 -0
- package/dist/components/MkBadge.stories.d.ts +15 -0
- package/dist/components/MkBadge.stories.d.ts.map +1 -0
- package/dist/components/MkBadge.stories.js +78 -0
- package/dist/components/MkBadge.stories.js.map +1 -0
- package/dist/components/MkBadge.stories.test.d.ts +2 -0
- package/dist/components/MkBadge.stories.test.d.ts.map +1 -0
- package/dist/components/MkBadge.stories.test.js +16 -0
- package/dist/components/MkBadge.stories.test.js.map +1 -0
- package/dist/components/MkButton.d.ts +11 -0
- package/dist/components/MkButton.module.css +85 -0
- package/dist/components/MkButton.stories.d.ts +12 -0
- package/dist/components/MkButton.stories.d.ts.map +1 -0
- package/dist/components/MkButton.stories.js +57 -0
- package/dist/components/MkButton.stories.js.map +1 -0
- package/dist/components/MkButton.test.d.ts +2 -0
- package/dist/components/MkButton.test.d.ts.map +1 -0
- package/dist/components/MkButton.test.js +56 -0
- package/dist/components/MkButton.test.js.map +1 -0
- package/dist/components/MkCard.d.ts +18 -0
- package/dist/components/MkCard.d.ts.map +1 -0
- package/dist/components/MkCard.js +6 -0
- package/dist/components/MkCard.js.map +1 -0
- package/dist/components/MkCard.module.css +63 -0
- package/dist/components/MkCard.stories.d.ts +11 -0
- package/dist/components/MkCard.stories.d.ts.map +1 -0
- package/dist/components/MkCard.stories.js +57 -0
- package/dist/components/MkCard.stories.js.map +1 -0
- package/dist/components/MkCheck.d.ts +32 -0
- package/dist/components/MkCheck.d.ts.map +1 -0
- package/dist/components/MkCheck.js +12 -0
- package/dist/components/MkCheck.js.map +1 -0
- package/dist/components/MkCheck.module.css +87 -0
- package/dist/components/MkCheck.stories.d.ts +13 -0
- package/dist/components/MkCheck.stories.d.ts.map +1 -0
- package/dist/components/MkCheck.stories.js +63 -0
- package/dist/components/MkCheck.stories.js.map +1 -0
- package/dist/components/MkCheck.stories.test.d.ts +2 -0
- package/dist/components/MkCheck.stories.test.d.ts.map +1 -0
- package/dist/components/MkCheck.stories.test.js +16 -0
- package/dist/components/MkCheck.stories.test.js.map +1 -0
- package/dist/components/MkDatePicker.d.ts +29 -0
- package/dist/components/MkDatePicker.d.ts.map +1 -0
- package/dist/components/MkDatePicker.js +10 -0
- package/dist/components/MkDatePicker.js.map +1 -0
- package/dist/components/MkDatePicker.module.css +77 -0
- package/dist/components/MkDatePicker.stories.d.ts +11 -0
- package/dist/components/MkDatePicker.stories.d.ts.map +1 -0
- package/dist/components/MkDatePicker.stories.js +47 -0
- package/dist/components/MkDatePicker.stories.js.map +1 -0
- package/dist/components/MkDatePicker.stories.test.d.ts +2 -0
- package/dist/components/MkDatePicker.stories.test.d.ts.map +1 -0
- package/dist/components/MkDatePicker.stories.test.js +16 -0
- package/dist/components/MkDatePicker.stories.test.js.map +1 -0
- package/dist/components/MkDivider.d.ts +14 -0
- package/dist/components/MkDivider.d.ts.map +1 -0
- package/dist/components/MkDivider.js +12 -0
- package/dist/components/MkDivider.js.map +1 -0
- package/dist/components/MkDivider.module.css +39 -0
- package/dist/components/MkDivider.stories.d.ts +12 -0
- package/dist/components/MkDivider.stories.d.ts.map +1 -0
- package/dist/components/MkDivider.stories.js +33 -0
- package/dist/components/MkDivider.stories.js.map +1 -0
- package/dist/components/MkDivider.stories.test.d.ts +2 -0
- package/dist/components/MkDivider.stories.test.d.ts.map +1 -0
- package/dist/components/MkDivider.stories.test.js +15 -0
- package/dist/components/MkDivider.stories.test.js.map +1 -0
- package/dist/components/MkDropDown.d.ts +22 -0
- package/dist/components/MkDropDown.d.ts.map +1 -0
- package/dist/components/MkDropDown.js +24 -0
- package/dist/components/MkDropDown.js.map +1 -0
- package/dist/components/MkDropDown.module.css +108 -0
- package/dist/components/MkDropDown.stories.d.ts +12 -0
- package/dist/components/MkDropDown.stories.d.ts.map +1 -0
- package/dist/components/MkDropDown.stories.js +76 -0
- package/dist/components/MkDropDown.stories.js.map +1 -0
- package/dist/components/MkDropDown.stories.test.d.ts +2 -0
- package/dist/components/MkDropDown.stories.test.d.ts.map +1 -0
- package/dist/components/MkDropDown.stories.test.js +18 -0
- package/dist/components/MkDropDown.stories.test.js.map +1 -0
- package/dist/components/MkEmptyState.d.ts +14 -0
- package/dist/components/MkEmptyState.d.ts.map +1 -0
- package/dist/components/MkEmptyState.js +6 -0
- package/dist/components/MkEmptyState.js.map +1 -0
- package/dist/components/MkEmptyState.module.css +35 -0
- package/dist/components/MkEmptyState.stories.d.ts +12 -0
- package/dist/components/MkEmptyState.stories.d.ts.map +1 -0
- package/dist/components/MkEmptyState.stories.js +44 -0
- package/dist/components/MkEmptyState.stories.js.map +1 -0
- package/dist/components/MkEmptyState.stories.test.d.ts +2 -0
- package/dist/components/MkEmptyState.stories.test.d.ts.map +1 -0
- package/dist/components/MkEmptyState.stories.test.js +15 -0
- package/dist/components/MkEmptyState.stories.test.js.map +1 -0
- package/dist/components/MkFileUpload.d.ts +36 -0
- package/dist/components/MkFileUpload.d.ts.map +1 -0
- package/dist/components/MkFileUpload.js +50 -0
- package/dist/components/MkFileUpload.js.map +1 -0
- package/dist/components/MkFileUpload.module.css +74 -0
- package/dist/components/MkFileUpload.stories.d.ts +12 -0
- package/dist/components/MkFileUpload.stories.d.ts.map +1 -0
- package/dist/components/MkFileUpload.stories.js +53 -0
- package/dist/components/MkFileUpload.stories.js.map +1 -0
- package/dist/components/MkFileUpload.stories.test.d.ts +2 -0
- package/dist/components/MkFileUpload.stories.test.d.ts.map +1 -0
- package/dist/components/MkFileUpload.stories.test.js +15 -0
- package/dist/components/MkFileUpload.stories.test.js.map +1 -0
- package/dist/components/MkIcons.d.ts +14 -0
- package/dist/components/MkIcons.d.ts.map +1 -0
- package/dist/components/MkIcons.js +36 -0
- package/dist/components/MkIcons.js.map +1 -0
- package/dist/components/MkInfiniteList.d.ts +15 -0
- package/dist/components/MkInfiniteList.d.ts.map +1 -0
- package/dist/components/MkInfiniteList.js +29 -0
- package/dist/components/MkInfiniteList.js.map +1 -0
- package/dist/components/MkInfiniteList.module.css +69 -0
- package/dist/components/MkInfiniteList.stories.d.ts +17 -0
- package/dist/components/MkInfiniteList.stories.d.ts.map +1 -0
- package/dist/components/MkInfiniteList.stories.js +90 -0
- package/dist/components/MkInfiniteList.stories.js.map +1 -0
- package/dist/components/MkInfiniteList.stories.test.d.ts +2 -0
- package/dist/components/MkInfiniteList.stories.test.d.ts.map +1 -0
- package/dist/components/MkInfiniteList.stories.test.js +24 -0
- package/dist/components/MkInfiniteList.stories.test.js.map +1 -0
- package/dist/components/MkInput.d.ts +13 -0
- package/dist/components/MkInput.d.ts.map +1 -0
- package/dist/components/MkInput.js +21 -0
- package/dist/components/MkInput.js.map +1 -0
- package/dist/components/MkInput.module.css +94 -0
- package/dist/components/MkInput.stories.d.ts +13 -0
- package/dist/components/MkInput.stories.d.ts.map +1 -0
- package/dist/components/MkInput.stories.js +75 -0
- package/dist/components/MkInput.stories.js.map +1 -0
- package/dist/components/MkInput.stories.test.d.ts +2 -0
- package/dist/components/MkInput.stories.test.d.ts.map +1 -0
- package/dist/components/MkInput.stories.test.js +16 -0
- package/dist/components/MkInput.stories.test.js.map +1 -0
- package/dist/components/MkLoading.d.ts +20 -0
- package/dist/components/MkLoading.d.ts.map +1 -0
- package/dist/components/MkLoading.js +14 -0
- package/dist/components/MkLoading.js.map +1 -0
- package/dist/components/MkLoading.module.css +39 -0
- package/dist/components/MkLoading.stories.d.ts +13 -0
- package/dist/components/MkLoading.stories.d.ts.map +1 -0
- package/dist/components/MkLoading.stories.js +35 -0
- package/dist/components/MkLoading.stories.js.map +1 -0
- package/dist/components/MkLoading.stories.test.d.ts +2 -0
- package/dist/components/MkLoading.stories.test.d.ts.map +1 -0
- package/dist/components/MkLoading.stories.test.js +15 -0
- package/dist/components/MkLoading.stories.test.js.map +1 -0
- package/dist/components/MkModal.d.ts +20 -0
- package/dist/components/MkModal.d.ts.map +1 -0
- package/dist/components/MkModal.js +31 -0
- package/dist/components/MkModal.js.map +1 -0
- package/dist/components/MkModal.module.css +107 -0
- package/dist/components/MkModal.stories.d.ts +13 -0
- package/dist/components/MkModal.stories.d.ts.map +1 -0
- package/dist/components/MkModal.stories.js +73 -0
- package/dist/components/MkModal.stories.js.map +1 -0
- package/dist/components/MkProgressBar.d.ts +17 -0
- package/dist/components/MkProgressBar.d.ts.map +1 -0
- package/dist/components/MkProgressBar.js +7 -0
- package/dist/components/MkProgressBar.js.map +1 -0
- package/dist/components/MkProgressBar.module.css +48 -0
- package/dist/components/MkProgressBar.stories.d.ts +13 -0
- package/dist/components/MkProgressBar.stories.d.ts.map +1 -0
- package/dist/components/MkProgressBar.stories.js +39 -0
- package/dist/components/MkProgressBar.stories.js.map +1 -0
- package/dist/components/MkProgressBar.stories.test.d.ts +2 -0
- package/dist/components/MkProgressBar.stories.test.d.ts.map +1 -0
- package/dist/components/MkProgressBar.stories.test.js +15 -0
- package/dist/components/MkProgressBar.stories.test.js.map +1 -0
- package/dist/components/MkRadio.d.ts +34 -0
- package/dist/components/MkRadio.d.ts.map +1 -0
- package/dist/components/MkRadio.js +19 -0
- package/dist/components/MkRadio.js.map +1 -0
- package/dist/components/MkRadio.module.css +74 -0
- package/dist/components/MkRadio.stories.d.ts +13 -0
- package/dist/components/MkRadio.stories.d.ts.map +1 -0
- package/dist/components/MkRadio.stories.js +55 -0
- package/dist/components/MkRadio.stories.js.map +1 -0
- package/dist/components/MkRadio.stories.test.d.ts +2 -0
- package/dist/components/MkRadio.stories.test.d.ts.map +1 -0
- package/dist/components/MkRadio.stories.test.js +18 -0
- package/dist/components/MkRadio.stories.test.js.map +1 -0
- package/dist/components/MkSearchInput.d.ts +30 -0
- package/dist/components/MkSearchInput.d.ts.map +1 -0
- package/dist/components/MkSearchInput.js +27 -0
- package/dist/components/MkSearchInput.js.map +1 -0
- package/dist/components/MkSearchInput.module.css +80 -0
- package/dist/components/MkSearchInput.stories.d.ts +13 -0
- package/dist/components/MkSearchInput.stories.d.ts.map +1 -0
- package/dist/components/MkSearchInput.stories.js +47 -0
- package/dist/components/MkSearchInput.stories.js.map +1 -0
- package/dist/components/MkSearchInput.stories.test.d.ts +2 -0
- package/dist/components/MkSearchInput.stories.test.d.ts.map +1 -0
- package/dist/components/MkSearchInput.stories.test.js +15 -0
- package/dist/components/MkSearchInput.stories.test.js.map +1 -0
- package/dist/components/MkSelect.d.ts +23 -0
- package/dist/components/MkSelect.d.ts.map +1 -0
- package/dist/components/MkSelect.js +59 -0
- package/dist/components/MkSelect.js.map +1 -0
- package/dist/components/MkSelect.module.css +177 -0
- package/dist/components/MkSelect.stories.d.ts +12 -0
- package/dist/components/MkSelect.stories.d.ts.map +1 -0
- package/dist/components/MkSelect.stories.js +84 -0
- package/dist/components/MkSelect.stories.js.map +1 -0
- package/dist/components/MkSelect.stories.test.d.ts +2 -0
- package/dist/components/MkSelect.stories.test.d.ts.map +1 -0
- package/dist/components/MkSelect.stories.test.js +21 -0
- package/dist/components/MkSelect.stories.test.js.map +1 -0
- package/dist/components/MkSkeleton.d.ts +22 -0
- package/dist/components/MkSkeleton.d.ts.map +1 -0
- package/dist/components/MkSkeleton.js +21 -0
- package/dist/components/MkSkeleton.js.map +1 -0
- package/dist/components/MkSkeleton.module.css +28 -0
- package/dist/components/MkSkeleton.stories.d.ts +12 -0
- package/dist/components/MkSkeleton.stories.d.ts.map +1 -0
- package/dist/components/MkSkeleton.stories.js +32 -0
- package/dist/components/MkSkeleton.stories.js.map +1 -0
- package/dist/components/MkSkeleton.stories.test.d.ts +2 -0
- package/dist/components/MkSkeleton.stories.test.d.ts.map +1 -0
- package/dist/components/MkSkeleton.stories.test.js +15 -0
- package/dist/components/MkSkeleton.stories.test.js.map +1 -0
- package/dist/components/MkSwitch.d.ts +22 -0
- package/dist/components/MkSwitch.d.ts.map +1 -0
- package/dist/components/MkSwitch.js +14 -0
- package/dist/components/MkSwitch.js.map +1 -0
- package/dist/components/MkSwitch.module.css +108 -0
- package/dist/components/MkSwitch.stories.d.ts +13 -0
- package/dist/components/MkSwitch.stories.d.ts.map +1 -0
- package/dist/components/MkSwitch.stories.js +37 -0
- package/dist/components/MkSwitch.stories.js.map +1 -0
- package/dist/components/MkSwitch.stories.test.d.ts +2 -0
- package/dist/components/MkSwitch.stories.test.d.ts.map +1 -0
- package/dist/components/MkSwitch.stories.test.js +15 -0
- package/dist/components/MkSwitch.stories.test.js.map +1 -0
- package/dist/components/MkTable.d.ts +27 -0
- package/dist/components/MkTable.d.ts.map +1 -0
- package/dist/components/MkTable.js +11 -0
- package/dist/components/MkTable.js.map +1 -0
- package/dist/components/MkTable.module.css +163 -0
- package/dist/components/MkTable.stories.d.ts +16 -0
- package/dist/components/MkTable.stories.d.ts.map +1 -0
- package/dist/components/MkTable.stories.js +65 -0
- package/dist/components/MkTable.stories.js.map +1 -0
- package/dist/components/MkTable.stories.test.d.ts +2 -0
- package/dist/components/MkTable.stories.test.d.ts.map +1 -0
- package/dist/components/MkTable.stories.test.js +25 -0
- package/dist/components/MkTable.stories.test.js.map +1 -0
- package/dist/components/MkTabs.d.ts +22 -0
- package/dist/components/MkTabs.d.ts.map +1 -0
- package/dist/components/MkTabs.js +17 -0
- package/dist/components/MkTabs.js.map +1 -0
- package/dist/components/MkTabs.module.css +117 -0
- package/dist/components/MkTabs.stories.d.ts +11 -0
- package/dist/components/MkTabs.stories.d.ts.map +1 -0
- package/dist/components/MkTabs.stories.js +73 -0
- package/dist/components/MkTabs.stories.js.map +1 -0
- package/dist/components/MkTextArea.d.ts +21 -0
- package/dist/components/MkTextArea.d.ts.map +1 -0
- package/dist/components/MkTextArea.js +8 -0
- package/dist/components/MkTextArea.js.map +1 -0
- package/dist/components/MkTextArea.stories.d.ts +13 -0
- package/dist/components/MkTextArea.stories.d.ts.map +1 -0
- package/dist/components/MkTextArea.stories.js +56 -0
- package/dist/components/MkTextArea.stories.js.map +1 -0
- package/dist/components/MkTextArea.stories.test.d.ts +2 -0
- package/dist/components/MkTextArea.stories.test.d.ts.map +1 -0
- package/dist/components/MkTextArea.stories.test.js +15 -0
- package/dist/components/MkTextArea.stories.test.js.map +1 -0
- package/dist/components/MkThemeEditor.d.ts +8 -0
- package/dist/components/MkThemeEditor.module.css +177 -0
- package/dist/components/MkToastContainer.d.ts +3 -0
- package/dist/components/MkToastContainer.module.css +95 -0
- package/dist/components/MkToastContainer.stories.d.ts +9 -0
- package/dist/components/MkToastContainer.stories.js +43 -0
- package/dist/components/MkToastContainer.stories.js.map +1 -0
- package/dist/components/MkToastContainer.stories.test.d.ts +2 -0
- package/dist/components/MkToastContainer.stories.test.js +29 -0
- package/dist/components/MkToastContainer.stories.test.js.map +1 -0
- package/dist/components/MkTooltip.d.ts +14 -0
- package/dist/components/MkTooltip.d.ts.map +1 -0
- package/dist/components/MkTooltip.js +17 -0
- package/dist/components/MkTooltip.js.map +1 -0
- package/dist/components/MkTooltip.module.css +43 -0
- package/dist/components/MkTooltip.stories.d.ts +13 -0
- package/dist/components/MkTooltip.stories.d.ts.map +1 -0
- package/dist/components/MkTooltip.stories.js +59 -0
- package/dist/components/MkTooltip.stories.js.map +1 -0
- package/dist/components/MkTooltip.stories.test.d.ts +2 -0
- package/dist/components/MkTooltip.stories.test.d.ts.map +1 -0
- package/dist/components/MkTooltip.stories.test.js +15 -0
- package/dist/components/MkTooltip.stories.test.js.map +1 -0
- package/dist/components/MkWindowList.d.ts +20 -0
- package/dist/components/MkWindowList.d.ts.map +1 -0
- package/dist/components/MkWindowList.js +59 -0
- package/dist/components/MkWindowList.js.map +1 -0
- package/dist/components/MkWindowList.module.css +59 -0
- package/dist/components/MkWindowList.stories.d.ts +16 -0
- package/dist/components/MkWindowList.stories.d.ts.map +1 -0
- package/dist/components/MkWindowList.stories.js +76 -0
- package/dist/components/MkWindowList.stories.js.map +1 -0
- package/dist/components/MkWindowList.stories.test.d.ts +2 -0
- package/dist/components/MkWindowList.stories.test.d.ts.map +1 -0
- package/dist/components/MkWindowList.stories.test.js +19 -0
- package/dist/components/MkWindowList.stories.test.js.map +1 -0
- package/dist/components/index.d.ts +31 -0
- package/dist/components/index.js +34 -0
- package/dist/components/index.js.map +1 -0
- package/dist/context/MkApiContext.d.ts +15 -0
- package/dist/context/MkApiContext.d.ts.map +1 -0
- package/dist/context/MkApiContext.js +28 -0
- package/dist/context/MkApiContext.js.map +1 -0
- package/dist/context/MkAuthContext.d.ts +2 -1
- package/dist/context/MkAuthContext.d.ts.map +1 -1
- package/dist/context/MkConfirmContext.d.ts +2 -1
- package/dist/context/MkConfirmContext.d.ts.map +1 -1
- package/dist/context/MkToastContext.d.ts +2 -1
- package/dist/context/MkToastContext.d.ts.map +1 -1
- package/dist/hooks/useApi.d.ts +6 -5
- package/dist/hooks/useApi.d.ts.map +1 -1
- package/dist/hooks/useApi.test.d.ts +2 -0
- package/dist/hooks/useApi.test.js +184 -0
- package/dist/hooks/useApi.test.js.map +1 -0
- package/dist/hooks/useMkClickOutside.d.ts +8 -0
- package/dist/hooks/useMkClickOutside.d.ts.map +1 -0
- package/dist/hooks/useMkClickOutside.js +24 -0
- package/dist/hooks/useMkClickOutside.js.map +1 -0
- package/dist/hooks/useMkCrud.d.ts +39 -0
- package/dist/hooks/useMkCrud.test.d.ts +2 -0
- package/dist/hooks/useMkDebounce.d.ts +24 -0
- package/dist/hooks/useMkDebounce.d.ts.map +1 -0
- package/dist/hooks/useMkDebounce.js +36 -0
- package/dist/hooks/useMkDebounce.js.map +1 -0
- package/dist/hooks/useMkEffectDebug.d.ts +7 -0
- package/dist/hooks/useMkEffectDebug.d.ts.map +1 -0
- package/dist/hooks/useMkEffectDebug.js +26 -0
- package/dist/hooks/useMkEffectDebug.js.map +1 -0
- package/dist/hooks/useMkEvent.d.ts +31 -0
- package/dist/hooks/useMkEvent.d.ts.map +1 -0
- package/dist/hooks/useMkEvent.js +56 -0
- package/dist/hooks/useMkEvent.js.map +1 -0
- package/dist/hooks/useMkForm.d.ts +43 -0
- package/dist/hooks/useMkForm.test.d.ts +2 -0
- package/dist/hooks/useMkInViewPort.d.ts +14 -0
- package/dist/hooks/useMkInViewPort.d.ts.map +1 -0
- package/dist/hooks/useMkInViewPort.js +31 -0
- package/dist/hooks/useMkInViewPort.js.map +1 -0
- package/dist/hooks/useMkInfiniteList.d.ts +15 -0
- package/dist/hooks/useMkInfiniteList.js +47 -0
- package/dist/hooks/useMkInfiniteList.js.map +1 -0
- package/dist/hooks/useMkList.d.ts +7 -7
- package/dist/hooks/useMkList.js +53 -0
- package/dist/hooks/useMkList.js.map +1 -0
- package/dist/hooks/useMkLocalStorage.d.ts +6 -0
- package/dist/hooks/useMkLocalStorage.d.ts.map +1 -0
- package/dist/hooks/useMkLocalStorage.js +33 -0
- package/dist/hooks/useMkLocalStorage.js.map +1 -0
- package/dist/hooks/useMkLongPress.d.ts +37 -0
- package/dist/hooks/useMkLongPress.d.ts.map +1 -0
- package/dist/hooks/useMkLongPress.js +59 -0
- package/dist/hooks/useMkLongPress.js.map +1 -0
- package/dist/hooks/useMkMediaQuery.d.ts +14 -0
- package/dist/hooks/useMkMediaQuery.d.ts.map +1 -0
- package/dist/hooks/useMkMediaQuery.js +31 -0
- package/dist/hooks/useMkMediaQuery.js.map +1 -0
- package/dist/hooks/useMkPrevious.d.ts +7 -0
- package/dist/hooks/useMkPrevious.d.ts.map +1 -0
- package/dist/hooks/useMkPrevious.js +14 -0
- package/dist/hooks/useMkPrevious.js.map +1 -0
- package/dist/hooks/useMkScreenSize.d.ts +25 -0
- package/dist/hooks/useMkScreenSize.d.ts.map +1 -0
- package/dist/hooks/useMkScreenSize.js +42 -0
- package/dist/hooks/useMkScreenSize.js.map +1 -0
- package/dist/hooks/useMkStore.d.ts +22 -0
- package/dist/hooks/useMkStore.d.ts.map +1 -0
- package/dist/hooks/useMkStore.js +58 -0
- package/dist/hooks/useMkStore.js.map +1 -0
- package/dist/hooks/useMkToggle.d.ts +6 -0
- package/dist/hooks/useMkToggle.d.ts.map +1 -0
- package/dist/hooks/useMkToggle.js +13 -0
- package/dist/hooks/useMkToggle.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/styles/index.css +124 -0
- package/dist/test-setup.d.ts +2 -0
- package/dist/test-setup.d.ts.map +1 -0
- package/dist/test-setup.js +31 -0
- package/dist/test-setup.js.map +1 -0
- package/dist/theme/MkThemeProvider.d.ts +20 -0
- package/dist/utils/images.d.ts +9 -0
- package/dist/utils/images.d.ts.map +1 -0
- package/dist/utils/images.js +50 -0
- package/dist/utils/images.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { AdminDto } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Shape of the value exposed by `<MkAuthProvider>`.
|
|
4
|
+
*
|
|
5
|
+
* The provider is intentionally minimal: it only knows about the
|
|
6
|
+
* current scope, the cached `user`, and the auth lifecycle (`login`,
|
|
7
|
+
* `logout`, `refresh`, `hasAbility`). Token persistence is internal —
|
|
8
|
+
* callers never see the raw tokens, only the boolean/typed results.
|
|
9
|
+
*/
|
|
10
|
+
export interface MkAuthContextValue {
|
|
11
|
+
/** The currently authenticated admin, or `null` if signed out. */
|
|
12
|
+
user: AdminDto | null;
|
|
13
|
+
/** True once the provider has completed its initial bootstrap (me/refresh). */
|
|
14
|
+
isLoading: boolean;
|
|
15
|
+
/** True iff `user !== null`. */
|
|
16
|
+
isAuthenticated: boolean;
|
|
17
|
+
/** Last error from login/refresh, cleared on the next successful call. */
|
|
18
|
+
error: Error | null;
|
|
19
|
+
/**
|
|
20
|
+
* Exchange email + password for tokens, persist them, and set `user`.
|
|
21
|
+
* On failure throws — the form catches and renders the error inline.
|
|
22
|
+
*/
|
|
23
|
+
login: (email: string, password: string) => Promise<AdminDto>;
|
|
24
|
+
/**
|
|
25
|
+
* Hit the logout endpoint, clear the local cache, drop `user`.
|
|
26
|
+
* Best-effort: even if the network call fails, the local state is cleared.
|
|
27
|
+
*/
|
|
28
|
+
logout: () => Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Manually trigger a token refresh and re-fetch the current user.
|
|
31
|
+
* Mostly used internally on mount, but exposed so consumers can
|
|
32
|
+
* force-refresh after a permission change, for example.
|
|
33
|
+
*/
|
|
34
|
+
refresh: () => Promise<AdminDto | null>;
|
|
35
|
+
/**
|
|
36
|
+
* True iff the current user's `abilities` array contains `ability`
|
|
37
|
+
* (exact match). The backend may return wildcard scopes in the
|
|
38
|
+
* future; for now it's a plain array of strings.
|
|
39
|
+
*/
|
|
40
|
+
hasAbility: (ability: string) => boolean;
|
|
41
|
+
}
|
|
42
|
+
export declare const MkAuthContext: import("react").Context<MkAuthContextValue | undefined>;
|
|
43
|
+
//# sourceMappingURL=MkAuthContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MkAuthContext.d.ts","sourceRoot":"","sources":["../../src/auth/MkAuthContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IAC/B,kEAAkE;IAClE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,+EAA+E;IAC/E,SAAS,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,eAAe,EAAE,OAAO,CAAC;IACzB,0EAA0E;IAC1E,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB;;;OAGG;IACH,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE9D;;;OAGG;IACH,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;;;OAIG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAExC;;;;OAIG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;CAC5C;AAED,eAAO,MAAM,aAAa,yDAA2D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MkAuthContext.js","sourceRoot":"","sources":["../../src/auth/MkAuthContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAgDtC,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAiC,SAAS,CAAC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export interface MkAuthFormProps {
|
|
2
|
+
/** Auth scope to use, e.g. "admin", "member", "guard". */
|
|
3
|
+
scope: string;
|
|
4
|
+
/**
|
|
5
|
+
* Path to navigate to after a successful login. Defaults to
|
|
6
|
+
* `/{scope}/dashboard`. Use a fully qualified path or a relative one
|
|
7
|
+
* — this component only triggers a callback.
|
|
8
|
+
*/
|
|
9
|
+
redirectAfterLogin?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Show a "¿Olvidaste tu contraseña?" link below the submit button.
|
|
12
|
+
* Defaults to `true`.
|
|
13
|
+
*/
|
|
14
|
+
showForgotPassword?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Optional: invoked after a successful login. Receives the resolved
|
|
17
|
+
* `AdminDto` and the `redirectAfterLogin` value so the host can do
|
|
18
|
+
* `router.push(...)` with its own router. When omitted, the
|
|
19
|
+
* component only logs the success.
|
|
20
|
+
*/
|
|
21
|
+
onLoginSuccess?: (admin: {
|
|
22
|
+
id: string;
|
|
23
|
+
email: string;
|
|
24
|
+
}, redirectTo: string) => void;
|
|
25
|
+
/**
|
|
26
|
+
* Optional: invoked when the user clicks the forgot-password link.
|
|
27
|
+
* When omitted, the link is rendered as a plain `<a href="/{scope}/forgot">`
|
|
28
|
+
* — sufficient for any routing setup.
|
|
29
|
+
*/
|
|
30
|
+
onForgotPassword?: () => void;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Minimal, dependency-free login form. Renders email + password fields,
|
|
34
|
+
* a submit button, an inline error region, and an optional
|
|
35
|
+
* "¿Olvidaste tu contraseña?" link.
|
|
36
|
+
*
|
|
37
|
+
* Validation is intentionally simple (non-empty + email shape) — the
|
|
38
|
+
* server is the source of truth, and this keeps the component focused
|
|
39
|
+
* on the auth lifecycle.
|
|
40
|
+
*/
|
|
41
|
+
export declare function MkAuthForm({ scope, redirectAfterLogin, showForgotPassword, onLoginSuccess, onForgotPassword, }: MkAuthFormProps): React.JSX.Element;
|
|
42
|
+
//# sourceMappingURL=MkAuthForm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MkAuthForm.d.ts","sourceRoot":"","sources":["../../src/auth/MkAuthForm.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,eAAe;IAC5B,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACpF;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC;AAOD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EACvB,KAAK,EACL,kBAAkB,EAClB,kBAAyB,EACzB,cAAc,EACd,gBAAgB,GACnB,EAAE,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAqIrC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState, useCallback, useMemo } from 'react';
|
|
4
|
+
import { useMkAuth } from './useMkAuth';
|
|
5
|
+
import { MkInput } from '../components/MkInput';
|
|
6
|
+
import { MkButton } from '../components/MkButton';
|
|
7
|
+
/**
|
|
8
|
+
* Minimal, dependency-free login form. Renders email + password fields,
|
|
9
|
+
* a submit button, an inline error region, and an optional
|
|
10
|
+
* "¿Olvidaste tu contraseña?" link.
|
|
11
|
+
*
|
|
12
|
+
* Validation is intentionally simple (non-empty + email shape) — the
|
|
13
|
+
* server is the source of truth, and this keeps the component focused
|
|
14
|
+
* on the auth lifecycle.
|
|
15
|
+
*/
|
|
16
|
+
export function MkAuthForm({ scope, redirectAfterLogin, showForgotPassword = true, onLoginSuccess, onForgotPassword, }) {
|
|
17
|
+
const { login, error, isLoading } = useMkAuth();
|
|
18
|
+
const [state, setState] = useState({ email: '', password: '' });
|
|
19
|
+
const [submitting, setSubmitting] = useState(false);
|
|
20
|
+
const target = useMemo(() => redirectAfterLogin !== null && redirectAfterLogin !== void 0 ? redirectAfterLogin : `/${scope}/dashboard`, [redirectAfterLogin, scope]);
|
|
21
|
+
const handleChange = useCallback((field) => (value) => {
|
|
22
|
+
setState((prev) => (Object.assign(Object.assign({}, prev), { [field]: value })));
|
|
23
|
+
}, []);
|
|
24
|
+
const handleSubmit = useCallback((e) => {
|
|
25
|
+
e.preventDefault();
|
|
26
|
+
if (submitting || isLoading)
|
|
27
|
+
return;
|
|
28
|
+
setSubmitting(true);
|
|
29
|
+
// Error is surfaced via `error` from `useMkAuth`; we just need to
|
|
30
|
+
// reset submitting on completion.
|
|
31
|
+
void login(state.email.trim(), state.password)
|
|
32
|
+
.then((admin) => onLoginSuccess === null || onLoginSuccess === void 0 ? void 0 : onLoginSuccess({ id: admin.id, email: admin.email }, target))
|
|
33
|
+
.finally(() => setSubmitting(false));
|
|
34
|
+
}, [submitting, isLoading, login, state.email, state.password, onLoginSuccess, target]);
|
|
35
|
+
// `MkInput` calls `onChange(value: string)`; we forward to our state
|
|
36
|
+
// setter. We don't pass the native event through because the existing
|
|
37
|
+
// `MkInput` signature strips it.
|
|
38
|
+
const onEmailChange = useCallback((v) => handleChange('email')(v), [handleChange]);
|
|
39
|
+
const onPasswordChange = useCallback((v) => handleChange('password')(v), [handleChange]);
|
|
40
|
+
const errorMessage = error ? error.message : null;
|
|
41
|
+
return (_jsxs("form", { "data-mk-auth-scope": scope, onSubmit: handleSubmit, noValidate: true, "aria-busy": submitting || isLoading, style: { display: 'flex', flexDirection: 'column', gap: 12 }, children: [_jsxs("div", { children: [_jsx("label", { htmlFor: `${scope}-email`, children: "Email" }), _jsx(MkInput, { id: `${scope}-email`, name: "email", type: "email", autoComplete: "email", required: true, value: state.email, onChange: onEmailChange, disabled: submitting || isLoading, placeholder: "admin@example.com" })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: `${scope}-password`, children: "Contrase\u00F1a" }), _jsx(MkInput, { id: `${scope}-password`, name: "password", type: "password", autoComplete: "current-password", required: true, value: state.password, onChange: onPasswordChange, disabled: submitting || isLoading })] }), errorMessage ? (_jsx("div", { role: "alert", "data-mk-auth-error": true, style: {
|
|
42
|
+
color: 'var(--mk-color-error, #d32f2f)',
|
|
43
|
+
fontSize: 14,
|
|
44
|
+
}, children: errorMessage })) : null, _jsx(MkButton, { type: "submit", variant: "primary", loading: submitting || isLoading, disabled: submitting || isLoading || !state.email || !state.password, children: "Iniciar sesi\u00F3n" }), showForgotPassword ? (_jsx("div", { style: { fontSize: 14, textAlign: 'center' }, children: onForgotPassword ? (_jsx("button", { type: "button", onClick: onForgotPassword, style: {
|
|
45
|
+
background: 'none',
|
|
46
|
+
border: 'none',
|
|
47
|
+
color: 'var(--mk-color-primary, #1976d2)',
|
|
48
|
+
cursor: 'pointer',
|
|
49
|
+
padding: 0,
|
|
50
|
+
textDecoration: 'underline',
|
|
51
|
+
}, children: "\u00BFOlvidaste tu contrase\u00F1a?" })) : (_jsx("a", { href: `/${scope}/forgot`, style: { color: 'var(--mk-color-primary, #1976d2)' }, children: "\u00BFOlvidaste tu contrase\u00F1a?" })) })) : null] }));
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=MkAuthForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MkAuthForm.js","sourceRoot":"","sources":["../../src/auth/MkAuthForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { AuthStorageAdapter } from './types';
|
|
3
|
+
export interface MkAuthProviderProps {
|
|
4
|
+
/** Logical scope of this provider, e.g. "admin", "member", "guard". */
|
|
5
|
+
scope: string;
|
|
6
|
+
/**
|
|
7
|
+
* Base URL of the API. The provider appends `/api/${scope}/auth/...`
|
|
8
|
+
* to it. Trailing slashes are tolerated.
|
|
9
|
+
*/
|
|
10
|
+
apiBaseUrl: string;
|
|
11
|
+
/** Children wrapped by the provider. */
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
/**
|
|
14
|
+
* Optional storage adapter. Defaults to `window.localStorage` when
|
|
15
|
+
* available. Tests pass an in-memory adapter.
|
|
16
|
+
*/
|
|
17
|
+
storage?: AuthStorageAdapter;
|
|
18
|
+
/**
|
|
19
|
+
* Optional: inject a custom `fetch` implementation (e.g. for tests
|
|
20
|
+
* that polyfill `global.fetch` differently). Defaults to `globalThis.fetch`.
|
|
21
|
+
*/
|
|
22
|
+
fetcher?: typeof fetch;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* `<QueryClientProvider>` + `<MkAuthProviderInner>`. The outer wrapper
|
|
26
|
+
* exists so consumers don't have to remember to also mount a
|
|
27
|
+
* `QueryClient` — the auth provider is self-contained.
|
|
28
|
+
*/
|
|
29
|
+
export declare function MkAuthProvider(props: MkAuthProviderProps): React.JSX.Element;
|
|
30
|
+
//# sourceMappingURL=MkAuthProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MkAuthProvider.d.ts","sourceRoot":"","sources":["../../src/auth/MkAuthProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAUvC,OAAO,KAAK,EAER,kBAAkB,EAKrB,MAAM,SAAS,CAAC;AAmBjB,MAAM,WAAW,mBAAmB;IAChC,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAwSD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkB5E"}
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useMemo, useRef, useState, useCallback } from 'react';
|
|
4
|
+
import { QueryClient, QueryClientProvider, useQuery, useMutation, useQueryClient, } from '@tanstack/react-query';
|
|
5
|
+
import { MkAuthContext } from './MkAuthContext';
|
|
6
|
+
const DEFAULT_STORAGE = typeof window !== 'undefined' && typeof window.localStorage !== 'undefined'
|
|
7
|
+
? {
|
|
8
|
+
getItem: (key) => window.localStorage.getItem(key),
|
|
9
|
+
setItem: (key, value) => window.localStorage.setItem(key, value),
|
|
10
|
+
removeItem: (key) => window.localStorage.removeItem(key),
|
|
11
|
+
}
|
|
12
|
+
: undefined;
|
|
13
|
+
function tokenKey(scope, kind) {
|
|
14
|
+
return `mk_auth_${scope}_${kind}_token`;
|
|
15
|
+
}
|
|
16
|
+
function userKey(scope) {
|
|
17
|
+
return `mk_auth_${scope}_user`;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Internal provider — owns the React Query client and the auth state.
|
|
21
|
+
* Exported only as `<MkAuthProvider>`, which wraps it in
|
|
22
|
+
* `<QueryClientProvider>`.
|
|
23
|
+
*/
|
|
24
|
+
function MkAuthProviderInner({ scope, apiBaseUrl, children, storage = DEFAULT_STORAGE, fetcher, }) {
|
|
25
|
+
var _a, _b, _c;
|
|
26
|
+
const normalizedBase = apiBaseUrl.replace(/\/+$/, '');
|
|
27
|
+
const queryClient = useQueryClient();
|
|
28
|
+
const fetchImpl = fetcher !== null && fetcher !== void 0 ? fetcher : (_a = globalThis.fetch) === null || _a === void 0 ? void 0 : _a.bind(globalThis);
|
|
29
|
+
// Persisted token + user snapshots (read on first render only, to keep
|
|
30
|
+
// `useState` initializer cheap; we still write back on every change).
|
|
31
|
+
const initialAccess = (_b = storage === null || storage === void 0 ? void 0 : storage.getItem(tokenKey(scope, 'access'))) !== null && _b !== void 0 ? _b : null;
|
|
32
|
+
const initialRefresh = (_c = storage === null || storage === void 0 ? void 0 : storage.getItem(tokenKey(scope, 'refresh'))) !== null && _c !== void 0 ? _c : null;
|
|
33
|
+
const initialUserJson = storage === null || storage === void 0 ? void 0 : storage.getItem(userKey(scope));
|
|
34
|
+
const initialUser = useRef(initialUserJson ? safeParse(initialUserJson) : null).current;
|
|
35
|
+
const [user, setUserState] = useState(initialUser);
|
|
36
|
+
const [error, setError] = useState(null);
|
|
37
|
+
const persistUser = useCallback((next) => {
|
|
38
|
+
if (!storage)
|
|
39
|
+
return;
|
|
40
|
+
if (next) {
|
|
41
|
+
storage.setItem(userKey(scope), JSON.stringify(next));
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
storage.removeItem(userKey(scope));
|
|
45
|
+
}
|
|
46
|
+
}, [scope, storage]);
|
|
47
|
+
const persistTokens = useCallback((access, refresh) => {
|
|
48
|
+
if (!storage)
|
|
49
|
+
return;
|
|
50
|
+
if (access) {
|
|
51
|
+
storage.setItem(tokenKey(scope, 'access'), access);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
storage.removeItem(tokenKey(scope, 'access'));
|
|
55
|
+
}
|
|
56
|
+
if (refresh) {
|
|
57
|
+
storage.setItem(tokenKey(scope, 'refresh'), refresh);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
storage.removeItem(tokenKey(scope, 'refresh'));
|
|
61
|
+
}
|
|
62
|
+
}, [scope, storage]);
|
|
63
|
+
const clearAll = useCallback(() => {
|
|
64
|
+
persistTokens(null, null);
|
|
65
|
+
persistUser(null);
|
|
66
|
+
}, [persistTokens, persistUser]);
|
|
67
|
+
const setUser = useCallback((next) => {
|
|
68
|
+
setUserState(next);
|
|
69
|
+
persistUser(next);
|
|
70
|
+
}, [persistUser]);
|
|
71
|
+
// ---- /me query ---------------------------------------------------------
|
|
72
|
+
// Re-runs whenever the mutation cache is invalidated (after login/logout/
|
|
73
|
+
// refresh) via the `refetchType: 'all'` policy below.
|
|
74
|
+
const meQuery = useQuery({
|
|
75
|
+
queryKey: ['mk-auth', scope, 'me'],
|
|
76
|
+
queryFn: async ({ signal }) => {
|
|
77
|
+
var _a;
|
|
78
|
+
const access = (_a = storage === null || storage === void 0 ? void 0 : storage.getItem(tokenKey(scope, 'access'))) !== null && _a !== void 0 ? _a : null;
|
|
79
|
+
if (!access) {
|
|
80
|
+
throw new Error('No access token available');
|
|
81
|
+
}
|
|
82
|
+
const res = await fetchImpl(`${normalizedBase}/api/${scope}/auth/me`, {
|
|
83
|
+
method: 'GET',
|
|
84
|
+
headers: {
|
|
85
|
+
Accept: 'application/json',
|
|
86
|
+
Authorization: `Bearer ${access}`,
|
|
87
|
+
},
|
|
88
|
+
signal,
|
|
89
|
+
});
|
|
90
|
+
if (res.status === 401) {
|
|
91
|
+
throw unauthorized();
|
|
92
|
+
}
|
|
93
|
+
if (!res.ok) {
|
|
94
|
+
throw new Error(`Failed to fetch user (${res.status})`);
|
|
95
|
+
}
|
|
96
|
+
const json = (await res.json());
|
|
97
|
+
const dto = json && typeof json === 'object' && 'data' in json
|
|
98
|
+
? (json).data
|
|
99
|
+
: (json);
|
|
100
|
+
return dto;
|
|
101
|
+
},
|
|
102
|
+
enabled: Boolean(initialAccess) && Boolean(fetchImpl),
|
|
103
|
+
staleTime: 60000,
|
|
104
|
+
retry: false,
|
|
105
|
+
refetchOnWindowFocus: false,
|
|
106
|
+
});
|
|
107
|
+
// Keep `user` in sync with the latest successful /me response.
|
|
108
|
+
useEffect(() => {
|
|
109
|
+
if (meQuery.data) {
|
|
110
|
+
setUser(meQuery.data);
|
|
111
|
+
}
|
|
112
|
+
}, [meQuery.data, setUser]);
|
|
113
|
+
// ---- refresh mutation (also used on mount when /me 401s) ---------------
|
|
114
|
+
const refreshMutation = useMutation({
|
|
115
|
+
mutationFn: async () => {
|
|
116
|
+
var _a;
|
|
117
|
+
const refresh = (_a = storage === null || storage === void 0 ? void 0 : storage.getItem(tokenKey(scope, 'refresh'))) !== null && _a !== void 0 ? _a : null;
|
|
118
|
+
if (!refresh) {
|
|
119
|
+
throw new Error('No refresh token available');
|
|
120
|
+
}
|
|
121
|
+
const res = await fetchImpl(`${normalizedBase}/api/${scope}/auth/refresh`, {
|
|
122
|
+
method: 'POST',
|
|
123
|
+
headers: {
|
|
124
|
+
Accept: 'application/json',
|
|
125
|
+
'Content-Type': 'application/json',
|
|
126
|
+
},
|
|
127
|
+
body: JSON.stringify({ refresh_token: refresh }),
|
|
128
|
+
});
|
|
129
|
+
if (!res.ok) {
|
|
130
|
+
throw unauthorized();
|
|
131
|
+
}
|
|
132
|
+
return (await res.json());
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
// ---- login mutation ----------------------------------------------------
|
|
136
|
+
const loginMutation = useMutation({
|
|
137
|
+
mutationFn: async (input) => {
|
|
138
|
+
const res = await fetchImpl(`${normalizedBase}/api/${scope}/auth/login`, {
|
|
139
|
+
method: 'POST',
|
|
140
|
+
headers: {
|
|
141
|
+
Accept: 'application/json',
|
|
142
|
+
'Content-Type': 'application/json',
|
|
143
|
+
},
|
|
144
|
+
body: JSON.stringify(input),
|
|
145
|
+
});
|
|
146
|
+
if (!res.ok) {
|
|
147
|
+
const body = await safeReadError(res);
|
|
148
|
+
throw new Error(body !== null && body !== void 0 ? body : 'Invalid credentials');
|
|
149
|
+
}
|
|
150
|
+
return (await res.json());
|
|
151
|
+
},
|
|
152
|
+
onSuccess: (data) => {
|
|
153
|
+
persistTokens(data.access_token, data.refresh_token);
|
|
154
|
+
setUser(data.admin);
|
|
155
|
+
},
|
|
156
|
+
});
|
|
157
|
+
// ---- logout mutation ---------------------------------------------------
|
|
158
|
+
const logoutMutation = useMutation({
|
|
159
|
+
mutationFn: async () => {
|
|
160
|
+
const access = storage === null || storage === void 0 ? void 0 : storage.getItem(tokenKey(scope, 'access'));
|
|
161
|
+
if (!access)
|
|
162
|
+
return;
|
|
163
|
+
const res = await fetchImpl(`${normalizedBase}/api/${scope}/auth/logout`, {
|
|
164
|
+
method: 'POST',
|
|
165
|
+
headers: {
|
|
166
|
+
Accept: 'application/json',
|
|
167
|
+
Authorization: `Bearer ${access}`,
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
// 204 No Content is the documented success. Anything else is logged
|
|
171
|
+
// but does not block local cleanup.
|
|
172
|
+
if (!res.ok && res.status !== 204) {
|
|
173
|
+
console.warn(`Logout returned ${res.status}; clearing local state anyway.`);
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
onSettled: () => {
|
|
177
|
+
// Cancel any in-flight /me request and drop its cache so it
|
|
178
|
+
// cannot race the local state clear and re-populate `user`.
|
|
179
|
+
queryClient.cancelQueries({ queryKey: ['mk-auth', scope, 'me'] });
|
|
180
|
+
queryClient.removeQueries({ queryKey: ['mk-auth', scope, 'me'] });
|
|
181
|
+
clearAll();
|
|
182
|
+
setUser(null);
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
// ---- bootstrap ---------------------------------------------------------
|
|
186
|
+
// On mount: if we have tokens, /me runs. If /me 401s, try /refresh.
|
|
187
|
+
// If refresh fails, drop tokens and user.
|
|
188
|
+
const bootstrapped = useRef(false);
|
|
189
|
+
useEffect(() => {
|
|
190
|
+
if (bootstrapped.current)
|
|
191
|
+
return;
|
|
192
|
+
bootstrapped.current = true;
|
|
193
|
+
const access = initialAccess;
|
|
194
|
+
const refresh = initialRefresh;
|
|
195
|
+
if (!access) {
|
|
196
|
+
setUser(null);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
// /me will run automatically (enabled: true since we have access).
|
|
200
|
+
// We hook into its result via subscription below.
|
|
201
|
+
const unsubscribe = meQuery.refetch().then((result) => {
|
|
202
|
+
if (result.isError && refresh) {
|
|
203
|
+
// Try to refresh, then re-run /me.
|
|
204
|
+
refreshMutation
|
|
205
|
+
.mutateAsync()
|
|
206
|
+
.then((data) => {
|
|
207
|
+
persistTokens(data.access_token, data.refresh_token);
|
|
208
|
+
setUser(data.admin);
|
|
209
|
+
})
|
|
210
|
+
.catch(() => {
|
|
211
|
+
clearAll();
|
|
212
|
+
setUser(null);
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
else if (result.isError) {
|
|
216
|
+
clearAll();
|
|
217
|
+
setUser(null);
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
return () => {
|
|
221
|
+
unsubscribe.catch(() => {
|
|
222
|
+
/* swallow */
|
|
223
|
+
});
|
|
224
|
+
};
|
|
225
|
+
// We intentionally only run this once on mount.
|
|
226
|
+
}, []);
|
|
227
|
+
// ---- exposed API -------------------------------------------------------
|
|
228
|
+
const refresh = useCallback(async () => {
|
|
229
|
+
try {
|
|
230
|
+
const data = await refreshMutation.mutateAsync();
|
|
231
|
+
persistTokens(data.access_token, data.refresh_token);
|
|
232
|
+
setUser(data.admin);
|
|
233
|
+
return data.admin;
|
|
234
|
+
}
|
|
235
|
+
catch (_a) {
|
|
236
|
+
clearAll();
|
|
237
|
+
setUser(null);
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
}, [refreshMutation, persistTokens, setUser, clearAll]);
|
|
241
|
+
const login = useCallback(async (email, password) => {
|
|
242
|
+
setError(null);
|
|
243
|
+
try {
|
|
244
|
+
const data = await loginMutation.mutateAsync({ email, password });
|
|
245
|
+
return data.admin;
|
|
246
|
+
}
|
|
247
|
+
catch (err) {
|
|
248
|
+
const e = err instanceof Error ? err : new Error('Login failed');
|
|
249
|
+
setError(e);
|
|
250
|
+
throw e;
|
|
251
|
+
}
|
|
252
|
+
}, [loginMutation]);
|
|
253
|
+
const logout = useCallback(async () => {
|
|
254
|
+
// Even on network failure, local state has already been cleared by
|
|
255
|
+
// onSettled. Re-throw so callers can decide what to do.
|
|
256
|
+
await logoutMutation.mutateAsync();
|
|
257
|
+
}, [logoutMutation]);
|
|
258
|
+
const hasAbility = useCallback((ability) => {
|
|
259
|
+
if (!user)
|
|
260
|
+
return false;
|
|
261
|
+
return Array.isArray(user.abilities) && user.abilities.includes(ability);
|
|
262
|
+
}, [user]);
|
|
263
|
+
const isLoading = meQuery.isLoading || meQuery.isFetching || loginMutation.isPending;
|
|
264
|
+
const value = useMemo(() => ({
|
|
265
|
+
user,
|
|
266
|
+
isLoading,
|
|
267
|
+
isAuthenticated: user !== null,
|
|
268
|
+
error,
|
|
269
|
+
login,
|
|
270
|
+
logout,
|
|
271
|
+
refresh,
|
|
272
|
+
hasAbility,
|
|
273
|
+
}), [user, isLoading, error, login, logout, refresh, hasAbility]);
|
|
274
|
+
return _jsx(MkAuthContext.Provider, { value: value, children: children });
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* `<QueryClientProvider>` + `<MkAuthProviderInner>`. The outer wrapper
|
|
278
|
+
* exists so consumers don't have to remember to also mount a
|
|
279
|
+
* `QueryClient` — the auth provider is self-contained.
|
|
280
|
+
*/
|
|
281
|
+
export function MkAuthProvider(props) {
|
|
282
|
+
const [client] = useState(() => new QueryClient({
|
|
283
|
+
defaultOptions: {
|
|
284
|
+
queries: {
|
|
285
|
+
retry: false,
|
|
286
|
+
refetchOnWindowFocus: false,
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
}));
|
|
290
|
+
return (_jsx(QueryClientProvider, { client: client, children: _jsx(MkAuthProviderInner, Object.assign({}, props)) }));
|
|
291
|
+
}
|
|
292
|
+
// ---- helpers --------------------------------------------------------------
|
|
293
|
+
function unauthorized() {
|
|
294
|
+
const e = new Error('Unauthorized');
|
|
295
|
+
e.name = 'UnauthorizedError';
|
|
296
|
+
return e;
|
|
297
|
+
}
|
|
298
|
+
function safeParse(json) {
|
|
299
|
+
try {
|
|
300
|
+
return JSON.parse(json);
|
|
301
|
+
}
|
|
302
|
+
catch (_a) {
|
|
303
|
+
return null;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
async function safeReadError(res) {
|
|
307
|
+
try {
|
|
308
|
+
const body = (await res.json());
|
|
309
|
+
if (body && typeof body.message === 'string')
|
|
310
|
+
return body.message;
|
|
311
|
+
}
|
|
312
|
+
catch (_a) {
|
|
313
|
+
/* fallthrough */
|
|
314
|
+
}
|
|
315
|
+
return `Request failed (${res.status})`;
|
|
316
|
+
}
|
|
317
|
+
//# sourceMappingURL=MkAuthProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MkAuthProvider.js","sourceRoot":"","sources":["../../src/auth/MkAuthProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth types for @makroz/web.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the JSON contract produced by the Laravel backend's
|
|
5
|
+
* `AuthTokenResource` and `AdminResource` (see
|
|
6
|
+
* `apps/sandbox-laravel/app/Modules/Admin/Http/Resources/*`):
|
|
7
|
+
*
|
|
8
|
+
* - `AdminDto` — shape returned by `/api/{scope}/auth/me` and embedded in
|
|
9
|
+
* login/refresh responses under `admin`.
|
|
10
|
+
* - `AuthTokens` — the `access_token` / `refresh_token` bundle issued on
|
|
11
|
+
* successful login and refresh.
|
|
12
|
+
* - `LoginInput` — payload POSTed to `/api/{scope}/auth/login`.
|
|
13
|
+
* - `RefreshResponse` — shape returned by `/api/{scope}/auth/refresh`.
|
|
14
|
+
*
|
|
15
|
+
* These types are intentionally local to the auth module (not exported as
|
|
16
|
+
* a generic MK contract) so that future scopes (e.g. `member`, `guard`)
|
|
17
|
+
* can reuse the same provider with their own DTOs.
|
|
18
|
+
*/
|
|
19
|
+
export interface AdminDto {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
email: string;
|
|
23
|
+
auth_scope: string;
|
|
24
|
+
email_verified_at: string | null;
|
|
25
|
+
abilities: string[];
|
|
26
|
+
roles: string[];
|
|
27
|
+
}
|
|
28
|
+
export interface AuthTokens {
|
|
29
|
+
access_token: string;
|
|
30
|
+
refresh_token: string;
|
|
31
|
+
token_type: 'Bearer';
|
|
32
|
+
expires_in: number;
|
|
33
|
+
}
|
|
34
|
+
export interface LoginInput {
|
|
35
|
+
email: string;
|
|
36
|
+
password: string;
|
|
37
|
+
}
|
|
38
|
+
export interface RefreshResponse extends AuthTokens {
|
|
39
|
+
admin: AdminDto;
|
|
40
|
+
}
|
|
41
|
+
export interface AuthStorageAdapter {
|
|
42
|
+
getItem: (key: string) => string | null;
|
|
43
|
+
setItem: (key: string, value: string) => void;
|
|
44
|
+
removeItem: (key: string) => void;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* JSON shape returned by a login attempt. Login responses nest the user
|
|
48
|
+
* under `admin` (matches the backend's `AuthTokenResource`).
|
|
49
|
+
*/
|
|
50
|
+
export interface LoginResponse {
|
|
51
|
+
access_token: string;
|
|
52
|
+
refresh_token: string;
|
|
53
|
+
token_type: 'Bearer';
|
|
54
|
+
expires_in: number;
|
|
55
|
+
admin: AdminDto;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* JSON shape returned by the `/me` endpoint.
|
|
59
|
+
*/
|
|
60
|
+
export interface MeResponse {
|
|
61
|
+
data: AdminDto;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,QAAQ,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAgB,SAAQ,UAAU;IAC/C,KAAK,EAAE,QAAQ,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,QAAQ,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,QAAQ,CAAC;CAClB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth types for @makroz/web.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the JSON contract produced by the Laravel backend's
|
|
5
|
+
* `AuthTokenResource` and `AdminResource` (see
|
|
6
|
+
* `apps/sandbox-laravel/app/Modules/Admin/Http/Resources/*`):
|
|
7
|
+
*
|
|
8
|
+
* - `AdminDto` — shape returned by `/api/{scope}/auth/me` and embedded in
|
|
9
|
+
* login/refresh responses under `admin`.
|
|
10
|
+
* - `AuthTokens` — the `access_token` / `refresh_token` bundle issued on
|
|
11
|
+
* successful login and refresh.
|
|
12
|
+
* - `LoginInput` — payload POSTed to `/api/{scope}/auth/login`.
|
|
13
|
+
* - `RefreshResponse` — shape returned by `/api/{scope}/auth/refresh`.
|
|
14
|
+
*
|
|
15
|
+
* These types are intentionally local to the auth module (not exported as
|
|
16
|
+
* a generic MK contract) so that future scopes (e.g. `member`, `guard`)
|
|
17
|
+
* can reuse the same provider with their own DTOs.
|
|
18
|
+
*/
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { MkAuthContextValue } from './MkAuthContext';
|
|
2
|
+
/**
|
|
3
|
+
* Hook to consume the value exposed by `<MkAuthProvider>`.
|
|
4
|
+
*
|
|
5
|
+
* Throws if used outside of a provider — this is intentional. We don't
|
|
6
|
+
* want auth code to silently no-op when the provider is missing, which
|
|
7
|
+
* is a real source of bugs (e.g. a deeply nested page that forgets to
|
|
8
|
+
* mount the auth context).
|
|
9
|
+
*
|
|
10
|
+
* The error message is deliberately short and includes the provider name
|
|
11
|
+
* so the dev can grep for it.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* const { user, isAuthenticated, hasAbility, login, logout } = useMkAuth();
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function useMkAuth(): MkAuthContextValue;
|
|
19
|
+
//# sourceMappingURL=useMkAuth.d.ts.map
|