@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
@@ -79,6 +79,21 @@ var mapWithResponsive = (args) => {
79
79
  return value;
80
80
  };
81
81
 
82
+ // src/utils/clamp-style.ts
83
+ var clampStyle = (lines) => ({
84
+ display: "-webkit-box",
85
+ WebkitBoxOrient: "vertical",
86
+ WebkitLineClamp: lines,
87
+ lineClamp: lines,
88
+ overflow: "hidden"
89
+ });
90
+
91
+ // src/utils/mono-style.ts
92
+ var MONO_STYLE = {
93
+ fontFamily: 'var(--code-font-family, ui-monospace, "SF Mono", monospace)',
94
+ fontVariantNumeric: "tabular-nums"
95
+ };
96
+
82
97
  // src/utils/resolve-color.ts
83
98
  var SEMANTIC_COLOR_MAP = {
84
99
  error: "red",
@@ -106,7 +121,25 @@ var resolveColor = (color) => {
106
121
  var import_jsx_runtime = require("react/jsx-runtime");
107
122
  var Typo = (0, import_react.forwardRef)(
108
123
  (props, ref) => {
109
- const _a = props, { size, variant, children, color, className } = _a, rest = __objRest(_a, ["size", "variant", "children", "color", "className"]);
124
+ const _a = props, {
125
+ size,
126
+ variant,
127
+ children,
128
+ color,
129
+ className,
130
+ mono,
131
+ clamp,
132
+ style
133
+ } = _a, rest = __objRest(_a, [
134
+ "size",
135
+ "variant",
136
+ "children",
137
+ "color",
138
+ "className",
139
+ "mono",
140
+ "clamp",
141
+ "style"
142
+ ]);
110
143
  const { color: radixColor, className: colorClassName } = (0, import_react.useMemo)(
111
144
  () => resolveColor(color),
112
145
  [color]
@@ -136,6 +169,7 @@ var Typo = (0, import_react.forwardRef)(
136
169
  color: radixColor,
137
170
  ref,
138
171
  size: radixSize,
172
+ style: __spreadValues(__spreadValues(__spreadValues({}, mono ? MONO_STYLE : null), clamp ? clampStyle(clamp) : null), style),
139
173
  children
140
174
  })
141
175
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/atoms/field-error-wrapper.tsx","../../src/atoms/flex.tsx","../../src/atoms/typo.tsx","../../src/utils/map-with-responsive.ts","../../src/utils/resolve-color.ts"],"sourcesContent":["import React from 'react';\nimport { Flex } from './flex';\nimport { Typo } from './typo';\n\nexport interface FieldErrorWrapperProps {\n children?: React.ReactNode;\n error?: React.ReactNode;\n}\n\nexport function FieldErrorWrapper({\n children,\n error,\n}: FieldErrorWrapperProps): React.ReactNode {\n return (\n <Flex direction=\"column\" gap=\"1\">\n {children}\n {error ? (\n <Typo color=\"red\" variant=\"caption\">\n {error}\n </Typo>\n ) : null}\n </Flex>\n );\n}\n","export { Flex, type FlexProps } from '@radix-ui/themes';\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 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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAAqC;;;ACErC,IAAAA,iBAAkC;AAClC,kBAAqB;AACrB,mBAA2C;;;ACFpC,IAAM,oBAAoB,CAChC,SAC+B;AAC9B,QAAM,EAAC,OAAO,MAAK,IAAI;AACvB,MAAG,OAAO,UAAU,UAAS;AAC3B,WAAO,MAAM,KAAK;AAAA,EACpB;AAAC;AAED,MAAG,OAAO,UAAU,UAAS;AAC3B,UAAM,SAAyC,CAAC;AAChD,QAAI;AACJ,SAAI,OAAO,OAAM;AACf,aAAO,GAAG,IAAI,MAAM,MAAM,GAAG,CAAC;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;;;ACUA,IAAM,qBAAoE;AAAA,EACxE,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AACV;AAgBA,IAAM,mBAA2D;AAAA,EAC/D,OAAO,EAAE,WAAW,qBAAqB,eAAe,OAAO;AACjE;AAEA,IAAM,kBAAkB,CAAC,UACvB,UAAU,UAAa,SAAS;AAElC,IAAM,gBAAgB,CAAC,UACrB,UAAU,UAAa,SAAS;AAgB3B,IAAM,eAAe,CAAC,UAAmC;AAC9D,MAAI,cAAc,KAAK,GAAG;AACxB,UAAM,EAAE,WAAW,cAAc,IAAI,iBAAiB,KAAK;AAC3D,WAAO,EAAE,OAAO,eAAe,UAAU;AAAA,EAC3C;AAEA,MAAI,gBAAgB,KAAK,GAAG;AAC1B,WAAO,EAAE,OAAO,mBAAmB,KAAK,EAAE;AAAA,EAC5C;AAEA,SAAO,EAAE,MAAM;AACjB;;;AFrCM;AA/BC,IAAM,WAAO;AAAA,EAClB,CAAC,OAAkB,QAAyB;AAC1C,UAA+D,YAAvD,QAAM,SAAS,UAAU,OAAO,UAnB5C,IAmBmE,IAAT,iBAAS,IAAT,CAA9C,QAAM,WAAS,YAAU,SAAO;AAExC,UAAM,EAAE,OAAO,YAAY,WAAW,eAAe,QAAI;AAAA,MACvD,MAAM,aAAa,KAAK;AAAA,MACxB,CAAC,KAAK;AAAA,IACR;AAEA,UAAM,gBAAY,sBAAgC,MAAM;AACtD,UAAI,SAAS,OAAW,QAAO;AAE/B,UAAI,YAAY,OAAW,QAAO;AAElC,aAAO,kBAAkB;AAAA,QACvB,OAAO;AAAA,QACP,OAAO,CAAC,iBAAmD;AACzD,kBAAQ,cAAc;AAAA,YACpB,KAAK;AACH,qBAAO;AAAA,YACT,KAAK;AACH,qBAAO;AAAA,YACT,KAAK;AAAA,YACL;AACE,qBAAO;AAAA,UACX;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,GAAG,CAAC,MAAM,OAAO,CAAC;AAElB,WACE;AAAA,MAAC,eAAAC;AAAA,MAAA,iCACK,OADL;AAAA,QAEC,eAAW,kBAAK,gBAAgB,SAAS;AAAA,QACzC,OAAO;AAAA,QACP;AAAA,QACA,MAAM;AAAA,QAEL;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,KAAK,cAAc;;;AF/Cf,IAAAC,sBAAA;AALG,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AACF,GAA4C;AAC1C,SACE,8CAAC,sBAAK,WAAU,UAAS,KAAI,KAC1B;AAAA;AAAA,IACA,QACC,6CAAC,QAAK,OAAM,OAAM,SAAQ,WACvB,iBACH,IACE;AAAA,KACN;AAEJ;","names":["import_themes","RadixText","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../../src/atoms/field-error-wrapper.tsx","../../src/atoms/flex.tsx","../../src/atoms/typo.tsx","../../src/utils/map-with-responsive.ts","../../src/utils/clamp-style.ts","../../src/utils/mono-style.ts","../../src/utils/resolve-color.ts"],"sourcesContent":["import React from 'react';\nimport { Flex } from './flex';\nimport { Typo } from './typo';\n\nexport interface FieldErrorWrapperProps {\n children?: React.ReactNode;\n error?: React.ReactNode;\n}\n\nexport function FieldErrorWrapper({\n children,\n error,\n}: FieldErrorWrapperProps): React.ReactNode {\n return (\n <Flex direction=\"column\" gap=\"1\">\n {children}\n {error ? (\n <Typo color=\"red\" variant=\"caption\">\n {error}\n </Typo>\n ) : null}\n </Flex>\n );\n}\n","export { Flex, type FlexProps } from '@radix-ui/themes';\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 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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAAqC;;;ACErC,IAAAA,iBAAkC;AAClC,kBAAqB;AACrB,mBAA2C;;;ACFpC,IAAM,oBAAoB,CAChC,SAC+B;AAC9B,QAAM,EAAC,OAAO,MAAK,IAAI;AACvB,MAAG,OAAO,UAAU,UAAS;AAC3B,WAAO,MAAM,KAAK;AAAA,EACpB;AAAC;AAED,MAAG,OAAO,UAAU,UAAS;AAC3B,UAAM,SAAyC,CAAC;AAChD,QAAI;AACJ,SAAI,OAAO,OAAM;AACf,aAAO,GAAG,IAAI,MAAM,MAAM,GAAG,CAAC;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;;;ACTO,IAAM,aAAa,CAAC,WAAkC;AAAA,EAC3D,SAAS;AAAA,EACT,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,UAAU;AACZ;;;ACPO,IAAM,aAA4B;AAAA,EACvC,YAAY;AAAA,EACZ,oBAAoB;AACtB;;;ACiBA,IAAM,qBAAoE;AAAA,EACxE,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AACV;AAgBA,IAAM,mBAA2D;AAAA,EAC/D,OAAO,EAAE,WAAW,qBAAqB,eAAe,OAAO;AACjE;AAEA,IAAM,kBAAkB,CAAC,UACvB,UAAU,UAAa,SAAS;AAElC,IAAM,gBAAgB,CAAC,UACrB,UAAU,UAAa,SAAS;AAgB3B,IAAM,eAAe,CAAC,UAAmC;AAC9D,MAAI,cAAc,KAAK,GAAG;AACxB,UAAM,EAAE,WAAW,cAAc,IAAI,iBAAiB,KAAK;AAC3D,WAAO,EAAE,OAAO,eAAe,UAAU;AAAA,EAC3C;AAEA,MAAI,gBAAgB,KAAK,GAAG;AAC1B,WAAO,EAAE,OAAO,mBAAmB,KAAK,EAAE;AAAA,EAC5C;AAEA,SAAO,EAAE,MAAM;AACjB;;;AJrBM;AAzCC,IAAM,WAAO;AAAA,EAClB,CAAC,OAAkB,QAAyB;AAC1C,UAUI,YATF;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAjCN,IAmCQ,IADC,iBACD,IADC;AAAA,MARH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAIF,UAAM,EAAE,OAAO,YAAY,WAAW,eAAe,QAAI;AAAA,MACvD,MAAM,aAAa,KAAK;AAAA,MACxB,CAAC,KAAK;AAAA,IACR;AAEA,UAAM,gBAAY,sBAAgC,MAAM;AACtD,UAAI,SAAS,OAAW,QAAO;AAE/B,UAAI,YAAY,OAAW,QAAO;AAElC,aAAO,kBAAkB;AAAA,QACvB,OAAO;AAAA,QACP,OAAO,CAAC,iBAAmD;AACzD,kBAAQ,cAAc;AAAA,YACpB,KAAK;AACH,qBAAO;AAAA,YACT,KAAK;AACH,qBAAO;AAAA,YACT,KAAK;AAAA,YACL;AACE,qBAAO;AAAA,UACX;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,GAAG,CAAC,MAAM,OAAO,CAAC;AAElB,WACE;AAAA,MAAC,eAAAC;AAAA,MAAA,iCACK,OADL;AAAA,QAEC,eAAW,kBAAK,gBAAgB,SAAS;AAAA,QACzC,OAAO;AAAA,QACP;AAAA,QACA,MAAM;AAAA,QACN,OAAO,iDACD,OAAO,aAAa,OACpB,QAAQ,WAAW,KAAK,IAAI,OAC7B;AAAA,QAGJ;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,KAAK,cAAc;;;AFpEf,IAAAC,sBAAA;AALG,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AACF,GAA4C;AAC1C,SACE,8CAAC,sBAAK,WAAU,UAAS,KAAI,KAC1B;AAAA;AAAA,IACA,QACC,6CAAC,QAAK,OAAM,OAAM,SAAQ,WACvB,iBACH,IACE;AAAA,KACN;AAEJ;","names":["import_themes","RadixText","import_jsx_runtime"]}
@@ -1,9 +1,11 @@
1
1
  import {
2
2
  FieldErrorWrapper
3
- } from "../chunk-XLJQHI62.js";
4
- import "../chunk-25HMMI7R.js";
5
- import "../chunk-GR4PG6HY.js";
3
+ } from "../chunk-GNB4A34H.js";
4
+ import "../chunk-L4QQGIYQ.js";
6
5
  import "../chunk-LDBWASUA.js";
6
+ import "../chunk-PO2PBAHW.js";
7
+ import "../chunk-36W7VD2Z.js";
8
+ import "../chunk-25HMMI7R.js";
7
9
  import "../chunk-VFQD57ZY.js";
8
10
  import "../chunk-CRTRMMJ7.js";
9
11
  export {
@@ -75,6 +75,21 @@ var mapWithResponsive = (args) => {
75
75
  return value;
76
76
  };
77
77
 
78
+ // src/utils/clamp-style.ts
79
+ var clampStyle = (lines) => ({
80
+ display: "-webkit-box",
81
+ WebkitBoxOrient: "vertical",
82
+ WebkitLineClamp: lines,
83
+ lineClamp: lines,
84
+ overflow: "hidden"
85
+ });
86
+
87
+ // src/utils/mono-style.ts
88
+ var MONO_STYLE = {
89
+ fontFamily: 'var(--code-font-family, ui-monospace, "SF Mono", monospace)',
90
+ fontVariantNumeric: "tabular-nums"
91
+ };
92
+
78
93
  // src/utils/resolve-color.ts
79
94
  var SEMANTIC_COLOR_MAP = {
80
95
  error: "red",
@@ -118,7 +133,25 @@ var mapVariant = (variant) => {
118
133
  }
119
134
  };
120
135
  function Heading2(props) {
121
- const _a = props, { size, children, variant, color, className } = _a, rest = __objRest(_a, ["size", "children", "variant", "color", "className"]);
136
+ const _a = props, {
137
+ size,
138
+ children,
139
+ variant,
140
+ color,
141
+ className,
142
+ mono,
143
+ clamp,
144
+ style
145
+ } = _a, rest = __objRest(_a, [
146
+ "size",
147
+ "children",
148
+ "variant",
149
+ "color",
150
+ "className",
151
+ "mono",
152
+ "clamp",
153
+ "style"
154
+ ]);
122
155
  const { color: radixColor, className: colorClassName } = (0, import_react.useMemo)(
123
156
  () => resolveColor(color),
124
157
  [color]
@@ -135,6 +168,7 @@ function Heading2(props) {
135
168
  className: (0, import_clsx.clsx)(colorClassName, className),
136
169
  color: radixColor,
137
170
  size: radixSize,
171
+ style: __spreadValues(__spreadValues(__spreadValues({}, mono ? MONO_STYLE : null), clamp ? clampStyle(clamp) : null), style),
138
172
  children
139
173
  })
140
174
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/atoms/heading.tsx","../../src/utils/map-with-responsive.ts","../../src/utils/resolve-color.ts"],"sourcesContent":["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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,iBAAAA;AAAA,EAAA;AAAA;AAAA;AAAA,oBAGO;AAEP,kBAAqB;AACrB,mBAAwB;;;ACJjB,IAAM,oBAAoB,CAChC,SAC+B;AAC9B,QAAM,EAAC,OAAO,MAAK,IAAI;AACvB,MAAG,OAAO,UAAU,UAAS;AAC3B,WAAO,MAAM,KAAK;AAAA,EACpB;AAAC;AAED,MAAG,OAAO,UAAU,UAAS;AAC3B,UAAM,SAAyC,CAAC;AAChD,QAAI;AACJ,SAAI,OAAO,OAAM;AACf,aAAO,GAAG,IAAI,MAAM,MAAM,GAAG,CAAC;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;;;ACUA,IAAM,qBAAoE;AAAA,EACxE,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AACV;AAgBA,IAAM,mBAA2D;AAAA,EAC/D,OAAO,EAAE,WAAW,qBAAqB,eAAe,OAAO;AACjE;AAEA,IAAM,kBAAkB,CAAC,UACvB,UAAU,UAAa,SAAS;AAElC,IAAM,gBAAgB,CAAC,UACrB,UAAU,UAAa,SAAS;AAgB3B,IAAM,eAAe,CAAC,UAAmC;AAC9D,MAAI,cAAc,KAAK,GAAG;AACxB,UAAM,EAAE,WAAW,cAAc,IAAI,iBAAiB,KAAK;AAC3D,WAAO,EAAE,OAAO,eAAe,UAAU;AAAA,EAC3C;AAEA,MAAI,gBAAgB,KAAK,GAAG;AAC1B,WAAO,EAAE,OAAO,mBAAmB,KAAK,EAAE;AAAA,EAC5C;AAEA,SAAO,EAAE,MAAM;AACjB;;;AFvEA,IAAAC,iBAAwC;AAkDpC;AApCJ,IAAM,aAAa,CAAC,YAAsD;AACxE,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAASC,SAAQ,OAAsC;AAC5D,QAA+D,YAAvD,QAAM,UAAU,SAAS,OAAO,UA9C1C,IA8CiE,IAAT,iBAAS,IAAT,CAA9C,QAAM,YAAU,WAAS,SAAO;AAExC,QAAM,EAAE,OAAO,YAAY,WAAW,eAAe,QAAI;AAAA,IACvD,MAAM,aAAa,KAAK;AAAA,IACxB,CAAC,KAAK;AAAA,EACR;AAEA,QAAM,gBAAY,sBAAmC,MAAM;AACzD,WAAO,UACH,kBAAkB;AAAA,MAChB,OAAO;AAAA,MACP,OAAO;AAAA,IACT,CAAC,IACD;AAAA,EAEN,GAAG,CAAC,MAAM,OAAO,CAAC;AAElB,SACE;AAAA,IAAC,cAAAC;AAAA,IAAA,iCACK,OADL;AAAA,MAEC,eAAW,kBAAK,gBAAgB,SAAS;AAAA,MACzC,OAAO;AAAA,MACP,MAAM;AAAA,MAEL;AAAA;AAAA,EACH;AAEJ;","names":["Heading","import_themes","Heading","RadixHeading"]}
1
+ {"version":3,"sources":["../../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"],"sourcesContent":["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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,iBAAAA;AAAA,EAAA;AAAA;AAAA;AAAA,oBAGO;AAEP,kBAAqB;AACrB,mBAAwB;;;ACJjB,IAAM,oBAAoB,CAChC,SAC+B;AAC9B,QAAM,EAAC,OAAO,MAAK,IAAI;AACvB,MAAG,OAAO,UAAU,UAAS;AAC3B,WAAO,MAAM,KAAK;AAAA,EACpB;AAAC;AAED,MAAG,OAAO,UAAU,UAAS;AAC3B,UAAM,SAAyC,CAAC;AAChD,QAAI;AACJ,SAAI,OAAO,OAAM;AACf,aAAO,GAAG,IAAI,MAAM,MAAM,GAAG,CAAC;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;;;ACTO,IAAM,aAAa,CAAC,WAAkC;AAAA,EAC3D,SAAS;AAAA,EACT,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,UAAU;AACZ;;;ACPO,IAAM,aAA4B;AAAA,EACvC,YAAY;AAAA,EACZ,oBAAoB;AACtB;;;ACiBA,IAAM,qBAAoE;AAAA,EACxE,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AACV;AAgBA,IAAM,mBAA2D;AAAA,EAC/D,OAAO,EAAE,WAAW,qBAAqB,eAAe,OAAO;AACjE;AAEA,IAAM,kBAAkB,CAAC,UACvB,UAAU,UAAa,SAAS;AAElC,IAAM,gBAAgB,CAAC,UACrB,UAAU,UAAa,SAAS;AAgB3B,IAAM,eAAe,CAAC,UAAmC;AAC9D,MAAI,cAAc,KAAK,GAAG;AACxB,UAAM,EAAE,WAAW,cAAc,IAAI,iBAAiB,KAAK;AAC3D,WAAO,EAAE,OAAO,eAAe,UAAU;AAAA,EAC3C;AAEA,MAAI,gBAAgB,KAAK,GAAG;AAC1B,WAAO,EAAE,OAAO,mBAAmB,KAAK,EAAE;AAAA,EAC5C;AAEA,SAAO,EAAE,MAAM;AACjB;;;AJrEA,IAAAC,iBAAwC;AAgEpC;AA9CJ,IAAM,aAAa,CAAC,YAAsD;AACxE,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAASC,SAAQ,OAAsC;AAC5D,QAUI,YATF;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EA5DJ,IA8DM,IADC,iBACD,IADC;AAAA,IARH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAIF,QAAM,EAAE,OAAO,YAAY,WAAW,eAAe,QAAI;AAAA,IACvD,MAAM,aAAa,KAAK;AAAA,IACxB,CAAC,KAAK;AAAA,EACR;AAEA,QAAM,gBAAY,sBAAmC,MAAM;AACzD,WAAO,UACH,kBAAkB;AAAA,MAChB,OAAO;AAAA,MACP,OAAO;AAAA,IACT,CAAC,IACD;AAAA,EAEN,GAAG,CAAC,MAAM,OAAO,CAAC;AAElB,SACE;AAAA,IAAC,cAAAC;AAAA,IAAA,iCACK,OADL;AAAA,MAEC,eAAW,kBAAK,gBAAgB,SAAS;AAAA,MACzC,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO,iDACD,OAAO,aAAa,OACpB,QAAQ,WAAW,KAAK,IAAI,OAC7B;AAAA,MAGJ;AAAA;AAAA,EACH;AAEJ;","names":["Heading","import_themes","Heading","RadixHeading"]}
@@ -7,6 +7,10 @@ type HeadingVariant = 'heading1' | 'heading2' | 'heading3' | 'heading4' | 'headi
7
7
  type HeadingProps = DistributiveOmit<HeadingProps$1, 'color'> & {
8
8
  variant?: Responsive<HeadingVariant>;
9
9
  color?: UiColor;
10
+ /** 등폭(monospace) 폰트 + 숫자 고정폭 정렬(tabular-nums). 점수·퍼센트 등 수치 표시에 사용한다. */
11
+ mono?: boolean;
12
+ /** 여러 줄 말줄임(line-clamp). 지정한 줄 수까지만 표시하고 넘치면 …로 자른다. */
13
+ clamp?: number;
10
14
  };
11
15
  declare function Heading(props: HeadingProps): React.ReactNode;
12
16
 
@@ -7,6 +7,10 @@ type HeadingVariant = 'heading1' | 'heading2' | 'heading3' | 'heading4' | 'headi
7
7
  type HeadingProps = DistributiveOmit<HeadingProps$1, 'color'> & {
8
8
  variant?: Responsive<HeadingVariant>;
9
9
  color?: UiColor;
10
+ /** 등폭(monospace) 폰트 + 숫자 고정폭 정렬(tabular-nums). 점수·퍼센트 등 수치 표시에 사용한다. */
11
+ mono?: boolean;
12
+ /** 여러 줄 말줄임(line-clamp). 지정한 줄 수까지만 표시하고 넘치면 …로 자른다. */
13
+ clamp?: number;
10
14
  };
11
15
  declare function Heading(props: HeadingProps): React.ReactNode;
12
16
 
@@ -1,8 +1,10 @@
1
1
  import {
2
2
  Heading,
3
3
  Heading2
4
- } from "../chunk-NLHVQJQ2.js";
4
+ } from "../chunk-USGOLLYO.js";
5
5
  import "../chunk-LDBWASUA.js";
6
+ import "../chunk-PO2PBAHW.js";
7
+ import "../chunk-36W7VD2Z.js";
6
8
  import "../chunk-VFQD57ZY.js";
7
9
  import "../chunk-CRTRMMJ7.js";
8
10
  export {
@@ -619,6 +619,21 @@ var mapWithResponsive = (args) => {
619
619
  return value;
620
620
  };
621
621
 
622
+ // src/utils/clamp-style.ts
623
+ var clampStyle = (lines) => ({
624
+ display: "-webkit-box",
625
+ WebkitBoxOrient: "vertical",
626
+ WebkitLineClamp: lines,
627
+ lineClamp: lines,
628
+ overflow: "hidden"
629
+ });
630
+
631
+ // src/utils/mono-style.ts
632
+ var MONO_STYLE = {
633
+ fontFamily: 'var(--code-font-family, ui-monospace, "SF Mono", monospace)',
634
+ fontVariantNumeric: "tabular-nums"
635
+ };
636
+
622
637
  // src/atoms/heading.tsx
623
638
  var import_themes18 = require("@radix-ui/themes");
624
639
  var import_jsx_runtime15 = require("react/jsx-runtime");
@@ -639,7 +654,25 @@ var mapVariant = (variant) => {
639
654
  }
640
655
  };
641
656
  function Heading2(props) {
642
- const _a = props, { size, children, variant, color, className } = _a, rest = __objRest(_a, ["size", "children", "variant", "color", "className"]);
657
+ const _a = props, {
658
+ size,
659
+ children,
660
+ variant,
661
+ color,
662
+ className,
663
+ mono,
664
+ clamp,
665
+ style
666
+ } = _a, rest = __objRest(_a, [
667
+ "size",
668
+ "children",
669
+ "variant",
670
+ "color",
671
+ "className",
672
+ "mono",
673
+ "clamp",
674
+ "style"
675
+ ]);
643
676
  const { color: radixColor, className: colorClassName } = (0, import_react15.useMemo)(
644
677
  () => resolveColor(color),
645
678
  [color]
@@ -656,6 +689,7 @@ function Heading2(props) {
656
689
  className: (0, import_clsx13.clsx)(colorClassName, className),
657
690
  color: radixColor,
658
691
  size: radixSize,
692
+ style: __spreadValues(__spreadValues(__spreadValues({}, mono ? MONO_STYLE : null), clamp ? clampStyle(clamp) : null), style),
659
693
  children
660
694
  })
661
695
  );
@@ -1292,7 +1326,25 @@ var import_react31 = require("react");
1292
1326
  var import_jsx_runtime31 = require("react/jsx-runtime");
1293
1327
  var Typo = (0, import_react31.forwardRef)(
1294
1328
  (props, ref) => {
1295
- const _a = props, { size, variant, children, color, className } = _a, rest = __objRest(_a, ["size", "variant", "children", "color", "className"]);
1329
+ const _a = props, {
1330
+ size,
1331
+ variant,
1332
+ children,
1333
+ color,
1334
+ className,
1335
+ mono,
1336
+ clamp,
1337
+ style
1338
+ } = _a, rest = __objRest(_a, [
1339
+ "size",
1340
+ "variant",
1341
+ "children",
1342
+ "color",
1343
+ "className",
1344
+ "mono",
1345
+ "clamp",
1346
+ "style"
1347
+ ]);
1296
1348
  const { color: radixColor, className: colorClassName } = (0, import_react31.useMemo)(
1297
1349
  () => resolveColor(color),
1298
1350
  [color]
@@ -1322,6 +1374,7 @@ var Typo = (0, import_react31.forwardRef)(
1322
1374
  color: radixColor,
1323
1375
  ref,
1324
1376
  size: radixSize,
1377
+ style: __spreadValues(__spreadValues(__spreadValues({}, mono ? MONO_STYLE : null), clamp ? clampStyle(clamp) : null), style),
1325
1378
  children
1326
1379
  })
1327
1380
  );