@carlonicora/nextjs-jsonapi 1.40.0 → 1.41.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 (165) hide show
  1. package/README.md +3 -3
  2. package/dist/AuthComponent-BuWc2C4g.d.ts +28 -0
  3. package/dist/AuthComponent-fLVGdvSr.d.mts +28 -0
  4. package/dist/{BlockNoteEditor-EKY4AHVK.mjs → BlockNoteEditor-B3RQ4VQ7.mjs} +5 -5
  5. package/dist/{BlockNoteEditor-4G3L3LSF.js → BlockNoteEditor-VUAWVZF4.js} +15 -15
  6. package/dist/{BlockNoteEditor-4G3L3LSF.js.map → BlockNoteEditor-VUAWVZF4.js.map} +1 -1
  7. package/dist/JsonApiRequest-MUPAO7DI.js +24 -0
  8. package/dist/{JsonApiRequest-GR3L56A5.js.map → JsonApiRequest-MUPAO7DI.js.map} +1 -1
  9. package/dist/{JsonApiRequest-K5BRU7RE.mjs → JsonApiRequest-XCQHVVYD.mjs} +2 -2
  10. package/dist/auth.interface-8XglqHir.d.mts +33 -0
  11. package/dist/auth.interface-BJGKQ0zr.d.ts +33 -0
  12. package/dist/billing/index.js +409 -415
  13. package/dist/billing/index.js.map +1 -1
  14. package/dist/billing/index.mjs +4 -10
  15. package/dist/billing/index.mjs.map +1 -1
  16. package/dist/{chunk-BAOP6PTD.mjs → chunk-BJNQZGMN.mjs} +1618 -666
  17. package/dist/chunk-BJNQZGMN.mjs.map +1 -0
  18. package/dist/{chunk-U4MTVHOC.mjs → chunk-GCQUTWZ2.mjs} +11 -4
  19. package/dist/{chunk-U4MTVHOC.mjs.map → chunk-GCQUTWZ2.mjs.map} +1 -1
  20. package/dist/{chunk-ZNGEVB5M.js → chunk-L5F5ZN5F.js} +960 -140
  21. package/dist/chunk-L5F5ZN5F.js.map +1 -0
  22. package/dist/{chunk-RRIYLEY6.mjs → chunk-LBIC4GJK.mjs} +2 -2
  23. package/dist/{chunk-T5YYOT4Z.js → chunk-OODZEX6P.js} +3 -3
  24. package/dist/{chunk-T5YYOT4Z.js.map → chunk-OODZEX6P.js.map} +1 -1
  25. package/dist/{chunk-GVN7XC3U.mjs → chunk-PHNL4QUF.mjs} +835 -15
  26. package/dist/chunk-PHNL4QUF.mjs.map +1 -0
  27. package/dist/{chunk-GKY5DAIH.js → chunk-QPWHMXE2.js} +1505 -553
  28. package/dist/chunk-QPWHMXE2.js.map +1 -0
  29. package/dist/{chunk-FM6WRAN5.js → chunk-WLS4D6VG.js} +12 -5
  30. package/dist/chunk-WLS4D6VG.js.map +1 -0
  31. package/dist/client/index.d.mts +4 -4
  32. package/dist/client/index.d.ts +4 -4
  33. package/dist/client/index.js +5 -5
  34. package/dist/client/index.mjs +4 -4
  35. package/dist/components/index.d.mts +69 -8
  36. package/dist/components/index.d.ts +69 -8
  37. package/dist/components/index.js +27 -5
  38. package/dist/components/index.js.map +1 -1
  39. package/dist/components/index.mjs +26 -4
  40. package/dist/{config-BxwhHdCD.d.mts → config-BW5u1e9P.d.mts} +1 -1
  41. package/dist/{config-BbaBV_yk.d.ts → config-BozK5PY0.d.ts} +1 -1
  42. package/dist/{content.interface-CgUu4771.d.ts → content.interface-CpCDB1Uk.d.ts} +1 -1
  43. package/dist/{content.interface-CWV0q4lZ.d.mts → content.interface-b-mzkL_q.d.mts} +1 -1
  44. package/dist/contexts/index.d.mts +2 -2
  45. package/dist/contexts/index.d.ts +2 -2
  46. package/dist/contexts/index.js +5 -5
  47. package/dist/contexts/index.mjs +4 -4
  48. package/dist/core/index.d.mts +407 -7
  49. package/dist/core/index.d.ts +407 -7
  50. package/dist/core/index.js +61 -3
  51. package/dist/core/index.js.map +1 -1
  52. package/dist/core/index.mjs +60 -2
  53. package/dist/index.d.mts +8 -6
  54. package/dist/index.d.ts +8 -6
  55. package/dist/index.js +62 -4
  56. package/dist/index.js.map +1 -1
  57. package/dist/index.mjs +61 -3
  58. package/dist/{notification.interface-XARGKJAq.d.ts → notification.interface-CR2PuV6Y.d.ts} +1 -0
  59. package/dist/{notification.interface-DIln2r7X.d.mts → notification.interface-D241WNUx.d.mts} +1 -0
  60. package/dist/{s3.service-BoOF5-ln.d.mts → s3.service-D0rbmLFp.d.mts} +10 -31
  61. package/dist/{s3.service-Mxo-7wQ6.d.ts → s3.service-DOwqcUDT.d.ts} +10 -31
  62. package/dist/scripts/generate-web-module/generator.js +26 -26
  63. package/dist/scripts/generate-web-module/generator.js.map +1 -1
  64. package/dist/scripts/generate-web-module/utils/file-writer.js +9 -9
  65. package/dist/scripts/generate-web-module/utils/file-writer.js.map +1 -1
  66. package/dist/server/index.d.mts +4 -3
  67. package/dist/server/index.d.ts +4 -3
  68. package/dist/server/index.js +12 -12
  69. package/dist/server/index.mjs +2 -2
  70. package/dist/{useSocket-awibcC9B.d.ts → useSocket-CC8SkXdm.d.ts} +1 -1
  71. package/dist/{useSocket-BILAdmZ0.d.mts → useSocket-CttIHn2P.d.mts} +1 -1
  72. package/package.json +4 -1
  73. package/scripts/generate-web-module/generator.ts +26 -26
  74. package/scripts/generate-web-module/utils/file-writer.ts +9 -9
  75. package/src/components/pages/PageContentContainer.tsx +22 -9
  76. package/src/core/abstracts/AbstractService.ts +2 -0
  77. package/src/core/factories/JsonApiDataFactory.ts +2 -1
  78. package/src/core/index.ts +14 -0
  79. package/src/core/registry/DataClassRegistry.ts +7 -1
  80. package/src/core/registry/ModuleRegistry.ts +15 -0
  81. package/src/features/auth/backup-code-verify.module.ts +9 -0
  82. package/src/features/auth/components/containers/SecurityContainer.tsx +11 -0
  83. package/src/features/auth/components/containers/index.ts +1 -0
  84. package/src/features/auth/components/forms/Login.tsx +15 -3
  85. package/src/features/auth/components/forms/Register.tsx +1 -9
  86. package/src/features/auth/components/forms/TwoFactorChallenge.tsx +202 -0
  87. package/src/features/auth/components/forms/index.ts +1 -0
  88. package/src/features/auth/components/index.ts +1 -0
  89. package/src/features/auth/components/two-factor/BackupCodesDialog.tsx +148 -0
  90. package/src/features/auth/components/two-factor/DisableTwoFactorDialog.tsx +74 -0
  91. package/src/features/auth/components/two-factor/PasskeyButton.tsx +59 -0
  92. package/src/features/auth/components/two-factor/PasskeyList.tsx +172 -0
  93. package/src/features/auth/components/two-factor/PasskeySetupDialog.tsx +105 -0
  94. package/src/features/auth/components/two-factor/TotpAuthenticatorList.tsx +104 -0
  95. package/src/features/auth/components/two-factor/TotpInput.tsx +90 -0
  96. package/src/features/auth/components/two-factor/TotpSetupDialog.tsx +161 -0
  97. package/src/features/auth/components/two-factor/TwoFactorSettings.tsx +175 -0
  98. package/src/features/auth/components/two-factor/index.ts +9 -0
  99. package/src/features/auth/contexts/AuthContext.tsx +9 -0
  100. package/src/features/auth/data/auth.service.ts +18 -1
  101. package/src/features/auth/data/backup-code-verify.ts +20 -0
  102. package/src/features/auth/data/index.ts +21 -0
  103. package/src/features/auth/data/passkey-authentication-options.interface.ts +7 -0
  104. package/src/features/auth/data/passkey-authentication-options.ts +37 -0
  105. package/src/features/auth/data/passkey-registration-options.ts +46 -0
  106. package/src/features/auth/data/passkey-registration-verify.ts +62 -0
  107. package/src/features/auth/data/passkey-rename.ts +20 -0
  108. package/src/features/auth/data/passkey-verify-login.ts +23 -0
  109. package/src/features/auth/data/passkey.interface.ts +9 -0
  110. package/src/features/auth/data/passkey.ts +40 -0
  111. package/src/features/auth/data/totp-authenticator.interface.ts +7 -0
  112. package/src/features/auth/data/totp-authenticator.ts +28 -0
  113. package/src/features/auth/data/totp-setup.interface.ts +5 -0
  114. package/src/features/auth/data/totp-setup.ts +48 -0
  115. package/src/features/auth/data/totp-verify-login.ts +20 -0
  116. package/src/features/auth/data/totp-verify.ts +22 -0
  117. package/src/features/auth/data/two-factor-challenge.interface.ts +7 -0
  118. package/src/features/auth/data/two-factor-challenge.ts +45 -0
  119. package/src/features/auth/data/two-factor-enable.ts +20 -0
  120. package/src/features/auth/data/two-factor-status.interface.ts +11 -0
  121. package/src/features/auth/data/two-factor-status.ts +40 -0
  122. package/src/features/auth/data/two-factor.service.ts +331 -0
  123. package/src/features/auth/enums/AuthComponent.ts +1 -0
  124. package/src/features/auth/index.ts +13 -0
  125. package/src/features/auth/passkey-authentication-options.module.ts +9 -0
  126. package/src/features/auth/passkey-registration-options.module.ts +9 -0
  127. package/src/features/auth/passkey-registration-verify.module.ts +9 -0
  128. package/src/features/auth/passkey-rename.module.ts +9 -0
  129. package/src/features/auth/passkey-verify-login.module.ts +9 -0
  130. package/src/features/auth/passkey.module.ts +9 -0
  131. package/src/features/auth/totp-authenticator.module.ts +9 -0
  132. package/src/features/auth/totp-setup.module.ts +9 -0
  133. package/src/features/auth/totp-verify-login.module.ts +9 -0
  134. package/src/features/auth/totp-verify.module.ts +9 -0
  135. package/src/features/auth/two-factor-challenge.module.ts +9 -0
  136. package/src/features/auth/two-factor-enable.module.ts +9 -0
  137. package/src/features/auth/two-factor-status.module.ts +9 -0
  138. package/src/features/billing/modules/billing.module.ts +1 -0
  139. package/src/features/billing/stripe-customer/stripe-customer.module.ts +1 -0
  140. package/src/features/billing/stripe-customer/stripe-payment-method.module.ts +1 -0
  141. package/src/features/billing/stripe-invoice/stripe-invoice.module.ts +1 -0
  142. package/src/features/billing/stripe-price/stripe-price.module.ts +1 -0
  143. package/src/features/billing/stripe-product/stripe-product.module.ts +1 -0
  144. package/src/features/billing/stripe-promotion-code/stripe-promotion-code.module.ts +1 -0
  145. package/src/features/billing/stripe-subscription/data/stripe-subscription.ts +0 -5
  146. package/src/features/billing/stripe-subscription/hooks/useSubscriptionWizard.ts +0 -8
  147. package/src/features/billing/stripe-subscription/stripe-subscription.module.ts +1 -0
  148. package/src/features/billing/stripe-usage/stripe-usage.module.ts +1 -0
  149. package/src/features/user/data/user.interface.ts +1 -0
  150. package/src/features/user/data/user.ts +6 -0
  151. package/src/features/waitlist/data/WaitlistService.ts +1 -8
  152. package/src/features/waitlist/waitlist-stats.module.ts +1 -0
  153. package/src/shadcnui/ui/resizable.tsx +33 -11
  154. package/src/unified/JsonApiRequest.ts +2 -1
  155. package/dist/AuthComponent-hxOPs9o8.d.mts +0 -11
  156. package/dist/AuthComponent-hxOPs9o8.d.ts +0 -11
  157. package/dist/JsonApiRequest-GR3L56A5.js +0 -24
  158. package/dist/chunk-BAOP6PTD.mjs.map +0 -1
  159. package/dist/chunk-FM6WRAN5.js.map +0 -1
  160. package/dist/chunk-GKY5DAIH.js.map +0 -1
  161. package/dist/chunk-GVN7XC3U.mjs.map +0 -1
  162. package/dist/chunk-ZNGEVB5M.js.map +0 -1
  163. /package/dist/{BlockNoteEditor-EKY4AHVK.mjs.map → BlockNoteEditor-B3RQ4VQ7.mjs.map} +0 -0
  164. /package/dist/{JsonApiRequest-K5BRU7RE.mjs.map → JsonApiRequest-XCQHVVYD.mjs.map} +0 -0
  165. /package/dist/{chunk-RRIYLEY6.mjs.map → chunk-LBIC4GJK.mjs.map} +0 -0
