mokona-ui 0.0.1

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 (388) hide show
  1. package/README.md +273 -0
  2. package/dist/accordion.cjs +13 -0
  3. package/dist/accordion.cjs.map +1 -0
  4. package/dist/accordion.d.cts +21 -0
  5. package/dist/accordion.d.ts +21 -0
  6. package/dist/accordion.js +4 -0
  7. package/dist/accordion.js.map +1 -0
  8. package/dist/alert.cjs +13 -0
  9. package/dist/alert.cjs.map +1 -0
  10. package/dist/alert.d.cts +14 -0
  11. package/dist/alert.d.ts +14 -0
  12. package/dist/alert.js +4 -0
  13. package/dist/alert.js.map +1 -0
  14. package/dist/amount.cjs +18 -0
  15. package/dist/amount.cjs.map +1 -0
  16. package/dist/amount.d.cts +39 -0
  17. package/dist/amount.d.ts +39 -0
  18. package/dist/amount.js +5 -0
  19. package/dist/amount.js.map +1 -0
  20. package/dist/avatar.cjs +13 -0
  21. package/dist/avatar.cjs.map +1 -0
  22. package/dist/avatar.d.cts +16 -0
  23. package/dist/avatar.d.ts +16 -0
  24. package/dist/avatar.js +4 -0
  25. package/dist/avatar.js.map +1 -0
  26. package/dist/badge.cjs +17 -0
  27. package/dist/badge.cjs.map +1 -0
  28. package/dist/badge.d.cts +13 -0
  29. package/dist/badge.d.ts +13 -0
  30. package/dist/badge.js +4 -0
  31. package/dist/badge.js.map +1 -0
  32. package/dist/bottom-sheet.cjs +14 -0
  33. package/dist/bottom-sheet.cjs.map +1 -0
  34. package/dist/bottom-sheet.d.cts +14 -0
  35. package/dist/bottom-sheet.d.ts +14 -0
  36. package/dist/bottom-sheet.js +5 -0
  37. package/dist/bottom-sheet.js.map +1 -0
  38. package/dist/button.cjs +18 -0
  39. package/dist/button.cjs.map +1 -0
  40. package/dist/button.d.cts +16 -0
  41. package/dist/button.d.ts +16 -0
  42. package/dist/button.js +5 -0
  43. package/dist/button.js.map +1 -0
  44. package/dist/calendar.cjs +14 -0
  45. package/dist/calendar.cjs.map +1 -0
  46. package/dist/calendar.d.cts +13 -0
  47. package/dist/calendar.d.ts +13 -0
  48. package/dist/calendar.js +5 -0
  49. package/dist/calendar.js.map +1 -0
  50. package/dist/card.cjs +18 -0
  51. package/dist/card.cjs.map +1 -0
  52. package/dist/card.d.cts +14 -0
  53. package/dist/card.d.ts +14 -0
  54. package/dist/card.js +5 -0
  55. package/dist/card.js.map +1 -0
  56. package/dist/checkbox.cjs +14 -0
  57. package/dist/checkbox.cjs.map +1 -0
  58. package/dist/checkbox.d.cts +9 -0
  59. package/dist/checkbox.d.ts +9 -0
  60. package/dist/checkbox.js +5 -0
  61. package/dist/checkbox.js.map +1 -0
  62. package/dist/chip.cjs +14 -0
  63. package/dist/chip.cjs.map +1 -0
  64. package/dist/chip.d.cts +9 -0
  65. package/dist/chip.d.ts +9 -0
  66. package/dist/chip.js +5 -0
  67. package/dist/chip.js.map +1 -0
  68. package/dist/chunk-27EKI7CM.cjs +74 -0
  69. package/dist/chunk-27EKI7CM.cjs.map +1 -0
  70. package/dist/chunk-2AOEUASU.cjs +123 -0
  71. package/dist/chunk-2AOEUASU.cjs.map +1 -0
  72. package/dist/chunk-355VBEHS.js +51 -0
  73. package/dist/chunk-355VBEHS.js.map +1 -0
  74. package/dist/chunk-4C6E37KK.js +134 -0
  75. package/dist/chunk-4C6E37KK.js.map +1 -0
  76. package/dist/chunk-4S23TNFZ.cjs +115 -0
  77. package/dist/chunk-4S23TNFZ.cjs.map +1 -0
  78. package/dist/chunk-4V3IOZPC.cjs +61 -0
  79. package/dist/chunk-4V3IOZPC.cjs.map +1 -0
  80. package/dist/chunk-4YQPDHZP.cjs +69 -0
  81. package/dist/chunk-4YQPDHZP.cjs.map +1 -0
  82. package/dist/chunk-6CMR4MT4.js +101 -0
  83. package/dist/chunk-6CMR4MT4.js.map +1 -0
  84. package/dist/chunk-7B6U7GED.js +67 -0
  85. package/dist/chunk-7B6U7GED.js.map +1 -0
  86. package/dist/chunk-7GQ4YVJR.js +68 -0
  87. package/dist/chunk-7GQ4YVJR.js.map +1 -0
  88. package/dist/chunk-AFX7CBRR.cjs +97 -0
  89. package/dist/chunk-AFX7CBRR.cjs.map +1 -0
  90. package/dist/chunk-ARXXD2ZI.cjs +75 -0
  91. package/dist/chunk-ARXXD2ZI.cjs.map +1 -0
  92. package/dist/chunk-BCX5S6PO.js +41 -0
  93. package/dist/chunk-BCX5S6PO.js.map +1 -0
  94. package/dist/chunk-BJWRAJEH.cjs +61 -0
  95. package/dist/chunk-BJWRAJEH.cjs.map +1 -0
  96. package/dist/chunk-CX55SVMP.js +68 -0
  97. package/dist/chunk-CX55SVMP.js.map +1 -0
  98. package/dist/chunk-CZ4RHRM2.cjs +130 -0
  99. package/dist/chunk-CZ4RHRM2.cjs.map +1 -0
  100. package/dist/chunk-DDV6JQEW.js +57 -0
  101. package/dist/chunk-DDV6JQEW.js.map +1 -0
  102. package/dist/chunk-DR6JPBH7.js +126 -0
  103. package/dist/chunk-DR6JPBH7.js.map +1 -0
  104. package/dist/chunk-EVF7QZMA.cjs +46 -0
  105. package/dist/chunk-EVF7QZMA.cjs.map +1 -0
  106. package/dist/chunk-EXARWE5B.js +56 -0
  107. package/dist/chunk-EXARWE5B.js.map +1 -0
  108. package/dist/chunk-FUIIR7CU.js +32 -0
  109. package/dist/chunk-FUIIR7CU.js.map +1 -0
  110. package/dist/chunk-FXOOVZWB.js +39 -0
  111. package/dist/chunk-FXOOVZWB.js.map +1 -0
  112. package/dist/chunk-FYFPGECC.js +39 -0
  113. package/dist/chunk-FYFPGECC.js.map +1 -0
  114. package/dist/chunk-GFZKSV7F.cjs +73 -0
  115. package/dist/chunk-GFZKSV7F.cjs.map +1 -0
  116. package/dist/chunk-GGXFXP6U.js +130 -0
  117. package/dist/chunk-GGXFXP6U.js.map +1 -0
  118. package/dist/chunk-HLRY4SDE.js +43 -0
  119. package/dist/chunk-HLRY4SDE.js.map +1 -0
  120. package/dist/chunk-HYWJ73QZ.cjs +155 -0
  121. package/dist/chunk-HYWJ73QZ.cjs.map +1 -0
  122. package/dist/chunk-I2ANUQHL.js +81 -0
  123. package/dist/chunk-I2ANUQHL.js.map +1 -0
  124. package/dist/chunk-IDASIFTM.js +56 -0
  125. package/dist/chunk-IDASIFTM.js.map +1 -0
  126. package/dist/chunk-IH7OSDQI.js +70 -0
  127. package/dist/chunk-IH7OSDQI.js.map +1 -0
  128. package/dist/chunk-IOBAQ35P.js +42 -0
  129. package/dist/chunk-IOBAQ35P.js.map +1 -0
  130. package/dist/chunk-IVANXF6O.js +107 -0
  131. package/dist/chunk-IVANXF6O.js.map +1 -0
  132. package/dist/chunk-JGO5TBYB.cjs +58 -0
  133. package/dist/chunk-JGO5TBYB.cjs.map +1 -0
  134. package/dist/chunk-JQ55FV4C.js +75 -0
  135. package/dist/chunk-JQ55FV4C.js.map +1 -0
  136. package/dist/chunk-JQDD6AYM.js +52 -0
  137. package/dist/chunk-JQDD6AYM.js.map +1 -0
  138. package/dist/chunk-JWE5X3SW.cjs +80 -0
  139. package/dist/chunk-JWE5X3SW.cjs.map +1 -0
  140. package/dist/chunk-KFFQVTKW.cjs +91 -0
  141. package/dist/chunk-KFFQVTKW.cjs.map +1 -0
  142. package/dist/chunk-LC5SUZE5.cjs +80 -0
  143. package/dist/chunk-LC5SUZE5.cjs.map +1 -0
  144. package/dist/chunk-LCABZUFW.js +3 -0
  145. package/dist/chunk-LCABZUFW.js.map +1 -0
  146. package/dist/chunk-MFRGAZ4M.cjs +157 -0
  147. package/dist/chunk-MFRGAZ4M.cjs.map +1 -0
  148. package/dist/chunk-MIR34HKE.cjs +91 -0
  149. package/dist/chunk-MIR34HKE.cjs.map +1 -0
  150. package/dist/chunk-MP442EWS.cjs +152 -0
  151. package/dist/chunk-MP442EWS.cjs.map +1 -0
  152. package/dist/chunk-MTIJTTKO.cjs +75 -0
  153. package/dist/chunk-MTIJTTKO.cjs.map +1 -0
  154. package/dist/chunk-MVGUWG27.js +56 -0
  155. package/dist/chunk-MVGUWG27.js.map +1 -0
  156. package/dist/chunk-MWP6IFVJ.cjs +93 -0
  157. package/dist/chunk-MWP6IFVJ.cjs.map +1 -0
  158. package/dist/chunk-NF7D4E7V.js +52 -0
  159. package/dist/chunk-NF7D4E7V.js.map +1 -0
  160. package/dist/chunk-NRBDDNYV.cjs +107 -0
  161. package/dist/chunk-NRBDDNYV.cjs.map +1 -0
  162. package/dist/chunk-OBDN7ROH.cjs +490 -0
  163. package/dist/chunk-OBDN7ROH.cjs.map +1 -0
  164. package/dist/chunk-OE7M66OR.cjs +56 -0
  165. package/dist/chunk-OE7M66OR.cjs.map +1 -0
  166. package/dist/chunk-PGUGP5EL.cjs +135 -0
  167. package/dist/chunk-PGUGP5EL.cjs.map +1 -0
  168. package/dist/chunk-Q7764J2G.cjs +61 -0
  169. package/dist/chunk-Q7764J2G.cjs.map +1 -0
  170. package/dist/chunk-QYQDCGOD.js +82 -0
  171. package/dist/chunk-QYQDCGOD.js.map +1 -0
  172. package/dist/chunk-RDYETV4X.cjs +64 -0
  173. package/dist/chunk-RDYETV4X.cjs.map +1 -0
  174. package/dist/chunk-RIXU7XN6.cjs +90 -0
  175. package/dist/chunk-RIXU7XN6.cjs.map +1 -0
  176. package/dist/chunk-RKGIGQ5C.cjs +4 -0
  177. package/dist/chunk-RKGIGQ5C.cjs.map +1 -0
  178. package/dist/chunk-RS457SPB.js +464 -0
  179. package/dist/chunk-RS457SPB.js.map +1 -0
  180. package/dist/chunk-SG5Z3YFN.cjs +83 -0
  181. package/dist/chunk-SG5Z3YFN.cjs.map +1 -0
  182. package/dist/chunk-SHEMISNH.cjs +81 -0
  183. package/dist/chunk-SHEMISNH.cjs.map +1 -0
  184. package/dist/chunk-SPHRMXOV.js +85 -0
  185. package/dist/chunk-SPHRMXOV.js.map +1 -0
  186. package/dist/chunk-TIWBLISD.js +87 -0
  187. package/dist/chunk-TIWBLISD.js.map +1 -0
  188. package/dist/chunk-TMR56BBE.js +3 -0
  189. package/dist/chunk-TMR56BBE.js.map +1 -0
  190. package/dist/chunk-U5KHRCO4.cjs +105 -0
  191. package/dist/chunk-U5KHRCO4.cjs.map +1 -0
  192. package/dist/chunk-UPW5X46R.js +58 -0
  193. package/dist/chunk-UPW5X46R.js.map +1 -0
  194. package/dist/chunk-UXYAKGI2.cjs +24 -0
  195. package/dist/chunk-UXYAKGI2.cjs.map +1 -0
  196. package/dist/chunk-VBT7USXE.cjs +63 -0
  197. package/dist/chunk-VBT7USXE.cjs.map +1 -0
  198. package/dist/chunk-VIA2FAQY.js +46 -0
  199. package/dist/chunk-VIA2FAQY.js.map +1 -0
  200. package/dist/chunk-WEVRQAGZ.js +57 -0
  201. package/dist/chunk-WEVRQAGZ.js.map +1 -0
  202. package/dist/chunk-WWQNTWRL.js +107 -0
  203. package/dist/chunk-WWQNTWRL.js.map +1 -0
  204. package/dist/chunk-X4QHDEEJ.cjs +4 -0
  205. package/dist/chunk-X4QHDEEJ.cjs.map +1 -0
  206. package/dist/chunk-XJZNX76V.js +66 -0
  207. package/dist/chunk-XJZNX76V.js.map +1 -0
  208. package/dist/chunk-XRUGFKB3.js +34 -0
  209. package/dist/chunk-XRUGFKB3.js.map +1 -0
  210. package/dist/chunk-XURQVDCN.cjs +4 -0
  211. package/dist/chunk-XURQVDCN.cjs.map +1 -0
  212. package/dist/chunk-XVIQ4OUN.cjs +89 -0
  213. package/dist/chunk-XVIQ4OUN.cjs.map +1 -0
  214. package/dist/chunk-XWKZ72LI.cjs +80 -0
  215. package/dist/chunk-XWKZ72LI.cjs.map +1 -0
  216. package/dist/chunk-Y3CWICHE.js +3 -0
  217. package/dist/chunk-Y3CWICHE.js.map +1 -0
  218. package/dist/chunk-Z3U3EZRC.js +93 -0
  219. package/dist/chunk-Z3U3EZRC.js.map +1 -0
  220. package/dist/chunk-Z4JZDLTZ.cjs +109 -0
  221. package/dist/chunk-Z4JZDLTZ.cjs.map +1 -0
  222. package/dist/chunk-ZDARKNSQ.cjs +54 -0
  223. package/dist/chunk-ZDARKNSQ.cjs.map +1 -0
  224. package/dist/chunk-ZH3KC4ES.js +51 -0
  225. package/dist/chunk-ZH3KC4ES.js.map +1 -0
  226. package/dist/chunk-ZPUYNM37.js +3 -0
  227. package/dist/chunk-ZPUYNM37.js.map +1 -0
  228. package/dist/chunk-ZUODIL43.js +113 -0
  229. package/dist/chunk-ZUODIL43.js.map +1 -0
  230. package/dist/chunk-ZXL4IUJ4.cjs +129 -0
  231. package/dist/chunk-ZXL4IUJ4.cjs.map +1 -0
  232. package/dist/date-picker.cjs +15 -0
  233. package/dist/date-picker.cjs.map +1 -0
  234. package/dist/date-picker.d.cts +19 -0
  235. package/dist/date-picker.d.ts +19 -0
  236. package/dist/date-picker.js +6 -0
  237. package/dist/date-picker.js.map +1 -0
  238. package/dist/divider.cjs +13 -0
  239. package/dist/divider.cjs.map +1 -0
  240. package/dist/divider.d.cts +9 -0
  241. package/dist/divider.d.ts +9 -0
  242. package/dist/divider.js +4 -0
  243. package/dist/divider.js.map +1 -0
  244. package/dist/dropdown-menu.cjs +13 -0
  245. package/dist/dropdown-menu.cjs.map +1 -0
  246. package/dist/dropdown-menu.d.cts +23 -0
  247. package/dist/dropdown-menu.d.ts +23 -0
  248. package/dist/dropdown-menu.js +4 -0
  249. package/dist/dropdown-menu.js.map +1 -0
  250. package/dist/empty.cjs +13 -0
  251. package/dist/empty.cjs.map +1 -0
  252. package/dist/empty.d.cts +11 -0
  253. package/dist/empty.d.ts +11 -0
  254. package/dist/empty.js +4 -0
  255. package/dist/empty.js.map +1 -0
  256. package/dist/form.cjs +33 -0
  257. package/dist/form.cjs.map +1 -0
  258. package/dist/form.d.cts +18 -0
  259. package/dist/form.d.ts +18 -0
  260. package/dist/form.js +4 -0
  261. package/dist/form.js.map +1 -0
  262. package/dist/icon.cjs +13 -0
  263. package/dist/icon.cjs.map +1 -0
  264. package/dist/icon.d.cts +12 -0
  265. package/dist/icon.d.ts +12 -0
  266. package/dist/icon.js +4 -0
  267. package/dist/icon.js.map +1 -0
  268. package/dist/index.cjs +350 -0
  269. package/dist/index.cjs.map +1 -0
  270. package/dist/index.d.cts +167 -0
  271. package/dist/index.d.ts +167 -0
  272. package/dist/index.js +130 -0
  273. package/dist/index.js.map +1 -0
  274. package/dist/modal.cjs +13 -0
  275. package/dist/modal.cjs.map +1 -0
  276. package/dist/modal.d.cts +17 -0
  277. package/dist/modal.d.ts +17 -0
  278. package/dist/modal.js +4 -0
  279. package/dist/modal.js.map +1 -0
  280. package/dist/otp-input.cjs +13 -0
  281. package/dist/otp-input.cjs.map +1 -0
  282. package/dist/otp-input.d.cts +17 -0
  283. package/dist/otp-input.d.ts +17 -0
  284. package/dist/otp-input.js +4 -0
  285. package/dist/otp-input.js.map +1 -0
  286. package/dist/pagination.cjs +13 -0
  287. package/dist/pagination.cjs.map +1 -0
  288. package/dist/pagination.d.cts +12 -0
  289. package/dist/pagination.d.ts +12 -0
  290. package/dist/pagination.js +4 -0
  291. package/dist/pagination.js.map +1 -0
  292. package/dist/popover.cjs +14 -0
  293. package/dist/popover.cjs.map +1 -0
  294. package/dist/popover.d.cts +16 -0
  295. package/dist/popover.d.ts +16 -0
  296. package/dist/popover.js +5 -0
  297. package/dist/popover.js.map +1 -0
  298. package/dist/progress.cjs +13 -0
  299. package/dist/progress.cjs.map +1 -0
  300. package/dist/progress.d.cts +12 -0
  301. package/dist/progress.d.ts +12 -0
  302. package/dist/progress.js +4 -0
  303. package/dist/progress.js.map +1 -0
  304. package/dist/radio.cjs +13 -0
  305. package/dist/radio.cjs.map +1 -0
  306. package/dist/radio.d.cts +16 -0
  307. package/dist/radio.d.ts +16 -0
  308. package/dist/radio.js +4 -0
  309. package/dist/radio.js.map +1 -0
  310. package/dist/select.cjs +13 -0
  311. package/dist/select.cjs.map +1 -0
  312. package/dist/select.d.cts +23 -0
  313. package/dist/select.d.ts +23 -0
  314. package/dist/select.js +4 -0
  315. package/dist/select.js.map +1 -0
  316. package/dist/skeleton.cjs +13 -0
  317. package/dist/skeleton.cjs.map +1 -0
  318. package/dist/skeleton.d.cts +11 -0
  319. package/dist/skeleton.d.ts +11 -0
  320. package/dist/skeleton.js +4 -0
  321. package/dist/skeleton.js.map +1 -0
  322. package/dist/slider.cjs +13 -0
  323. package/dist/slider.cjs.map +1 -0
  324. package/dist/slider.d.cts +11 -0
  325. package/dist/slider.d.ts +11 -0
  326. package/dist/slider.js +4 -0
  327. package/dist/slider.js.map +1 -0
  328. package/dist/spinner.cjs +14 -0
  329. package/dist/spinner.cjs.map +1 -0
  330. package/dist/spinner.d.cts +18 -0
  331. package/dist/spinner.d.ts +18 -0
  332. package/dist/spinner.js +5 -0
  333. package/dist/spinner.js.map +1 -0
  334. package/dist/stepper.cjs +13 -0
  335. package/dist/stepper.cjs.map +1 -0
  336. package/dist/stepper.d.cts +15 -0
  337. package/dist/stepper.d.ts +15 -0
  338. package/dist/stepper.js +4 -0
  339. package/dist/stepper.js.map +1 -0
  340. package/dist/table.cjs +13 -0
  341. package/dist/table.cjs.map +1 -0
  342. package/dist/table.d.cts +23 -0
  343. package/dist/table.d.ts +23 -0
  344. package/dist/table.js +4 -0
  345. package/dist/table.js.map +1 -0
  346. package/dist/tabs.cjs +13 -0
  347. package/dist/tabs.cjs.map +1 -0
  348. package/dist/tabs.d.cts +16 -0
  349. package/dist/tabs.d.ts +16 -0
  350. package/dist/tabs.js +4 -0
  351. package/dist/tabs.js.map +1 -0
  352. package/dist/text.cjs +18 -0
  353. package/dist/text.cjs.map +1 -0
  354. package/dist/text.d.cts +18 -0
  355. package/dist/text.d.ts +18 -0
  356. package/dist/text.js +5 -0
  357. package/dist/text.js.map +1 -0
  358. package/dist/textarea.cjs +13 -0
  359. package/dist/textarea.cjs.map +1 -0
  360. package/dist/textarea.d.cts +13 -0
  361. package/dist/textarea.d.ts +13 -0
  362. package/dist/textarea.js +4 -0
  363. package/dist/textarea.js.map +1 -0
  364. package/dist/textfield.cjs +13 -0
  365. package/dist/textfield.cjs.map +1 -0
  366. package/dist/textfield.d.cts +11 -0
  367. package/dist/textfield.d.ts +11 -0
  368. package/dist/textfield.js +4 -0
  369. package/dist/textfield.js.map +1 -0
  370. package/dist/toast.cjs +37 -0
  371. package/dist/toast.cjs.map +1 -0
  372. package/dist/toast.d.cts +53 -0
  373. package/dist/toast.d.ts +53 -0
  374. package/dist/toast.js +4 -0
  375. package/dist/toast.js.map +1 -0
  376. package/dist/toggle.cjs +13 -0
  377. package/dist/toggle.cjs.map +1 -0
  378. package/dist/toggle.d.cts +10 -0
  379. package/dist/toggle.d.ts +10 -0
  380. package/dist/toggle.js +4 -0
  381. package/dist/toggle.js.map +1 -0
  382. package/dist/tooltip.cjs +13 -0
  383. package/dist/tooltip.cjs.map +1 -0
  384. package/dist/tooltip.d.cts +15 -0
  385. package/dist/tooltip.d.ts +15 -0
  386. package/dist/tooltip.js +4 -0
  387. package/dist/tooltip.js.map +1 -0
  388. package/package.json +276 -0
