@ienlab/react-library 0.17.0-beta.5 → 0.17.0-beta.51

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 (107) hide show
  1. package/dist/components/dialog/AlertDialogProps.d.ts +8 -0
  2. package/dist/components/dialog/AlertDialogProps.d.ts.map +1 -0
  3. package/dist/components/dialog/BaseDeleteAlertDialog.d.ts +3 -0
  4. package/dist/components/dialog/BaseDeleteAlertDialog.d.ts.map +1 -0
  5. package/dist/components/dialog/BaseRouterPromptAlertDialog.d.ts +3 -0
  6. package/dist/components/dialog/BaseRouterPromptAlertDialog.d.ts.map +1 -0
  7. package/dist/components/dialog/index.d.ts +4 -0
  8. package/dist/components/dialog/index.d.ts.map +1 -0
  9. package/dist/components/icon/AnimatedSwapIcon.d.ts +1 -1
  10. package/dist/components/icon/AnimatedSwapIcon.d.ts.map +1 -1
  11. package/dist/components/image/CrossfadeImage.d.ts +1 -1
  12. package/dist/components/image/CrossfadeImage.d.ts.map +1 -1
  13. package/dist/components/image/ImageUploadField.d.ts +37 -5
  14. package/dist/components/image/ImageUploadField.d.ts.map +1 -1
  15. package/dist/components/image/ImageUploadSortableField.d.ts +34 -4
  16. package/dist/components/image/ImageUploadSortableField.d.ts.map +1 -1
  17. package/dist/components/index.d.ts +3 -0
  18. package/dist/components/index.d.ts.map +1 -1
  19. package/dist/components/selector/BaseDateTimeSelector.d.ts +3 -0
  20. package/dist/components/selector/BaseDateTimeSelector.d.ts.map +1 -0
  21. package/dist/components/selector/DateTimeSelectorProps.d.ts +7 -0
  22. package/dist/components/selector/DateTimeSelectorProps.d.ts.map +1 -0
  23. package/dist/components/selector/index.d.ts +3 -0
  24. package/dist/components/selector/index.d.ts.map +1 -0
  25. package/dist/components/seo/Seo.d.ts +9 -0
  26. package/dist/components/seo/Seo.d.ts.map +1 -0
  27. package/dist/components/seo/index.d.ts +2 -0
  28. package/dist/components/seo/index.d.ts.map +1 -0
  29. package/dist/components/table/data-table-grouped.d.ts +1 -1
  30. package/dist/components/table/data-table-grouped.d.ts.map +1 -1
  31. package/dist/components/table/data-table.d.ts +1 -1
  32. package/dist/components/table/data-table.d.ts.map +1 -1
  33. package/dist/constant/firestore.d.ts +10 -2
  34. package/dist/constant/firestore.d.ts.map +1 -1
  35. package/dist/hooks/index.d.ts +3 -1
  36. package/dist/hooks/index.d.ts.map +1 -1
  37. package/dist/hooks/use-debounced-search.d.ts +2 -0
  38. package/dist/hooks/use-debounced-search.d.ts.map +1 -0
  39. package/dist/hooks/use-debounced-value.d.ts +2 -0
  40. package/dist/hooks/use-debounced-value.d.ts.map +1 -0
  41. package/dist/hooks/use-screen-lifecycle.d.ts +17 -0
  42. package/dist/hooks/use-screen-lifecycle.d.ts.map +1 -0
  43. package/dist/index.d.ts +1 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/locales/en/libs.json.d.ts +13 -0
  46. package/dist/locales/ko/libs.json.d.ts +13 -0
  47. package/dist/my-library.cjs.js +20 -1
  48. package/dist/my-library.es.js +6341 -2691
  49. package/dist/og/generateOGPages.d.ts +4 -0
  50. package/dist/og/generateOGPages.d.ts.map +1 -0
  51. package/dist/og/generateOGPages.js +51 -0
  52. package/dist/og/index.d.ts +3 -0
  53. package/dist/og/index.d.ts.map +1 -0
  54. package/dist/og/index.js +1 -0
  55. package/dist/og/types.d.ts +8 -0
  56. package/dist/og/types.d.ts.map +1 -0
  57. package/dist/og/types.js +1 -0
  58. package/dist/props/index.d.ts +2 -0
  59. package/dist/props/index.d.ts.map +1 -0
  60. package/dist/props/motion/index.d.ts +2 -0
  61. package/dist/props/motion/index.d.ts.map +1 -0
  62. package/dist/props/motion/props.d.ts +29 -0
  63. package/dist/props/motion/props.d.ts.map +1 -0
  64. package/dist/types/dialog.d.ts +29 -0
  65. package/dist/types/dialog.d.ts.map +1 -0
  66. package/dist/types/file.d.ts +2 -2
  67. package/dist/types/file.d.ts.map +1 -1
  68. package/dist/types/firestore.d.ts +8 -1
  69. package/dist/types/firestore.d.ts.map +1 -1
  70. package/dist/types/image-compress.d.ts +10 -0
  71. package/dist/types/image-compress.d.ts.map +1 -0
  72. package/dist/types/image.d.ts +19 -8
  73. package/dist/types/image.d.ts.map +1 -1
  74. package/dist/types/index.d.ts +5 -0
  75. package/dist/types/index.d.ts.map +1 -1
  76. package/dist/types/localized.d.ts +5 -0
  77. package/dist/types/localized.d.ts.map +1 -1
  78. package/dist/types/phone_verify.d.ts +43 -0
  79. package/dist/types/phone_verify.d.ts.map +1 -0
  80. package/dist/types/router.d.ts +6 -0
  81. package/dist/types/router.d.ts.map +1 -0
  82. package/dist/types/selector.d.ts +40 -0
  83. package/dist/types/selector.d.ts.map +1 -0
  84. package/dist/types/shadcn.d.ts +1 -0
  85. package/dist/types/shadcn.d.ts.map +1 -1
  86. package/dist/types/table.d.ts +6 -6
  87. package/dist/types/table.d.ts.map +1 -1
  88. package/dist/utils/fb-storage.d.ts +21 -7
  89. package/dist/utils/fb-storage.d.ts.map +1 -1
  90. package/dist/utils/firestore.d.ts +3 -3
  91. package/dist/utils/firestore.d.ts.map +1 -1
  92. package/dist/utils/image/image-compress.d.ts +11 -0
  93. package/dist/utils/image/image-compress.d.ts.map +1 -0
  94. package/dist/utils/image/image-delete.d.ts +20 -0
  95. package/dist/utils/image/image-delete.d.ts.map +1 -0
  96. package/dist/utils/image/image-validation.d.ts +57 -0
  97. package/dist/utils/image/image-validation.d.ts.map +1 -0
  98. package/dist/utils/image/index.d.ts +4 -0
  99. package/dist/utils/image/index.d.ts.map +1 -0
  100. package/dist/utils/index.d.ts +2 -0
  101. package/dist/utils/index.d.ts.map +1 -1
  102. package/dist/utils/text.d.ts +3 -0
  103. package/dist/utils/text.d.ts.map +1 -0
  104. package/dist/utils/theme-provider.d.ts +2 -1
  105. package/dist/utils/theme-provider.d.ts.map +1 -1
  106. package/dist/utils/zustand.d.ts +1 -1
  107. package/package.json +33 -22
