@tipp/ui 2.3.33 → 2.3.34

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 (277) hide show
  1. package/dist/app/index.cjs +456 -198
  2. package/dist/app/index.cjs.map +1 -1
  3. package/dist/app/index.js +99 -98
  4. package/dist/app/platform/coach-question-list.cjs +12 -4
  5. package/dist/app/platform/coach-question-list.cjs.map +1 -1
  6. package/dist/app/platform/coach-question-list.js +29 -29
  7. package/dist/app/platform/contents-card.cjs +12 -4
  8. package/dist/app/platform/contents-card.cjs.map +1 -1
  9. package/dist/app/platform/contents-card.js +29 -29
  10. package/dist/app/platform/curriculum-card.js +6 -6
  11. package/dist/app/platform/edit-coaching-time.cjs +286 -28
  12. package/dist/app/platform/edit-coaching-time.cjs.map +1 -1
  13. package/dist/app/platform/edit-coaching-time.js +79 -78
  14. package/dist/app/platform/edit-service-type.cjs +281 -23
  15. package/dist/app/platform/edit-service-type.cjs.map +1 -1
  16. package/dist/app/platform/edit-service-type.js +80 -79
  17. package/dist/app/platform/goal-manage-card-edit.cjs +289 -31
  18. package/dist/app/platform/goal-manage-card-edit.cjs.map +1 -1
  19. package/dist/app/platform/goal-manage-card-edit.js +79 -78
  20. package/dist/app/platform/goal-manage-card-read.cjs +12 -4
  21. package/dist/app/platform/goal-manage-card-read.cjs.map +1 -1
  22. package/dist/app/platform/goal-manage-card-read.js +29 -29
  23. package/dist/app/platform/on-offline-radio-card.cjs +314 -54
  24. package/dist/app/platform/on-offline-radio-card.cjs.map +1 -1
  25. package/dist/app/platform/on-offline-radio-card.js +79 -78
  26. package/dist/app/platform/report-card.cjs +12 -4
  27. package/dist/app/platform/report-card.cjs.map +1 -1
  28. package/dist/app/platform/report-card.js +29 -29
  29. package/dist/app/platform/reservation-card.cjs +305 -47
  30. package/dist/app/platform/reservation-card.cjs.map +1 -1
  31. package/dist/app/platform/reservation-card.js +80 -79
  32. package/dist/app/platform/session-card.cjs +331 -73
  33. package/dist/app/platform/session-card.cjs.map +1 -1
  34. package/dist/app/platform/session-card.js +82 -81
  35. package/dist/app/platform/session-review-simple-read.cjs +12 -4
  36. package/dist/app/platform/session-review-simple-read.cjs.map +1 -1
  37. package/dist/app/platform/session-review-simple-read.js +29 -29
  38. package/dist/app/platform/userInfos/coaching-customer-info/index.cjs +12 -4
  39. package/dist/app/platform/userInfos/coaching-customer-info/index.cjs.map +1 -1
  40. package/dist/app/platform/userInfos/coaching-customer-info/index.js +32 -32
  41. package/dist/app/platform/userInfos/coaching-customer-info/large.cjs +12 -4
  42. package/dist/app/platform/userInfos/coaching-customer-info/large.cjs.map +1 -1
  43. package/dist/app/platform/userInfos/coaching-customer-info/large.js +29 -29
  44. package/dist/app/platform/userInfos/coaching-customer-info/medium.cjs +12 -4
  45. package/dist/app/platform/userInfos/coaching-customer-info/medium.cjs.map +1 -1
  46. package/dist/app/platform/userInfos/coaching-customer-info/medium.js +29 -29
  47. package/dist/app/platform/userInfos/coaching-customer-info/small.cjs +12 -4
  48. package/dist/app/platform/userInfos/coaching-customer-info/small.cjs.map +1 -1
  49. package/dist/app/platform/userInfos/coaching-customer-info/small.js +29 -29
  50. package/dist/app/platform/userInfos/session-user-info-detail.cjs +12 -4
  51. package/dist/app/platform/userInfos/session-user-info-detail.cjs.map +1 -1
  52. package/dist/app/platform/userInfos/session-user-info-detail.js +29 -29
  53. package/dist/app/platform/userInfos/utils.cjs +12 -4
  54. package/dist/app/platform/userInfos/utils.cjs.map +1 -1
  55. package/dist/app/platform/userInfos/utils.js +28 -28
  56. package/dist/atoms/bullet-text.js +2 -2
  57. package/dist/atoms/dialog.js +2 -2
  58. package/dist/atoms/dropdown-menu.cjs +9 -1
  59. package/dist/atoms/dropdown-menu.cjs.map +1 -1
  60. package/dist/atoms/dropdown-menu.d.cts +4 -1
  61. package/dist/atoms/dropdown-menu.d.ts +4 -1
  62. package/dist/atoms/dropdown-menu.js +1 -1
  63. package/dist/atoms/field-error-wrapper.js +2 -2
  64. package/dist/atoms/index.cjs +15 -7
  65. package/dist/atoms/index.cjs.map +1 -1
  66. package/dist/atoms/index.js +62 -62
  67. package/dist/atoms/list.js +2 -2
  68. package/dist/atoms/pagination.js +3 -3
  69. package/dist/{chunk-I5RQ5T4B.js → chunk-24PLAIMJ.js} +12 -12
  70. package/dist/{chunk-SSSGPTRM.js → chunk-3GGJWSFK.js} +9 -9
  71. package/dist/{chunk-M2PVHXOE.js → chunk-3GQQQBJN.js} +4 -4
  72. package/dist/{chunk-SNPAB3HJ.js → chunk-446FD3VT.js} +10 -10
  73. package/dist/{chunk-KD6EXWP7.js → chunk-44VLRAHW.js} +9 -9
  74. package/dist/{chunk-BKYPABII.js → chunk-4N2R7MWQ.js} +5 -5
  75. package/dist/{chunk-5J4YHHVX.js → chunk-52VTWFM6.js} +22 -8
  76. package/dist/chunk-52VTWFM6.js.map +1 -0
  77. package/dist/{chunk-W7TBPRHG.js → chunk-5V6MQUTB.js} +2 -2
  78. package/dist/{chunk-AHXS2MBK.js → chunk-5ZEQ33PC.js} +5 -5
  79. package/dist/{chunk-JFJ3N4V5.js → chunk-7I7PZF5L.js} +2 -2
  80. package/dist/{chunk-MPZJH3PI.js → chunk-7ITDAUWI.js} +10 -10
  81. package/dist/{chunk-YADSNPMG.js → chunk-A7LYIUE7.js} +6 -6
  82. package/dist/{chunk-VK6INFSB.js → chunk-AQVIQODP.js} +4 -4
  83. package/dist/{chunk-VH37R5IH.js → chunk-BEIM5PNA.js} +4 -4
  84. package/dist/{chunk-HWK3UPZ3.js → chunk-BRNYILVO.js} +5 -5
  85. package/dist/{chunk-K3Q4XLCN.js → chunk-CQSM6JCO.js} +4 -4
  86. package/dist/{chunk-B5CKZFDM.js → chunk-D3KCPM4O.js} +4 -4
  87. package/dist/{chunk-3Z2XZ4ZG.js → chunk-DZSRS37B.js} +6 -6
  88. package/dist/{chunk-TTVJOFG5.js → chunk-EGT45N6F.js} +4 -4
  89. package/dist/{chunk-PD7RTFGB.js → chunk-FBFKBV5Y.js} +12 -12
  90. package/dist/{chunk-OHNBVT52.js → chunk-G7NEBNHU.js} +4 -4
  91. package/dist/{chunk-ZFTQ2XBH.js → chunk-GFURX6GB.js} +4 -4
  92. package/dist/{chunk-EWFZXCMV.js → chunk-GGLDVUYU.js} +4 -4
  93. package/dist/{chunk-3JRHAKLV.js → chunk-GMNJ7FMU.js} +10 -10
  94. package/dist/{chunk-NIMLBANB.js → chunk-GTXHAZSU.js} +7 -7
  95. package/dist/{chunk-6HMQEUHX.js → chunk-GZNELGHF.js} +9 -9
  96. package/dist/{chunk-76PNGKCB.js → chunk-HAZBA3RU.js} +4 -4
  97. package/dist/{chunk-GXPEADVY.js → chunk-HOMPMIZJ.js} +7 -7
  98. package/dist/{chunk-SACH3XVV.js → chunk-IEYBSZA3.js} +10 -10
  99. package/dist/{chunk-HLL4QJJY.js → chunk-IK6FGLFU.js} +10 -10
  100. package/dist/{chunk-LFYQFYWO.js → chunk-ILCRQ36E.js} +10 -10
  101. package/dist/{chunk-JRSZNGFD.js → chunk-JZVK4NDF.js} +5 -5
  102. package/dist/{chunk-MIATMZDP.js → chunk-KCCYHT23.js} +4 -4
  103. package/dist/{chunk-GXWE3QNN.js → chunk-KMQIN5PA.js} +5 -5
  104. package/dist/{chunk-GXG26SHU.js → chunk-KMVSJT6Y.js} +8 -8
  105. package/dist/chunk-LSDD4TAP.js +276 -0
  106. package/dist/chunk-LSDD4TAP.js.map +1 -0
  107. package/dist/{chunk-LIV5LHHZ.js → chunk-LT5C6QT7.js} +2 -2
  108. package/dist/{chunk-MFIOT62L.js → chunk-N4Y3QSUQ.js} +4 -4
  109. package/dist/{chunk-3WNHPKHP.js → chunk-NCNYKQU7.js} +7 -7
  110. package/dist/{chunk-BFRNEBJN.js → chunk-NHCUQ25T.js} +5 -5
  111. package/dist/{chunk-FVNXDLRU.js → chunk-O5MYSBA3.js} +2 -2
  112. package/dist/{chunk-XXMZLXDE.js → chunk-OHXP63A5.js} +8 -8
  113. package/dist/{chunk-M6C7IXCB.js → chunk-OXZXUPSB.js} +7 -7
  114. package/dist/{chunk-KCAOUZCT.js → chunk-P4KO43AP.js} +2 -2
  115. package/dist/{chunk-TB3ZF5TJ.js → chunk-P6C6KRXM.js} +5 -5
  116. package/dist/{chunk-6UXCNYVO.js → chunk-PXPGCDNA.js} +4 -4
  117. package/dist/{chunk-RFXVHZAN.js → chunk-QFEZIPWJ.js} +7 -7
  118. package/dist/{chunk-ZVSATS4O.js → chunk-QIAMX2NR.js} +7 -7
  119. package/dist/{chunk-Z34HR7RE.js → chunk-QRI6ARS6.js} +4 -4
  120. package/dist/{chunk-CNW3YEAK.js → chunk-R3WM6HV6.js} +4 -4
  121. package/dist/{chunk-MJMHPIYX.js → chunk-SDEDXT7A.js} +4 -4
  122. package/dist/{chunk-D4U2MCJG.js → chunk-SMLC2O3V.js} +10 -2
  123. package/dist/chunk-SMLC2O3V.js.map +1 -0
  124. package/dist/{chunk-R3ZYNS4D.js → chunk-STBTV3GY.js} +9 -9
  125. package/dist/chunk-SYMOHU2B.js +1 -0
  126. package/dist/{chunk-6TQGX5ZU.js → chunk-TP7DOXLP.js} +2 -2
  127. package/dist/{chunk-3DEAIJBF.js → chunk-UGYH6IXU.js} +15 -15
  128. package/dist/{chunk-5JQOU3IR.js → chunk-UH6Q3TEK.js} +7 -7
  129. package/dist/{chunk-MTGKF6SO.js → chunk-UKV2WNLS.js} +9 -9
  130. package/dist/{chunk-PWTMDEL2.js → chunk-V4XCZSRN.js} +10 -10
  131. package/dist/{chunk-4PYFMD24.js → chunk-VKH2GRVW.js} +2 -2
  132. package/dist/{chunk-SAEPW5JF.js → chunk-VREM33BW.js} +6 -6
  133. package/dist/{chunk-ZOPYFDLO.js → chunk-VRJR534I.js} +4 -4
  134. package/dist/{chunk-JRT6KTBG.js → chunk-WMWXF44S.js} +4 -4
  135. package/dist/{chunk-JIJLOKVN.js → chunk-WV2HN6H4.js} +4 -4
  136. package/dist/{chunk-SLJLEPD2.js → chunk-YDHBTQX4.js} +11 -11
  137. package/dist/{chunk-4QHXYLE4.js → chunk-YE3UDMTZ.js} +10 -10
  138. package/dist/{chunk-CI2XFT7Y.js → chunk-YP3H5H4D.js} +11 -11
  139. package/dist/{chunk-WOAZK56Z.js → chunk-Z7SS2DHW.js} +6 -6
  140. package/dist/context/index.js +5 -5
  141. package/dist/index.cjs +562 -292
  142. package/dist/index.cjs.map +1 -1
  143. package/dist/index.d.cts +1 -0
  144. package/dist/index.d.ts +1 -0
  145. package/dist/index.js +160 -156
  146. package/dist/molecules/autocomplete-textfield.cjs +417 -0
  147. package/dist/molecules/autocomplete-textfield.cjs.map +1 -0
  148. package/dist/molecules/autocomplete-textfield.d.cts +26 -0
  149. package/dist/molecules/autocomplete-textfield.d.ts +26 -0
  150. package/dist/molecules/autocomplete-textfield.js +12 -0
  151. package/dist/molecules/autocomplete-textfield.js.map +1 -0
  152. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +16 -16
  153. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.js +4 -4
  154. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.js +9 -9
  155. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-footer.js +2 -2
  156. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-header.js +3 -3
  157. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-layout.js +2 -2
  158. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.js +5 -5
  159. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.js +5 -5
  160. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.js +5 -5
  161. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.js +5 -5
  162. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.js +4 -4
  163. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +20 -20
  164. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.js +6 -6
  165. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.js +3 -3
  166. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-file-download.js +3 -3
  167. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +22 -22
  168. package/dist/molecules/curriculumV2/CurriculumContents/index.js +27 -27
  169. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/curriculum-item-title.js +2 -2
  170. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.js +4 -4
  171. package/dist/molecules/curriculumV2/CurriculumSidebar/index.js +8 -8
  172. package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.js +5 -5
  173. package/dist/molecules/curriculumV2/curriculum-sub-nav.js +4 -4
  174. package/dist/molecules/curriculumV2/curriculum-v2-layout.js +2 -2
  175. package/dist/molecules/curriculumV2/index.js +34 -34
  176. package/dist/molecules/date-picker/date-picker-button.js +6 -6
  177. package/dist/molecules/date-picker/index.js +5 -5
  178. package/dist/molecules/description-json-render.js +5 -5
  179. package/dist/molecules/download-card.js +2 -2
  180. package/dist/molecules/dynamic-field.js +5 -5
  181. package/dist/molecules/dynamic-form-editor-field-editor-panel.js +4 -4
  182. package/dist/molecules/dynamic-form-editor-field-list-panel.js +3 -3
  183. package/dist/molecules/dynamic-form-editor-issues-panel.js +3 -3
  184. package/dist/molecules/dynamic-form-editor-preview-panel.js +8 -8
  185. package/dist/molecules/dynamic-form-editor.js +15 -15
  186. package/dist/molecules/dynamic-form.js +6 -6
  187. package/dist/molecules/expand-table/index.cjs +12 -2
  188. package/dist/molecules/expand-table/index.cjs.map +1 -1
  189. package/dist/molecules/expand-table/index.d.cts +2 -0
  190. package/dist/molecules/expand-table/index.d.ts +2 -0
  191. package/dist/molecules/expand-table/index.js +4 -4
  192. package/dist/molecules/force-refresh.js +2 -2
  193. package/dist/molecules/ghost-post.js +4 -4
  194. package/dist/molecules/index.cjs +298 -2
  195. package/dist/molecules/index.cjs.map +1 -1
  196. package/dist/molecules/index.d.cts +2 -0
  197. package/dist/molecules/index.d.ts +2 -0
  198. package/dist/molecules/index.js +77 -72
  199. package/dist/molecules/learning-post.js +5 -5
  200. package/dist/molecules/navigation.js +3 -3
  201. package/dist/molecules/one-on-one-guide-list.js +3 -3
  202. package/dist/molecules/stepper.js +4 -4
  203. package/dist/molecules/tag-selector.js +5 -5
  204. package/dist/molecules/training-info-guideline.js +7 -7
  205. package/package.json +1 -1
  206. package/src/atoms/dropdown-menu.tsx +13 -0
  207. package/src/molecules/autocomplete-textfield.tsx +302 -0
  208. package/src/molecules/expand-table/index.tsx +16 -3
  209. package/src/molecules/index.ts +2 -1
  210. package/dist/chunk-5J4YHHVX.js.map +0 -1
  211. package/dist/chunk-D4U2MCJG.js.map +0 -1
  212. package/dist/chunk-YWYYPYBK.js +0 -1
  213. /package/dist/{chunk-I5RQ5T4B.js.map → chunk-24PLAIMJ.js.map} +0 -0
  214. /package/dist/{chunk-SSSGPTRM.js.map → chunk-3GGJWSFK.js.map} +0 -0
  215. /package/dist/{chunk-M2PVHXOE.js.map → chunk-3GQQQBJN.js.map} +0 -0
  216. /package/dist/{chunk-SNPAB3HJ.js.map → chunk-446FD3VT.js.map} +0 -0
  217. /package/dist/{chunk-KD6EXWP7.js.map → chunk-44VLRAHW.js.map} +0 -0
  218. /package/dist/{chunk-BKYPABII.js.map → chunk-4N2R7MWQ.js.map} +0 -0
  219. /package/dist/{chunk-W7TBPRHG.js.map → chunk-5V6MQUTB.js.map} +0 -0
  220. /package/dist/{chunk-AHXS2MBK.js.map → chunk-5ZEQ33PC.js.map} +0 -0
  221. /package/dist/{chunk-JFJ3N4V5.js.map → chunk-7I7PZF5L.js.map} +0 -0
  222. /package/dist/{chunk-MPZJH3PI.js.map → chunk-7ITDAUWI.js.map} +0 -0
  223. /package/dist/{chunk-YADSNPMG.js.map → chunk-A7LYIUE7.js.map} +0 -0
  224. /package/dist/{chunk-VK6INFSB.js.map → chunk-AQVIQODP.js.map} +0 -0
  225. /package/dist/{chunk-VH37R5IH.js.map → chunk-BEIM5PNA.js.map} +0 -0
  226. /package/dist/{chunk-HWK3UPZ3.js.map → chunk-BRNYILVO.js.map} +0 -0
  227. /package/dist/{chunk-K3Q4XLCN.js.map → chunk-CQSM6JCO.js.map} +0 -0
  228. /package/dist/{chunk-B5CKZFDM.js.map → chunk-D3KCPM4O.js.map} +0 -0
  229. /package/dist/{chunk-3Z2XZ4ZG.js.map → chunk-DZSRS37B.js.map} +0 -0
  230. /package/dist/{chunk-TTVJOFG5.js.map → chunk-EGT45N6F.js.map} +0 -0
  231. /package/dist/{chunk-PD7RTFGB.js.map → chunk-FBFKBV5Y.js.map} +0 -0
  232. /package/dist/{chunk-OHNBVT52.js.map → chunk-G7NEBNHU.js.map} +0 -0
  233. /package/dist/{chunk-ZFTQ2XBH.js.map → chunk-GFURX6GB.js.map} +0 -0
  234. /package/dist/{chunk-EWFZXCMV.js.map → chunk-GGLDVUYU.js.map} +0 -0
  235. /package/dist/{chunk-3JRHAKLV.js.map → chunk-GMNJ7FMU.js.map} +0 -0
  236. /package/dist/{chunk-NIMLBANB.js.map → chunk-GTXHAZSU.js.map} +0 -0
  237. /package/dist/{chunk-6HMQEUHX.js.map → chunk-GZNELGHF.js.map} +0 -0
  238. /package/dist/{chunk-76PNGKCB.js.map → chunk-HAZBA3RU.js.map} +0 -0
  239. /package/dist/{chunk-GXPEADVY.js.map → chunk-HOMPMIZJ.js.map} +0 -0
  240. /package/dist/{chunk-SACH3XVV.js.map → chunk-IEYBSZA3.js.map} +0 -0
  241. /package/dist/{chunk-HLL4QJJY.js.map → chunk-IK6FGLFU.js.map} +0 -0
  242. /package/dist/{chunk-LFYQFYWO.js.map → chunk-ILCRQ36E.js.map} +0 -0
  243. /package/dist/{chunk-JRSZNGFD.js.map → chunk-JZVK4NDF.js.map} +0 -0
  244. /package/dist/{chunk-MIATMZDP.js.map → chunk-KCCYHT23.js.map} +0 -0
  245. /package/dist/{chunk-GXWE3QNN.js.map → chunk-KMQIN5PA.js.map} +0 -0
  246. /package/dist/{chunk-GXG26SHU.js.map → chunk-KMVSJT6Y.js.map} +0 -0
  247. /package/dist/{chunk-LIV5LHHZ.js.map → chunk-LT5C6QT7.js.map} +0 -0
  248. /package/dist/{chunk-MFIOT62L.js.map → chunk-N4Y3QSUQ.js.map} +0 -0
  249. /package/dist/{chunk-3WNHPKHP.js.map → chunk-NCNYKQU7.js.map} +0 -0
  250. /package/dist/{chunk-BFRNEBJN.js.map → chunk-NHCUQ25T.js.map} +0 -0
  251. /package/dist/{chunk-FVNXDLRU.js.map → chunk-O5MYSBA3.js.map} +0 -0
  252. /package/dist/{chunk-XXMZLXDE.js.map → chunk-OHXP63A5.js.map} +0 -0
  253. /package/dist/{chunk-M6C7IXCB.js.map → chunk-OXZXUPSB.js.map} +0 -0
  254. /package/dist/{chunk-KCAOUZCT.js.map → chunk-P4KO43AP.js.map} +0 -0
  255. /package/dist/{chunk-TB3ZF5TJ.js.map → chunk-P6C6KRXM.js.map} +0 -0
  256. /package/dist/{chunk-6UXCNYVO.js.map → chunk-PXPGCDNA.js.map} +0 -0
  257. /package/dist/{chunk-RFXVHZAN.js.map → chunk-QFEZIPWJ.js.map} +0 -0
  258. /package/dist/{chunk-ZVSATS4O.js.map → chunk-QIAMX2NR.js.map} +0 -0
  259. /package/dist/{chunk-Z34HR7RE.js.map → chunk-QRI6ARS6.js.map} +0 -0
  260. /package/dist/{chunk-CNW3YEAK.js.map → chunk-R3WM6HV6.js.map} +0 -0
  261. /package/dist/{chunk-MJMHPIYX.js.map → chunk-SDEDXT7A.js.map} +0 -0
  262. /package/dist/{chunk-R3ZYNS4D.js.map → chunk-STBTV3GY.js.map} +0 -0
  263. /package/dist/{chunk-YWYYPYBK.js.map → chunk-SYMOHU2B.js.map} +0 -0
  264. /package/dist/{chunk-6TQGX5ZU.js.map → chunk-TP7DOXLP.js.map} +0 -0
  265. /package/dist/{chunk-3DEAIJBF.js.map → chunk-UGYH6IXU.js.map} +0 -0
  266. /package/dist/{chunk-5JQOU3IR.js.map → chunk-UH6Q3TEK.js.map} +0 -0
  267. /package/dist/{chunk-MTGKF6SO.js.map → chunk-UKV2WNLS.js.map} +0 -0
  268. /package/dist/{chunk-PWTMDEL2.js.map → chunk-V4XCZSRN.js.map} +0 -0
  269. /package/dist/{chunk-4PYFMD24.js.map → chunk-VKH2GRVW.js.map} +0 -0
  270. /package/dist/{chunk-SAEPW5JF.js.map → chunk-VREM33BW.js.map} +0 -0
  271. /package/dist/{chunk-ZOPYFDLO.js.map → chunk-VRJR534I.js.map} +0 -0
  272. /package/dist/{chunk-JRT6KTBG.js.map → chunk-WMWXF44S.js.map} +0 -0
  273. /package/dist/{chunk-JIJLOKVN.js.map → chunk-WV2HN6H4.js.map} +0 -0
  274. /package/dist/{chunk-SLJLEPD2.js.map → chunk-YDHBTQX4.js.map} +0 -0
  275. /package/dist/{chunk-4QHXYLE4.js.map → chunk-YE3UDMTZ.js.map} +0 -0
  276. /package/dist/{chunk-CI2XFT7Y.js.map → chunk-YP3H5H4D.js.map} +0 -0
  277. /package/dist/{chunk-WOAZK56Z.js.map → chunk-Z7SS2DHW.js.map} +0 -0