@@ -0,0 +1,83 @@
1
+ 'use strict';
2
+
3
+ var chunk4V3IOZPC_cjs = require('./chunk-4V3IOZPC.cjs');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+
6
+ function Table({
7
+ columns,
8
+ data,
9
+ keyExtractor,
10
+ emptyMessage = "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",
11
+ loading,
12
+ striped,
13
+ className,
14
+ caption
15
+ }) {
16
+ const alignClass = {
17
+ left: "text-left",
18
+ center: "text-center",
19
+ right: "text-right"
20
+ };
21
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk4V3IOZPC_cjs.cn("w-full overflow-x-auto rounded-xl border border-[var(--color-border)]", className), children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "w-full border-collapse text-[14px]", children: [
22
+ caption && /* @__PURE__ */ jsxRuntime.jsx("caption", { className: "mb-2 text-[13px] text-[var(--color-muted-foreground)] caption-bottom", children: caption }),
23
+ /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsx("tr", { className: "border-b border-[var(--color-border)] bg-[var(--color-muted)]", children: columns.map((col, i) => {
24
+ var _a;
25
+ return /* @__PURE__ */ jsxRuntime.jsx(
26
+ "th",
27
+ {
28
+ style: col.width ? { width: col.width } : void 0,
29
+ className: chunk4V3IOZPC_cjs.cn(
30
+ "px-4 py-3 font-semibold text-[var(--color-muted-foreground)] whitespace-nowrap",
31
+ alignClass[(_a = col.align) != null ? _a : "left"]
32
+ ),
33
+ children: col.header
34
+ },
35
+ String(col.key) + i
36
+ );
37
+ }) }) }),
38
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: loading ? /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan: columns.length, className: "px-4 py-8 text-center text-[var(--color-muted-foreground)]", children: /* @__PURE__ */ jsxRuntime.jsx(LoadingSpinner, {}) }) }) : data.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan: columns.length, className: "px-4 py-8 text-center text-[var(--color-muted-foreground)]", children: emptyMessage }) }) : data.map((row, rowIndex) => /* @__PURE__ */ jsxRuntime.jsx(
39
+ "tr",
40
+ {
41
+ className: chunk4V3IOZPC_cjs.cn(
42
+ "border-b border-[var(--color-border)] last:border-b-0",
43
+ "transition-colors duration-100 hover:bg-[var(--color-muted)]/50",
44
+ striped && rowIndex % 2 === 1 && "bg-[var(--color-muted)]/30"
45
+ ),
46
+ children: columns.map((col, colIndex) => {
47
+ var _a;
48
+ return /* @__PURE__ */ jsxRuntime.jsx(
49
+ "td",
50
+ {
51
+ className: chunk4V3IOZPC_cjs.cn(
52
+ "px-4 py-3 text-[var(--color-foreground)]",
53
+ alignClass[(_a = col.align) != null ? _a : "left"]
54
+ ),
55
+ children: col.render ? col.render(row, rowIndex) : row[col.key]
56
+ },
57
+ String(col.key) + colIndex
58
+ );
59
+ })
60
+ },
61
+ keyExtractor ? keyExtractor(row, rowIndex) : rowIndex
62
+ )) })
63
+ ] }) });
64
+ }
65
+ function LoadingSpinner() {
66
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsxRuntime.jsxs(
67
+ "svg",
68
+ {
69
+ className: "h-6 w-6 animate-spin text-[var(--color-primary)]",
70
+ xmlns: "http://www.w3.org/2000/svg",
71
+ fill: "none",
72
+ viewBox: "0 0 24 24",
73
+ children: [
74
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
75
+ /* @__PURE__ */ jsxRuntime.jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z" })
76
+ ]
77
+ }
78
+ ) });
79
+ }
80
+
81
+ exports.Table = Table;
82
+ //# sourceMappingURL=chunk-SG5Z3YFN.cjs.map
83
+ //# sourceMappingURL=chunk-SG5Z3YFN.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Table/Table.tsx"],"names":["jsx","cn","jsxs"],"mappings":"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","file":"chunk-SG5Z3YFN.cjs","sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface TableColumn<T> {\n key: keyof T | string;\n header: React.ReactNode;\n render?: (row: T, index: number) => React.ReactNode;\n align?: \"left\" | \"center\" | \"right\";\n width?: string;\n}\n\nexport interface TableProps<T> {\n columns: TableColumn<T>[];\n data: T[];\n keyExtractor?: (row: T, index: number) => string | number;\n emptyMessage?: string;\n loading?: boolean;\n striped?: boolean;\n className?: string;\n caption?: string;\n}\n\nfunction Table<T extends object>({\n columns,\n data,\n keyExtractor,\n emptyMessage = \"데이터가 없습니다.\",\n loading,\n striped,\n className,\n caption,\n}: TableProps<T>) {\n const alignClass = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n };\n\n return (\n <div className={cn(\"w-full overflow-x-auto rounded-xl border border-[var(--color-border)]\", className)}>\n <table className=\"w-full border-collapse text-[14px]\">\n {caption && (\n <caption className=\"mb-2 text-[13px] text-[var(--color-muted-foreground)] caption-bottom\">\n {caption}\n </caption>\n )}\n <thead>\n <tr className=\"border-b border-[var(--color-border)] bg-[var(--color-muted)]\">\n {columns.map((col, i) => (\n <th\n key={String(col.key) + i}\n style={col.width ? { width: col.width } : undefined}\n className={cn(\n \"px-4 py-3 font-semibold text-[var(--color-muted-foreground)] whitespace-nowrap\",\n alignClass[col.align ?? \"left\"]\n )}\n >\n {col.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {loading ? (\n <tr>\n <td colSpan={columns.length} className=\"px-4 py-8 text-center text-[var(--color-muted-foreground)]\">\n <LoadingSpinner />\n </td>\n </tr>\n ) : data.length === 0 ? (\n <tr>\n <td colSpan={columns.length} className=\"px-4 py-8 text-center text-[var(--color-muted-foreground)]\">\n {emptyMessage}\n </td>\n </tr>\n ) : (\n data.map((row, rowIndex) => (\n <tr\n key={keyExtractor ? keyExtractor(row, rowIndex) : rowIndex}\n className={cn(\n \"border-b border-[var(--color-border)] last:border-b-0\",\n \"transition-colors duration-100 hover:bg-[var(--color-muted)]/50\",\n striped && rowIndex % 2 === 1 && \"bg-[var(--color-muted)]/30\"\n )}\n >\n {columns.map((col, colIndex) => (\n <td\n key={String(col.key) + colIndex}\n className={cn(\n \"px-4 py-3 text-[var(--color-foreground)]\",\n alignClass[col.align ?? \"left\"]\n )}\n >\n {col.render\n ? col.render(row, rowIndex)\n : (row[col.key as keyof T] as React.ReactNode)}\n </td>\n ))}\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n );\n}\n\nfunction LoadingSpinner() {\n return (\n <div className=\"flex justify-center\">\n <svg\n className=\"h-6 w-6 animate-spin text-[var(--color-primary)]\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\" />\n </svg>\n </div>\n );\n}\n\nexport { Table };\n"]}
@@ -0,0 +1,81 @@
1
+ 'use strict';
2
+
3
+ var chunk4V3IOZPC_cjs = require('./chunk-4V3IOZPC.cjs');
4
+ var React = require('react');
5
+ var TabsPrimitive = require('@radix-ui/react-tabs');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ function _interopNamespace(e) {
9
+ if (e && e.__esModule) return e;
10
+ var n = Object.create(null);
11
+ if (e) {
12
+ Object.keys(e).forEach(function (k) {
13
+ if (k !== 'default') {
14
+ var d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: function () { return e[k]; }
18
+ });
19
+ }
20
+ });
21
+ }
22
+ n.default = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
27
+ var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
28
+
29
+ var Tabs = React__namespace.forwardRef((_a, ref) => {
30
+ var _b = _a, { className, items, variant = "line" } = _b, props = chunk4V3IOZPC_cjs.__objRest(_b, ["className", "items", "variant"]);
31
+ return /* @__PURE__ */ jsxRuntime.jsxs(TabsPrimitive__namespace.Root, chunk4V3IOZPC_cjs.__spreadProps(chunk4V3IOZPC_cjs.__spreadValues({ ref, className: chunk4V3IOZPC_cjs.cn("w-full", className) }, props), { children: [
32
+ /* @__PURE__ */ jsxRuntime.jsx(
33
+ TabsPrimitive__namespace.List,
34
+ {
35
+ className: chunk4V3IOZPC_cjs.cn(
36
+ "flex",
37
+ variant === "line" ? "border-b border-[var(--color-border)] gap-0" : "gap-2 bg-[var(--color-muted)] rounded-xl p-1"
38
+ ),
39
+ children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
40
+ TabsPrimitive__namespace.Trigger,
41
+ {
42
+ value: item.value,
43
+ disabled: item.disabled,
44
+ className: chunk4V3IOZPC_cjs.cn(
45
+ "transition-colors duration-150 select-none outline-none",
46
+ "disabled:opacity-40 disabled:cursor-not-allowed",
47
+ variant === "line" ? chunk4V3IOZPC_cjs.cn(
48
+ "px-4 py-3 text-[15px] font-medium text-[var(--color-muted-foreground)]",
49
+ "border-b-2 border-transparent -mb-px",
50
+ "hover:text-[var(--color-foreground)]",
51
+ "data-[state=active]:text-[var(--color-primary)] data-[state=active]:border-[var(--color-primary)]",
52
+ "focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 rounded-t-md"
53
+ ) : chunk4V3IOZPC_cjs.cn(
54
+ "flex-1 rounded-lg px-4 py-2 text-[14px] font-medium text-[var(--color-muted-foreground)]",
55
+ "hover:text-[var(--color-foreground)]",
56
+ "data-[state=active]:bg-[var(--color-surface)] data-[state=active]:text-[var(--color-foreground)] data-[state=active]:shadow-sm",
57
+ "focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2"
58
+ )
59
+ ),
60
+ children: item.label
61
+ },
62
+ item.value
63
+ ))
64
+ }
65
+ ),
66
+ items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
67
+ TabsPrimitive__namespace.Content,
68
+ {
69
+ value: item.value,
70
+ className: "mt-4 outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 rounded-md",
71
+ children: item.content
72
+ },
73
+ item.value
74
+ ))
75
+ ] }));
76
+ });
77
+ Tabs.displayName = "Tabs";
78
+
79
+ exports.Tabs = Tabs;
80
+ //# sourceMappingURL=chunk-SHEMISNH.cjs.map
81
+ //# sourceMappingURL=chunk-SHEMISNH.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Tabs/Tabs.tsx"],"names":["React","__objRest","jsxs","TabsPrimitive","__spreadProps","cn","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,IAAM,IAAA,GAAaA,gBAAA,CAAA,UAAA,CAGjB,CAAC,EAAA,EAAkD,GAAA,KAAK;AAAvD,EAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EAAW,KAAA,EAAO,OAAA,GAAU,MAAA,EAnBjC,GAmBG,IAAyC,KAAA,GAAAC,2BAAA,CAAzC,EAAA,EAAyC,CAAvC,WAAA,EAAW,OAAA,EAAO,SAAA,CAAA,CAAA;AACrB,EAAA,uBAAAC,eAAA,CAAeC,wBAAA,CAAA,IAAA,EAAdC,mEAAmB,GAAA,EAAU,SAAA,EAAWC,qBAAG,QAAA,EAAU,SAAS,CAAA,EAAA,EAAO,KAAA,CAAA,EAArE,EACC,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAAeH,wBAAA,CAAA,IAAA;AAAA,MAAd;AAAA,QACC,SAAA,EAAWE,oBAAA;AAAA,UACT,MAAA;AAAA,UACA,OAAA,KAAY,SACR,6CAAA,GACA;AAAA,SACN;AAAA,QAEC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACVC,cAAA;AAAA,UAAeH,wBAAA,CAAA,OAAA;AAAA,UAAd;AAAA,YAEC,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,SAAA,EAAWE,oBAAA;AAAA,cACT,yDAAA;AAAA,cACA,iDAAA;AAAA,cACA,YAAY,MAAA,GACRA,oBAAA;AAAA,gBACE,wEAAA;AAAA,gBACA,sCAAA;AAAA,gBACA,sCAAA;AAAA,gBACA,mGAAA;AAAA,gBACA;AAAA,eACF,GACAA,oBAAA;AAAA,gBACE,0FAAA;AAAA,gBACA,sCAAA;AAAA,gBACA,gIAAA;AAAA,gBACA;AAAA;AACF,aACN;AAAA,YAEC,QAAA,EAAA,IAAA,CAAK;AAAA,WAAA;AAAA,UAtBD,IAAA,CAAK;AAAA,SAwBb;AAAA;AAAA,KACH;AAAA,IAEC,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACVC,cAAA;AAAA,MAAeH,wBAAA,CAAA,OAAA;AAAA,MAAd;AAAA,QAEC,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,SAAA,EAAU,yHAAA;AAAA,QAET,QAAA,EAAA,IAAA,CAAK;AAAA,OAAA;AAAA,MAJD,IAAA,CAAK;AAAA,KAMb;AAAA,GAAA,EAAA,CACH,CAAA;AAAA,CACD;AACD,IAAA,CAAK,WAAA,GAAc,MAAA","file":"chunk-SHEMISNH.cjs","sourcesContent":["import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface TabItem {\n value: string;\n label: string;\n content: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface TabsProps extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> {\n items: TabItem[];\n variant?: \"line\" | \"pill\";\n}\n\nconst Tabs = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Root>,\n TabsProps\n>(({ className, items, variant = \"line\", ...props }, ref) => (\n <TabsPrimitive.Root ref={ref} className={cn(\"w-full\", className)} {...props}>\n <TabsPrimitive.List\n className={cn(\n \"flex\",\n variant === \"line\"\n ? \"border-b border-[var(--color-border)] gap-0\"\n : \"gap-2 bg-[var(--color-muted)] rounded-xl p-1\"\n )}\n >\n {items.map((item) => (\n <TabsPrimitive.Trigger\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n className={cn(\n \"transition-colors duration-150 select-none outline-none\",\n \"disabled:opacity-40 disabled:cursor-not-allowed\",\n variant === \"line\"\n ? cn(\n \"px-4 py-3 text-[15px] font-medium text-[var(--color-muted-foreground)]\",\n \"border-b-2 border-transparent -mb-px\",\n \"hover:text-[var(--color-foreground)]\",\n \"data-[state=active]:text-[var(--color-primary)] data-[state=active]:border-[var(--color-primary)]\",\n \"focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 rounded-t-md\"\n )\n : cn(\n \"flex-1 rounded-lg px-4 py-2 text-[14px] font-medium text-[var(--color-muted-foreground)]\",\n \"hover:text-[var(--color-foreground)]\",\n \"data-[state=active]:bg-[var(--color-surface)] data-[state=active]:text-[var(--color-foreground)] data-[state=active]:shadow-sm\",\n \"focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2\"\n )\n )}\n >\n {item.label}\n </TabsPrimitive.Trigger>\n ))}\n </TabsPrimitive.List>\n\n {items.map((item) => (\n <TabsPrimitive.Content\n key={item.value}\n value={item.value}\n className=\"mt-4 outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 rounded-md\"\n >\n {item.content}\n </TabsPrimitive.Content>\n ))}\n </TabsPrimitive.Root>\n));\nTabs.displayName = \"Tabs\";\n\nexport { Tabs };\n"]}
@@ -0,0 +1,85 @@
1
+ import { cn } from './chunk-MVGUWG27.js';
2
+ import * as React from 'react';
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
+
5
+ function getStatus(index, currentStep) {
6
+ if (index < currentStep) return "completed";
7
+ if (index === currentStep) return "active";
8
+ return "upcoming";
9
+ }
10
+ var Stepper = ({ steps, currentStep, orientation = "horizontal", className }) => {
11
+ if (orientation === "vertical") {
12
+ return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col", className), children: steps.map((step, index) => {
13
+ const status = getStatus(index, currentStep);
14
+ const isLast = index === steps.length - 1;
15
+ return /* @__PURE__ */ jsxs("div", { className: "flex gap-4", children: [
16
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center", children: [
17
+ /* @__PURE__ */ jsx(StepIndicator, { index, status }),
18
+ !isLast && /* @__PURE__ */ jsx(
19
+ "div",
20
+ {
21
+ className: cn(
22
+ "w-0.5 flex-1 mt-1 mb-1 min-h-[24px]",
23
+ status === "completed" ? "bg-[var(--color-primary)]" : "bg-[var(--color-border)]"
24
+ )
25
+ }
26
+ )
27
+ ] }),
28
+ /* @__PURE__ */ jsx("div", { className: cn("flex flex-col pb-6", isLast && "pb-0"), children: /* @__PURE__ */ jsx(StepLabel, { step, status }) })
29
+ ] }, index);
30
+ }) });
31
+ }
32
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-start", className), children: steps.map((step, index) => {
33
+ const status = getStatus(index, currentStep);
34
+ const isLast = index === steps.length - 1;
35
+ return /* @__PURE__ */ jsxs(React.Fragment, { children: [
36
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-2 min-w-0 flex-1", children: [
37
+ /* @__PURE__ */ jsx(StepIndicator, { index, status }),
38
+ /* @__PURE__ */ jsx(StepLabel, { step, status, centered: true })
39
+ ] }),
40
+ !isLast && /* @__PURE__ */ jsx(
41
+ "div",
42
+ {
43
+ className: cn(
44
+ "h-0.5 flex-1 mt-[18px] mx-2 shrink",
45
+ status === "completed" ? "bg-[var(--color-primary)]" : "bg-[var(--color-border)]"
46
+ )
47
+ }
48
+ )
49
+ ] }, index);
50
+ }) });
51
+ };
52
+ function StepIndicator({ index, status }) {
53
+ return /* @__PURE__ */ jsx(
54
+ "div",
55
+ {
56
+ className: cn(
57
+ "flex h-9 w-9 shrink-0 items-center justify-center rounded-full text-[14px] font-semibold transition-colors duration-200",
58
+ status === "completed" ? "bg-[var(--color-primary)] text-white" : status === "active" ? "border-2 border-[var(--color-primary)] text-[var(--color-primary)] bg-[var(--color-surface)]" : "border-2 border-[var(--color-border)] text-[var(--color-muted-foreground)] bg-[var(--color-surface)]"
59
+ ),
60
+ children: status === "completed" ? /* @__PURE__ */ jsx(CheckIcon, {}) : /* @__PURE__ */ jsx("span", { children: index + 1 })
61
+ }
62
+ );
63
+ }
64
+ function StepLabel({ step, status, centered }) {
65
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-0.5", centered && "items-center text-center"), children: [
66
+ /* @__PURE__ */ jsx(
67
+ "span",
68
+ {
69
+ className: cn(
70
+ "text-[13px] font-medium",
71
+ status === "active" ? "text-[var(--color-primary)]" : status === "completed" ? "text-[var(--color-foreground)]" : "text-[var(--color-muted-foreground)]"
72
+ ),
73
+ children: step.title
74
+ }
75
+ ),
76
+ step.description && /* @__PURE__ */ jsx("span", { className: "text-[12px] text-[var(--color-muted-foreground)]", children: step.description })
77
+ ] });
78
+ }
79
+ function CheckIcon() {
80
+ return /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("path", { d: "M20 6 9 17l-5-5" }) });
81
+ }
82
+
83
+ export { Stepper };
84
+ //# sourceMappingURL=chunk-SPHRMXOV.js.map
85
+ //# sourceMappingURL=chunk-SPHRMXOV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Stepper/Stepper.tsx"],"names":[],"mappings":"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","file":"chunk-SPHRMXOV.js","sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface StepItem {\n title: string;\n description?: string;\n}\n\nexport type StepStatus = \"completed\" | \"active\" | \"upcoming\";\n\nexport interface StepperProps {\n steps: StepItem[];\n currentStep: number;\n orientation?: \"horizontal\" | \"vertical\";\n className?: string;\n}\n\nfunction getStatus(index: number, currentStep: number): StepStatus {\n if (index < currentStep) return \"completed\";\n if (index === currentStep) return \"active\";\n return \"upcoming\";\n}\n\nconst Stepper = ({ steps, currentStep, orientation = \"horizontal\", className }: StepperProps) => {\n if (orientation === \"vertical\") {\n return (\n <div className={cn(\"flex flex-col\", className)}>\n {steps.map((step, index) => {\n const status = getStatus(index, currentStep);\n const isLast = index === steps.length - 1;\n\n return (\n <div key={index} className=\"flex gap-4\">\n <div className=\"flex flex-col items-center\">\n <StepIndicator index={index} status={status} />\n {!isLast && (\n <div\n className={cn(\n \"w-0.5 flex-1 mt-1 mb-1 min-h-[24px]\",\n status === \"completed\" ? \"bg-[var(--color-primary)]\" : \"bg-[var(--color-border)]\"\n )}\n />\n )}\n </div>\n <div className={cn(\"flex flex-col pb-6\", isLast && \"pb-0\")}>\n <StepLabel step={step} status={status} />\n </div>\n </div>\n );\n })}\n </div>\n );\n }\n\n return (\n <div className={cn(\"flex items-start\", className)}>\n {steps.map((step, index) => {\n const status = getStatus(index, currentStep);\n const isLast = index === steps.length - 1;\n\n return (\n <React.Fragment key={index}>\n <div className=\"flex flex-col items-center gap-2 min-w-0 flex-1\">\n <StepIndicator index={index} status={status} />\n <StepLabel step={step} status={status} centered />\n </div>\n {!isLast && (\n <div\n className={cn(\n \"h-0.5 flex-1 mt-[18px] mx-2 shrink\",\n status === \"completed\" ? \"bg-[var(--color-primary)]\" : \"bg-[var(--color-border)]\"\n )}\n />\n )}\n </React.Fragment>\n );\n })}\n </div>\n );\n};\n\nfunction StepIndicator({ index, status }: { index: number; status: StepStatus }) {\n return (\n <div\n className={cn(\n \"flex h-9 w-9 shrink-0 items-center justify-center rounded-full text-[14px] font-semibold transition-colors duration-200\",\n status === \"completed\"\n ? \"bg-[var(--color-primary)] text-white\"\n : status === \"active\"\n ? \"border-2 border-[var(--color-primary)] text-[var(--color-primary)] bg-[var(--color-surface)]\"\n : \"border-2 border-[var(--color-border)] text-[var(--color-muted-foreground)] bg-[var(--color-surface)]\"\n )}\n >\n {status === \"completed\" ? <CheckIcon /> : <span>{index + 1}</span>}\n </div>\n );\n}\n\nfunction StepLabel({ step, status, centered }: { step: StepItem; status: StepStatus; centered?: boolean }) {\n return (\n <div className={cn(\"flex flex-col gap-0.5\", centered && \"items-center text-center\")}>\n <span\n className={cn(\n \"text-[13px] font-medium\",\n status === \"active\"\n ? \"text-[var(--color-primary)]\"\n : status === \"completed\"\n ? \"text-[var(--color-foreground)]\"\n : \"text-[var(--color-muted-foreground)]\"\n )}\n >\n {step.title}\n </span>\n {step.description && (\n <span className=\"text-[12px] text-[var(--color-muted-foreground)]\">{step.description}</span>\n )}\n </div>\n );\n}\n\nfunction CheckIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n\nexport { Stepper };\n"]}
@@ -0,0 +1,87 @@
1
+ import { cn } from './chunk-MVGUWG27.js';
2
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
3
+ import { jsxs, jsx } from 'react/jsx-runtime';
4
+
5
+ var sizeClasses = {
6
+ sm: "max-w-sm",
7
+ md: "max-w-md",
8
+ lg: "max-w-lg",
9
+ full: "max-w-full h-full rounded-none m-0"
10
+ };
11
+ var Modal = ({
12
+ open,
13
+ onOpenChange,
14
+ title,
15
+ description,
16
+ children,
17
+ footer,
18
+ size = "md",
19
+ showCloseButton = true,
20
+ trigger
21
+ }) => /* @__PURE__ */ jsxs(DialogPrimitive.Root, { open, onOpenChange, children: [
22
+ trigger && /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { asChild: true, children: trigger }),
23
+ /* @__PURE__ */ jsxs(DialogPrimitive.Portal, { children: [
24
+ /* @__PURE__ */ jsx(
25
+ DialogPrimitive.Overlay,
26
+ {
27
+ className: cn(
28
+ "fixed inset-0 z-50 bg-black/50 backdrop-blur-sm",
29
+ "data-[state=open]:animate-in data-[state=closed]:animate-out",
30
+ "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"
31
+ )
32
+ }
33
+ ),
34
+ /* @__PURE__ */ jsxs(
35
+ DialogPrimitive.Content,
36
+ {
37
+ className: cn(
38
+ "fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2",
39
+ "w-full bg-[var(--color-background)] shadow-xl",
40
+ "rounded-2xl p-6",
41
+ "data-[state=open]:animate-in data-[state=closed]:animate-out",
42
+ "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
43
+ "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
44
+ "data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]",
45
+ "data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]",
46
+ "outline-none",
47
+ sizeClasses[size]
48
+ ),
49
+ children: [
50
+ (title || showCloseButton) && /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between mb-4", children: [
51
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1 pr-8", children: [
52
+ title && /* @__PURE__ */ jsx(DialogPrimitive.Title, { className: "text-[18px] font-semibold text-[var(--color-foreground)]", children: title }),
53
+ description && /* @__PURE__ */ jsx(DialogPrimitive.Description, { className: "text-[14px] text-[var(--color-muted-foreground)]", children: description })
54
+ ] }),
55
+ showCloseButton && /* @__PURE__ */ jsxs(
56
+ DialogPrimitive.Close,
57
+ {
58
+ className: cn(
59
+ "absolute right-4 top-4 rounded-full p-1.5",
60
+ "text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)]",
61
+ "hover:bg-[var(--color-muted)] transition-colors duration-150",
62
+ "focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] focus:ring-offset-2"
63
+ ),
64
+ children: [
65
+ /* @__PURE__ */ jsx(XIcon, {}),
66
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "\uB2EB\uAE30" })
67
+ ]
68
+ }
69
+ )
70
+ ] }),
71
+ children && /* @__PURE__ */ jsx("div", { className: "text-[15px] text-[var(--color-foreground)]", children }),
72
+ footer && /* @__PURE__ */ jsx("div", { className: "mt-6 flex gap-3 justify-end", children: footer })
73
+ ]
74
+ }
75
+ )
76
+ ] })
77
+ ] });
78
+ function XIcon() {
79
+ return /* @__PURE__ */ jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
80
+ /* @__PURE__ */ jsx("path", { d: "M18 6 6 18" }),
81
+ /* @__PURE__ */ jsx("path", { d: "m6 6 12 12" })
82
+ ] });
83
+ }
84
+
85
+ export { Modal };
86
+ //# sourceMappingURL=chunk-TIWBLISD.js.map
87
+ //# sourceMappingURL=chunk-TIWBLISD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Modal/Modal.tsx"],"names":[],"mappings":"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","file":"chunk-TIWBLISD.js","sourcesContent":["import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface ModalProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n title?: string;\n description?: string;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n size?: \"sm\" | \"md\" | \"lg\" | \"full\";\n showCloseButton?: boolean;\n trigger?: React.ReactNode;\n}\n\nconst sizeClasses = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n full: \"max-w-full h-full rounded-none m-0\",\n};\n\nconst Modal = ({\n open,\n onOpenChange,\n title,\n description,\n children,\n footer,\n size = \"md\",\n showCloseButton = true,\n trigger,\n}: ModalProps) => (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n {trigger && <DialogPrimitive.Trigger asChild>{trigger}</DialogPrimitive.Trigger>}\n\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\"\n )}\n />\n <DialogPrimitive.Content\n className={cn(\n \"fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2\",\n \"w-full bg-[var(--color-background)] shadow-xl\",\n \"rounded-2xl p-6\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]\",\n \"data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\",\n \"outline-none\",\n sizeClasses[size]\n )}\n >\n {(title || showCloseButton) && (\n <div className=\"flex items-start justify-between mb-4\">\n <div className=\"flex flex-col gap-1 pr-8\">\n {title && (\n <DialogPrimitive.Title className=\"text-[18px] font-semibold text-[var(--color-foreground)]\">\n {title}\n </DialogPrimitive.Title>\n )}\n {description && (\n <DialogPrimitive.Description className=\"text-[14px] text-[var(--color-muted-foreground)]\">\n {description}\n </DialogPrimitive.Description>\n )}\n </div>\n {showCloseButton && (\n <DialogPrimitive.Close\n className={cn(\n \"absolute right-4 top-4 rounded-full p-1.5\",\n \"text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)]\",\n \"hover:bg-[var(--color-muted)] transition-colors duration-150\",\n \"focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] focus:ring-offset-2\"\n )}\n >\n <XIcon />\n <span className=\"sr-only\">닫기</span>\n </DialogPrimitive.Close>\n )}\n </div>\n )}\n\n {children && (\n <div className=\"text-[15px] text-[var(--color-foreground)]\">{children}</div>\n )}\n\n {footer && <div className=\"mt-6 flex gap-3 justify-end\">{footer}</div>}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n);\n\nfunction XIcon() {\n return (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18 6 6 18\" /><path d=\"m6 6 12 12\" />\n </svg>\n );\n}\n\nexport { Modal };\n"]}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=chunk-TMR56BBE.js.map
3
+ //# sourceMappingURL=chunk-TMR56BBE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-TMR56BBE.js"}
@@ -0,0 +1,105 @@
1
+ 'use strict';
2
+
3
+ var chunkEVF7QZMA_cjs = require('./chunk-EVF7QZMA.cjs');
4
+ var chunk4V3IOZPC_cjs = require('./chunk-4V3IOZPC.cjs');
5
+ var React = require('react');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ function _interopNamespace(e) {
9
+ if (e && e.__esModule) return e;
10
+ var n = Object.create(null);
11
+ if (e) {
12
+ Object.keys(e).forEach(function (k) {
13
+ if (k !== 'default') {
14
+ var d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: function () { return e[k]; }
18
+ });
19
+ }
20
+ });
21
+ }
22
+ n.default = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
27
+
28
+ var localeMap = {
29
+ KRW: "ko-KR",
30
+ USD: "en-US",
31
+ JPY: "ja-JP",
32
+ EUR: "de-DE",
33
+ GBP: "en-GB",
34
+ CNY: "zh-CN"
35
+ };
36
+ function formatAmount({
37
+ value,
38
+ currency,
39
+ locale,
40
+ showSign,
41
+ minimumFractionDigits,
42
+ maximumFractionDigits
43
+ }) {
44
+ var _a;
45
+ const resolvedLocale = locale != null ? locale : currency ? (_a = localeMap[currency]) != null ? _a : "ko-KR" : "ko-KR";
46
+ const options = chunk4V3IOZPC_cjs.__spreadProps(chunk4V3IOZPC_cjs.__spreadValues({}, currency ? { style: "currency", currency } : { style: "decimal" }), {
47
+ minimumFractionDigits: minimumFractionDigits != null ? minimumFractionDigits : currency === "KRW" || currency === "JPY" ? 0 : void 0,
48
+ maximumFractionDigits: maximumFractionDigits != null ? maximumFractionDigits : currency === "KRW" || currency === "JPY" ? 0 : void 0,
49
+ signDisplay: showSign ? "exceptZero" : "auto"
50
+ });
51
+ return new Intl.NumberFormat(resolvedLocale, options).format(value);
52
+ }
53
+ var Amount = React__namespace.forwardRef(
54
+ (_a, ref) => {
55
+ var _b = _a, {
56
+ className,
57
+ value,
58
+ currency,
59
+ locale,
60
+ showSign = false,
61
+ minimumFractionDigits,
62
+ maximumFractionDigits,
63
+ variant,
64
+ color: colorProp,
65
+ colorBySign = false
66
+ } = _b, props = chunk4V3IOZPC_cjs.__objRest(_b, [
67
+ "className",
68
+ "value",
69
+ "currency",
70
+ "locale",
71
+ "showSign",
72
+ "minimumFractionDigits",
73
+ "maximumFractionDigits",
74
+ "variant",
75
+ "color",
76
+ "colorBySign"
77
+ ]);
78
+ const autoColor = colorBySign ? value > 0 ? "positive" : value < 0 ? "negative" : "default" : void 0;
79
+ const color = colorProp != null ? colorProp : autoColor;
80
+ const formatted = formatAmount({
81
+ value,
82
+ currency,
83
+ locale,
84
+ showSign,
85
+ minimumFractionDigits,
86
+ maximumFractionDigits
87
+ });
88
+ return /* @__PURE__ */ jsxRuntime.jsx(
89
+ "span",
90
+ chunk4V3IOZPC_cjs.__spreadProps(chunk4V3IOZPC_cjs.__spreadValues({
91
+ ref,
92
+ className: chunk4V3IOZPC_cjs.cn(variant && chunkEVF7QZMA_cjs.textVariants({ variant, color }), !variant && color && chunkEVF7QZMA_cjs.textVariants({ color }), className),
93
+ "aria-label": `${formatted}`
94
+ }, props), {
95
+ children: formatted
96
+ })
97
+ );
98
+ }
99
+ );
100
+ Amount.displayName = "Amount";
101
+
102
+ exports.Amount = Amount;
103
+ exports.formatAmount = formatAmount;
104
+ //# sourceMappingURL=chunk-U5KHRCO4.cjs.map
105
+ //# sourceMappingURL=chunk-U5KHRCO4.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Amount/Amount.tsx"],"names":["__spreadProps","__spreadValues","React","__objRest","jsx","cn","textVariants"],"mappings":"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","file":"chunk-U5KHRCO4.cjs","sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { textVariants, type TextProps } from \"../Text/Text\";\n\nexport interface AmountProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\"> {\n /** 표시할 숫자 */\n value: number;\n /**\n * ISO 4217 통화 코드. 지정하면 통화 기호가 앞/뒤에 붙습니다.\n * @example \"KRW\" | \"USD\" | \"JPY\" | \"EUR\"\n */\n currency?: string;\n /**\n * BCP 47 언어 태그. 기본값은 브라우저 환경 기준.\n * @example \"ko-KR\" | \"en-US\" | \"ja-JP\"\n */\n locale?: string;\n /** +/- 부호 표시 여부 */\n showSign?: boolean;\n /** 소수점 최소 자릿수 */\n minimumFractionDigits?: number;\n /** 소수점 최대 자릿수 */\n maximumFractionDigits?: number;\n /** 타이포그래피 variant */\n variant?: TextProps[\"variant\"];\n /** 색상 */\n color?: TextProps[\"color\"];\n /**\n * 양수/음수에 따라 color를 자동 적용.\n * showSign과 함께 쓸 때 유용합니다.\n */\n colorBySign?: boolean;\n}\n\nconst localeMap: Record<string, string> = {\n KRW: \"ko-KR\",\n USD: \"en-US\",\n JPY: \"ja-JP\",\n EUR: \"de-DE\",\n GBP: \"en-GB\",\n CNY: \"zh-CN\",\n};\n\nfunction formatAmount({\n value,\n currency,\n locale,\n showSign,\n minimumFractionDigits,\n maximumFractionDigits,\n}: Pick<\n AmountProps,\n | \"value\"\n | \"currency\"\n | \"locale\"\n | \"showSign\"\n | \"minimumFractionDigits\"\n | \"maximumFractionDigits\"\n>): string {\n const resolvedLocale = locale ?? (currency ? (localeMap[currency] ?? \"ko-KR\") : \"ko-KR\");\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const options: any = {\n ...(currency ? { style: \"currency\", currency } : { style: \"decimal\" }),\n minimumFractionDigits:\n minimumFractionDigits ?? (currency === \"KRW\" || currency === \"JPY\" ? 0 : undefined),\n maximumFractionDigits:\n maximumFractionDigits ?? (currency === \"KRW\" || currency === \"JPY\" ? 0 : undefined),\n signDisplay: showSign ? \"exceptZero\" : \"auto\",\n };\n\n return new Intl.NumberFormat(resolvedLocale, options).format(value);\n}\n\nconst Amount = React.forwardRef<HTMLSpanElement, AmountProps>(\n (\n {\n className,\n value,\n currency,\n locale,\n showSign = false,\n minimumFractionDigits,\n maximumFractionDigits,\n variant,\n color: colorProp,\n colorBySign = false,\n ...props\n },\n ref\n ) => {\n const autoColor: TextProps[\"color\"] =\n colorBySign\n ? value > 0\n ? \"positive\"\n : value < 0\n ? \"negative\"\n : \"default\"\n : undefined;\n\n const color = colorProp ?? autoColor;\n\n const formatted = formatAmount({\n value,\n currency,\n locale,\n showSign,\n minimumFractionDigits,\n maximumFractionDigits,\n });\n\n return (\n <span\n ref={ref}\n className={cn(variant && textVariants({ variant, color }), !variant && color && textVariants({ color }), className)}\n aria-label={`${formatted}`}\n {...props}\n >\n {formatted}\n </span>\n );\n }\n);\nAmount.displayName = \"Amount\";\n\nexport { Amount, formatAmount };\n"]}
@@ -0,0 +1,58 @@
1
+ import { __objRest, __spreadProps, __spreadValues, cn } from './chunk-MVGUWG27.js';
2
+ import * as React from 'react';
3
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ var Tabs = React.forwardRef((_a, ref) => {
7
+ var _b = _a, { className, items, variant = "line" } = _b, props = __objRest(_b, ["className", "items", "variant"]);
8
+ return /* @__PURE__ */ jsxs(TabsPrimitive.Root, __spreadProps(__spreadValues({ ref, className: cn("w-full", className) }, props), { children: [
9
+ /* @__PURE__ */ jsx(
10
+ TabsPrimitive.List,
11
+ {
12
+ className: cn(
13
+ "flex",
14
+ variant === "line" ? "border-b border-[var(--color-border)] gap-0" : "gap-2 bg-[var(--color-muted)] rounded-xl p-1"
15
+ ),
16
+ children: items.map((item) => /* @__PURE__ */ jsx(
17
+ TabsPrimitive.Trigger,
18
+ {
19
+ value: item.value,
20
+ disabled: item.disabled,
21
+ className: cn(
22
+ "transition-colors duration-150 select-none outline-none",
23
+ "disabled:opacity-40 disabled:cursor-not-allowed",
24
+ variant === "line" ? cn(
25
+ "px-4 py-3 text-[15px] font-medium text-[var(--color-muted-foreground)]",
26
+ "border-b-2 border-transparent -mb-px",
27
+ "hover:text-[var(--color-foreground)]",
28
+ "data-[state=active]:text-[var(--color-primary)] data-[state=active]:border-[var(--color-primary)]",
29
+ "focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 rounded-t-md"
30
+ ) : cn(
31
+ "flex-1 rounded-lg px-4 py-2 text-[14px] font-medium text-[var(--color-muted-foreground)]",
32
+ "hover:text-[var(--color-foreground)]",
33
+ "data-[state=active]:bg-[var(--color-surface)] data-[state=active]:text-[var(--color-foreground)] data-[state=active]:shadow-sm",
34
+ "focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2"
35
+ )
36
+ ),
37
+ children: item.label
38
+ },
39
+ item.value
40
+ ))
41
+ }
42
+ ),
43
+ items.map((item) => /* @__PURE__ */ jsx(
44
+ TabsPrimitive.Content,
45
+ {
46
+ value: item.value,
47
+ className: "mt-4 outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 rounded-md",
48
+ children: item.content
49
+ },
50
+ item.value
51
+ ))
52
+ ] }));
53
+ });
54
+ Tabs.displayName = "Tabs";
55
+
56
+ export { Tabs };
57
+ //# sourceMappingURL=chunk-UPW5X46R.js.map
58
+ //# sourceMappingURL=chunk-UPW5X46R.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Tabs/Tabs.tsx"],"names":[],"mappings":";;;;;AAgBA,IAAM,IAAA,GAAa,KAAA,CAAA,UAAA,CAGjB,CAAC,EAAA,EAAkD,GAAA,KAAK;AAAvD,EAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EAAW,KAAA,EAAO,OAAA,GAAU,MAAA,EAnBjC,GAmBG,IAAyC,KAAA,GAAA,SAAA,CAAzC,EAAA,EAAyC,CAAvC,WAAA,EAAW,OAAA,EAAO,SAAA,CAAA,CAAA;AACrB,EAAA,uBAAA,IAAA,CAAe,aAAA,CAAA,IAAA,EAAd,+BAAmB,GAAA,EAAU,SAAA,EAAW,GAAG,QAAA,EAAU,SAAS,CAAA,EAAA,EAAO,KAAA,CAAA,EAArE,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAe,aAAA,CAAA,IAAA;AAAA,MAAd;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,MAAA;AAAA,UACA,OAAA,KAAY,SACR,6CAAA,GACA;AAAA,SACN;AAAA,QAEC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACV,GAAA;AAAA,UAAe,aAAA,CAAA,OAAA;AAAA,UAAd;AAAA,YAEC,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,SAAA,EAAW,EAAA;AAAA,cACT,yDAAA;AAAA,cACA,iDAAA;AAAA,cACA,YAAY,MAAA,GACR,EAAA;AAAA,gBACE,wEAAA;AAAA,gBACA,sCAAA;AAAA,gBACA,sCAAA;AAAA,gBACA,mGAAA;AAAA,gBACA;AAAA,eACF,GACA,EAAA;AAAA,gBACE,0FAAA;AAAA,gBACA,sCAAA;AAAA,gBACA,gIAAA;AAAA,gBACA;AAAA;AACF,aACN;AAAA,YAEC,QAAA,EAAA,IAAA,CAAK;AAAA,WAAA;AAAA,UAtBD,IAAA,CAAK;AAAA,SAwBb;AAAA;AAAA,KACH;AAAA,IAEC,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACV,GAAA;AAAA,MAAe,aAAA,CAAA,OAAA;AAAA,MAAd;AAAA,QAEC,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,SAAA,EAAU,yHAAA;AAAA,QAET,QAAA,EAAA,IAAA,CAAK;AAAA,OAAA;AAAA,MAJD,IAAA,CAAK;AAAA,KAMb;AAAA,GAAA,EAAA,CACH,CAAA;AAAA,CACD;AACD,IAAA,CAAK,WAAA,GAAc,MAAA","file":"chunk-UPW5X46R.js","sourcesContent":["import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface TabItem {\n value: string;\n label: string;\n content: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface TabsProps extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> {\n items: TabItem[];\n variant?: \"line\" | \"pill\";\n}\n\nconst Tabs = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Root>,\n TabsProps\n>(({ className, items, variant = \"line\", ...props }, ref) => (\n <TabsPrimitive.Root ref={ref} className={cn(\"w-full\", className)} {...props}>\n <TabsPrimitive.List\n className={cn(\n \"flex\",\n variant === \"line\"\n ? \"border-b border-[var(--color-border)] gap-0\"\n : \"gap-2 bg-[var(--color-muted)] rounded-xl p-1\"\n )}\n >\n {items.map((item) => (\n <TabsPrimitive.Trigger\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n className={cn(\n \"transition-colors duration-150 select-none outline-none\",\n \"disabled:opacity-40 disabled:cursor-not-allowed\",\n variant === \"line\"\n ? cn(\n \"px-4 py-3 text-[15px] font-medium text-[var(--color-muted-foreground)]\",\n \"border-b-2 border-transparent -mb-px\",\n \"hover:text-[var(--color-foreground)]\",\n \"data-[state=active]:text-[var(--color-primary)] data-[state=active]:border-[var(--color-primary)]\",\n \"focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 rounded-t-md\"\n )\n : cn(\n \"flex-1 rounded-lg px-4 py-2 text-[14px] font-medium text-[var(--color-muted-foreground)]\",\n \"hover:text-[var(--color-foreground)]\",\n \"data-[state=active]:bg-[var(--color-surface)] data-[state=active]:text-[var(--color-foreground)] data-[state=active]:shadow-sm\",\n \"focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2\"\n )\n )}\n >\n {item.label}\n </TabsPrimitive.Trigger>\n ))}\n </TabsPrimitive.List>\n\n {items.map((item) => (\n <TabsPrimitive.Content\n key={item.value}\n value={item.value}\n className=\"mt-4 outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 rounded-md\"\n >\n {item.content}\n </TabsPrimitive.Content>\n ))}\n </TabsPrimitive.Root>\n));\nTabs.displayName = \"Tabs\";\n\nexport { Tabs };\n"]}
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ var framerMotion = require('framer-motion');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "AnimatePresence", {
8
+ enumerable: true,
9
+ get: function () { return framerMotion.AnimatePresence; }
10
+ });
11
+ Object.defineProperty(exports, "LazyMotion", {
12
+ enumerable: true,
13
+ get: function () { return framerMotion.LazyMotion; }
14
+ });
15
+ Object.defineProperty(exports, "domAnimation", {
16
+ enumerable: true,
17
+ get: function () { return framerMotion.domAnimation; }
18
+ });
19
+ Object.defineProperty(exports, "m", {
20
+ enumerable: true,
21
+ get: function () { return framerMotion.m; }
22
+ });
23
+ //# sourceMappingURL=chunk-UXYAKGI2.cjs.map
24
+ //# sourceMappingURL=chunk-UXYAKGI2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-UXYAKGI2.cjs","sourcesContent":[]}