@withwiz/toolkit 0.7.1 → 0.9.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 (399) hide show
  1. package/README.ko.md +226 -0
  2. package/README.md +66 -44
  3. package/dist/{chunk-V6YD53NH.js → chunk-23LQJYZN.js} +5 -2
  4. package/dist/chunk-2JUFL4KX.js +41 -0
  5. package/dist/{chunk-ZTRASVGZ.js → chunk-34L7HTM7.js} +1 -1
  6. package/dist/{chunk-GSUCBWML.js → chunk-3RK3MKAR.js} +5 -2
  7. package/dist/{chunk-6JXHXIEH.js → chunk-3UIKCS56.js} +2 -2
  8. package/dist/{chunk-MWBEE6VI.js → chunk-4EXZ2SDV.js} +5 -5
  9. package/dist/{chunk-MNYVAEXK.js → chunk-4ROIPF33.js} +16 -3
  10. package/dist/{chunk-JKSABDFT.js → chunk-4TGPAUJV.js} +4 -4
  11. package/dist/{chunk-D2KXIKI4.js → chunk-4XPXZNBX.js} +18 -11
  12. package/dist/{chunk-LG3KM5V3.js → chunk-5I3EQHR4.js} +6 -2
  13. package/dist/chunk-63EKUOJH.js +72 -0
  14. package/dist/chunk-6A5JHOBB.js +134 -0
  15. package/dist/{chunk-N5VOFGF3.js → chunk-75UDFONR.js} +5 -4
  16. package/dist/{chunk-GORISA3L.js → chunk-7KIM5MHV.js} +1 -1
  17. package/dist/{chunk-4L6OSSSG.js → chunk-7S2PCYNT.js} +3 -3
  18. package/dist/{chunk-2SIBG5BG.js → chunk-7YWUKMZD.js} +7 -0
  19. package/dist/{chunk-7X2N4VZM.js → chunk-ATBYGPLP.js} +1 -1
  20. package/dist/{chunk-A74POWYY.js → chunk-B7AJJKOY.js} +1 -1
  21. package/dist/{chunk-W7PEL3DX.js → chunk-BRBOGLFT.js} +4 -4
  22. package/dist/{chunk-IOUNOHP7.js → chunk-BRFW2LL2.js} +1 -1
  23. package/dist/chunk-BTYH4MHU.js +118 -0
  24. package/dist/{chunk-I4NT6G2T.js → chunk-DRTJSTEV.js} +2 -2
  25. package/dist/{chunk-JIYLTMVL.js → chunk-DVCGAI5N.js} +2 -2
  26. package/dist/chunk-E4TKORMQ.js +59 -0
  27. package/dist/{chunk-AV7ELXHG.js → chunk-E5TDIRBJ.js} +2 -2
  28. package/dist/{chunk-UBASOMP5.js → chunk-HGVPZSWW.js} +18 -13
  29. package/dist/{chunk-7F5X6F7X.js → chunk-HV6A6Z5R.js} +1 -1
  30. package/dist/chunk-ILMPKSWS.js +125 -0
  31. package/dist/{chunk-J5NLAZV2.js → chunk-JHUWZ6YW.js} +2 -2
  32. package/dist/{chunk-LON5THYQ.js → chunk-KLMKCYIN.js} +1 -1
  33. package/dist/{chunk-4KJZRI74.js → chunk-KWUOLKDO.js} +1 -1
  34. package/dist/{chunk-GJO2MPC3.js → chunk-LCYDMYZS.js} +1 -1
  35. package/dist/{chunk-WIQAPWTY.js → chunk-LL3VWKY4.js} +1 -1
  36. package/dist/{chunk-IMAFMUZ7.js → chunk-LSS3GJUE.js} +3 -2
  37. package/dist/{chunk-2PFSRVVD.js → chunk-LWHLB2Y6.js} +84 -18
  38. package/dist/{chunk-BBE4RXR7.js → chunk-MTZXWVW3.js} +17 -6
  39. package/dist/{chunk-ORMEWXMH.js → chunk-N3ETBM74.js} +1 -14
  40. package/dist/{chunk-KYAHURXN.js → chunk-N3TCQ5BF.js} +4 -3
  41. package/dist/{chunk-HX4MPCVV.js → chunk-NTZBMWB6.js} +4 -4
  42. package/dist/{chunk-RJGYONRO.js → chunk-PRPMEHRE.js} +2 -2
  43. package/dist/{chunk-KG65BFPK.js → chunk-QAIN3WNN.js} +1 -1
  44. package/dist/{chunk-JJAIVUVD.js → chunk-R7EFDSPZ.js} +2 -2
  45. package/dist/{chunk-VJE4HA2C.js → chunk-RWCPRPEP.js} +3 -2
  46. package/dist/{chunk-B6L5XV7O.js → chunk-SCAFDDJP.js} +11 -11
  47. package/dist/{chunk-KXYDTC4A.js → chunk-SNFPZD6L.js} +11 -2
  48. package/dist/{chunk-B5VRZ2VJ.js → chunk-TNDEYJEL.js} +25 -6
  49. package/dist/{chunk-GDTZMX3L.js → chunk-TRGFXIEF.js} +1 -1
  50. package/dist/{chunk-JRORMRVN.js → chunk-U2TGXJ3A.js} +1 -1
  51. package/dist/{chunk-VNDL2E44.js → chunk-U52U5SK7.js} +2 -2
  52. package/dist/{chunk-54REXMTE.js → chunk-UWOWKOOQ.js} +3 -1
  53. package/dist/{chunk-4PROUAZ5.js → chunk-V3WZFUY3.js} +7 -7
  54. package/dist/{chunk-G4LJN4OZ.js → chunk-VH57Y5Z4.js} +1 -1
  55. package/dist/chunk-VQJY52YF.js +139 -0
  56. package/dist/{chunk-5S7M2AJL.js → chunk-VWAB4PM7.js} +1 -1
  57. package/dist/{chunk-AQZPGOEZ.js → chunk-VWKZMGPJ.js} +5 -4
  58. package/dist/{chunk-4K27YLAE.js → chunk-VZ2PQA4U.js} +2 -2
  59. package/dist/{chunk-ZOWEW4GY.js → chunk-WBHX4MJV.js} +2 -2
  60. package/dist/{chunk-G4SNTXJ3.js → chunk-WSHRBK6Y.js} +7 -6
  61. package/dist/{chunk-UMRKMF3E.js → chunk-WXOWI7BJ.js} +2 -2
  62. package/dist/chunk-XAGPZLRK.js +106 -0
  63. package/dist/{chunk-VPRTPW7C.js → chunk-XF3WUF3F.js} +2 -2
  64. package/dist/{chunk-6TRD7ZW4.js → chunk-XKIBJJA3.js} +25 -21
  65. package/dist/{chunk-ZLYBY3R4.js → chunk-XTGS6JJB.js} +10 -5
  66. package/dist/{chunk-BFZR62LZ.js → chunk-XXPB4C37.js} +7 -7
  67. package/dist/{chunk-LUIYCIF7.js → chunk-Y4ME3Q5K.js} +2 -2
  68. package/dist/{chunk-Q66VOVGN.js → chunk-Y4WPEIKW.js} +1 -1
  69. package/dist/{chunk-MREY2W7N.js → chunk-Y6CPPBJI.js} +1 -1
  70. package/dist/{chunk-6TUDUOGC.js → chunk-ZEHNCHIV.js} +2 -2
  71. package/dist/{chunk-D73ZJQMX.js → chunk-ZZABL54F.js} +13 -0
  72. package/dist/core/auth/adapters/sql/dialect.d.ts +21 -0
  73. package/dist/core/auth/adapters/sql/dialect.js +11 -0
  74. package/dist/core/auth/adapters/sql/email-token-repository.d.ts +17 -0
  75. package/dist/core/auth/adapters/sql/email-token-repository.js +9 -0
  76. package/dist/core/auth/adapters/sql/index.d.ts +7 -0
  77. package/dist/core/auth/adapters/sql/index.js +27 -0
  78. package/dist/core/auth/adapters/sql/oauth-account-repository.d.ts +18 -0
  79. package/dist/core/auth/adapters/sql/oauth-account-repository.js +9 -0
  80. package/dist/core/auth/adapters/sql/types.d.ts +73 -0
  81. package/dist/core/auth/adapters/sql/types.js +7 -0
  82. package/dist/core/auth/adapters/sql/user-repository.d.ts +20 -0
  83. package/dist/core/auth/adapters/sql/user-repository.js +9 -0
  84. package/dist/core/auth/config.d.ts +3 -0
  85. package/dist/core/auth/config.js +3 -3
  86. package/dist/core/auth/email/index.d.ts +3 -3
  87. package/dist/core/auth/email/index.js +3 -3
  88. package/dist/core/auth/email/sender.d.ts +1 -1
  89. package/dist/core/auth/email/sender.js +2 -2
  90. package/dist/core/auth/email/token-generator.d.ts +11 -0
  91. package/dist/core/auth/email/token-generator.js +2 -2
  92. package/dist/core/auth/errors/index.js +1 -1
  93. package/dist/core/auth/index.d.ts +11 -11
  94. package/dist/core/auth/index.js +23 -15
  95. package/dist/core/auth/jwt/client.js +3 -2
  96. package/dist/core/auth/jwt/cookie.d.ts +1 -1
  97. package/dist/core/auth/jwt/cookie.js +4 -4
  98. package/dist/core/auth/jwt/index.d.ts +41 -9
  99. package/dist/core/auth/jwt/index.js +6 -6
  100. package/dist/core/auth/jwt/types.d.ts +1 -1
  101. package/dist/core/auth/jwt/types.js +1 -1
  102. package/dist/core/auth/oauth/index.d.ts +6 -6
  103. package/dist/core/auth/oauth/index.js +5 -5
  104. package/dist/core/auth/oauth/providers/github.d.ts +1 -1
  105. package/dist/core/auth/oauth/providers/github.js +1 -1
  106. package/dist/core/auth/oauth/providers/google.d.ts +1 -1
  107. package/dist/core/auth/oauth/providers/google.js +1 -1
  108. package/dist/core/auth/oauth/providers/index.d.ts +5 -5
  109. package/dist/core/auth/oauth/providers/index.js +4 -4
  110. package/dist/core/auth/oauth/providers/kakao.d.ts +1 -1
  111. package/dist/core/auth/oauth/providers/kakao.js +1 -1
  112. package/dist/core/auth/oauth/providers/meta.d.ts +1 -1
  113. package/dist/core/auth/oauth/providers/meta.js +1 -1
  114. package/dist/core/auth/oauth/providers/microsoft.d.ts +1 -1
  115. package/dist/core/auth/oauth/providers/microsoft.js +1 -1
  116. package/dist/core/auth/oauth/state-cookie.js +1 -1
  117. package/dist/core/auth/password/client-helper.d.ts +9 -9
  118. package/dist/core/auth/password/client-helper.js +5 -3
  119. package/dist/core/auth/password/hasher.d.ts +83 -0
  120. package/dist/core/auth/password/hasher.js +14 -0
  121. package/dist/core/auth/password/index.d.ts +8 -6
  122. package/dist/core/auth/password/index.js +11 -2
  123. package/dist/core/auth/services/email-verification.service.d.ts +1 -1
  124. package/dist/core/auth/services/email-verification.service.js +3 -3
  125. package/dist/core/auth/services/index.d.ts +13 -12
  126. package/dist/core/auth/services/index.js +16 -16
  127. package/dist/core/auth/services/login.service.d.ts +15 -1
  128. package/dist/core/auth/services/login.service.js +6 -6
  129. package/dist/core/auth/services/oauth-callback.service.d.ts +7 -1
  130. package/dist/core/auth/services/oauth-callback.service.js +6 -6
  131. package/dist/core/auth/services/password-reset.service.d.ts +1 -1
  132. package/dist/core/auth/services/password-reset.service.js +3 -3
  133. package/dist/core/auth/services/refresh-token-store.d.ts +39 -0
  134. package/dist/core/auth/services/register.service.d.ts +1 -1
  135. package/dist/core/auth/services/register.service.js +3 -3
  136. package/dist/core/auth/services/token-refresh.service.d.ts +27 -1
  137. package/dist/core/auth/services/token-refresh.service.js +6 -6
  138. package/dist/core/auth/token-delivery.d.ts +47 -0
  139. package/dist/core/auth/token-delivery.js +14 -0
  140. package/dist/core/auth/types/index.d.ts +38 -4
  141. package/dist/core/auth/types/index.js +1 -1
  142. package/dist/core/cache/cache-config.js +4 -4
  143. package/dist/core/cache/cache-defaults.js +1 -1
  144. package/dist/core/cache/cache-env.d.ts +3 -3
  145. package/dist/core/cache/cache-env.js +3 -3
  146. package/dist/core/cache/cache-factory.d.ts +6 -6
  147. package/dist/core/cache/cache-factory.js +11 -11
  148. package/dist/core/cache/cache-invalidation.d.ts +4 -4
  149. package/dist/core/cache/cache-invalidation.js +12 -12
  150. package/dist/core/cache/cache-redis.js +5 -5
  151. package/dist/core/cache/cache-types.js +1 -1
  152. package/dist/core/cache/cache-wrapper.d.ts +1 -1
  153. package/dist/core/cache/cache-wrapper.js +12 -12
  154. package/dist/core/cache/cache.d.ts +2 -2
  155. package/dist/core/cache/cache.js +17 -17
  156. package/dist/core/cache/config.js +2 -2
  157. package/dist/core/cache/hybrid-cache-manager.d.ts +1 -1
  158. package/dist/core/cache/hybrid-cache-manager.js +7 -7
  159. package/dist/core/cache/index.d.ts +15 -15
  160. package/dist/core/cache/index.js +17 -17
  161. package/dist/core/cache/inmemory-cache-manager.d.ts +1 -1
  162. package/dist/core/cache/inmemory-cache-manager.js +3 -3
  163. package/dist/core/cache/noop-cache-manager.d.ts +1 -1
  164. package/dist/core/cache/noop-cache-manager.js +5 -5
  165. package/dist/core/cache/redis-cache-manager.d.ts +2 -2
  166. package/dist/core/cache/redis-cache-manager.js +6 -6
  167. package/dist/core/config/common.js +1 -1
  168. package/dist/core/config/errors.js +1 -1
  169. package/dist/core/config/registry.d.ts +7 -7
  170. package/dist/core/config/registry.js +1 -1
  171. package/dist/core/config/warn.js +1 -1
  172. package/dist/core/constants/error-codes.js +1 -1
  173. package/dist/core/constants/index.d.ts +5 -5
  174. package/dist/core/constants/index.js +10 -8
  175. package/dist/core/constants/messages.js +1 -1
  176. package/dist/core/constants/pagination.js +1 -1
  177. package/dist/core/constants/security.d.ts +15 -0
  178. package/dist/core/constants/security.js +4 -2
  179. package/dist/core/constants/validation.js +1 -1
  180. package/dist/core/cors/index.js +1 -1
  181. package/dist/core/error/app-error.d.ts +2 -2
  182. package/dist/core/error/app-error.js +1 -1
  183. package/dist/core/error/extract-error-info.js +1 -1
  184. package/dist/core/error/friendly-messages-v2.d.ts +3 -3
  185. package/dist/core/error/friendly-messages-v2.js +4 -4
  186. package/dist/core/error/friendly-messages.js +1 -1
  187. package/dist/core/error/index.d.ts +6 -6
  188. package/dist/core/error/index.js +4 -4
  189. package/dist/core/error/messages/en.d.ts +1 -1
  190. package/dist/core/error/messages/en.js +1 -1
  191. package/dist/core/error/messages/index.d.ts +2 -2
  192. package/dist/core/error/messages/index.js +3 -3
  193. package/dist/core/error/messages/ko.d.ts +1 -1
  194. package/dist/core/error/messages/ko.js +1 -1
  195. package/dist/core/geolocation/batch-processor.d.ts +1 -1
  196. package/dist/core/geolocation/batch-processor.js +3 -3
  197. package/dist/core/geolocation/config.js +1 -1
  198. package/dist/core/geolocation/index.d.ts +5 -5
  199. package/dist/core/geolocation/index.js +7 -7
  200. package/dist/core/geolocation/providers/base-provider.d.ts +2 -2
  201. package/dist/core/geolocation/providers/base-provider.js +1 -1
  202. package/dist/core/geolocation/providers/index.d.ts +6 -6
  203. package/dist/core/geolocation/providers/index.js +5 -5
  204. package/dist/core/geolocation/providers/ip-api-provider.d.ts +3 -3
  205. package/dist/core/geolocation/providers/ip-api-provider.js +1 -1
  206. package/dist/core/geolocation/providers/ipapi-co-provider.d.ts +3 -3
  207. package/dist/core/geolocation/providers/ipapi-co-provider.js +1 -1
  208. package/dist/core/geolocation/providers/ipgeolocation-provider.d.ts +3 -3
  209. package/dist/core/geolocation/providers/ipgeolocation-provider.js +1 -1
  210. package/dist/core/geolocation/providers/maxmind-provider.d.ts +3 -3
  211. package/dist/core/geolocation/providers/maxmind-provider.js +1 -1
  212. package/dist/core/logger/config.js +1 -1
  213. package/dist/core/logger/logger.js +2 -2
  214. package/dist/core/storage/config.js +1 -1
  215. package/dist/core/storage/r2-storage.js +1 -1
  216. package/dist/core/system/cpu.d.ts +1 -1
  217. package/dist/core/system/cpu.js +4 -4
  218. package/dist/core/system/disk.d.ts +1 -1
  219. package/dist/core/system/disk.js +4 -4
  220. package/dist/core/system/environment.d.ts +1 -1
  221. package/dist/core/system/environment.js +7 -7
  222. package/dist/core/system/health-check.d.ts +2 -2
  223. package/dist/core/system/health-check.js +5 -5
  224. package/dist/core/system/index.d.ts +7 -7
  225. package/dist/core/system/index.js +17 -17
  226. package/dist/core/system/memory.d.ts +1 -1
  227. package/dist/core/system/memory.js +4 -4
  228. package/dist/core/system/network.d.ts +1 -1
  229. package/dist/core/system/network.js +4 -4
  230. package/dist/core/system/utils.js +3 -3
  231. package/dist/core/types/geoip.d.ts +1 -1
  232. package/dist/core/types/qr-code.js +1 -1
  233. package/dist/core/utils/error-message-formatter.js +1 -1
  234. package/dist/core/utils/format-number.js +1 -1
  235. package/dist/core/utils/index.d.ts +3 -3
  236. package/dist/core/utils/index.js +9 -9
  237. package/dist/core/utils/input-validation.js +52 -16
  238. package/dist/core/utils/ip-utils.js +1 -1
  239. package/dist/core/utils/optimistic-lock.js +1 -1
  240. package/dist/core/utils/sanitizer.js +2 -2
  241. package/dist/core/utils/short-code-generator.js +1 -1
  242. package/dist/core/utils/timezone.js +121 -14
  243. package/dist/core/utils/type-guards.js +1 -1
  244. package/dist/core/utils/url-normalizer.js +1 -1
  245. package/dist/core/validators/index.d.ts +1 -1
  246. package/dist/core/validators/index.js +2 -2
  247. package/dist/core/validators/password-validator.d.ts +3 -3
  248. package/dist/core/validators/password-validator.js +2 -2
  249. package/dist/initialize.d.ts +10 -10
  250. package/dist/initialize.js +7 -7
  251. package/dist/next/auth-handlers/forgot-password.handler.d.ts +1 -1
  252. package/dist/next/auth-handlers/forgot-password.handler.js +4 -4
  253. package/dist/next/auth-handlers/index.d.ts +11 -11
  254. package/dist/next/auth-handlers/index.js +32 -31
  255. package/dist/next/auth-handlers/login.handler.d.ts +1 -1
  256. package/dist/next/auth-handlers/login.handler.js +7 -6
  257. package/dist/next/auth-handlers/logout.handler.d.ts +1 -1
  258. package/dist/next/auth-handlers/logout.handler.js +5 -5
  259. package/dist/next/auth-handlers/me.handler.d.ts +1 -1
  260. package/dist/next/auth-handlers/me.handler.js +7 -6
  261. package/dist/next/auth-handlers/oauth-authorize.handler.d.ts +1 -1
  262. package/dist/next/auth-handlers/oauth-authorize.handler.js +4 -4
  263. package/dist/next/auth-handlers/oauth-callback.handler.d.ts +1 -1
  264. package/dist/next/auth-handlers/oauth-callback.handler.js +9 -9
  265. package/dist/next/auth-handlers/refresh.handler.d.ts +1 -1
  266. package/dist/next/auth-handlers/refresh.handler.js +8 -7
  267. package/dist/next/auth-handlers/register.handler.d.ts +1 -1
  268. package/dist/next/auth-handlers/register.handler.js +4 -4
  269. package/dist/next/auth-handlers/reset-password.handler.d.ts +1 -1
  270. package/dist/next/auth-handlers/reset-password.handler.js +4 -4
  271. package/dist/next/auth-handlers/verify-email.handler.d.ts +1 -1
  272. package/dist/next/auth-handlers/verify-email.handler.js +4 -4
  273. package/dist/next/auth-types/handler-types.d.ts +5 -1
  274. package/dist/next/auth-types/handler-types.js +13 -1
  275. package/dist/next/auth-types/index.d.ts +1 -1
  276. package/dist/next/auth-types/index.js +13 -1
  277. package/dist/next/error/error-handler.js +3 -3
  278. package/dist/next/error/index.d.ts +3 -3
  279. package/dist/next/error/index.js +9 -9
  280. package/dist/next/error/locale-detector.d.ts +1 -1
  281. package/dist/next/error/locale-detector.js +1 -1
  282. package/dist/next/middleware/auth.d.ts +3 -3
  283. package/dist/next/middleware/auth.js +8 -7
  284. package/dist/next/middleware/cors.d.ts +2 -2
  285. package/dist/next/middleware/cors.js +3 -3
  286. package/dist/next/middleware/error-handler.d.ts +1 -1
  287. package/dist/next/middleware/error-handler.js +6 -6
  288. package/dist/next/middleware/index.d.ts +11 -11
  289. package/dist/next/middleware/index.js +19 -18
  290. package/dist/next/middleware/init-request.d.ts +1 -1
  291. package/dist/next/middleware/init-request.js +1 -1
  292. package/dist/next/middleware/middleware-chain.d.ts +1 -1
  293. package/dist/next/middleware/middleware-chain.js +3 -3
  294. package/dist/next/middleware/rate-limit.d.ts +2 -2
  295. package/dist/next/middleware/rate-limit.js +3 -3
  296. package/dist/next/middleware/response-logger.d.ts +1 -1
  297. package/dist/next/middleware/response-logger.js +3 -3
  298. package/dist/next/middleware/security.d.ts +1 -1
  299. package/dist/next/middleware/security.js +3 -3
  300. package/dist/next/middleware/types.d.ts +6 -3
  301. package/dist/next/middleware/wrappers.d.ts +2 -2
  302. package/dist/next/middleware/wrappers.js +18 -17
  303. package/dist/next/utils/api-helpers.d.ts +6 -2
  304. package/dist/next/utils/api-helpers.js +3 -2
  305. package/dist/next/utils/cors.js +2 -2
  306. package/dist/next/utils/csv-export-format.js +1 -1
  307. package/dist/next/utils/csv-export.js +3 -3
  308. package/dist/next/utils/error-processor.d.ts +1 -1
  309. package/dist/next/utils/error-processor.js +3 -3
  310. package/dist/next/utils/index.d.ts +5 -5
  311. package/dist/next/utils/index.js +28 -27
  312. package/dist/prisma/auth-adapter/index.d.ts +1 -1
  313. package/dist/prisma/auth-adapter/index.js +1 -1
  314. package/package.json +96 -52
  315. package/dist/chunk-2P4N4OK2.js +0 -150
  316. package/dist/chunk-4IQWQSEV.js +0 -27
  317. package/dist/chunk-4K76HG4V.js +0 -34
  318. package/dist/chunk-7EXSMZ2O.js +0 -29
  319. package/dist/chunk-7VXRBTRF.js +0 -110
  320. package/dist/chunk-ARXUKGZI.js +0 -58
  321. package/dist/chunk-B5OH43PR.js +0 -31
  322. package/dist/chunk-BW4QO7T6.js +0 -56
  323. package/dist/chunk-EK4TL7VW.js +0 -22
  324. package/dist/chunk-ERKJJDY6.js +0 -117
  325. package/dist/chunk-G4GT4X3J.js +0 -240
  326. package/dist/chunk-GPOSTBDQ.js +0 -193
  327. package/dist/chunk-IRUFNC4L.js +0 -26
  328. package/dist/chunk-J2MAXMIP.js +0 -105
  329. package/dist/chunk-MFMQO6IS.js +0 -127
  330. package/dist/chunk-PBQGXOVX.js +0 -31
  331. package/dist/chunk-STMAKLLG.js +0 -24
  332. package/dist/chunk-WP233RH2.js +0 -80
  333. package/dist/chunk-WWOYFWFB.js +0 -137
  334. package/dist/chunk-X7FGBUA4.js +0 -117
  335. package/dist/chunk-YSPIFSDI.js +0 -136
  336. package/dist/chunk-ZCLKRGZ4.js +0 -81
  337. package/dist/react/components/ui/Alert.d.ts +0 -12
  338. package/dist/react/components/ui/Alert.js +0 -10
  339. package/dist/react/components/ui/Badge.d.ts +0 -7
  340. package/dist/react/components/ui/Badge.js +0 -8
  341. package/dist/react/components/ui/Button.d.ts +0 -7
  342. package/dist/react/components/ui/Button.js +0 -8
  343. package/dist/react/components/ui/DataTable.d.ts +0 -8
  344. package/dist/react/components/ui/DataTable.js +0 -22
  345. package/dist/react/components/ui/DomainDisplay.d.ts +0 -12
  346. package/dist/react/components/ui/DomainDisplay.js +0 -31
  347. package/dist/react/components/ui/Input.d.ts +0 -5
  348. package/dist/react/components/ui/Input.js +0 -8
  349. package/dist/react/components/ui/Label.d.ts +0 -5
  350. package/dist/react/components/ui/Label.js +0 -8
  351. package/dist/react/components/ui/Pagination.d.ts +0 -42
  352. package/dist/react/components/ui/Pagination.js +0 -20
  353. package/dist/react/components/ui/Select.d.ts +0 -15
  354. package/dist/react/components/ui/Select.js +0 -27
  355. package/dist/react/components/ui/Skeleton.d.ts +0 -6
  356. package/dist/react/components/ui/Skeleton.js +0 -8
  357. package/dist/react/components/ui/TimezoneDisplay.d.ts +0 -22
  358. package/dist/react/components/ui/TimezoneDisplay.js +0 -83
  359. package/dist/react/components/ui/Tooltip.d.ts +0 -21
  360. package/dist/react/components/ui/Tooltip.js +0 -94
  361. package/dist/react/components/ui/data-table/DataTable.d.ts +0 -2
  362. package/dist/react/components/ui/data-table/DataTable.js +0 -22
  363. package/dist/react/components/ui/data-table/DataTableBody.d.ts +0 -19
  364. package/dist/react/components/ui/data-table/DataTableBody.js +0 -10
  365. package/dist/react/components/ui/data-table/DataTableBulkActions.d.ts +0 -17
  366. package/dist/react/components/ui/data-table/DataTableBulkActions.js +0 -12
  367. package/dist/react/components/ui/data-table/DataTableFilters.d.ts +0 -15
  368. package/dist/react/components/ui/data-table/DataTableFilters.js +0 -13
  369. package/dist/react/components/ui/data-table/DataTablePagination.d.ts +0 -10
  370. package/dist/react/components/ui/data-table/DataTablePagination.js +0 -11
  371. package/dist/react/components/ui/data-table/DataTableSearch.d.ts +0 -24
  372. package/dist/react/components/ui/data-table/DataTableSearch.js +0 -12
  373. package/dist/react/components/ui/data-table/index.d.ts +0 -13
  374. package/dist/react/components/ui/data-table/index.js +0 -42
  375. package/dist/react/components/ui/data-table/types.d.ts +0 -120
  376. package/dist/react/components/ui/data-table/types.js +0 -9
  377. package/dist/react/components/ui/loading-bar.d.ts +0 -20
  378. package/dist/react/components/ui/loading-bar.js +0 -15
  379. package/dist/react/error/error-display.d.ts +0 -48
  380. package/dist/react/error/error-display.js +0 -30
  381. package/dist/react/error/index.d.ts +0 -6
  382. package/dist/react/error/index.js +0 -30
  383. package/dist/react/hooks/useDataTable.d.ts +0 -96
  384. package/dist/react/hooks/useDataTable.js +0 -151
  385. package/dist/react/hooks/useDebounce.d.ts +0 -7
  386. package/dist/react/hooks/useDebounce.js +0 -7
  387. package/dist/react/hooks/useExitIntent.d.ts +0 -35
  388. package/dist/react/hooks/useExitIntent.js +0 -72
  389. package/dist/react/hooks/useTimezone.d.ts +0 -19
  390. package/dist/react/hooks/useTimezone.js +0 -11
  391. package/dist/react/utils/client-utils.d.ts +0 -3
  392. package/dist/react/utils/client-utils.js +0 -9
  393. package/dist/react/utils/qr-code.d.ts +0 -16
  394. package/dist/react/utils/qr-code.js +0 -215
  395. package/dist/{chunk-7PEVOMBO.js → chunk-AOWUPAPS.js} +0 -0
  396. package/dist/{chunk-VDRLJU6C.js → chunk-E2HYIONP.js} +3 -3
  397. package/dist/{chunk-7WG7XPXC.js → chunk-KKZCNF6U.js} +3 -3
  398. package/dist/{chunk-UQ3Z3ZAF.js → chunk-P7WHMKN5.js} +3 -3
  399. /package/dist/{chunk-M22Z2NO6.js → core/auth/services/refresh-token-store.js} +0 -0