@@ -0,0 +1,57 @@
1
+ export type ImageValidationOptions = {
2
+ requiredSize?: string;
3
+ maxSize?: string;
4
+ maxFileSizeMB?: number;
5
+ requiredAspectRatio?: string;
6
+ acceptType?: string;
7
+ };
8
+ export type ImageValidationError = {
9
+ ok: false;
10
+ type: "requiredSize";
11
+ width: number;
12
+ height: number;
13
+ requiredWidth: number;
14
+ requiredHeight: number;
15
+ } | {
16
+ ok: false;
17
+ type: "maxSize";
18
+ width: number;
19
+ height: number;
20
+ maxWidth: number;
21
+ maxHeight: number;
22
+ } | {
23
+ ok: false;
24
+ type: "maxFileSize";
25
+ fileSize: number;
26
+ maxSizeMB: number;
27
+ } | {
28
+ ok: false;
29
+ type: "requiredAspectRatio";
30
+ width: number;
31
+ height: number;
32
+ ratio: string;
33
+ } | {
34
+ ok: false;
35
+ type: "invalidType";
36
+ acceptType: string;
37
+ fileType: string;
38
+ } | {
39
+ ok: true;
40
+ };
41
+ /**
42
+ * 이미지 파일을 업로드 전에 검증합니다.
43
+ * 파일 MIME 타입, 크기, Required 크기, 최대 크기, Required 종횡비를 순차적으로 검사합니다.
44
+ *
45
+ * @param file - 검증할 이미지 파일
46
+ * @param options - 검증 옵션 (acceptType, requiredSize, maxSize, maxFileSizeMB, requiredAspectRatio)
47
+ * @returns 검증 결과. 성공 시 { ok: true }, 실패 시 상세 오류 정보를 포함한 객체
48
+ */
49
+ export declare function validateUpload(file: File, options: ImageValidationOptions): Promise<ImageValidationError>;
50
+ /**
51
+ * 검증 옵션에 하나라도 유효한 조건이 설정되어 있는지 확인합니다.
52
+ *
53
+ * @param options - 검증 옵션 객체
54
+ * @returns 검증 조건이 하나라도 존재하면 true, 그렇지 않으면 false
55
+ */
56
+ export declare function hasValidation(options: ImageValidationOptions): boolean;
57
+ //# sourceMappingURL=image-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-validation.d.ts","sourceRoot":"","sources":["../../../src/utils/image/image-validation.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG;IACnC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACjH;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAClG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,qBAAqB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxF;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACxE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAA;AAoBhB;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,oBAAoB,CAAC,CA4E/B;AAmBD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAEtE"}
@@ -0,0 +1,4 @@
1
+ export * from './image-compress';
2
+ export * from './image-validation';
3
+ export * from './image-delete';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/image/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA"}
@@ -7,4 +7,6 @@ export * from './file';
7
7
  export * from './fb-storage';
