@carlonicora/nextjs-jsonapi 1.39.2 → 1.40.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 (84) hide show
  1. package/dist/{BlockNoteEditor-WQXQPLMX.js → BlockNoteEditor-4G3L3LSF.js} +14 -14
  2. package/dist/{BlockNoteEditor-WQXQPLMX.js.map → BlockNoteEditor-4G3L3LSF.js.map} +1 -1
  3. package/dist/{BlockNoteEditor-CITC7I2Z.mjs → BlockNoteEditor-EKY4AHVK.mjs} +4 -4
  4. package/dist/billing/index.js +346 -346
  5. package/dist/billing/index.mjs +3 -3
  6. package/dist/{chunk-LDH2FGJY.mjs → chunk-BAOP6PTD.mjs} +689 -34
  7. package/dist/chunk-BAOP6PTD.mjs.map +1 -0
  8. package/dist/{chunk-2RBYXY6T.js → chunk-GKY5DAIH.js} +1228 -573
  9. package/dist/chunk-GKY5DAIH.js.map +1 -0
  10. package/dist/{chunk-TQ5GRRTM.mjs → chunk-GVN7XC3U.mjs} +278 -2
  11. package/dist/chunk-GVN7XC3U.mjs.map +1 -0
  12. package/dist/{chunk-XLMJPA4N.mjs → chunk-RRIYLEY6.mjs} +22 -2
  13. package/dist/chunk-RRIYLEY6.mjs.map +1 -0
  14. package/dist/{chunk-2PHWAL6Q.js → chunk-T5YYOT4Z.js} +22 -2
  15. package/dist/chunk-T5YYOT4Z.js.map +1 -0
  16. package/dist/{chunk-3EZX4G2E.js → chunk-ZNGEVB5M.js} +279 -3
  17. package/dist/chunk-ZNGEVB5M.js.map +1 -0
  18. package/dist/client/index.js +4 -4
  19. package/dist/client/index.mjs +3 -3
  20. package/dist/components/index.d.mts +28 -4
  21. package/dist/components/index.d.ts +28 -4
  22. package/dist/components/index.js +16 -4
  23. package/dist/components/index.js.map +1 -1
  24. package/dist/components/index.mjs +15 -3
  25. package/dist/contexts/index.js +4 -4
  26. package/dist/contexts/index.mjs +3 -3
  27. package/dist/core/index.d.mts +127 -3
  28. package/dist/core/index.d.ts +127 -3
  29. package/dist/core/index.js +12 -2
  30. package/dist/core/index.js.map +1 -1
  31. package/dist/core/index.mjs +11 -1
  32. package/dist/index.d.mts +5 -2
  33. package/dist/index.d.ts +5 -2
  34. package/dist/index.js +17 -3
  35. package/dist/index.js.map +1 -1
  36. package/dist/index.mjs +16 -2
  37. package/dist/{s3.service-hnTPVTm2.d.mts → s3.service-BoOF5-ln.d.mts} +1 -0
  38. package/dist/{s3.service-DXkDoMf1.d.ts → s3.service-Mxo-7wQ6.d.ts} +1 -0
  39. package/dist/server/index.d.mts +1 -1
  40. package/dist/server/index.d.ts +1 -1
  41. package/dist/server/index.js +3 -3
  42. package/dist/server/index.mjs +1 -1
  43. package/dist/waitlist.config-kPfjImle.d.mts +26 -0
  44. package/dist/waitlist.config-kPfjImle.d.ts +26 -0
  45. package/package.json +1 -1
  46. package/src/components/forms/FormCheckbox.tsx +1 -1
  47. package/src/components/forms/FormSelect.tsx +1 -1
  48. package/src/components/index.ts +1 -0
  49. package/src/core/index.ts +3 -0
  50. package/src/core/registry/ModuleRegistry.ts +3 -0
  51. package/src/features/auth/components/forms/Register.tsx +180 -1
  52. package/src/features/auth/data/auth.interface.ts +1 -0
  53. package/src/features/auth/data/auth.ts +1 -0
  54. package/src/features/index.ts +1 -0
  55. package/src/features/waitlist/components/forms/WaitlistForm.tsx +186 -0
  56. package/src/features/waitlist/components/forms/WaitlistQuestionnaireRenderer.tsx +110 -0
  57. package/src/features/waitlist/components/forms/index.ts +2 -0
  58. package/src/features/waitlist/components/index.ts +3 -0
  59. package/src/features/waitlist/components/lists/WaitlistList.tsx +145 -0
  60. package/src/features/waitlist/components/lists/index.ts +1 -0
  61. package/src/features/waitlist/components/sections/WaitlistConfirmation.tsx +68 -0
  62. package/src/features/waitlist/components/sections/WaitlistHeroSection.tsx +49 -0
  63. package/src/features/waitlist/components/sections/WaitlistSuccessState.tsx +19 -0
  64. package/src/features/waitlist/components/sections/index.ts +3 -0
  65. package/src/features/waitlist/config/waitlist.config.ts +35 -0
  66. package/src/features/waitlist/data/Waitlist.ts +104 -0
  67. package/src/features/waitlist/data/WaitlistInterface.ts +32 -0
  68. package/src/features/waitlist/data/WaitlistService.ts +153 -0
  69. package/src/features/waitlist/data/index.ts +5 -0
  70. package/src/features/waitlist/data/waitlist-stats.interface.ts +9 -0
  71. package/src/features/waitlist/data/waitlist-stats.ts +47 -0
  72. package/src/features/waitlist/hooks/useWaitlistTableStructure.tsx +121 -0
  73. package/src/features/waitlist/index.ts +28 -0
  74. package/src/features/waitlist/waitlist-stats.module.ts +8 -0
  75. package/src/features/waitlist/waitlist.module.ts +9 -0
  76. package/src/index.ts +9 -0
  77. package/src/login/config.ts +9 -0
  78. package/dist/chunk-2PHWAL6Q.js.map +0 -1
  79. package/dist/chunk-2RBYXY6T.js.map +0 -1
  80. package/dist/chunk-3EZX4G2E.js.map +0 -1
  81. package/dist/chunk-LDH2FGJY.mjs.map +0 -1
  82. package/dist/chunk-TQ5GRRTM.mjs.map +0 -1
  83. package/dist/chunk-XLMJPA4N.mjs.map +0 -1
  84. /package/dist/{BlockNoteEditor-CITC7I2Z.mjs.map → BlockNoteEditor-EKY4AHVK.mjs.map} +0 -0