@@ -0,0 +1,417 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b) => {
12
+ for (var prop in b || (b = {}))
13
+ if (__hasOwnProp.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b)) {
17
+ if (__propIsEnum.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
+ var __objRest = (source, exclude) => {
24
+ var target = {};
25
+ for (var prop in source)
26
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
27
+ target[prop] = source[prop];
28
+ if (source != null && __getOwnPropSymbols)
29
+ for (var prop of __getOwnPropSymbols(source)) {
30
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
31
+ target[prop] = source[prop];
32
+ }
33
+ return target;
34
+ };
35
+ var __export = (target, all) => {
36
+ for (var name in all)
37
+ __defProp(target, name, { get: all[name], enumerable: true });
38
+ };
39
+ var __copyProps = (to, from, except, desc) => {
40
+ if (from && typeof from === "object" || typeof from === "function") {
41
+ for (let key of __getOwnPropNames(from))
42
+ if (!__hasOwnProp.call(to, key) && key !== except)
43
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
44
+ }
45
+ return to;
46
+ };
47
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
48
+
49
+ // src/molecules/autocomplete-textfield.tsx
50
+ var autocomplete_textfield_exports = {};
51
+ __export(autocomplete_textfield_exports, {
52
+ AutocompleteTextfield: () => AutocompleteTextfield
53
+ });
54
+ module.exports = __toCommonJS(autocomplete_textfield_exports);
55
+ var import_react4 = require("react");
56
+ var import_themes4 = require("@radix-ui/themes");
57
+
58
+ // src/atoms/text-field.tsx
59
+ var import_themes = require("@radix-ui/themes");
60
+ var import_react = require("react");
61
+ var import_jsx_runtime = require("react/jsx-runtime");
62
+ var Root = (0, import_react.forwardRef)((props, ref) => {
63
+ const _a = props, { error, style, className } = _a, rest = __objRest(_a, ["error", "style", "className"]);
64
+ const fieldStyle = (0, import_react.useMemo)(() => {
65
+ if (!error) return style;
66
+ const errorStyle = {
67
+ boxShadow: "inset 0 0 0 var(--text-field-border-width) var(--error-11)"
68
+ };
69
+ return __spreadValues(__spreadValues({}, style || {}), errorStyle);
70
+ }, [error, style]);
71
+ const classNameStr = error ? `error ${className}` : className;
72
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
73
+ import_themes.TextField.Root,
74
+ __spreadValues({
75
+ className: classNameStr,
76
+ ref,
77
+ style: fieldStyle
78
+ }, rest)
79
+ );
80
+ });
81
+ Root.displayName = "TextField.Root";
82
+ var TextField = { Root, Slot: import_themes.TextField.Slot };
83
+
84
+ // src/atoms/dropdown-menu.tsx
85
+ var import_themes2 = require("@radix-ui/themes");
86
+ var import_react2 = require("react");
87
+ var import_jsx_runtime2 = require("react/jsx-runtime");
88
+ var Content = (0, import_react2.forwardRef)((props, ref) => {
89
+ const _a = props, { isNavigation, className } = _a, rest = __objRest(_a, ["isNavigation", "className"]);
90
+ const contentClassName = (0, import_react2.useMemo)(() => {
91
+ const cls = isNavigation ? "dropdown-navigation" : "";
92
+ return [cls, className].join(" ");
93
+ }, [isNavigation, className]);
94
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
95
+ import_themes2.DropdownMenu.Content,
96
+ __spreadProps(__spreadValues({
97
+ ref
98
+ }, rest), {
99
+ className: contentClassName
100
+ })
101
+ );
102
+ });
103
+ Content.displayName = "DropdownMenu.Content";
104
+ var Trigger = (0, import_react2.forwardRef)(
105
+ (_a, ref) => {
106
+ var _b = _a, { asChild: _asChild } = _b, props = __objRest(_b, ["asChild"]);
107
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_themes2.DropdownMenu.Trigger, __spreadValues({ ref }, props));
108
+ }
109
+ );
110
+ Trigger.displayName = "DropdownMenu.Trigger";
111
+ var DropdownMenu = __spreadProps(__spreadValues({}, import_themes2.DropdownMenu), {
112
+ Content,
113
+ Trigger
114
+ });
115
+
116
+ // src/atoms/typo.tsx
117
+ var import_themes3 = require("@radix-ui/themes");
118
+ var import_react3 = require("react");
119
+
120
+ // src/utils/map-with-responsive.ts
121
+ var mapWithResponsive = (args) => {
122
+ const { value, mapFn } = args;
123
+ if (typeof value === "string") {
124
+ return mapFn(value);
125
+ }
126
+ ;
127
+ if (typeof value === "object") {
128
+ const newObj = {};
129
+ let key;
130
+ for (key in value) {
131
+ newObj[key] = mapFn(value[key]);
132
+ }
133
+ return newObj;
134
+ }
135
+ return value;
136
+ };
137
+
138
+ // src/atoms/typo.tsx
139
+ var import_jsx_runtime3 = require("react/jsx-runtime");
140
+ var Typo = (0, import_react3.forwardRef)(
141
+ (props, ref) => {
142
+ const _a = props, { size, variant, children } = _a, rest = __objRest(_a, ["size", "variant", "children"]);
143
+ const radixSize = (0, import_react3.useMemo)(() => {
144
+ if (size !== void 0) return size;
145
+ if (variant === void 0) return "2";
146
+ return mapWithResponsive({
147
+ value: variant,
148
+ mapFn: (variantValue) => {
149
+ switch (variantValue) {
150
+ case "caption":
151
+ return "1";
152
+ case "subtitle":
153
+ return "3";
154
+ case "body":
155
+ default:
156
+ return "2";
157
+ }
158
+ }
159
+ });
160
+ }, [size, variant]);
161
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_themes3.Text, __spreadProps(__spreadValues({}, rest), { ref, size: radixSize, children }));
162
+ }
163
+ );
164
+ Typo.displayName = "Typo";
165
+
166
+ // src/molecules/autocomplete-textfield.tsx
167
+ var import_jsx_runtime4 = require("react/jsx-runtime");
168
+ var AutocompleteTextfield = (0, import_react4.forwardRef)(
169
+ (_a, ref) => {
170
+ var _b = _a, {
171
+ options,
172
+ value: externalValue,
173
+ onChange,
174
+ onSelect,
175
+ placeholder,
176
+ emptyMessage = "\uAC80\uC0C9 \uACB0\uACFC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",
177
+ maxItems = 10,
178
+ slotLeft,
179
+ slotRight,
180
+ error
181
+ } = _b, rest = __objRest(_b, [
182
+ "options",
183
+ "value",
184
+ "onChange",
185
+ "onSelect",
186
+ "placeholder",
187
+ "emptyMessage",
188
+ "maxItems",
189
+ "slotLeft",
190
+ "slotRight",
191
+ "error"
192
+ ]);
193
+ const isControlled = externalValue !== void 0;
194
+ const [internalValue, setInternalValue] = (0, import_react4.useState)("");
195
+ const inputValue = isControlled ? externalValue : internalValue;
196
+ const [open, setOpen] = (0, import_react4.useState)(false);
197
+ const [highlightedIndex, setHighlightedIndex] = (0, import_react4.useState)(-1);
198
+ const inputRef = (0, import_react4.useRef)(null);
199
+ const listRef = (0, import_react4.useRef)(null);
200
+ const listboxId = (0, import_react4.useId)();
201
+ const justSelectedRef = (0, import_react4.useRef)(false);
202
+ const filtered = options.filter(
203
+ (opt) => opt.label.toLowerCase().includes(inputValue.toLowerCase())
204
+ ).slice(0, maxItems);
205
+ const handleInputChange = (0, import_react4.useCallback)(
206
+ (e) => {
207
+ const next = e.target.value;
208
+ if (!isControlled) setInternalValue(next);
209
+ onChange == null ? void 0 : onChange(next);
210
+ const nextFiltered = options.filter((opt) => opt.label.toLowerCase().includes(next.toLowerCase())).slice(0, maxItems);
211
+ setOpen(nextFiltered.length > 0 || emptyMessage !== null);
212
+ setHighlightedIndex(-1);
213
+ },
214
+ [isControlled, onChange, options, maxItems, emptyMessage]
215
+ );
216
+ const handleSelect = (0, import_react4.useCallback)(
217
+ (option) => {
218
+ var _a2;
219
+ if (!isControlled) setInternalValue(option.label);
220
+ onChange == null ? void 0 : onChange(option.label);
221
+ onSelect == null ? void 0 : onSelect(option);
222
+ setOpen(false);
223
+ setHighlightedIndex(-1);
224
+ justSelectedRef.current = true;
225
+ (_a2 = inputRef.current) == null ? void 0 : _a2.focus();
226
+ },
227
+ [isControlled, onChange, onSelect]
228
+ );
229
+ const handleFocus = (0, import_react4.useCallback)(() => {
230
+ if (justSelectedRef.current) {
231
+ justSelectedRef.current = false;
232
+ return;
233
+ }
234
+ const currentFiltered = options.filter((opt) => opt.label.toLowerCase().includes(inputValue.toLowerCase())).slice(0, maxItems);
235
+ setOpen(currentFiltered.length > 0 || emptyMessage !== null);
236
+ }, [options, inputValue, maxItems, emptyMessage]);
237
+ const handleBlur = (0, import_react4.useCallback)((e) => {
238
+ var _a2, _b2;
239
+ if (e.relatedTarget && ((_b2 = (_a2 = inputRef.current) == null ? void 0 : _a2.parentElement) == null ? void 0 : _b2.contains(e.relatedTarget))) {
240
+ return;
241
+ }
242
+ setOpen(false);
243
+ setHighlightedIndex(-1);
244
+ }, []);
245
+ const handleKeyDown = (0, import_react4.useCallback)(
246
+ (e) => {
247
+ if (!open) {
248
+ if (e.key === "ArrowDown" || e.key === "ArrowUp") {
249
+ setOpen(true);
250
+ setHighlightedIndex(0);
251
+ e.preventDefault();
252
+ }
253
+ return;
254
+ }
255
+ switch (e.key) {
256
+ case "ArrowDown":
257
+ e.preventDefault();
258
+ setHighlightedIndex(
259
+ (prev) => prev < filtered.length - 1 ? prev + 1 : 0
260
+ );
261
+ break;
262
+ case "ArrowUp":
263
+ e.preventDefault();
264
+ setHighlightedIndex(
265
+ (prev) => prev > 0 ? prev - 1 : filtered.length - 1
266
+ );
267
+ break;
268
+ case "Enter":
269
+ e.preventDefault();
270
+ if (highlightedIndex >= 0 && filtered[highlightedIndex]) {
271
+ handleSelect(filtered[highlightedIndex]);
272
+ }
273
+ break;
274
+ case "Escape":
275
+ setOpen(false);
276
+ setHighlightedIndex(-1);
277
+ break;
278
+ case "Tab":
279
+ setOpen(false);
280
+ setHighlightedIndex(-1);
281
+ break;
282
+ default:
283
+ break;
284
+ }
285
+ },
286
+ [open, filtered, highlightedIndex, handleSelect]
287
+ );
288
+ (0, import_react4.useEffect)(() => {
289
+ if (!listRef.current || highlightedIndex < 0) return;
290
+ const item = listRef.current.children[highlightedIndex];
291
+ item.scrollIntoView({ block: "nearest" });
292
+ }, [highlightedIndex]);
293
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_themes4.Box, { position: "relative", style: { width: "100%" }, children: [
294
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
295
+ TextField.Root,
296
+ __spreadProps(__spreadValues({
297
+ "aria-activedescendant": open && highlightedIndex >= 0 ? `${listboxId}-option-${highlightedIndex}` : void 0,
298
+ "aria-autocomplete": "list",
299
+ "aria-controls": open ? listboxId : void 0,
300
+ "aria-expanded": open,
301
+ error,
302
+ onBlur: handleBlur,
303
+ onChange: handleInputChange,
304
+ onFocus: handleFocus,
305
+ onKeyDown: handleKeyDown,
306
+ placeholder,
307
+ ref: (node) => {
308
+ inputRef.current = node;
309
+ if (typeof ref === "function") {
310
+ ref(node);
311
+ } else if (ref) {
312
+ ref.current = node;
313
+ }
314
+ },
315
+ role: "combobox",
316
+ style: { width: "100%" },
317
+ value: inputValue
318
+ }, rest), {
319
+ children: [
320
+ slotLeft && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(TextField.Slot, { side: "left", children: slotLeft }),
321
+ slotRight && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(TextField.Slot, { side: "right", children: slotRight })
322
+ ]
323
+ })
324
+ ),
325
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
326
+ DropdownMenu.Root,
327
+ {
328
+ modal: false,
329
+ onOpenChange: (nextOpen) => {
330
+ if (!nextOpen && document.activeElement !== inputRef.current) {
331
+ setOpen(false);
332
+ setHighlightedIndex(-1);
333
+ }
334
+ },
335
+ open,
336
+ children: [
337
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(DropdownMenu.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
338
+ "span",
339
+ {
340
+ "aria-hidden": "true",
341
+ style: {
342
+ bottom: 0,
343
+ height: 0,
344
+ left: 0,
345
+ opacity: 0,
346
+ pointerEvents: "none",
347
+ position: "absolute",
348
+ width: "100%"
349
+ }
350
+ }
351
+ ) }),
352
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
353
+ DropdownMenu.Content,
354
+ {
355
+ align: "start",
356
+ onCloseAutoFocus: (e) => {
357
+ e.preventDefault();
358
+ },
359
+ onOpenAutoFocus: (e) => {
360
+ e.preventDefault();
361
+ },
362
+ sideOffset: 4,
363
+ style: {
364
+ maxHeight: 240,
365
+ overflowY: "auto",
366
+ padding: 0,
367
+ width: "var(--radix-dropdown-menu-trigger-width)"
368
+ },
369
+ children: filtered.length === 0 && emptyMessage !== null ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_themes4.Box, { px: "2", py: "2", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Typo, { color: "gray", children: emptyMessage }) }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
370
+ "ul",
371
+ {
372
+ id: listboxId,
373
+ ref: listRef,
374
+ role: "listbox",
375
+ style: { listStyle: "none", margin: 0, padding: 0 },
376
+ children: filtered.map((option, index) => {
377
+ const isHighlighted = index === highlightedIndex;
378
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
379
+ "li",
380
+ {
381
+ "aria-selected": isHighlighted,
382
+ id: `${listboxId}-option-${index}`,
383
+ onMouseEnter: () => {
384
+ setHighlightedIndex(index);
385
+ },
386
+ onPointerDown: (e) => {
387
+ e.preventDefault();
388
+ handleSelect(option);
389
+ },
390
+ role: "option",
391
+ style: {
392
+ padding: "var(--spacing-4) var(--spacing-6)",
393
+ cursor: "pointer",
394
+ backgroundColor: isHighlighted ? "var(--accent-3)" : "transparent",
395
+ transition: "background-color 80ms"
396
+ },
397
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Typo, { variant: "body", children: option.label })
398
+ },
399
+ option.value
400
+ );
401
+ })
402
+ }
403
+ )
404
+ }
405
+ )
406
+ ]
407
+ }
408
+ )
409
+ ] });
410
+ }
411
+ );
412
+ AutocompleteTextfield.displayName = "AutocompleteTextfield";
413
+ // Annotate the CommonJS export names for ESM import in node:
414
+ 0 && (module.exports = {
415
+ AutocompleteTextfield
416
+ });
417
+ //# sourceMappingURL=autocomplete-textfield.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/molecules/autocomplete-textfield.tsx","../../src/atoms/text-field.tsx","../../src/atoms/dropdown-menu.tsx","../../src/atoms/typo.tsx","../../src/utils/map-with-responsive.ts"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { Box } from '@radix-ui/themes';\nimport { TextField, type RootProps as TextFieldRootProps } from '../atoms/text-field';\nimport { DropdownMenu } from '../atoms/dropdown-menu';\nimport { Typo } from '../atoms/typo';\n\nexport interface AutocompleteOption {\n label: string;\n value: string;\n}\n\nexport interface AutocompleteTextfieldProps\n extends Omit<TextFieldRootProps, 'value' | 'onChange' | 'onSelect'> {\n options: AutocompleteOption[];\n value?: string;\n onChange?: (value: string) => void;\n onSelect?: (option: AutocompleteOption) => void;\n placeholder?: string;\n /** 빈 결과일 때 표시할 메시지. null이면 빈 결과 시 드롭다운을 표시하지 않음 */\n emptyMessage?: string | null;\n /** 최대 표시 항목 수 (기본값: 10) */\n maxItems?: number;\n /** TextField 왼쪽 슬롯 (아이콘 등) */\n slotLeft?: React.ReactNode;\n /** TextField 오른쪽 슬롯 (아이콘 등) */\n slotRight?: React.ReactNode;\n}\n\nexport const AutocompleteTextfield = forwardRef<\n HTMLInputElement,\n AutocompleteTextfieldProps\n>(\n (\n {\n options,\n value: externalValue,\n onChange,\n onSelect,\n placeholder,\n emptyMessage = '검색 결과가 없습니다.',\n maxItems = 10,\n slotLeft,\n slotRight,\n error,\n ...rest\n },\n ref\n ): React.ReactElement => {\n const isControlled = externalValue !== undefined;\n const [internalValue, setInternalValue] = useState('');\n const inputValue = isControlled ? externalValue : internalValue;\n\n const [open, setOpen] = useState(false);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const listRef = useRef<HTMLUListElement>(null);\n const listboxId = useId();\n const justSelectedRef = useRef(false);\n\n const filtered = options\n .filter((opt: AutocompleteOption) =>\n opt.label.toLowerCase().includes(inputValue.toLowerCase())\n )\n .slice(0, maxItems);\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const next = e.target.value;\n if (!isControlled) setInternalValue(next);\n onChange?.(next);\n const nextFiltered = options\n .filter((opt) => opt.label.toLowerCase().includes(next.toLowerCase()))\n .slice(0, maxItems);\n setOpen(nextFiltered.length > 0 || emptyMessage !== null);\n setHighlightedIndex(-1);\n },\n [isControlled, onChange, options, maxItems, emptyMessage]\n );\n\n const handleSelect = useCallback(\n (option: AutocompleteOption) => {\n if (!isControlled) setInternalValue(option.label);\n onChange?.(option.label);\n onSelect?.(option);\n setOpen(false);\n setHighlightedIndex(-1);\n justSelectedRef.current = true;\n inputRef.current?.focus();\n },\n [isControlled, onChange, onSelect]\n );\n\n const handleFocus = useCallback(() => {\n if (justSelectedRef.current) {\n justSelectedRef.current = false;\n return;\n }\n const currentFiltered = options\n .filter((opt) => opt.label.toLowerCase().includes(inputValue.toLowerCase()))\n .slice(0, maxItems);\n setOpen(currentFiltered.length > 0 || emptyMessage !== null);\n }, [options, inputValue, maxItems, emptyMessage]);\n\n const handleBlur = useCallback((e: React.FocusEvent<HTMLInputElement>) => {\n // 포커스가 dropdown content 내부로 이동한 경우 닫지 않음\n if (e.relatedTarget && inputRef.current?.parentElement?.contains(e.relatedTarget as Node)) {\n return;\n }\n setOpen(false);\n setHighlightedIndex(-1);\n }, []);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (!open) {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n setOpen(true);\n setHighlightedIndex(0);\n e.preventDefault();\n }\n return;\n }\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n setHighlightedIndex((prev) =>\n prev < filtered.length - 1 ? prev + 1 : 0\n );\n break;\n case 'ArrowUp':\n e.preventDefault();\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : filtered.length - 1\n );\n break;\n case 'Enter':\n e.preventDefault();\n if (highlightedIndex >= 0 && filtered[highlightedIndex]) {\n handleSelect(filtered[highlightedIndex]);\n }\n break;\n case 'Escape':\n setOpen(false);\n setHighlightedIndex(-1);\n break;\n case 'Tab':\n setOpen(false);\n setHighlightedIndex(-1);\n break;\n default:\n break;\n }\n },\n [open, filtered, highlightedIndex, handleSelect]\n );\n\n // 하이라이트 항목을 리스트 뷰에 스크롤\n useEffect(() => {\n if (!listRef.current || highlightedIndex < 0) return;\n const item = listRef.current.children[highlightedIndex];\n (item as HTMLElement).scrollIntoView({ block: 'nearest' });\n }, [highlightedIndex]);\n\n return (\n <Box position=\"relative\" style={{ width: '100%' }}>\n <TextField.Root\n aria-activedescendant={\n open && highlightedIndex >= 0\n ? `${listboxId}-option-${highlightedIndex}`\n : undefined\n }\n aria-autocomplete=\"list\"\n aria-controls={open ? listboxId : undefined}\n aria-expanded={open}\n error={error}\n onBlur={handleBlur}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n ref={(node) => {\n (inputRef as React.MutableRefObject<HTMLInputElement | null>).current =\n node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLInputElement | null>).current =\n node;\n }\n }}\n role=\"combobox\"\n style={{ width: '100%' }}\n value={inputValue}\n {...rest}\n >\n {slotLeft && <TextField.Slot side=\"left\">{slotLeft}</TextField.Slot>}\n {slotRight && <TextField.Slot side=\"right\">{slotRight}</TextField.Slot>}\n </TextField.Root>\n\n {/* DropdownMenu.Trigger는 포지셔닝 앵커 전용으로 사용 (비대화형) */}\n <DropdownMenu.Root\n modal={false}\n onOpenChange={(nextOpen) => {\n if (!nextOpen && document.activeElement !== inputRef.current) {\n setOpen(false);\n setHighlightedIndex(-1);\n }\n }}\n open={open}\n >\n <DropdownMenu.Trigger asChild>\n <span\n aria-hidden=\"true\"\n style={{\n bottom: 0,\n height: 0,\n left: 0,\n opacity: 0,\n pointerEvents: 'none',\n position: 'absolute',\n width: '100%',\n }}\n />\n </DropdownMenu.Trigger>\n\n <DropdownMenu.Content\n align=\"start\"\n onCloseAutoFocus={(e: Event) => {\n e.preventDefault();\n }}\n onOpenAutoFocus={(e: Event) => {\n e.preventDefault();\n }}\n sideOffset={4}\n style={{\n maxHeight: 240,\n overflowY: 'auto',\n padding: 0,\n width: 'var(--radix-dropdown-menu-trigger-width)',\n }}\n >\n {filtered.length === 0 && emptyMessage !== null ? (\n <Box px=\"2\" py=\"2\">\n <Typo color=\"gray\">\n {emptyMessage}\n </Typo>\n </Box>\n ) : (\n <ul\n id={listboxId}\n ref={listRef}\n role=\"listbox\"\n style={{ listStyle: 'none', margin: 0, padding: 0 }}\n >\n {filtered.map((option, index) => {\n const isHighlighted = index === highlightedIndex;\n return (\n <li\n aria-selected={isHighlighted}\n id={`${listboxId}-option-${index}`}\n key={option.value}\n onMouseEnter={() => {\n setHighlightedIndex(index);\n }}\n onPointerDown={(e) => {\n // blur 전에 선택되도록 pointerdown 사용\n e.preventDefault();\n handleSelect(option);\n }}\n role=\"option\"\n style={{\n padding: 'var(--spacing-4) var(--spacing-6)',\n cursor: 'pointer',\n backgroundColor: isHighlighted\n ? 'var(--accent-3)'\n : 'transparent',\n transition: 'background-color 80ms',\n }}\n >\n <Typo variant=\"body\">{option.label}</Typo>\n </li>\n );\n })}\n </ul>\n )}\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </Box>\n );\n }\n);\n\nAutocompleteTextfield.displayName = 'AutocompleteTextfield';\n","import { TextField as RTextField } from '@radix-ui/themes';\nimport { forwardRef, useMemo } from 'react';\n\ntype RSlotProps = RTextField.SlotProps;\n\ntype RootProps = RTextField.RootProps & { error?: boolean };\n\nconst Root = forwardRef<\n HTMLInputElement,\n RTextField.RootProps & { error?: boolean }\n>((props, ref) => {\n const { error, style, className, ...rest } = props;\n\n const fieldStyle = useMemo(() => {\n if (!error) return style;\n const errorStyle = {\n boxShadow: 'inset 0 0 0 var(--text-field-border-width) var(--error-11)',\n };\n\n return { ...(style || {}), ...errorStyle };\n }, [error, style]);\n\n const classNameStr = error ? `error ${className}` : className;\n return (\n <RTextField.Root\n className={classNameStr}\n ref={ref}\n style={fieldStyle}\n {...rest}\n />\n );\n});\n\nRoot.displayName = 'TextField.Root';\n\nconst TextField = { Root, Slot: RTextField.Slot };\n\nexport { TextField };\nexport type { RootProps, RSlotProps as SlotProps };\n","import { DropdownMenu as RadixDropdownMenu } from '@radix-ui/themes';\nimport { forwardRef, useMemo } from 'react';\n\ntype ContentProps = RadixDropdownMenu.ContentProps & {\n isNavigation?: boolean;\n onOpenAutoFocus?: (event: Event) => void;\n};\n\nconst Content = forwardRef<HTMLDivElement, ContentProps>((props, ref) => {\n const { isNavigation, className, ...rest } = props;\n const contentClassName = useMemo(() => {\n const cls = isNavigation ? 'dropdown-navigation' : '';\n return [cls, className].join(' ');\n }, [isNavigation, className]);\n\n return (\n <RadixDropdownMenu.Content\n ref={ref}\n {...rest}\n className={contentClassName}\n />\n );\n});\n\nContent.displayName = 'DropdownMenu.Content';\n\n/** @radix-ui/themes의 DropdownMenu.Trigger는 asChild 타입이 누락되어 있어 별도로 확장 */\ntype TriggerProps = RadixDropdownMenu.TriggerProps & { asChild?: boolean };\n\nconst Trigger = forwardRef<HTMLButtonElement, TriggerProps>(\n ({ asChild: _asChild, ...props }, ref) => (\n <RadixDropdownMenu.Trigger ref={ref} {...props} />\n ),\n);\n\nTrigger.displayName = 'DropdownMenu.Trigger';\n\nexport const DropdownMenu = {\n ...RadixDropdownMenu,\n Content,\n Trigger,\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 React, { useMemo, forwardRef } from 'react';\nimport { mapWithResponsive } from '@/utils/map-with-responsive';\n\nexport type TypoProps = RadixTextProps & {\n variant?: Responsive<'body' | 'caption' | 'subtitle'>;\n};\n\nexport const Typo = forwardRef<HTMLSpanElement, TypoProps>(\n (props: TypoProps, ref): React.ReactNode => {\n const { size, variant, children, ...rest } = props;\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 {...rest} ref={ref} size={radixSize}>\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"],"mappings":"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","names":["import_react","import_themes","RTextField","import_themes","import_react","import_jsx_runtime","RadixDropdownMenu","import_themes","import_react","import_jsx_runtime","RadixText","import_jsx_runtime","_a","_b"]}
@@ -0,0 +1,26 @@
1
+ import React__default from 'react';
2
+ import { RootProps } from '../atoms/text-field.cjs';
3
+ import '@radix-ui/themes';
4
+
5
+ interface AutocompleteOption {
6
+ label: string;
7
+ value: string;
8
+ }
9
+ interface AutocompleteTextfieldProps extends Omit<RootProps, 'value' | 'onChange' | 'onSelect'> {
10
+ options: AutocompleteOption[];
11
+ value?: string;
12
+ onChange?: (value: string) => void;
13
+ onSelect?: (option: AutocompleteOption) => void;
14
+ placeholder?: string;
15
+ /** 빈 결과일 때 표시할 메시지. null이면 빈 결과 시 드롭다운을 표시하지 않음 */
16
+ emptyMessage?: string | null;
17
+ /** 최대 표시 항목 수 (기본값: 10) */
18
+ maxItems?: number;
19
+ /** TextField 왼쪽 슬롯 (아이콘 등) */
20
+ slotLeft?: React__default.ReactNode;
21
+ /** TextField 오른쪽 슬롯 (아이콘 등) */
22
+ slotRight?: React__default.ReactNode;
23
+ }
24
+ declare const AutocompleteTextfield: React__default.ForwardRefExoticComponent<AutocompleteTextfieldProps & React__default.RefAttributes<HTMLInputElement>>;
25
+
26
+ export { type AutocompleteOption, AutocompleteTextfield, type AutocompleteTextfieldProps };
@@ -0,0 +1,26 @@
1
+ import React__default from 'react';
2
+ import { RootProps } from '../atoms/text-field.js';
3
+ import '@radix-ui/themes';
4
+
5
+ interface AutocompleteOption {
6
+ label: string;
7
+ value: string;
8
+ }
9
+ interface AutocompleteTextfieldProps extends Omit<RootProps, 'value' | 'onChange' | 'onSelect'> {
10
+ options: AutocompleteOption[];
11
+ value?: string;
12
+ onChange?: (value: string) => void;
13
+ onSelect?: (option: AutocompleteOption) => void;
14
+ placeholder?: string;
15
+ /** 빈 결과일 때 표시할 메시지. null이면 빈 결과 시 드롭다운을 표시하지 않음 */
16
+ emptyMessage?: string | null;
17
+ /** 최대 표시 항목 수 (기본값: 10) */
18
+ maxItems?: number;
19
+ /** TextField 왼쪽 슬롯 (아이콘 등) */
20
+ slotLeft?: React__default.ReactNode;
21
+ /** TextField 오른쪽 슬롯 (아이콘 등) */
22
+ slotRight?: React__default.ReactNode;
23
+ }
24
+ declare const AutocompleteTextfield: React__default.ForwardRefExoticComponent<AutocompleteTextfieldProps & React__default.RefAttributes<HTMLInputElement>>;
25
+
26
+ export { type AutocompleteOption, AutocompleteTextfield, type AutocompleteTextfieldProps };
@@ -0,0 +1,12 @@
1
+ import {
2
+ AutocompleteTextfield
3
+ } from "../chunk-LSDD4TAP.js";
4
+ import "../chunk-6NPTJBFE.js";
5
+ import "../chunk-SMLC2O3V.js";
6
+ import "../chunk-PMJIFLDT.js";
7
+ import "../chunk-LDBWASUA.js";
8
+ import "../chunk-CRTRMMJ7.js";
9
+ export {
10
+ AutocompleteTextfield
11
+ };
12
+ //# sourceMappingURL=autocomplete-textfield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,34 +1,31 @@
1
1
  import {
2
2
  ReviewQuestion_default
3
- } from "../../../../../chunk-TB3ZF5TJ.js";
4
- import "../../../../../chunk-3WNHPKHP.js";
5
- import "../../../../../chunk-XXMZLXDE.js";
6
- import "../../../../../chunk-76PNGKCB.js";
7
- import "../../../../../chunk-SAEPW5JF.js";
8
- import "../../../../../chunk-VK6INFSB.js";
9
- import "../../../../../chunk-GXG26SHU.js";
10
- import "../../../../../chunk-JFJ3N4V5.js";
11
- import "../../../../../chunk-W7TBPRHG.js";
12
- import "../../../../../chunk-CNW3YEAK.js";
3
+ } from "../../../../../chunk-P6C6KRXM.js";
4
+ import "../../../../../chunk-NCNYKQU7.js";
5
+ import "../../../../../chunk-5V6MQUTB.js";
6
+ import "../../../../../chunk-OHXP63A5.js";
7
+ import "../../../../../chunk-HAZBA3RU.js";
8
+ import "../../../../../chunk-VREM33BW.js";
9
+ import "../../../../../chunk-AQVIQODP.js";
10
+ import "../../../../../chunk-KMVSJT6Y.js";
11
+ import "../../../../../chunk-7I7PZF5L.js";
12
+ import "../../../../../chunk-R3WM6HV6.js";
13
13
  import "../../../../../chunk-GMKRNFH5.js";
