@carlonicora/nextjs-jsonapi 1.36.1 → 1.38.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.
Files changed (190) hide show
  1. package/dist/{BlockNoteEditor-4MDHRUS2.js → BlockNoteEditor-3S2B36O3.js} +15 -15
  2. package/dist/{BlockNoteEditor-4MDHRUS2.js.map → BlockNoteEditor-3S2B36O3.js.map} +1 -1
  3. package/dist/{BlockNoteEditor-SZWO3MDO.mjs → BlockNoteEditor-WQUJTVJL.mjs} +5 -5
  4. package/dist/BlockNoteEditor-WQUJTVJL.mjs.map +1 -0
  5. package/dist/billing/index.d.mts +15 -5
  6. package/dist/billing/index.d.ts +15 -5
  7. package/dist/billing/index.js +750 -520
  8. package/dist/billing/index.js.map +1 -1
  9. package/dist/billing/index.mjs +665 -435
  10. package/dist/billing/index.mjs.map +1 -1
  11. package/dist/{chunk-53IPQJVH.js → chunk-3EZX4G2E.js} +147 -23
  12. package/dist/chunk-3EZX4G2E.js.map +1 -0
  13. package/dist/{chunk-I7DFEJFF.mjs → chunk-4PHADEKA.mjs} +738 -1418
  14. package/dist/chunk-4PHADEKA.mjs.map +1 -0
  15. package/dist/{chunk-E6PQQTWF.js → chunk-T2JCZYWK.js} +999 -1679
  16. package/dist/chunk-T2JCZYWK.js.map +1 -0
  17. package/dist/{chunk-P7R2DPD6.mjs → chunk-TQ5GRRTM.mjs} +125 -1
  18. package/dist/chunk-TQ5GRRTM.mjs.map +1 -0
  19. package/dist/client/index.js +3 -3
  20. package/dist/client/index.mjs +2 -2
  21. package/dist/components/index.d.mts +23 -8
  22. package/dist/components/index.d.ts +23 -8
  23. package/dist/components/index.js +3 -3
  24. package/dist/components/index.mjs +2 -2
  25. package/dist/contexts/index.d.mts +1 -1
  26. package/dist/contexts/index.d.ts +1 -1
  27. package/dist/contexts/index.js +3 -3
  28. package/dist/contexts/index.mjs +2 -2
  29. package/dist/core/index.d.mts +47 -3
  30. package/dist/core/index.d.ts +47 -3
  31. package/dist/core/index.js +8 -2
  32. package/dist/core/index.js.map +1 -1
  33. package/dist/core/index.mjs +7 -1
  34. package/dist/index.d.mts +2 -2
  35. package/dist/index.d.ts +2 -2
  36. package/dist/index.js +8 -2
  37. package/dist/index.js.map +1 -1
  38. package/dist/index.mjs +7 -1
  39. package/dist/server/index.js +3 -3
  40. package/dist/server/index.mjs +1 -1
  41. package/dist/{stripe-subscription.interface-DK7BJaNd.d.ts → stripe-promotion-code.interface-BcJty0rv.d.ts} +18 -1
  42. package/dist/{stripe-subscription.interface-C8uhCYIZ.d.mts → stripe-promotion-code.interface-Dnm2DJKQ.d.mts} +18 -1
  43. package/dist/testing/index.js.map +1 -1
  44. package/dist/testing/index.mjs.map +1 -1
  45. package/package.json +2 -2
  46. package/src/billing/index.ts +1 -0
  47. package/src/client/context/JsonApiProvider.tsx +1 -5
  48. package/src/client/hooks/__tests__/useJsonApiGet.test.tsx +9 -9
  49. package/src/client/hooks/__tests__/useJsonApiMutation.test.tsx +11 -11
  50. package/src/client/hooks/__tests__/useRehydration.test.ts +13 -34
  51. package/src/components/editors/BlockNoteEditor.tsx +2 -2
  52. package/src/components/forms/CommonEditorTrigger.tsx +1 -1
  53. package/src/components/forms/FormCheckbox.tsx +2 -12
  54. package/src/components/forms/FormDate.tsx +1 -6
  55. package/src/components/forms/FormInput.tsx +1 -1
  56. package/src/components/forms/FormPassword.tsx +1 -7
  57. package/src/components/forms/FormSelect.tsx +2 -8
  58. package/src/components/forms/FormSlider.tsx +1 -5
  59. package/src/components/forms/FormSwitch.tsx +1 -5
  60. package/src/components/forms/GdprConsentCheckbox.tsx +2 -8
  61. package/src/components/forms/PasswordInput.tsx +28 -26
  62. package/src/components/forms/__tests__/FormCheckbox.test.tsx +16 -18
  63. package/src/components/forms/__tests__/FormDate.test.tsx +14 -30
  64. package/src/components/forms/__tests__/FormInput.test.tsx +21 -37
  65. package/src/components/forms/__tests__/FormSelect.test.tsx +15 -21
  66. package/src/components/tables/ContentListTable.tsx +1 -1
  67. package/src/components/tables/__tests__/ContentListTable.test.tsx +17 -89
  68. package/src/components/tables/cells/cell.component.tsx +1 -1
  69. package/src/contexts/HeaderChildrenContext.tsx +3 -1
  70. package/src/core/endpoint/__tests__/EndpointCreator.test.ts +2 -7
  71. package/src/core/factories/__tests__/JsonApiDataFactory.test.ts +3 -3
  72. package/src/core/factories/__tests__/RehydrationFactory.test.ts +4 -6
  73. package/src/core/index.ts +1 -0
  74. package/src/core/registry/ModuleRegistry.ts +1 -0
  75. package/src/core/registry/__tests__/DataClassRegistry.test.ts +5 -15
  76. package/src/core/registry/__tests__/ModuleRegistrar.test.ts +5 -15
  77. package/src/features/auth/components/GdprConsentSection.tsx +1 -6
  78. package/src/features/auth/components/details/LandingComponent.tsx +6 -1
  79. package/src/features/auth/components/forms/AcceptInvitation.tsx +1 -1
  80. package/src/features/auth/components/forms/ResetPassword.tsx +1 -1
  81. package/src/features/billing/components/cards/PaymentMethodSummaryCard.tsx +13 -18
  82. package/src/features/billing/components/cards/SubscriptionSummaryCard.tsx +12 -17
  83. package/src/features/billing/components/modals/BillingDetailModal.tsx +2 -13
  84. package/src/features/billing/stripe-customer/components/details/PaymentMethodCard.tsx +8 -1
  85. package/src/features/billing/stripe-customer/components/forms/PaymentMethodEditor.tsx +2 -13
  86. package/src/features/billing/stripe-customer/components/forms/PaymentMethodForm.tsx +2 -12
  87. package/src/features/billing/stripe-invoice/components/details/InvoiceDetails.tsx +6 -1
  88. package/src/features/billing/stripe-invoice/data/stripe-invoice.interface.ts +1 -0
  89. package/src/features/billing/stripe-price/components/lists/PricesList.tsx +13 -5
  90. package/src/features/billing/stripe-product/components/lists/ProductsList.tsx +5 -5
  91. package/src/features/billing/stripe-promotion-code/components/PromoCodeInput.tsx +108 -0
  92. package/src/features/billing/stripe-promotion-code/components/index.ts +1 -0
  93. package/src/features/billing/stripe-promotion-code/data/index.ts +3 -0
  94. package/src/features/billing/stripe-promotion-code/data/stripe-promotion-code.interface.ts +14 -0
  95. package/src/features/billing/stripe-promotion-code/data/stripe-promotion-code.service.ts +64 -0
  96. package/src/features/billing/stripe-promotion-code/data/stripe-promotion-code.ts +66 -0
  97. package/src/features/billing/stripe-promotion-code/index.ts +2 -0
  98. package/src/features/billing/stripe-promotion-code/stripe-promotion-code.module.ts +9 -0
  99. package/src/features/billing/stripe-subscription/components/containers/SubscriptionsContainer.tsx +1 -3
  100. package/src/features/billing/stripe-subscription/components/details/SubscriptionDetails.tsx +4 -1
  101. package/src/features/billing/stripe-subscription/components/forms/CancelSubscriptionDialog.tsx +1 -1
  102. package/src/features/billing/stripe-subscription/components/lists/SubscriptionsList.tsx +24 -4
  103. package/src/features/billing/stripe-subscription/components/widgets/PricingCard.tsx +9 -2
  104. package/src/features/billing/stripe-subscription/components/widgets/SubscriptionStatusBadge.tsx +3 -1
  105. package/src/features/billing/stripe-subscription/components/wizards/SubscriptionWizard.tsx +7 -7
  106. package/src/features/billing/stripe-subscription/components/wizards/WizardProgressIndicator.tsx +2 -10
  107. package/src/features/billing/stripe-subscription/components/wizards/WizardStepPaymentMethod.tsx +3 -13
  108. package/src/features/billing/stripe-subscription/components/wizards/WizardStepReview.tsx +134 -23
  109. package/src/features/billing/stripe-subscription/data/stripe-subscription.interface.ts +2 -0
  110. package/src/features/billing/stripe-subscription/data/stripe-subscription.ts +8 -0
  111. package/src/features/billing/stripe-subscription/hooks/useSubscriptionWizard.ts +93 -7
  112. package/src/features/billing/stripe-usage/components/details/UsageSummaryCard.tsx +1 -1
  113. package/src/features/billing/stripe-usage/components/lists/UsageHistoryTable.tsx +1 -1
  114. package/src/features/company/components/details/CompanyDetails.tsx +2 -2
  115. package/src/features/company/components/forms/CompanyConfigurationSecurityForm.tsx +1 -1
  116. package/src/features/index.ts +1 -0
  117. package/src/features/notification/components/containers/NotificationsListContainer.tsx +1 -1
  118. package/src/features/notification/components/modals/NotificationModal.tsx +6 -2
  119. package/src/features/notification/contexts/NotificationContext.tsx +1 -3
  120. package/src/features/oauth/components/OAuthClientCard.tsx +15 -17
  121. package/src/features/oauth/components/OAuthClientDetail.tsx +7 -19
  122. package/src/features/oauth/components/OAuthClientForm.tsx +4 -13
  123. package/src/features/oauth/components/OAuthClientSecretDisplay.tsx +4 -20
  124. package/src/features/oauth/components/OAuthRedirectUriInput.tsx +5 -12
  125. package/src/features/oauth/components/OAuthScopeSelector.tsx +17 -23
  126. package/src/features/oauth/components/consent/OAuthConsentActions.tsx +3 -16
  127. package/src/features/oauth/components/consent/OAuthConsentHeader.tsx +3 -12
  128. package/src/features/oauth/components/consent/OAuthConsentScreen.tsx +5 -20
  129. package/src/features/oauth/components/consent/OAuthScopeList.tsx +3 -18
  130. package/src/features/onboarding/contexts/OnboardingContext.tsx +3 -3
  131. package/src/features/role/components/forms/FormRoles.tsx +1 -7
  132. package/src/features/user/components/containers/UserContainer.tsx +1 -1
  133. package/src/features/user/components/details/UserDetails.tsx +1 -1
  134. package/src/features/user/components/forms/UserDeleter.tsx +1 -1
  135. package/src/features/user/components/forms/UserEditor.tsx +1 -1
  136. package/src/features/user/components/forms/UserMultiSelect.tsx +7 -7
  137. package/src/features/user/components/lists/UserListInAdd.tsx +2 -2
  138. package/src/features/user/components/lists/UsersList.tsx +7 -1
  139. package/src/features/user/contexts/CurrentUserContext.tsx +36 -33
  140. package/src/hooks/__tests__/useDataListRetriever.test.ts +15 -21
  141. package/src/hooks/__tests__/useDebounce.test.ts +2 -7
  142. package/src/hooks/useCustomD3Graph.tsx +2 -2
  143. package/src/shadcnui/custom/multi-select.tsx +28 -2
  144. package/src/shadcnui/ui/accordion.tsx +21 -23
  145. package/src/shadcnui/ui/alert-dialog.tsx +45 -62
  146. package/src/shadcnui/ui/alert.tsx +25 -41
  147. package/src/shadcnui/ui/avatar.tsx +23 -36
  148. package/src/shadcnui/ui/badge.tsx +13 -11
  149. package/src/shadcnui/ui/breadcrumb.tsx +21 -55
  150. package/src/shadcnui/ui/button.tsx +17 -18
  151. package/src/shadcnui/ui/calendar.tsx +44 -93
  152. package/src/shadcnui/ui/carousel.tsx +72 -100
  153. package/src/shadcnui/ui/chart.tsx +102 -161
  154. package/src/shadcnui/ui/checkbox.tsx +8 -9
  155. package/src/shadcnui/ui/combobox.tsx +52 -83
  156. package/src/shadcnui/ui/command.tsx +43 -77
  157. package/src/shadcnui/ui/context-menu.tsx +47 -86
  158. package/src/shadcnui/ui/dialog.tsx +34 -60
  159. package/src/shadcnui/ui/drawer.tsx +32 -53
  160. package/src/shadcnui/ui/dropdown-menu.tsx +48 -65
  161. package/src/shadcnui/ui/field.tsx +39 -48
  162. package/src/shadcnui/ui/hover-card.tsx +9 -14
  163. package/src/shadcnui/ui/input-group.tsx +44 -55
  164. package/src/shadcnui/ui/input-otp.tsx +22 -26
  165. package/src/shadcnui/ui/input.tsx +6 -6
  166. package/src/shadcnui/ui/label.tsx +6 -6
  167. package/src/shadcnui/ui/navigation-menu.tsx +36 -60
  168. package/src/shadcnui/ui/popover.tsx +15 -38
  169. package/src/shadcnui/ui/progress.tsx +12 -29
  170. package/src/shadcnui/ui/radio-group.tsx +9 -15
  171. package/src/shadcnui/ui/resizable.tsx +14 -24
  172. package/src/shadcnui/ui/scroll-area.tsx +12 -27
  173. package/src/shadcnui/ui/select.tsx +41 -65
  174. package/src/shadcnui/ui/separator.tsx +7 -11
  175. package/src/shadcnui/ui/sheet.tsx +30 -55
  176. package/src/shadcnui/ui/sidebar.tsx +141 -189
  177. package/src/shadcnui/ui/skeleton.tsx +3 -9
  178. package/src/shadcnui/ui/slider.tsx +11 -23
  179. package/src/shadcnui/ui/switch.tsx +8 -8
  180. package/src/shadcnui/ui/tabs.tsx +14 -21
  181. package/src/shadcnui/ui/textarea.tsx +5 -5
  182. package/src/shadcnui/ui/toggle.tsx +8 -14
  183. package/src/shadcnui/ui/tooltip.tsx +11 -23
  184. package/src/testing/providers/MockJsonApiProvider.tsx +1 -5
  185. package/src/testing/utils/renderWithProviders.tsx +6 -10
  186. package/dist/BlockNoteEditor-SZWO3MDO.mjs.map +0 -1
  187. package/dist/chunk-53IPQJVH.js.map +0 -1
  188. package/dist/chunk-E6PQQTWF.js.map +0 -1
  189. package/dist/chunk-I7DFEJFF.mjs.map +0 -1
  190. package/dist/chunk-P7R2DPD6.mjs.map +0 -1
