@withwiz/cms-kit 0.1.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 (327) hide show
  1. package/README.ko.md +146 -0
  2. package/README.md +146 -0
  3. package/dist/chunk-2REYWBQ6.js +32 -0
  4. package/dist/chunk-2REYWBQ6.js.map +1 -0
  5. package/dist/chunk-2SYUEQ6J.mjs +17 -0
  6. package/dist/chunk-2SYUEQ6J.mjs.map +1 -0
  7. package/dist/chunk-3ILEMZAL.mjs +32 -0
  8. package/dist/chunk-3ILEMZAL.mjs.map +1 -0
  9. package/dist/chunk-3Y2TQCHU.mjs +33 -0
  10. package/dist/chunk-3Y2TQCHU.mjs.map +1 -0
  11. package/dist/chunk-4LSFAAZW.js +1 -0
  12. package/dist/chunk-4LSFAAZW.js.map +1 -0
  13. package/dist/chunk-4W3X7OKF.js +100 -0
  14. package/dist/chunk-4W3X7OKF.js.map +1 -0
  15. package/dist/chunk-5JUIMXNF.js +108 -0
  16. package/dist/chunk-5JUIMXNF.js.map +1 -0
  17. package/dist/chunk-5RDMODGV.mjs +34 -0
  18. package/dist/chunk-5RDMODGV.mjs.map +1 -0
  19. package/dist/chunk-6ES4W2DL.mjs +1 -0
  20. package/dist/chunk-6ES4W2DL.mjs.map +1 -0
  21. package/dist/chunk-6EZ3QE5N.js +71 -0
  22. package/dist/chunk-6EZ3QE5N.js.map +1 -0
  23. package/dist/chunk-6JFERXNE.mjs +16 -0
  24. package/dist/chunk-6JFERXNE.mjs.map +1 -0
  25. package/dist/chunk-7SWW3ZIN.js +17 -0
  26. package/dist/chunk-7SWW3ZIN.js.map +1 -0
  27. package/dist/chunk-AXR56AUD.mjs +1 -0
  28. package/dist/chunk-AXR56AUD.mjs.map +1 -0
  29. package/dist/chunk-BE7JDL64.js +154 -0
  30. package/dist/chunk-BE7JDL64.js.map +1 -0
  31. package/dist/chunk-BHN2SRZC.js +51 -0
  32. package/dist/chunk-BHN2SRZC.js.map +1 -0
  33. package/dist/chunk-BJTO5JO5.mjs +11 -0
  34. package/dist/chunk-BJTO5JO5.mjs.map +1 -0
  35. package/dist/chunk-BWKKHCDG.mjs +164 -0
  36. package/dist/chunk-BWKKHCDG.mjs.map +1 -0
  37. package/dist/chunk-C5WFZJM4.js +218 -0
  38. package/dist/chunk-C5WFZJM4.js.map +1 -0
  39. package/dist/chunk-CGVFB23E.mjs +123 -0
  40. package/dist/chunk-CGVFB23E.mjs.map +1 -0
  41. package/dist/chunk-D2VDTRXO.js +1 -0
  42. package/dist/chunk-D2VDTRXO.js.map +1 -0
  43. package/dist/chunk-D75ADHVM.mjs +181 -0
  44. package/dist/chunk-D75ADHVM.mjs.map +1 -0
  45. package/dist/chunk-DCIF4XJL.js +309 -0
  46. package/dist/chunk-DCIF4XJL.js.map +1 -0
  47. package/dist/chunk-DGUM43GV.js +11 -0
  48. package/dist/chunk-DGUM43GV.js.map +1 -0
  49. package/dist/chunk-DSORCGJK.js +44 -0
  50. package/dist/chunk-DSORCGJK.js.map +1 -0
  51. package/dist/chunk-E5YUAOJI.js +27 -0
  52. package/dist/chunk-E5YUAOJI.js.map +1 -0
  53. package/dist/chunk-EG6NVPP2.js +164 -0
  54. package/dist/chunk-EG6NVPP2.js.map +1 -0
  55. package/dist/chunk-EL7YGOTY.js +1 -0
  56. package/dist/chunk-EL7YGOTY.js.map +1 -0
  57. package/dist/chunk-EM4MQEWV.mjs +100 -0
  58. package/dist/chunk-EM4MQEWV.mjs.map +1 -0
  59. package/dist/chunk-FCCCG5Z7.mjs +108 -0
  60. package/dist/chunk-FCCCG5Z7.mjs.map +1 -0
  61. package/dist/chunk-FEPGJ7WN.mjs +218 -0
  62. package/dist/chunk-FEPGJ7WN.mjs.map +1 -0
  63. package/dist/chunk-HXVWBFCN.js +16 -0
  64. package/dist/chunk-HXVWBFCN.js.map +1 -0
  65. package/dist/chunk-I5YMTJV6.mjs +51 -0
  66. package/dist/chunk-I5YMTJV6.mjs.map +1 -0
  67. package/dist/chunk-IMNWW7Q5.mjs +13 -0
  68. package/dist/chunk-IMNWW7Q5.mjs.map +1 -0
  69. package/dist/chunk-J5N76ASB.mjs +114 -0
  70. package/dist/chunk-J5N76ASB.mjs.map +1 -0
  71. package/dist/chunk-JBV26CUG.mjs +51 -0
  72. package/dist/chunk-JBV26CUG.mjs.map +1 -0
  73. package/dist/chunk-JMWXVXK5.js +53 -0
  74. package/dist/chunk-JMWXVXK5.js.map +1 -0
  75. package/dist/chunk-KWKV2GAH.js +60 -0
  76. package/dist/chunk-KWKV2GAH.js.map +1 -0
  77. package/dist/chunk-LDFE33ML.mjs +53 -0
  78. package/dist/chunk-LDFE33ML.mjs.map +1 -0
  79. package/dist/chunk-LF5LOI7K.mjs +174 -0
  80. package/dist/chunk-LF5LOI7K.mjs.map +1 -0
  81. package/dist/chunk-MMKAMH4U.mjs +16 -0
  82. package/dist/chunk-MMKAMH4U.mjs.map +1 -0
  83. package/dist/chunk-MUHFEEYW.js +33 -0
  84. package/dist/chunk-MUHFEEYW.js.map +1 -0
  85. package/dist/chunk-MUQYK5EO.js +1 -0
  86. package/dist/chunk-MUQYK5EO.js.map +1 -0
  87. package/dist/chunk-OBNALAMG.mjs +71 -0
  88. package/dist/chunk-OBNALAMG.mjs.map +1 -0
  89. package/dist/chunk-OLEYNPW6.js +25 -0
  90. package/dist/chunk-OLEYNPW6.js.map +1 -0
  91. package/dist/chunk-OYJRR3G2.js +123 -0
  92. package/dist/chunk-OYJRR3G2.js.map +1 -0
  93. package/dist/chunk-PLVG7AW3.js +16 -0
  94. package/dist/chunk-PLVG7AW3.js.map +1 -0
  95. package/dist/chunk-PYD4CES4.js +1 -0
  96. package/dist/chunk-PYD4CES4.js.map +1 -0
  97. package/dist/chunk-QACD2U6P.mjs +1 -0
  98. package/dist/chunk-QACD2U6P.mjs.map +1 -0
  99. package/dist/chunk-R5GGIVD4.js +10 -0
  100. package/dist/chunk-R5GGIVD4.js.map +1 -0
  101. package/dist/chunk-RCK5WCU5.mjs +25 -0
  102. package/dist/chunk-RCK5WCU5.mjs.map +1 -0
  103. package/dist/chunk-S6UUSM7S.js +13 -0
  104. package/dist/chunk-S6UUSM7S.js.map +1 -0
  105. package/dist/chunk-S7GOXCRM.js +114 -0
  106. package/dist/chunk-S7GOXCRM.js.map +1 -0
  107. package/dist/chunk-SMV5D5LO.mjs +28 -0
  108. package/dist/chunk-SMV5D5LO.mjs.map +1 -0
  109. package/dist/chunk-T7EVFD4G.mjs +60 -0
  110. package/dist/chunk-T7EVFD4G.mjs.map +1 -0
  111. package/dist/chunk-TLH3V4SY.mjs +1 -0
  112. package/dist/chunk-TLH3V4SY.mjs.map +1 -0
  113. package/dist/chunk-TUQ2CVAK.mjs +10 -0
  114. package/dist/chunk-TUQ2CVAK.mjs.map +1 -0
  115. package/dist/chunk-U6PVJKTB.js +51 -0
  116. package/dist/chunk-U6PVJKTB.js.map +1 -0
  117. package/dist/chunk-UXMMEEX4.mjs +27 -0
  118. package/dist/chunk-UXMMEEX4.mjs.map +1 -0
  119. package/dist/chunk-VVXNFFKI.mjs +44 -0
  120. package/dist/chunk-VVXNFFKI.mjs.map +1 -0
  121. package/dist/chunk-VZZ3RU3Q.js +28 -0
  122. package/dist/chunk-VZZ3RU3Q.js.map +1 -0
  123. package/dist/chunk-W4FWIZ2Y.js +34 -0
  124. package/dist/chunk-W4FWIZ2Y.js.map +1 -0
  125. package/dist/chunk-YEQFKOWD.mjs +154 -0
  126. package/dist/chunk-YEQFKOWD.mjs.map +1 -0
  127. package/dist/chunk-YPBKY4KY.mjs +1 -0
  128. package/dist/chunk-YPBKY4KY.mjs.map +1 -0
  129. package/dist/chunk-YY7K5CXX.js +174 -0
  130. package/dist/chunk-YY7K5CXX.js.map +1 -0
  131. package/dist/chunk-ZFORODOX.js +181 -0
  132. package/dist/chunk-ZFORODOX.js.map +1 -0
  133. package/dist/chunk-ZULSFSDG.mjs +309 -0
  134. package/dist/chunk-ZULSFSDG.mjs.map +1 -0
  135. package/dist/components/AdminManagerBase.d.mts +26 -0
  136. package/dist/components/AdminManagerBase.d.ts +26 -0
  137. package/dist/components/AdminManagerBase.js +13 -0
  138. package/dist/components/AdminManagerBase.js.map +1 -0
  139. package/dist/components/AdminManagerBase.mjs +12 -0
  140. package/dist/components/AdminManagerBase.mjs.map +1 -0
  141. package/dist/components/AdminManagerConfig.d.mts +83 -0
  142. package/dist/components/AdminManagerConfig.d.ts +83 -0
  143. package/dist/components/AdminManagerConfig.js +2 -0
  144. package/dist/components/AdminManagerConfig.js.map +1 -0
  145. package/dist/components/AdminManagerConfig.mjs +2 -0
  146. package/dist/components/AdminManagerConfig.mjs.map +1 -0
  147. package/dist/components/AdminShell.d.mts +30 -0
  148. package/dist/components/AdminShell.d.ts +30 -0
  149. package/dist/components/AdminShell.js +12 -0
  150. package/dist/components/AdminShell.js.map +1 -0
  151. package/dist/components/AdminShell.mjs +11 -0
  152. package/dist/components/AdminShell.mjs.map +1 -0
  153. package/dist/components/JsonLd.d.mts +32 -0
  154. package/dist/components/JsonLd.d.ts +32 -0
  155. package/dist/components/JsonLd.js +11 -0
  156. package/dist/components/JsonLd.js.map +1 -0
  157. package/dist/components/JsonLd.mjs +11 -0
  158. package/dist/components/JsonLd.mjs.map +1 -0
  159. package/dist/components/ResizableImage.d.mts +18 -0
  160. package/dist/components/ResizableImage.d.ts +18 -0
  161. package/dist/components/ResizableImage.js +10 -0
  162. package/dist/components/ResizableImage.js.map +1 -0
  163. package/dist/components/ResizableImage.mjs +9 -0
  164. package/dist/components/ResizableImage.mjs.map +1 -0
  165. package/dist/components/ToggleSwitch.d.mts +11 -0
  166. package/dist/components/ToggleSwitch.d.ts +11 -0
  167. package/dist/components/ToggleSwitch.js +10 -0
  168. package/dist/components/ToggleSwitch.js.map +1 -0
  169. package/dist/components/ToggleSwitch.mjs +9 -0
  170. package/dist/components/ToggleSwitch.mjs.map +1 -0
  171. package/dist/components/image-drop-zone.css +115 -0
  172. package/dist/components/index.d.mts +26 -0
  173. package/dist/components/index.d.ts +26 -0
  174. package/dist/components/index.js +35 -0
  175. package/dist/components/index.js.map +1 -0
  176. package/dist/components/index.mjs +35 -0
  177. package/dist/components/index.mjs.map +1 -0
  178. package/dist/components/toggle-switch.css +55 -0
  179. package/dist/hooks/index.d.mts +45 -0
  180. package/dist/hooks/index.d.ts +45 -0
  181. package/dist/hooks/index.js +25 -0
  182. package/dist/hooks/index.js.map +1 -0
  183. package/dist/hooks/index.mjs +25 -0
  184. package/dist/hooks/index.mjs.map +1 -0
  185. package/dist/hooks/useImageDropZone.d.mts +37 -0
  186. package/dist/hooks/useImageDropZone.d.ts +37 -0
  187. package/dist/hooks/useImageDropZone.js +13 -0
  188. package/dist/hooks/useImageDropZone.js.map +1 -0
  189. package/dist/hooks/useImageDropZone.mjs +12 -0
  190. package/dist/hooks/useImageDropZone.mjs.map +1 -0
  191. package/dist/hooks/useScrollReveal.d.mts +6 -0
  192. package/dist/hooks/useScrollReveal.d.ts +6 -0
  193. package/dist/hooks/useScrollReveal.js +12 -0
  194. package/dist/hooks/useScrollReveal.js.map +1 -0
  195. package/dist/hooks/useScrollReveal.mjs +11 -0
  196. package/dist/hooks/useScrollReveal.mjs.map +1 -0
  197. package/dist/image-drop-zone.css +115 -0
  198. package/dist/index-00a40-FQ.d.mts +136 -0
  199. package/dist/index-00a40-FQ.d.ts +136 -0
  200. package/dist/index.d.mts +35 -0
  201. package/dist/index.d.ts +35 -0
  202. package/dist/index.js +169 -0
  203. package/dist/index.js.map +1 -0
  204. package/dist/index.mjs +169 -0
  205. package/dist/index.mjs.map +1 -0
  206. package/dist/infrastructure/index.d.mts +4 -0
  207. package/dist/infrastructure/index.d.ts +4 -0
  208. package/dist/infrastructure/index.js +20 -0
  209. package/dist/infrastructure/index.js.map +1 -0
  210. package/dist/infrastructure/index.mjs +20 -0
  211. package/dist/infrastructure/index.mjs.map +1 -0
  212. package/dist/infrastructure/middleware/index.d.mts +3 -0
  213. package/dist/infrastructure/middleware/index.d.ts +3 -0
  214. package/dist/infrastructure/middleware/index.js +15 -0
  215. package/dist/infrastructure/middleware/index.js.map +1 -0
  216. package/dist/infrastructure/middleware/index.mjs +15 -0
  217. package/dist/infrastructure/middleware/index.mjs.map +1 -0
  218. package/dist/infrastructure/middleware/wrappers.d.mts +10 -0
  219. package/dist/infrastructure/middleware/wrappers.d.ts +10 -0
  220. package/dist/infrastructure/middleware/wrappers.js +15 -0
  221. package/dist/infrastructure/middleware/wrappers.js.map +1 -0
  222. package/dist/infrastructure/middleware/wrappers.mjs +15 -0
  223. package/dist/infrastructure/middleware/wrappers.mjs.map +1 -0
  224. package/dist/infrastructure/prisma.d.mts +5 -0
  225. package/dist/infrastructure/prisma.d.ts +5 -0
  226. package/dist/infrastructure/prisma.js +12 -0
  227. package/dist/infrastructure/prisma.js.map +1 -0
  228. package/dist/infrastructure/prisma.mjs +12 -0
  229. package/dist/infrastructure/prisma.mjs.map +1 -0
  230. package/dist/services/index.d.mts +22 -0
  231. package/dist/services/index.d.ts +22 -0
  232. package/dist/services/index.js +36 -0
  233. package/dist/services/index.js.map +1 -0
  234. package/dist/services/index.mjs +36 -0
  235. package/dist/services/index.mjs.map +1 -0
  236. package/dist/toggle-switch.css +55 -0
  237. package/dist/types/common.d.mts +14 -0
  238. package/dist/types/common.d.ts +14 -0
  239. package/dist/types/common.js +8 -0
  240. package/dist/types/common.js.map +1 -0
  241. package/dist/types/common.mjs +8 -0
  242. package/dist/types/common.mjs.map +1 -0
  243. package/dist/types/index.d.mts +1 -0
  244. package/dist/types/index.d.ts +1 -0
  245. package/dist/types/index.js +9 -0
  246. package/dist/types/index.js.map +1 -0
  247. package/dist/types/index.mjs +9 -0
  248. package/dist/types/index.mjs.map +1 -0
  249. package/dist/utils/admin-fetch.d.mts +11 -0
  250. package/dist/utils/admin-fetch.d.ts +11 -0
  251. package/dist/utils/admin-fetch.js +13 -0
  252. package/dist/utils/admin-fetch.js.map +1 -0
  253. package/dist/utils/admin-fetch.mjs +13 -0
  254. package/dist/utils/admin-fetch.mjs.map +1 -0
  255. package/dist/utils/api-helpers.d.mts +20 -0
  256. package/dist/utils/api-helpers.d.ts +20 -0
  257. package/dist/utils/api-helpers.js +12 -0
  258. package/dist/utils/api-helpers.js.map +1 -0
  259. package/dist/utils/api-helpers.mjs +12 -0
  260. package/dist/utils/api-helpers.mjs.map +1 -0
  261. package/dist/utils/date.d.mts +5 -0
  262. package/dist/utils/date.d.ts +5 -0
  263. package/dist/utils/date.js +12 -0
  264. package/dist/utils/date.js.map +1 -0
  265. package/dist/utils/date.mjs +12 -0
  266. package/dist/utils/date.mjs.map +1 -0
  267. package/dist/utils/html-sanitizer.d.mts +56 -0
  268. package/dist/utils/html-sanitizer.d.ts +56 -0
  269. package/dist/utils/html-sanitizer.js +11 -0
  270. package/dist/utils/html-sanitizer.js.map +1 -0
  271. package/dist/utils/html-sanitizer.mjs +11 -0
  272. package/dist/utils/html-sanitizer.mjs.map +1 -0
  273. package/dist/utils/image-variant-utils.d.mts +14 -0
  274. package/dist/utils/image-variant-utils.d.ts +14 -0
  275. package/dist/utils/image-variant-utils.js +10 -0
  276. package/dist/utils/image-variant-utils.js.map +1 -0
  277. package/dist/utils/image-variant-utils.mjs +10 -0
  278. package/dist/utils/image-variant-utils.mjs.map +1 -0
  279. package/dist/utils/image-variants.d.mts +13 -0
  280. package/dist/utils/image-variants.d.ts +13 -0
  281. package/dist/utils/image-variants.js +12 -0
  282. package/dist/utils/image-variants.js.map +1 -0
  283. package/dist/utils/image-variants.mjs +12 -0
  284. package/dist/utils/image-variants.mjs.map +1 -0
  285. package/dist/utils/index.d.mts +88 -0
  286. package/dist/utils/index.d.ts +88 -0
  287. package/dist/utils/index.js +92 -0
  288. package/dist/utils/index.js.map +1 -0
  289. package/dist/utils/index.mjs +92 -0
  290. package/dist/utils/index.mjs.map +1 -0
  291. package/dist/utils/jwt.d.mts +19 -0
  292. package/dist/utils/jwt.d.ts +19 -0
  293. package/dist/utils/jwt.js +9 -0
  294. package/dist/utils/jwt.js.map +1 -0
  295. package/dist/utils/jwt.mjs +9 -0
  296. package/dist/utils/jwt.mjs.map +1 -0
  297. package/dist/utils/r2-helpers.d.mts +9 -0
  298. package/dist/utils/r2-helpers.d.ts +9 -0
  299. package/dist/utils/r2-helpers.js +20 -0
  300. package/dist/utils/r2-helpers.js.map +1 -0
  301. package/dist/utils/r2-helpers.mjs +20 -0
  302. package/dist/utils/r2-helpers.mjs.map +1 -0
  303. package/dist/utils/r2-storage.d.mts +38 -0
  304. package/dist/utils/r2-storage.d.ts +38 -0
  305. package/dist/utils/r2-storage.js +17 -0
  306. package/dist/utils/r2-storage.js.map +1 -0
  307. package/dist/utils/r2-storage.mjs +17 -0
  308. package/dist/utils/r2-storage.mjs.map +1 -0
  309. package/dist/utils/route-params.d.mts +3 -0
  310. package/dist/utils/route-params.d.ts +3 -0
  311. package/dist/utils/route-params.js +8 -0
  312. package/dist/utils/route-params.js.map +1 -0
  313. package/dist/utils/route-params.mjs +8 -0
  314. package/dist/utils/route-params.mjs.map +1 -0
  315. package/dist/validators/index.d.mts +2 -0
  316. package/dist/validators/index.d.ts +2 -0
  317. package/dist/validators/index.js +11 -0
  318. package/dist/validators/index.js.map +1 -0
  319. package/dist/validators/index.mjs +11 -0
  320. package/dist/validators/index.mjs.map +1 -0
  321. package/dist/validators/shared.d.mts +6 -0
  322. package/dist/validators/shared.d.ts +6 -0
  323. package/dist/validators/shared.js +10 -0
  324. package/dist/validators/shared.js.map +1 -0
  325. package/dist/validators/shared.mjs +10 -0
  326. package/dist/validators/shared.mjs.map +1 -0
  327. package/package.json +257 -0