14
14
  import "../../../../../chunk-2ISIAPFS.js";
15
15
  import "../../../../../chunk-CSKNBWPB.js";
16
16
  import "../../../../../chunk-5XYPLDI5.js";
17
- import "../../../../../chunk-HYITAA4J.js";
18
- import "../../../../../chunk-365QMK4D.js";
19
17
  import "../../../../../chunk-6IVCARWS.js";
20
18
  import "../../../../../chunk-6DJOIRMF.js";
21
19
  import "../../../../../chunk-FPD73OHW.js";
20
+ import "../../../../../chunk-HYITAA4J.js";
21
+ import "../../../../../chunk-365QMK4D.js";
22
22
  import "../../../../../chunk-EGEQY3KT.js";
23
- import "../../../../../chunk-BESTU2AY.js";
24
- import "../../../../../chunk-4Y5BEXVN.js";
25
- import "../../../../../chunk-PMJIFLDT.js";
26
- import "../../../../../chunk-LDBWASUA.js";
27
23
  import "../../../../../chunk-25HMMI7R.js";
28
24
  import "../../../../../chunk-ZVDAEY5Q.js";
29
25
  import "../../../../../chunk-LQY4RKWI.js";
30
26
  import "../../../../../chunk-B6XJN6EC.js";
31
27
  import "../../../../../chunk-RP2RGCAW.js";