@@ -3442,6 +3442,8 @@ var StripeSubscription = class extends AbstractApiData {
3442
3442
  return this;
3443
3443
  }
3444
3444
  createJsonApi(data) {
3445
+ console.log("[StripeSubscription.createJsonApi] Input data:", JSON.stringify(data, null, 2));
3446
+ console.log("[StripeSubscription.createJsonApi] promotionCode in input:", data.promotionCode);
3445
3447
  const response = {
3446
3448
  data: {
3447
3449
  type: Modules.StripeSubscription.name,
@@ -3477,6 +3479,10 @@ var StripeSubscription = class extends AbstractApiData {
3477
3479
  if (data.metadata) {
3478
3480
  response.data.attributes.metadata = data.metadata;
3479
3481
  }
3482
+ if (data.promotionCode) {
3483
+ response.data.attributes.promotionCode = data.promotionCode;
3484
+ }
3485
+ console.log("[StripeSubscription.createJsonApi] Final response:", JSON.stringify(response, null, 2));
3480
3486
  return response;
3481
3487
  }
3482
3488
  };
@@ -3823,6 +3829,121 @@ var StripeUsageModule = /* @__PURE__ */ __name((factory) => factory({
3823
3829
  moduleId: "c2e9f4a6-1d7b-4e3a-8f5c-9b2d6a1e7f3c"
3824
3830
  }), "StripeUsageModule");
3825
3831
 
3832
+ // src/features/billing/stripe-promotion-code/data/stripe-promotion-code.service.ts
3833
+ var STRIPE_PROMOTION_CODE_ENDPOINT = "stripe-promotion-codes";
3834
+ var StripePromotionCodeService = class {
3835
+ static {
3836
+ __name(this, "StripePromotionCodeService");
3837
+ }
3838
+ /**
3839
+ * Validate a promotion code against Stripe
3840
+ *
3841
+ * @param params.code - The promotion code to validate (e.g., "SAVE20")
3842
+ * @param params.stripePriceId - Optional price ID to check product restrictions
3843
+ * @param params.language - Language code for the request
3844
+ * @returns Validation result with discount details if valid
3845
+ */
3846
+ static async validatePromotionCode(params) {
3847
+ const response = await JsonApiPost({
3848
+ classKey: Modules.StripePromotionCode,
3849
+ endpoint: `${STRIPE_PROMOTION_CODE_ENDPOINT}/validate`,
3850
+ body: {
3851
+ data: {
3852
+ type: STRIPE_PROMOTION_CODE_ENDPOINT,
3853
+ attributes: {
3854
+ code: params.code,
3855
+ stripePriceId: params.stripePriceId
3856
+ }
3857
+ }
3858
+ },
3859
+ overridesJsonApiCreation: true,
3860
+ language: params.language ?? "en"
3861
+ });
3862
+ if (!response.ok) {
3863
+ return {
3864
+ valid: false,
3865
+ code: params.code,
3866
+ errorMessage: response.error || "Failed to validate promotion code"
3867
+ };
3868
+ }
3869
+ const data = response.data;
3870
+ return {
3871
+ valid: data.valid,
3872
+ promotionCodeId: data.promotionCodeId,
3873
+ code: data.code,
3874
+ discountType: data.discountType,
3875
+ discountValue: data.discountValue,
3876
+ currency: data.currency,
3877
+ duration: data.duration,
3878
+ durationInMonths: data.durationInMonths,
3879
+ errorMessage: data.errorMessage
3880
+ };
3881
+ }
3882
+ };
3883
+
3884
+ // src/features/billing/stripe-promotion-code/data/stripe-promotion-code.ts
3885
+ var StripePromotionCode = class extends AbstractApiData {
3886
+ static {
3887
+ __name(this, "StripePromotionCode");
3888
+ }
3889
+ _valid = false;
3890
+ _promotionCodeId;
3891
+ _code = "";
3892
+ _discountType;
3893
+ _discountValue;
3894
+ _currency;
3895
+ _duration;
3896
+ _durationInMonths;
3897
+ _errorMessage;
3898
+ get valid() {
3899
+ return this._valid;
3900
+ }
3901
+ get promotionCodeId() {
3902
+ return this._promotionCodeId;
3903
+ }
3904
+ get code() {
3905
+ return this._code;
3906
+ }
3907
+ get discountType() {
3908
+ return this._discountType;
3909
+ }
3910
+ get discountValue() {
3911
+ return this._discountValue;
3912
+ }
3913
+ get currency() {
3914
+ return this._currency;
3915
+ }
3916
+ get duration() {
3917
+ return this._duration;
3918
+ }
3919
+ get durationInMonths() {
3920
+ return this._durationInMonths;
3921
+ }
3922
+ get errorMessage() {
3923
+ return this._errorMessage;
3924
+ }
3925
+ rehydrate(data) {
3926
+ super.rehydrate(data);
3927
+ this._valid = data.jsonApi.attributes.valid ?? false;
3928
+ this._promotionCodeId = data.jsonApi.attributes.promotionCodeId;
3929
+ this._code = data.jsonApi.attributes.code ?? "";
3930
+ this._discountType = data.jsonApi.attributes.discountType;
3931
+ this._discountValue = data.jsonApi.attributes.discountValue;
3932
+ this._currency = data.jsonApi.attributes.currency;
3933
+ this._duration = data.jsonApi.attributes.duration;
3934
+ this._durationInMonths = data.jsonApi.attributes.durationInMonths;
3935
+ this._errorMessage = data.jsonApi.attributes.errorMessage;
3936
+ return this;
3937
+ }
3938
+ };
3939
+
3940
+ // src/features/billing/stripe-promotion-code/stripe-promotion-code.module.ts
3941
+ var StripePromotionCodeModule = /* @__PURE__ */ __name((factory) => factory({
3942
+ name: "stripe-promotion-codes",
3943
+ model: StripePromotionCode,
3944
+ moduleId: "b8e4f6a2-9d0c-5b3f-c7e8-4g2d9f0a5c6e"
3945
+ }), "StripePromotionCodeModule");
3946
+
3826
3947
  // src/features/company/data/company.ts
3827
3948
  var Company = class extends AbstractApiData {
3828
3949
  static {
@@ -5356,6 +5477,9 @@ export {
5356
5477
  StripeUsage,
5357
5478
  StripeUsageService,
5358
5479
  StripeUsageModule,
5480
+ StripePromotionCodeService,
5481
+ StripePromotionCode,
5482
+ StripePromotionCodeModule,
5359
5483
  Company,
5360
5484
  CompanyFields,
5361
5485
  CompanyService,
@@ -5395,4 +5519,4 @@ export {
5395
5519
  AVAILABLE_OAUTH_SCOPES,
5396
5520
  DEFAULT_GRANT_TYPES
5397
5521
  };
5398
- //# sourceMappingURL=chunk-P7R2DPD6.mjs.map
5522
+ //# sourceMappingURL=chunk-TQ5GRRTM.mjs.map