@m5kdev/web-ui 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/animations/card.motion.d.ts +7 -2
- package/dist/src/animations/card.motion.js +25 -6
- package/dist/src/animations/card.motion.js.map +1 -0
- package/dist/src/components/AvatarUpload.d.ts +14 -5
- package/dist/src/components/AvatarUpload.js +105 -63
- package/dist/src/components/AvatarUpload.js.map +1 -0
- package/dist/src/components/Button.d.ts +14 -4
- package/dist/src/components/Button.js +13 -4
- package/dist/src/components/Button.js.map +1 -0
- package/dist/src/components/Calendar.d.ts +33 -31
- package/dist/src/components/Calendar.js +14 -6
- package/dist/src/components/Calendar.js.map +1 -0
- package/dist/src/components/{Calendar.css → Calendar2.css} +757 -684
- package/dist/src/components/CardsSelect.d.ts +25 -21
- package/dist/src/components/CardsSelect.js +75 -42
- package/dist/src/components/CardsSelect.js.map +1 -0
- package/dist/src/components/CollapsibleSidebarMenuItem.d.ts +22 -9
- package/dist/src/components/CollapsibleSidebarMenuItem.js +31 -8
- package/dist/src/components/CollapsibleSidebarMenuItem.js.map +1 -0
- package/dist/src/components/ColorPicker.d.ts +15 -4
- package/dist/src/components/ColorPicker.js +46 -16
- package/dist/src/components/ColorPicker.js.map +1 -0
- package/dist/src/components/CopyButton.d.ts +18 -6
- package/dist/src/components/CopyButton.js +28 -19
- package/dist/src/components/CopyButton.js.map +1 -0
- package/dist/src/components/CropDialog.d.ts +20 -8
- package/dist/src/components/CropDialog.js +108 -62
- package/dist/src/components/CropDialog.js.map +1 -0
- package/dist/src/components/DialogProvider.d.ts +22 -14
- package/dist/src/components/DialogProvider.js +67 -45
- package/dist/src/components/DialogProvider.js.map +1 -0
- package/dist/src/components/ErrorFallback.d.ts +13 -4
- package/dist/src/components/ErrorFallback.js +29 -4
- package/dist/src/components/ErrorFallback.js.map +1 -0
- package/dist/src/components/FileDropzone.d.ts +12 -4
- package/dist/src/components/FileDropzone.js +98 -60
- package/dist/src/components/FileDropzone.js.map +1 -0
- package/dist/src/components/MultiSelectDropdown.d.ts +25 -22
- package/dist/src/components/MultiSelectDropdown.js +99 -49
- package/dist/src/components/MultiSelectDropdown.js.map +1 -0
- package/dist/src/components/Orb.d.ts +17 -6
- package/dist/src/components/Orb.js +263 -255
- package/dist/src/components/Orb.js.map +1 -0
- package/dist/src/components/PageAlert.d.ts +20 -15
- package/dist/src/components/PageAlert.js +67 -39
- package/dist/src/components/PageAlert.js.map +1 -0
- package/dist/src/components/SelectChips.d.ts +21 -10
- package/dist/src/components/SelectChips.js +21 -9
- package/dist/src/components/SelectChips.js.map +1 -0
- package/dist/src/components/SidebarItem.d.ts +18 -7
- package/dist/src/components/SidebarItem.js +16 -4
- package/dist/src/components/SidebarItem.js.map +1 -0
- package/dist/src/components/Steps.d.ts +21 -16
- package/dist/src/components/Steps.js +193 -27
- package/dist/src/components/Steps.js.map +1 -0
- package/dist/src/components/TablerIconPicker.d.ts +13 -2
- package/dist/src/components/TablerIconPicker.js +4254 -4234
- package/dist/src/components/TablerIconPicker.js.map +1 -0
- package/dist/src/components/app-header.d.ts +14 -6
- package/dist/src/components/app-header.js +27 -6
- package/dist/src/components/app-header.js.map +1 -0
- package/dist/src/components/blur-card.d.ts +25 -11
- package/dist/src/components/blur-card.js +134 -31
- package/dist/src/components/blur-card.js.map +1 -0
- package/dist/src/components/features-section-demo-1.d.ts +22 -6
- package/dist/src/components/features-section-demo-1.js +119 -47
- package/dist/src/components/features-section-demo-1.js.map +1 -0
- package/dist/src/components/features-section-demo-2.d.ts +7 -1
- package/dist/src/components/features-section-demo-2.js +80 -49
- package/dist/src/components/features-section-demo-2.js.map +1 -0
- package/dist/src/components/features-section-demo-3.d.ts +16 -8
- package/dist/src/components/features-section-demo-3.js +239 -103
- package/dist/src/components/features-section-demo-3.js.map +1 -0
- package/dist/src/components/mode-toggle.d.ts +7 -1
- package/dist/src/components/mode-toggle.js +42 -7
- package/dist/src/components/mode-toggle.js.map +1 -0
- package/dist/src/components/nav-main.d.ts +20 -12
- package/dist/src/components/nav-main.js +31 -5
- package/dist/src/components/nav-main.js.map +1 -0
- package/dist/src/components/pricing-cards.d.ts +7 -1
- package/dist/src/components/pricing-cards.js +125 -24
- package/dist/src/components/pricing-cards.js.map +1 -0
- package/dist/src/components/shared/ButtonCopy.d.ts +17 -6
- package/dist/src/components/shared/ButtonCopy.js +31 -20
- package/dist/src/components/shared/ButtonCopy.js.map +1 -0
- package/dist/src/components/team-switcher.d.ts +16 -8
- package/dist/src/components/team-switcher.js +70 -8
- package/dist/src/components/team-switcher.js.map +1 -0
- package/dist/src/components/theme-provider.d.ts +18 -8
- package/dist/src/components/theme-provider.js +42 -38
- package/dist/src/components/theme-provider.js.map +1 -0
- package/dist/src/components/typewriter.d.ts +35 -14
- package/dist/src/components/typewriter.js +45 -36
- package/dist/src/components/typewriter.js.map +1 -0
- package/dist/src/components/ui/alert-dialog.d.ts +48 -13
- package/dist/src/components/ui/alert-dialog.js +58 -15
- package/dist/src/components/ui/alert-dialog.js.map +1 -0
- package/dist/src/components/ui/alert.d.ts +24 -8
- package/dist/src/components/ui/alert.js +28 -15
- package/dist/src/components/ui/alert.js.map +1 -0
- package/dist/src/components/ui/avatar.d.ts +9 -5
- package/dist/src/components/ui/avatar.js +23 -7
- package/dist/src/components/ui/avatar.js.map +1 -0
- package/dist/src/components/ui/badge.d.ts +17 -8
- package/dist/src/components/ui/badge.js +17 -14
- package/dist/src/components/ui/badge.js.map +1 -0
- package/dist/src/components/ui/bento-grid.d.ts +26 -11
- package/dist/src/components/ui/bento-grid.js +30 -6
- package/dist/src/components/ui/bento-grid.js.map +1 -0
- package/dist/src/components/ui/bento-grid2.d.ts +30 -14
- package/dist/src/components/ui/bento-grid2.js +45 -9
- package/dist/src/components/ui/bento-grid2.js.map +1 -0
- package/dist/src/components/ui/breadcrumb.d.ts +27 -15
- package/dist/src/components/ui/breadcrumb.js +54 -14
- package/dist/src/components/ui/breadcrumb.js.map +1 -0
- package/dist/src/components/ui/button.d.ts +14 -9
- package/dist/src/components/ui/button.js +37 -26
- package/dist/src/components/ui/button.js.map +1 -0
- package/dist/src/components/ui/card.d.ts +12 -8
- package/dist/src/components/ui/card.js +38 -10
- package/dist/src/components/ui/card.js.map +1 -0
- package/dist/src/components/ui/checkbox.d.ts +6 -2
- package/dist/src/components/ui/checkbox.js +17 -5
- package/dist/src/components/ui/checkbox.js.map +1 -0
- package/dist/src/components/ui/collapsible.d.ts +9 -4
- package/dist/src/components/ui/collapsible.js +5 -1
- package/dist/src/components/ui/collapsible.js.map +1 -0
- package/dist/src/components/ui/dialog.d.ts +44 -12
- package/dist/src/components/ui/dialog.js +64 -14
- package/dist/src/components/ui/dialog.js.map +1 -0
- package/dist/src/components/ui/dropdown-menu.d.ts +32 -24
- package/dist/src/components/ui/dropdown-menu.js +64 -14
- package/dist/src/components/ui/dropdown-menu.js.map +1 -0
- package/dist/src/components/ui/floating-navbar.d.ts +18 -9
- package/dist/src/components/ui/floating-navbar.js +49 -35
- package/dist/src/components/ui/floating-navbar.js.map +1 -0
- package/dist/src/components/ui/form.d.ts +30 -21
- package/dist/src/components/ui/form.js +76 -44
- package/dist/src/components/ui/form.js.map +1 -0
- package/dist/src/components/ui/image.d.ts +6 -2
- package/dist/src/components/ui/image.js +51 -11
- package/dist/src/components/ui/image.js.map +1 -0
- package/dist/src/components/ui/input.d.ts +6 -2
- package/dist/src/components/ui/input.js +14 -5
- package/dist/src/components/ui/input.js.map +1 -0
- package/dist/src/components/ui/label.d.ts +8 -3
- package/dist/src/components/ui/label.js +13 -5
- package/dist/src/components/ui/label.js.map +1 -0
- package/dist/src/components/ui/pagination.d.ts +39 -12
- package/dist/src/components/ui/pagination.js +64 -14
- package/dist/src/components/ui/pagination.js.map +1 -0
- package/dist/src/components/ui/progress.d.ts +6 -2
- package/dist/src/components/ui/progress.js +16 -4
- package/dist/src/components/ui/progress.js.map +1 -0
- package/dist/src/components/ui/resizable-navbar.d.ts +84 -43
- package/dist/src/components/ui/resizable-navbar.js +126 -74
- package/dist/src/components/ui/resizable-navbar.js.map +1 -0
- package/dist/src/components/ui/segment-control.d.ts +10 -7
- package/dist/src/components/ui/segment-control.js +83 -38
- package/dist/src/components/ui/segment-control.js.map +1 -0
- package/dist/src/components/ui/select.d.ts +16 -12
- package/dist/src/components/ui/select.js +63 -14
- package/dist/src/components/ui/select.js.map +1 -0
- package/dist/src/components/ui/separator.d.ts +6 -2
- package/dist/src/components/ui/separator.js +14 -4
- package/dist/src/components/ui/separator.js.map +1 -0
- package/dist/src/components/ui/sheet.d.ts +30 -19
- package/dist/src/components/ui/sheet.js +52 -23
- package/dist/src/components/ui/sheet.js.map +1 -0
- package/dist/src/components/ui/sidebar.d.ts +69 -62
- package/dist/src/components/ui/sidebar.js +326 -171
- package/dist/src/components/ui/sidebar.js.map +1 -0
- package/dist/src/components/ui/skeleton.d.ts +9 -1
- package/dist/src/components/ui/skeleton.js +10 -3
- package/dist/src/components/ui/skeleton.js.map +1 -0
- package/dist/src/components/ui/slider.d.ts +6 -2
- package/dist/src/components/ui/slider.js +16 -4
- package/dist/src/components/ui/slider.js.map +1 -0
- package/dist/src/components/ui/sonner.d.ts +10 -3
- package/dist/src/components/ui/sonner.js +18 -11
- package/dist/src/components/ui/sonner.js.map +1 -0
- package/dist/src/components/ui/spinner.d.ts +21 -10
- package/dist/src/components/ui/spinner.js +24 -24
- package/dist/src/components/ui/spinner.js.map +1 -0
- package/dist/src/components/ui/switch.d.ts +6 -2
- package/dist/src/components/ui/switch.js +13 -4
- package/dist/src/components/ui/switch.js.map +1 -0
- package/dist/src/components/ui/table.d.ts +39 -10
- package/dist/src/components/ui/table.js +51 -11
- package/dist/src/components/ui/table.js.map +1 -0
- package/dist/src/components/ui/tabs.d.ts +23 -6
- package/dist/src/components/ui/tabs.js +27 -7
- package/dist/src/components/ui/tabs.js.map +1 -0
- package/dist/src/components/ui/textarea.d.ts +10 -2
- package/dist/src/components/ui/textarea.js +11 -3
- package/dist/src/components/ui/textarea.js.map +1 -0
- package/dist/src/components/ui/timeline.d.ts +16 -9
- package/dist/src/components/ui/timeline.js +87 -24
- package/dist/src/components/ui/timeline.js.map +1 -0
- package/dist/src/components/ui/toast.d.ts +19 -14
- package/dist/src/components/ui/toast.js +48 -22
- package/dist/src/components/ui/toast.js.map +1 -0
- package/dist/src/components/ui/tooltip.d.ts +23 -6
- package/dist/src/components/ui/tooltip.js +27 -7
- package/dist/src/components/ui/tooltip.js.map +1 -0
- package/dist/src/components/ui/typewriter-effect.d.ts +28 -14
- package/dist/src/components/ui/typewriter-effect.js +102 -72
- package/dist/src/components/ui/typewriter-effect.js.map +1 -0
- package/dist/src/hooks/use-mobile.d.ts +5 -1
- package/dist/src/hooks/use-mobile.js +18 -13
- package/dist/src/hooks/use-mobile.js.map +1 -0
- package/dist/src/hooks/useDialog.d.ts +8 -4
- package/dist/src/hooks/useDialog.js +24 -20
- package/dist/src/hooks/useDialog.js.map +1 -0
- package/dist/src/icons/GoogleIcon.d.ts +9 -5
- package/dist/src/icons/GoogleIcon.js +32 -3
- package/dist/src/icons/GoogleIcon.js.map +1 -0
- package/dist/src/icons/LinkedInIcon.d.ts +9 -5
- package/dist/src/icons/LinkedInIcon.js +27 -3
- package/dist/src/icons/LinkedInIcon.js.map +1 -0
- package/dist/src/icons/MicrosoftIcon.d.ts +9 -5
- package/dist/src/icons/MicrosoftIcon.js +31 -3
- package/dist/src/icons/MicrosoftIcon.js.map +1 -0
- package/dist/src/lib/chatwoot.d.ts +19 -10
- package/dist/src/lib/chatwoot.js +25 -27
- package/dist/src/lib/chatwoot.js.map +1 -0
- package/dist/src/lib/utils.d.ts +7 -2
- package/dist/src/lib/utils.js +7 -2
- package/dist/src/lib/utils.js.map +1 -0
- package/dist/src/modules/app/components/AppLoader.d.ts +8 -2
- package/dist/src/modules/app/components/AppLoader.js +14 -3
- package/dist/src/modules/app/components/AppLoader.js.map +1 -0
- package/dist/src/modules/app/components/AppShell.d.ts +15 -6
- package/dist/src/modules/app/components/AppShell.js +14 -5
- package/dist/src/modules/app/components/AppShell.js.map +1 -0
- package/dist/src/modules/app/components/AppSidebar.d.ts +16 -6
- package/dist/src/modules/app/components/AppSidebar.js +17 -4
- package/dist/src/modules/app/components/AppSidebar.js.map +1 -0
- package/dist/src/modules/app/components/AppSidebarContent.d.ts +22 -13
- package/dist/src/modules/app/components/AppSidebarContent.js +34 -5
- package/dist/src/modules/app/components/AppSidebarContent.js.map +1 -0
- package/dist/src/modules/app/components/AppSidebarHeader.d.ts +18 -8
- package/dist/src/modules/app/components/AppSidebarHeader.js +37 -6
- package/dist/src/modules/app/components/AppSidebarHeader.js.map +1 -0
- package/dist/src/modules/app/components/AppSidebarInvites.d.ts +11 -3
- package/dist/src/modules/app/components/AppSidebarInvites.js +39 -8
- package/dist/src/modules/app/components/AppSidebarInvites.js.map +1 -0
- package/dist/src/modules/app/components/AppSidebarUser.d.ts +20 -10
- package/dist/src/modules/app/components/AppSidebarUser.js +121 -12
- package/dist/src/modules/app/components/AppSidebarUser.js.map +1 -0
- package/dist/src/modules/auth/components/AdminUserManagement.d.ts +11 -4
- package/dist/src/modules/auth/components/AdminUserManagement.js +970 -418
- package/dist/src/modules/auth/components/AdminUserManagement.js.map +1 -0
- package/dist/src/modules/auth/components/AdminWaitlist.d.ts +11 -4
- package/dist/src/modules/auth/components/AdminWaitlist.js +284 -115
- package/dist/src/modules/auth/components/AdminWaitlist.js.map +1 -0
- package/dist/src/modules/auth/components/AuthLayout.d.ts +12 -4
- package/dist/src/modules/auth/components/AuthLayout.js +17 -3
- package/dist/src/modules/auth/components/AuthLayout.js.map +1 -0
- package/dist/src/modules/auth/components/AuthProviders.d.ts +17 -6
- package/dist/src/modules/auth/components/AuthProviders.js +80 -41
- package/dist/src/modules/auth/components/AuthProviders.js.map +1 -0
- package/dist/src/modules/auth/components/AuthRouter.d.ts +16 -7
- package/dist/src/modules/auth/components/AuthRouter.js +46 -10
- package/dist/src/modules/auth/components/AuthRouter.js.map +1 -0
- package/dist/src/modules/auth/components/ClaimAccountRoute.d.ts +12 -4
- package/dist/src/modules/auth/components/ClaimAccountRoute.js +202 -139
- package/dist/src/modules/auth/components/ClaimAccountRoute.js.map +1 -0
- package/dist/src/modules/auth/components/ErrorAuthRoute.d.ts +7 -1
- package/dist/src/modules/auth/components/ErrorAuthRoute.js +125 -89
- package/dist/src/modules/auth/components/ErrorAuthRoute.js.map +1 -0
- package/dist/src/modules/auth/components/ForgotPasswordForm.d.ts +7 -1
- package/dist/src/modules/auth/components/ForgotPasswordForm.js +49 -23
- package/dist/src/modules/auth/components/ForgotPasswordForm.js.map +1 -0
- package/dist/src/modules/auth/components/ForgotPasswordRoute.d.ts +7 -1
- package/dist/src/modules/auth/components/ForgotPasswordRoute.js +34 -6
- package/dist/src/modules/auth/components/ForgotPasswordRoute.js.map +1 -0
- package/dist/src/modules/auth/components/InviteFriends.d.ts +12 -4
- package/dist/src/modules/auth/components/InviteFriends.js +275 -69
- package/dist/src/modules/auth/components/InviteFriends.js.map +1 -0
- package/dist/src/modules/auth/components/LastUsedBadge.d.ts +17 -5
- package/dist/src/modules/auth/components/LastUsedBadge.js +16 -6
- package/dist/src/modules/auth/components/LastUsedBadge.js.map +1 -0
- package/dist/src/modules/auth/components/LoginForm.d.ts +11 -3
- package/dist/src/modules/auth/components/LoginForm.js +107 -40
- package/dist/src/modules/auth/components/LoginForm.js.map +1 -0
- package/dist/src/modules/auth/components/LoginRoute.d.ts +11 -3
- package/dist/src/modules/auth/components/LoginRoute.js +41 -8
- package/dist/src/modules/auth/components/LoginRoute.js.map +1 -0
- package/dist/src/modules/auth/components/LogoutRoute.d.ts +7 -1
- package/dist/src/modules/auth/components/LogoutRoute.js +18 -12
- package/dist/src/modules/auth/components/LogoutRoute.js.map +1 -0
- package/dist/src/modules/auth/components/OrganizationAcceptInvitationRoute.d.ts +21 -8
- package/dist/src/modules/auth/components/OrganizationAcceptInvitationRoute.js +107 -97
- package/dist/src/modules/auth/components/OrganizationAcceptInvitationRoute.js.map +1 -0
- package/dist/src/modules/auth/components/OrganizationMembersRoute.d.ts +58 -48
- package/dist/src/modules/auth/components/OrganizationMembersRoute.js +448 -349
- package/dist/src/modules/auth/components/OrganizationMembersRoute.js.map +1 -0
- package/dist/src/modules/auth/components/OrganizationPreferences.d.ts +27 -16
- package/dist/src/modules/auth/components/OrganizationPreferences.js +129 -124
- package/dist/src/modules/auth/components/OrganizationPreferences.js.map +1 -0
- package/dist/src/modules/auth/components/OrganizationSettingsRoute.d.ts +27 -18
- package/dist/src/modules/auth/components/OrganizationSettingsRoute.js +184 -144
- package/dist/src/modules/auth/components/OrganizationSettingsRoute.js.map +1 -0
- package/dist/src/modules/auth/components/OrganizationSwitcher.d.ts +17 -6
- package/dist/src/modules/auth/components/OrganizationSwitcher.js +91 -69
- package/dist/src/modules/auth/components/OrganizationSwitcher.js.map +1 -0
- package/dist/src/modules/auth/components/PreferencesEditor.d.ts +44 -33
- package/dist/src/modules/auth/components/PreferencesEditor.js +82 -58
- package/dist/src/modules/auth/components/PreferencesEditor.js.map +1 -0
- package/dist/src/modules/auth/components/ProfileRoute.d.ts +7 -1
- package/dist/src/modules/auth/components/ProfileRoute.js +79 -36
- package/dist/src/modules/auth/components/ProfileRoute.js.map +1 -0
- package/dist/src/modules/auth/components/RangeNuqsDatePicker.d.ts +44 -30
- package/dist/src/modules/auth/components/RangeNuqsDatePicker.js +234 -242
- package/dist/src/modules/auth/components/RangeNuqsDatePicker.js.map +1 -0
- package/dist/src/modules/auth/components/ResetPasswordForm.d.ts +7 -1
- package/dist/src/modules/auth/components/ResetPasswordForm.js +97 -35
- package/dist/src/modules/auth/components/ResetPasswordForm.js.map +1 -0
- package/dist/src/modules/auth/components/ResetPasswordRoute.d.ts +7 -1
- package/dist/src/modules/auth/components/ResetPasswordRoute.js +34 -6
- package/dist/src/modules/auth/components/ResetPasswordRoute.js.map +1 -0
- package/dist/src/modules/auth/components/SignupFormRoute.d.ts +15 -5
- package/dist/src/modules/auth/components/SignupFormRoute.js +142 -99
- package/dist/src/modules/auth/components/SignupFormRoute.js.map +1 -0
- package/dist/src/modules/auth/components/SignupRoute.d.ts +13 -5
- package/dist/src/modules/auth/components/SignupRoute.js +59 -13
- package/dist/src/modules/auth/components/SignupRoute.js.map +1 -0
- package/dist/src/modules/auth/components/UserPreferences.d.ts +22 -11
- package/dist/src/modules/auth/components/UserPreferences.js +24 -12
- package/dist/src/modules/auth/components/UserPreferences.js.map +1 -0
- package/dist/src/modules/auth/components/WaitlistCard.d.ts +11 -4
- package/dist/src/modules/auth/components/WaitlistCard.js +63 -28
- package/dist/src/modules/auth/components/WaitlistCard.js.map +1 -0
- package/dist/src/modules/auth/components/WaitlistCodeValidation.d.ts +13 -5
- package/dist/src/modules/auth/components/WaitlistCodeValidation.js +42 -40
- package/dist/src/modules/auth/components/WaitlistCodeValidation.js.map +1 -0
- package/dist/src/modules/billing/components/BillingBetaPage.d.ts +15 -6
- package/dist/src/modules/billing/components/BillingBetaPage.js +155 -8
- package/dist/src/modules/billing/components/BillingBetaPage.js.map +1 -0
- package/dist/src/modules/billing/components/BillingInvoicePage.d.ts +13 -5
- package/dist/src/modules/billing/components/BillingInvoicePage.js +160 -30
- package/dist/src/modules/billing/components/BillingInvoicePage.js.map +1 -0
- package/dist/src/modules/billing/components/BillingPlanSelect.d.ts +11 -4
- package/dist/src/modules/billing/components/BillingPlanSelect.js +10 -7
- package/dist/src/modules/billing/components/BillingPlanSelect.js.map +1 -0
- package/dist/src/modules/billing/components/BillingRouter.d.ts +15 -7
- package/dist/src/modules/billing/components/BillingRouter.js +19 -6
- package/dist/src/modules/billing/components/BillingRouter.js.map +1 -0
- package/dist/src/modules/billing/components/BillingSinglePlanSelect.d.ts +17 -7
- package/dist/src/modules/billing/components/BillingSinglePlanSelect.js +163 -42
- package/dist/src/modules/billing/components/BillingSinglePlanSelect.js.map +1 -0
- package/dist/src/modules/table/components/ColumnOrderAndVisibility.d.ts +18 -8
- package/dist/src/modules/table/components/ColumnOrderAndVisibility.js +81 -38
- package/dist/src/modules/table/components/ColumnOrderAndVisibility.js.map +1 -0
- package/dist/src/modules/table/components/NuqsTable.d.ts +33 -21
- package/dist/src/modules/table/components/NuqsTable.js +295 -221
- package/dist/src/modules/table/components/NuqsTable.js.map +1 -0
- package/dist/src/modules/table/components/TableFiltering.d.ts +33 -21
- package/dist/src/modules/table/components/TableFiltering.js +408 -226
- package/dist/src/modules/table/components/TableFiltering.js.map +1 -0
- package/dist/src/modules/table/components/TableGroupBy.d.ts +18 -8
- package/dist/src/modules/table/components/TableGroupBy.js +56 -16
- package/dist/src/modules/table/components/TableGroupBy.js.map +1 -0
- package/dist/src/modules/table/components/TablePagination.d.ts +17 -7
- package/dist/src/modules/table/components/TablePagination.js +64 -32
- package/dist/src/modules/table/components/TablePagination.js.map +1 -0
- package/dist/src/modules/table/components/table.types.d.ts +15 -10
- package/dist/src/modules/table/components/table.types.js +0 -1
- package/dist/src/modules/table/filterTransformers.d.ts +35 -30
- package/dist/src/modules/table/filterTransformers.js +198 -261
- package/dist/src/modules/table/filterTransformers.js.map +1 -0
- package/dist/src/types.d.ts +8 -3
- package/dist/src/types.js +0 -1
- package/package.json +8 -6
- package/dist/translations/en/web-ui.json +0 -209
- package/dist/tsconfig.lib.tsbuildinfo +0 -1
|
@@ -1,9 +1,19 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
1
|
import { Badge } from "@heroui/react";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
3
|
import { useTranslation } from "react-i18next";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
//#region src/modules/auth/components/LastUsedBadge.tsx
|
|
5
|
+
function LastUsedBadge({ lastMethod, method, children, ...props }) {
|
|
6
|
+
const { t } = useTranslation();
|
|
7
|
+
if (lastMethod !== method) return children;
|
|
8
|
+
return /* @__PURE__ */ jsx(Badge, {
|
|
9
|
+
...props,
|
|
10
|
+
content: t("web-ui:auth.login.lastUsed"),
|
|
11
|
+
color: "warning",
|
|
12
|
+
className: "px-2 !right-[10%]",
|
|
13
|
+
children
|
|
14
|
+
});
|
|
9
15
|
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { LastUsedBadge };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=LastUsedBadge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LastUsedBadge.js","names":[],"sources":["../../../../../src/modules/auth/components/LastUsedBadge.tsx"],"sourcesContent":["import { Badge, type BadgeProps } from \"@heroui/react\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nexport function LastUsedBadge({\r\n lastMethod,\r\n method,\r\n children,\r\n ...props\r\n}: BadgeProps & { lastMethod?: string | null; method?: string | null }) {\r\n const { t } = useTranslation();\r\n if (lastMethod !== method) return children;\r\n return (\r\n <Badge\r\n {...props}\r\n content={t(\"web-ui:auth.login.lastUsed\")}\r\n color=\"warning\"\r\n className=\"px-2 !right-[10%]\"\r\n >\r\n {children}\r\n </Badge>\r\n );\r\n}\r\n"],"mappings":";;;;AAGA,SAAgB,cAAc,EAC5B,YACA,QACA,UACA,GAAG,SACmE;CACtE,MAAM,EAAE,MAAM,gBAAgB;AAC9B,KAAI,eAAe,OAAQ,QAAO;AAClC,QACE,oBAAC,OAAD;EACE,GAAI;EACJ,SAAS,EAAE,6BAA6B;EACxC,OAAM;EACN,WAAU;EAET;EACK,CAAA"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/modules/auth/components/LoginForm.d.ts
|
|
4
|
+
declare function LoginForm({
|
|
5
|
+
providers
|
|
6
|
+
}: {
|
|
7
|
+
providers?: string[];
|
|
8
|
+
}): _$react_jsx_runtime0.JSX.Element;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { LoginForm };
|
|
11
|
+
//# sourceMappingURL=LoginForm.d.ts.map
|
|
@@ -1,44 +1,111 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LastUsedBadge } from "./LastUsedBadge.js";
|
|
2
|
+
import { AuthProviders } from "./AuthProviders.js";
|
|
2
3
|
import { Button, Input } from "@heroui/react";
|
|
3
|
-
import {
|
|
4
|
-
import { useSession } from "@m5kdev/frontend/modules/auth/hooks/useSession";
|
|
5
|
-
import { useForm } from "react-hook-form";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
5
|
import { useTranslation } from "react-i18next";
|
|
7
|
-
import { Link, useNavigate } from "react-router";
|
|
6
|
+
import { Link as Link$1, useNavigate } from "react-router";
|
|
8
7
|
import { toast } from "sonner";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
8
|
+
import { useForm } from "react-hook-form";
|
|
9
|
+
import { authClient } from "@m5kdev/frontend/modules/auth/auth.lib";
|
|
10
|
+
import { useSession } from "@m5kdev/frontend/modules/auth/hooks/useSession";
|
|
11
|
+
//#region src/modules/auth/components/LoginForm.tsx
|
|
12
|
+
function LoginForm({ providers }) {
|
|
13
|
+
const lastMethod = authClient.getLastUsedLoginMethod();
|
|
14
|
+
const { register, handleSubmit } = useForm();
|
|
15
|
+
const { registerSession } = useSession();
|
|
16
|
+
const navigate = useNavigate();
|
|
17
|
+
const { t } = useTranslation();
|
|
18
|
+
const onSubmit = (data) => {
|
|
19
|
+
console.log(data);
|
|
20
|
+
authClient.signIn.email({
|
|
21
|
+
email: data.email,
|
|
22
|
+
password: data.password
|
|
23
|
+
}).then((res) => {
|
|
24
|
+
console.log(res);
|
|
25
|
+
if (res.data?.user) registerSession(() => {
|
|
26
|
+
navigate("/");
|
|
27
|
+
});
|
|
28
|
+
else if (res.error) toast.error(t("web-ui:auth.errors.authentication"), { description: res.error.message });
|
|
29
|
+
}).catch((error) => {
|
|
30
|
+
toast.error(t("web-ui:auth.errors.server"), { description: error.message });
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
return /* @__PURE__ */ jsx("form", {
|
|
34
|
+
onSubmit: handleSubmit(onSubmit),
|
|
35
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
36
|
+
className: "grid gap-6",
|
|
37
|
+
children: [
|
|
38
|
+
/* @__PURE__ */ jsx(AuthProviders, {
|
|
39
|
+
providers,
|
|
40
|
+
lastMethod
|
|
41
|
+
}),
|
|
42
|
+
/* @__PURE__ */ jsxs("div", {
|
|
43
|
+
className: "grid gap-6",
|
|
44
|
+
children: [
|
|
45
|
+
/* @__PURE__ */ jsxs("div", {
|
|
46
|
+
className: "grid gap-2",
|
|
47
|
+
children: [/* @__PURE__ */ jsx(LastUsedBadge, {
|
|
48
|
+
lastMethod,
|
|
49
|
+
method: "email",
|
|
50
|
+
children: /* @__PURE__ */ jsx("label", {
|
|
51
|
+
htmlFor: "email",
|
|
52
|
+
className: "text-sm font-medium",
|
|
53
|
+
children: t("web-ui:auth.login.email")
|
|
54
|
+
})
|
|
55
|
+
}), /* @__PURE__ */ jsx(Input, {
|
|
56
|
+
type: "email",
|
|
57
|
+
placeholder: t("web-ui:auth.login.placeholder.email"),
|
|
58
|
+
variant: "bordered",
|
|
59
|
+
isRequired: true,
|
|
60
|
+
...register("email", { required: true })
|
|
61
|
+
})]
|
|
62
|
+
}),
|
|
63
|
+
/* @__PURE__ */ jsxs("div", {
|
|
64
|
+
className: "grid gap-2",
|
|
65
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
66
|
+
className: "flex items-center",
|
|
67
|
+
children: [/* @__PURE__ */ jsx("label", {
|
|
68
|
+
htmlFor: "password",
|
|
69
|
+
className: "text-sm font-medium",
|
|
70
|
+
children: t("web-ui:auth.login.password")
|
|
71
|
+
}), /* @__PURE__ */ jsx(Link$1, {
|
|
72
|
+
to: "/forgot-password",
|
|
73
|
+
className: "ml-auto text-sm underline-offset-4 hover:underline",
|
|
74
|
+
children: t("web-ui:auth.login.forgotPassword")
|
|
75
|
+
})]
|
|
76
|
+
}), /* @__PURE__ */ jsx(Input, {
|
|
77
|
+
placeholder: t("web-ui:auth.login.password"),
|
|
78
|
+
type: "password",
|
|
79
|
+
variant: "bordered",
|
|
80
|
+
isRequired: true,
|
|
81
|
+
...register("password", { required: true })
|
|
82
|
+
})]
|
|
83
|
+
}),
|
|
84
|
+
/* @__PURE__ */ jsx(Button, {
|
|
85
|
+
type: "submit",
|
|
86
|
+
className: "w-full",
|
|
87
|
+
color: "primary",
|
|
88
|
+
children: t("web-ui:auth.login.button")
|
|
89
|
+
})
|
|
90
|
+
]
|
|
91
|
+
}),
|
|
92
|
+
/* @__PURE__ */ jsxs("div", {
|
|
93
|
+
className: "text-center text-sm",
|
|
94
|
+
children: [
|
|
95
|
+
t("web-ui:auth.login.noAccount"),
|
|
96
|
+
" ",
|
|
97
|
+
/* @__PURE__ */ jsx(Link$1, {
|
|
98
|
+
to: "/signup",
|
|
99
|
+
className: "underline underline-offset-4",
|
|
100
|
+
children: t("web-ui:auth.login.signUp")
|
|
101
|
+
})
|
|
102
|
+
]
|
|
103
|
+
})
|
|
104
|
+
]
|
|
105
|
+
})
|
|
106
|
+
});
|
|
44
107
|
}
|
|
108
|
+
//#endregion
|
|
109
|
+
export { LoginForm };
|
|
110
|
+
|
|
111
|
+
//# sourceMappingURL=LoginForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoginForm.js","names":["Link"],"sources":["../../../../../src/modules/auth/components/LoginForm.tsx"],"sourcesContent":["import { Button, Input } from \"@heroui/react\";\r\nimport { authClient } from \"@m5kdev/frontend/modules/auth/auth.lib\";\r\nimport { useSession } from \"@m5kdev/frontend/modules/auth/hooks/useSession\";\r\nimport { type SubmitHandler, useForm } from \"react-hook-form\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Link, useNavigate } from \"react-router\";\r\nimport { toast } from \"sonner\";\r\nimport { AuthProviders } from \"./AuthProviders\";\r\nimport { LastUsedBadge } from \"./LastUsedBadge\";\r\n\r\ntype Inputs = {\r\n email: string;\r\n password: string;\r\n};\r\n\r\nexport function LoginForm({ providers }: { providers?: string[] }) {\r\n const lastMethod = authClient.getLastUsedLoginMethod();\r\n const { register, handleSubmit } = useForm<Inputs>();\r\n const { registerSession } = useSession();\r\n const navigate = useNavigate();\r\n const { t } = useTranslation();\r\n\r\n const onSubmit: SubmitHandler<Inputs> = (data) => {\r\n console.log(data);\r\n authClient.signIn\r\n .email({\r\n email: data.email,\r\n password: data.password,\r\n })\r\n .then((res) => {\r\n console.log(res);\r\n if (res.data?.user) {\r\n registerSession(() => {\r\n navigate(\"/\");\r\n });\r\n } else if (res.error) {\r\n toast.error(t(\"web-ui:auth.errors.authentication\"), {\r\n description: res.error.message,\r\n });\r\n }\r\n })\r\n .catch((error) => {\r\n toast.error(t(\"web-ui:auth.errors.server\"), {\r\n description: error.message,\r\n });\r\n });\r\n };\r\n\r\n return (\r\n <form onSubmit={handleSubmit(onSubmit)}>\r\n <div className=\"grid gap-6\">\r\n <AuthProviders providers={providers} lastMethod={lastMethod} />\r\n\r\n <div className=\"grid gap-6\">\r\n <div className=\"grid gap-2\">\r\n <LastUsedBadge lastMethod={lastMethod} method=\"email\">\r\n <label htmlFor=\"email\" className=\"text-sm font-medium\">\r\n {t(\"web-ui:auth.login.email\")}\r\n </label>\r\n </LastUsedBadge>\r\n <Input\r\n type=\"email\"\r\n placeholder={t(\"web-ui:auth.login.placeholder.email\")}\r\n variant=\"bordered\"\r\n isRequired\r\n {...register(\"email\", { required: true })}\r\n />\r\n </div>\r\n\r\n <div className=\"grid gap-2\">\r\n <div className=\"flex items-center\">\r\n <label htmlFor=\"password\" className=\"text-sm font-medium\">\r\n {t(\"web-ui:auth.login.password\")}\r\n </label>\r\n <Link\r\n to=\"/forgot-password\"\r\n className=\"ml-auto text-sm underline-offset-4 hover:underline\"\r\n >\r\n {t(\"web-ui:auth.login.forgotPassword\")}\r\n </Link>\r\n </div>\r\n <Input\r\n placeholder={t(\"web-ui:auth.login.password\")}\r\n type=\"password\"\r\n variant=\"bordered\"\r\n isRequired\r\n {...register(\"password\", { required: true })}\r\n />\r\n </div>\r\n <Button type=\"submit\" className=\"w-full\" color=\"primary\">\r\n {t(\"web-ui:auth.login.button\")}\r\n </Button>\r\n </div>\r\n\r\n <div className=\"text-center text-sm\">\r\n {t(\"web-ui:auth.login.noAccount\")}{\" \"}\r\n <Link to=\"/signup\" className=\"underline underline-offset-4\">\r\n {t(\"web-ui:auth.login.signUp\")}\r\n </Link>\r\n </div>\r\n </div>\r\n </form>\r\n );\r\n}\r\n"],"mappings":";;;;;;;;;;;AAeA,SAAgB,UAAU,EAAE,aAAuC;CACjE,MAAM,aAAa,WAAW,wBAAwB;CACtD,MAAM,EAAE,UAAU,iBAAiB,SAAiB;CACpD,MAAM,EAAE,oBAAoB,YAAY;CACxC,MAAM,WAAW,aAAa;CAC9B,MAAM,EAAE,MAAM,gBAAgB;CAE9B,MAAM,YAAmC,SAAS;AAChD,UAAQ,IAAI,KAAK;AACjB,aAAW,OACR,MAAM;GACL,OAAO,KAAK;GACZ,UAAU,KAAK;GAChB,CAAC,CACD,MAAM,QAAQ;AACb,WAAQ,IAAI,IAAI;AAChB,OAAI,IAAI,MAAM,KACZ,uBAAsB;AACpB,aAAS,IAAI;KACb;YACO,IAAI,MACb,OAAM,MAAM,EAAE,oCAAoC,EAAE,EAClD,aAAa,IAAI,MAAM,SACxB,CAAC;IAEJ,CACD,OAAO,UAAU;AAChB,SAAM,MAAM,EAAE,4BAA4B,EAAE,EAC1C,aAAa,MAAM,SACpB,CAAC;IACF;;AAGN,QACE,oBAAC,QAAD;EAAM,UAAU,aAAa,SAAS;YACpC,qBAAC,OAAD;GAAK,WAAU;aAAf;IACE,oBAAC,eAAD;KAA0B;KAAuB;KAAc,CAAA;IAE/D,qBAAC,OAAD;KAAK,WAAU;eAAf;MACE,qBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,oBAAC,eAAD;QAA2B;QAAY,QAAO;kBAC5C,oBAAC,SAAD;SAAO,SAAQ;SAAQ,WAAU;mBAC9B,EAAE,0BAA0B;SACvB,CAAA;QACM,CAAA,EAChB,oBAAC,OAAD;QACE,MAAK;QACL,aAAa,EAAE,sCAAsC;QACrD,SAAQ;QACR,YAAA;QACA,GAAI,SAAS,SAAS,EAAE,UAAU,MAAM,CAAC;QACzC,CAAA,CACE;;MAEN,qBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,qBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,oBAAC,SAAD;SAAO,SAAQ;SAAW,WAAU;mBACjC,EAAE,6BAA6B;SAC1B,CAAA,EACR,oBAACA,QAAD;SACE,IAAG;SACH,WAAU;mBAET,EAAE,mCAAmC;SACjC,CAAA,CACH;WACN,oBAAC,OAAD;QACE,aAAa,EAAE,6BAA6B;QAC5C,MAAK;QACL,SAAQ;QACR,YAAA;QACA,GAAI,SAAS,YAAY,EAAE,UAAU,MAAM,CAAC;QAC5C,CAAA,CACE;;MACN,oBAAC,QAAD;OAAQ,MAAK;OAAS,WAAU;OAAS,OAAM;iBAC5C,EAAE,2BAA2B;OACvB,CAAA;MACL;;IAEN,qBAAC,OAAD;KAAK,WAAU;eAAf;MACG,EAAE,8BAA8B;MAAE;MACnC,oBAACA,QAAD;OAAM,IAAG;OAAU,WAAU;iBAC1B,EAAE,2BAA2B;OACzB,CAAA;MACH;;IACF;;EACD,CAAA"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/modules/auth/components/LoginRoute.d.ts
|
|
4
|
+
declare function LoginRoute({
|
|
5
|
+
providers
|
|
6
|
+
}: {
|
|
7
|
+
providers?: string[];
|
|
8
|
+
}): _$react_jsx_runtime0.JSX.Element;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { LoginRoute };
|
|
11
|
+
//# sourceMappingURL=LoginRoute.d.ts.map
|
|
@@ -1,11 +1,44 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LoginForm } from "./LoginForm.js";
|
|
2
2
|
import { Card, CardBody, CardHeader } from "@heroui/react";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
4
|
import { useTranslation } from "react-i18next";
|
|
4
|
-
import { Link } from "react-router";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
import { Link as Link$1 } from "react-router";
|
|
6
|
+
//#region src/modules/auth/components/LoginRoute.tsx
|
|
7
|
+
function LoginRoute({ providers }) {
|
|
8
|
+
const { t } = useTranslation();
|
|
9
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
10
|
+
className: "flex flex-col gap-6",
|
|
11
|
+
children: [/* @__PURE__ */ jsxs(Card, { children: [/* @__PURE__ */ jsxs(CardHeader, {
|
|
12
|
+
className: "text-center flex flex-col gap-1",
|
|
13
|
+
children: [/* @__PURE__ */ jsx("p", {
|
|
14
|
+
className: "text-xl font-semibold",
|
|
15
|
+
children: t("web-ui:auth.login.welcome")
|
|
16
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
17
|
+
className: "text-sm text-default-600",
|
|
18
|
+
children: providers ? t("web-ui:auth.login.descriptionWithProviders") : t("web-ui:auth.login.description")
|
|
19
|
+
})]
|
|
20
|
+
}), /* @__PURE__ */ jsx(CardBody, { children: /* @__PURE__ */ jsx(LoginForm, { providers }) })] }), /* @__PURE__ */ jsxs("div", {
|
|
21
|
+
className: "text-balance text-center text-xs text-muted-foreground [&_a]:underline [&_a]:underline-offset-4 [&_a]:hover:text-primary ",
|
|
22
|
+
children: [
|
|
23
|
+
t("web-ui:common.byClickingContinue"),
|
|
24
|
+
" ",
|
|
25
|
+
/* @__PURE__ */ jsx(Link$1, {
|
|
26
|
+
to: "/terms-of-service",
|
|
27
|
+
children: t("web-ui:common.termsOfService")
|
|
28
|
+
}),
|
|
29
|
+
" ",
|
|
30
|
+
t("web-ui:common.and"),
|
|
31
|
+
" ",
|
|
32
|
+
/* @__PURE__ */ jsx(Link$1, {
|
|
33
|
+
to: "/privacy-policy",
|
|
34
|
+
children: t("web-ui:common.privacyPolicy")
|
|
35
|
+
}),
|
|
36
|
+
"."
|
|
37
|
+
]
|
|
38
|
+
})]
|
|
39
|
+
});
|
|
11
40
|
}
|
|
41
|
+
//#endregion
|
|
42
|
+
export { LoginRoute };
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=LoginRoute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoginRoute.js","names":["Link"],"sources":["../../../../../src/modules/auth/components/LoginRoute.tsx"],"sourcesContent":["import { Card, CardBody, CardHeader } from \"@heroui/react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Link } from \"react-router\";\r\nimport { LoginForm } from \"./LoginForm\";\r\n\r\nexport function LoginRoute({ providers }: { providers?: string[] }) {\r\n const { t } = useTranslation();\r\n return (\r\n <div className=\"flex flex-col gap-6\">\r\n <Card>\r\n <CardHeader className=\"text-center flex flex-col gap-1\">\r\n <p className=\"text-xl font-semibold\">{t(\"web-ui:auth.login.welcome\")}</p>\r\n <p className=\"text-sm text-default-600\">\r\n {providers\r\n ? t(\"web-ui:auth.login.descriptionWithProviders\")\r\n : t(\"web-ui:auth.login.description\")}\r\n </p>\r\n </CardHeader>\r\n <CardBody>\r\n <LoginForm providers={providers} />\r\n </CardBody>\r\n </Card>\r\n <div className=\"text-balance text-center text-xs text-muted-foreground [&_a]:underline [&_a]:underline-offset-4 [&_a]:hover:text-primary \">\r\n {t(\"web-ui:common.byClickingContinue\")}{\" \"}\r\n <Link to=\"/terms-of-service\">{t(\"web-ui:common.termsOfService\")}</Link>{\" \"}\r\n {t(\"web-ui:common.and\")}{\" \"}\r\n <Link to=\"/privacy-policy\">{t(\"web-ui:common.privacyPolicy\")}</Link>.\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"mappings":";;;;;;AAKA,SAAgB,WAAW,EAAE,aAAuC;CAClE,MAAM,EAAE,MAAM,gBAAgB;AAC9B,QACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,qBAAC,MAAD,EAAA,UAAA,CACE,qBAAC,YAAD;GAAY,WAAU;aAAtB,CACE,oBAAC,KAAD;IAAG,WAAU;cAAyB,EAAE,4BAA4B;IAAK,CAAA,EACzE,oBAAC,KAAD;IAAG,WAAU;cACV,YACG,EAAE,6CAA6C,GAC/C,EAAE,gCAAgC;IACpC,CAAA,CACO;MACb,oBAAC,UAAD,EAAA,UACE,oBAAC,WAAD,EAAsB,WAAa,CAAA,EAC1B,CAAA,CACN,EAAA,CAAA,EACP,qBAAC,OAAD;GAAK,WAAU;aAAf;IACG,EAAE,mCAAmC;IAAE;IACxC,oBAACA,QAAD;KAAM,IAAG;eAAqB,EAAE,+BAA+B;KAAQ,CAAA;IAAC;IACvE,EAAE,oBAAoB;IAAE;IACzB,oBAACA,QAAD;KAAM,IAAG;eAAmB,EAAE,8BAA8B;KAAQ,CAAA;;IAChE;KACF"}
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/modules/auth/components/LogoutRoute.d.ts
|
|
4
|
+
declare function Logout(): _$react_jsx_runtime0.JSX.Element;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { Logout as default };
|
|
7
|
+
//# sourceMappingURL=LogoutRoute.d.ts.map
|
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Spinner } from "@heroui/react";
|
|
3
|
-
import { authClient } from "@m5kdev/frontend/modules/auth/auth.lib";
|
|
4
1
|
import { useEffect } from "react";
|
|
2
|
+
import { Spinner } from "@heroui/react";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
4
|
import { useNavigate } from "react-router";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
import { authClient } from "@m5kdev/frontend/modules/auth/auth.lib";
|
|
6
|
+
//#region src/modules/auth/components/LogoutRoute.tsx
|
|
7
|
+
function Logout() {
|
|
8
|
+
const navigate = useNavigate();
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
authClient.signOut();
|
|
11
|
+
navigate("/login");
|
|
12
|
+
}, []);
|
|
13
|
+
return /* @__PURE__ */ jsx("div", {
|
|
14
|
+
className: "flex-1 justify-center align-center",
|
|
15
|
+
children: /* @__PURE__ */ jsx(Spinner, {})
|
|
16
|
+
});
|
|
15
17
|
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { Logout as default };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=LogoutRoute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogoutRoute.js","names":[],"sources":["../../../../../src/modules/auth/components/LogoutRoute.tsx"],"sourcesContent":["import { Spinner } from \"@heroui/react\";\r\nimport { authClient } from \"@m5kdev/frontend/modules/auth/auth.lib\";\r\nimport { useEffect } from \"react\";\r\nimport { useNavigate } from \"react-router\";\r\n\r\nexport default function Logout() {\r\n const navigate = useNavigate();\r\n\r\n // biome-ignore lint/correctness/useExhaustiveDependencies(authClient): authClient is a singleton\r\n // biome-ignore lint/correctness/useExhaustiveDependencies(navigate): navigate is a global hook\r\n useEffect(() => {\r\n authClient.signOut();\r\n navigate(\"/login\");\r\n }, []);\r\n\r\n return (\r\n <div className=\"flex-1 justify-center align-center\">\r\n <Spinner />\r\n </div>\r\n );\r\n}\r\n"],"mappings":";;;;;;AAKA,SAAwB,SAAS;CAC/B,MAAM,WAAW,aAAa;AAI9B,iBAAgB;AACd,aAAW,SAAS;AACpB,WAAS,SAAS;IACjB,EAAE,CAAC;AAEN,QACE,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,SAAD,EAAW,CAAA;EACP,CAAA"}
|
|
@@ -1,9 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/modules/auth/components/OrganizationAcceptInvitationRoute.d.ts
|
|
4
|
+
type OrganizationAcceptInvitationRouteProps = {
|
|
5
|
+
authReturnKey?: string;
|
|
6
|
+
loginPath?: string;
|
|
7
|
+
defaultRedirectPath?: string;
|
|
8
|
+
managerRedirectPath?: string;
|
|
9
|
+
managerRoles?: string[];
|
|
10
|
+
onInvalidateScopedQueries?: () => void | Promise<void>;
|
|
8
11
|
};
|
|
9
|
-
|
|
12
|
+
declare function OrganizationAcceptInvitationRoute({
|
|
13
|
+
authReturnKey,
|
|
14
|
+
loginPath,
|
|
15
|
+
defaultRedirectPath,
|
|
16
|
+
managerRedirectPath,
|
|
17
|
+
managerRoles,
|
|
18
|
+
onInvalidateScopedQueries
|
|
19
|
+
}: OrganizationAcceptInvitationRouteProps): _$react_jsx_runtime0.JSX.Element;
|
|
20
|
+
//#endregion
|
|
21
|
+
export { OrganizationAcceptInvitationRoute, OrganizationAcceptInvitationRouteProps };
|
|
22
|
+
//# sourceMappingURL=OrganizationAcceptInvitationRoute.d.ts.map
|
|
@@ -1,102 +1,112 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Card, CardBody, CardHeader, Spinner } from "@heroui/react";
|
|
3
|
-
import { authClient } from "@m5kdev/frontend/modules/auth/auth.lib";
|
|
4
|
-
import { useSession } from "@m5kdev/frontend/modules/auth/hooks/useSession";
|
|
5
1
|
import { useEffect, useMemo, useState } from "react";
|
|
2
|
+
import { Card, CardBody, CardHeader, Spinner } from "@heroui/react";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
4
|
import { useTranslation } from "react-i18next";
|
|
7
5
|
import { useLocation, useNavigate, useSearchParams } from "react-router";
|
|
8
6
|
import { toast } from "sonner";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
7
|
+
import { authClient } from "@m5kdev/frontend/modules/auth/auth.lib";
|
|
8
|
+
import { useSession } from "@m5kdev/frontend/modules/auth/hooks/useSession";
|
|
9
|
+
//#region src/modules/auth/components/OrganizationAcceptInvitationRoute.tsx
|
|
10
|
+
function OrganizationAcceptInvitationRoute({ authReturnKey = "org-auth-return", loginPath = "/login", defaultRedirectPath = "/", managerRedirectPath = "/organization/members", managerRoles = ["admin", "owner"], onInvalidateScopedQueries }) {
|
|
11
|
+
const { t } = useTranslation();
|
|
12
|
+
const [searchParams] = useSearchParams();
|
|
13
|
+
const { data: session, registerSession } = useSession();
|
|
14
|
+
const navigate = useNavigate();
|
|
15
|
+
const location = useLocation();
|
|
16
|
+
const invitationId = searchParams.get("id");
|
|
17
|
+
const [phase, setPhase] = useState("idle");
|
|
18
|
+
const [errorMessage, setErrorMessage] = useState(null);
|
|
19
|
+
const managerRoleSet = useMemo(() => new Set(managerRoles), [managerRoles]);
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (!invitationId) {
|
|
22
|
+
setPhase("error");
|
|
23
|
+
setErrorMessage(t("web-ui:organization.invitation.errorMissing"));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (!session) {
|
|
27
|
+
sessionStorage.setItem(authReturnKey, `${location.pathname}${location.search}`);
|
|
28
|
+
navigate(loginPath, { replace: true });
|
|
29
|
+
}
|
|
30
|
+
}, [
|
|
31
|
+
authReturnKey,
|
|
32
|
+
invitationId,
|
|
33
|
+
location.pathname,
|
|
34
|
+
location.search,
|
|
35
|
+
loginPath,
|
|
36
|
+
navigate,
|
|
37
|
+
session,
|
|
38
|
+
t
|
|
39
|
+
]);
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (!session || !invitationId || phase !== "idle") return;
|
|
42
|
+
let isMounted = true;
|
|
43
|
+
const run = async () => {
|
|
44
|
+
try {
|
|
45
|
+
setPhase("accepting");
|
|
46
|
+
const { data, error } = await authClient.organization.acceptInvitation({ invitationId });
|
|
47
|
+
if (error) throw new Error(error.message ?? t("web-ui:organization.invitation.acceptFailed"));
|
|
48
|
+
const organizationId = data?.invitation?.organizationId ?? null;
|
|
49
|
+
const invitationRole = data?.invitation?.role ?? "member";
|
|
50
|
+
if (organizationId) {
|
|
51
|
+
const result = await authClient.organization.setActive({ organizationId });
|
|
52
|
+
if (result.error) throw new Error(result.error.message ?? t("web-ui:organization.invitation.activateFailed"));
|
|
53
|
+
}
|
|
54
|
+
registerSession(() => {
|
|
55
|
+
onInvalidateScopedQueries?.();
|
|
56
|
+
});
|
|
57
|
+
if (isMounted) {
|
|
58
|
+
setPhase("success");
|
|
59
|
+
toast.success(t("web-ui:organization.invitation.accepted"));
|
|
60
|
+
navigate(managerRoleSet.has(invitationRole) ? managerRedirectPath : defaultRedirectPath, { replace: true });
|
|
61
|
+
}
|
|
62
|
+
} catch (error) {
|
|
63
|
+
if (isMounted) {
|
|
64
|
+
setPhase("error");
|
|
65
|
+
setErrorMessage(error instanceof Error ? error.message : t("web-ui:organization.invitation.acceptFailed"));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
run();
|
|
70
|
+
return () => {
|
|
71
|
+
isMounted = false;
|
|
72
|
+
};
|
|
73
|
+
}, [
|
|
74
|
+
defaultRedirectPath,
|
|
75
|
+
invitationId,
|
|
76
|
+
managerRedirectPath,
|
|
77
|
+
managerRoleSet,
|
|
78
|
+
navigate,
|
|
79
|
+
onInvalidateScopedQueries,
|
|
80
|
+
phase,
|
|
81
|
+
registerSession,
|
|
82
|
+
session,
|
|
83
|
+
t
|
|
84
|
+
]);
|
|
85
|
+
if (phase === "error") return /* @__PURE__ */ jsx("div", {
|
|
86
|
+
className: "min-h-screen flex items-center justify-center p-6",
|
|
87
|
+
children: /* @__PURE__ */ jsxs(Card, {
|
|
88
|
+
className: "w-full max-w-lg",
|
|
89
|
+
children: [/* @__PURE__ */ jsx(CardHeader, {
|
|
90
|
+
className: "text-lg font-semibold",
|
|
91
|
+
children: t("web-ui:organization.invitation.error")
|
|
92
|
+
}), /* @__PURE__ */ jsx(CardBody, { children: errorMessage ?? t("web-ui:organization.invitation.unableAccept") })]
|
|
93
|
+
})
|
|
94
|
+
});
|
|
95
|
+
return /* @__PURE__ */ jsx("div", {
|
|
96
|
+
className: "min-h-screen flex items-center justify-center p-6",
|
|
97
|
+
children: /* @__PURE__ */ jsxs(Card, {
|
|
98
|
+
className: "w-full max-w-lg",
|
|
99
|
+
children: [/* @__PURE__ */ jsx(CardHeader, {
|
|
100
|
+
className: "text-lg font-semibold",
|
|
101
|
+
children: t("web-ui:organization.invitation.accepting")
|
|
102
|
+
}), /* @__PURE__ */ jsxs(CardBody, {
|
|
103
|
+
className: "flex items-center gap-3",
|
|
104
|
+
children: [/* @__PURE__ */ jsx(Spinner, { size: "sm" }), /* @__PURE__ */ jsx("span", { children: phase === "success" ? t("web-ui:organization.invitation.redirecting") : t("web-ui:organization.invitation.pleaseWait") })]
|
|
105
|
+
})]
|
|
106
|
+
})
|
|
107
|
+
});
|
|
102
108
|
}
|
|
109
|
+
//#endregion
|
|
110
|
+
export { OrganizationAcceptInvitationRoute };
|
|
111
|
+
|
|
112
|
+
//# sourceMappingURL=OrganizationAcceptInvitationRoute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrganizationAcceptInvitationRoute.js","names":[],"sources":["../../../../../src/modules/auth/components/OrganizationAcceptInvitationRoute.tsx"],"sourcesContent":["import { Card, CardBody, CardHeader, Spinner } from \"@heroui/react\";\r\nimport { authClient } from \"@m5kdev/frontend/modules/auth/auth.lib\";\r\nimport { useSession } from \"@m5kdev/frontend/modules/auth/hooks/useSession\";\r\nimport { useEffect, useMemo, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useLocation, useNavigate, useSearchParams } from \"react-router\";\r\nimport { toast } from \"sonner\";\r\n\r\ntype Phase = \"idle\" | \"accepting\" | \"success\" | \"error\";\r\n\r\nexport type OrganizationAcceptInvitationRouteProps = {\r\n authReturnKey?: string;\r\n loginPath?: string;\r\n defaultRedirectPath?: string;\r\n managerRedirectPath?: string;\r\n managerRoles?: string[];\r\n onInvalidateScopedQueries?: () => void | Promise<void>;\r\n};\r\n\r\nexport function OrganizationAcceptInvitationRoute({\r\n authReturnKey = \"org-auth-return\",\r\n loginPath = \"/login\",\r\n defaultRedirectPath = \"/\",\r\n managerRedirectPath = \"/organization/members\",\r\n managerRoles = [\"admin\", \"owner\"],\r\n onInvalidateScopedQueries,\r\n}: OrganizationAcceptInvitationRouteProps) {\r\n const { t } = useTranslation();\r\n const [searchParams] = useSearchParams();\r\n const { data: session, registerSession } = useSession();\r\n const navigate = useNavigate();\r\n const location = useLocation();\r\n const invitationId = searchParams.get(\"id\");\r\n const [phase, setPhase] = useState<Phase>(\"idle\");\r\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\r\n const managerRoleSet = useMemo(() => new Set(managerRoles), [managerRoles]);\r\n\r\n useEffect(() => {\r\n if (!invitationId) {\r\n setPhase(\"error\");\r\n setErrorMessage(t(\"web-ui:organization.invitation.errorMissing\"));\r\n return;\r\n }\r\n\r\n if (!session) {\r\n sessionStorage.setItem(authReturnKey, `${location.pathname}${location.search}`);\r\n navigate(loginPath, { replace: true });\r\n }\r\n }, [\r\n authReturnKey,\r\n invitationId,\r\n location.pathname,\r\n location.search,\r\n loginPath,\r\n navigate,\r\n session,\r\n t,\r\n ]);\r\n\r\n useEffect(() => {\r\n if (!session || !invitationId || phase !== \"idle\") {\r\n return;\r\n }\r\n\r\n let isMounted = true;\r\n\r\n const run = async () => {\r\n try {\r\n setPhase(\"accepting\");\r\n const { data, error } = await authClient.organization.acceptInvitation({ invitationId });\r\n if (error) {\r\n throw new Error(error.message ?? t(\"web-ui:organization.invitation.acceptFailed\"));\r\n }\r\n\r\n const organizationId =\r\n (data as { invitation?: { organizationId?: string } | null } | null)?.invitation\r\n ?.organizationId ?? null;\r\n const invitationRole =\r\n (data as { invitation?: { role?: string } | null } | null)?.invitation?.role ?? \"member\";\r\n\r\n if (organizationId) {\r\n const result = await authClient.organization.setActive({ organizationId });\r\n if (result.error) {\r\n throw new Error(\r\n result.error.message ?? t(\"web-ui:organization.invitation.activateFailed\")\r\n );\r\n }\r\n }\r\n\r\n registerSession(() => {\r\n void onInvalidateScopedQueries?.();\r\n });\r\n\r\n if (isMounted) {\r\n setPhase(\"success\");\r\n toast.success(t(\"web-ui:organization.invitation.accepted\"));\r\n navigate(managerRoleSet.has(invitationRole) ? managerRedirectPath : defaultRedirectPath, {\r\n replace: true,\r\n });\r\n }\r\n } catch (error) {\r\n if (isMounted) {\r\n setPhase(\"error\");\r\n setErrorMessage(\r\n error instanceof Error\r\n ? error.message\r\n : t(\"web-ui:organization.invitation.acceptFailed\")\r\n );\r\n }\r\n }\r\n };\r\n\r\n void run();\r\n\r\n return () => {\r\n isMounted = false;\r\n };\r\n }, [\r\n defaultRedirectPath,\r\n invitationId,\r\n managerRedirectPath,\r\n managerRoleSet,\r\n navigate,\r\n onInvalidateScopedQueries,\r\n phase,\r\n registerSession,\r\n session,\r\n t,\r\n ]);\r\n\r\n if (phase === \"error\") {\r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center p-6\">\r\n <Card className=\"w-full max-w-lg\">\r\n <CardHeader className=\"text-lg font-semibold\">\r\n {t(\"web-ui:organization.invitation.error\")}\r\n </CardHeader>\r\n <CardBody>{errorMessage ?? t(\"web-ui:organization.invitation.unableAccept\")}</CardBody>\r\n </Card>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center p-6\">\r\n <Card className=\"w-full max-w-lg\">\r\n <CardHeader className=\"text-lg font-semibold\">\r\n {t(\"web-ui:organization.invitation.accepting\")}\r\n </CardHeader>\r\n <CardBody className=\"flex items-center gap-3\">\r\n <Spinner size=\"sm\" />\r\n <span>\r\n {phase === \"success\"\r\n ? t(\"web-ui:organization.invitation.redirecting\")\r\n : t(\"web-ui:organization.invitation.pleaseWait\")}\r\n </span>\r\n </CardBody>\r\n </Card>\r\n </div>\r\n );\r\n}\r\n"],"mappings":";;;;;;;;;AAmBA,SAAgB,kCAAkC,EAChD,gBAAgB,mBAChB,YAAY,UACZ,sBAAsB,KACtB,sBAAsB,yBACtB,eAAe,CAAC,SAAS,QAAQ,EACjC,6BACyC;CACzC,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,CAAC,gBAAgB,iBAAiB;CACxC,MAAM,EAAE,MAAM,SAAS,oBAAoB,YAAY;CACvD,MAAM,WAAW,aAAa;CAC9B,MAAM,WAAW,aAAa;CAC9B,MAAM,eAAe,aAAa,IAAI,KAAK;CAC3C,MAAM,CAAC,OAAO,YAAY,SAAgB,OAAO;CACjD,MAAM,CAAC,cAAc,mBAAmB,SAAwB,KAAK;CACrE,MAAM,iBAAiB,cAAc,IAAI,IAAI,aAAa,EAAE,CAAC,aAAa,CAAC;AAE3E,iBAAgB;AACd,MAAI,CAAC,cAAc;AACjB,YAAS,QAAQ;AACjB,mBAAgB,EAAE,8CAA8C,CAAC;AACjE;;AAGF,MAAI,CAAC,SAAS;AACZ,kBAAe,QAAQ,eAAe,GAAG,SAAS,WAAW,SAAS,SAAS;AAC/E,YAAS,WAAW,EAAE,SAAS,MAAM,CAAC;;IAEvC;EACD;EACA;EACA,SAAS;EACT,SAAS;EACT;EACA;EACA;EACA;EACD,CAAC;AAEF,iBAAgB;AACd,MAAI,CAAC,WAAW,CAAC,gBAAgB,UAAU,OACzC;EAGF,IAAI,YAAY;EAEhB,MAAM,MAAM,YAAY;AACtB,OAAI;AACF,aAAS,YAAY;IACrB,MAAM,EAAE,MAAM,UAAU,MAAM,WAAW,aAAa,iBAAiB,EAAE,cAAc,CAAC;AACxF,QAAI,MACF,OAAM,IAAI,MAAM,MAAM,WAAW,EAAE,8CAA8C,CAAC;IAGpF,MAAM,iBACH,MAAqE,YAClE,kBAAkB;IACxB,MAAM,iBACH,MAA2D,YAAY,QAAQ;AAElF,QAAI,gBAAgB;KAClB,MAAM,SAAS,MAAM,WAAW,aAAa,UAAU,EAAE,gBAAgB,CAAC;AAC1E,SAAI,OAAO,MACT,OAAM,IAAI,MACR,OAAO,MAAM,WAAW,EAAE,gDAAgD,CAC3E;;AAIL,0BAAsB;AACf,kCAA6B;MAClC;AAEF,QAAI,WAAW;AACb,cAAS,UAAU;AACnB,WAAM,QAAQ,EAAE,0CAA0C,CAAC;AAC3D,cAAS,eAAe,IAAI,eAAe,GAAG,sBAAsB,qBAAqB,EACvF,SAAS,MACV,CAAC;;YAEG,OAAO;AACd,QAAI,WAAW;AACb,cAAS,QAAQ;AACjB,qBACE,iBAAiB,QACb,MAAM,UACN,EAAE,8CAA8C,CACrD;;;;AAKF,OAAK;AAEV,eAAa;AACX,eAAY;;IAEb;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,KAAI,UAAU,QACZ,QACE,oBAAC,OAAD;EAAK,WAAU;YACb,qBAAC,MAAD;GAAM,WAAU;aAAhB,CACE,oBAAC,YAAD;IAAY,WAAU;cACnB,EAAE,uCAAuC;IAC/B,CAAA,EACb,oBAAC,UAAD,EAAA,UAAW,gBAAgB,EAAE,8CAA8C,EAAY,CAAA,CAClF;;EACH,CAAA;AAIV,QACE,oBAAC,OAAD;EAAK,WAAU;YACb,qBAAC,MAAD;GAAM,WAAU;aAAhB,CACE,oBAAC,YAAD;IAAY,WAAU;cACnB,EAAE,2CAA2C;IACnC,CAAA,EACb,qBAAC,UAAD;IAAU,WAAU;cAApB,CACE,oBAAC,SAAD,EAAS,MAAK,MAAO,CAAA,EACrB,oBAAC,QAAD,EAAA,UACG,UAAU,YACP,EAAE,6CAA6C,GAC/C,EAAE,4CAA4C,EAC7C,CAAA,CACE;MACN;;EACH,CAAA"}
|