@nocios/crudify-components 2.0.32 → 2.0.36
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/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/coverage-final.json +120 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +686 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/dist/{CrudiaMarkdownField-C54-A_J3.d.mts → CrudiaMarkdownField-Bxl08sRG.d.mts} +12 -7
- package/dist/{CrudiaMarkdownField-C8HQh7s5.d.ts → CrudiaMarkdownField-DUJNOOzP.d.ts} +12 -7
- package/dist/chunk-44VU4TSP.mjs +1 -0
- package/dist/chunk-4LMFQECS.js +1 -0
- package/dist/chunk-77UKXG5L.mjs +1 -0
- package/dist/{chunk-4VN5YRYZ.js → chunk-BXFEQ6KP.js} +1 -1
- package/dist/{chunk-6ONAT4QU.js → chunk-H6XXWDUT.js} +1 -1
- package/dist/chunk-NIRLP2TC.js +1 -0
- package/dist/chunk-O4FUHIQG.mjs +1 -0
- package/dist/chunk-QFACMV2I.mjs +1 -0
- package/dist/chunk-QZH3KSJZ.js +1 -0
- package/dist/{chunk-RJBX4MWF.mjs → chunk-WMLIOPUC.mjs} +1 -1
- package/dist/components.d.mts +1 -1
- package/dist/components.d.ts +1 -1
- package/dist/components.js +1 -1
- package/dist/components.mjs +1 -1
- package/dist/errorTranslation-D-Y7uNN_.d.mts +141 -0
- package/dist/errorTranslation-DDlAXpMl.d.ts +141 -0
- package/dist/hooks.d.mts +2 -2
- package/dist/hooks.d.ts +2 -2
- package/dist/hooks.js +1 -1
- package/dist/hooks.mjs +1 -1
- package/dist/{index-DY90WVQQ.d.mts → index-U--xRr8A.d.mts} +225 -191
- package/dist/{index-d1vE803G.d.ts → index-dXVRVcEB.d.ts} +225 -191
- package/dist/index.d.mts +175 -6
- package/dist/index.d.ts +175 -6
- package/dist/index.js +2 -2
- package/dist/index.mjs +1 -1
- package/dist/{errorTranslation-By5Av0tL.d.ts → tenantConfig-DqJqQkoR.d.mts} +116 -139
- package/dist/{errorTranslation-DeeDj7Vt.d.mts → tenantConfig-DqJqQkoR.d.ts} +116 -139
- package/dist/utils.d.mts +2 -2
- package/dist/utils.d.ts +2 -2
- package/dist/utils.js +1 -1
- package/dist/utils.mjs +1 -1
- package/package.json +1 -1
- package/coverage/.tmp/coverage-102.json +0 -1
- package/coverage/.tmp/coverage-103.json +0 -1
- package/coverage/.tmp/coverage-104.json +0 -1
- package/coverage/.tmp/coverage-105.json +0 -1
- package/coverage/.tmp/coverage-106.json +0 -1
- package/coverage/.tmp/coverage-107.json +0 -1
- package/dist/api-B4uXiHF0.d.mts +0 -118
- package/dist/api-B4uXiHF0.d.ts +0 -118
- package/dist/chunk-4ILUXVPW.mjs +0 -1
- package/dist/chunk-5XBTRBE5.js +0 -1
- package/dist/chunk-CR5KJUST.js +0 -1
- package/dist/chunk-H5M2Q6PB.mjs +0 -1
- package/dist/chunk-JAPL7EZJ.mjs +0 -1
- package/dist/chunk-L7GKP6XY.mjs +0 -1
- package/dist/chunk-NSV6ECYO.js +0 -1
- package/dist/chunk-PTUSZGL4.mjs +0 -1
- package/dist/chunk-T6R65ROU.js +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { U as UserProfile,
|
|
1
|
+
import { U as UserProfile, m as CrudifyRequestOptions, f as CrudifyApiResponse, o as TransactionInput, l as CrudifyOperationOptions } from './tenantConfig-DqJqQkoR.js';
|
|
2
2
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
3
|
import { ReactNode } from 'react';
|
|
4
|
-
import { b as NotificationSeverity } from './GlobalNotificationProvider-Zq18OkpI.js';
|
|
5
4
|
import { CrudifyResponse } from '@nocios/crudify-sdk';
|
|
5
|
+
import { b as NotificationSeverity } from './GlobalNotificationProvider-Zq18OkpI.js';
|
|
6
6
|
|
|
7
7
|
type TokenData = {
|
|
8
8
|
accessToken: string;
|
|
@@ -462,6 +462,199 @@ declare function useSessionContext(): SessionContextType;
|
|
|
462
462
|
*/
|
|
463
463
|
declare function SessionDebugInfo(): react_jsx_runtime.JSX.Element;
|
|
464
464
|
|
|
465
|
+
/**
|
|
466
|
+
* Individual file status
|
|
467
|
+
*/
|
|
468
|
+
type FileStatus = "pending" | "uploading" | "completed" | "error" | "removing" | "pendingDeletion";
|
|
469
|
+
/**
|
|
470
|
+
* Represents a file in the system
|
|
471
|
+
*/
|
|
472
|
+
interface FileItem {
|
|
473
|
+
/** Unique file ID (generated or from server) */
|
|
474
|
+
id: string;
|
|
475
|
+
/** Original file name */
|
|
476
|
+
name: string;
|
|
477
|
+
/** Size in bytes */
|
|
478
|
+
size: number;
|
|
479
|
+
/** MIME content type */
|
|
480
|
+
contentType: string;
|
|
481
|
+
/** Current file status */
|
|
482
|
+
status: FileStatus;
|
|
483
|
+
/** Upload progress (0-100) */
|
|
484
|
+
progress: number;
|
|
485
|
+
/**
|
|
486
|
+
* Relative file path (includes visibility)
|
|
487
|
+
* Format: "public/path/file.ext" or "private/path/file.ext"
|
|
488
|
+
*/
|
|
489
|
+
filePath?: string;
|
|
490
|
+
/**
|
|
491
|
+
* File visibility
|
|
492
|
+
* Extracted from filePath for convenience
|
|
493
|
+
*/
|
|
494
|
+
visibility?: "public" | "private";
|
|
495
|
+
/** Public URL for public files */
|
|
496
|
+
publicUrl?: string;
|
|
497
|
+
/** Preview URL (for images) */
|
|
498
|
+
previewUrl?: string;
|
|
499
|
+
/** Error message if failed */
|
|
500
|
+
errorMessage?: string;
|
|
501
|
+
/** Creation timestamp */
|
|
502
|
+
createdAt: number;
|
|
503
|
+
/** Original file (only during upload) */
|
|
504
|
+
file?: File;
|
|
505
|
+
/** Whether this file existed before (was loaded from server) */
|
|
506
|
+
isExisting?: boolean;
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* Hook configuration
|
|
510
|
+
*/
|
|
511
|
+
interface UseFileUploadOptions {
|
|
512
|
+
/** Allowed MIME types (e.g., ["image/png", "image/jpeg", "application/pdf"]) */
|
|
513
|
+
acceptedTypes?: string[];
|
|
514
|
+
/** Maximum file size in bytes (default: 10MB) */
|
|
515
|
+
maxFileSize?: number;
|
|
516
|
+
/** Maximum number of files (undefined = no limit) */
|
|
517
|
+
maxFiles?: number;
|
|
518
|
+
/** Minimum number of required files (default: 0) */
|
|
519
|
+
minFiles?: number;
|
|
520
|
+
/**
|
|
521
|
+
* Visibility of uploaded files
|
|
522
|
+
* @default "private"
|
|
523
|
+
*/
|
|
524
|
+
visibility?: "public" | "private";
|
|
525
|
+
/** Callback when an upload completes successfully */
|
|
526
|
+
onUploadComplete?: (file: FileItem) => void;
|
|
527
|
+
/** Callback when an upload fails */
|
|
528
|
+
onUploadError?: (file: FileItem, error: string) => void;
|
|
529
|
+
/** Callback when a file is removed */
|
|
530
|
+
onFileRemoved?: (file: FileItem) => void;
|
|
531
|
+
/** Callback when the file list changes */
|
|
532
|
+
onFilesChange?: (files: FileItem[]) => void;
|
|
533
|
+
/** Form mode: 'create' or 'edit' - affects delete behavior */
|
|
534
|
+
mode?: "create" | "edit";
|
|
535
|
+
}
|
|
536
|
+
/**
|
|
537
|
+
* Hook return type
|
|
538
|
+
*/
|
|
539
|
+
interface UseFileUploadReturn {
|
|
540
|
+
/** Current file list */
|
|
541
|
+
files: FileItem[];
|
|
542
|
+
/** Active files (excluding pendingDeletion) */
|
|
543
|
+
activeFiles: FileItem[];
|
|
544
|
+
/** Count of active files */
|
|
545
|
+
activeFileCount: number;
|
|
546
|
+
/** Whether uploads are in progress */
|
|
547
|
+
isUploading: boolean;
|
|
548
|
+
/** Number of pending uploads */
|
|
549
|
+
pendingCount: number;
|
|
550
|
+
/** Add files (triggers automatic upload) */
|
|
551
|
+
addFiles: (files: FileList | File[]) => Promise<void>;
|
|
552
|
+
/** Remove a file - returns whether confirmation is needed */
|
|
553
|
+
removeFile: (fileId: string) => Promise<{
|
|
554
|
+
needsConfirmation: boolean;
|
|
555
|
+
isExisting: boolean;
|
|
556
|
+
}>;
|
|
557
|
+
/** Delete a file immediately from server (for new files or create mode) */
|
|
558
|
+
deleteFileImmediately: (fileId: string) => Promise<{
|
|
559
|
+
success: boolean;
|
|
560
|
+
error?: string;
|
|
561
|
+
}>;
|
|
562
|
+
/** Restore a file that was marked for deletion */
|
|
563
|
+
restoreFile: (fileId: string) => boolean;
|
|
564
|
+
/** Clear all files */
|
|
565
|
+
clearFiles: () => void;
|
|
566
|
+
/** Retry upload for a failed file */
|
|
567
|
+
retryUpload: (fileId: string) => Promise<void>;
|
|
568
|
+
/** Validate if minimum requirements are met */
|
|
569
|
+
isValid: boolean;
|
|
570
|
+
/** Validation error message (i18n key) */
|
|
571
|
+
validationError: string | null;
|
|
572
|
+
/** Validation error i18n key */
|
|
573
|
+
validationErrorKey: string | null;
|
|
574
|
+
/** Validation error params for i18n interpolation */
|
|
575
|
+
validationErrorParams: Record<string, string | number>;
|
|
576
|
+
/** Wait for all uploads to complete and return completed file paths */
|
|
577
|
+
waitForUploads: () => Promise<string[]>;
|
|
578
|
+
/**
|
|
579
|
+
* Completed file paths (for saving in form)
|
|
580
|
+
* Relative paths with visibility - subscriberKey is added in backend
|
|
581
|
+
*/
|
|
582
|
+
completedFilePaths: string[];
|
|
583
|
+
/** Initialize with existing files (for editing) */
|
|
584
|
+
initializeFiles: (existingFiles: Array<{
|
|
585
|
+
filePath: string;
|
|
586
|
+
name: string;
|
|
587
|
+
size?: number;
|
|
588
|
+
contentType?: string;
|
|
589
|
+
}>, baseUrl?: string) => void;
|
|
590
|
+
/** Whether the user has interacted with the field */
|
|
591
|
+
isTouched: boolean;
|
|
592
|
+
/** Mark the field as touched (to show validation errors) */
|
|
593
|
+
markAsTouched: () => void;
|
|
594
|
+
/** Whether the form has been submitted */
|
|
595
|
+
isSubmitted: boolean;
|
|
596
|
+
/** Mark the form as submitted (to show all validation errors) */
|
|
597
|
+
markAsSubmitted: () => void;
|
|
598
|
+
/**
|
|
599
|
+
* Get URL for file preview
|
|
600
|
+
* - Public: returns publicUrl directly
|
|
601
|
+
* - Private: requests signed URL from backend
|
|
602
|
+
*/
|
|
603
|
+
getPreviewUrl: (fileId: string) => Promise<string | null>;
|
|
604
|
+
/** List of file IDs pending deletion */
|
|
605
|
+
pendingDeletions: string[];
|
|
606
|
+
/** Whether there are files pending deletion */
|
|
607
|
+
hasPendingDeletions: boolean;
|
|
608
|
+
/** Execute all pending deletions (call this on form submit) */
|
|
609
|
+
commitDeletions: () => Promise<{
|
|
610
|
+
success: boolean;
|
|
611
|
+
errors: string[];
|
|
612
|
+
}>;
|
|
613
|
+
/** Cancel all pending deletions and restore files */
|
|
614
|
+
restorePendingDeletions: () => void;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
/**
|
|
618
|
+
* Complete hook for file handling with:
|
|
619
|
+
* - Progressive upload to S3 with pre-signed URLs
|
|
620
|
+
* - Per-file progress tracking
|
|
621
|
+
* - Type and size validation
|
|
622
|
+
* - Soft delete (disableFile)
|
|
623
|
+
* - Multiple file support
|
|
624
|
+
*/
|
|
625
|
+
|
|
626
|
+
/**
|
|
627
|
+
* Hook for complete file handling with S3 upload
|
|
628
|
+
*
|
|
629
|
+
* @example
|
|
630
|
+
* ```tsx
|
|
631
|
+
* const {
|
|
632
|
+
* files,
|
|
633
|
+
* addFiles,
|
|
634
|
+
* removeFile,
|
|
635
|
+
* isUploading,
|
|
636
|
+
* isValid,
|
|
637
|
+
* completedS3Keys
|
|
638
|
+
* } = useFileUpload({
|
|
639
|
+
* acceptedTypes: ["image/png", "image/jpeg", "application/pdf"],
|
|
640
|
+
* maxFileSize: 5 * 1024 * 1024, // 5MB
|
|
641
|
+
* maxFiles: 3,
|
|
642
|
+
* minFiles: 1
|
|
643
|
+
* });
|
|
644
|
+
*
|
|
645
|
+
* // In form submit
|
|
646
|
+
* const handleSubmit = async () => {
|
|
647
|
+
* await waitForUploads(); // Wait for pending uploads
|
|
648
|
+
* if (!isValid) return;
|
|
649
|
+
*
|
|
650
|
+
* await crudify.createItem("documents", {
|
|
651
|
+
* files: completedS3Keys
|
|
652
|
+
* });
|
|
653
|
+
* };
|
|
654
|
+
* ```
|
|
655
|
+
*/
|
|
656
|
+
declare const useFileUpload: (options?: UseFileUploadOptions) => UseFileUploadReturn;
|
|
657
|
+
|
|
465
658
|
/**
|
|
466
659
|
* Complete user data structure (compatible con legacy)
|
|
467
660
|
*/
|
|
@@ -651,202 +844,20 @@ interface UseUserProfileReturn {
|
|
|
651
844
|
declare const useUserProfile: (options?: UseUserProfileOptions) => UseUserProfileReturn;
|
|
652
845
|
|
|
653
846
|
/**
|
|
654
|
-
*
|
|
655
|
-
* - Progressive upload to S3 with pre-signed URLs
|
|
656
|
-
* - Per-file progress tracking
|
|
657
|
-
* - Type and size validation
|
|
658
|
-
* - Soft delete (disableFile)
|
|
659
|
-
* - Multiple file support
|
|
660
|
-
*/
|
|
661
|
-
/**
|
|
662
|
-
* Individual file status
|
|
663
|
-
*/
|
|
664
|
-
type FileStatus = "pending" | "uploading" | "completed" | "error" | "removing" | "pendingDeletion";
|
|
665
|
-
/**
|
|
666
|
-
* Represents a file in the system
|
|
667
|
-
*/
|
|
668
|
-
interface FileItem {
|
|
669
|
-
/** Unique file ID (generated or from server) */
|
|
670
|
-
id: string;
|
|
671
|
-
/** Original file name */
|
|
672
|
-
name: string;
|
|
673
|
-
/** Size in bytes */
|
|
674
|
-
size: number;
|
|
675
|
-
/** MIME content type */
|
|
676
|
-
contentType: string;
|
|
677
|
-
/** Current file status */
|
|
678
|
-
status: FileStatus;
|
|
679
|
-
/** Upload progress (0-100) */
|
|
680
|
-
progress: number;
|
|
681
|
-
/**
|
|
682
|
-
* Relative file path (includes visibility)
|
|
683
|
-
* Format: "public/path/file.ext" or "private/path/file.ext"
|
|
684
|
-
*/
|
|
685
|
-
filePath?: string;
|
|
686
|
-
/**
|
|
687
|
-
* File visibility
|
|
688
|
-
* Extracted from filePath for convenience
|
|
689
|
-
*/
|
|
690
|
-
visibility?: "public" | "private";
|
|
691
|
-
/** Public URL for public files */
|
|
692
|
-
publicUrl?: string;
|
|
693
|
-
/** Preview URL (for images) */
|
|
694
|
-
previewUrl?: string;
|
|
695
|
-
/** Error message if failed */
|
|
696
|
-
errorMessage?: string;
|
|
697
|
-
/** Creation timestamp */
|
|
698
|
-
createdAt: number;
|
|
699
|
-
/** Original file (only during upload) */
|
|
700
|
-
file?: File;
|
|
701
|
-
/** Whether this file existed before (was loaded from server) */
|
|
702
|
-
isExisting?: boolean;
|
|
703
|
-
}
|
|
704
|
-
/**
|
|
705
|
-
* Hook configuration
|
|
847
|
+
* Types and interfaces for useCrudifyWithNotifications
|
|
706
848
|
*/
|
|
707
|
-
|
|
708
|
-
/** Allowed MIME types (e.g., ["image/png", "image/jpeg", "application/pdf"]) */
|
|
709
|
-
acceptedTypes?: string[];
|
|
710
|
-
/** Maximum file size in bytes (default: 10MB) */
|
|
711
|
-
maxFileSize?: number;
|
|
712
|
-
/** Maximum number of files (undefined = no limit) */
|
|
713
|
-
maxFiles?: number;
|
|
714
|
-
/** Minimum number of required files (default: 0) */
|
|
715
|
-
minFiles?: number;
|
|
716
|
-
/**
|
|
717
|
-
* Visibility of uploaded files
|
|
718
|
-
* @default "private"
|
|
719
|
-
*/
|
|
720
|
-
visibility?: "public" | "private";
|
|
721
|
-
/** Callback when an upload completes successfully */
|
|
722
|
-
onUploadComplete?: (file: FileItem) => void;
|
|
723
|
-
/** Callback when an upload fails */
|
|
724
|
-
onUploadError?: (file: FileItem, error: string) => void;
|
|
725
|
-
/** Callback when a file is removed */
|
|
726
|
-
onFileRemoved?: (file: FileItem) => void;
|
|
727
|
-
/** Callback when the file list changes */
|
|
728
|
-
onFilesChange?: (files: FileItem[]) => void;
|
|
729
|
-
/** Form mode: 'create' or 'edit' - affects delete behavior */
|
|
730
|
-
mode?: "create" | "edit";
|
|
731
|
-
}
|
|
732
|
-
/**
|
|
733
|
-
* Hook return type
|
|
734
|
-
*/
|
|
735
|
-
interface UseFileUploadReturn {
|
|
736
|
-
/** Current file list */
|
|
737
|
-
files: FileItem[];
|
|
738
|
-
/** Active files (excluding pendingDeletion) */
|
|
739
|
-
activeFiles: FileItem[];
|
|
740
|
-
/** Count of active files */
|
|
741
|
-
activeFileCount: number;
|
|
742
|
-
/** Whether uploads are in progress */
|
|
743
|
-
isUploading: boolean;
|
|
744
|
-
/** Number of pending uploads */
|
|
745
|
-
pendingCount: number;
|
|
746
|
-
/** Add files (triggers automatic upload) */
|
|
747
|
-
addFiles: (files: FileList | File[]) => Promise<void>;
|
|
748
|
-
/** Remove a file - returns whether confirmation is needed */
|
|
749
|
-
removeFile: (fileId: string) => Promise<{
|
|
750
|
-
needsConfirmation: boolean;
|
|
751
|
-
isExisting: boolean;
|
|
752
|
-
}>;
|
|
753
|
-
/** Delete a file immediately from server (for new files or create mode) */
|
|
754
|
-
deleteFileImmediately: (fileId: string) => Promise<{
|
|
755
|
-
success: boolean;
|
|
756
|
-
error?: string;
|
|
757
|
-
}>;
|
|
758
|
-
/** Restore a file that was marked for deletion */
|
|
759
|
-
restoreFile: (fileId: string) => boolean;
|
|
760
|
-
/** Clear all files */
|
|
761
|
-
clearFiles: () => void;
|
|
762
|
-
/** Retry upload for a failed file */
|
|
763
|
-
retryUpload: (fileId: string) => Promise<void>;
|
|
764
|
-
/** Validate if minimum requirements are met */
|
|
765
|
-
isValid: boolean;
|
|
766
|
-
/** Validation error message (i18n key) */
|
|
767
|
-
validationError: string | null;
|
|
768
|
-
/** Validation error i18n key */
|
|
769
|
-
validationErrorKey: string | null;
|
|
770
|
-
/** Validation error params for i18n interpolation */
|
|
771
|
-
validationErrorParams: Record<string, string | number>;
|
|
772
|
-
/** Wait for all uploads to complete and return completed file paths */
|
|
773
|
-
waitForUploads: () => Promise<string[]>;
|
|
774
|
-
/**
|
|
775
|
-
* Completed file paths (for saving in form)
|
|
776
|
-
* Relative paths with visibility - subscriberKey is added in backend
|
|
777
|
-
*/
|
|
778
|
-
completedFilePaths: string[];
|
|
779
|
-
/** Initialize with existing files (for editing) */
|
|
780
|
-
initializeFiles: (existingFiles: Array<{
|
|
781
|
-
filePath: string;
|
|
782
|
-
name: string;
|
|
783
|
-
size?: number;
|
|
784
|
-
contentType?: string;
|
|
785
|
-
}>, baseUrl?: string) => void;
|
|
786
|
-
/** Whether the user has interacted with the field */
|
|
787
|
-
isTouched: boolean;
|
|
788
|
-
/** Mark the field as touched (to show validation errors) */
|
|
789
|
-
markAsTouched: () => void;
|
|
790
|
-
/** Whether the form has been submitted */
|
|
791
|
-
isSubmitted: boolean;
|
|
792
|
-
/** Mark the form as submitted (to show all validation errors) */
|
|
793
|
-
markAsSubmitted: () => void;
|
|
794
|
-
/**
|
|
795
|
-
* Get URL for file preview
|
|
796
|
-
* - Public: returns publicUrl directly
|
|
797
|
-
* - Private: requests signed URL from backend
|
|
798
|
-
*/
|
|
799
|
-
getPreviewUrl: (fileId: string) => Promise<string | null>;
|
|
800
|
-
/** List of file IDs pending deletion */
|
|
801
|
-
pendingDeletions: string[];
|
|
802
|
-
/** Whether there are files pending deletion */
|
|
803
|
-
hasPendingDeletions: boolean;
|
|
804
|
-
/** Execute all pending deletions (call this on form submit) */
|
|
805
|
-
commitDeletions: () => Promise<{
|
|
806
|
-
success: boolean;
|
|
807
|
-
errors: string[];
|
|
808
|
-
}>;
|
|
809
|
-
/** Cancel all pending deletions and restore files */
|
|
810
|
-
restorePendingDeletions: () => void;
|
|
811
|
-
}
|
|
849
|
+
|
|
812
850
|
/**
|
|
813
|
-
*
|
|
814
|
-
*
|
|
815
|
-
* @example
|
|
816
|
-
* ```tsx
|
|
817
|
-
* const {
|
|
818
|
-
* files,
|
|
819
|
-
* addFiles,
|
|
820
|
-
* removeFile,
|
|
821
|
-
* isUploading,
|
|
822
|
-
* isValid,
|
|
823
|
-
* completedS3Keys
|
|
824
|
-
* } = useFileUpload({
|
|
825
|
-
* acceptedTypes: ["image/png", "image/jpeg", "application/pdf"],
|
|
826
|
-
* maxFileSize: 5 * 1024 * 1024, // 5MB
|
|
827
|
-
* maxFiles: 3,
|
|
828
|
-
* minFiles: 1
|
|
829
|
-
* });
|
|
830
|
-
*
|
|
831
|
-
* // In form submit
|
|
832
|
-
* const handleSubmit = async () => {
|
|
833
|
-
* await waitForUploads(); // Wait for pending uploads
|
|
834
|
-
* if (!isValid) return;
|
|
835
|
-
*
|
|
836
|
-
* await crudify.createItem("documents", {
|
|
837
|
-
* files: completedS3Keys
|
|
838
|
-
* });
|
|
839
|
-
* };
|
|
840
|
-
* ```
|
|
851
|
+
* App structure action configuration
|
|
841
852
|
*/
|
|
842
|
-
declare const useFileUpload: (options?: UseFileUploadOptions) => UseFileUploadReturn;
|
|
843
|
-
|
|
844
|
-
/** App structure action configuration */
|
|
845
853
|
interface AppStructureAction {
|
|
846
854
|
key: string;
|
|
847
855
|
moduleKey?: string;
|
|
848
856
|
[key: string]: unknown;
|
|
849
857
|
}
|
|
858
|
+
/**
|
|
859
|
+
* Options for the useCrudifyWithNotifications hook
|
|
860
|
+
*/
|
|
850
861
|
interface CrudifyWithNotificationsOptions {
|
|
851
862
|
showSuccessNotifications?: boolean;
|
|
852
863
|
showErrorNotifications?: boolean;
|
|
@@ -856,6 +867,29 @@ interface CrudifyWithNotificationsOptions {
|
|
|
856
867
|
appStructure?: AppStructureAction[];
|
|
857
868
|
translateFn?: (key: string, options?: Record<string, unknown>) => string;
|
|
858
869
|
}
|
|
870
|
+
|
|
871
|
+
/**
|
|
872
|
+
* Notification filtering utilities
|
|
873
|
+
*
|
|
874
|
+
* Determines when and which notifications should be shown
|
|
875
|
+
*/
|
|
876
|
+
|
|
877
|
+
/**
|
|
878
|
+
* Determines if a notification should be shown for a given response
|
|
879
|
+
*
|
|
880
|
+
* Returns false for:
|
|
881
|
+
* - Field validation errors (these go to form validation)
|
|
882
|
+
* - ONE_OR_MORE_OPERATIONS_FAILED (generic transaction error)
|
|
883
|
+
* - TOO_MANY_REQUESTS (handled by forms)
|
|
884
|
+
*/
|
|
885
|
+
declare function shouldShowNotification(response: CrudifyResponse): boolean;
|
|
886
|
+
|
|
887
|
+
/**
|
|
888
|
+
* Hook that wraps crudify SDK operations with automatic notifications
|
|
889
|
+
*
|
|
890
|
+
* @param options - Configuration options
|
|
891
|
+
* @returns Object with wrapped CRUD operations and utility functions
|
|
892
|
+
*/
|
|
859
893
|
declare const useCrudifyWithNotifications: (options?: CrudifyWithNotificationsOptions) => {
|
|
860
894
|
createItem: (moduleKey: string, data: object, options?: CrudifyOperationOptions) => Promise<CrudifyResponse>;
|
|
861
895
|
updateItem: (moduleKey: string, data: object, options?: CrudifyOperationOptions) => Promise<CrudifyResponse>;
|
|
@@ -866,7 +900,7 @@ declare const useCrudifyWithNotifications: (options?: CrudifyWithNotificationsOp
|
|
|
866
900
|
handleResponse: (response: CrudifyResponse, successMessage?: string) => CrudifyResponse;
|
|
867
901
|
getErrorMessage: (response: CrudifyResponse) => string;
|
|
868
902
|
getErrorSeverity: (response: CrudifyResponse) => NotificationSeverity;
|
|
869
|
-
shouldShowNotification:
|
|
903
|
+
shouldShowNotification: typeof shouldShowNotification;
|
|
870
904
|
};
|
|
871
905
|
|
|
872
906
|
export { type FileItem as F, type LoginResult as L, type NotificationOptions as N, SessionManager as S, TokenStorage as T, type UseSessionOptions as U, type SessionConfig as a, type TokenData as b, type StorageType as c, type SessionState as d, SessionProvider as e, useSessionContext as f, SessionDebugInfo as g, type SessionProviderProps as h, useUserData as i, type UseUserDataReturn as j, type UseUserDataOptions as k, type UserData as l, useAuth as m, type UseAuthReturn as n, useData as o, type UseDataReturn as p, useUserProfile as q, useFileUpload as r, type UseFileUploadOptions as s, type UseFileUploadReturn as t, useSession as u, type FileStatus as v, useCrudifyWithNotifications as w };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import crudify__default from '@nocios/crudify-sdk';
|
|
2
2
|
export * from '@nocios/crudify-sdk';
|
|
3
3
|
export { default as crudify } from '@nocios/crudify-sdk';
|
|
4
|
-
import { d as CrudifyLoginConfig, l as PasswordRule, E as EvaluatedPasswordRule } from './CrudiaMarkdownField-
|
|
5
|
-
export { B as BoxScreenType, a as CrudiaAutoGenerate, i as CrudiaAutoGenerateProps, b as CrudiaFileField, o as CrudiaFileFieldDeletionHandlers, j as CrudiaFileFieldProps, c as CrudiaMarkdownField, k as CrudiaMarkdownFieldProps, C as CrudifyLogin, e as CrudifyLoginProps, f as CrudifyLoginTranslations, D as DEFAULT_PASSWORD_RULES, L as LoginComponent, m as POLICY_ACTIONS, n as PREFERRED_POLICY_ORDER, p as PasswordRuleType, P as Policies, h as PolicyAction, S as SessionStatus, g as UserLoginData, U as UserProfileDisplay } from './CrudiaMarkdownField-
|
|
4
|
+
import { d as CrudifyLoginConfig, l as PasswordRule, E as EvaluatedPasswordRule } from './CrudiaMarkdownField-Bxl08sRG.mjs';
|
|
5
|
+
export { B as BoxScreenType, a as CrudiaAutoGenerate, i as CrudiaAutoGenerateProps, b as CrudiaFileField, o as CrudiaFileFieldDeletionHandlers, j as CrudiaFileFieldProps, c as CrudiaMarkdownField, k as CrudiaMarkdownFieldProps, C as CrudifyLogin, e as CrudifyLoginProps, f as CrudifyLoginTranslations, D as DEFAULT_PASSWORD_RULES, L as LoginComponent, m as POLICY_ACTIONS, n as PREFERRED_POLICY_ORDER, p as PasswordRuleType, P as Policies, h as PolicyAction, S as SessionStatus, g as UserLoginData, U as UserProfileDisplay } from './CrudiaMarkdownField-Bxl08sRG.mjs';
|
|
6
6
|
import React, { ReactNode } from 'react';
|
|
7
|
-
export { A as ApiError,
|
|
8
|
-
export { F as FileItem, v as FileStatus, L as LoginResult, N as NotificationOptions, a as SessionConfig, g as SessionDebugInfo, S as SessionManager, e as SessionProvider, h as SessionProviderProps, d as SessionState, c as StorageType, b as TokenData, T as TokenStorage, n as UseAuthReturn, p as UseDataReturn, s as UseFileUploadOptions, t as UseFileUploadReturn, U as UseSessionOptions, k as UseUserDataOptions, j as UseUserDataReturn, l as UserData, m as useAuth, w as useCrudifyWithNotifications, o as useData, r as useFileUpload, u as useSession, f as useSessionContext, i as useUserData, q as useUserProfile } from './index-
|
|
7
|
+
export { A as ApiError, f as CrudifyApiResponse, e as CrudifyEnvironment, l as CrudifyOperationOptions, m as CrudifyRequestOptions, g as CrudifyTransactionResponse, F as ForgotPasswordRequest, J as JwtPayload, i as LoginRequest, L as LoginResponse, j as ResetPasswordRequest, R as ResolvedTenantConfig, T as TenantConfig, a as TenantConfigOptions, o as TransactionInput, n as TransactionOperation, h as TransactionResponseData, U as UserProfile, V as ValidateCodeRequest, k as ValidationError, r as resolveTenantConfig, u as useTenantConfig } from './tenantConfig-DqJqQkoR.mjs';
|
|
8
|
+
export { F as FileItem, v as FileStatus, L as LoginResult, N as NotificationOptions, a as SessionConfig, g as SessionDebugInfo, S as SessionManager, e as SessionProvider, h as SessionProviderProps, d as SessionState, c as StorageType, b as TokenData, T as TokenStorage, n as UseAuthReturn, p as UseDataReturn, s as UseFileUploadOptions, t as UseFileUploadReturn, U as UseSessionOptions, k as UseUserDataOptions, j as UseUserDataReturn, l as UserData, m as useAuth, w as useCrudifyWithNotifications, o as useData, r as useFileUpload, u as useSession, f as useSessionContext, i as useUserData, q as useUserProfile } from './index-U--xRr8A.mjs';
|
|
9
9
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
10
10
|
import { ThemeOptions } from '@mui/material';
|
|
11
11
|
export { A as AutoGenerateConfig, G as GlobalNotificationProvider, a as GlobalNotificationProviderProps, N as Notification, b as NotificationSeverity, d as UseAutoGenerateOptions, U as UseAutoGenerateReturn, c as useAutoGenerate, u as useGlobalNotification } from './GlobalNotificationProvider-Zq18OkpI.mjs';
|
|
12
|
-
export {
|
|
12
|
+
export { E as ERROR_CODES, f as ERROR_SEVERITY_MAP, m as ErrorCode, n as ErrorSeverity, o as ErrorTranslationConfig, P as ParsedError, l as createErrorTranslator, d as decodeJwtSafely, g as getCurrentUserEmail, e as getErrorMessage, h as handleCrudifyError, i as isTokenExpired, p as parseApiError, c as parseJavaScriptError, b as parseTransactionError, a as secureLocalStorage, s as secureSessionStorage, k as translateError, t as translateErrorCode, j as translateErrorCodes } from './errorTranslation-D-Y7uNN_.mjs';
|
|
13
13
|
import { ApiResponse, IModule, ModuleCreateInput, ModuleEditInput, ActionListFilters, IAction, ActionCreateInput, ActionEditInput, UpdateActionsProfilesInput, UpdateActionsProfilesResponse, CalculatePermissionsInput, CalculatePermissionsResponse } from '@nocios/crudify-admin-sdk';
|
|
14
14
|
export { ActionCreateInput, ActionEditInput, ActionListFilters, ApiResponse, IAction, IModule, ModuleCreateInput, ModuleEditInput, UpdateActionsProfilesInput, UpdateActionsProfilesResponse } from '@nocios/crudify-admin-sdk';
|
|
15
15
|
|
|
@@ -1123,7 +1123,176 @@ declare const CRITICAL_TRANSLATIONS: {
|
|
|
1123
1123
|
readonly "users.moduleName": "Usuarios";
|
|
1124
1124
|
readonly "users.moduleSingular": "Usuario";
|
|
1125
1125
|
};
|
|
1126
|
-
readonly en: {
|
|
1126
|
+
readonly en: {
|
|
1127
|
+
readonly "base.actions.create": "New";
|
|
1128
|
+
readonly "base.actions.delete": "Delete";
|
|
1129
|
+
readonly "base.actions.read": "View";
|
|
1130
|
+
readonly "base.actions.refresh": "Refresh";
|
|
1131
|
+
readonly "base.actions.update": "Edit";
|
|
1132
|
+
readonly "base.btn.back": "Back";
|
|
1133
|
+
readonly "base.btn.cancel": "Cancel";
|
|
1134
|
+
readonly "base.btn.hidePassword": "Hide password";
|
|
1135
|
+
readonly "base.btn.showPassword": "Show password";
|
|
1136
|
+
readonly "base.errors.errorUnknown": "An unknown error occurred.";
|
|
1137
|
+
readonly "base.fields.actions": "Actions";
|
|
1138
|
+
readonly "base.fields.confirmPassword": "Confirm password";
|
|
1139
|
+
readonly "base.fields.createdAt": "Created at";
|
|
1140
|
+
readonly "base.fields.email": "Email";
|
|
1141
|
+
readonly "base.fields.lastName": "Last name";
|
|
1142
|
+
readonly "base.fields.name": "Name";
|
|
1143
|
+
readonly "base.fields.password": "Password";
|
|
1144
|
+
readonly "base.fields.profile": "Profile";
|
|
1145
|
+
readonly "base.fields.updatedAt": "Updated at";
|
|
1146
|
+
readonly "base.file.allowedTypes": "Allowed types: {{types}}";
|
|
1147
|
+
readonly "base.file.clickToDownload": "Click to download";
|
|
1148
|
+
readonly "base.file.clickToPreview": "Click to preview image";
|
|
1149
|
+
readonly "base.file.confirmDelete.cancel": "Cancel";
|
|
1150
|
+
readonly "base.file.confirmDelete.confirm": "Delete";
|
|
1151
|
+
readonly "base.file.confirmDelete.message": "Are you sure you want to delete this file? This action cannot be undone.";
|
|
1152
|
+
readonly "base.file.confirmDelete.title": "Delete file";
|
|
1153
|
+
readonly "base.file.delete": "Delete";
|
|
1154
|
+
readonly "base.file.deleting": "Deleting...";
|
|
1155
|
+
readonly "base.file.dragOrClick": "Drag files here or click to select";
|
|
1156
|
+
readonly "base.file.dropHere": "Drop file here";
|
|
1157
|
+
readonly "base.file.maxFiles": "Maximum {{count}} files";
|
|
1158
|
+
readonly "base.file.maxSize": "Maximum {{size}} per file";
|
|
1159
|
+
readonly "base.file.noPreview": "No preview";
|
|
1160
|
+
readonly "base.file.pendingDeletion": "Pending deletion";
|
|
1161
|
+
readonly "base.file.privateFile": "Private file";
|
|
1162
|
+
readonly "base.file.restore": "Restore";
|
|
1163
|
+
readonly "base.file.uploading": "Uploading files...";
|
|
1164
|
+
readonly "base.file.validation.filesWithErrors": "Some files have errors";
|
|
1165
|
+
readonly "base.file.validation.maxFilesExceeded": "Maximum {{count}} files allowed";
|
|
1166
|
+
readonly "base.file.validation.minFilesRequired": "At least one file is required";
|
|
1167
|
+
readonly "base.file.validation.minFilesRequiredPlural": "At least {{count}} files are required";
|
|
1168
|
+
readonly "base.lastUpdated": "Last updated at {{formattedLastUpdated}}";
|
|
1169
|
+
readonly "base.loading.configInitial": "Loading initial configuration...";
|
|
1170
|
+
readonly "base.loading.pleaseWait": "Loading, please wait...";
|
|
1171
|
+
readonly "base.loading.starting": "Starting application...";
|
|
1172
|
+
readonly "base.loading.themeSetup": "Generating theme...";
|
|
1173
|
+
readonly "base.loading.validatingSession": "Validating session...";
|
|
1174
|
+
readonly "base.titles.create": "New {{moduleName}}";
|
|
1175
|
+
readonly "base.titles.read": "View {{moduleName}}";
|
|
1176
|
+
readonly "base.titles.update": "Edit {{moduleName}}";
|
|
1177
|
+
readonly "checkCode.codeLabel": "Verification Code";
|
|
1178
|
+
readonly "checkCode.codePlaceholder": "Enter the 6-digit code";
|
|
1179
|
+
readonly "checkCode.codeRequired": "Code is required";
|
|
1180
|
+
readonly "checkCode.emailLabel": "Email";
|
|
1181
|
+
readonly "checkCode.emailPlaceholder": "Enter your email";
|
|
1182
|
+
readonly "checkCode.emailRequired": "Email is required";
|
|
1183
|
+
readonly "checkCode.instructions": "Enter the 6-digit code we sent to your email.";
|
|
1184
|
+
readonly "checkCode.invalidEmail": "Enter a valid email address";
|
|
1185
|
+
readonly "checkCode.resendCodeLink": "Resend code";
|
|
1186
|
+
readonly "checkCode.title": "Verify Code";
|
|
1187
|
+
readonly "checkCode.verifyButton": "Verify Code";
|
|
1188
|
+
readonly "error.app.config": "Configuration Error: {{message}}";
|
|
1189
|
+
readonly "error.app.initialization": "Error during final application initialization.";
|
|
1190
|
+
readonly "error.transaction": "Operation error";
|
|
1191
|
+
readonly "errors.DUPLICATE": "The <b>{{field}}</b> field must be unique.";
|
|
1192
|
+
readonly "errors.FOREIGN_KEY_NOT_FOUND": "The <b>{{field}}</b> field must reference an existing item.";
|
|
1193
|
+
readonly "errors.INVALID_EMAIL": "The <b>{{field}}</b> field must be a valid email address.";
|
|
1194
|
+
readonly "errors.INVALID_OBJECT_ID": "The <b>{{field}}</b> field must be a valid value.";
|
|
1195
|
+
readonly "errors.IN_USE": "The item is in use and cannot be deleted.";
|
|
1196
|
+
readonly "errors.MAX_LENGTH": "The <b>{{field}}</b> field must not exceed <b>{{length}}</b> characters.";
|
|
1197
|
+
readonly "errors.MIN_LENGTH": "The <b>{{field}}</b> field must be at least <b>{{length}}</b> characters.";
|
|
1198
|
+
readonly "errors.MUST_NOT_BE_EMAIL": "The <b>{{field}}</b> field must not be an email.";
|
|
1199
|
+
readonly "errors.NO_PERMISSION": "You don't have permission to perform this action.";
|
|
1200
|
+
readonly "errors.NO_SPACES": "The <b>{{field}}</b> field must not contain spaces.";
|
|
1201
|
+
readonly "errors.ONE_OR_MORE_OPERATIONS_FAILED": "Operation error";
|
|
1202
|
+
readonly "errors.REQUIRED": "The <b>{{field}}</b> field is required.";
|
|
1203
|
+
readonly "errors.TOKEN_HAS_EXPIRED": "Session has expired. Please log in again.";
|
|
1204
|
+
readonly "errors.TOO_MANY_REQUESTS": "Request limit reached. Please try again later.";
|
|
1205
|
+
readonly "errors.UNAUTHORIZED": "You are not authorized to perform this action.";
|
|
1206
|
+
readonly "errors.all_password_fields_required": "All password fields are required";
|
|
1207
|
+
readonly "errors.auth.INVALID_API_KEY": "Invalid API key";
|
|
1208
|
+
readonly "errors.auth.INVALID_CREDENTIALS": "Invalid username and/or password";
|
|
1209
|
+
readonly "errors.auth.NO_PERMISSION": "You don't have sufficient permissions";
|
|
1210
|
+
readonly "errors.auth.SESSION_EXPIRED": "Your session has expired. Please log in again.";
|
|
1211
|
+
readonly "errors.auth.TOO_MANY_REQUESTS": "Too many attempts. Please wait 15 minutes and try again";
|
|
1212
|
+
readonly "errors.auth.UNAUTHORIZED": "You don't have permission to perform this action";
|
|
1213
|
+
readonly "errors.auth.USER_NOT_ACTIVE": "User not active";
|
|
1214
|
+
readonly "errors.auth.USER_NOT_FOUND": "User not found";
|
|
1215
|
+
readonly "errors.data.BAD_REQUEST": "Invalid request";
|
|
1216
|
+
readonly "errors.data.FIELD_ERROR": "Error in submitted data";
|
|
1217
|
+
readonly "errors.data.IN_USE": "The item is in use and cannot be deleted";
|
|
1218
|
+
readonly "errors.data.ITEM_NOT_FOUND": "The requested item was not found";
|
|
1219
|
+
readonly "errors.data.NOT_FOUND": "Not found";
|
|
1220
|
+
readonly "errors.internal_error_changing_password": "Internal error changing password. Please try again";
|
|
1221
|
+
readonly "errors.password_min_length": "Password must be at least 8 characters";
|
|
1222
|
+
readonly "errors.password_mismatch": "Passwords do not match";
|
|
1223
|
+
readonly "errors.password_must_be_different": "New password must be different from current password";
|
|
1224
|
+
readonly "errors.system.DATABASE_CONNECTION_ERROR": "Connection error. Please check your internet connection.";
|
|
1225
|
+
readonly "errors.system.INTERNAL_SERVER_ERROR": "Internal server error. Please try again.";
|
|
1226
|
+
readonly "errors.system.INVALID_CONFIGURATION": "System configuration error";
|
|
1227
|
+
readonly "errors.system.TOO_MANY_REQUESTS": "Too many requests. Please wait a moment and try again";
|
|
1228
|
+
readonly "errors.system.UNKNOWN_OPERATION": "Unrecognized operation";
|
|
1229
|
+
readonly "errors.users_module_not_configured": "Users module not configured";
|
|
1230
|
+
readonly "footer.copyright": "Nocios S.R.L. All rights reserved.";
|
|
1231
|
+
readonly "footer.version": "Version";
|
|
1232
|
+
readonly "forgotPassword.checkEmailInstructions": "Check your inbox for the verification code";
|
|
1233
|
+
readonly "forgotPassword.codeAlreadyExistsMessage": "A code has already been sent and is still valid";
|
|
1234
|
+
readonly "forgotPassword.emailLabel": "Email";
|
|
1235
|
+
readonly "forgotPassword.emailPlaceholder": "Enter your email";
|
|
1236
|
+
readonly "forgotPassword.emailRequired": "Email is required";
|
|
1237
|
+
readonly "forgotPassword.emailSentMessage": "Code sent successfully";
|
|
1238
|
+
readonly "forgotPassword.enterCodeLink": "Enter Code";
|
|
1239
|
+
readonly "forgotPassword.instructions": "Enter your email and we'll send you a code to reset your password.";
|
|
1240
|
+
readonly "forgotPassword.invalidEmail": "Enter a valid email address";
|
|
1241
|
+
readonly "forgotPassword.sendCodeButton": "Send Code";
|
|
1242
|
+
readonly "forgotPassword.title": "Recover Password";
|
|
1243
|
+
readonly "login.alreadyHaveCodeLink": "Already have a code?";
|
|
1244
|
+
readonly "login.forgotPasswordLink": "Forgot your password?";
|
|
1245
|
+
readonly "login.initializationError": "Initialization error";
|
|
1246
|
+
readonly "login.initializing": "Initializing...";
|
|
1247
|
+
readonly "login.loginButton": "Log In";
|
|
1248
|
+
readonly "login.logoAlt": "Logo";
|
|
1249
|
+
readonly "login.noAccountPrompt": "Don't have an account?";
|
|
1250
|
+
readonly "login.notInitialized": "System not initialized";
|
|
1251
|
+
readonly "login.passwordLabel": "Password";
|
|
1252
|
+
readonly "login.passwordPlaceholder": "Enter your password";
|
|
1253
|
+
readonly "login.passwordRequired": "Password is required";
|
|
1254
|
+
readonly "login.signUpLink": "Sign up";
|
|
1255
|
+
readonly "login.usernameOrEmailLabel": "Username or email";
|
|
1256
|
+
readonly "login.usernameOrEmailPlaceholder": "Enter your email";
|
|
1257
|
+
readonly "login.usernameRequired": "Username is required";
|
|
1258
|
+
readonly "passwordRequirements.lowercase": "One lowercase letter";
|
|
1259
|
+
readonly "passwordRequirements.minLength": "Minimum 8 characters";
|
|
1260
|
+
readonly "passwordRequirements.number": "One number";
|
|
1261
|
+
readonly "passwordRequirements.special": "One special character (!@#$%...)";
|
|
1262
|
+
readonly "passwordRequirements.uppercase": "One uppercase letter";
|
|
1263
|
+
readonly "profiles.actions.assignProfiles": "Assign profiles";
|
|
1264
|
+
readonly "profiles.moduleName": "Profiles";
|
|
1265
|
+
readonly "profiles.moduleSingular": "Profile";
|
|
1266
|
+
readonly "publicPolicies.fields.conditions.customEdit": "Custom edit";
|
|
1267
|
+
readonly "resetPassword.codeExpiredOrInvalid": "The code has expired or is invalid";
|
|
1268
|
+
readonly "resetPassword.confirmPasswordLabel": "Confirm Password";
|
|
1269
|
+
readonly "resetPassword.confirmPasswordPlaceholder": "Confirm your new password";
|
|
1270
|
+
readonly "resetPassword.confirmPasswordRequired": "Confirm your password";
|
|
1271
|
+
readonly "resetPassword.goToLoginButton": "Go to Login";
|
|
1272
|
+
readonly "resetPassword.instructions": "Enter your new password.";
|
|
1273
|
+
readonly "resetPassword.invalidCode": "The verification code is invalid. Please check the link or request a new one.";
|
|
1274
|
+
readonly "resetPassword.missingParameters": "Missing required parameters";
|
|
1275
|
+
readonly "resetPassword.newPasswordLabel": "New Password";
|
|
1276
|
+
readonly "resetPassword.newPasswordPlaceholder": "Enter your new password";
|
|
1277
|
+
readonly "resetPassword.newPasswordRequired": "New password is required";
|
|
1278
|
+
readonly "resetPassword.passwordRequirementsNotMet": "Password does not meet all requirements";
|
|
1279
|
+
readonly "resetPassword.passwordTooShort": "Password must be at least 8 characters";
|
|
1280
|
+
readonly "resetPassword.passwordsDoNotMatch": "Passwords do not match";
|
|
1281
|
+
readonly "resetPassword.requestNewCodeButton": "Request New Code";
|
|
1282
|
+
readonly "resetPassword.resetPasswordButton": "Reset Password";
|
|
1283
|
+
readonly "resetPassword.successInstructions": "You can now log in with your new password";
|
|
1284
|
+
readonly "resetPassword.successMessage": "Password reset successfully";
|
|
1285
|
+
readonly "resetPassword.title": "New Password";
|
|
1286
|
+
readonly "resetPassword.validatingCode": "Validating code...";
|
|
1287
|
+
readonly "translations.fields.lang": "Language";
|
|
1288
|
+
readonly "translations.moduleName": "Translations";
|
|
1289
|
+
readonly "translations.moduleSingular": "Translation";
|
|
1290
|
+
readonly "users.fields.currentPassword": "Current password";
|
|
1291
|
+
readonly "users.fields.newPassword": "New Password";
|
|
1292
|
+
readonly "users.fields.repeatNewPassword": "Repeat New Password";
|
|
1293
|
+
readonly "users.moduleName": "Users";
|
|
1294
|
+
readonly "users.moduleSingular": "User";
|
|
1295
|
+
};
|
|
1127
1296
|
};
|
|
1128
1297
|
type CriticalTranslationKey = keyof typeof CRITICAL_TRANSLATIONS.es;
|
|
1129
1298
|
type SupportedLanguage = keyof typeof CRITICAL_TRANSLATIONS;
|