@@ -4,6 +4,7 @@ import { StripeInvoice } from "./data/stripe-invoice";
4
4
  export const StripeInvoiceModule = (factory: ModuleFactory) =>
5
5
  factory({
6
6
  name: "stripe-invoices",
7
+ pageUrl: "/stripe-invoices",
7
8
  model: StripeInvoice,
8
9
  moduleId: "37c73b8b-d3b1-4e5e-8fcb-a66d8ecfc05b",
9
10
  });
@@ -4,6 +4,7 @@ import { StripePrice } from "./data/stripe-price";
4
4
  export const StripePriceModule = (factory: ModuleFactory) =>
5
5
  factory({
6
6
  name: "stripe-prices",
7
+ pageUrl: "/stripe-prices",
7
8
  model: StripePrice,
8
9
  moduleId: "a7d3e5f1-8c9b-4a2e-b6d7-3f1c8e9a4b5d",
9
10
  });
@@ -4,6 +4,7 @@ import { StripeProduct } from "./data";
4
4
  export const StripeProductModule = (factory: ModuleFactory) =>
5
5
  factory({
6
6
  name: "stripe-products",
7
+ pageUrl: "/stripe-products",
7
8
  model: StripeProduct,
8
9
  moduleId: "f8c4a1e9-3b2d-4f7a-9e5c-1d8a6b3c9f2e",
9
10
  });
