@tipp/ui 2.7.1 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (420) hide show
  1. package/dist/app/index.cjs +55 -2
  2. package/dist/app/index.cjs.map +1 -1
  3. package/dist/app/index.js +107 -105
  4. package/dist/app/platform/coach-question-list.cjs +55 -2
  5. package/dist/app/platform/coach-question-list.cjs.map +1 -1
  6. package/dist/app/platform/coach-question-list.js +32 -30
  7. package/dist/app/platform/contents-card.cjs +55 -2
  8. package/dist/app/platform/contents-card.cjs.map +1 -1
  9. package/dist/app/platform/contents-card.js +32 -30
  10. package/dist/app/platform/curriculum-card.cjs +55 -2
  11. package/dist/app/platform/curriculum-card.cjs.map +1 -1
  12. package/dist/app/platform/curriculum-card.js +8 -6
  13. package/dist/app/platform/edit-coaching-time.cjs +55 -2
  14. package/dist/app/platform/edit-coaching-time.cjs.map +1 -1
  15. package/dist/app/platform/edit-coaching-time.js +83 -81
  16. package/dist/app/platform/edit-service-type.cjs +55 -2
  17. package/dist/app/platform/edit-service-type.cjs.map +1 -1
  18. package/dist/app/platform/edit-service-type.js +84 -82
  19. package/dist/app/platform/goal-manage-card-edit.cjs +55 -2
  20. package/dist/app/platform/goal-manage-card-edit.cjs.map +1 -1
  21. package/dist/app/platform/goal-manage-card-edit.js +83 -81
  22. package/dist/app/platform/goal-manage-card-read.cjs +55 -2
  23. package/dist/app/platform/goal-manage-card-read.cjs.map +1 -1
  24. package/dist/app/platform/goal-manage-card-read.js +32 -30
  25. package/dist/app/platform/on-offline-radio-card.cjs +55 -2
  26. package/dist/app/platform/on-offline-radio-card.cjs.map +1 -1
  27. package/dist/app/platform/on-offline-radio-card.js +83 -81
  28. package/dist/app/platform/report-card.cjs +55 -2
  29. package/dist/app/platform/report-card.cjs.map +1 -1
  30. package/dist/app/platform/report-card.js +32 -30
  31. package/dist/app/platform/reservation-card.cjs +55 -2
  32. package/dist/app/platform/reservation-card.cjs.map +1 -1
  33. package/dist/app/platform/reservation-card.js +84 -82
  34. package/dist/app/platform/session-card.cjs +55 -2
  35. package/dist/app/platform/session-card.cjs.map +1 -1
  36. package/dist/app/platform/session-card.js +86 -84
  37. package/dist/app/platform/session-review-simple-read.cjs +55 -2
  38. package/dist/app/platform/session-review-simple-read.cjs.map +1 -1
  39. package/dist/app/platform/session-review-simple-read.js +32 -30
  40. package/dist/app/platform/userInfos/coaching-customer-info/index.cjs +55 -2
  41. package/dist/app/platform/userInfos/coaching-customer-info/index.cjs.map +1 -1
  42. package/dist/app/platform/userInfos/coaching-customer-info/index.js +37 -35
  43. package/dist/app/platform/userInfos/coaching-customer-info/large.cjs +55 -2
  44. package/dist/app/platform/userInfos/coaching-customer-info/large.cjs.map +1 -1
  45. package/dist/app/platform/userInfos/coaching-customer-info/large.js +32 -30
  46. package/dist/app/platform/userInfos/coaching-customer-info/medium.cjs +55 -2
  47. package/dist/app/platform/userInfos/coaching-customer-info/medium.cjs.map +1 -1
  48. package/dist/app/platform/userInfos/coaching-customer-info/medium.js +32 -30
  49. package/dist/app/platform/userInfos/coaching-customer-info/small.cjs +55 -2
  50. package/dist/app/platform/userInfos/coaching-customer-info/small.cjs.map +1 -1
  51. package/dist/app/platform/userInfos/coaching-customer-info/small.js +32 -30
  52. package/dist/app/platform/userInfos/session-user-info-detail.cjs +55 -2
  53. package/dist/app/platform/userInfos/session-user-info-detail.cjs.map +1 -1
  54. package/dist/app/platform/userInfos/session-user-info-detail.js +32 -30
  55. package/dist/app/platform/userInfos/utils.cjs +55 -2
  56. package/dist/app/platform/userInfos/utils.cjs.map +1 -1
  57. package/dist/app/platform/userInfos/utils.js +31 -29
  58. package/dist/atoms/bullet-text.cjs +35 -1
  59. package/dist/atoms/bullet-text.cjs.map +1 -1
  60. package/dist/atoms/bullet-text.js +5 -3
  61. package/dist/atoms/dialog.cjs +35 -1
  62. package/dist/atoms/dialog.cjs.map +1 -1
  63. package/dist/atoms/dialog.js +4 -2
  64. package/dist/atoms/ellipsis-tooltip.cjs +35 -1
  65. package/dist/atoms/ellipsis-tooltip.cjs.map +1 -1
  66. package/dist/atoms/ellipsis-tooltip.js +6 -4
  67. package/dist/atoms/field-error-wrapper.cjs +35 -1
  68. package/dist/atoms/field-error-wrapper.cjs.map +1 -1
  69. package/dist/atoms/field-error-wrapper.js +5 -3
  70. package/dist/atoms/heading.cjs +35 -1
  71. package/dist/atoms/heading.cjs.map +1 -1
  72. package/dist/atoms/heading.d.cts +4 -0
  73. package/dist/atoms/heading.d.ts +4 -0
  74. package/dist/atoms/heading.js +3 -1
  75. package/dist/atoms/index.cjs +55 -2
  76. package/dist/atoms/index.cjs.map +1 -1
  77. package/dist/atoms/index.js +65 -63
  78. package/dist/atoms/list.cjs +35 -1
  79. package/dist/atoms/list.cjs.map +1 -1
  80. package/dist/atoms/list.js +5 -3
  81. package/dist/atoms/pagination.cjs +35 -1
  82. package/dist/atoms/pagination.cjs.map +1 -1
  83. package/dist/atoms/pagination.js +5 -3
  84. package/dist/atoms/tooltip.js +2 -2
  85. package/dist/atoms/typo.cjs +35 -1
  86. package/dist/atoms/typo.cjs.map +1 -1
  87. package/dist/atoms/typo.d.cts +4 -0
  88. package/dist/atoms/typo.d.ts +4 -0
  89. package/dist/atoms/typo.js +3 -1
  90. package/dist/{chunk-W5EYMVXS.js → chunk-2M3UFZUD.js} +4 -4
  91. package/dist/chunk-36W7VD2Z.js +13 -0
  92. package/dist/chunk-36W7VD2Z.js.map +1 -0
  93. package/dist/{chunk-YSZIV3CU.js → chunk-3DZIX4CE.js} +7 -7
  94. package/dist/{chunk-KJZIKOZN.js → chunk-47QYYEMG.js} +2 -2
  95. package/dist/{chunk-P7YWDJNW.js → chunk-4GH4R4VJ.js} +5 -5
  96. package/dist/{chunk-AV4A2DYD.js → chunk-5IGBFB67.js} +12 -12
  97. package/dist/{chunk-3M2R4R2V.js → chunk-5RIAIE2J.js} +5 -5
  98. package/dist/{chunk-VITMX6BM.js → chunk-64DSUMXA.js} +5 -5
  99. package/dist/{chunk-RFNUDAXX.js → chunk-6DWUGXSY.js} +9 -9
  100. package/dist/{chunk-AVFFTSKQ.js → chunk-6OT5OYGM.js} +4 -4
  101. package/dist/{chunk-7SX3S6P3.js → chunk-74PR3ZWJ.js} +10 -10
  102. package/dist/{chunk-M3AG4NSZ.js → chunk-75EY7LBP.js} +4 -4
  103. package/dist/{chunk-MMLVZWMD.js → chunk-AELKCD6B.js} +3 -3
  104. package/dist/{chunk-EVERKQW4.js → chunk-AHYOAFOU.js} +11 -11
  105. package/dist/{chunk-4BP63QT6.js → chunk-AT5PAJLW.js} +5 -5
  106. package/dist/{chunk-CNQFW2WR.js → chunk-C4INJWFV.js} +8 -8
  107. package/dist/{chunk-HGRKKNGU.js → chunk-C6HO3IGE.js} +4 -4
  108. package/dist/{chunk-SEUOHWYL.js → chunk-CBYIPRND.js} +4 -4
  109. package/dist/{chunk-GVOZ4OL4.js → chunk-CGLDFUOY.js} +8 -8
  110. package/dist/{chunk-466DYMJ3.js → chunk-CUS3ORMD.js} +10 -10
  111. package/dist/{chunk-FW2QU4JO.js → chunk-D4U2ZV2A.js} +4 -4
  112. package/dist/{chunk-XKG5IOSO.js → chunk-DPMDQA3O.js} +11 -11
  113. package/dist/{chunk-EYDTE4R3.js → chunk-EJXZXUD2.js} +15 -15
  114. package/dist/{chunk-E6GCU5IQ.js → chunk-FAL6S2XK.js} +2 -2
  115. package/dist/{chunk-HOFWTFCW.js → chunk-G3KQN32M.js} +7 -7
  116. package/dist/{chunk-BRRMEZNQ.js → chunk-GE4M5GOQ.js} +4 -4
  117. package/dist/{chunk-XLJQHI62.js → chunk-GNB4A34H.js} +4 -4
  118. package/dist/{chunk-2ME5TSVO.js → chunk-IRFNKOKQ.js} +9 -9
  119. package/dist/{chunk-QRYLRCA6.js → chunk-ISSUGCCY.js} +10 -10
  120. package/dist/{chunk-UK73NZQI.js → chunk-JCZXPONS.js} +6 -6
  121. package/dist/{chunk-CQSM6JCO.js → chunk-K3Q4XLCN.js} +4 -4
  122. package/dist/{chunk-FAZ6MJW2.js → chunk-K4RZTENM.js} +4 -4
  123. package/dist/{chunk-SYX35B5E.js → chunk-KDS7OQOY.js} +4 -4
  124. package/dist/{chunk-DD3FPRHB.js → chunk-KLJVIEFW.js} +9 -9
  125. package/dist/{chunk-GD7NQAMP.js → chunk-KQ3ME6XY.js} +5 -5
  126. package/dist/{chunk-GR4PG6HY.js → chunk-L4QQGIYQ.js} +27 -2
  127. package/dist/chunk-L4QQGIYQ.js.map +1 -0
  128. package/dist/{chunk-CFZM5JE4.js → chunk-LAGJDIVU.js} +5 -5
  129. package/dist/{chunk-FBYJMCIN.js → chunk-LK2H4QTJ.js} +10 -10
  130. package/dist/{chunk-5W6GSZGX.js → chunk-MQKIIIBW.js} +3 -3
  131. package/dist/{chunk-WVMXH4DX.js → chunk-N3FMP27I.js} +6 -6
  132. package/dist/{chunk-CE7HOORS.js → chunk-NEJCZABQ.js} +9 -9
  133. package/dist/{chunk-4FZUZ453.js → chunk-NK6S7ZMB.js} +11 -11
  134. package/dist/{chunk-BZFQBI2R.js → chunk-NVRVOTWZ.js} +7 -7
  135. package/dist/{chunk-AJTGTGOC.js → chunk-OOM522XP.js} +2 -2
  136. package/dist/{chunk-2OPXQ3HE.js → chunk-OPIVSYLN.js} +7 -7
  137. package/dist/{chunk-R4YNFO4T.js → chunk-OUDDTPEN.js} +2 -2
  138. package/dist/{chunk-NPBQ4C7M.js → chunk-OW2QNTK3.js} +7 -7
  139. package/dist/{chunk-B4HDNKVU.js → chunk-P2H3VCIB.js} +6 -6
  140. package/dist/{chunk-J5NSJGZH.js → chunk-P4DJ5F6Z.js} +4 -4
  141. package/dist/{chunk-2N3DY4VJ.js → chunk-PAUEQXYG.js} +7 -7
  142. package/dist/chunk-PO2PBAHW.js +10 -0
  143. package/dist/chunk-PO2PBAHW.js.map +1 -0
  144. package/dist/{chunk-74CWHYZA.js → chunk-Q2FDF2AB.js} +7 -7
  145. package/dist/{chunk-UIWGBVJI.js → chunk-QLNAAZJX.js} +4 -4
  146. package/dist/{chunk-BXHOQTLL.js → chunk-QLOYGKKM.js} +4 -4
  147. package/dist/{chunk-EA2OSGFZ.js → chunk-R5UDNKV2.js} +9 -9
  148. package/dist/{chunk-ADYJTATU.js → chunk-RBU2TRYY.js} +12 -12
  149. package/dist/{chunk-M2OFGXKX.js → chunk-RRC4WFG3.js} +2 -2
  150. package/dist/{chunk-UL6JYNEG.js → chunk-RWJUXAFY.js} +4 -4
  151. package/dist/{chunk-KO3V7KB6.js → chunk-S4MEMFKG.js} +2 -2
  152. package/dist/{chunk-D4US4T4T.js → chunk-SINRU2A6.js} +5 -5
  153. package/dist/{chunk-HO3ZU6U5.js → chunk-SQ3FYBJT.js} +5 -5
  154. package/dist/{chunk-QAFGOQTR.js → chunk-TQTCT7DC.js} +6 -6
  155. package/dist/{chunk-5YFN6IV4.js → chunk-U7HF53KK.js} +9 -9
  156. package/dist/{chunk-NLHVQJQ2.js → chunk-USGOLLYO.js} +27 -2
  157. package/dist/chunk-USGOLLYO.js.map +1 -0
  158. package/dist/{chunk-35E2WUIX.js → chunk-USL6PICI.js} +5 -5
  159. package/dist/{chunk-UHDZOX4S.js → chunk-UXH2XIB2.js} +4 -4
  160. package/dist/{chunk-YLDG4Y52.js → chunk-V7KAHLW2.js} +5 -5
  161. package/dist/{chunk-JEGY3OLE.js → chunk-VBXZIIUA.js} +6 -6
  162. package/dist/{chunk-AQVIQODP.js → chunk-VK6INFSB.js} +4 -4
  163. package/dist/{chunk-DPX24TVC.js → chunk-VVWQZK5L.js} +10 -10
  164. package/dist/{chunk-SM4SJYFT.js → chunk-WLKK5L3P.js} +8 -8
  165. package/dist/chunk-WTS75RUC.js +1 -0
  166. package/dist/{chunk-FTVHVY7L.js → chunk-WYHDQK2S.js} +10 -10
  167. package/dist/{chunk-IUULKM4U.js → chunk-X3TBEGPA.js} +10 -10
  168. package/dist/{chunk-PILMEQHD.js → chunk-XWHBJY5V.js} +7 -7
  169. package/dist/{chunk-PWORNPPB.js → chunk-ZGTGEBQX.js} +2 -2
  170. package/dist/context/dynamic-form-context.cjs +55 -2
  171. package/dist/context/dynamic-form-context.cjs.map +1 -1
  172. package/dist/context/dynamic-form-context.js +6 -4
  173. package/dist/context/index.cjs +55 -2
  174. package/dist/context/index.cjs.map +1 -1
  175. package/dist/context/index.js +9 -7
  176. package/dist/index.cjs +59 -2
  177. package/dist/index.cjs.map +1 -1
  178. package/dist/index.d.cts +2 -0
  179. package/dist/index.d.ts +2 -0
  180. package/dist/index.js +180 -172
  181. package/dist/molecules/autocomplete-textfield.cjs +35 -1
  182. package/dist/molecules/autocomplete-textfield.cjs.map +1 -1
  183. package/dist/molecules/autocomplete-textfield.js +5 -3
  184. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.cjs +55 -2
  185. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.cjs.map +1 -1
  186. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +18 -16
  187. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.cjs +35 -1
  188. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.cjs.map +1 -1
  189. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.js +6 -4
  190. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.cjs +35 -1
  191. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.cjs.map +1 -1
  192. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.js +11 -9
  193. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-footer.js +2 -2
  194. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-header.cjs +55 -2
  195. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-header.cjs.map +1 -1
  196. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-header.js +6 -4
  197. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-layout.js +2 -2
  198. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.cjs +35 -1
  199. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.cjs.map +1 -1
  200. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.js +7 -5
  201. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.cjs +35 -1
  202. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.cjs.map +1 -1
  203. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.js +7 -5
  204. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.cjs +35 -1
  205. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.cjs.map +1 -1
  206. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.js +7 -5
  207. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.cjs +35 -1
  208. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.cjs.map +1 -1
  209. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.js +7 -5
  210. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.cjs +55 -2
  211. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.cjs.map +1 -1
  212. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.js +6 -4
  213. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.cjs +55 -2
  214. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.cjs.map +1 -1
  215. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +22 -20
  216. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.cjs +55 -2
  217. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.cjs.map +1 -1
  218. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.js +8 -6
  219. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.cjs +35 -1
  220. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.cjs.map +1 -1
  221. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.js +5 -3
  222. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.cjs +35 -1
  223. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.cjs.map +1 -1
  224. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.js +5 -3
  225. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.cjs +55 -2
  226. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.cjs.map +1 -1
  227. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +24 -22
  228. package/dist/molecules/curriculumV2/CurriculumContents/index.cjs +55 -2
  229. package/dist/molecules/curriculumV2/CurriculumContents/index.cjs.map +1 -1
  230. package/dist/molecules/curriculumV2/CurriculumContents/index.js +28 -26
  231. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.cjs +35 -1
  232. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.cjs.map +1 -1
  233. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.js +5 -3
  234. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.cjs +35 -1
  235. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.cjs.map +1 -1
  236. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.js +6 -4
  237. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-title.cjs +35 -1
  238. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-title.cjs.map +1 -1
  239. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-title.js +4 -2
  240. package/dist/molecules/curriculumV2/CurriculumSidebar/index.cjs +35 -1
  241. package/dist/molecules/curriculumV2/CurriculumSidebar/index.cjs.map +1 -1
  242. package/dist/molecules/curriculumV2/CurriculumSidebar/index.js +11 -9
  243. package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.cjs +35 -1
  244. package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.cjs.map +1 -1
  245. package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.js +8 -6
  246. package/dist/molecules/curriculumV2/curriculum-sub-nav.cjs +55 -2
  247. package/dist/molecules/curriculumV2/curriculum-sub-nav.cjs.map +1 -1
  248. package/dist/molecules/curriculumV2/curriculum-sub-nav.js +6 -4
  249. package/dist/molecules/curriculumV2/curriculum-v2-layout.js +2 -2
  250. package/dist/molecules/curriculumV2/index.cjs +55 -2
  251. package/dist/molecules/curriculumV2/index.cjs.map +1 -1
  252. package/dist/molecules/curriculumV2/index.js +39 -37
  253. package/dist/molecules/date-picker/date-picker-button.cjs +55 -2
  254. package/dist/molecules/date-picker/date-picker-button.cjs.map +1 -1
  255. package/dist/molecules/date-picker/date-picker-button.js +9 -7
  256. package/dist/molecules/date-picker/index.cjs +55 -2
  257. package/dist/molecules/date-picker/index.cjs.map +1 -1
  258. package/dist/molecules/date-picker/index.js +8 -6
  259. package/dist/molecules/description-json-render.cjs +37 -1
  260. package/dist/molecules/description-json-render.cjs.map +1 -1
  261. package/dist/molecules/description-json-render.js +7 -5
  262. package/dist/molecules/download-card.cjs +35 -1
  263. package/dist/molecules/download-card.cjs.map +1 -1
  264. package/dist/molecules/download-card.js +5 -3
  265. package/dist/molecules/dynamic-field.cjs +55 -2
  266. package/dist/molecules/dynamic-field.cjs.map +1 -1
  267. package/dist/molecules/dynamic-field.js +10 -8
  268. package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs +35 -1
  269. package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs.map +1 -1
  270. package/dist/molecules/dynamic-form-editor-field-editor-panel.js +7 -5
  271. package/dist/molecules/dynamic-form-editor-field-list-panel.cjs +35 -1
  272. package/dist/molecules/dynamic-form-editor-field-list-panel.cjs.map +1 -1
  273. package/dist/molecules/dynamic-form-editor-field-list-panel.js +5 -3
  274. package/dist/molecules/dynamic-form-editor-issues-panel.cjs +35 -1
  275. package/dist/molecules/dynamic-form-editor-issues-panel.cjs.map +1 -1
  276. package/dist/molecules/dynamic-form-editor-issues-panel.js +5 -3
  277. package/dist/molecules/dynamic-form-editor-preview-panel.cjs +55 -2
  278. package/dist/molecules/dynamic-form-editor-preview-panel.cjs.map +1 -1
  279. package/dist/molecules/dynamic-form-editor-preview-panel.js +13 -11
  280. package/dist/molecules/dynamic-form-editor.cjs +55 -2
  281. package/dist/molecules/dynamic-form-editor.cjs.map +1 -1
  282. package/dist/molecules/dynamic-form-editor.js +18 -16
  283. package/dist/molecules/dynamic-form.cjs +55 -2
  284. package/dist/molecules/dynamic-form.cjs.map +1 -1
  285. package/dist/molecules/dynamic-form.js +11 -9
  286. package/dist/molecules/expand-table/index.cjs +35 -1
  287. package/dist/molecules/expand-table/index.cjs.map +1 -1
  288. package/dist/molecules/expand-table/index.js +6 -4
  289. package/dist/molecules/force-refresh.cjs +35 -1
  290. package/dist/molecules/force-refresh.cjs.map +1 -1
  291. package/dist/molecules/force-refresh.js +5 -3
  292. package/dist/molecules/form/form.cjs +55 -2
  293. package/dist/molecules/form/form.cjs.map +1 -1
  294. package/dist/molecules/form/form.js +5 -3
  295. package/dist/molecules/form/index.cjs +55 -2
  296. package/dist/molecules/form/index.cjs.map +1 -1
  297. package/dist/molecules/form/index.js +5 -3
  298. package/dist/molecules/ghost-post.cjs +35 -1
  299. package/dist/molecules/ghost-post.cjs.map +1 -1
  300. package/dist/molecules/ghost-post.js +6 -4
  301. package/dist/molecules/index.cjs +55 -2
  302. package/dist/molecules/index.cjs.map +1 -1
  303. package/dist/molecules/index.js +86 -84
  304. package/dist/molecules/learning-post.cjs +55 -2
  305. package/dist/molecules/learning-post.cjs.map +1 -1
  306. package/dist/molecules/learning-post.js +7 -5
  307. package/dist/molecules/navigation.cjs +35 -1
  308. package/dist/molecules/navigation.cjs.map +1 -1
  309. package/dist/molecules/navigation.js +5 -3
  310. package/dist/molecules/one-on-one-guide-list.cjs +55 -2
  311. package/dist/molecules/one-on-one-guide-list.cjs.map +1 -1
  312. package/dist/molecules/one-on-one-guide-list.js +7 -5
  313. package/dist/molecules/stepper.cjs +35 -1
  314. package/dist/molecules/stepper.cjs.map +1 -1
  315. package/dist/molecules/stepper.js +6 -4
  316. package/dist/molecules/tag-selector.cjs +35 -1
  317. package/dist/molecules/tag-selector.cjs.map +1 -1
  318. package/dist/molecules/tag-selector.js +8 -6
  319. package/dist/molecules/time-select.js +5 -3
  320. package/dist/molecules/training-info-guideline.cjs +55 -2
  321. package/dist/molecules/training-info-guideline.cjs.map +1 -1
  322. package/dist/molecules/training-info-guideline.js +9 -7
  323. package/dist/utils/clamp-style.cjs +37 -0
  324. package/dist/utils/clamp-style.cjs.map +1 -0
  325. package/dist/utils/clamp-style.d.cts +13 -0
  326. package/dist/utils/clamp-style.d.ts +13 -0
  327. package/dist/utils/clamp-style.js +8 -0
  328. package/dist/utils/clamp-style.js.map +1 -0
  329. package/dist/utils/index.cjs +19 -0
  330. package/dist/utils/index.cjs.map +1 -1
  331. package/dist/utils/index.d.cts +3 -0
  332. package/dist/utils/index.d.ts +3 -0
  333. package/dist/utils/index.js +14 -6
  334. package/dist/utils/mono-style.cjs +34 -0
  335. package/dist/utils/mono-style.cjs.map +1 -0
  336. package/dist/utils/mono-style.d.cts +12 -0
  337. package/dist/utils/mono-style.d.ts +12 -0
  338. package/dist/utils/mono-style.js +8 -0
  339. package/dist/utils/mono-style.js.map +1 -0
  340. package/package.json +1 -1
  341. package/src/atoms/heading.tsx +22 -1
  342. package/src/atoms/typo.tsx +22 -1
  343. package/src/utils/clamp-style.ts +17 -0
  344. package/src/utils/index.ts +3 -1
  345. package/src/utils/mono-style.ts +13 -0
  346. package/dist/chunk-GR4PG6HY.js.map +0 -1
  347. package/dist/chunk-NLHVQJQ2.js.map +0 -1
  348. package/dist/chunk-OLJN3WXR.js +0 -1
  349. /package/dist/{chunk-W5EYMVXS.js.map → chunk-2M3UFZUD.js.map} +0 -0
  350. /package/dist/{chunk-YSZIV3CU.js.map → chunk-3DZIX4CE.js.map} +0 -0
  351. /package/dist/{chunk-KJZIKOZN.js.map → chunk-47QYYEMG.js.map} +0 -0
  352. /package/dist/{chunk-P7YWDJNW.js.map → chunk-4GH4R4VJ.js.map} +0 -0
  353. /package/dist/{chunk-AV4A2DYD.js.map → chunk-5IGBFB67.js.map} +0 -0
  354. /package/dist/{chunk-3M2R4R2V.js.map → chunk-5RIAIE2J.js.map} +0 -0
  355. /package/dist/{chunk-VITMX6BM.js.map → chunk-64DSUMXA.js.map} +0 -0
  356. /package/dist/{chunk-RFNUDAXX.js.map → chunk-6DWUGXSY.js.map} +0 -0
  357. /package/dist/{chunk-AVFFTSKQ.js.map → chunk-6OT5OYGM.js.map} +0 -0
  358. /package/dist/{chunk-7SX3S6P3.js.map → chunk-74PR3ZWJ.js.map} +0 -0
  359. /package/dist/{chunk-M3AG4NSZ.js.map → chunk-75EY7LBP.js.map} +0 -0
  360. /package/dist/{chunk-MMLVZWMD.js.map → chunk-AELKCD6B.js.map} +0 -0
  361. /package/dist/{chunk-EVERKQW4.js.map → chunk-AHYOAFOU.js.map} +0 -0
  362. /package/dist/{chunk-4BP63QT6.js.map → chunk-AT5PAJLW.js.map} +0 -0
  363. /package/dist/{chunk-CNQFW2WR.js.map → chunk-C4INJWFV.js.map} +0 -0
  364. /package/dist/{chunk-HGRKKNGU.js.map → chunk-C6HO3IGE.js.map} +0 -0
  365. /package/dist/{chunk-SEUOHWYL.js.map → chunk-CBYIPRND.js.map} +0 -0
  366. /package/dist/{chunk-GVOZ4OL4.js.map → chunk-CGLDFUOY.js.map} +0 -0
  367. /package/dist/{chunk-466DYMJ3.js.map → chunk-CUS3ORMD.js.map} +0 -0
  368. /package/dist/{chunk-FW2QU4JO.js.map → chunk-D4U2ZV2A.js.map} +0 -0
  369. /package/dist/{chunk-XKG5IOSO.js.map → chunk-DPMDQA3O.js.map} +0 -0
  370. /package/dist/{chunk-EYDTE4R3.js.map → chunk-EJXZXUD2.js.map} +0 -0
  371. /package/dist/{chunk-E6GCU5IQ.js.map → chunk-FAL6S2XK.js.map} +0 -0
  372. /package/dist/{chunk-HOFWTFCW.js.map → chunk-G3KQN32M.js.map} +0 -0
  373. /package/dist/{chunk-BRRMEZNQ.js.map → chunk-GE4M5GOQ.js.map} +0 -0
  374. /package/dist/{chunk-XLJQHI62.js.map → chunk-GNB4A34H.js.map} +0 -0
  375. /package/dist/{chunk-2ME5TSVO.js.map → chunk-IRFNKOKQ.js.map} +0 -0
  376. /package/dist/{chunk-QRYLRCA6.js.map → chunk-ISSUGCCY.js.map} +0 -0
  377. /package/dist/{chunk-UK73NZQI.js.map → chunk-JCZXPONS.js.map} +0 -0
  378. /package/dist/{chunk-CQSM6JCO.js.map → chunk-K3Q4XLCN.js.map} +0 -0
  379. /package/dist/{chunk-FAZ6MJW2.js.map → chunk-K4RZTENM.js.map} +0 -0
  380. /package/dist/{chunk-SYX35B5E.js.map → chunk-KDS7OQOY.js.map} +0 -0
  381. /package/dist/{chunk-DD3FPRHB.js.map → chunk-KLJVIEFW.js.map} +0 -0
  382. /package/dist/{chunk-GD7NQAMP.js.map → chunk-KQ3ME6XY.js.map} +0 -0
  383. /package/dist/{chunk-CFZM5JE4.js.map → chunk-LAGJDIVU.js.map} +0 -0
  384. /package/dist/{chunk-FBYJMCIN.js.map → chunk-LK2H4QTJ.js.map} +0 -0
  385. /package/dist/{chunk-5W6GSZGX.js.map → chunk-MQKIIIBW.js.map} +0 -0
  386. /package/dist/{chunk-WVMXH4DX.js.map → chunk-N3FMP27I.js.map} +0 -0
  387. /package/dist/{chunk-CE7HOORS.js.map → chunk-NEJCZABQ.js.map} +0 -0
  388. /package/dist/{chunk-4FZUZ453.js.map → chunk-NK6S7ZMB.js.map} +0 -0
  389. /package/dist/{chunk-BZFQBI2R.js.map → chunk-NVRVOTWZ.js.map} +0 -0
  390. /package/dist/{chunk-AJTGTGOC.js.map → chunk-OOM522XP.js.map} +0 -0
  391. /package/dist/{chunk-2OPXQ3HE.js.map → chunk-OPIVSYLN.js.map} +0 -0
  392. /package/dist/{chunk-R4YNFO4T.js.map → chunk-OUDDTPEN.js.map} +0 -0
  393. /package/dist/{chunk-NPBQ4C7M.js.map → chunk-OW2QNTK3.js.map} +0 -0
  394. /package/dist/{chunk-B4HDNKVU.js.map → chunk-P2H3VCIB.js.map} +0 -0
  395. /package/dist/{chunk-J5NSJGZH.js.map → chunk-P4DJ5F6Z.js.map} +0 -0
  396. /package/dist/{chunk-2N3DY4VJ.js.map → chunk-PAUEQXYG.js.map} +0 -0
  397. /package/dist/{chunk-74CWHYZA.js.map → chunk-Q2FDF2AB.js.map} +0 -0
  398. /package/dist/{chunk-UIWGBVJI.js.map → chunk-QLNAAZJX.js.map} +0 -0
  399. /package/dist/{chunk-BXHOQTLL.js.map → chunk-QLOYGKKM.js.map} +0 -0
  400. /package/dist/{chunk-EA2OSGFZ.js.map → chunk-R5UDNKV2.js.map} +0 -0
  401. /package/dist/{chunk-ADYJTATU.js.map → chunk-RBU2TRYY.js.map} +0 -0
  402. /package/dist/{chunk-M2OFGXKX.js.map → chunk-RRC4WFG3.js.map} +0 -0
  403. /package/dist/{chunk-UL6JYNEG.js.map → chunk-RWJUXAFY.js.map} +0 -0
  404. /package/dist/{chunk-KO3V7KB6.js.map → chunk-S4MEMFKG.js.map} +0 -0
  405. /package/dist/{chunk-D4US4T4T.js.map → chunk-SINRU2A6.js.map} +0 -0
  406. /package/dist/{chunk-HO3ZU6U5.js.map → chunk-SQ3FYBJT.js.map} +0 -0
  407. /package/dist/{chunk-QAFGOQTR.js.map → chunk-TQTCT7DC.js.map} +0 -0
  408. /package/dist/{chunk-5YFN6IV4.js.map → chunk-U7HF53KK.js.map} +0 -0
  409. /package/dist/{chunk-35E2WUIX.js.map → chunk-USL6PICI.js.map} +0 -0
  410. /package/dist/{chunk-UHDZOX4S.js.map → chunk-UXH2XIB2.js.map} +0 -0
  411. /package/dist/{chunk-YLDG4Y52.js.map → chunk-V7KAHLW2.js.map} +0 -0
  412. /package/dist/{chunk-JEGY3OLE.js.map → chunk-VBXZIIUA.js.map} +0 -0
  413. /package/dist/{chunk-AQVIQODP.js.map → chunk-VK6INFSB.js.map} +0 -0
  414. /package/dist/{chunk-DPX24TVC.js.map → chunk-VVWQZK5L.js.map} +0 -0
  415. /package/dist/{chunk-SM4SJYFT.js.map → chunk-WLKK5L3P.js.map} +0 -0
  416. /package/dist/{chunk-OLJN3WXR.js.map → chunk-WTS75RUC.js.map} +0 -0
  417. /package/dist/{chunk-FTVHVY7L.js.map → chunk-WYHDQK2S.js.map} +0 -0
  418. /package/dist/{chunk-IUULKM4U.js.map → chunk-X3TBEGPA.js.map} +0 -0
  419. /package/dist/{chunk-PILMEQHD.js.map → chunk-XWHBJY5V.js.map} +0 -0
  420. /package/dist/{chunk-PWORNPPB.js.map → chunk-ZGTGEBQX.js.map} +0 -0