28
+ import "../../../../../chunk-4Y5BEXVN.js";
32
29
  import "../../../../../chunk-DLP4UUNG.js";
33
30
  import "../../../../../chunk-VD7AQ7HK.js";
34
31
  import "../../../../../chunk-ZQE7SP6P.js";
@@ -45,6 +42,9 @@ import "../../../../../chunk-YSYJCYHY.js";
45
42
  import "../../../../../chunk-5OM2H6RI.js";
46
43
  import "../../../../../chunk-ZUYCXCPW.js";
47
44
  import "../../../../../chunk-YVFNJE4E.js";
45
+ import "../../../../../chunk-BESTU2AY.js";
46
+ import "../../../../../chunk-PMJIFLDT.js";
47
+ import "../../../../../chunk-LDBWASUA.js";
48
48
  import "../../../../../chunk-CRTRMMJ7.js";
49
49
  export {
50
50
  ReviewQuestion_default as default
@@ -1,11 +1,9 @@
1
1
  import {
2
2
  ReviewQuestionContentHeader
3
- } from "../../../../../chunk-CNW3YEAK.js";
3
+ } from "../../../../../chunk-R3WM6HV6.js";
4
4
  import "../../../../../chunk-2ISIAPFS.js";
5
- import "../../../../../chunk-4Y5BEXVN.js";
6
- import "../../../../../chunk-PMJIFLDT.js";
7
- import "../../../../../chunk-LDBWASUA.js";
8
5
  import "../../../../../chunk-25HMMI7R.js";