8
8
  export * from './table';
9
9
  export * from './theme-provider';
10
+ export * from './text';
11
+ export * from './image';
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,kBAAkB,CAAA;AAChC,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA"}
@@ -0,0 +1,3 @@
1
+ export declare function hasLastConsonant(str: string): boolean;
2
+ export declare function withLetterParticle(str: string, ifConsonant: string, notConsonant: string): string;
3
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/utils/text.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAarD;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,CAER"}
@@ -5,13 +5,14 @@ type ThemeProviderProps = {
5
5
  children: React.ReactNode;
6
6
  defaultTheme?: Theme;
7
7
  storageKey?: string;
8
+ themeExpiryHours?: number;
8
9
  };
9
10
  type ThemeProviderState = {
10
11
  theme: Theme;
11
12
  resolvedTheme: ResolvedTheme;
12
13
  setTheme: (theme: Theme) => void;
13
14
  };
14
- export declare function ThemeProvider({ children, defaultTheme, storageKey, }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare function ThemeProvider({ children, defaultTheme, storageKey, themeExpiryHours, }: ThemeProviderProps): React.JSX.Element;
15
16
  export declare const useTheme: () => ThemeProviderState;
16
17
  export {};
17
18
  //# sourceMappingURL=theme-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-provider.d.ts","sourceRoot":"","sources":["../../src/utils/theme-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;AACxC,KAAK,aAAa,GAAG,MAAM,GAAG,OAAO,CAAA;AAErC,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,YAAY,CAAC,EAAE,KAAK,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,KAAK,kBAAkB,GAAG;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ,aAAa,EAAE,aAAa,CAAA;IAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACjC,CAAA;AAUD,wBAAgB,aAAa,CAAC,EACE,QAAQ,EACR,YAAuB,EACvB,UAA4B,GAC7B,EAAE,kBAAkB,2CA+ClD;AAED,eAAO,MAAM,QAAQ,0BAEpB,CAAA"}
1
+ {"version":3,"file":"theme-provider.d.ts","sourceRoot":"","sources":["../../src/utils/theme-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;AACxC,KAAK,aAAa,GAAG,MAAM,GAAG,OAAO,CAAA;AAErC,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,YAAY,CAAC,EAAE,KAAK,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,KAAK,kBAAkB,GAAG;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ,aAAa,EAAE,aAAa,CAAA;IAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACjC,CAAA;AAqED,wBAAgB,aAAa,CAAC,EACE,QAAQ,EACR,YAAuB,EACvB,UAA4B,EAC5B,gBAAqB,GACtB,EAAE,kBAAkB,qBAqDlD;AAED,eAAO,MAAM,QAAQ,0BAAyC,CAAA"}
@@ -4,7 +4,7 @@ type AutoSelectors<TState extends object> = {
4
4
  [K in keyof TState]: () => TState[K];
5
5
  };
6
6
  export declare function createZustandContext<TState extends object, TProps extends object>(createLocalStore: (props: TProps) => StoreApi<TState>): {
7
- Provider: ({ children, ...props }: PropsWithChildren<TProps>) => import("react/jsx-runtime").JSX.Element;
7
+ Provider: ({ children, ...props }: PropsWithChildren<TProps>) => import("react").JSX.Element;
8
8
  useStore: <T>(selector: (state: TState) => T) => T;
9
9
  use: AutoSelectors<TState>;
10
10
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ienlab/react-library",
3
- "version": "0.17.0-beta.5",
3
+ "version": "0.17.0-beta.51",
4
4
  "description": "My React component library",
5
5
  "main": "./dist/my-library.cjs.js",
6
6
  "module": "./dist/my-library.es.js",
@@ -13,6 +13,10 @@
13
13
  "import": "./dist/my-library.es.js",
14
14
  "require": "./dist/my-library.cjs.js",
15
15
  "types": "./dist/index.d.ts"
16
+ },
17
+ "./og": {
18
+ "import": "./dist/og/index.js",
19
+ "types": "./dist/og/index.d.ts"
16
20
  }
17
21
  },
18
22
  "sideEffects": [
@@ -22,7 +26,8 @@
22
26
  "type": "module",
23
27
  "scripts": {
24
28
  "dev": "vite",
25
- "build": "tsc -b && vite build",
29
+ "build": "tsc -b && vite build && npm run build:og",
30
+ "build:og": "tsc -p tsconfig.node-out.json",
26
31
  "lint": "eslint .",
27
32
  "preview": "vite preview"
28
33
  },
@@ -30,6 +35,7 @@
30
35
  "clsx": "^2.1.1",
31
36
  "tailwind-merge": "^3.6.0",
32
37
  "@tanstack/react-table": ">=8.21.3",
38
+ "browser-image-compression": ">=2.0.2",
33
39
  "dayjs": "^1.11.0",
34
40
  "firebase": ">=12.0.0",
35
41
  "i18next": ">=23.0.0",
@@ -37,32 +43,37 @@
37
43
  "react": ">=19.0.0",
38
44
  "react-dom": ">=19.0.0",
39
45
  "react-i18next": ">=16.0.0",
40
- "zustand": ">=5.0.0"
46
+ "react-router": ">=7.0.0",
47
+ "zustand": ">=5.0.0",
48
+ "react-helmet-async": ">=3.0.0"
41
49
  },
42
50
  "devDependencies": {
43
- "@eslint/js": "^9.39.4",
51
+ "browser-image-compression": "^2.0.2",
52
+ "@eslint/js": "^10.0.1",
44
53
  "@tanstack/react-table": "^8.21.3",
45
- "@types/node": "^24.12.2",
46
- "@types/react": "^19.2.14",
54
+ "@types/node": "^25.9.3",
55
+ "@types/react": "^19.2.17",
47
56
  "@types/react-dom": "^19.2.3",
48
- "@vitejs/plugin-react": "^6.0.1",
49
- "dayjs": "^1.11.0",
50
- "eslint": "^9.39.4",
57
+ "@vitejs/plugin-react": "^6.0.2",
58
+ "dayjs": "^1.11.21",
59
+ "eslint": "^10.4.1",
51
60
  "eslint-plugin-react-hooks": "^7.1.1",
52
61
  "eslint-plugin-react-refresh": "^0.5.2",
53
- "firebase": "^12.12.1",
54
- "globals": "^17.5.0",
55
- "i18next": "^26.0.6",
56
- "motion": "^12.38.0",
57
- "react": "^19.2.5",
58
- "react-dom": "^19.2.5",
59
- "react-i18next": "^16.0.0",
60
- "typescript": "~6.0.2",
61
- "typescript-eslint": "^8.58.2",
62
- "vite": "^8.0.9",
63
- "vite-plugin-dts": "^4.5.4",
64
- "zustand": "^5.0.12",
62
+ "firebase": "^12.14.0",
63
+ "globals": "^17.6.0",
64
+ "i18next": "^26.3.1",
65
+ "motion": "^12.40.0",
66
+ "react": "^19.2.7",
67
+ "react-dom": "^19.2.7",
68
+ "react-i18next": "^17.0.8",
69
+ "react-router": "^7.17.0",
70
+ "typescript": "~6.0.3",
71
+ "typescript-eslint": "^8.61.0",
72
+ "vite": "^8.0.16",
73
+ "vite-plugin-dts": "^5.0.2",
74
+ "zustand": "^5.0.14",
65
75
  "clsx": "^2.1.1",
66
- "tailwind-merge": "^3.6.0"
76
+ "tailwind-merge": "^3.6.0",
77
+ "react-helmet-async": "^3.0.0"
67
78
  }
68
79
  }