@@ -4,6 +4,7 @@ import { StripePromotionCode } from "./data/stripe-promotion-code";
4
4
  export const StripePromotionCodeModule = (factory: ModuleFactory) =>
5
5
  factory({
6
6
  name: "stripe-promotion-codes",
7
+ pageUrl: "/stripe-promotion-codes",
7
8
  model: StripePromotionCode,
8
9
  moduleId: "b8e4f6a2-9d0c-5b3f-c7e8-4g2d9f0a5c6e",
9
10
  });
@@ -83,9 +83,6 @@ export class StripeSubscription extends AbstractApiData implements StripeSubscri
83
83
  }
84
84
 
85
85
  createJsonApi(data: StripeSubscriptionInput): any {
86
- console.log("[StripeSubscription.createJsonApi] Input data:", JSON.stringify(data, null, 2));
87
- console.log("[StripeSubscription.createJsonApi] promotionCode in input:", data.promotionCode);
88
-
89
86
  const response: any = {
90
87
  data: {
91
88
  type: Modules.StripeSubscription.name,
@@ -136,8 +133,6 @@ export class StripeSubscription extends AbstractApiData implements StripeSubscri
136
133
  if (data.promotionCode) {
137
134
  response.data.attributes.promotionCode = data.promotionCode;
138
135
  }
139
-
140
- console.log("[StripeSubscription.createJsonApi] Final response:", JSON.stringify(response, null, 2));
141
136
  return response;
142
137
  }
143
138
  }
@@ -173,10 +173,6 @@ export function useSubscriptionWizard({ subscription, onSuccess, onClose }: UseS
173
173
  const confirmSubscription = useCallback(async () => {
174
174
  if (!state.selectedPrice) return;
175
175
 
176
- console.log("[useSubscriptionWizard] confirmSubscription called");
177
- console.log("[useSubscriptionWizard] state.promotionCode:", JSON.stringify(state.promotionCode, null, 2));
178
- console.log("[useSubscriptionWizard] promotionCodeId to send:", state.promotionCode?.promotionCodeId);
179
-
180
176
  dispatch({ type: "SET_PROCESSING", isProcessing: true });
181
177
  dispatch({ type: "SET_ERROR", error: null });
182
178
 
@@ -188,7 +184,6 @@ export function useSubscriptionWizard({ subscription, onSuccess, onClose }: UseS
188
184
  newPriceId: state.selectedPrice.id,
189
185
  promotionCode: state.promotionCode?.promotionCodeId,
190
186
  };
191
- console.log("[useSubscriptionWizard] changePlan params:", JSON.stringify(changePlanParams, null, 2));
192
187
  await StripeSubscriptionService.changePlan(changePlanParams);
193
188
  } else {
194
189
  // Create new subscription
@@ -197,15 +192,12 @@ export function useSubscriptionWizard({ subscription, onSuccess, onClose }: UseS
197
192
  priceId: state.selectedPrice.id,
198
193
  promotionCode: state.promotionCode?.promotionCodeId,
199
194
  };
200
- console.log("[useSubscriptionWizard] createSubscription params:", JSON.stringify(createParams, null, 2));
201
195
  await StripeSubscriptionService.createSubscription(createParams);
202
196
  }
203
197
 
204
198
  onSuccessRef.current();
205
199
  onCloseRef.current();
206
200
  } catch (error: any) {
207
- console.error("[useSubscriptionWizard] Subscription error:", error);
208
-
209
201
  // Handle 409 Conflict - duplicate recurring subscription
210
202
  if (error?.status === 409 || error?.response?.status === 409) {
211
203
  dispatch({
@@ -4,6 +4,7 @@ import { StripeSubscription } from "./data";
4
4
  export const StripeSubscriptionModule = (factory: ModuleFactory) =>
5
5
  factory({
6
6
  name: "stripe-subscriptions",
7
+ pageUrl: "/stripe-subscriptions",
7
8
  model: StripeSubscription,
8
9
  moduleId: "5e8797ef-650b-4dd5-ac79-a2e530a6c7ba",
9
10
  });
@@ -4,6 +4,7 @@ import { StripeUsage } from "./data/stripe-usage";
4
4
  export const StripeUsageModule = (factory: ModuleFactory) =>
5
5
  factory({
6
6
  name: "stripe-usage-records",
7
+ pageUrl: "/stripe-usage-records",
7
8
  model: StripeUsage,
8
9
  moduleId: "c2e9f4a6-1d7b-4e3a-8f5c-9b2d6a1e7f3c",
9
10
  });
@@ -31,6 +31,7 @@ export interface UserInterface extends ApiDataInterface {
31
31
 
32
32
  get isActivated(): boolean;
33
33
  get isDeleted(): boolean;
34
+ get twoFactorEnabled(): boolean;
34
35
  get lastLogin(): Date | undefined;
35
36
 
36
37
  get relevance(): number | undefined;
@@ -17,6 +17,7 @@ export class User extends AbstractApiData implements UserInterface, SearchResult
17
17
 
18
18
  private _isActivated?: boolean;
19
19
  private _isDeleted?: boolean;
20
+ private _twoFactorEnabled: boolean = false;
20
21
  private _lastLogin?: Date;
21
22
 
22
23
  private _relevance?: number;
@@ -73,6 +74,10 @@ export class User extends AbstractApiData implements UserInterface, SearchResult
73
74
  return this._isDeleted ?? false;
74
75
  }
75
76
 
77
+ get twoFactorEnabled(): boolean {
78
+ return this._twoFactorEnabled;
79
+ }
80
+
76
81
  get lastLogin(): Date | undefined {
77
82
  return this._lastLogin;
78
83
  }
@@ -104,6 +109,7 @@ export class User extends AbstractApiData implements UserInterface, SearchResult
104
109
 
105
110
  this._isActivated = data.jsonApi.meta.isActive;
106
111
  this._isDeleted = data.jsonApi.meta.isDeleted;
112
+ this._twoFactorEnabled = data.jsonApi.attributes.twoFactorEnabled ?? false;
107
113
  this._lastLogin = data.jsonApi.meta.lastLogin ? new Date(data.jsonApi.meta.lastLogin) : undefined;
108
114
 
109
115
  this._relevance = data.jsonApi.meta.relevance;
@@ -119,7 +119,6 @@ export class WaitlistService extends AbstractService {
119
119
  * Validate invite code (public) - calls auth endpoint
120
120
  */
121
121
  static async validateInvite(code: string): Promise<InviteValidation | null> {
122
- console.log("[WaitlistService.validateInvite] Starting validation for code:", code);
123
122
  try {
124
123
  const endpoint = new EndpointCreator({
125
124
  endpoint: Modules.Waitlist,
@@ -127,26 +126,20 @@ export class WaitlistService extends AbstractService {
127
126
  childId: code,
128
127
  });
129
128
 
130
- console.log("[WaitlistService.validateInvite] Calling endpoint:", endpoint.generate());
131
-
132
129
  const response = await this.callApiWithMeta<any>({
133
130
  type: Modules.Auth,
134
131
  method: HttpMethod.GET,
135
132
  endpoint: endpoint.generate(),
136
133
  });
137
134
 
138
- console.log("[WaitlistService.validateInvite] Response:", JSON.stringify(response));
139
-
140
135
  // Response structure: data._jsonApi.attributes contains the actual values
141
136
  const attributes = response.data?._jsonApi?.attributes;
142
- console.log("[WaitlistService.validateInvite] Parsed attributes:", JSON.stringify(attributes));
143
137
 
144
138
  return {
145
139
  email: attributes?.email,
146
140
  valid: attributes?.valid ?? false,
147
141
  };
148
- } catch (error) {
149
- console.error("[WaitlistService.validateInvite] Error:", error);
142
+ } catch (_error) {
150
143
  return null;
151
144
  }
152
145
  }
@@ -4,5 +4,6 @@ import { WaitlistStats } from "./data/waitlist-stats";
4
4
  export const WaitlistStatsModule = (factory: ModuleFactory) =>
5
5
  factory({
6
6
  name: "waitlist-stats",
7
+ pageUrl: "/waitlist-stats",
7
8
  model: WaitlistStats,
8
9
  });
@@ -1,42 +1,64 @@
1
1
  "use client";
2
2
 
3
3
  import * as React from "react";
4
- import { Group, Panel, Separator, GroupProps, PanelProps, SeparatorProps } from "react-resizable-panels";
4
+ import { GripVerticalIcon } from "lucide-react";
5
+ import * as ResizablePrimitive from "react-resizable-panels";
5
6
 
6
7
  import { cn } from "@/lib/utils";
7
8
 
8
- function ResizablePanelGroup({ className, ...props }: GroupProps) {
9
+ function ResizablePanelGroup({ className, ...props }: React.ComponentProps<typeof ResizablePrimitive.Group>) {
9
10
  return (
10
- <Group
11
+ <ResizablePrimitive.Group
11
12
  data-slot="resizable-panel-group"
12
- className={cn("flex h-full w-full data-[panel-group-direction=vertical]:flex-col", className)}
13
+ className={cn(
14
+ "flex h-full w-full",
15
+ // v4 uses aria-orientation instead of data-panel-group-direction
16
+ "aria-[orientation=vertical]:flex-col",
17
+ className,
18
+ )}
13
19
  {...props}
14
20
  />
15
21
  );
16
22
  }
17
23
 
18
- function ResizablePanel({ ...props }: PanelProps) {
19
- return <Panel data-slot="resizable-panel" {...props} />;
24
+ function ResizablePanel({ ...props }: React.ComponentProps<typeof ResizablePrimitive.Panel>) {
25
+ return <ResizablePrimitive.Panel data-slot="resizable-panel" {...props} />;
20
26
  }
21
27
 
22
28
  function ResizableHandle({
23
29
  withHandle,
24
30
  className,
25
31
  ...props
26
- }: SeparatorProps & {
32
+ }: React.ComponentProps<typeof ResizablePrimitive.Separator> & {
27
33
  withHandle?: boolean;
28
34
  }) {
29
35
  return (
30
- <Separator
36
+ <ResizablePrimitive.Separator
31
37
  data-slot="resizable-handle"
32
38
  className={cn(
33
- "bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90",
39
+ "bg-border relative flex items-center justify-center",
40
+ "focus-visible:ring-ring focus-visible:ring-1 focus-visible:ring-offset-1",
41
+ // v4: Separator aria-orientation is OPPOSITE of Group orientation
42
+ // Group horizontal → Separator vertical (vertical line between left/right panels)
43
+ // Group vertical → Separator horizontal (horizontal line between top/bottom panels)
44
+ "aria-[orientation=vertical]:h-full aria-[orientation=vertical]:w-px",
45
+ "aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full",
46
+ // Hit area for dragging (wider than visible line)
47
+ "after:absolute after:inset-y-0 after:left-1/2 after:w-3 after:-translate-x-1/2",
48
+ "aria-[orientation=vertical]:after:inset-y-0 aria-[orientation=vertical]:after:w-3",
49
+ "aria-[orientation=horizontal]:after:inset-x-0 aria-[orientation=horizontal]:after:h-3 aria-[orientation=horizontal]:after:inset-y-auto",
50
+ // Rotate grip icon for horizontal separator
51
+ "[&[aria-orientation=horizontal]>div]:rotate-90",
34
52
  className,
35
53
  )}
36
54
  {...props}
37
55
  >
38
- {withHandle && <div className="bg-border z-10 flex h-6 w-1 shrink-0 rounded-lg" />}
39
- </Separator>
56
+ {withHandle && (
57
+ <div className="bg-border z-10 flex h-4 w-3 items-center justify-center rounded-sm border">
58
+ <GripVerticalIcon className="size-2.5" />
59
+ </div>
60
+ )}
61
+ </ResizablePrimitive.Separator>
40
62
  );
41
63
  }
42
64
 
@@ -215,9 +215,10 @@ export async function JsonApiPost(params: {
215
215
  files?: { [key: string]: File | Blob } | File | Blob;
216
216
  language: string;
217
217
  responseType?: ApiRequestDataTypeInterface;
218
+ token?: string;
218
219
  }): Promise<ApiResponseInterface> {
219
220
  runBootstrapper();
220
- const token = await getToken();
221
+ const token = params.token ?? (await getToken());
221
222
 
222
223
  let body = params.body;
223
224
  if (!body) {
@@ -1,11 +0,0 @@
1
- declare enum AuthComponent {
2
- Login = 0,
3
- ForgotPassword = 1,
4
- ResetPassword = 2,
5
- ActivateAccount = 3,
6
- AcceptInvitation = 4,
7
- Register = 5,
8
- Landing = 6
9
- }
10
-
11
- export { AuthComponent as A };
@@ -1,11 +0,0 @@
1
- declare enum AuthComponent {
2
- Login = 0,
3
- ForgotPassword = 1,
4
- ResetPassword = 2,
5
- ActivateAccount = 3,
6
- AcceptInvitation = 4,
7
- Register = 5,
8
- Landing = 6
9
- }
10
-
11
- export { AuthComponent as A };
@@ -1,24 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
- var _chunkFM6WRAN5js = require('./chunk-FM6WRAN5.js');
12
- require('./chunk-7QVYU63E.js');
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
- exports.JsonApiDelete = _chunkFM6WRAN5js.JsonApiDelete; exports.JsonApiGet = _chunkFM6WRAN5js.JsonApiGet; exports.JsonApiPatch = _chunkFM6WRAN5js.JsonApiPatch; exports.JsonApiPost = _chunkFM6WRAN5js.JsonApiPost; exports.JsonApiPut = _chunkFM6WRAN5js.JsonApiPut; exports.configureJsonApi = _chunkFM6WRAN5js.configureJsonApi; exports.getApiUrl = _chunkFM6WRAN5js.getApiUrl; exports.getAppUrl = _chunkFM6WRAN5js.getAppUrl; exports.getTrackablePages = _chunkFM6WRAN5js.getTrackablePages;
24
- //# sourceMappingURL=JsonApiRequest-GR3L56A5.js.map