6
+ import "../../../../../chunk-4Y5BEXVN.js";
9
7
  import "../../../../../chunk-DLP4UUNG.js";
10
8
  import "../../../../../chunk-VD7AQ7HK.js";
11
9
  import "../../../../../chunk-ZQE7SP6P.js";
@@ -22,6 +20,8 @@ import "../../../../../chunk-YSYJCYHY.js";
22
20
  import "../../../../../chunk-5OM2H6RI.js";
23
21
  import "../../../../../chunk-ZUYCXCPW.js";
24
22
  import "../../../../../chunk-YVFNJE4E.js";
23
+ import "../../../../../chunk-PMJIFLDT.js";
24
+ import "../../../../../chunk-LDBWASUA.js";
25
25
  import "../../../../../chunk-CRTRMMJ7.js";
26
26
  export {
27
27
  ReviewQuestionContentHeader
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  review_question_body_default
3
- } from "../../../../../chunk-3WNHPKHP.js";
4
- import "../../../../../chunk-XXMZLXDE.js";
5
- import "../../../../../chunk-GXG26SHU.js";
6
- import "../../../../../chunk-JFJ3N4V5.js";
7
- import "../../../../../chunk-W7TBPRHG.js";
8
- import "../../../../../chunk-CNW3YEAK.js";
3
+ } from "../../../../../chunk-NCNYKQU7.js";
4
+ import "../../../../../chunk-5V6MQUTB.js";
5
+ import "../../../../../chunk-OHXP63A5.js";
6
+ import "../../../../../chunk-KMVSJT6Y.js";
7
+ import "../../../../../chunk-7I7PZF5L.js";
8
+ import "../../../../../chunk-R3WM6HV6.js";
9
9
  import "../../../../../chunk-2ISIAPFS.js";