@@ -1,3 +1,12 @@
1
+ import {
2
+ Heading
3
+ } from "./chunk-USGOLLYO.js";
4
+ import {
5
+ Box
6
+ } from "./chunk-4Y5BEXVN.js";
7
+ import {
8
+ Typo
9
+ } from "./chunk-L4QQGIYQ.js";
1
10
  import {
2
11
  Flex
3
12
  } from "./chunk-25HMMI7R.js";
@@ -7,15 +16,6 @@ import {
7
16
  import {
8
17
  Badge
9
18
  } from "./chunk-BK74U562.js";
10
- import {
11
- Box
12
- } from "./chunk-4Y5BEXVN.js";
13
- import {
14
- Heading
15
- } from "./chunk-NLHVQJQ2.js";
16
- import {
17
- Typo
18
- } from "./chunk-GR4PG6HY.js";
19
19
 
20
20
  // src/app/platform/session-review-simple-read.tsx
21
21
  import { useMemo } from "react";
@@ -60,4 +60,4 @@ function SessionReviewSimpleRead({
60
60
  export {
61
61
  SessionReviewSimpleRead
62
62
  };
63
- //# sourceMappingURL=chunk-FTVHVY7L.js.map
63
+ //# sourceMappingURL=chunk-WYHDQK2S.js.map
@@ -1,3 +1,12 @@
1
+ import {
2
+ Heading
3
+ } from "./chunk-USGOLLYO.js";
4
+ import {
5
+ Box
6
+ } from "./chunk-4Y5BEXVN.js";
7
+ import {
8
+ Typo
9
+ } from "./chunk-L4QQGIYQ.js";
1
10
  import {
2
11
  Flex
3
12
  } from "./chunk-25HMMI7R.js";
@@ -7,18 +16,9 @@ import {
7
16
  import {
8
17
  Card
9
18
  } from "./chunk-RP2RGCAW.js";
10
- import {
11
- Box
12
- } from "./chunk-4Y5BEXVN.js";
13
19
  import {
14
20
  DownloadIcon
15
21
  } from "./chunk-VOME2TE7.js";
16
- import {
17
- Heading
18
- } from "./chunk-NLHVQJQ2.js";
19
- import {
20
- Typo
21
- } from "./chunk-GR4PG6HY.js";
22
22
 
23
23
  // src/app/platform/report-card.tsx
24
24
  import { useCallback } from "react";
@@ -65,4 +65,4 @@ function ReportCard(props) {
65
65
  export {
66
66
  ReportCard
67
67
  };
68
- //# sourceMappingURL=chunk-IUULKM4U.js.map
68
+ //# sourceMappingURL=chunk-X3TBEGPA.js.map
@@ -4,22 +4,22 @@ import {
4
4
  import {
5
5
  Grid
6
6
  } from "./chunk-EGEQY3KT.js";
7
+ import {
8
+ Heading
9
+ } from "./chunk-USGOLLYO.js";
7
10
  import {
8
11
  IconButton
9
12
  } from "./chunk-7RJYF5L3.js";
10
13
  import {
11
14
  Box
12
15
  } from "./chunk-4Y5BEXVN.js";
16
+ import {
17
+ Typo
18
+ } from "./chunk-L4QQGIYQ.js";
13
19
  import {
14
20
  ChevronLeftIcon,
15
21
  ChevronRightIcon
16
22
  } from "./chunk-VOME2TE7.js";
17
- import {
18
- Heading
19
- } from "./chunk-NLHVQJQ2.js";
20
- import {
21
- Typo
22
- } from "./chunk-GR4PG6HY.js";
23
23
 
24
24
  // src/molecules/curriculumV2/curriculum-sub-nav.tsx
25
25
  import { useCallback } from "react";
@@ -97,4 +97,4 @@ function CurriculumSubNav() {
97
97
  export {
98
98
  CurriculumSubNav
99
99
  };
100
- //# sourceMappingURL=chunk-PILMEQHD.js.map
100
+ //# sourceMappingURL=chunk-XWHBJY5V.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ReviewQuestionContentHeader
3
- } from "./chunk-D4US4T4T.js";
3
+ } from "./chunk-SINRU2A6.js";
4
4
  import {
5
5
  TextArea
6
6
  } from "./chunk-5XYPLDI5.js";
@@ -46,4 +46,4 @@ function ReviewQuestionSatisfisText(props) {
46
46
  export {
47
47
  ReviewQuestionSatisfisText
48
48
  };
49
- //# sourceMappingURL=chunk-PWORNPPB.js.map
49
+ //# sourceMappingURL=chunk-ZGTGEBQX.js.map
@@ -112,6 +112,21 @@ var mapWithResponsive = (args) => {
112
112
  return value;
113
113
  };
114
114
 
115
+ // src/utils/clamp-style.ts
116
+ var clampStyle = (lines) => ({
117
+ display: "-webkit-box",
118
+ WebkitBoxOrient: "vertical",
119
+ WebkitLineClamp: lines,
120
+ lineClamp: lines,
121
+ overflow: "hidden"
122
+ });
123
+
124
+ // src/utils/mono-style.ts
125
+ var MONO_STYLE = {
126
+ fontFamily: 'var(--code-font-family, ui-monospace, "SF Mono", monospace)',
127
+ fontVariantNumeric: "tabular-nums"
128
+ };
129
+
115
130
  // src/utils/resolve-color.ts
116
131
  var SEMANTIC_COLOR_MAP = {
117
132
  error: "red",
@@ -155,7 +170,25 @@ var mapVariant = (variant) => {
155
170
  }
156
171
  };
157
172
  function Heading2(props) {
158
- const _a = props, { size, children, variant, color, className } = _a, rest = __objRest(_a, ["size", "children", "variant", "color", "className"]);
173
+ const _a = props, {
174
+ size,
175
+ children,
176
+ variant,
177
+ color,
178
+ className,
179
+ mono,
180
+ clamp,
181
+ style
182
+ } = _a, rest = __objRest(_a, [
183
+ "size",
184
+ "children",
185
+ "variant",
186
+ "color",
187
+ "className",
188
+ "mono",
189
+ "clamp",
190
+ "style"
191
+ ]);
159
192
  const { color: radixColor, className: colorClassName } = (0, import_react.useMemo)(
160
193
  () => resolveColor(color),
161
194
  [color]
@@ -172,6 +205,7 @@ function Heading2(props) {
172
205
  className: (0, import_clsx.clsx)(colorClassName, className),
173
206
  color: radixColor,
174
207
  size: radixSize,
208
+ style: __spreadValues(__spreadValues(__spreadValues({}, mono ? MONO_STYLE : null), clamp ? clampStyle(clamp) : null), style),
175
209
  children
176
210
  })
177
211
  );
@@ -184,7 +218,25 @@ var import_react2 = require("react");
184
218
  var import_jsx_runtime2 = require("react/jsx-runtime");
185
219
  var Typo = (0, import_react2.forwardRef)(
186
220
  (props, ref) => {
187
- const _a = props, { size, variant, children, color, className } = _a, rest = __objRest(_a, ["size", "variant", "children", "color", "className"]);
221
+ const _a = props, {
222
+ size,
223
+ variant,
224
+ children,
225
+ color,
226
+ className,
227
+ mono,
228
+ clamp,
229
+ style
230
+ } = _a, rest = __objRest(_a, [
231
+ "size",
232
+ "variant",
233
+ "children",
234
+ "color",
235
+ "className",
236
+ "mono",
237
+ "clamp",
238
+ "style"
239
+ ]);
188
240
  const { color: radixColor, className: colorClassName } = (0, import_react2.useMemo)(
189
241
  () => resolveColor(color),
190
242
  [color]
@@ -214,6 +266,7 @@ var Typo = (0, import_react2.forwardRef)(
214
266
  color: radixColor,
215
267
  ref,
216
268
  size: radixSize,
269
+ style: __spreadValues(__spreadValues(__spreadValues({}, mono ? MONO_STYLE : null), clamp ? clampStyle(clamp) : null), style),
217
270
  children
218
271
  })
219
272
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/context/dynamic-form-context.tsx","../../src/molecules/form/form.tsx","../../src/atoms/heading.tsx","../../src/utils/map-with-responsive.ts","../../src/utils/resolve-color.ts","../../src/atoms/typo.tsx"],"sourcesContent":["import React, { createContext, useContext } from 'react';\nimport type { FormikProps } from 'formik';\nimport { Form } from '@/molecules/form/form';\nimport type { DynamicFormFieldSchema } from '@/types/dynamic-form-schema-generated';\n\nexport interface DynamicFormContextValue {\n formik: FormikProps<Record<string, unknown>>;\n fields: DynamicFormFieldSchema[];\n readonly: boolean;\n getFieldValue: (name: string) => unknown;\n getFieldError: (name: string) => string | undefined;\n getFieldTouched: (name: string) => boolean;\n setFieldValue: (field: string, value: unknown) => Promise<void>;\n handleChange: (e: React.ChangeEvent<unknown>) => void;\n handleBlur: (e: React.FocusEvent<unknown>) => void;\n}\n\nconst DynamicFormContext = createContext<DynamicFormContextValue | null>(null);\n\ninterface DynamicFormProviderProps {\n children: React.ReactNode;\n fields: DynamicFormFieldSchema[];\n formik: FormikProps<Record<string, unknown>>;\n readonly?: boolean;\n formStyle?: React.CSSProperties;\n}\n\nexport function DynamicFormProvider({\n children,\n fields,\n formik,\n readonly = false,\n formStyle,\n}: DynamicFormProviderProps): React.ReactElement {\n const contextValue: DynamicFormContextValue = {\n formik,\n fields,\n readonly,\n getFieldValue: (name: string): unknown => formik.values[name],\n getFieldError: (name: string): string | undefined => {\n const error = formik.errors[name];\n const touched = formik.touched[name];\n return touched && error ? String(error) : undefined;\n },\n getFieldTouched: (name: string): boolean => Boolean(formik.touched[name]),\n setFieldValue: async (field: string, value: unknown): Promise<void> => {\n await formik.setFieldValue(field, value);\n },\n handleChange: formik.handleChange,\n handleBlur: formik.handleBlur, \n };\n\n return (\n <DynamicFormContext.Provider value={contextValue}>\n <Form.Root onSubmit={formik.handleSubmit} style={formStyle}>{children}</Form.Root>\n </DynamicFormContext.Provider>\n );\n}\n\nexport function useDynamicForm(): DynamicFormContextValue {\n const context = useContext(DynamicFormContext);\n\n if (!context) {\n throw new Error('useDynamicForm must be used within a DynamicFormProvider');\n }\n\n return context;\n}\n","import * as RadixForm from '@radix-ui/react-form';\nimport React, { createContext, forwardRef, useContext, useMemo } from 'react';\nimport type { HeadingProps } from '@radix-ui/themes';\nimport { Heading } from '../../atoms/heading';\nimport type { TypoProps } from '../../atoms/typo';\nimport { Typo } from '../../atoms/typo';\n\nconst Root = forwardRef<HTMLFormElement, RadixForm.FormProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Root\n {...rest}\n className={`FormRoot ${className || ''}`}\n ref={ref}\n >\n {children}\n </RadixForm.Root>\n );\n }\n);\n\nRoot.displayName = 'FORM_ROOT';\n\nexport type FormFieldProps = RadixForm.FormFieldProps & { required?: boolean };\n\nconst FieldContext = createContext<FormFieldProps>({\n name: '',\n});\n\nconst Field = forwardRef<HTMLDivElement, FormFieldProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Field\n {...rest}\n className={`FormField ${className || ''}`}\n ref={ref}\n >\n <FieldContext.Provider value={rest}>{children}</FieldContext.Provider>\n </RadixForm.Field>\n );\n }\n);\nField.displayName = 'FORM_FIELD';\n\nexport type FormLabelProps = RadixForm.FormLabelProps & {\n /** label의 타입을 지정 */\n variant?: 'title' | 'body' | 'caption';\n};\n\nfunction HeadingLabel(props: HeadingProps): React.ReactNode {\n return (\n <Heading variant=\"heading5\" {...props}>\n {props.children}\n </Heading>\n );\n}\n\nfunction CaptionLabel(props: TypoProps): React.ReactNode {\n return (\n <Typo color=\"gray\" variant=\"caption\" weight=\"bold\" {...props}>\n {props.children}\n </Typo>\n );\n}\n\nfunction BodyLabel(props: TypoProps): React.ReactNode {\n return (\n <Typo variant=\"body\" weight=\"bold\" {...props}>\n {props.children}\n </Typo>\n );\n}\n\nconst Label = forwardRef<HTMLLabelElement, FormLabelProps>(\n ({ children, className, variant, ...rest }, ref) => {\n const Comp = useMemo(() => {\n switch (variant) {\n case 'title':\n return HeadingLabel;\n case 'caption':\n return CaptionLabel;\n case 'body':\n default:\n return BodyLabel;\n }\n }, [variant]);\n\n const fieldProps = useContext(FieldContext);\n return (\n <RadixForm.Label\n {...rest}\n asChild\n className={`FormLabel ${className || ''}`}\n ref={ref}\n >\n <Comp>\n {children}\n {fieldProps.required ? (\n <Typo as=\"span\" color=\"tomato\">\n {` *`}\n </Typo>\n ) : null}\n </Comp>\n </RadixForm.Label>\n );\n }\n);\nLabel.displayName = 'FORM_Label';\n\nconst Message = forwardRef<HTMLSpanElement, RadixForm.FormMessageProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Message\n {...rest}\n asChild\n className={`FormMessage ${className || ''}`}\n ref={ref}\n >\n <Typo color=\"red\">{children}</Typo>\n </RadixForm.Message>\n );\n }\n);\nMessage.displayName = 'FORM_Message';\n\ntype ControlProps = Omit<RadixForm.FormControlProps, 'required'>;\nconst Control = forwardRef<HTMLInputElement, ControlProps>(\n ({ className, ...rest }, ref) => {\n const fieldProps = useContext(FieldContext);\n return (\n <RadixForm.Control\n {...rest}\n className={`FormControl ${className || ''}`}\n ref={ref}\n required={fieldProps.required}\n />\n );\n }\n);\nControl.displayName = 'FORM_Control';\n\ninterface FormItemProps extends FormFieldProps {\n children: React.ReactNode;\n label: string;\n labelVariant?: FormLabelProps['variant'];\n errorMessage?: string;\n}\n\nexport function FormItem({\n label,\n labelVariant,\n children,\n errorMessage,\n ...fieldProps\n}: FormItemProps): React.ReactNode {\n return (\n <Form.Field {...fieldProps}>\n <Form.Label variant={labelVariant}>{label}</Form.Label>\n {children}\n <Form.Message forceMatch={Boolean(errorMessage)}>\n {errorMessage}\n </Form.Message>\n </Form.Field>\n );\n}\n\nexport const Form = {\n Root,\n Field,\n Label,\n Message,\n Control: RadixForm.Control,\n Submit: RadixForm.Submit,\n FormItem,\n};\n","import {\n Heading as RadixHeading,\n type HeadingProps as RadixHeadingProps,\n} from '@radix-ui/themes';\nimport type { Responsive } from '@radix-ui/themes/props';\nimport { clsx } from 'clsx';\nimport { useMemo } from 'react';\nimport { mapWithResponsive } from '@/utils/map-with-responsive';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\nexport { Heading as RadixHeading } from '@radix-ui/themes';\ntype HeadingVariant =\n | 'heading1'\n | 'heading2'\n | 'heading3'\n | 'heading4'\n | 'heading5';\nexport type HeadingProps = DistributiveOmit<RadixHeadingProps, 'color'> & {\n variant?: Responsive<HeadingVariant>;\n color?: UiColor;\n};\n\ntype HeadingSize = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';\n\nconst mapVariant = (variant?: HeadingVariant): HeadingSize | undefined => {\n switch (variant) {\n case 'heading1':\n return '7';\n case 'heading2':\n return '6';\n case 'heading3':\n return '5';\n case 'heading4':\n return '4';\n case 'heading5':\n return '3';\n default:\n return undefined;\n }\n};\n\nexport function Heading(props: HeadingProps): React.ReactNode {\n const { size, children, variant, color, className, ...rest } = props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n const radixSize = useMemo<RadixHeadingProps['size']>(() => {\n return variant\n ? mapWithResponsive({\n value: variant,\n mapFn: mapVariant,\n })\n : size;\n\n }, [size, variant]);\n\n return (\n <RadixHeading\n {...rest}\n className={clsx(colorClassName, className)}\n color={radixColor}\n size={radixSize}\n >\n {children}\n </RadixHeading>\n );\n}\n","import type { Breakpoint, Responsive } from \"@radix-ui/themes/props\";\n\nexport const mapWithResponsive = <T extends string,K extends string>(\n args: {value: Responsive<T>, mapFn: (value?:T)=>K |undefined}\n): Responsive<K> | undefined => {\n const {value, mapFn} = args;\n if(typeof value === 'string'){\n return mapFn(value);\n };\n \n if(typeof value === 'object'){\n const newObj: Partial<Record<Breakpoint, K>> = {};\n let key: Breakpoint;\n for(key in value){\n newObj[key] = mapFn(value[key]);\n }\n return newObj;\n }\n return value;\n};\n","import type { BadgeProps as RadixBadgeProps } from '@radix-ui/themes';\n\n/**\n * Radix Themes가 제공하는 accent color union (gray, red, blue, ...).\n * 모든 color 지원 컴포넌트가 동일한 union을 공유하므로 Badge에서 파생한다.\n */\nexport type RadixColor = NonNullable<RadixBadgeProps['color']>;\n\n/** TIPP 시맨틱 color 별칭. */\nexport type SemanticColor = 'error' | 'accent' | 'neutral' | 'success';\n\n/**\n * Radix accent에 대응이 없어 CSS accent override로 처리하는 커스텀 color.\n * (예: black — `style/black.scss`의 `.tipp-accent-black` 참고)\n */\nexport type CustomColor = 'black';\n\n/** color 지원 컴포넌트가 노출하는 통합 color 타입. */\nexport type UiColor = RadixColor | SemanticColor | CustomColor;\n\n/**\n * union 각 멤버에 분배되는 Omit.\n * Radix의 polymorphic 컴포넌트 props(Text/Heading/Link 등 `as`로 분기되는 union)에서\n * 키를 제거할 때 일반 Omit은 union을 단일 객체로 합쳐 `as` 분기를 무너뜨리므로 이 타입을 쓴다.\n */\nexport type DistributiveOmit<T, K extends PropertyKey> = T extends unknown\n ? Omit<T, K>\n : never;\n\nconst SEMANTIC_COLOR_MAP: Record<SemanticColor, RadixColor | undefined> = {\n error: 'red',\n neutral: 'gray',\n success: 'green',\n accent: undefined,\n};\n\ninterface CustomColorConfig {\n /**\n * accent override를 적용할 className.\n */\n className: string;\n /**\n * Radix에 넘길 fallback color.\n * Text/Heading/Link 등은 `color` prop이 있어야 `data-accent-color`가 붙어\n * `--accent-*`를 참조하므로, 유효한 Radix color를 함께 넘긴 뒤 className으로\n * `--accent-*`를 덮어쓴다. (Badge/Button은 prop 없이도 accent 기반이라 무해)\n */\n fallbackColor: RadixColor;\n}\n\nconst CUSTOM_COLOR_MAP: Record<CustomColor, CustomColorConfig> = {\n black: { className: 'tipp-accent-black', fallbackColor: 'gray' },\n};\n\nconst isSemanticColor = (color?: UiColor): color is SemanticColor =>\n color !== undefined && color in SEMANTIC_COLOR_MAP;\n\nconst isCustomColor = (color?: UiColor): color is CustomColor =>\n color !== undefined && color in CUSTOM_COLOR_MAP;\n\nexport interface ResolvedColor {\n /** Radix 컴포넌트의 `color` prop에 그대로 전달할 값. custom color면 undefined. */\n color?: RadixColor;\n /** accent override를 적용하기 위해 요소에 붙일 className. */\n className?: string;\n}\n\n/**\n * 통합 color 입력을 Radix color prop과 className으로 정규화한다.\n *\n * - custom color(black 등): Radix color는 비우고 accent override className을 반환\n * - semantic color(error/neutral/success/accent): 대응 Radix color로 변환\n * - Radix color: 그대로 pass-through\n */\nexport const resolveColor = (color?: UiColor): ResolvedColor => {\n if (isCustomColor(color)) {\n const { className, fallbackColor } = CUSTOM_COLOR_MAP[color];\n return { color: fallbackColor, className };\n }\n\n if (isSemanticColor(color)) {\n return { color: SEMANTIC_COLOR_MAP[color] };\n }\n\n return { color };\n};\n","import type { TextProps as RadixTextProps } from '@radix-ui/themes';\nimport type { Responsive } from '@radix-ui/themes/props';\nimport { Text as RadixText } from '@radix-ui/themes';\nimport { clsx } from 'clsx';\nimport React, { useMemo, forwardRef } from 'react';\nimport { mapWithResponsive } from '@/utils/map-with-responsive';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\nexport type TypoProps = DistributiveOmit<RadixTextProps, 'color'> & {\n variant?: Responsive<'body' | 'caption' | 'subtitle'>;\n color?: UiColor;\n};\n\nexport const Typo = forwardRef<HTMLSpanElement, TypoProps>(\n (props: TypoProps, ref): React.ReactNode => {\n const { size, variant, children, color, className, ...rest } = props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n const radixSize = useMemo<RadixTextProps['size']>(() => {\n if (size !== undefined) return size;\n\n if (variant === undefined) return '2';\n\n return mapWithResponsive({\n value: variant,\n mapFn: (variantValue?: 'body' | 'caption' | 'subtitle') => {\n switch (variantValue) {\n case 'caption':\n return '1';\n case 'subtitle':\n return '3';\n case 'body':\n default:\n return '2';\n }\n },\n });\n }, [size, variant]);\n\n return (\n <RadixText\n {...rest}\n className={clsx(colorClassName, className)}\n color={radixColor}\n ref={ref}\n size={radixSize}\n >\n {children}\n </RadixText>\n );\n }\n);\n\nTypo.displayName = 'Typo';\n"],"mappings":"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","names":["import_react","import_react","import_themes","Heading","RadixHeading","import_themes","import_clsx","import_react","import_jsx_runtime","RadixText","import_jsx_runtime","Root","Field","Heading","Label","Message","Control","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../../src/context/dynamic-form-context.tsx","../../src/molecules/form/form.tsx","../../src/atoms/heading.tsx","../../src/utils/map-with-responsive.ts","../../src/utils/clamp-style.ts","../../src/utils/mono-style.ts","../../src/utils/resolve-color.ts","../../src/atoms/typo.tsx"],"sourcesContent":["import React, { createContext, useContext } from 'react';\nimport type { FormikProps } from 'formik';\nimport { Form } from '@/molecules/form/form';\nimport type { DynamicFormFieldSchema } from '@/types/dynamic-form-schema-generated';\n\nexport interface DynamicFormContextValue {\n formik: FormikProps<Record<string, unknown>>;\n fields: DynamicFormFieldSchema[];\n readonly: boolean;\n getFieldValue: (name: string) => unknown;\n getFieldError: (name: string) => string | undefined;\n getFieldTouched: (name: string) => boolean;\n setFieldValue: (field: string, value: unknown) => Promise<void>;\n handleChange: (e: React.ChangeEvent<unknown>) => void;\n handleBlur: (e: React.FocusEvent<unknown>) => void;\n}\n\nconst DynamicFormContext = createContext<DynamicFormContextValue | null>(null);\n\ninterface DynamicFormProviderProps {\n children: React.ReactNode;\n fields: DynamicFormFieldSchema[];\n formik: FormikProps<Record<string, unknown>>;\n readonly?: boolean;\n formStyle?: React.CSSProperties;\n}\n\nexport function DynamicFormProvider({\n children,\n fields,\n formik,\n readonly = false,\n formStyle,\n}: DynamicFormProviderProps): React.ReactElement {\n const contextValue: DynamicFormContextValue = {\n formik,\n fields,\n readonly,\n getFieldValue: (name: string): unknown => formik.values[name],\n getFieldError: (name: string): string | undefined => {\n const error = formik.errors[name];\n const touched = formik.touched[name];\n return touched && error ? String(error) : undefined;\n },\n getFieldTouched: (name: string): boolean => Boolean(formik.touched[name]),\n setFieldValue: async (field: string, value: unknown): Promise<void> => {\n await formik.setFieldValue(field, value);\n },\n handleChange: formik.handleChange,\n handleBlur: formik.handleBlur, \n };\n\n return (\n <DynamicFormContext.Provider value={contextValue}>\n <Form.Root onSubmit={formik.handleSubmit} style={formStyle}>{children}</Form.Root>\n </DynamicFormContext.Provider>\n );\n}\n\nexport function useDynamicForm(): DynamicFormContextValue {\n const context = useContext(DynamicFormContext);\n\n if (!context) {\n throw new Error('useDynamicForm must be used within a DynamicFormProvider');\n }\n\n return context;\n}\n","import * as RadixForm from '@radix-ui/react-form';\nimport React, { createContext, forwardRef, useContext, useMemo } from 'react';\nimport type { HeadingProps } from '@radix-ui/themes';\nimport { Heading } from '../../atoms/heading';\nimport type { TypoProps } from '../../atoms/typo';\nimport { Typo } from '../../atoms/typo';\n\nconst Root = forwardRef<HTMLFormElement, RadixForm.FormProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Root\n {...rest}\n className={`FormRoot ${className || ''}`}\n ref={ref}\n >\n {children}\n </RadixForm.Root>\n );\n }\n);\n\nRoot.displayName = 'FORM_ROOT';\n\nexport type FormFieldProps = RadixForm.FormFieldProps & { required?: boolean };\n\nconst FieldContext = createContext<FormFieldProps>({\n name: '',\n});\n\nconst Field = forwardRef<HTMLDivElement, FormFieldProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Field\n {...rest}\n className={`FormField ${className || ''}`}\n ref={ref}\n >\n <FieldContext.Provider value={rest}>{children}</FieldContext.Provider>\n </RadixForm.Field>\n );\n }\n);\nField.displayName = 'FORM_FIELD';\n\nexport type FormLabelProps = RadixForm.FormLabelProps & {\n /** label의 타입을 지정 */\n variant?: 'title' | 'body' | 'caption';\n};\n\nfunction HeadingLabel(props: HeadingProps): React.ReactNode {\n return (\n <Heading variant=\"heading5\" {...props}>\n {props.children}\n </Heading>\n );\n}\n\nfunction CaptionLabel(props: TypoProps): React.ReactNode {\n return (\n <Typo color=\"gray\" variant=\"caption\" weight=\"bold\" {...props}>\n {props.children}\n </Typo>\n );\n}\n\nfunction BodyLabel(props: TypoProps): React.ReactNode {\n return (\n <Typo variant=\"body\" weight=\"bold\" {...props}>\n {props.children}\n </Typo>\n );\n}\n\nconst Label = forwardRef<HTMLLabelElement, FormLabelProps>(\n ({ children, className, variant, ...rest }, ref) => {\n const Comp = useMemo(() => {\n switch (variant) {\n case 'title':\n return HeadingLabel;\n case 'caption':\n return CaptionLabel;\n case 'body':\n default:\n return BodyLabel;\n }\n }, [variant]);\n\n const fieldProps = useContext(FieldContext);\n return (\n <RadixForm.Label\n {...rest}\n asChild\n className={`FormLabel ${className || ''}`}\n ref={ref}\n >\n <Comp>\n {children}\n {fieldProps.required ? (\n <Typo as=\"span\" color=\"tomato\">\n {` *`}\n </Typo>\n ) : null}\n </Comp>\n </RadixForm.Label>\n );\n }\n);\nLabel.displayName = 'FORM_Label';\n\nconst Message = forwardRef<HTMLSpanElement, RadixForm.FormMessageProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Message\n {...rest}\n asChild\n className={`FormMessage ${className || ''}`}\n ref={ref}\n >\n <Typo color=\"red\">{children}</Typo>\n </RadixForm.Message>\n );\n }\n);\nMessage.displayName = 'FORM_Message';\n\ntype ControlProps = Omit<RadixForm.FormControlProps, 'required'>;\nconst Control = forwardRef<HTMLInputElement, ControlProps>(\n ({ className, ...rest }, ref) => {\n const fieldProps = useContext(FieldContext);\n return (\n <RadixForm.Control\n {...rest}\n className={`FormControl ${className || ''}`}\n ref={ref}\n required={fieldProps.required}\n />\n );\n }\n);\nControl.displayName = 'FORM_Control';\n\ninterface FormItemProps extends FormFieldProps {\n children: React.ReactNode;\n label: string;\n labelVariant?: FormLabelProps['variant'];\n errorMessage?: string;\n}\n\nexport function FormItem({\n label,\n labelVariant,\n children,\n errorMessage,\n ...fieldProps\n}: FormItemProps): React.ReactNode {\n return (\n <Form.Field {...fieldProps}>\n <Form.Label variant={labelVariant}>{label}</Form.Label>\n {children}\n <Form.Message forceMatch={Boolean(errorMessage)}>\n {errorMessage}\n </Form.Message>\n </Form.Field>\n );\n}\n\nexport const Form = {\n Root,\n Field,\n Label,\n Message,\n Control: RadixForm.Control,\n Submit: RadixForm.Submit,\n FormItem,\n};\n","import {\n Heading as RadixHeading,\n type HeadingProps as RadixHeadingProps,\n} from '@radix-ui/themes';\nimport type { Responsive } from '@radix-ui/themes/props';\nimport { clsx } from 'clsx';\nimport { useMemo } from 'react';\nimport { mapWithResponsive } from '@/utils/map-with-responsive';\nimport { clampStyle } from '../utils/clamp-style';\nimport { MONO_STYLE } from '../utils/mono-style';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\nexport { Heading as RadixHeading } from '@radix-ui/themes';\ntype HeadingVariant =\n | 'heading1'\n | 'heading2'\n | 'heading3'\n | 'heading4'\n | 'heading5';\nexport type HeadingProps = DistributiveOmit<RadixHeadingProps, 'color'> & {\n variant?: Responsive<HeadingVariant>;\n color?: UiColor;\n /** 등폭(monospace) 폰트 + 숫자 고정폭 정렬(tabular-nums). 점수·퍼센트 등 수치 표시에 사용한다. */\n mono?: boolean;\n /** 여러 줄 말줄임(line-clamp). 지정한 줄 수까지만 표시하고 넘치면 …로 자른다. */\n clamp?: number;\n};\n\ntype HeadingSize = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';\n\nconst mapVariant = (variant?: HeadingVariant): HeadingSize | undefined => {\n switch (variant) {\n case 'heading1':\n return '7';\n case 'heading2':\n return '6';\n case 'heading3':\n return '5';\n case 'heading4':\n return '4';\n case 'heading5':\n return '3';\n default:\n return undefined;\n }\n};\n\nexport function Heading(props: HeadingProps): React.ReactNode {\n const {\n size,\n children,\n variant,\n color,\n className,\n mono,\n clamp,\n style,\n ...rest\n } = props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n const radixSize = useMemo<RadixHeadingProps['size']>(() => {\n return variant\n ? mapWithResponsive({\n value: variant,\n mapFn: mapVariant,\n })\n : size;\n\n }, [size, variant]);\n\n return (\n <RadixHeading\n {...rest}\n className={clsx(colorClassName, className)}\n color={radixColor}\n size={radixSize}\n style={{\n ...(mono ? MONO_STYLE : null),\n ...(clamp ? clampStyle(clamp) : null),\n ...style,\n }}\n >\n {children}\n </RadixHeading>\n );\n}\n","import type { Breakpoint, Responsive } from \"@radix-ui/themes/props\";\n\nexport const mapWithResponsive = <T extends string,K extends string>(\n args: {value: Responsive<T>, mapFn: (value?:T)=>K |undefined}\n): Responsive<K> | undefined => {\n const {value, mapFn} = args;\n if(typeof value === 'string'){\n return mapFn(value);\n };\n \n if(typeof value === 'object'){\n const newObj: Partial<Record<Breakpoint, K>> = {};\n let key: Breakpoint;\n for(key in value){\n newObj[key] = mapFn(value[key]);\n }\n return newObj;\n }\n return value;\n};\n","import type { CSSProperties } from 'react';\n\n/**\n * 여러 줄 말줄임(line-clamp) 스타일. 지정한 줄 수까지만 표시하고 넘치면 `…`로 자른다.\n *\n * Radix의 `truncate`(white-space:nowrap 강제 1줄)와 달리, 줄바꿈을 허용한 뒤\n * `lines` 줄에서 자른다. `Typo`/`Heading`의 `clamp` prop 구현에 사용된다.\n *\n * @param lines - 표시할 최대 줄 수 (1, 2, 3 …)\n */\nexport const clampStyle = (lines: number): CSSProperties => ({\n display: '-webkit-box',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: lines,\n lineClamp: lines,\n overflow: 'hidden',\n});\n","import type { CSSProperties } from 'react';\n\n/**\n * 등폭(monospace) 텍스트 스타일.\n * - `font-family`: 등폭 폰트(`--code-font-family`는 Radix Themes가 제공, 없으면 시스템 등폭으로 폴백)\n * - `font-variant-numeric: tabular-nums`: 숫자를 고정폭으로 정렬해 점수·퍼센트·통계가 자릿수마다 흔들리지 않게 함\n *\n * `Typo`/`Heading`의 `mono` prop 구현에 사용된다.\n */\nexport const MONO_STYLE: CSSProperties = {\n fontFamily: 'var(--code-font-family, ui-monospace, \"SF Mono\", monospace)',\n fontVariantNumeric: 'tabular-nums',\n};\n","import type { BadgeProps as RadixBadgeProps } from '@radix-ui/themes';\n\n/**\n * Radix Themes가 제공하는 accent color union (gray, red, blue, ...).\n * 모든 color 지원 컴포넌트가 동일한 union을 공유하므로 Badge에서 파생한다.\n */\nexport type RadixColor = NonNullable<RadixBadgeProps['color']>;\n\n/** TIPP 시맨틱 color 별칭. */\nexport type SemanticColor = 'error' | 'accent' | 'neutral' | 'success';\n\n/**\n * Radix accent에 대응이 없어 CSS accent override로 처리하는 커스텀 color.\n * (예: black — `style/black.scss`의 `.tipp-accent-black` 참고)\n */\nexport type CustomColor = 'black';\n\n/** color 지원 컴포넌트가 노출하는 통합 color 타입. */\nexport type UiColor = RadixColor | SemanticColor | CustomColor;\n\n/**\n * union 각 멤버에 분배되는 Omit.\n * Radix의 polymorphic 컴포넌트 props(Text/Heading/Link 등 `as`로 분기되는 union)에서\n * 키를 제거할 때 일반 Omit은 union을 단일 객체로 합쳐 `as` 분기를 무너뜨리므로 이 타입을 쓴다.\n */\nexport type DistributiveOmit<T, K extends PropertyKey> = T extends unknown\n ? Omit<T, K>\n : never;\n\nconst SEMANTIC_COLOR_MAP: Record<SemanticColor, RadixColor | undefined> = {\n error: 'red',\n neutral: 'gray',\n success: 'green',\n accent: undefined,\n};\n\ninterface CustomColorConfig {\n /**\n * accent override를 적용할 className.\n */\n className: string;\n /**\n * Radix에 넘길 fallback color.\n * Text/Heading/Link 등은 `color` prop이 있어야 `data-accent-color`가 붙어\n * `--accent-*`를 참조하므로, 유효한 Radix color를 함께 넘긴 뒤 className으로\n * `--accent-*`를 덮어쓴다. (Badge/Button은 prop 없이도 accent 기반이라 무해)\n */\n fallbackColor: RadixColor;\n}\n\nconst CUSTOM_COLOR_MAP: Record<CustomColor, CustomColorConfig> = {\n black: { className: 'tipp-accent-black', fallbackColor: 'gray' },\n};\n\nconst isSemanticColor = (color?: UiColor): color is SemanticColor =>\n color !== undefined && color in SEMANTIC_COLOR_MAP;\n\nconst isCustomColor = (color?: UiColor): color is CustomColor =>\n color !== undefined && color in CUSTOM_COLOR_MAP;\n\nexport interface ResolvedColor {\n /** Radix 컴포넌트의 `color` prop에 그대로 전달할 값. custom color면 undefined. */\n color?: RadixColor;\n /** accent override를 적용하기 위해 요소에 붙일 className. */\n className?: string;\n}\n\n/**\n * 통합 color 입력을 Radix color prop과 className으로 정규화한다.\n *\n * - custom color(black 등): Radix color는 비우고 accent override className을 반환\n * - semantic color(error/neutral/success/accent): 대응 Radix color로 변환\n * - Radix color: 그대로 pass-through\n */\nexport const resolveColor = (color?: UiColor): ResolvedColor => {\n if (isCustomColor(color)) {\n const { className, fallbackColor } = CUSTOM_COLOR_MAP[color];\n return { color: fallbackColor, className };\n }\n\n if (isSemanticColor(color)) {\n return { color: SEMANTIC_COLOR_MAP[color] };\n }\n\n return { color };\n};\n","import type { TextProps as RadixTextProps } from '@radix-ui/themes';\nimport type { Responsive } from '@radix-ui/themes/props';\nimport { Text as RadixText } from '@radix-ui/themes';\nimport { clsx } from 'clsx';\nimport React, { useMemo, forwardRef } from 'react';\nimport { mapWithResponsive } from '@/utils/map-with-responsive';\nimport { clampStyle } from '../utils/clamp-style';\nimport { MONO_STYLE } from '../utils/mono-style';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\nexport type TypoProps = DistributiveOmit<RadixTextProps, 'color'> & {\n variant?: Responsive<'body' | 'caption' | 'subtitle'>;\n color?: UiColor;\n /** 등폭(monospace) 폰트 + 숫자 고정폭 정렬(tabular-nums). 점수·퍼센트 등 수치 표시에 사용한다. */\n mono?: boolean;\n /** 여러 줄 말줄임(line-clamp). 지정한 줄 수까지만 표시하고 넘치면 …로 자른다. */\n clamp?: number;\n};\n\nexport const Typo = forwardRef<HTMLSpanElement, TypoProps>(\n (props: TypoProps, ref): React.ReactNode => {\n const {\n size,\n variant,\n children,\n color,\n className,\n mono,\n clamp,\n style,\n ...rest\n } = props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n const radixSize = useMemo<RadixTextProps['size']>(() => {\n if (size !== undefined) return size;\n\n if (variant === undefined) return '2';\n\n return mapWithResponsive({\n value: variant,\n mapFn: (variantValue?: 'body' | 'caption' | 'subtitle') => {\n switch (variantValue) {\n case 'caption':\n return '1';\n case 'subtitle':\n return '3';\n case 'body':\n default:\n return '2';\n }\n },\n });\n }, [size, variant]);\n\n return (\n <RadixText\n {...rest}\n className={clsx(colorClassName, className)}\n color={radixColor}\n ref={ref}\n size={radixSize}\n style={{\n ...(mono ? MONO_STYLE : null),\n ...(clamp ? clampStyle(clamp) : null),\n ...style,\n }}\n >\n {children}\n </RadixText>\n );\n }\n);\n\nTypo.displayName = 'Typo';\n"],"mappings":"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","names":["import_react","import_react","import_themes","Heading","RadixHeading","import_themes","import_clsx","import_react","import_jsx_runtime","RadixText","import_jsx_runtime","Root","Field","Heading","Label","Message","Control","import_jsx_runtime"]}
@@ -1,11 +1,13 @@
1
1
  import {
2
2
  DynamicFormProvider,
3
3
  useDynamicForm
4
- } from "../chunk-E6GCU5IQ.js";
5
- import "../chunk-MMLVZWMD.js";
6
- import "../chunk-NLHVQJQ2.js";
7
- import "../chunk-GR4PG6HY.js";
4
+ } from "../chunk-FAL6S2XK.js";
5
+ import "../chunk-AELKCD6B.js";
6
+ import "../chunk-USGOLLYO.js";
7
+ import "../chunk-L4QQGIYQ.js";
8
8
  import "../chunk-LDBWASUA.js";
9
+ import "../chunk-PO2PBAHW.js";
10
+ import "../chunk-36W7VD2Z.js";
9
11
  import "../chunk-VFQD57ZY.js";
10
12
  import "../chunk-CRTRMMJ7.js";
11
13
  export {
@@ -117,6 +117,21 @@ var mapWithResponsive = (args) => {
117
117
  return value;
118
118
  };
119
119
 
120
+ // src/utils/clamp-style.ts
121
+ var clampStyle = (lines) => ({
122
+ display: "-webkit-box",
123
+ WebkitBoxOrient: "vertical",
124
+ WebkitLineClamp: lines,
125
+ lineClamp: lines,
126
+ overflow: "hidden"
127
+ });
128
+
129
+ // src/utils/mono-style.ts
130
+ var MONO_STYLE = {
131
+ fontFamily: 'var(--code-font-family, ui-monospace, "SF Mono", monospace)',
132
+ fontVariantNumeric: "tabular-nums"
133
+ };
134
+
120
135
  // src/utils/resolve-color.ts
121
136
  var SEMANTIC_COLOR_MAP = {
122
137
  error: "red",
@@ -160,7 +175,25 @@ var mapVariant = (variant) => {
160
175
  }
161
176
  };
162
177
  function Heading2(props) {
163
- const _a = props, { size, children, variant, color, className } = _a, rest = __objRest(_a, ["size", "children", "variant", "color", "className"]);
178
+ const _a = props, {
179
+ size,
180
+ children,
181
+ variant,
182
+ color,
183
+ className,
184
+ mono,
185
+ clamp,
186
+ style
187
+ } = _a, rest = __objRest(_a, [
188
+ "size",
189
+ "children",
190
+ "variant",
191
+ "color",
192
+ "className",
193
+ "mono",
194
+ "clamp",
195
+ "style"
196
+ ]);
164
197
  const { color: radixColor, className: colorClassName } = (0, import_react.useMemo)(
165
198
  () => resolveColor(color),
166
199
  [color]
@@ -177,6 +210,7 @@ function Heading2(props) {
177
210
  className: (0, import_clsx.clsx)(colorClassName, className),
178
211
  color: radixColor,
179
212
  size: radixSize,
213
+ style: __spreadValues(__spreadValues(__spreadValues({}, mono ? MONO_STYLE : null), clamp ? clampStyle(clamp) : null), style),
180
214
  children
181
215
  })
182
216
  );
@@ -189,7 +223,25 @@ var import_react2 = require("react");
189
223
  var import_jsx_runtime2 = require("react/jsx-runtime");
190
224
  var Typo = (0, import_react2.forwardRef)(
191
225
  (props, ref) => {
192
- const _a = props, { size, variant, children, color, className } = _a, rest = __objRest(_a, ["size", "variant", "children", "color", "className"]);
226
+ const _a = props, {
227
+ size,
228
+ variant,
229
+ children,
230
+ color,
231
+ className,
232
+ mono,
233
+ clamp,
234
+ style
235
+ } = _a, rest = __objRest(_a, [
236
+ "size",
237
+ "variant",
238
+ "children",
239
+ "color",
240
+ "className",
241
+ "mono",
242
+ "clamp",
243
+ "style"
244
+ ]);
193
245
  const { color: radixColor, className: colorClassName } = (0, import_react2.useMemo)(
194
246
  () => resolveColor(color),
195
247
  [color]
@@ -219,6 +271,7 @@ var Typo = (0, import_react2.forwardRef)(
219
271
  color: radixColor,
220
272
  ref,
221
273
  size: radixSize,
274
+ style: __spreadValues(__spreadValues(__spreadValues({}, mono ? MONO_STYLE : null), clamp ? clampStyle(clamp) : null), style),
222
275
  children
223
276
  })
224
277
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/context/index.ts","../../src/context/dynamic-form-context.tsx","../../src/molecules/form/form.tsx","../../src/atoms/heading.tsx","../../src/utils/map-with-responsive.ts","../../src/utils/resolve-color.ts","../../src/atoms/typo.tsx","../../src/context/ui-state-provider.tsx"],"sourcesContent":["export * from './dynamic-form-context';\nexport * from './ui-state-provider';","import React, { createContext, useContext } from 'react';\nimport type { FormikProps } from 'formik';\nimport { Form } from '@/molecules/form/form';\nimport type { DynamicFormFieldSchema } from '@/types/dynamic-form-schema-generated';\n\nexport interface DynamicFormContextValue {\n formik: FormikProps<Record<string, unknown>>;\n fields: DynamicFormFieldSchema[];\n readonly: boolean;\n getFieldValue: (name: string) => unknown;\n getFieldError: (name: string) => string | undefined;\n getFieldTouched: (name: string) => boolean;\n setFieldValue: (field: string, value: unknown) => Promise<void>;\n handleChange: (e: React.ChangeEvent<unknown>) => void;\n handleBlur: (e: React.FocusEvent<unknown>) => void;\n}\n\nconst DynamicFormContext = createContext<DynamicFormContextValue | null>(null);\n\ninterface DynamicFormProviderProps {\n children: React.ReactNode;\n fields: DynamicFormFieldSchema[];\n formik: FormikProps<Record<string, unknown>>;\n readonly?: boolean;\n formStyle?: React.CSSProperties;\n}\n\nexport function DynamicFormProvider({\n children,\n fields,\n formik,\n readonly = false,\n formStyle,\n}: DynamicFormProviderProps): React.ReactElement {\n const contextValue: DynamicFormContextValue = {\n formik,\n fields,\n readonly,\n getFieldValue: (name: string): unknown => formik.values[name],\n getFieldError: (name: string): string | undefined => {\n const error = formik.errors[name];\n const touched = formik.touched[name];\n return touched && error ? String(error) : undefined;\n },\n getFieldTouched: (name: string): boolean => Boolean(formik.touched[name]),\n setFieldValue: async (field: string, value: unknown): Promise<void> => {\n await formik.setFieldValue(field, value);\n },\n handleChange: formik.handleChange,\n handleBlur: formik.handleBlur, \n };\n\n return (\n <DynamicFormContext.Provider value={contextValue}>\n <Form.Root onSubmit={formik.handleSubmit} style={formStyle}>{children}</Form.Root>\n </DynamicFormContext.Provider>\n );\n}\n\nexport function useDynamicForm(): DynamicFormContextValue {\n const context = useContext(DynamicFormContext);\n\n if (!context) {\n throw new Error('useDynamicForm must be used within a DynamicFormProvider');\n }\n\n return context;\n}\n","import * as RadixForm from '@radix-ui/react-form';\nimport React, { createContext, forwardRef, useContext, useMemo } from 'react';\nimport type { HeadingProps } from '@radix-ui/themes';\nimport { Heading } from '../../atoms/heading';\nimport type { TypoProps } from '../../atoms/typo';\nimport { Typo } from '../../atoms/typo';\n\nconst Root = forwardRef<HTMLFormElement, RadixForm.FormProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Root\n {...rest}\n className={`FormRoot ${className || ''}`}\n ref={ref}\n >\n {children}\n </RadixForm.Root>\n );\n }\n);\n\nRoot.displayName = 'FORM_ROOT';\n\nexport type FormFieldProps = RadixForm.FormFieldProps & { required?: boolean };\n\nconst FieldContext = createContext<FormFieldProps>({\n name: '',\n});\n\nconst Field = forwardRef<HTMLDivElement, FormFieldProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Field\n {...rest}\n className={`FormField ${className || ''}`}\n ref={ref}\n >\n <FieldContext.Provider value={rest}>{children}</FieldContext.Provider>\n </RadixForm.Field>\n );\n }\n);\nField.displayName = 'FORM_FIELD';\n\nexport type FormLabelProps = RadixForm.FormLabelProps & {\n /** label의 타입을 지정 */\n variant?: 'title' | 'body' | 'caption';\n};\n\nfunction HeadingLabel(props: HeadingProps): React.ReactNode {\n return (\n <Heading variant=\"heading5\" {...props}>\n {props.children}\n </Heading>\n );\n}\n\nfunction CaptionLabel(props: TypoProps): React.ReactNode {\n return (\n <Typo color=\"gray\" variant=\"caption\" weight=\"bold\" {...props}>\n {props.children}\n </Typo>\n );\n}\n\nfunction BodyLabel(props: TypoProps): React.ReactNode {\n return (\n <Typo variant=\"body\" weight=\"bold\" {...props}>\n {props.children}\n </Typo>\n );\n}\n\nconst Label = forwardRef<HTMLLabelElement, FormLabelProps>(\n ({ children, className, variant, ...rest }, ref) => {\n const Comp = useMemo(() => {\n switch (variant) {\n case 'title':\n return HeadingLabel;\n case 'caption':\n return CaptionLabel;\n case 'body':\n default:\n return BodyLabel;\n }\n }, [variant]);\n\n const fieldProps = useContext(FieldContext);\n return (\n <RadixForm.Label\n {...rest}\n asChild\n className={`FormLabel ${className || ''}`}\n ref={ref}\n >\n <Comp>\n {children}\n {fieldProps.required ? (\n <Typo as=\"span\" color=\"tomato\">\n {` *`}\n </Typo>\n ) : null}\n </Comp>\n </RadixForm.Label>\n );\n }\n);\nLabel.displayName = 'FORM_Label';\n\nconst Message = forwardRef<HTMLSpanElement, RadixForm.FormMessageProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Message\n {...rest}\n asChild\n className={`FormMessage ${className || ''}`}\n ref={ref}\n >\n <Typo color=\"red\">{children}</Typo>\n </RadixForm.Message>\n );\n }\n);\nMessage.displayName = 'FORM_Message';\n\ntype ControlProps = Omit<RadixForm.FormControlProps, 'required'>;\nconst Control = forwardRef<HTMLInputElement, ControlProps>(\n ({ className, ...rest }, ref) => {\n const fieldProps = useContext(FieldContext);\n return (\n <RadixForm.Control\n {...rest}\n className={`FormControl ${className || ''}`}\n ref={ref}\n required={fieldProps.required}\n />\n );\n }\n);\nControl.displayName = 'FORM_Control';\n\ninterface FormItemProps extends FormFieldProps {\n children: React.ReactNode;\n label: string;\n labelVariant?: FormLabelProps['variant'];\n errorMessage?: string;\n}\n\nexport function FormItem({\n label,\n labelVariant,\n children,\n errorMessage,\n ...fieldProps\n}: FormItemProps): React.ReactNode {\n return (\n <Form.Field {...fieldProps}>\n <Form.Label variant={labelVariant}>{label}</Form.Label>\n {children}\n <Form.Message forceMatch={Boolean(errorMessage)}>\n {errorMessage}\n </Form.Message>\n </Form.Field>\n );\n}\n\nexport const Form = {\n Root,\n Field,\n Label,\n Message,\n Control: RadixForm.Control,\n Submit: RadixForm.Submit,\n FormItem,\n};\n","import {\n Heading as RadixHeading,\n type HeadingProps as RadixHeadingProps,\n} from '@radix-ui/themes';\nimport type { Responsive } from '@radix-ui/themes/props';\nimport { clsx } from 'clsx';\nimport { useMemo } from 'react';\nimport { mapWithResponsive } from '@/utils/map-with-responsive';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\nexport { Heading as RadixHeading } from '@radix-ui/themes';\ntype HeadingVariant =\n | 'heading1'\n | 'heading2'\n | 'heading3'\n | 'heading4'\n | 'heading5';\nexport type HeadingProps = DistributiveOmit<RadixHeadingProps, 'color'> & {\n variant?: Responsive<HeadingVariant>;\n color?: UiColor;\n};\n\ntype HeadingSize = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';\n\nconst mapVariant = (variant?: HeadingVariant): HeadingSize | undefined => {\n switch (variant) {\n case 'heading1':\n return '7';\n case 'heading2':\n return '6';\n case 'heading3':\n return '5';\n case 'heading4':\n return '4';\n case 'heading5':\n return '3';\n default:\n return undefined;\n }\n};\n\nexport function Heading(props: HeadingProps): React.ReactNode {\n const { size, children, variant, color, className, ...rest } = props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n const radixSize = useMemo<RadixHeadingProps['size']>(() => {\n return variant\n ? mapWithResponsive({\n value: variant,\n mapFn: mapVariant,\n })\n : size;\n\n }, [size, variant]);\n\n return (\n <RadixHeading\n {...rest}\n className={clsx(colorClassName, className)}\n color={radixColor}\n size={radixSize}\n >\n {children}\n </RadixHeading>\n );\n}\n","import type { Breakpoint, Responsive } from \"@radix-ui/themes/props\";\n\nexport const mapWithResponsive = <T extends string,K extends string>(\n args: {value: Responsive<T>, mapFn: (value?:T)=>K |undefined}\n): Responsive<K> | undefined => {\n const {value, mapFn} = args;\n if(typeof value === 'string'){\n return mapFn(value);\n };\n \n if(typeof value === 'object'){\n const newObj: Partial<Record<Breakpoint, K>> = {};\n let key: Breakpoint;\n for(key in value){\n newObj[key] = mapFn(value[key]);\n }\n return newObj;\n }\n return value;\n};\n","import type { BadgeProps as RadixBadgeProps } from '@radix-ui/themes';\n\n/**\n * Radix Themes가 제공하는 accent color union (gray, red, blue, ...).\n * 모든 color 지원 컴포넌트가 동일한 union을 공유하므로 Badge에서 파생한다.\n */\nexport type RadixColor = NonNullable<RadixBadgeProps['color']>;\n\n/** TIPP 시맨틱 color 별칭. */\nexport type SemanticColor = 'error' | 'accent' | 'neutral' | 'success';\n\n/**\n * Radix accent에 대응이 없어 CSS accent override로 처리하는 커스텀 color.\n * (예: black — `style/black.scss`의 `.tipp-accent-black` 참고)\n */\nexport type CustomColor = 'black';\n\n/** color 지원 컴포넌트가 노출하는 통합 color 타입. */\nexport type UiColor = RadixColor | SemanticColor | CustomColor;\n\n/**\n * union 각 멤버에 분배되는 Omit.\n * Radix의 polymorphic 컴포넌트 props(Text/Heading/Link 등 `as`로 분기되는 union)에서\n * 키를 제거할 때 일반 Omit은 union을 단일 객체로 합쳐 `as` 분기를 무너뜨리므로 이 타입을 쓴다.\n */\nexport type DistributiveOmit<T, K extends PropertyKey> = T extends unknown\n ? Omit<T, K>\n : never;\n\nconst SEMANTIC_COLOR_MAP: Record<SemanticColor, RadixColor | undefined> = {\n error: 'red',\n neutral: 'gray',\n success: 'green',\n accent: undefined,\n};\n\ninterface CustomColorConfig {\n /**\n * accent override를 적용할 className.\n */\n className: string;\n /**\n * Radix에 넘길 fallback color.\n * Text/Heading/Link 등은 `color` prop이 있어야 `data-accent-color`가 붙어\n * `--accent-*`를 참조하므로, 유효한 Radix color를 함께 넘긴 뒤 className으로\n * `--accent-*`를 덮어쓴다. (Badge/Button은 prop 없이도 accent 기반이라 무해)\n */\n fallbackColor: RadixColor;\n}\n\nconst CUSTOM_COLOR_MAP: Record<CustomColor, CustomColorConfig> = {\n black: { className: 'tipp-accent-black', fallbackColor: 'gray' },\n};\n\nconst isSemanticColor = (color?: UiColor): color is SemanticColor =>\n color !== undefined && color in SEMANTIC_COLOR_MAP;\n\nconst isCustomColor = (color?: UiColor): color is CustomColor =>\n color !== undefined && color in CUSTOM_COLOR_MAP;\n\nexport interface ResolvedColor {\n /** Radix 컴포넌트의 `color` prop에 그대로 전달할 값. custom color면 undefined. */\n color?: RadixColor;\n /** accent override를 적용하기 위해 요소에 붙일 className. */\n className?: string;\n}\n\n/**\n * 통합 color 입력을 Radix color prop과 className으로 정규화한다.\n *\n * - custom color(black 등): Radix color는 비우고 accent override className을 반환\n * - semantic color(error/neutral/success/accent): 대응 Radix color로 변환\n * - Radix color: 그대로 pass-through\n */\nexport const resolveColor = (color?: UiColor): ResolvedColor => {\n if (isCustomColor(color)) {\n const { className, fallbackColor } = CUSTOM_COLOR_MAP[color];\n return { color: fallbackColor, className };\n }\n\n if (isSemanticColor(color)) {\n return { color: SEMANTIC_COLOR_MAP[color] };\n }\n\n return { color };\n};\n","import type { TextProps as RadixTextProps } from '@radix-ui/themes';\nimport type { Responsive } from '@radix-ui/themes/props';\nimport { Text as RadixText } from '@radix-ui/themes';\nimport { clsx } from 'clsx';\nimport React, { useMemo, forwardRef } from 'react';\nimport { mapWithResponsive } from '@/utils/map-with-responsive';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\nexport type TypoProps = DistributiveOmit<RadixTextProps, 'color'> & {\n variant?: Responsive<'body' | 'caption' | 'subtitle'>;\n color?: UiColor;\n};\n\nexport const Typo = forwardRef<HTMLSpanElement, TypoProps>(\n (props: TypoProps, ref): React.ReactNode => {\n const { size, variant, children, color, className, ...rest } = props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n const radixSize = useMemo<RadixTextProps['size']>(() => {\n if (size !== undefined) return size;\n\n if (variant === undefined) return '2';\n\n return mapWithResponsive({\n value: variant,\n mapFn: (variantValue?: 'body' | 'caption' | 'subtitle') => {\n switch (variantValue) {\n case 'caption':\n return '1';\n case 'subtitle':\n return '3';\n case 'body':\n default:\n return '2';\n }\n },\n });\n }, [size, variant]);\n\n return (\n <RadixText\n {...rest}\n className={clsx(colorClassName, className)}\n color={radixColor}\n ref={ref}\n size={radixSize}\n >\n {children}\n </RadixText>\n );\n }\n);\n\nTypo.displayName = 'Typo';\n","import { createContext, useContext } from 'react';\n\ninterface UIStateContextType {\n isMobile: boolean;\n}\n\nexport const UIStateContext = createContext<UIStateContextType>({\n isMobile: false,\n});\n\nexport type UiStateProviderProps = React.ReactNode;\n\nexport function UIStateProvider({\n children,\n isMobile,\n}: {\n children: UiStateProviderProps;\n isMobile: boolean;\n}): React.ReactElement {\n return (\n <UIStateContext.Provider value={{ isMobile }}>\n {children}\n </UIStateContext.Provider>\n );\n}\n\nexport const useUIState = (): UIStateContextType => {\n try {\n const state = useContext(UIStateContext);\n return state;\n } catch (error) {\n throw new Error('UIStateProvider not found');\n }\n};"],"mappings":"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","names":["import_react","import_react","import_themes","Heading","RadixHeading","import_themes","import_clsx","import_react","import_jsx_runtime","RadixText","import_jsx_runtime","Root","Field","Heading","Label","Message","Control","import_jsx_runtime","import_react","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../../src/context/index.ts","../../src/context/dynamic-form-context.tsx","../../src/molecules/form/form.tsx","../../src/atoms/heading.tsx","../../src/utils/map-with-responsive.ts","../../src/utils/clamp-style.ts","../../src/utils/mono-style.ts","../../src/utils/resolve-color.ts","../../src/atoms/typo.tsx","../../src/context/ui-state-provider.tsx"],"sourcesContent":["export * from './dynamic-form-context';\nexport * from './ui-state-provider';","import React, { createContext, useContext } from 'react';\nimport type { FormikProps } from 'formik';\nimport { Form } from '@/molecules/form/form';\nimport type { DynamicFormFieldSchema } from '@/types/dynamic-form-schema-generated';\n\nexport interface DynamicFormContextValue {\n formik: FormikProps<Record<string, unknown>>;\n fields: DynamicFormFieldSchema[];\n readonly: boolean;\n getFieldValue: (name: string) => unknown;\n getFieldError: (name: string) => string | undefined;\n getFieldTouched: (name: string) => boolean;\n setFieldValue: (field: string, value: unknown) => Promise<void>;\n handleChange: (e: React.ChangeEvent<unknown>) => void;\n handleBlur: (e: React.FocusEvent<unknown>) => void;\n}\n\nconst DynamicFormContext = createContext<DynamicFormContextValue | null>(null);\n\ninterface DynamicFormProviderProps {\n children: React.ReactNode;\n fields: DynamicFormFieldSchema[];\n formik: FormikProps<Record<string, unknown>>;\n readonly?: boolean;\n formStyle?: React.CSSProperties;\n}\n\nexport function DynamicFormProvider({\n children,\n fields,\n formik,\n readonly = false,\n formStyle,\n}: DynamicFormProviderProps): React.ReactElement {\n const contextValue: DynamicFormContextValue = {\n formik,\n fields,\n readonly,\n getFieldValue: (name: string): unknown => formik.values[name],\n getFieldError: (name: string): string | undefined => {\n const error = formik.errors[name];\n const touched = formik.touched[name];\n return touched && error ? String(error) : undefined;\n },\n getFieldTouched: (name: string): boolean => Boolean(formik.touched[name]),\n setFieldValue: async (field: string, value: unknown): Promise<void> => {\n await formik.setFieldValue(field, value);\n },\n handleChange: formik.handleChange,\n handleBlur: formik.handleBlur, \n };\n\n return (\n <DynamicFormContext.Provider value={contextValue}>\n <Form.Root onSubmit={formik.handleSubmit} style={formStyle}>{children}</Form.Root>\n </DynamicFormContext.Provider>\n );\n}\n\nexport function useDynamicForm(): DynamicFormContextValue {\n const context = useContext(DynamicFormContext);\n\n if (!context) {\n throw new Error('useDynamicForm must be used within a DynamicFormProvider');\n }\n\n return context;\n}\n","import * as RadixForm from '@radix-ui/react-form';\nimport React, { createContext, forwardRef, useContext, useMemo } from 'react';\nimport type { HeadingProps } from '@radix-ui/themes';\nimport { Heading } from '../../atoms/heading';\nimport type { TypoProps } from '../../atoms/typo';\nimport { Typo } from '../../atoms/typo';\n\nconst Root = forwardRef<HTMLFormElement, RadixForm.FormProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Root\n {...rest}\n className={`FormRoot ${className || ''}`}\n ref={ref}\n >\n {children}\n </RadixForm.Root>\n );\n }\n);\n\nRoot.displayName = 'FORM_ROOT';\n\nexport type FormFieldProps = RadixForm.FormFieldProps & { required?: boolean };\n\nconst FieldContext = createContext<FormFieldProps>({\n name: '',\n});\n\nconst Field = forwardRef<HTMLDivElement, FormFieldProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Field\n {...rest}\n className={`FormField ${className || ''}`}\n ref={ref}\n >\n <FieldContext.Provider value={rest}>{children}</FieldContext.Provider>\n </RadixForm.Field>\n );\n }\n);\nField.displayName = 'FORM_FIELD';\n\nexport type FormLabelProps = RadixForm.FormLabelProps & {\n /** label의 타입을 지정 */\n variant?: 'title' | 'body' | 'caption';\n};\n\nfunction HeadingLabel(props: HeadingProps): React.ReactNode {\n return (\n <Heading variant=\"heading5\" {...props}>\n {props.children}\n </Heading>\n );\n}\n\nfunction CaptionLabel(props: TypoProps): React.ReactNode {\n return (\n <Typo color=\"gray\" variant=\"caption\" weight=\"bold\" {...props}>\n {props.children}\n </Typo>\n );\n}\n\nfunction BodyLabel(props: TypoProps): React.ReactNode {\n return (\n <Typo variant=\"body\" weight=\"bold\" {...props}>\n {props.children}\n </Typo>\n );\n}\n\nconst Label = forwardRef<HTMLLabelElement, FormLabelProps>(\n ({ children, className, variant, ...rest }, ref) => {\n const Comp = useMemo(() => {\n switch (variant) {\n case 'title':\n return HeadingLabel;\n case 'caption':\n return CaptionLabel;\n case 'body':\n default:\n return BodyLabel;\n }\n }, [variant]);\n\n const fieldProps = useContext(FieldContext);\n return (\n <RadixForm.Label\n {...rest}\n asChild\n className={`FormLabel ${className || ''}`}\n ref={ref}\n >\n <Comp>\n {children}\n {fieldProps.required ? (\n <Typo as=\"span\" color=\"tomato\">\n {` *`}\n </Typo>\n ) : null}\n </Comp>\n </RadixForm.Label>\n );\n }\n);\nLabel.displayName = 'FORM_Label';\n\nconst Message = forwardRef<HTMLSpanElement, RadixForm.FormMessageProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <RadixForm.Message\n {...rest}\n asChild\n className={`FormMessage ${className || ''}`}\n ref={ref}\n >\n <Typo color=\"red\">{children}</Typo>\n </RadixForm.Message>\n );\n }\n);\nMessage.displayName = 'FORM_Message';\n\ntype ControlProps = Omit<RadixForm.FormControlProps, 'required'>;\nconst Control = forwardRef<HTMLInputElement, ControlProps>(\n ({ className, ...rest }, ref) => {\n const fieldProps = useContext(FieldContext);\n return (\n <RadixForm.Control\n {...rest}\n className={`FormControl ${className || ''}`}\n ref={ref}\n required={fieldProps.required}\n />\n );\n }\n);\nControl.displayName = 'FORM_Control';\n\ninterface FormItemProps extends FormFieldProps {\n children: React.ReactNode;\n label: string;\n labelVariant?: FormLabelProps['variant'];\n errorMessage?: string;\n}\n\nexport function FormItem({\n label,\n labelVariant,\n children,\n errorMessage,\n ...fieldProps\n}: FormItemProps): React.ReactNode {\n return (\n <Form.Field {...fieldProps}>\n <Form.Label variant={labelVariant}>{label}</Form.Label>\n {children}\n <Form.Message forceMatch={Boolean(errorMessage)}>\n {errorMessage}\n </Form.Message>\n </Form.Field>\n );\n}\n\nexport const Form = {\n Root,\n Field,\n Label,\n Message,\n Control: RadixForm.Control,\n Submit: RadixForm.Submit,\n FormItem,\n};\n","import {\n Heading as RadixHeading,\n type HeadingProps as RadixHeadingProps,\n} from '@radix-ui/themes';\nimport type { Responsive } from '@radix-ui/themes/props';\nimport { clsx } from 'clsx';\nimport { useMemo } from 'react';\nimport { mapWithResponsive } from '@/utils/map-with-responsive';\nimport { clampStyle } from '../utils/clamp-style';\nimport { MONO_STYLE } from '../utils/mono-style';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\nexport { Heading as RadixHeading } from '@radix-ui/themes';\ntype HeadingVariant =\n | 'heading1'\n | 'heading2'\n | 'heading3'\n | 'heading4'\n | 'heading5';\nexport type HeadingProps = DistributiveOmit<RadixHeadingProps, 'color'> & {\n variant?: Responsive<HeadingVariant>;\n color?: UiColor;\n /** 등폭(monospace) 폰트 + 숫자 고정폭 정렬(tabular-nums). 점수·퍼센트 등 수치 표시에 사용한다. */\n mono?: boolean;\n /** 여러 줄 말줄임(line-clamp). 지정한 줄 수까지만 표시하고 넘치면 …로 자른다. */\n clamp?: number;\n};\n\ntype HeadingSize = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';\n\nconst mapVariant = (variant?: HeadingVariant): HeadingSize | undefined => {\n switch (variant) {\n case 'heading1':\n return '7';\n case 'heading2':\n return '6';\n case 'heading3':\n return '5';\n case 'heading4':\n return '4';\n case 'heading5':\n return '3';\n default:\n return undefined;\n }\n};\n\nexport function Heading(props: HeadingProps): React.ReactNode {\n const {\n size,\n children,\n variant,\n color,\n className,\n mono,\n clamp,\n style,\n ...rest\n } = props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n const radixSize = useMemo<RadixHeadingProps['size']>(() => {\n return variant\n ? mapWithResponsive({\n value: variant,\n mapFn: mapVariant,\n })\n : size;\n\n }, [size, variant]);\n\n return (\n <RadixHeading\n {...rest}\n className={clsx(colorClassName, className)}\n color={radixColor}\n size={radixSize}\n style={{\n ...(mono ? MONO_STYLE : null),\n ...(clamp ? clampStyle(clamp) : null),\n ...style,\n }}\n >\n {children}\n </RadixHeading>\n );\n}\n","import type { Breakpoint, Responsive } from \"@radix-ui/themes/props\";\n\nexport const mapWithResponsive = <T extends string,K extends string>(\n args: {value: Responsive<T>, mapFn: (value?:T)=>K |undefined}\n): Responsive<K> | undefined => {\n const {value, mapFn} = args;\n if(typeof value === 'string'){\n return mapFn(value);\n };\n \n if(typeof value === 'object'){\n const newObj: Partial<Record<Breakpoint, K>> = {};\n let key: Breakpoint;\n for(key in value){\n newObj[key] = mapFn(value[key]);\n }\n return newObj;\n }\n return value;\n};\n","import type { CSSProperties } from 'react';\n\n/**\n * 여러 줄 말줄임(line-clamp) 스타일. 지정한 줄 수까지만 표시하고 넘치면 `…`로 자른다.\n *\n * Radix의 `truncate`(white-space:nowrap 강제 1줄)와 달리, 줄바꿈을 허용한 뒤\n * `lines` 줄에서 자른다. `Typo`/`Heading`의 `clamp` prop 구현에 사용된다.\n *\n * @param lines - 표시할 최대 줄 수 (1, 2, 3 …)\n */\nexport const clampStyle = (lines: number): CSSProperties => ({\n display: '-webkit-box',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: lines,\n lineClamp: lines,\n overflow: 'hidden',\n});\n","import type { CSSProperties } from 'react';\n\n/**\n * 등폭(monospace) 텍스트 스타일.\n * - `font-family`: 등폭 폰트(`--code-font-family`는 Radix Themes가 제공, 없으면 시스템 등폭으로 폴백)\n * - `font-variant-numeric: tabular-nums`: 숫자를 고정폭으로 정렬해 점수·퍼센트·통계가 자릿수마다 흔들리지 않게 함\n *\n * `Typo`/`Heading`의 `mono` prop 구현에 사용된다.\n */\nexport const MONO_STYLE: CSSProperties = {\n fontFamily: 'var(--code-font-family, ui-monospace, \"SF Mono\", monospace)',\n fontVariantNumeric: 'tabular-nums',\n};\n","import type { BadgeProps as RadixBadgeProps } from '@radix-ui/themes';\n\n/**\n * Radix Themes가 제공하는 accent color union (gray, red, blue, ...).\n * 모든 color 지원 컴포넌트가 동일한 union을 공유하므로 Badge에서 파생한다.\n */\nexport type RadixColor = NonNullable<RadixBadgeProps['color']>;\n\n/** TIPP 시맨틱 color 별칭. */\nexport type SemanticColor = 'error' | 'accent' | 'neutral' | 'success';\n\n/**\n * Radix accent에 대응이 없어 CSS accent override로 처리하는 커스텀 color.\n * (예: black — `style/black.scss`의 `.tipp-accent-black` 참고)\n */\nexport type CustomColor = 'black';\n\n/** color 지원 컴포넌트가 노출하는 통합 color 타입. */\nexport type UiColor = RadixColor | SemanticColor | CustomColor;\n\n/**\n * union 각 멤버에 분배되는 Omit.\n * Radix의 polymorphic 컴포넌트 props(Text/Heading/Link 등 `as`로 분기되는 union)에서\n * 키를 제거할 때 일반 Omit은 union을 단일 객체로 합쳐 `as` 분기를 무너뜨리므로 이 타입을 쓴다.\n */\nexport type DistributiveOmit<T, K extends PropertyKey> = T extends unknown\n ? Omit<T, K>\n : never;\n\nconst SEMANTIC_COLOR_MAP: Record<SemanticColor, RadixColor | undefined> = {\n error: 'red',\n neutral: 'gray',\n success: 'green',\n accent: undefined,\n};\n\ninterface CustomColorConfig {\n /**\n * accent override를 적용할 className.\n */\n className: string;\n /**\n * Radix에 넘길 fallback color.\n * Text/Heading/Link 등은 `color` prop이 있어야 `data-accent-color`가 붙어\n * `--accent-*`를 참조하므로, 유효한 Radix color를 함께 넘긴 뒤 className으로\n * `--accent-*`를 덮어쓴다. (Badge/Button은 prop 없이도 accent 기반이라 무해)\n */\n fallbackColor: RadixColor;\n}\n\nconst CUSTOM_COLOR_MAP: Record<CustomColor, CustomColorConfig> = {\n black: { className: 'tipp-accent-black', fallbackColor: 'gray' },\n};\n\nconst isSemanticColor = (color?: UiColor): color is SemanticColor =>\n color !== undefined && color in SEMANTIC_COLOR_MAP;\n\nconst isCustomColor = (color?: UiColor): color is CustomColor =>\n color !== undefined && color in CUSTOM_COLOR_MAP;\n\nexport interface ResolvedColor {\n /** Radix 컴포넌트의 `color` prop에 그대로 전달할 값. custom color면 undefined. */\n color?: RadixColor;\n /** accent override를 적용하기 위해 요소에 붙일 className. */\n className?: string;\n}\n\n/**\n * 통합 color 입력을 Radix color prop과 className으로 정규화한다.\n *\n * - custom color(black 등): Radix color는 비우고 accent override className을 반환\n * - semantic color(error/neutral/success/accent): 대응 Radix color로 변환\n * - Radix color: 그대로 pass-through\n */\nexport const resolveColor = (color?: UiColor): ResolvedColor => {\n if (isCustomColor(color)) {\n const { className, fallbackColor } = CUSTOM_COLOR_MAP[color];\n return { color: fallbackColor, className };\n }\n\n if (isSemanticColor(color)) {\n return { color: SEMANTIC_COLOR_MAP[color] };\n }\n\n return { color };\n};\n","import type { TextProps as RadixTextProps } from '@radix-ui/themes';\nimport type { Responsive } from '@radix-ui/themes/props';\nimport { Text as RadixText } from '@radix-ui/themes';\nimport { clsx } from 'clsx';\nimport React, { useMemo, forwardRef } from 'react';\nimport { mapWithResponsive } from '@/utils/map-with-responsive';\nimport { clampStyle } from '../utils/clamp-style';\nimport { MONO_STYLE } from '../utils/mono-style';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\nexport type TypoProps = DistributiveOmit<RadixTextProps, 'color'> & {\n variant?: Responsive<'body' | 'caption' | 'subtitle'>;\n color?: UiColor;\n /** 등폭(monospace) 폰트 + 숫자 고정폭 정렬(tabular-nums). 점수·퍼센트 등 수치 표시에 사용한다. */\n mono?: boolean;\n /** 여러 줄 말줄임(line-clamp). 지정한 줄 수까지만 표시하고 넘치면 …로 자른다. */\n clamp?: number;\n};\n\nexport const Typo = forwardRef<HTMLSpanElement, TypoProps>(\n (props: TypoProps, ref): React.ReactNode => {\n const {\n size,\n variant,\n children,\n color,\n className,\n mono,\n clamp,\n style,\n ...rest\n } = props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n const radixSize = useMemo<RadixTextProps['size']>(() => {\n if (size !== undefined) return size;\n\n if (variant === undefined) return '2';\n\n return mapWithResponsive({\n value: variant,\n mapFn: (variantValue?: 'body' | 'caption' | 'subtitle') => {\n switch (variantValue) {\n case 'caption':\n return '1';\n case 'subtitle':\n return '3';\n case 'body':\n default:\n return '2';\n }\n },\n });\n }, [size, variant]);\n\n return (\n <RadixText\n {...rest}\n className={clsx(colorClassName, className)}\n color={radixColor}\n ref={ref}\n size={radixSize}\n style={{\n ...(mono ? MONO_STYLE : null),\n ...(clamp ? clampStyle(clamp) : null),\n ...style,\n }}\n >\n {children}\n </RadixText>\n );\n }\n);\n\nTypo.displayName = 'Typo';\n","import { createContext, useContext } from 'react';\n\ninterface UIStateContextType {\n isMobile: boolean;\n}\n\nexport const UIStateContext = createContext<UIStateContextType>({\n isMobile: false,\n});\n\nexport type UiStateProviderProps = React.ReactNode;\n\nexport function UIStateProvider({\n children,\n isMobile,\n}: {\n children: UiStateProviderProps;\n isMobile: boolean;\n}): React.ReactElement {\n return (\n <UIStateContext.Provider value={{ isMobile }}>\n {children}\n </UIStateContext.Provider>\n );\n}\n\nexport const useUIState = (): UIStateContextType => {\n try {\n const state = useContext(UIStateContext);\n return state;\n } catch (error) {\n throw new Error('UIStateProvider not found');\n }\n};"],"mappings":"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","names":["import_react","import_react","import_themes","Heading","RadixHeading","import_themes","import_clsx","import_react","import_jsx_runtime","RadixText","import_jsx_runtime","Root","Field","Heading","Label","Message","Control","import_jsx_runtime","import_react","import_jsx_runtime"]}
@@ -1,17 +1,19 @@
1
1
  import "../chunk-P5EMTC35.js";
2
+ import {
3
+ DynamicFormProvider,
4
+ useDynamicForm
5
+ } from "../chunk-FAL6S2XK.js";
6
+ import "../chunk-AELKCD6B.js";
2
7
  import {
3
8
  UIStateContext,
4
9
  UIStateProvider,
5
10
  useUIState
6
11
  } from "../chunk-PT57HCAI.js";
7
- import {
8
- DynamicFormProvider,
9
- useDynamicForm
10
- } from "../chunk-E6GCU5IQ.js";
11
- import "../chunk-MMLVZWMD.js";
12
- import "../chunk-NLHVQJQ2.js";
13
- import "../chunk-GR4PG6HY.js";
12
+ import "../chunk-USGOLLYO.js";
13
+ import "../chunk-L4QQGIYQ.js";
14
14
  import "../chunk-LDBWASUA.js";
15
+ import "../chunk-PO2PBAHW.js";
16
+ import "../chunk-36W7VD2Z.js";
15
17
  import "../chunk-VFQD57ZY.js";
16
18
  import "../chunk-CRTRMMJ7.js";
17
19
  export {