@greatapps/common 1.1.475 → 1.1.476

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.
Files changed (85) hide show
  1. package/dist/components/account/sections/MyProfileSection.mjs +2 -1
  2. package/dist/components/account/sections/MyProfileSection.mjs.map +1 -1
  3. package/dist/components/embeds/CrispEmbed.mjs +60 -24
  4. package/dist/components/embeds/CrispEmbed.mjs.map +1 -1
  5. package/dist/components/embeds/EmbedWidgets.mjs +45 -0
  6. package/dist/components/embeds/EmbedWidgets.mjs.map +1 -0
  7. package/dist/components/embeds/FrillEmbed.mjs +10 -3
  8. package/dist/components/embeds/FrillEmbed.mjs.map +1 -1
  9. package/dist/components/layouts/ProfilePopover.mjs +2 -1
  10. package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
  11. package/dist/components/modals/cards/AddCardModal.mjs +10 -6
  12. package/dist/components/modals/cards/AddCardModal.mjs.map +1 -1
  13. package/dist/components/modals/cards/CardFormFields.mjs +47 -15
  14. package/dist/components/modals/cards/CardFormFields.mjs.map +1 -1
  15. package/dist/components/navigation/ProjectSelectorPopover.mjs +1 -1
  16. package/dist/components/navigation/ProjectSelectorPopover.mjs.map +1 -1
  17. package/dist/components/navigation/subcomponents/BottomLinks.mjs +2 -2
  18. package/dist/components/navigation/subcomponents/BottomLinks.mjs.map +1 -1
  19. package/dist/components/navigation/subcomponents/ProjectSelector.mjs +1 -1
  20. package/dist/components/navigation/subcomponents/ProjectSelector.mjs.map +1 -1
  21. package/dist/components/pages/notifications/Notifications.mjs +27 -17
  22. package/dist/components/pages/notifications/Notifications.mjs.map +1 -1
  23. package/dist/components/ui/form/Select.mjs +1 -1
  24. package/dist/components/ui/form/Select.mjs.map +1 -1
  25. package/dist/components/ui/overlay/Dialog.mjs +2 -1
  26. package/dist/components/ui/overlay/Dialog.mjs.map +1 -1
  27. package/dist/components/ui/overlay/Popover.mjs +1 -1
  28. package/dist/components/ui/overlay/Popover.mjs.map +1 -1
  29. package/dist/components/ui/overlay/Sheet.mjs +2 -2
  30. package/dist/components/ui/overlay/Sheet.mjs.map +1 -1
  31. package/dist/components/ui/overlay/Tooltip.mjs +1 -1
  32. package/dist/components/ui/overlay/Tooltip.mjs.map +1 -1
  33. package/dist/components/widgets/ImageUpload/ImageCropModal.mjs +212 -0
  34. package/dist/components/widgets/ImageUpload/ImageCropModal.mjs.map +1 -0
  35. package/dist/components/widgets/ImageUpload/ImageTooSmallModal.mjs +51 -0
  36. package/dist/components/widgets/ImageUpload/ImageTooSmallModal.mjs.map +1 -0
  37. package/dist/components/widgets/ImageUpload/ImageUpload.mjs +122 -0
  38. package/dist/components/widgets/ImageUpload/ImageUpload.mjs.map +1 -0
  39. package/dist/components/widgets/ImageUpload/index.mjs +9 -0
  40. package/dist/components/widgets/ImageUpload/index.mjs.map +1 -0
  41. package/dist/index.mjs +50 -2
  42. package/dist/index.mjs.map +1 -1
  43. package/dist/infra/utils/date.mjs +11 -0
  44. package/dist/infra/utils/date.mjs.map +1 -1
  45. package/dist/modules/auth/services/auth.service.mjs +2 -1
  46. package/dist/modules/auth/services/auth.service.mjs.map +1 -1
  47. package/dist/modules/images/actions/process-image.action.mjs +31 -0
  48. package/dist/modules/images/actions/process-image.action.mjs.map +1 -0
  49. package/dist/modules/images/constants/image.constants.mjs +14 -0
  50. package/dist/modules/images/constants/image.constants.mjs.map +1 -0
  51. package/dist/modules/images/hooks/use-image-upload.hook.mjs +132 -0
  52. package/dist/modules/images/hooks/use-image-upload.hook.mjs.map +1 -0
  53. package/dist/modules/images/services/image-processing.service.mjs +65 -0
  54. package/dist/modules/images/services/image-processing.service.mjs.map +1 -0
  55. package/dist/modules/images/types/image.type.mjs +1 -0
  56. package/dist/modules/images/types/image.type.mjs.map +1 -0
  57. package/dist/modules/images/utils/base64.mjs +24 -0
  58. package/dist/modules/images/utils/base64.mjs.map +1 -0
  59. package/dist/modules/images/utils/compress-image.mjs +17 -0
  60. package/dist/modules/images/utils/compress-image.mjs.map +1 -0
  61. package/dist/modules/images/utils/crop-image.mjs +31 -0
  62. package/dist/modules/images/utils/crop-image.mjs.map +1 -0
  63. package/dist/modules/images/utils/validate-image.mjs +58 -0
  64. package/dist/modules/images/utils/validate-image.mjs.map +1 -0
  65. package/dist/modules/plans/actions/list-plans.action.mjs +17 -0
  66. package/dist/modules/plans/actions/list-plans.action.mjs.map +1 -0
  67. package/dist/modules/plans/hooks/list-plans.hook.mjs +22 -0
  68. package/dist/modules/plans/hooks/list-plans.hook.mjs.map +1 -0
  69. package/dist/modules/plans/hooks/use-plan-by-id.hook.mjs +21 -2
  70. package/dist/modules/plans/hooks/use-plan-by-id.hook.mjs.map +1 -1
  71. package/dist/modules/plans/services/plans.service.mjs +71 -10
  72. package/dist/modules/plans/services/plans.service.mjs.map +1 -1
  73. package/dist/modules/plans/types/plan.type.mjs +1 -0
  74. package/dist/modules/plans/types/plan.type.mjs.map +1 -1
  75. package/dist/modules/plans/utils/map-api-plan-to-ui.mjs +58 -0
  76. package/dist/modules/plans/utils/map-api-plan-to-ui.mjs.map +1 -0
  77. package/dist/modules/subscriptions/types/subscription.type.mjs +31 -1
  78. package/dist/modules/subscriptions/types/subscription.type.mjs.map +1 -1
  79. package/dist/server.mjs +6 -0
  80. package/dist/server.mjs.map +1 -1
  81. package/dist/utils/format/currency.mjs +13 -0
  82. package/dist/utils/format/currency.mjs.map +1 -0
  83. package/package.json +1 -1
  84. package/src/components/navigation/CancelledSubscriptionBanner.tsx +1 -1
  85. package/src/components/ui/overlay/Sheet.tsx +13 -9