10
10
  import "../../../../../chunk-CSKNBWPB.js";
11
11
  import "../../../../../chunk-5XYPLDI5.js";
@@ -13,14 +13,12 @@ import "../../../../../chunk-6IVCARWS.js";
13
13
  import "../../../../../chunk-6DJOIRMF.js";
14
14
  import "../../../../../chunk-FPD73OHW.js";
15
15
  import "../../../../../chunk-EGEQY3KT.js";
16
- import "../../../../../chunk-4Y5BEXVN.js";
17
- import "../../../../../chunk-PMJIFLDT.js";
18
- import "../../../../../chunk-LDBWASUA.js";
19
16
  import "../../../../../chunk-25HMMI7R.js";
20
17
  import "../../../../../chunk-ZVDAEY5Q.js";
21
18
  import "../../../../../chunk-LQY4RKWI.js";
22
19
  import "../../../../../chunk-B6XJN6EC.js";
23
20
  import "../../../../../chunk-RP2RGCAW.js";
21
+ import "../../../../../chunk-4Y5BEXVN.js";
24
22
  import "../../../../../chunk-DLP4UUNG.js";
25
23
  import "../../../../../chunk-VD7AQ7HK.js";
26
24
  import "../../../../../chunk-ZQE7SP6P.js";
@@ -37,6 +35,8 @@ import "../../../../../chunk-YSYJCYHY.js";
37
35
  import "../../../../../chunk-5OM2H6RI.js";
38
36
  import "../../../../../chunk-ZUYCXCPW.js";
39
37
  import "../../../../../chunk-YVFNJE4E.js";
38
+ import "../../../../../chunk-PMJIFLDT.js";
39
+ import "../../../../../chunk-LDBWASUA.js";
40
40
  import "../../../../../chunk-CRTRMMJ7.js";
41
41
  export {
42
42
  review_question_body_default as default