@@ -1,120 +0,0 @@
1
- /**
2
- * DataTable Types
3
- *
4
- * DataTable 컴포넌트의 모든 타입 정의
5
- */
6
- import { ReactNode } from "react";
7
- export interface DataTableLabels {
8
- search?: string;
9
- filter?: string;
10
- filterActive?: string;
11
- clearFilters?: string;
12
- selectAll?: string;
13
- selectAllShort?: string;
14
- selected?: string;
15
- processing?: string;
16
- processingItems?: string;
17
- loading?: string;
18
- perPage?: string;
19
- all?: string;
20
- min?: string;
21
- max?: string;
22
- previous?: string;
23
- next?: string;
24
- showing?: string;
25
- }
26
- export declare const DEFAULT_LABELS: Required<DataTableLabels>;
27
- export declare function formatLabel(template: string, values: Record<string, string | number>): string;
28
- export interface ColumnDef<T> {
29
- key: string;
30
- header: string;
31
- accessorKey?: keyof T;
32
- cell?: (item: T) => React.ReactNode;
33
- sortable?: boolean;
34
- /** 컬럼 선호 폭. 미지정 시 minWidth 의 fallback 으로도 사용됨 — "fill remaining" 컬럼(예: width:"100%")에서는 minWidth 를 명시(예: "0")해서 sibling 컬럼이 짜부라지지 않도록 할 것. */
35
- width?: string;
36
- /** th 의 min-width. 미지정 시 width 값으로 fallback. "fill remaining" 컬럼은 "0" 명시 권장. */
37
- minWidth?: string;
38
- /** th/td 의 max-width. td 는 maxWidth ?? width 로 적용 — overflow:hidden 콘텐츠와 함께 쓰면 ellipsize 가능. */
39
- maxWidth?: string;
40
- className?: string;
41
- hidden?: boolean;
42
- responsive?: {
43
- sm?: boolean;
44
- md?: boolean;
45
- lg?: boolean;
46
- xl?: boolean;
47
- };
48
- }
49
- export interface BulkAction {
50
- key: string;
51
- label: string;
52
- icon?: React.ReactNode;
53
- variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
54
- onClick: (selectedIds: string[]) => Promise<void>;
55
- disabled?: (selectedIds: string[]) => boolean;
56
- }
57
- export interface FilterConfig {
58
- key: string;
59
- label: string;
60
- type: 'text' | 'select' | 'date' | 'number' | 'switch' | 'range';
61
- options?: {
62
- value: string;
63
- label: string;
64
- }[];
65
- placeholder?: string;
66
- className?: string;
67
- inputType?: 'text' | 'number' | 'date';
68
- minPlaceholder?: string;
69
- maxPlaceholder?: string;
70
- /** 필터 모드: 'server'(기본값)는 서버 사이드, 'client'는 클라이언트 사이드 필터링 */
71
- filterMode?: 'server' | 'client';
72
- /** 클라이언트 사이드 필터링 함수 (filterMode === 'client'일 때 사용) */
73
- filterFn?: (item: any, value: any) => boolean;
74
- }
75
- export interface PaginationConfig {
76
- page: number;
77
- pageSize: number;
78
- total: number;
79
- pageSizeOptions?: number[];
80
- onPageChange: (page: number) => void;
81
- onPageSizeChange: (pageSize: number) => void;
82
- }
83
- export interface SortConfig {
84
- sort: string;
85
- order: 'asc' | 'desc';
86
- onSortChange: (sort: string, order: 'asc' | 'desc') => void;
87
- }
88
- export interface DataTableProps<T> {
89
- data: T[];
90
- columns: ColumnDef<T>[];
91
- loading?: boolean;
92
- error?: string | null;
93
- pagination?: PaginationConfig;
94
- sort?: SortConfig;
95
- bulkActions?: BulkAction[];
96
- filters?: FilterConfig[];
97
- filterValues?: Record<string, any>;
98
- onFilterChange?: (key: string, value: any) => void;
99
- onClearFilters?: () => void;
100
- selectable?: boolean;
101
- onSelectionChange?: (selectedIds: string[]) => void;
102
- selectedIds?: string[];
103
- getRowId: (item: T) => string;
104
- className?: string;
105
- emptyMessage?: string;
106
- searchPlaceholder?: string;
107
- onSearch?: (search: string) => void;
108
- onSearchValueChange?: (searchValue: string) => void;
109
- searchValue?: string;
110
- showFilters?: boolean;
111
- onToggleFilters?: (show: boolean) => void;
112
- createButton?: ReactNode | {
113
- label: string;
114
- onClick: () => void;
115
- };
116
- /** i18n labels - 미제공 시 영어 기본값 사용 */
117
- labels?: Partial<DataTableLabels>;
118
- /** URL 쿼리 파라미터와 상태 동기화 (기본값: false) */
119
- syncWithUrl?: boolean;
120
- }
@@ -1,9 +0,0 @@
1
- import {
2
- DEFAULT_LABELS,
3
- formatLabel
4
- } from "../../../../chunk-B5OH43PR.js";
5
- import "../../../../chunk-ORMEWXMH.js";
6
- export {
7
- DEFAULT_LABELS,
8
- formatLabel
9
- };
@@ -1,20 +0,0 @@
1
- interface LoadingBarProps {
2
- className?: string;
3
- size?: "sm" | "md" | "lg";
4
- variant?: "default" | "primary" | "secondary";
5
- animated?: boolean;
6
- }
7
- export declare function LoadingBar({ className, size, variant, animated }: LoadingBarProps): import("react/jsx-runtime").JSX.Element;
8
- export declare function LoadingBarWithText({ className, size, variant, text, animated }: LoadingBarProps & {
9
- text?: string;
10
- }): import("react/jsx-runtime").JSX.Element;
11
- export declare function LoadingBarCompact({ className, size, variant, animated }: LoadingBarProps): import("react/jsx-runtime").JSX.Element;
12
- interface LoadingCardProps {
13
- variant?: "card" | "bar" | "compact" | "text";
14
- text?: string;
15
- className?: string;
16
- size?: "sm" | "md" | "lg";
17
- animated?: boolean;
18
- }
19
- export declare function LoadingCard({ variant, text, className, size, animated }: LoadingCardProps): import("react/jsx-runtime").JSX.Element;
20
- export {};
@@ -1,15 +0,0 @@
1
- "use client";
2
- import {
3
- LoadingBar,
4
- LoadingBarCompact,
5
- LoadingBarWithText,
6
- LoadingCard
7
- } from "../../../chunk-X7FGBUA4.js";
8
- import "../../../chunk-4K76HG4V.js";
9
- import "../../../chunk-ORMEWXMH.js";
10
- export {
11
- LoadingBar,
12
- LoadingBarCompact,
13
- LoadingBarWithText,
14
- LoadingCard
15
- };
@@ -1,48 +0,0 @@
1
- /**
2
- * 프론트엔드 에러 표시 유틸리티
3
- * Toast 알림, 에러 UI 표시 등
4
- */
5
- export { getFriendlyMessage, getErrorDisplayInfo, type IErrorDisplay } from '@withwiz/core/error/friendly-messages-v2';
6
- export { extractErrorInfo } from '@withwiz/core/error/extract-error-info';
7
- type TLocale = 'ko' | 'en';
8
- /**
9
- * API 에러 응답 인터페이스
10
- */
11
- export interface IApiErrorResponse {
12
- success: false;
13
- error: {
14
- code: number;
15
- message: string;
16
- details?: unknown;
17
- };
18
- }
19
- /**
20
- * 에러 코드로 친화적 토스트 표시
21
- */
22
- export declare function showFriendlyError(errorOrCode: number | IApiErrorResponse | Error, options?: {
23
- locale?: TLocale;
24
- duration?: number;
25
- showCode?: boolean;
26
- onAuthError?: () => void;
27
- onRateLimitError?: () => void;
28
- }): void;
29
- /**
30
- * API 응답에서 에러 처리
31
- */
32
- export declare function handleApiResponse<T>(response: Response, options?: {
33
- showToast?: boolean;
34
- locale?: TLocale;
35
- onAuthError?: () => void;
36
- }): Promise<T>;
37
- /**
38
- * 에러 메시지 포맷 (인라인 표시용)
39
- */
40
- export declare function formatInlineError(code: number, locale?: TLocale): string;
41
- /**
42
- * 에러 아이콘 가져오기
43
- */
44
- export declare function getErrorIcon(code: number): string;
45
- /**
46
- * HTTP 상태 코드에서 기본 에러 코드 가져오기
47
- */
48
- export declare function getDefaultErrorCode(status: number): number;
@@ -1,30 +0,0 @@
1
- import {
2
- formatInlineError,
3
- getDefaultErrorCode,
4
- getErrorIcon,
5
- handleApiResponse,
6
- showFriendlyError
7
- } from "../../chunk-ERKJJDY6.js";
8
- import {
9
- extractErrorInfo
10
- } from "../../chunk-6HQ5JHL4.js";
11
- import {
12
- getErrorDisplayInfo,
13
- getFriendlyMessage
14
- } from "../../chunk-5S7M2AJL.js";
15
- import "../../chunk-7WG7XPXC.js";
16
- import "../../chunk-AMZWDLJ4.js";
17
- import "../../chunk-VUYS3SU7.js";
18
- import "../../chunk-ATAQRXTH.js";
19
- import "../../chunk-XQIAXMRY.js";
20
- import "../../chunk-ORMEWXMH.js";
21
- export {
22
- extractErrorInfo,
23
- formatInlineError,
24
- getDefaultErrorCode,
25
- getErrorDisplayInfo,
26
- getErrorIcon,
27
- getFriendlyMessage,
28
- handleApiResponse,
29
- showFriendlyError
30
- };
@@ -1,6 +0,0 @@
1
- /**
2
- * 에러 처리 — React 의존 항목
3
- *
4
- * sonner 기반 toast 알림.
5
- */
6
- export * from "./error-display";
@@ -1,30 +0,0 @@
1
- import {
2
- formatInlineError,
3
- getDefaultErrorCode,
4
- getErrorIcon,
5
- handleApiResponse,
6
- showFriendlyError
7
- } from "../../chunk-ERKJJDY6.js";
8
- import {
9
- extractErrorInfo
10
- } from "../../chunk-6HQ5JHL4.js";
11
- import {
12
- getErrorDisplayInfo,
13
- getFriendlyMessage
14
- } from "../../chunk-5S7M2AJL.js";
15
- import "../../chunk-7WG7XPXC.js";
16
- import "../../chunk-AMZWDLJ4.js";
17
- import "../../chunk-VUYS3SU7.js";
18
- import "../../chunk-ATAQRXTH.js";
19
- import "../../chunk-XQIAXMRY.js";
20
- import "../../chunk-ORMEWXMH.js";
21
- export {
22
- extractErrorInfo,
23
- formatInlineError,
24
- getDefaultErrorCode,
25
- getErrorDisplayInfo,
26
- getErrorIcon,
27
- getFriendlyMessage,
28
- handleApiResponse,
29
- showFriendlyError
30
- };
@@ -1,96 +0,0 @@
1
- export interface DataTableFilters {
2
- search?: string;
3
- [key: string]: any;
4
- }
5
- export interface DataTableSort {
6
- sort: string;
7
- order: 'asc' | 'desc';
8
- }
9
- export interface DataTablePagination {
10
- page: number;
11
- pageSize: number;
12
- total: number;
13
- }
14
- export interface UseDataTableOptions<T> {
15
- initialFilters?: DataTableFilters;
16
- initialSort?: DataTableSort;
17
- initialPagination?: Partial<DataTablePagination>;
18
- debounceMs?: number;
19
- onDataChange?: (params: {
20
- filters: DataTableFilters;
21
- sort: DataTableSort;
22
- pagination: DataTablePagination;
23
- }) => Promise<void>;
24
- }
25
- export interface UseDataTableState<T> {
26
- data: T[];
27
- loading: boolean;
28
- error: string | null;
29
- total: number;
30
- filters: DataTableFilters;
31
- sort: DataTableSort;
32
- pagination: DataTablePagination;
33
- selectedIds: string[];
34
- }
35
- export interface UseDataTableDataActions<T> {
36
- setData: (data: T[]) => void;
37
- setLoading: (loading: boolean) => void;
38
- setError: (error: string | null) => void;
39
- setTotal: (total: number) => void;
40
- }
41
- export interface UseDataTableFilterActions {
42
- setFilters: (filters: DataTableFilters) => void;
43
- updateFilter: (key: string, value: any) => void;
44
- clearFilters: () => void;
45
- }
46
- export interface UseDataTableSortActions {
47
- setSort: (sort: string, order?: 'asc' | 'desc') => void;
48
- }
49
- export interface UseDataTablePaginationActions {
50
- setPage: (page: number) => void;
51
- setPageSize: (pageSize: number) => void;
52
- }
53
- export interface UseDataTableSelectionActions {
54
- setSelectedIds: (ids: string[]) => void;
55
- toggleSelection: (id: string) => void;
56
- selectAll: () => void;
57
- clearSelection: () => void;
58
- }
59
- export interface UseDataTableActions {
60
- refresh: () => Promise<void>;
61
- bulkAction: (action: (ids: string[]) => Promise<void>) => Promise<void>;
62
- }
63
- export interface UseDataTableReturn<T> {
64
- data: T[];
65
- loading: boolean;
66
- error: string | null;
67
- total: number;
68
- filters: DataTableFilters;
69
- sort: DataTableSort;
70
- pagination: DataTablePagination;
71
- selectedIds: string[];
72
- setData: (data: T[]) => void;
73
- setLoading: (loading: boolean) => void;
74
- setError: (error: string | null) => void;
75
- setTotal: (total: number) => void;
76
- setFilters: (filters: DataTableFilters) => void;
77
- updateFilter: (key: string, value: any) => void;
78
- clearFilters: () => void;
79
- setSort: (sort: string, order?: 'asc' | 'desc') => void;
80
- setPage: (page: number) => void;
81
- setPageSize: (pageSize: number) => void;
82
- setSelectedIds: (ids: string[]) => void;
83
- toggleSelection: (id: string) => void;
84
- selectAll: () => void;
85
- clearSelection: () => void;
86
- refresh: () => Promise<void>;
87
- bulkAction: (action: (ids: string[]) => Promise<void>) => Promise<void>;
88
- state: UseDataTableState<T>;
89
- dataActions: UseDataTableDataActions<T>;
90
- filterActions: UseDataTableFilterActions;
91
- sortActions: UseDataTableSortActions;
92
- paginationActions: UseDataTablePaginationActions;
93
- selectionActions: UseDataTableSelectionActions;
94
- actions: UseDataTableActions;
95
- }
96
- export declare function useDataTable<T>({ initialFilters, initialSort, initialPagination, debounceMs, onDataChange, }: UseDataTableOptions<T>): UseDataTableReturn<T>;
@@ -1,151 +0,0 @@
1
- "use client";
2
- import {
3
- useDebounce
4
- } from "../../chunk-7EXSMZ2O.js";
5
- import {
6
- __spreadProps,
7
- __spreadValues
8
- } from "../../chunk-ORMEWXMH.js";
9
-
10
- // src/react/hooks/useDataTable.ts
11
- import { useState, useCallback, useEffect } from "react";
12
- function useDataTable({
13
- initialFilters = {},
14
- initialSort = { sort: "createdAt", order: "desc" },
15
- initialPagination = { page: 1, pageSize: 10, total: 0 },
16
- debounceMs = 500,
17
- onDataChange
18
- }) {
19
- const [data, setData] = useState([]);
20
- const [loading, setLoading] = useState(false);
21
- const [error, setError] = useState(null);
22
- const [total, setTotal] = useState(initialPagination.total || 0);
23
- const [filters, setFilters] = useState(initialFilters);
24
- const [sort, setSortState] = useState(initialSort);
25
- const [pagination, setPaginationState] = useState({
26
- page: initialPagination.page || 1,
27
- pageSize: initialPagination.pageSize || 10,
28
- total: initialPagination.total || 0
29
- });
30
- const [selectedIds, setSelectedIds] = useState([]);
31
- const debouncedSearch = useDebounce(filters.search || "", debounceMs);
32
- const refresh = useCallback(async () => {
33
- if (!onDataChange) return;
34
- setLoading(true);
35
- setError(null);
36
- try {
37
- await onDataChange({
38
- filters: __spreadProps(__spreadValues({}, filters), { search: debouncedSearch }),
39
- sort,
40
- pagination
41
- });
42
- } catch (err) {
43
- setError(err instanceof Error ? err.message : "An error occurred");
44
- } finally {
45
- setLoading(false);
46
- }
47
- }, [filters, debouncedSearch, sort, pagination, onDataChange]);
48
- const updateFilter = useCallback((key, value) => {
49
- setFilters((prev) => __spreadProps(__spreadValues({}, prev), {
50
- [key]: value
51
- }));
52
- if (key !== "search") {
53
- setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), { page: 1 }));
54
- }
55
- }, []);
56
- const clearFilters = useCallback(() => {
57
- setFilters(initialFilters);
58
- setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), { page: 1 }));
59
- }, [initialFilters]);
60
- const setSort = useCallback((newSort, newOrder) => {
61
- setSortState((prev) => {
62
- if (prev.sort === newSort) {
63
- return {
64
- sort: newSort,
65
- order: newOrder || (prev.order === "asc" ? "desc" : "asc")
66
- };
67
- }
68
- return {
69
- sort: newSort,
70
- order: newOrder || "asc"
71
- };
72
- });
73
- setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), { page: 1 }));
74
- }, []);
75
- const setPage = useCallback((page) => {
76
- setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), { page }));
77
- }, []);
78
- const setPageSize = useCallback((pageSize) => {
79
- setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), { pageSize, page: 1 }));
80
- }, []);
81
- const toggleSelection = useCallback((id) => {
82
- setSelectedIds(
83
- (prev) => prev.includes(id) ? prev.filter((selectedId) => selectedId !== id) : [...prev, id]
84
- );
85
- }, []);
86
- const selectAll = useCallback(() => {
87
- setSelectedIds(data.map((item) => item.id));
88
- }, [data]);
89
- const clearSelection = useCallback(() => {
90
- setSelectedIds([]);
91
- }, []);
92
- const bulkAction = useCallback(async (action) => {
93
- if (selectedIds.length === 0) return;
94
- setLoading(true);
95
- try {
96
- await action(selectedIds);
97
- setSelectedIds([]);
98
- await refresh();
99
- } catch (err) {
100
- setError(err instanceof Error ? err.message : "Bulk action failed");
101
- } finally {
102
- setLoading(false);
103
- }
104
- }, [selectedIds, refresh]);
105
- useEffect(() => {
106
- if (debouncedSearch !== filters.search) {
107
- setPaginationState((prev) => __spreadProps(__spreadValues({}, prev), { page: 1 }));
108
- }
109
- }, [debouncedSearch, filters.search]);
110
- useEffect(() => {
111
- refresh();
112
- }, [debouncedSearch, sort.sort, sort.order, pagination.page, pagination.pageSize]);
113
- return {
114
- // 기존 flat 리턴 (하위 호환)
115
- data,
116
- loading,
117
- error,
118
- total,
119
- filters,
120
- sort,
121
- pagination,
122
- selectedIds,
123
- setData,
124
- setLoading,
125
- setError,
126
- setTotal,
127
- setFilters,
128
- updateFilter,
129
- clearFilters,
130
- setSort,
131
- setPage,
132
- setPageSize,
133
- setSelectedIds,
134
- toggleSelection,
135
- selectAll,
136
- clearSelection,
137
- refresh,
138
- bulkAction,
139
- // 새 그룹화 리턴
140
- state: { data, loading, error, total, filters, sort, pagination, selectedIds },
141
- dataActions: { setData, setLoading, setError, setTotal },
142
- filterActions: { setFilters, updateFilter, clearFilters },
143
- sortActions: { setSort },
144
- paginationActions: { setPage, setPageSize },
145
- selectionActions: { setSelectedIds, toggleSelection, selectAll, clearSelection },
146
- actions: { refresh, bulkAction }
147
- };
148
- }
149
- export {
150
- useDataTable
151
- };
@@ -1,7 +0,0 @@
1
- /**
2
- * 디바운싱을 위한 커스텀 훅
3
- * @param value 디바운싱할 값
4
- * @param delay 지연 시간 (밀리초)
5
- * @returns 디바운싱된 값
6
- */
7
- export declare function useDebounce<T>(value: T, delay: number): T;
@@ -1,7 +0,0 @@
1
- import {
2
- useDebounce
3
- } from "../../chunk-7EXSMZ2O.js";
4
- import "../../chunk-ORMEWXMH.js";
5
- export {
6
- useDebounce
7
- };
@@ -1,35 +0,0 @@
1
- export interface UseExitIntentOptions {
2
- /** 팝업 표시 쿨다운 시간 (밀리초) - 기본 24시간 */
3
- cooldown?: number;
4
- /** 페이지 진입 후 대기 시간 (밀리초) - 기본 5초 */
5
- delay?: number;
6
- /** localStorage에 저장할 키 */
7
- storageKey?: string;
8
- /** 비활성화 여부 */
9
- disabled?: boolean;
10
- }
11
- export interface UseExitIntentReturn {
12
- /** 팝업 표시 여부 */
13
- showPopup: boolean;
14
- /** 팝업 닫기 */
15
- closePopup: () => void;
16
- /** 다시 보지 않기 처리 */
17
- dismissForever: () => void;
18
- }
19
- /**
20
- * Exit Intent 감지 훅
21
- *
22
- * @example
23
- * ```tsx
24
- * const { showPopup, closePopup, dismissForever } = useExitIntent({
25
- * cooldown: 86400000, // 24시간
26
- * delay: 5000, // 5초 후 활성화
27
- * storageKey: 'my-popup',
28
- * });
29
- *
30
- * if (showPopup) {
31
- * return <Modal onClose={closePopup} onDismiss={dismissForever} />;
32
- * }
33
- * ```
34
- */
35
- export declare function useExitIntent(options?: UseExitIntentOptions): UseExitIntentReturn;
@@ -1,72 +0,0 @@
1
- "use client";
2
- import "../../chunk-ORMEWXMH.js";
3
-
4
- // src/react/hooks/useExitIntent.ts
5
- import { useState, useEffect, useCallback, useRef } from "react";
6
- var DEFAULT_COOLDOWN = 24 * 60 * 60 * 1e3;
7
- var DEFAULT_DELAY = 5e3;
8
- var DEFAULT_STORAGE_KEY = "exit-intent-popup";
9
- function useExitIntent(options = {}) {
10
- const {
11
- cooldown = DEFAULT_COOLDOWN,
12
- delay = DEFAULT_DELAY,
13
- storageKey = DEFAULT_STORAGE_KEY,
14
- disabled = false
15
- } = options;
16
- const [showPopup, setShowPopup] = useState(false);
17
- const hasTriggered = useRef(false);
18
- const isReady = useRef(false);
19
- const canShowPopup = useCallback(() => {
20
- if (typeof window === "undefined") return false;
21
- const lastShown = localStorage.getItem(`${storageKey}-last-shown`);
22
- const isDismissed = localStorage.getItem(`${storageKey}-dismissed`) === "true";
23
- if (isDismissed) return false;
24
- if (!lastShown) return true;
25
- const timeSinceLastShown = Date.now() - parseInt(lastShown, 10);
26
- return timeSinceLastShown >= cooldown;
27
- }, [storageKey, cooldown]);
28
- const triggerPopup = useCallback(() => {
29
- if (hasTriggered.current || !isReady.current || disabled) return;
30
- if (!canShowPopup()) return;
31
- hasTriggered.current = true;
32
- setShowPopup(true);
33
- localStorage.setItem(`${storageKey}-last-shown`, Date.now().toString());
34
- }, [canShowPopup, storageKey, disabled]);
35
- const closePopup = useCallback(() => {
36
- setShowPopup(false);
37
- }, []);
38
- const dismissForever = useCallback(() => {
39
- localStorage.setItem(`${storageKey}-dismissed`, "true");
40
- setShowPopup(false);
41
- }, [storageKey]);
42
- useEffect(() => {
43
- if (disabled) return;
44
- const delayTimer = setTimeout(() => {
45
- isReady.current = true;
46
- }, delay);
47
- const handleMouseLeave = (e) => {
48
- if (e.clientY < 10 && isReady.current) {
49
- triggerPopup();
50
- }
51
- };
52
- const handleVisibilityChange = () => {
53
- if (document.visibilityState === "hidden" && isReady.current) {
54
- }
55
- };
56
- document.addEventListener("mouseleave", handleMouseLeave);
57
- document.addEventListener("visibilitychange", handleVisibilityChange);
58
- return () => {
59
- clearTimeout(delayTimer);
60
- document.removeEventListener("mouseleave", handleMouseLeave);
61
- document.removeEventListener("visibilitychange", handleVisibilityChange);
62
- };
63
- }, [delay, disabled, triggerPopup]);
64
- return {
65
- showPopup,
66
- closePopup,
67
- dismissForever
68
- };
69
- }
70
- export {
71
- useExitIntent
72
- };
@@ -1,19 +0,0 @@
1
- /**
2
- * 사용자 타임존 정보를 관리하는 Hook
3
- */
4
- export declare function useTimezone(): {
5
- isLoading: boolean;
6
- refreshTimezone: () => void;
7
- timezone: string;
8
- offset: number;
9
- offsetFormatted: string;
10
- };
11
- /**
12
- * 타임존 정보를 간단하게 표시하는 Hook
13
- */
14
- export declare function useSimpleTimezone(): {
15
- timezone: string;
16
- offsetFormatted: string;
17
- isLoading: boolean;
18
- display: string;
19
- };
@@ -1,11 +0,0 @@
1
- "use client";
2
- import {
3
- useSimpleTimezone,
4
- useTimezone
5
- } from "../../chunk-WP233RH2.js";
6
- import "../../chunk-WWOYFWFB.js";
7
- import "../../chunk-ORMEWXMH.js";
8
- export {
9
- useSimpleTimezone,
10
- useTimezone
11
- };