@@ -0,0 +1,45 @@
1
+ export { useScrollReveal, useScrollRevealAll } from './useScrollReveal.js';
2
+ import * as react from 'react';
3
+ export { useImageDropZone } from './useImageDropZone.js';
4
+
5
+ interface UseAdminListOptions<T, S extends string> {
6
+ initialItems: T[];
7
+ apiPath: string;
8
+ defaultSortKey: S;
9
+ normalizeItem?: (raw: unknown) => T;
10
+ defaultFilterValue?: string;
11
+ }
12
+ declare function useAdminList<T, S extends string = string>(options: UseAdminListOptions<T, S>): {
13
+ items: T[];
14
+ setItems: react.Dispatch<react.SetStateAction<T[]>>;
15
+ searchQuery: string;
16
+ setSearchQuery: react.Dispatch<react.SetStateAction<string>>;
17
+ sortKey: S;
18
+ setSortKey: react.Dispatch<react.SetStateAction<S>>;
19
+ filterValue: string;
20
+ setFilterValue: react.Dispatch<react.SetStateAction<string>>;
21
+ fetchList: (sort: S) => Promise<void>;
22
+ };
23
+
24
+ declare function useAdminForm<F extends object>(initialForm: F): {
25
+ tab: "list" | "edit";
26
+ setTab: react.Dispatch<react.SetStateAction<"list" | "edit">>;
27
+ form: F;
28
+ setForm: react.Dispatch<react.SetStateAction<F>>;
29
+ updateField: <K extends keyof F>(key: K, value: F[K]) => void;
30
+ selectedId: string | null;
31
+ setSelectedId: react.Dispatch<react.SetStateAction<string | null>>;
32
+ isNew: boolean;
33
+ setIsNew: react.Dispatch<react.SetStateAction<boolean>>;
34
+ saving: boolean;
35
+ setSaving: react.Dispatch<react.SetStateAction<boolean>>;
36
+ loading: boolean;
37
+ setLoading: react.Dispatch<react.SetStateAction<boolean>>;
38
+ mobilePv: boolean;
39
+ setMobilePv: react.Dispatch<react.SetStateAction<boolean>>;
40
+ addNew: (emptyForm: F) => void;
41
+ startEdit: (id: string, emptyForm?: F) => void;
42
+ backToList: () => void;
43
+ };
44
+
45
+ export { useAdminForm, useAdminList };
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-EL7YGOTY.js');
3
+
4
+
5
+
6
+ var _chunkU6PVJKTBjs = require('../chunk-U6PVJKTB.js');
7
+
8
+
9
+
10
+ var _chunk5JUIMXNFjs = require('../chunk-5JUIMXNF.js');
11
+
12
+
13
+ var _chunkYY7K5CXXjs = require('../chunk-YY7K5CXX.js');
14
+ require('../chunk-S7GOXCRM.js');
15
+ require('../chunk-KWKV2GAH.js');
16
+ require('../chunk-EG6NVPP2.js');
17
+ require('../chunk-DGUM43GV.js');
18
+
19
+
20
+
21
+
22
+
23
+
24
+ exports.useAdminForm = _chunk5JUIMXNFjs.useAdminForm; exports.useAdminList = _chunk5JUIMXNFjs.useAdminList; exports.useImageDropZone = _chunkYY7K5CXXjs.useImageDropZone; exports.useScrollReveal = _chunkU6PVJKTBjs.useScrollReveal; exports.useScrollRevealAll = _chunkU6PVJKTBjs.useScrollRevealAll;
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/uni4love/project/workspace/211-withwiz/node-packages/withwiz-cms-kit/dist/hooks/index.js"],"names":[],"mappings":"AAAA,yGAA6B;AAC7B;AACE;AACA;AACF,uDAA6B;AAC7B;AACE;AACA;AACF,uDAA6B;AAC7B;AACE;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACF,uSAAC","file":"/Users/uni4love/project/workspace/211-withwiz/node-packages/withwiz-cms-kit/dist/hooks/index.js"}
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import "../chunk-QACD2U6P.mjs";
3
+ import {
4
+ useScrollReveal,
5
+ useScrollRevealAll
6
+ } from "../chunk-I5YMTJV6.mjs";
7
+ import {
8
+ useAdminForm,
9
+ useAdminList
10
+ } from "../chunk-FCCCG5Z7.mjs";
11
+ import {
12
+ useImageDropZone
13
+ } from "../chunk-LF5LOI7K.mjs";
14
+ import "../chunk-J5N76ASB.mjs";
15
+ import "../chunk-T7EVFD4G.mjs";
16
+ import "../chunk-BWKKHCDG.mjs";
17
+ import "../chunk-BJTO5JO5.mjs";
18
+ export {
19
+ useAdminForm,
20
+ useAdminList,
21
+ useImageDropZone,
22
+ useScrollReveal,
23
+ useScrollRevealAll
24
+ };
25
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,37 @@
1
+ import { DragEvent } from 'react';
2
+
3
+ interface ImageVariantUrls {
4
+ lg?: string;
5
+ md?: string;
6
+ sm?: string;
7
+ thumb?: string;
8
+ }
9
+ interface UploadResult {
10
+ url: string;
11
+ key: string;
12
+ size: number;
13
+ variants?: ImageVariantUrls;
14
+ variantKeys?: string[];
15
+ }
16
+ interface UseImageDropZoneOptions {
17
+ multiple?: boolean;
18
+ maxFiles?: number;
19
+ onUpload: (result: UploadResult) => void;
20
+ onKeyTracked?: (key: string) => void;
21
+ disabled?: boolean;
22
+ }
23
+ declare function useImageDropZone(options: UseImageDropZoneOptions): {
24
+ isDragOver: boolean;
25
+ isUploading: boolean;
26
+ isResizing: boolean;
27
+ error: string | null;
28
+ dragHandlers: {
29
+ onDragEnter: (e: DragEvent) => void;
30
+ onDragOver: (e: DragEvent) => void;
31
+ onDragLeave: (e: DragEvent) => void;
32
+ onDrop: (e: DragEvent) => void;
33
+ };
34
+ handleFileInput: (fileList: FileList | null) => Promise<void>;
35
+ };
36
+
37
+ export { useImageDropZone };
@@ -0,0 +1,37 @@
1
+ import { DragEvent } from 'react';
2
+
3
+ interface ImageVariantUrls {
4
+ lg?: string;
5
+ md?: string;
6
+ sm?: string;
7
+ thumb?: string;
8
+ }
9
+ interface UploadResult {
10
+ url: string;
11
+ key: string;
12
+ size: number;
13
+ variants?: ImageVariantUrls;
14
+ variantKeys?: string[];
15
+ }
16
+ interface UseImageDropZoneOptions {
17
+ multiple?: boolean;
18
+ maxFiles?: number;
19
+ onUpload: (result: UploadResult) => void;
20
+ onKeyTracked?: (key: string) => void;
21
+ disabled?: boolean;
22
+ }
23
+ declare function useImageDropZone(options: UseImageDropZoneOptions): {
24
+ isDragOver: boolean;
25
+ isUploading: boolean;
26
+ isResizing: boolean;
27
+ error: string | null;
28
+ dragHandlers: {
29
+ onDragEnter: (e: DragEvent) => void;
30
+ onDragOver: (e: DragEvent) => void;
31
+ onDragLeave: (e: DragEvent) => void;
32
+ onDrop: (e: DragEvent) => void;
33
+ };
34
+ handleFileInput: (fileList: FileList | null) => Promise<void>;
35
+ };
36
+
37
+ export { useImageDropZone };
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
3
+
4
+
5
+ var _chunkYY7K5CXXjs = require('../chunk-YY7K5CXX.js');
6
+ require('../chunk-S7GOXCRM.js');
7
+ require('../chunk-KWKV2GAH.js');
8
+ require('../chunk-EG6NVPP2.js');
9
+ require('../chunk-DGUM43GV.js');
10
+
11
+
12
+ exports.useImageDropZone = _chunkYY7K5CXXjs.useImageDropZone;
13
+ //# sourceMappingURL=useImageDropZone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/uni4love/project/workspace/211-withwiz/node-packages/withwiz-cms-kit/dist/hooks/useImageDropZone.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACF,6DAAC","file":"/Users/uni4love/project/workspace/211-withwiz/node-packages/withwiz-cms-kit/dist/hooks/useImageDropZone.js"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import {
3
+ useImageDropZone
4
+ } from "../chunk-LF5LOI7K.mjs";
5
+ import "../chunk-J5N76ASB.mjs";
6
+ import "../chunk-T7EVFD4G.mjs";
7
+ import "../chunk-BWKKHCDG.mjs";
8
+ import "../chunk-BJTO5JO5.mjs";
9
+ export {
10
+ useImageDropZone
11
+ };
12
+ //# sourceMappingURL=useImageDropZone.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,6 @@
1
+ import * as react from 'react';
2
+
3
+ declare function useScrollReveal<T extends HTMLElement>(): react.RefObject<T | null>;
4
+ declare function useScrollRevealAll(selector: string): void;
5
+
6
+ export { useScrollReveal, useScrollRevealAll };
@@ -0,0 +1,6 @@
1
+ import * as react from 'react';
2
+
3
+ declare function useScrollReveal<T extends HTMLElement>(): react.RefObject<T | null>;
4
+ declare function useScrollRevealAll(selector: string): void;
5
+
6
+ export { useScrollReveal, useScrollRevealAll };
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
3
+
4
+
5
+
6
+ var _chunkU6PVJKTBjs = require('../chunk-U6PVJKTB.js');
7
+ require('../chunk-DGUM43GV.js');
8
+
9
+
10
+
11
+ exports.useScrollReveal = _chunkU6PVJKTBjs.useScrollReveal; exports.useScrollRevealAll = _chunkU6PVJKTBjs.useScrollRevealAll;
12
+ //# sourceMappingURL=useScrollReveal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/uni4love/project/workspace/211-withwiz/node-packages/withwiz-cms-kit/dist/hooks/useScrollReveal.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACA;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACF,6HAAC","file":"/Users/uni4love/project/workspace/211-withwiz/node-packages/withwiz-cms-kit/dist/hooks/useScrollReveal.js"}
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import {
3
+ useScrollReveal,
4
+ useScrollRevealAll
5
+ } from "../chunk-I5YMTJV6.mjs";
6
+ import "../chunk-BJTO5JO5.mjs";
7
+ export {
8
+ useScrollReveal,
9
+ useScrollRevealAll
10
+ };
11
+ //# sourceMappingURL=useScrollReveal.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,115 @@
1
+ /* ═══ Shared Drag-and-Drop Upload States ═══ */
2
+
3
+ /* Drag-over visual feedback */
4
+ .af-upload-zone.is-drag-over,
5
+ .nbe-ed-img-up.is-drag-over,
6
+ .nbe-img-upload.is-drag-over,
7
+ .admin-cover-upload.is-drag-over,
8
+ .pm-poster-upload.is-drag-over,
9
+ .rm-pu.is-drag-over,
10
+ .rm-ce-iup.is-drag-over,
11
+ .rm-gal-grid.is-drag-over {
12
+ border-color: #8c7444 !important;
13
+ border-style: dashed !important;
14
+ background: rgba(201, 169, 110, 0.08) !important;
15
+ box-shadow: inset 0 0 0 2px rgba(201, 169, 110, 0.15);
16
+ transition: all 0.15s ease;
17
+ }
18
+
19
+ /* Uploading / Resizing state */
20
+ .af-upload-zone.is-uploading,
21
+ .nbe-ed-img-up.is-uploading,
22
+ .nbe-img-upload.is-uploading,
23
+ .admin-cover-upload.is-uploading,
24
+ .pm-poster-upload.is-uploading,
25
+ .rm-pu.is-uploading,
26
+ .rm-ce-iup.is-uploading,
27
+ .af-upload-zone.is-resizing,
28
+ .nbe-ed-img-up.is-resizing,
29
+ .nbe-img-upload.is-resizing,
30
+ .admin-cover-upload.is-resizing,
31
+ .pm-poster-upload.is-resizing,
32
+ .rm-pu.is-resizing,
33
+ .rm-ce-iup.is-resizing {
34
+ opacity: 0.6;
35
+ pointer-events: none;
36
+ }
37
+
38
+ /* Upload spinner */
39
+ .dz-upload-spinner {
40
+ display: inline-flex;
41
+ align-items: center;
42
+ gap: 6px;
43
+ font-size: 12px;
44
+ color: #8c7444;
45
+ }
46
+
47
+ .dz-upload-spinner::before {
48
+ content: "";
49
+ width: 14px;
50
+ height: 14px;
51
+ border: 2px solid #e8e0d0;
52
+ border-top-color: #8c7444;
53
+ border-radius: 50%;
54
+ animation: dz-spin 0.6s linear infinite;
55
+ }
56
+
57
+ @keyframes dz-spin {
58
+ to {
59
+ transform: rotate(360deg);
60
+ }
61
+ }
62
+
63
+ /* Error message */
64
+ .dz-error {
65
+ font-size: 11px;
66
+ color: #d44;
67
+ margin-top: 4px;
68
+ padding: 4px 8px;
69
+ background: #fef5f5;
70
+ border: 1px solid #f0c0c0;
71
+ border-radius: 4px;
72
+ }
73
+
74
+ /* Drag hint text */
75
+ .dz-drag-hint {
76
+ font-size: 12px;
77
+ color: #8c7444;
78
+ font-weight: 600;
79
+ pointer-events: none;
80
+ }
81
+
82
+ /* Placeholder with guide */
83
+ .dz-placeholder {
84
+ display: flex;
85
+ flex-direction: column;
86
+ align-items: center;
87
+ gap: 6px;
88
+ padding: 12px;
89
+ text-align: center;
90
+ }
91
+
92
+ .dz-placeholder-icon {
93
+ font-size: 24px;
94
+ color: #aaa;
95
+ line-height: 1;
96
+ }
97
+
98
+ .dz-placeholder-text {
99
+ font-size: 13px;
100
+ color: #888;
101
+ }
102
+
103
+ .dz-placeholder-guide {
104
+ font-size: 11px;
105
+ color: #bbb;
106
+ line-height: 1.5;
107
+ }
108
+
109
+ /* Gallery drop zone add button state */
110
+ .rm-gal-add.dz-state {
111
+ display: flex;
112
+ align-items: center;
113
+ justify-content: center;
114
+ pointer-events: none;
115
+ }
@@ -0,0 +1,136 @@
1
+ /**
2
+ * @withwiz/cms-kit β€” 쀑앙 μ„€μ •/μ£Όμž… 경계 (spec.md Β§5).
3
+ *
4
+ * λͺ¨λ“  μ™ΈλΆ€ μžμ›/μ†ŒλΉ„μž 쒅속 κ°’(brand/nav, route map, JWT, sanitizer μ‹ λ’°
5
+ * origin, R2 prefix κ·œμΉ™, rate-limit identity μΆ”μΆœ)은 이 λͺ¨λ“ˆμ„ ν†΅ν•΄μ„œλ§Œ
6
+ * ν˜λŸ¬κ°„λ‹€. `src/infrastructure/prisma.ts` 의 `setPrismaClient`/`getPrisma`
7
+ * νŒ¨ν„΄μ„ λͺ¨λΈλ‘œ ν•œλ‹€.
8
+ *
9
+ * κ²°μ • κ·œμΉ™ (λͺ¨λ“  ν‘œλ©΄μ— 일관 적용):
10
+ * - μš°μ„ μˆœμœ„: λͺ…μ‹œμ  μ£Όμž…(inject) > λ ˆκ±°μ‹œ ν™˜κ²½λ³€μˆ˜ fallback(ν˜„μž¬ 이름 μœ μ§€)
11
+ * > λ‚΄μž₯ κΈ°λ³Έκ°’.
12
+ * - lazy / point-of-use: λͺ¨λ“ˆ import λ§ŒμœΌλ‘œλŠ” μ ˆλŒ€ throw ν•˜μ§€ μ•ŠλŠ”λ‹€. μ‹€νŒ¨/
13
+ * κ²½κ³ λŠ” μžμ›μ„ *μ‚¬μš©*ν•  λ•Œ λ°œμƒν•œλ‹€ (prisma proxy 와 동일).
14
+ * - safe-default 쑴재 β†’ `@withwiz/cms-kit:` λ„€μž„μŠ€νŽ˜μ΄μŠ€ warn 1회(μ„€μ •λͺ… λͺ…μ‹œ) ν›„
15
+ * κΈ°λ³Έκ°’ μ‚¬μš©. safe-default μ—†μŒ(JWT μ„œλͺ… λΉ„λ°€) β†’ `@withwiz/cms-kit:`
16
+ * λ„€μž„μŠ€νŽ˜μ΄μŠ€ error 둜 point-of-use fail-fast.
17
+ * - ν™˜κ²½λ³€μˆ˜ μ½κΈ°λŠ” 이 λͺ¨λ“ˆ μ•ˆμ—μ„œλ§Œ λ°œμƒν•œλ‹€ (이번 μŠ€ν”„λ¦°νŠΈκ°€ λΌμš°νŒ…ν•˜λŠ”
18
+ * ν‘œλ©΄ ν•œμ • β€” spec.md Β§4.2 전체 sweep 은 Sprint 2).
19
+ */
20
+ /** μ‚¬μ΄λ“œλ°” λ„€λΉ„κ²Œμ΄μ…˜ ν•­λͺ© (label + href + μ ‘νž˜ 글리프) */
21
+ interface CmsNavItem {
22
+ /** 펼친 μƒνƒœμ—μ„œ λ³΄μ΄λŠ” 라벨 */
23
+ label: string;
24
+ /** 링크 λŒ€μƒ 경둜 */
25
+ href: string;
26
+ /** μ ‘νžŒ μƒνƒœμ—μ„œ λ³΄μ΄λŠ” 1κΈ€μž 글리프 */
27
+ glyph: string;
28
+ }
29
+ /** brand / navigation μ„€μ • */
30
+ interface CmsBrandConfig {
31
+ /** λΈŒλžœλ“œ 라벨 (μ‚¬μ΄λ“œλ°” ν™ˆ 링크 ν…μŠ€νŠΈ) */
32
+ brandLabel?: string;
33
+ /** λΈŒλžœλ“œ ν™ˆ 링크 href (μ‚¬μ΄νŠΈ 보기) */
34
+ brandHref?: string;
35
+ /** admin 링크 λŒ€μƒ */
36
+ adminHref?: string;
37
+ /** μˆœμ„œ μžˆλŠ” nav ν•­λͺ© λͺ©λ‘ */
38
+ navItems?: CmsNavItem[];
39
+ }
40
+ /** auth/route μ—”λ“œν¬μΈνŠΈ λ§΅ */
41
+ interface CmsRouteConfig {
42
+ /** 둜그인 νŽ˜μ΄μ§€ 경둜 */
43
+ loginPath?: string;
44
+ /** 둜그인 ν›„ λ¦¬λ‹€μ΄λ ‰νŠΈ λŒ€μƒ (ν™ˆ/λŒ€μ‹œλ³΄λ“œ) */
45
+ postLoginRedirect?: string;
46
+ /** "ν˜„μž¬ μ‚¬μš©μž" μ—”λ“œν¬μΈνŠΈ */
47
+ meEndpoint?: string;
48
+ /** λ‘œκ·Έμ•„μ›ƒ μ—”λ“œν¬μΈνŠΈ */
49
+ logoutEndpoint?: string;
50
+ /** 토큰 refresh μ—”λ“œν¬μΈνŠΈ */
51
+ refreshEndpoint?: string;
52
+ /** μ—…λ‘œλ“œ μ—”λ“œν¬μΈνŠΈ */
53
+ uploadEndpoint?: string;
54
+ }
55
+ /** JWT μ„€μ • (μ„œλͺ… λΉ„λ°€μ—λŠ” μ•ˆμ „ν•œ 기본값이 μ—†μŒ β€” fail-fast) */
56
+ interface CmsJwtConfig {
57
+ /** HMAC μ„œλͺ… λΉ„λ°€ (ν•„μˆ˜, μ•ˆμ „ν•œ κΈ°λ³Έκ°’ μ—†μŒ) */
58
+ secret?: string;
59
+ /** access token 만료 (기본 '2h') */
60
+ accessTokenExpiry?: string;
61
+ /** refresh token 만료 (기본 '7d') */
62
+ refreshTokenExpiry?: string;
63
+ /** μ•Œκ³ λ¦¬μ¦˜ (κΈ°λ³Έ 'HS256') */
64
+ algorithm?: string;
65
+ }
66
+ /** sanitizer μ„€μ • */
67
+ interface CmsSanitizerConfig {
68
+ /** μ‹ λ’° iframe origin prefix λͺ©λ‘ (κΈ°λ³Έ = YouTube/Vimeo) */
69
+ trustedIframeOrigins?: readonly string[];
70
+ }
71
+ /**
72
+ * R2 자격 증λͺ… μ„€μ •. λͺ¨λ“  ν•­λͺ© μ•ˆμ „ν•œ 기본값이 μ—†μŒ β€” credentials λˆ„λ½ μ‹œ
73
+ * point-of-use(`uploadToR2`/`deleteFromR2`/`getClient`) μ—μ„œ namespaced
74
+ * fail-fast. λΆ€λΆ„ μ„€μ • κ°€λŠ₯ (예: bucketName 만 inject, λ‚˜λ¨Έμ§€λŠ” legacy env).
75
+ */
76
+ interface CmsR2CredentialsConfig {
77
+ /** Cloudflare R2 계정 ID (endpoint host ꡬ성에 μ‚¬μš©) */
78
+ accountId?: string;
79
+ /** R2 access key ID */
80
+ accessKeyId?: string;
81
+ /** R2 secret access key */
82
+ secretAccessKey?: string;
83
+ /** R2 버킷 이름 */
84
+ bucketName?: string;
85
+ }
86
+ /** R2/storage μ„€μ • */
87
+ interface CmsStorageConfig {
88
+ /**
89
+ * inline `<img src>` μ—μ„œ storage key 둜 인정할 μ΅œμƒμœ„ prefix λͺ©λ‘.
90
+ * λ―Έμ„€μ • μ‹œ origin/base 기반의 μ•ˆμ „ κΈ°λ³Έ λ™μž‘(아무 prefix 도 silent drop
91
+ * ν•˜μ§€ μ•ŠμŒ)을 μ‚¬μš©ν•œλ‹€ β€” `news/` μ „μš© ν•˜λ“œμ½”λ”©κ³Ό 달리 λΉ„-`news` 킀도
92
+ * μˆ˜μ§‘λœλ‹€ (spec.md Β§4.1 orphan-bug fix).
93
+ */
94
+ inlineKeyPrefixes?: readonly string[];
95
+ /**
96
+ * storage 곡개 base URL/origin. μ§€μ • μ‹œ:
97
+ * - inline `<img src>` 의 path κ°€ 폴더 λ¬΄κ΄€ν•˜κ²Œ key 둜 μˆ˜μ§‘λœλ‹€ (r2-helpers).
98
+ * - μ—…λ‘œλ“œ κ²°κ³Ό public URL 의 prefix 둜 μ‚¬μš©λœλ‹€ (r2-storage).
99
+ * λ―Έμ„€μ • μ‹œ r2-storage λŠ” legacy `R2_PUBLIC_URL` env, 그것도 μ—†μœΌλ©΄
100
+ * `https://${bucketName}.r2.dev` 둜 fallback ν•œλ‹€.
101
+ */
102
+ publicBaseUrl?: string;
103
+ /** R2 자격 증λͺ… (계정/ν‚€/버킷). λ―Έμ£Όμž… μ‹œ legacy R2_* ν™˜κ²½λ³€μˆ˜ fallback. */
104
+ r2?: CmsR2CredentialsConfig;
105
+ }
106
+ /** rate-limit client-identity / IP μΆ”μΆœ μ „λž΅ */
107
+ type CmsIdentityExtractor = (headers: Headers) => string;
108
+ /** rate-limit μ„€μ • */
109
+ interface CmsRateLimitConfig {
110
+ /** consumer κ°€ μ£Όμž…ν•˜λŠ” client-identity μΆ”μΆœ ν•¨μˆ˜ */
111
+ identityExtractor?: CmsIdentityExtractor;
112
+ /** rate-limit ν™œμ„±ν™” (κΈ°λ³Έ: legacy RATE_LIMIT_ENABLED env, κ·Έ μ™Έ true) */
113
+ enabled?: boolean;
114
+ }
115
+ /** 전체 Β§5 μ„€μ • */
116
+ interface CmsConfig {
117
+ brand?: CmsBrandConfig;
118
+ routes?: CmsRouteConfig;
119
+ jwt?: CmsJwtConfig;
120
+ sanitizer?: CmsSanitizerConfig;
121
+ storage?: CmsStorageConfig;
122
+ rateLimit?: CmsRateLimitConfig;
123
+ }
124
+ /** JWT μ„œλͺ… λΉ„λ°€ μ΅œμ†Œ 길이 (λ¬Έμ„œν™”λœ μ •μ±…, spec.md Β§4.6 / S3). */
125
+ declare const JWT_SECRET_MIN_LENGTH = 32;
126
+ /**
127
+ * 전체 Β§5 섀정을 μ£Όμž…ν•œλ‹€ (prisma 의 `setPrismaClient` 와 λ™ν˜•).
128
+ * λΆ€λΆ„ μ£Όμž…μ„ λ³‘ν•©ν•˜λ©°, 같은 ν‚€ μž¬μ£Όμž… μ‹œ μƒˆ 값이 μš°μ„ ν•œλ‹€.
129
+ */
130
+ declare function setCmsConfig(config: CmsConfig): void;
131
+ /** μ£Όμž…λœ 섀정을 λͺ¨λ‘ λΉ„μš΄λ‹€ (ν…ŒμŠ€νŠΈ/μž¬μ΄ˆκΈ°ν™” μš©λ„). */
132
+ declare function resetCmsConfig(): void;
133
+ /** ν˜„μž¬ λ³‘ν•©λœ raw μ„€μ • (디버깅/ν…ŒμŠ€νŠΈ 용). */
134
+ declare function getCmsConfig(): CmsConfig;
135
+
136
+ export { type CmsBrandConfig as C, JWT_SECRET_MIN_LENGTH as J, type CmsConfig as a, type CmsIdentityExtractor as b, type CmsJwtConfig as c, type CmsNavItem as d, type CmsR2CredentialsConfig as e, type CmsRateLimitConfig as f, type CmsRouteConfig as g, type CmsSanitizerConfig as h, type CmsStorageConfig as i, getCmsConfig as j, resetCmsConfig as r, setCmsConfig as s };
@@ -0,0 +1,136 @@
1
+ /**
2
+ * @withwiz/cms-kit β€” 쀑앙 μ„€μ •/μ£Όμž… 경계 (spec.md Β§5).
3
+ *
4
+ * λͺ¨λ“  μ™ΈλΆ€ μžμ›/μ†ŒλΉ„μž 쒅속 κ°’(brand/nav, route map, JWT, sanitizer μ‹ λ’°
5
+ * origin, R2 prefix κ·œμΉ™, rate-limit identity μΆ”μΆœ)은 이 λͺ¨λ“ˆμ„ ν†΅ν•΄μ„œλ§Œ
6
+ * ν˜λŸ¬κ°„λ‹€. `src/infrastructure/prisma.ts` 의 `setPrismaClient`/`getPrisma`
7
+ * νŒ¨ν„΄μ„ λͺ¨λΈλ‘œ ν•œλ‹€.
8
+ *
9
+ * κ²°μ • κ·œμΉ™ (λͺ¨λ“  ν‘œλ©΄μ— 일관 적용):
10
+ * - μš°μ„ μˆœμœ„: λͺ…μ‹œμ  μ£Όμž…(inject) > λ ˆκ±°μ‹œ ν™˜κ²½λ³€μˆ˜ fallback(ν˜„μž¬ 이름 μœ μ§€)
11
+ * > λ‚΄μž₯ κΈ°λ³Έκ°’.
12
+ * - lazy / point-of-use: λͺ¨λ“ˆ import λ§ŒμœΌλ‘œλŠ” μ ˆλŒ€ throw ν•˜μ§€ μ•ŠλŠ”λ‹€. μ‹€νŒ¨/
13
+ * κ²½κ³ λŠ” μžμ›μ„ *μ‚¬μš©*ν•  λ•Œ λ°œμƒν•œλ‹€ (prisma proxy 와 동일).
14
+ * - safe-default 쑴재 β†’ `@withwiz/cms-kit:` λ„€μž„μŠ€νŽ˜μ΄μŠ€ warn 1회(μ„€μ •λͺ… λͺ…μ‹œ) ν›„
15
+ * κΈ°λ³Έκ°’ μ‚¬μš©. safe-default μ—†μŒ(JWT μ„œλͺ… λΉ„λ°€) β†’ `@withwiz/cms-kit:`
16
+ * λ„€μž„μŠ€νŽ˜μ΄μŠ€ error 둜 point-of-use fail-fast.
17
+ * - ν™˜κ²½λ³€μˆ˜ μ½κΈ°λŠ” 이 λͺ¨λ“ˆ μ•ˆμ—μ„œλ§Œ λ°œμƒν•œλ‹€ (이번 μŠ€ν”„λ¦°νŠΈκ°€ λΌμš°νŒ…ν•˜λŠ”
18
+ * ν‘œλ©΄ ν•œμ • β€” spec.md Β§4.2 전체 sweep 은 Sprint 2).
19
+ */
20
+ /** μ‚¬μ΄λ“œλ°” λ„€λΉ„κ²Œμ΄μ…˜ ν•­λͺ© (label + href + μ ‘νž˜ 글리프) */
21
+ interface CmsNavItem {
22
+ /** 펼친 μƒνƒœμ—μ„œ λ³΄μ΄λŠ” 라벨 */
23
+ label: string;
24
+ /** 링크 λŒ€μƒ 경둜 */
25
+ href: string;
26
+ /** μ ‘νžŒ μƒνƒœμ—μ„œ λ³΄μ΄λŠ” 1κΈ€μž 글리프 */
27
+ glyph: string;
28
+ }
29
+ /** brand / navigation μ„€μ • */
30
+ interface CmsBrandConfig {
31
+ /** λΈŒλžœλ“œ 라벨 (μ‚¬μ΄λ“œλ°” ν™ˆ 링크 ν…μŠ€νŠΈ) */
32
+ brandLabel?: string;
33
+ /** λΈŒλžœλ“œ ν™ˆ 링크 href (μ‚¬μ΄νŠΈ 보기) */
34
+ brandHref?: string;
35
+ /** admin 링크 λŒ€μƒ */
36
+ adminHref?: string;
37
+ /** μˆœμ„œ μžˆλŠ” nav ν•­λͺ© λͺ©λ‘ */
38
+ navItems?: CmsNavItem[];
39
+ }
40
+ /** auth/route μ—”λ“œν¬μΈνŠΈ λ§΅ */
41
+ interface CmsRouteConfig {
42
+ /** 둜그인 νŽ˜μ΄μ§€ 경둜 */
43
+ loginPath?: string;
44
+ /** 둜그인 ν›„ λ¦¬λ‹€μ΄λ ‰νŠΈ λŒ€μƒ (ν™ˆ/λŒ€μ‹œλ³΄λ“œ) */
45
+ postLoginRedirect?: string;
46
+ /** "ν˜„μž¬ μ‚¬μš©μž" μ—”λ“œν¬μΈνŠΈ */
47
+ meEndpoint?: string;
48
+ /** λ‘œκ·Έμ•„μ›ƒ μ—”λ“œν¬μΈνŠΈ */
49
+ logoutEndpoint?: string;
50
+ /** 토큰 refresh μ—”λ“œν¬μΈνŠΈ */
51
+ refreshEndpoint?: string;
52
+ /** μ—…λ‘œλ“œ μ—”λ“œν¬μΈνŠΈ */
53
+ uploadEndpoint?: string;
54
+ }
55
+ /** JWT μ„€μ • (μ„œλͺ… λΉ„λ°€μ—λŠ” μ•ˆμ „ν•œ 기본값이 μ—†μŒ β€” fail-fast) */
56
+ interface CmsJwtConfig {
57
+ /** HMAC μ„œλͺ… λΉ„λ°€ (ν•„μˆ˜, μ•ˆμ „ν•œ κΈ°λ³Έκ°’ μ—†μŒ) */
58
+ secret?: string;
59
+ /** access token 만료 (기본 '2h') */
60
+ accessTokenExpiry?: string;
61
+ /** refresh token 만료 (기본 '7d') */
62
+ refreshTokenExpiry?: string;
63
+ /** μ•Œκ³ λ¦¬μ¦˜ (κΈ°λ³Έ 'HS256') */
64
+ algorithm?: string;
65
+ }
66
+ /** sanitizer μ„€μ • */
67
+ interface CmsSanitizerConfig {
68
+ /** μ‹ λ’° iframe origin prefix λͺ©λ‘ (κΈ°λ³Έ = YouTube/Vimeo) */
69
+ trustedIframeOrigins?: readonly string[];
70
+ }
71
+ /**
72
+ * R2 자격 증λͺ… μ„€μ •. λͺ¨λ“  ν•­λͺ© μ•ˆμ „ν•œ 기본값이 μ—†μŒ β€” credentials λˆ„λ½ μ‹œ
73
+ * point-of-use(`uploadToR2`/`deleteFromR2`/`getClient`) μ—μ„œ namespaced
74
+ * fail-fast. λΆ€λΆ„ μ„€μ • κ°€λŠ₯ (예: bucketName 만 inject, λ‚˜λ¨Έμ§€λŠ” legacy env).
75
+ */
76
+ interface CmsR2CredentialsConfig {
77
+ /** Cloudflare R2 계정 ID (endpoint host ꡬ성에 μ‚¬μš©) */
78
+ accountId?: string;
79
+ /** R2 access key ID */
80
+ accessKeyId?: string;
81
+ /** R2 secret access key */
82
+ secretAccessKey?: string;
83
+ /** R2 버킷 이름 */
84
+ bucketName?: string;
85
+ }
86
+ /** R2/storage μ„€μ • */
87
+ interface CmsStorageConfig {
88
+ /**
89
+ * inline `<img src>` μ—μ„œ storage key 둜 인정할 μ΅œμƒμœ„ prefix λͺ©λ‘.
90
+ * λ―Έμ„€μ • μ‹œ origin/base 기반의 μ•ˆμ „ κΈ°λ³Έ λ™μž‘(아무 prefix 도 silent drop
91
+ * ν•˜μ§€ μ•ŠμŒ)을 μ‚¬μš©ν•œλ‹€ β€” `news/` μ „μš© ν•˜λ“œμ½”λ”©κ³Ό 달리 λΉ„-`news` 킀도
92
+ * μˆ˜μ§‘λœλ‹€ (spec.md Β§4.1 orphan-bug fix).
93
+ */
94
+ inlineKeyPrefixes?: readonly string[];
95
+ /**
96
+ * storage 곡개 base URL/origin. μ§€μ • μ‹œ:
97
+ * - inline `<img src>` 의 path κ°€ 폴더 λ¬΄κ΄€ν•˜κ²Œ key 둜 μˆ˜μ§‘λœλ‹€ (r2-helpers).
98
+ * - μ—…λ‘œλ“œ κ²°κ³Ό public URL 의 prefix 둜 μ‚¬μš©λœλ‹€ (r2-storage).
99
+ * λ―Έμ„€μ • μ‹œ r2-storage λŠ” legacy `R2_PUBLIC_URL` env, 그것도 μ—†μœΌλ©΄
100
+ * `https://${bucketName}.r2.dev` 둜 fallback ν•œλ‹€.
101
+ */
102
+ publicBaseUrl?: string;
103
+ /** R2 자격 증λͺ… (계정/ν‚€/버킷). λ―Έμ£Όμž… μ‹œ legacy R2_* ν™˜κ²½λ³€μˆ˜ fallback. */
104
+ r2?: CmsR2CredentialsConfig;
105
+ }
106
+ /** rate-limit client-identity / IP μΆ”μΆœ μ „λž΅ */
107
+ type CmsIdentityExtractor = (headers: Headers) => string;
108
+ /** rate-limit μ„€μ • */
109
+ interface CmsRateLimitConfig {
110
+ /** consumer κ°€ μ£Όμž…ν•˜λŠ” client-identity μΆ”μΆœ ν•¨μˆ˜ */
111
+ identityExtractor?: CmsIdentityExtractor;
112
+ /** rate-limit ν™œμ„±ν™” (κΈ°λ³Έ: legacy RATE_LIMIT_ENABLED env, κ·Έ μ™Έ true) */
113
+ enabled?: boolean;
114
+ }
115
+ /** 전체 Β§5 μ„€μ • */
116
+ interface CmsConfig {
117
+ brand?: CmsBrandConfig;
118
+ routes?: CmsRouteConfig;
119
+ jwt?: CmsJwtConfig;
120
+ sanitizer?: CmsSanitizerConfig;
121
+ storage?: CmsStorageConfig;
122
+ rateLimit?: CmsRateLimitConfig;
123
+ }
124
+ /** JWT μ„œλͺ… λΉ„λ°€ μ΅œμ†Œ 길이 (λ¬Έμ„œν™”λœ μ •μ±…, spec.md Β§4.6 / S3). */
125
+ declare const JWT_SECRET_MIN_LENGTH = 32;
126
+ /**
127
+ * 전체 Β§5 섀정을 μ£Όμž…ν•œλ‹€ (prisma 의 `setPrismaClient` 와 λ™ν˜•).
128
+ * λΆ€λΆ„ μ£Όμž…μ„ λ³‘ν•©ν•˜λ©°, 같은 ν‚€ μž¬μ£Όμž… μ‹œ μƒˆ 값이 μš°μ„ ν•œλ‹€.
129
+ */
130
+ declare function setCmsConfig(config: CmsConfig): void;
131
+ /** μ£Όμž…λœ 섀정을 λͺ¨λ‘ λΉ„μš΄λ‹€ (ν…ŒμŠ€νŠΈ/μž¬μ΄ˆκΈ°ν™” μš©λ„). */
132
+ declare function resetCmsConfig(): void;
133
+ /** ν˜„μž¬ λ³‘ν•©λœ raw μ„€μ • (디버깅/ν…ŒμŠ€νŠΈ 용). */
134
+ declare function getCmsConfig(): CmsConfig;
135
+
136
+ export { type CmsBrandConfig as C, JWT_SECRET_MIN_LENGTH as J, type CmsConfig as a, type CmsIdentityExtractor as b, type CmsJwtConfig as c, type CmsNavItem as d, type CmsR2CredentialsConfig as e, type CmsRateLimitConfig as f, type CmsRouteConfig as g, type CmsSanitizerConfig as h, type CmsStorageConfig as i, getCmsConfig as j, resetCmsConfig as r, setCmsConfig as s };