package/dist/server.mjs CHANGED
@@ -17,6 +17,7 @@ import { findUserById } from "./modules/users/action/find-user-by-id.action";
17
17
  import { findCurrentAccount } from "./modules/accounts/actions/find-current-account.action";
18
18
  import { listSubscriptionsAction } from "./modules/subscriptions/actions/list-subscriptions.action";
19
19
  import { findPlanByIdAction } from "./modules/plans/actions/find-plan-by-id.action";
20
+ import { listPlansAction } from "./modules/plans/actions/list-plans.action";
20
21
  import { calculateSubscriptionAction } from "./modules/subscriptions/actions/calculate-subscription.action";
21
22
  import { updateSubscriptionPlanAction } from "./modules/subscriptions/actions/update-subscription-plan.action";
22
23
  import { listCardsAction } from "./modules/cards/actions/list-cards.action";
@@ -52,6 +53,8 @@ import { getClientInfoFromRequest } from "./infra/utils/client-info";
52
53
  import { getUserContext } from "./modules/auth/utils/get-user-context";
53
54
  import { buildWlOverride, buildWlOverrideFromJwt } from "./modules/auth/utils/build-wl-override";
54
55
  import { safeServerAction } from "./utils/safeServerAction";
56
+ import { processImageAction } from "./modules/images/actions/process-image.action";
57
+ import { processImage } from "./modules/images/services/image-processing.service";
55
58
  export {
56
59
  ApiClient,
57
60
  accountService,
@@ -89,9 +92,12 @@ export {
89
92
  listAvailableUsersAction,
90
93
  listCardsAction,
91
94
  listIaCreditsAction,
95
+ listPlansAction,
92
96
  listProjectUsersAction,
93
97
  listSubscriptionsAction,
94
98
  plansService,
99
+ processImage,
100
+ processImageAction,
95
101
  projectUsersService,
96
102
  removeProjectUserAction,
97
103
  requestEmailChangeAction,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server.ts"],"sourcesContent":["import 'server-only';\r\n\r\n// API Client\r\nexport { ApiClient, api, apiClient } from './infra/api/client';\r\n\r\n// Services\r\nexport { authService } from './modules/auth/services/auth.service';\r\nexport { whitelabelService } from './modules/whitelabel/services/whitelabel.service';\r\nexport { revalidateWhitelabelAction } from './modules/whitelabel/actions/revalidate-whitelabel.action';\r\nexport { assertManagementPermission } from './modules/auth/utils/assert-management-permission';\r\nexport { assertManagementSubscription } from './modules/auth/utils/assert-management-subscription';\r\nexport { assertSubscriptionAddon } from './modules/auth/utils/assert-subscription-addon';\r\nexport { assertPaidSubscription } from './modules/auth/utils/assert-paid-subscription';\r\nexport { subscriptionsService } from './modules/subscriptions/services/subscriptions.service';\r\nexport { plansService } from './modules/plans/services/plans.service';\r\nexport { cardsService } from './modules/cards/services/cards.service';\r\nexport { iaCreditsService } from './modules/ia-credits/services/ia-credits.service';\r\n\r\n// Actions\r\nexport { findWhitelabel } from './modules/whitelabel/actions/find-whitelabel.action';\r\nexport { validateSessionAction } from './modules/auth/actions/validate-session.action';\r\nexport { findUserById } from './modules/users/action/find-user-by-id.action';\r\nexport { findCurrentAccount } from './modules/accounts/actions/find-current-account.action';\r\nexport { listSubscriptionsAction } from './modules/subscriptions/actions/list-subscriptions.action';\r\nexport { findPlanByIdAction } from './modules/plans/actions/find-plan-by-id.action';\r\nexport { calculateSubscriptionAction } from './modules/subscriptions/actions/calculate-subscription.action';\r\nexport { updateSubscriptionPlanAction } from './modules/subscriptions/actions/update-subscription-plan.action';\r\nexport { listCardsAction } from './modules/cards/actions/list-cards.action';\r\nexport { createCardAction } from './modules/cards/actions/create-card.action';\r\nexport { resolvePlanExtrasPrices } from './modules/subscriptions/utils/resolve-plan-extras-prices';\r\nexport { hasSubscriptionExpired } from './modules/subscriptions/utils/has-subscription-expired';\r\nexport { listIaCreditsAction } from './modules/ia-credits/actions/list-ia-credits.action';\r\n\r\n// Project Users Services & Actions (server-only)\r\nexport { projectUsersService } from './modules/projects/services/project-users.service';\r\nexport { listProjectUsersAction } from './modules/projects/actions/list-project-users.action';\r\nexport { listAvailableUsersAction } from './modules/projects/actions/list-available-users.action';\r\nexport { addProjectUserAction } from './modules/projects/actions/add-project-user.action';\r\nexport { removeProjectUserAction } from './modules/projects/actions/remove-project-user.action';\r\n\r\n// Account Services & Actions (server-only)\r\nexport { accountService } from './modules/accounts/services/account.service';\r\nexport { twoFactorService } from './modules/accounts/services/two-factor.service';\r\nexport {\r\n listAccountUsersAction,\r\n updateUserAction,\r\n updateAccountAction,\r\n updateAccountUserByIdAction,\r\n deleteAccountUserAction,\r\n deleteAccountAction,\r\n createAccountUserAction,\r\n changePasswordAction,\r\n requestEmailChangeAction,\r\n confirmEmailChangeAction,\r\n requestPhoneChangeAction,\r\n confirmPhoneChangeAction,\r\n generateTwoFactorAction,\r\n confirmTwoFactorAction,\r\n disableTwoFactorAction,\r\n} from './modules/accounts/actions/account-management.action';\r\n\r\n// Server Utils\r\nexport { getClientInfoFromRequest } from './infra/utils/client-info';\r\nexport { getUserContext } from './modules/auth/utils/get-user-context';\r\nexport { buildWlOverride, buildWlOverrideFromJwt } from './modules/auth/utils/build-wl-override';\r\nexport { safeServerAction } from './utils/safeServerAction';\r\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,WAAW,KAAK,iBAAiB;AAG1C,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAClC,SAAS,kCAAkC;AAC3C,SAAS,kCAAkC;AAC3C,SAAS,oCAAoC;AAC7C,SAAS,+BAA+B;AACxC,SAAS,8BAA8B;AACvC,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAC7B,SAAS,oBAAoB;AAC7B,SAAS,wBAAwB;AAGjC,SAAS,sBAAsB;AAC/B,SAAS,6BAA6B;AACtC,SAAS,oBAAoB;AAC7B,SAAS,0BAA0B;AACnC,SAAS,+BAA+B;AACxC,SAAS,0BAA0B;AACnC,SAAS,mCAAmC;AAC5C,SAAS,oCAAoC;AAC7C,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AACjC,SAAS,+BAA+B;AACxC,SAAS,8BAA8B;AACvC,SAAS,2BAA2B;AAGpC,SAAS,2BAA2B;AACpC,SAAS,8BAA8B;AACvC,SAAS,gCAAgC;AACzC,SAAS,4BAA4B;AACrC,SAAS,+BAA+B;AAGxC,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AACjC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,gCAAgC;AACzC,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB,8BAA8B;AACxD,SAAS,wBAAwB;","names":[]}
1
+ {"version":3,"sources":["../src/server.ts"],"sourcesContent":["import 'server-only';\r\n\r\n// API Client\r\nexport { ApiClient, api, apiClient } from './infra/api/client';\r\n\r\n// Services\r\nexport { authService } from './modules/auth/services/auth.service';\r\nexport { whitelabelService } from './modules/whitelabel/services/whitelabel.service';\r\nexport { revalidateWhitelabelAction } from './modules/whitelabel/actions/revalidate-whitelabel.action';\r\nexport { assertManagementPermission } from './modules/auth/utils/assert-management-permission';\r\nexport { assertManagementSubscription } from './modules/auth/utils/assert-management-subscription';\r\nexport { assertSubscriptionAddon } from './modules/auth/utils/assert-subscription-addon';\r\nexport { assertPaidSubscription } from './modules/auth/utils/assert-paid-subscription';\r\nexport { subscriptionsService } from './modules/subscriptions/services/subscriptions.service';\r\nexport { plansService } from './modules/plans/services/plans.service';\r\nexport { cardsService } from './modules/cards/services/cards.service';\r\nexport { iaCreditsService } from './modules/ia-credits/services/ia-credits.service';\r\n\r\n// Actions\r\nexport { findWhitelabel } from './modules/whitelabel/actions/find-whitelabel.action';\r\nexport { validateSessionAction } from './modules/auth/actions/validate-session.action';\r\nexport { findUserById } from './modules/users/action/find-user-by-id.action';\r\nexport { findCurrentAccount } from './modules/accounts/actions/find-current-account.action';\r\nexport { listSubscriptionsAction } from './modules/subscriptions/actions/list-subscriptions.action';\r\nexport { findPlanByIdAction } from './modules/plans/actions/find-plan-by-id.action';\r\nexport { listPlansAction } from './modules/plans/actions/list-plans.action';\r\nexport { calculateSubscriptionAction } from './modules/subscriptions/actions/calculate-subscription.action';\r\nexport { updateSubscriptionPlanAction } from './modules/subscriptions/actions/update-subscription-plan.action';\r\nexport { listCardsAction } from './modules/cards/actions/list-cards.action';\r\nexport { createCardAction } from './modules/cards/actions/create-card.action';\r\nexport { resolvePlanExtrasPrices } from './modules/subscriptions/utils/resolve-plan-extras-prices';\r\nexport { hasSubscriptionExpired } from './modules/subscriptions/utils/has-subscription-expired';\r\nexport { listIaCreditsAction } from './modules/ia-credits/actions/list-ia-credits.action';\r\n\r\n// Project Users Services & Actions (server-only)\r\nexport { projectUsersService } from './modules/projects/services/project-users.service';\r\nexport { listProjectUsersAction } from './modules/projects/actions/list-project-users.action';\r\nexport { listAvailableUsersAction } from './modules/projects/actions/list-available-users.action';\r\nexport { addProjectUserAction } from './modules/projects/actions/add-project-user.action';\r\nexport { removeProjectUserAction } from './modules/projects/actions/remove-project-user.action';\r\n\r\n// Account Services & Actions (server-only)\r\nexport { accountService } from './modules/accounts/services/account.service';\r\nexport { twoFactorService } from './modules/accounts/services/two-factor.service';\r\nexport {\r\n listAccountUsersAction,\r\n updateUserAction,\r\n updateAccountAction,\r\n updateAccountUserByIdAction,\r\n deleteAccountUserAction,\r\n deleteAccountAction,\r\n createAccountUserAction,\r\n changePasswordAction,\r\n requestEmailChangeAction,\r\n confirmEmailChangeAction,\r\n requestPhoneChangeAction,\r\n confirmPhoneChangeAction,\r\n generateTwoFactorAction,\r\n confirmTwoFactorAction,\r\n disableTwoFactorAction,\r\n} from './modules/accounts/actions/account-management.action';\r\n\r\n// Server Utils\r\nexport { getClientInfoFromRequest } from './infra/utils/client-info';\r\nexport { getUserContext } from './modules/auth/utils/get-user-context';\r\nexport { buildWlOverride, buildWlOverrideFromJwt } from './modules/auth/utils/build-wl-override';\r\nexport { safeServerAction } from './utils/safeServerAction';\r\n\r\n// Image Processing (server-side)\r\nexport { processImageAction } from './modules/images/actions/process-image.action';\r\nexport { processImage } from './modules/images/services/image-processing.service';\r\nexport type {\r\n ProcessImageInput,\r\n ProcessImageOutput,\r\n ProcessImageActionInput,\r\n ProcessImageActionOutput,\r\n} from './modules/images/types/image.type';\r\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,WAAW,KAAK,iBAAiB;AAG1C,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAClC,SAAS,kCAAkC;AAC3C,SAAS,kCAAkC;AAC3C,SAAS,oCAAoC;AAC7C,SAAS,+BAA+B;AACxC,SAAS,8BAA8B;AACvC,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAC7B,SAAS,oBAAoB;AAC7B,SAAS,wBAAwB;AAGjC,SAAS,sBAAsB;AAC/B,SAAS,6BAA6B;AACtC,SAAS,oBAAoB;AAC7B,SAAS,0BAA0B;AACnC,SAAS,+BAA+B;AACxC,SAAS,0BAA0B;AACnC,SAAS,uBAAuB;AAChC,SAAS,mCAAmC;AAC5C,SAAS,oCAAoC;AAC7C,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AACjC,SAAS,+BAA+B;AACxC,SAAS,8BAA8B;AACvC,SAAS,2BAA2B;AAGpC,SAAS,2BAA2B;AACpC,SAAS,8BAA8B;AACvC,SAAS,gCAAgC;AACzC,SAAS,4BAA4B;AACrC,SAAS,+BAA+B;AAGxC,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AACjC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,gCAAgC;AACzC,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB,8BAA8B;AACxD,SAAS,wBAAwB;AAGjC,SAAS,0BAA0B;AACnC,SAAS,oBAAoB;","names":[]}
@@ -0,0 +1,13 @@
1
+ const formatCurrencyNumber = (value, decimals = 2) => {
2
+ const safeValue = value ?? 0;
3
+ return safeValue.toLocaleString("pt-BR", {
4
+ style: "currency",
5
+ currency: "BRL",
6
+ minimumFractionDigits: decimals,
7
+ maximumFractionDigits: decimals
8
+ });
9
+ };
10
+ export {
11
+ formatCurrencyNumber
12
+ };
13
+ //# sourceMappingURL=currency.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/format/currency.ts"],"sourcesContent":["/**\n * Formata um número (opcional) para moeda BRL\n * @param value - Número a ser formatado (pode ser undefined ou null)\n * @param decimals - Casas decimais (padrão: 2)\n * @returns String formatada como \"R$ X.XXX,XX\"\n */\nexport const formatCurrencyNumber = (value?: number | null, decimals = 2): string => {\n const safeValue = value ?? 0;\n return safeValue.toLocaleString('pt-BR', {\n style: 'currency',\n currency: 'BRL',\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n });\n};\n"],"mappings":"AAMO,MAAM,uBAAuB,CAAC,OAAuB,WAAW,MAAc;AACnF,QAAM,YAAY,SAAS;AAC3B,SAAO,UAAU,eAAe,SAAS;AAAA,IACvC,OAAO;AAAA,IACP,UAAU;AAAA,IACV,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,EACzB,CAAC;AACH;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@greatapps/common",
3
- "version": "1.1.475",
3
+ "version": "1.1.476",
4
4
  "description": "Shared library for GreatApps frontend applications",
5
5
  "main": "./dist/index.mjs",
6
6
  "types": "./src/index.ts",
@@ -32,7 +32,7 @@ export function CancelledSubscriptionBanner({ onReactivate }: CancelledSubscript
32
32
  if (!isTrial && (!subscription?.date_cancellation || isPastDue)) return null;
33
33
 
34
34
  return (
35
- <div className="fixed top-[80px] md:top-0 lg:left-[273px] left-0 right-0 z-[60] flex justify-center pointer-events-none px-4 lg:px-0">
35
+ <div className="fixed top-[80px] md:top-0 left-0 right-0 z-[60] flex justify-center pointer-events-none px-4 lg:px-0">
36
36
  <div
37
37
  className={`flex flex-col sm:flex-row items-start sm:items-center justify-between bg-red-500 rounded-lg px-3 py-2 sm:py-1 w-full lg:w-[805px] max-w-full pointer-events-auto transition-transform duration-500 ease-out gap-2 sm:gap-0 ${animated ? 'translate-y-0 md:translate-y-9' : '-translate-y-full'}`}
38
38
  >
@@ -37,16 +37,18 @@ function SheetPortal({
37
37
  function SheetOverlay({
38
38
  className,
39
39
  ...props
40
- }: React.ComponentProps<typeof SheetPrimitive.Overlay>) {
40
+ }: React.ComponentProps<"div">) {
41
41
  return (
42
- <SheetPrimitive.Overlay
43
- data-slot="sheet-overlay"
44
- className={cn(
45
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-[1000] bg-black/50",
46
- className,
47
- )}
48
- {...props}
49
- />
42
+ <SheetPrimitive.Close tabIndex={-1} asChild>
43
+ <div
44
+ data-slot="sheet-overlay"
45
+ className={cn(
46
+ "animate-in fade-in-0 fixed inset-0 z-[1000] bg-black/50 cursor-default",
47
+ className,
48
+ )}
49
+ {...props}
50
+ />
51
+ </SheetPrimitive.Close>
50
52
  );
51
53
  }
52
54
 
@@ -67,6 +69,8 @@ function SheetContent({
67
69
  <SheetOverlay className={noAnimation ? "!animate-none" : undefined} />
68
70
  <SheetPrimitive.Content
69
71
  data-slot="sheet-content"
72
+ onInteractOutside={(e) => e.preventDefault()}
73
+ onPointerDownOutside={(e) => e.preventDefault()}
70
74
  className={cn(
71
75
  "bg-background fixed z-[1001] flex flex-col gap-4 shadow-lg",
72
76
  !noAnimation &&