@@ -2289,6 +2289,7 @@ var Auth = class extends AbstractApiData {
2289
2289
  if (data.termsAcceptedAt !== void 0) response.data.attributes.termsAcceptedAt = data.termsAcceptedAt;
2290
2290
  if (data.marketingConsent !== void 0) response.data.attributes.marketingConsent = data.marketingConsent;
2291
2291
  if (data.marketingConsentAt !== void 0) response.data.attributes.marketingConsentAt = data.marketingConsentAt;
2292
+ if (data.inviteCode !== void 0) response.data.attributes.inviteCode = data.inviteCode;
2292
2293
  return response;
2293
2294
  }
2294
2295
  };
@@ -5390,6 +5391,276 @@ var OAUTH_SCOPE_DISPLAY = {
5390
5391
  var AVAILABLE_OAUTH_SCOPES = Object.values(OAUTH_SCOPE_DISPLAY);
5391
5392
  var DEFAULT_GRANT_TYPES = ["authorization_code", "refresh_token"];
5392
5393
 
5394
+ // src/features/waitlist/data/Waitlist.ts
5395
+ var Waitlist = class extends AbstractApiData {
5396
+ static {
5397
+ __name(this, "Waitlist");
5398
+ }
5399
+ _email;
5400
+ _gdprConsent = false;
5401
+ _gdprConsentAt;
5402
+ _marketingConsent;
5403
+ _marketingConsentAt;
5404
+ _questionnaire;
5405
+ _status = "pending";
5406
+ _confirmedAt;
5407
+ _invitedAt;
5408
+ _registeredAt;
5409
+ get email() {
5410
+ return this._email ?? "";
5411
+ }
5412
+ get gdprConsent() {
5413
+ return this._gdprConsent;
5414
+ }
5415
+ get gdprConsentAt() {
5416
+ return this._gdprConsentAt ?? "";
5417
+ }
5418
+ get marketingConsent() {
5419
+ return this._marketingConsent;
5420
+ }
5421
+ get marketingConsentAt() {
5422
+ return this._marketingConsentAt;
5423
+ }
5424
+ get questionnaire() {
5425
+ return this._questionnaire;
5426
+ }
5427
+ get status() {
5428
+ return this._status;
5429
+ }
5430
+ get confirmedAt() {
5431
+ return this._confirmedAt;
5432
+ }
5433
+ get invitedAt() {
5434
+ return this._invitedAt;
5435
+ }
5436
+ get registeredAt() {
5437
+ return this._registeredAt;
5438
+ }
5439
+ rehydrate(data) {
5440
+ super.rehydrate(data);
5441
+ this._email = data.jsonApi.attributes.email;
5442
+ this._gdprConsent = data.jsonApi.attributes.gdprConsent;
5443
+ this._gdprConsentAt = data.jsonApi.attributes.gdprConsentAt;
5444
+ this._marketingConsent = data.jsonApi.attributes.marketingConsent;
5445
+ this._marketingConsentAt = data.jsonApi.attributes.marketingConsentAt;
5446
+ this._questionnaire = data.jsonApi.attributes.questionnaire;
5447
+ this._status = data.jsonApi.attributes.status;
5448
+ this._confirmedAt = data.jsonApi.attributes.confirmedAt;
5449
+ this._invitedAt = data.jsonApi.attributes.invitedAt;
5450
+ this._registeredAt = data.jsonApi.attributes.registeredAt;
5451
+ return this;
5452
+ }
5453
+ createJsonApi(data) {
5454
+ const response = {
5455
+ data: {
5456
+ type: Modules.Waitlist.name,
5457
+ id: data.id,
5458
+ attributes: {
5459
+ email: data.email,
5460
+ gdprConsent: data.gdprConsent,
5461
+ gdprConsentAt: data.gdprConsentAt
5462
+ },
5463
+ meta: {},
5464
+ relationships: {}
5465
+ },
5466
+ included: []
5467
+ };
5468
+ if (data.marketingConsent !== void 0) {
5469
+ response.data.attributes.marketingConsent = data.marketingConsent;
5470
+ }
5471
+ if (data.marketingConsentAt !== void 0) {
5472
+ response.data.attributes.marketingConsentAt = data.marketingConsentAt;
5473
+ }
5474
+ if (data.questionnaire !== void 0) {
5475
+ response.data.attributes.questionnaire = JSON.stringify(data.questionnaire);
5476
+ }
5477
+ return response;
5478
+ }
5479
+ };
5480
+
5481
+ // src/features/waitlist/data/WaitlistService.ts
5482
+ var WaitlistService = class extends AbstractService {
5483
+ static {
5484
+ __name(this, "WaitlistService");
5485
+ }
5486
+ /**
5487
+ * Submit to waitlist (public)
5488
+ * Uses Waitlist.createJsonApi() to transform WaitlistInput to JSON:API format
5489
+ */
5490
+ static async submit(params) {
5491
+ return this.callApi({
5492
+ type: Modules.Waitlist,
5493
+ method: "POST" /* POST */,
5494
+ endpoint: new EndpointCreator({ endpoint: Modules.Waitlist }).generate(),
5495
+ input: params
5496
+ });
5497
+ }
5498
+ /**
5499
+ * Confirm email (public)
5500
+ */
5501
+ static async confirm(code) {
5502
+ const endpoint = new EndpointCreator({
5503
+ endpoint: Modules.Waitlist,
5504
+ childEndpoint: "confirm",
5505
+ childId: code
5506
+ });
5507
+ return this.callApi({
5508
+ type: Modules.Waitlist,
5509
+ method: "GET" /* GET */,
5510
+ endpoint: endpoint.generate()
5511
+ });
5512
+ }
5513
+ /**
5514
+ * List all waitlist entries (admin)
5515
+ * Uses cursor-based pagination with NextRef/PreviousRef
5516
+ */
5517
+ static async findMany(params) {
5518
+ const endpoint = new EndpointCreator({ endpoint: Modules.Waitlist });
5519
+ if (params?.status) endpoint.addAdditionalParam("status", params.status);
5520
+ if (params?.search) endpoint.addAdditionalParam("search", params.search);
5521
+ if (params?.fetchAll) endpoint.addAdditionalParam("fetchAll", "true");
5522
+ return this.callApi({
5523
+ type: Modules.Waitlist,
5524
+ method: "GET" /* GET */,
5525
+ endpoint: endpoint.generate(),
5526
+ next: params?.next,
5527
+ previous: params?.prev
5528
+ });
5529
+ }
5530
+ /**
5531
+ * Send invite (admin)
5532
+ */
5533
+ static async invite(id) {
5534
+ const endpoint = new EndpointCreator({
5535
+ endpoint: Modules.Waitlist,
5536
+ id,
5537
+ childEndpoint: "invite"
5538
+ });
5539
+ return this.callApi({
5540
+ type: Modules.Waitlist,
5541
+ method: "POST" /* POST */,
5542
+ endpoint: endpoint.generate()
5543
+ });
5544
+ }
5545
+ /**
5546
+ * Batch invite (admin)
5547
+ * Non-standard batch operation - uses custom JSON:API format
5548
+ */
5549
+ static async inviteBatch(ids) {
5550
+ const endpoint = new EndpointCreator({
5551
+ endpoint: Modules.Waitlist,
5552
+ childEndpoint: "invite-batch"
5553
+ });
5554
+ return this.callApi({
5555
+ type: Modules.Waitlist,
5556
+ method: "POST" /* POST */,
5557
+ endpoint: endpoint.generate(),
5558
+ input: {
5559
+ data: {
5560
+ type: "waitlist-batch-invites",
5561
+ attributes: { ids }
5562
+ }
5563
+ },
5564
+ overridesJsonApiCreation: true
5565
+ });
5566
+ }
5567
+ /**
5568
+ * Get statistics (admin)
5569
+ */
5570
+ static async getStats() {
5571
+ const endpoint = new EndpointCreator({
5572
+ endpoint: Modules.WaitlistStats
5573
+ });
5574
+ return this.callApi({
5575
+ type: Modules.WaitlistStats,
5576
+ method: "GET" /* GET */,
5577
+ endpoint: endpoint.generate()
5578
+ });
5579
+ }
5580
+ /**
5581
+ * Validate invite code (public) - calls auth endpoint
5582
+ */
5583
+ static async validateInvite(code) {
5584
+ console.log("[WaitlistService.validateInvite] Starting validation for code:", code);
5585
+ try {
5586
+ const endpoint = new EndpointCreator({
5587
+ endpoint: Modules.Waitlist,
5588
+ childEndpoint: "invite",
5589
+ childId: code
5590
+ });
5591
+ console.log("[WaitlistService.validateInvite] Calling endpoint:", endpoint.generate());
5592
+ const response = await this.callApiWithMeta({
5593
+ type: Modules.Auth,
5594
+ method: "GET" /* GET */,
5595
+ endpoint: endpoint.generate()
5596
+ });
5597
+ console.log("[WaitlistService.validateInvite] Response:", JSON.stringify(response));
5598
+ const attributes = response.data?._jsonApi?.attributes;
5599
+ console.log("[WaitlistService.validateInvite] Parsed attributes:", JSON.stringify(attributes));
5600
+ return {
5601
+ email: attributes?.email,
5602
+ valid: attributes?.valid ?? false
5603
+ };
5604
+ } catch (error) {
5605
+ console.error("[WaitlistService.validateInvite] Error:", error);
5606
+ return null;
5607
+ }
5608
+ }
5609
+ };
5610
+
5611
+ // src/features/waitlist/data/waitlist-stats.ts
5612
+ var WaitlistStats = class extends AbstractApiData {
5613
+ static {
5614
+ __name(this, "WaitlistStats");
5615
+ }
5616
+ _pending = 0;
5617
+ _confirmed = 0;
5618
+ _invited = 0;
5619
+ _registered = 0;
5620
+ _total = 0;
5621
+ get pending() {
5622
+ return this._pending;
5623
+ }
5624
+ get confirmed() {
5625
+ return this._confirmed;
5626
+ }
5627
+ get invited() {
5628
+ return this._invited;
5629
+ }
5630
+ get registered() {
5631
+ return this._registered;
5632
+ }
5633
+ get total() {
5634
+ return this._total;
5635
+ }
5636
+ rehydrate(data) {
5637
+ super.rehydrate(data);
5638
+ const attrs = data.jsonApi.attributes;
5639
+ this._pending = attrs.pending ?? 0;
5640
+ this._confirmed = attrs.confirmed ?? 0;
5641
+ this._invited = attrs.invited ?? 0;
5642
+ this._registered = attrs.registered ?? 0;
5643
+ this._total = attrs.total ?? 0;
5644
+ return this;
5645
+ }
5646
+ createJsonApi(_data) {
5647
+ throw new Error("WaitlistStats is read-only and cannot be created");
5648
+ }
5649
+ };
5650
+
5651
+ // src/features/waitlist/waitlist.module.ts
5652
+ var WaitlistModule = /* @__PURE__ */ __name((factory) => factory({
5653
+ name: "waitlists",
5654
+ pageUrl: "/waitlists",
5655
+ model: Waitlist
5656
+ }), "WaitlistModule");
5657
+
5658
+ // src/features/waitlist/waitlist-stats.module.ts
5659
+ var WaitlistStatsModule = /* @__PURE__ */ __name((factory) => factory({
5660
+ name: "waitlist-stats",
5661
+ model: WaitlistStats
5662
+ }), "WaitlistStatsModule");
5663
+
5393
5664
  export {
5394
5665
  RehydrationFactory,
5395
5666
  AbstractApiData,
@@ -5517,6 +5788,11 @@ export {
5517
5788
  OAuthService,
5518
5789
  OAUTH_SCOPE_DISPLAY,
5519
5790
  AVAILABLE_OAUTH_SCOPES,
5520
- DEFAULT_GRANT_TYPES
5791
+ DEFAULT_GRANT_TYPES,
5792
+ Waitlist,
5793
+ WaitlistService,
5794
+ WaitlistStats,
5795
+ WaitlistModule,
5796
+ WaitlistStatsModule
5521
5797
  };
5522
- //# sourceMappingURL=chunk-TQ5GRRTM.mjs.map
5798
+ //# sourceMappingURL=chunk-GVN7XC3U.mjs.map