@tipp/ui 2.10.2 → 2.10.4

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 +385 -359
  2. package/dist/app/index.cjs.map +1 -1
  3. package/dist/app/index.js +40 -38
  4. package/dist/app/platform/coach-question-list.cjs +58 -35
  5. package/dist/app/platform/coach-question-list.cjs.map +1 -1
  6. package/dist/app/platform/coach-question-list.js +3 -2
  7. package/dist/app/platform/contents-card.cjs +120 -97
  8. package/dist/app/platform/contents-card.cjs.map +1 -1
  9. package/dist/app/platform/contents-card.js +3 -2
  10. package/dist/app/platform/curriculum-card.cjs +39 -16
  11. package/dist/app/platform/curriculum-card.cjs.map +1 -1
  12. package/dist/app/platform/curriculum-card.js +3 -2
  13. package/dist/app/platform/edit-coaching-time.cjs +160 -134
  14. package/dist/app/platform/edit-coaching-time.cjs.map +1 -1
  15. package/dist/app/platform/edit-coaching-time.js +30 -28
  16. package/dist/app/platform/edit-service-type.cjs +152 -126
  17. package/dist/app/platform/edit-service-type.cjs.map +1 -1
  18. package/dist/app/platform/edit-service-type.js +30 -28
  19. package/dist/app/platform/goal-manage-card-edit.cjs +162 -136
  20. package/dist/app/platform/goal-manage-card-edit.cjs.map +1 -1
  21. package/dist/app/platform/goal-manage-card-edit.js +30 -28
  22. package/dist/app/platform/goal-manage-card-read.cjs +88 -65
  23. package/dist/app/platform/goal-manage-card-read.cjs.map +1 -1
  24. package/dist/app/platform/goal-manage-card-read.js +3 -2
  25. package/dist/app/platform/on-offline-radio-card.cjs +303 -277
  26. package/dist/app/platform/on-offline-radio-card.cjs.map +1 -1
  27. package/dist/app/platform/on-offline-radio-card.js +30 -28
  28. package/dist/app/platform/report-card.cjs +61 -38
  29. package/dist/app/platform/report-card.cjs.map +1 -1
  30. package/dist/app/platform/report-card.js +3 -2
  31. package/dist/app/platform/reservation-card.cjs +176 -150
  32. package/dist/app/platform/reservation-card.cjs.map +1 -1
  33. package/dist/app/platform/reservation-card.js +30 -28
  34. package/dist/app/platform/session-card.cjs +205 -179
  35. package/dist/app/platform/session-card.cjs.map +1 -1
  36. package/dist/app/platform/session-card.js +30 -28
  37. package/dist/app/platform/session-review-simple-read.cjs +59 -36
  38. package/dist/app/platform/session-review-simple-read.cjs.map +1 -1
  39. package/dist/app/platform/session-review-simple-read.js +3 -2
  40. package/dist/app/platform/userInfos/coaching-customer-info/index.cjs +92 -69
  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 +7 -6
  43. package/dist/app/platform/userInfos/coaching-customer-info/large.cjs +69 -46
  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 +3 -2
  46. package/dist/app/platform/userInfos/coaching-customer-info/medium.cjs +72 -49
  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 +3 -2
  49. package/dist/app/platform/userInfos/coaching-customer-info/small.cjs +58 -35
  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 +3 -2
  52. package/dist/app/platform/userInfos/session-user-info-detail.cjs +68 -45
  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 +3 -2
  55. package/dist/app/platform/userInfos/utils.cjs +60 -37
  56. package/dist/app/platform/userInfos/utils.cjs.map +1 -1
  57. package/dist/app/platform/userInfos/utils.js +3 -2
  58. package/dist/app/roleplay/index.cjs +460 -389
  59. package/dist/app/roleplay/index.cjs.map +1 -1
  60. package/dist/app/roleplay/index.js +38 -36
  61. package/dist/app/roleplay/parts/analysis-section.cjs +64 -41
  62. package/dist/app/roleplay/parts/analysis-section.cjs.map +1 -1
  63. package/dist/app/roleplay/parts/analysis-section.js +3 -2
  64. package/dist/app/roleplay/parts/coaching-panel.cjs +65 -42
  65. package/dist/app/roleplay/parts/coaching-panel.cjs.map +1 -1
  66. package/dist/app/roleplay/parts/coaching-panel.js +3 -2
  67. package/dist/app/roleplay/parts/content.cjs +385 -314
  68. package/dist/app/roleplay/parts/content.cjs.map +1 -1
  69. package/dist/app/roleplay/parts/content.js +34 -32
  70. package/dist/app/roleplay/parts/header.cjs +83 -60
  71. package/dist/app/roleplay/parts/header.cjs.map +1 -1
  72. package/dist/app/roleplay/parts/header.js +4 -3
  73. package/dist/app/roleplay/parts/score-summary.cjs +77 -54
  74. package/dist/app/roleplay/parts/score-summary.cjs.map +1 -1
  75. package/dist/app/roleplay/parts/score-summary.js +3 -2
  76. package/dist/app/roleplay/parts/score-trend-section.cjs +228 -157
  77. package/dist/app/roleplay/parts/score-trend-section.cjs.map +1 -1
  78. package/dist/app/roleplay/parts/score-trend-section.js +31 -29
  79. package/dist/app/roleplay/parts/script-transcript.cjs +73 -50
  80. package/dist/app/roleplay/parts/script-transcript.cjs.map +1 -1
  81. package/dist/app/roleplay/parts/script-transcript.js +3 -2
  82. package/dist/app/roleplay/parts/section-nav.cjs +94 -71
  83. package/dist/app/roleplay/parts/section-nav.cjs.map +1 -1
  84. package/dist/app/roleplay/parts/section-nav.js +3 -2
  85. package/dist/app/roleplay/parts/session-replay-dialog.cjs +83 -60
  86. package/dist/app/roleplay/parts/session-replay-dialog.cjs.map +1 -1
  87. package/dist/app/roleplay/parts/session-replay-dialog.js +3 -2
  88. package/dist/app/roleplay/parts/speech-share-bar.cjs +60 -37
  89. package/dist/app/roleplay/parts/speech-share-bar.cjs.map +1 -1
  90. package/dist/app/roleplay/parts/speech-share-bar.js +3 -2
  91. package/dist/app/roleplay/parts/step-detail.cjs +78 -55
  92. package/dist/app/roleplay/parts/step-detail.cjs.map +1 -1
  93. package/dist/app/roleplay/parts/step-detail.js +3 -2
  94. package/dist/app/roleplay/parts/step-summary.cjs +78 -55
  95. package/dist/app/roleplay/parts/step-summary.cjs.map +1 -1
  96. package/dist/app/roleplay/parts/step-summary.js +3 -2
  97. package/dist/app/roleplay/rp-session-detail.cjs +460 -389
  98. package/dist/app/roleplay/rp-session-detail.cjs.map +1 -1
  99. package/dist/app/roleplay/rp-session-detail.js +38 -36
  100. package/dist/atoms/index.cjs +82 -59
  101. package/dist/atoms/index.cjs.map +1 -1
  102. package/dist/atoms/index.js +3 -2
  103. package/dist/atoms/pagination.cjs +38 -15
  104. package/dist/atoms/pagination.cjs.map +1 -1
  105. package/dist/atoms/pagination.js +3 -2
  106. package/dist/chunk-2EPKY2VT.js +70 -0
  107. package/dist/chunk-2EPKY2VT.js.map +1 -0
  108. package/dist/chunk-2PPLSZ4P.js +1 -0
  109. package/dist/chunk-5DRITHNR.js +1 -0
  110. package/dist/{chunk-5RIAIE2J.js → chunk-73PHGHPI.js} +5 -2
  111. package/dist/chunk-73PHGHPI.js.map +1 -0
  112. package/dist/{chunk-IIZ7I7NS.js → chunk-AYWCLLQ2.js} +7 -7
  113. package/dist/{chunk-RRC4WFG3.js → chunk-DIFGHMGI.js} +2 -2
  114. package/dist/{chunk-P2H3VCIB.js → chunk-HL3MGRAC.js} +4 -4
  115. package/dist/chunk-IAKMJR72.js +33 -0
  116. package/dist/chunk-IAKMJR72.js.map +1 -0
  117. package/dist/{chunk-YFR3HXSV.js → chunk-IHLFOJD5.js} +2 -2
  118. package/dist/{chunk-A32HLL53.js → chunk-KQ3ME6XY.js} +7 -7
  119. package/dist/{chunk-SZAU7YP3.js → chunk-L7ZHSQES.js} +5 -5
  120. package/dist/{chunk-MD64AUR6.js → chunk-LGILQRJM.js} +8 -8
  121. package/dist/{chunk-FJEDSUGU.js → chunk-NEJCZABQ.js} +7 -7
  122. package/dist/{chunk-NSDVLCCW.js → chunk-RJ62VZ6O.js} +2 -2
  123. package/dist/{chunk-UK3LP7VH.js → chunk-TYM6T7JT.js} +2 -2
  124. package/dist/{chunk-RZW6FVML.js → chunk-UCTSCSQR.js} +2 -2
  125. package/dist/{chunk-JCZXPONS.js → chunk-VBYXXISC.js} +4 -4
  126. package/dist/{chunk-VM2PEQLQ.js → chunk-VJREZH2Z.js} +2 -2
  127. package/dist/chunk-VJREZH2Z.js.map +1 -0
  128. package/dist/icon.cjs +25 -0
  129. package/dist/icon.cjs.map +1 -1
  130. package/dist/icon.d.cts +1 -0
  131. package/dist/icon.d.ts +1 -0
  132. package/dist/icon.js +7 -3
  133. package/dist/icons/empty-box.cjs +90 -0
  134. package/dist/icons/empty-box.cjs.map +1 -0
  135. package/dist/icons/empty-box.d.cts +13 -0
  136. package/dist/icons/empty-box.d.ts +13 -0
  137. package/dist/icons/empty-box.js +8 -0
  138. package/dist/icons/empty-box.js.map +1 -0
  139. package/dist/icons/index.cjs +25 -0
  140. package/dist/icons/index.cjs.map +1 -1
  141. package/dist/icons/index.d.cts +1 -0
  142. package/dist/icons/index.d.ts +1 -0
  143. package/dist/icons/index.js +7 -3
  144. package/dist/index.cjs +959 -884
  145. package/dist/index.cjs.map +1 -1
  146. package/dist/index.d.cts +2 -0
  147. package/dist/index.d.ts +2 -0
  148. package/dist/index.js +62 -54
  149. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.cjs +95 -72
  150. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.cjs.map +1 -1
  151. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +8 -7
  152. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.cjs +29 -6
  153. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.cjs.map +1 -1
  154. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-comp.js +3 -2
  155. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.cjs +71 -48
  156. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.cjs.map +1 -1
  157. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.js +6 -5
  158. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-footer.cjs +32 -9
  159. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-footer.cjs.map +1 -1
  160. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-footer.js +3 -2
  161. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.cjs +41 -18
  162. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.cjs.map +1 -1
  163. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-radio.js +3 -2
  164. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.cjs +33 -10
  165. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.cjs.map +1 -1
  166. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-option.js +3 -2
  167. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.cjs +33 -10
  168. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.cjs.map +1 -1
  169. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-satisfaction-text.js +3 -2
  170. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.cjs +42 -19
  171. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.cjs.map +1 -1
  172. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-text.js +3 -2
  173. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.cjs +37 -14
  174. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.cjs.map +1 -1
  175. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/complete-review.js +3 -2
  176. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.cjs +153 -130
  177. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.cjs.map +1 -1
  178. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +9 -8
  179. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.cjs +45 -22
  180. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.cjs.map +1 -1
  181. package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/start-review.js +3 -2
  182. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.cjs +30 -7
  183. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.cjs.map +1 -1
  184. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-ai-traning.js +3 -2
  185. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.cjs +171 -148
  186. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.cjs.map +1 -1
  187. package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +10 -9
  188. package/dist/molecules/curriculumV2/CurriculumContents/index.cjs +220 -197
  189. package/dist/molecules/curriculumV2/CurriculumContents/index.cjs.map +1 -1
  190. package/dist/molecules/curriculumV2/CurriculumContents/index.js +13 -12
  191. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.cjs +33 -10
  192. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.cjs.map +1 -1
  193. package/dist/molecules/curriculumV2/CurriculumSidebar/Items/section-item.js +3 -2
  194. package/dist/molecules/curriculumV2/CurriculumSidebar/index.cjs +52 -29
  195. package/dist/molecules/curriculumV2/CurriculumSidebar/index.cjs.map +1 -1
  196. package/dist/molecules/curriculumV2/CurriculumSidebar/index.js +7 -6
  197. package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.cjs +44 -21
  198. package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.cjs.map +1 -1
  199. package/dist/molecules/curriculumV2/CurriculumSidebar/sidebar-item.js +6 -5
  200. package/dist/molecules/curriculumV2/curriculum-sub-nav.cjs +36 -13
  201. package/dist/molecules/curriculumV2/curriculum-sub-nav.cjs.map +1 -1
  202. package/dist/molecules/curriculumV2/curriculum-sub-nav.js +3 -2
  203. package/dist/molecules/curriculumV2/index.cjs +264 -241
  204. package/dist/molecules/curriculumV2/index.cjs.map +1 -1
  205. package/dist/molecules/curriculumV2/index.js +21 -20
  206. package/dist/molecules/date-picker/date-picker-button.cjs +52 -29
  207. package/dist/molecules/date-picker/date-picker-button.cjs.map +1 -1
  208. package/dist/molecules/date-picker/date-picker-button.js +3 -2
  209. package/dist/molecules/date-picker/index.cjs +40 -17
  210. package/dist/molecules/date-picker/index.cjs.map +1 -1
  211. package/dist/molecules/date-picker/index.js +3 -2
  212. package/dist/molecules/description-json-render.cjs +31 -8
  213. package/dist/molecules/description-json-render.cjs.map +1 -1
  214. package/dist/molecules/description-json-render.js +3 -2
  215. package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs +138 -115
  216. package/dist/molecules/dynamic-form-editor-field-editor-panel.cjs.map +1 -1
  217. package/dist/molecules/dynamic-form-editor-field-editor-panel.js +3 -2
  218. package/dist/molecules/dynamic-form-editor.cjs +223 -200
  219. package/dist/molecules/dynamic-form-editor.cjs.map +1 -1
  220. package/dist/molecules/dynamic-form-editor.js +5 -4
  221. package/dist/molecules/empty-state.cjs +328 -0
  222. package/dist/molecules/empty-state.cjs.map +1 -0
  223. package/dist/molecules/empty-state.d.cts +21 -0
  224. package/dist/molecules/empty-state.d.ts +21 -0
  225. package/dist/molecules/empty-state.js +16 -0
  226. package/dist/molecules/empty-state.js.map +1 -0
  227. package/dist/molecules/expand-table/index.cjs +193 -58
  228. package/dist/molecules/expand-table/index.cjs.map +1 -1
  229. package/dist/molecules/expand-table/index.js +6 -3
  230. package/dist/molecules/index.cjs +862 -789
  231. package/dist/molecules/index.cjs.map +1 -1
  232. package/dist/molecules/index.d.cts +2 -1
  233. package/dist/molecules/index.d.ts +2 -1
  234. package/dist/molecules/index.js +43 -38
  235. package/dist/molecules/stepper.cjs +43 -20
  236. package/dist/molecules/stepper.cjs.map +1 -1
  237. package/dist/molecules/stepper.js +3 -2
  238. package/dist/molecules/tag-selector.cjs +43 -20
  239. package/dist/molecules/tag-selector.cjs.map +1 -1
  240. package/dist/molecules/tag-selector.js +3 -2
  241. package/dist/molecules/time-select.cjs +28 -5
  242. package/dist/molecules/time-select.cjs.map +1 -1
  243. package/dist/molecules/time-select.js +4 -3
  244. package/dist/utils/curriculum.utils.cjs +23 -0
  245. package/dist/utils/curriculum.utils.cjs.map +1 -1
  246. package/dist/utils/curriculum.utils.js +3 -2
  247. package/dist/utils/get-callout-icon-component.cjs +23 -0
  248. package/dist/utils/get-callout-icon-component.cjs.map +1 -1
  249. package/dist/utils/get-callout-icon-component.js +3 -2
  250. package/dist/utils/index.cjs +23 -0
  251. package/dist/utils/index.cjs.map +1 -1
  252. package/dist/utils/index.js +6 -5
  253. package/package.json +1 -1
  254. package/src/app/roleplay/parts/header.tsx +2 -1
  255. package/src/icons/empty-box.tsx +29 -0
  256. package/src/icons/index.ts +2 -1
  257. package/src/molecules/empty-state.tsx +79 -0
  258. package/src/molecules/expand-table/index.tsx +2 -3
  259. package/src/molecules/index.ts +1 -0
  260. package/dist/chunk-5RIAIE2J.js.map +0 -1
  261. package/dist/chunk-JVXATVAC.js +0 -1
  262. package/dist/chunk-SYMOHU2B.js +0 -1
  263. package/dist/chunk-VM2PEQLQ.js.map +0 -1
  264. /package/dist/{chunk-JVXATVAC.js.map → chunk-2PPLSZ4P.js.map} +0 -0
  265. /package/dist/{chunk-SYMOHU2B.js.map → chunk-5DRITHNR.js.map} +0 -0
  266. /package/dist/{chunk-IIZ7I7NS.js.map → chunk-AYWCLLQ2.js.map} +0 -0
  267. /package/dist/{chunk-RRC4WFG3.js.map → chunk-DIFGHMGI.js.map} +0 -0
  268. /package/dist/{chunk-P2H3VCIB.js.map → chunk-HL3MGRAC.js.map} +0 -0
  269. /package/dist/{chunk-YFR3HXSV.js.map → chunk-IHLFOJD5.js.map} +0 -0
  270. /package/dist/{chunk-A32HLL53.js.map → chunk-KQ3ME6XY.js.map} +0 -0
  271. /package/dist/{chunk-SZAU7YP3.js.map → chunk-L7ZHSQES.js.map} +0 -0
  272. /package/dist/{chunk-MD64AUR6.js.map → chunk-LGILQRJM.js.map} +0 -0
  273. /package/dist/{chunk-FJEDSUGU.js.map → chunk-NEJCZABQ.js.map} +0 -0
  274. /package/dist/{chunk-NSDVLCCW.js.map → chunk-RJ62VZ6O.js.map} +0 -0
  275. /package/dist/{chunk-UK3LP7VH.js.map → chunk-TYM6T7JT.js.map} +0 -0
  276. /package/dist/{chunk-RZW6FVML.js.map → chunk-UCTSCSQR.js.map} +0 -0
  277. /package/dist/{chunk-JCZXPONS.js.map → chunk-VBYXXISC.js.map} +0 -0
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  DynamicFormEditor
3
- } from "../chunk-FJEDSUGU.js";
3
+ } from "../chunk-NEJCZABQ.js";
4
4
  import "../chunk-3DZIX4CE.js";
5
5
  import "../chunk-CBYIPRND.js";
6
+ import "../chunk-Z7WNKARH.js";
6
7
  import "../chunk-D4U2ZV2A.js";
7
8
  import "../chunk-V7KAHLW2.js";
8
9
  import "../chunk-SQ3FYBJT.js";
9
10
  import "../chunk-NK6S7ZMB.js";
10
- import "../chunk-Z7WNKARH.js";
11
11
  import "../chunk-FAL6S2XK.js";
12
12
  import "../chunk-AELKCD6B.js";
13
13
  import "../chunk-5XYPLDI5.js";
@@ -31,7 +31,8 @@ import "../chunk-2LCH3PDF.js";
31
31
  import "../chunk-LQY4RKWI.js";
32
32
  import "../chunk-RP2RGCAW.js";
33
33
  import "../chunk-VOME2TE7.js";
34
- import "../chunk-JVXATVAC.js";
34
+ import "../chunk-2PPLSZ4P.js";
35
+ import "../chunk-2FJ4LW7E.js";
35
36
  import "../chunk-B3VSXNTH.js";
36
37
  import "../chunk-ZQE7SP6P.js";
37
38
  import "../chunk-R6ARPREO.js";
@@ -42,7 +43,7 @@ import "../chunk-QO6KO6MN.js";
42
43
  import "../chunk-5KNRHIIF.js";
43
44
  import "../chunk-6JRAI4G5.js";
44
45
  import "../chunk-776WBOKL.js";
45
- import "../chunk-2FJ4LW7E.js";
46
+ import "../chunk-IAKMJR72.js";
46
47
  import "../chunk-YSYJCYHY.js";
47
48
  import "../chunk-5OM2H6RI.js";
48
49
  import "../chunk-ZUYCXCPW.js";
@@ -0,0 +1,328 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __defProps = Object.defineProperties;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
+ var __getProtoOf = Object.getPrototypeOf;
10
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
11
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
12
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
13
+ var __spreadValues = (a, b) => {
14
+ for (var prop in b || (b = {}))
15
+ if (__hasOwnProp.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ if (__getOwnPropSymbols)
18
+ for (var prop of __getOwnPropSymbols(b)) {
19
+ if (__propIsEnum.call(b, prop))
20
+ __defNormalProp(a, prop, b[prop]);
21
+ }
22
+ return a;
23
+ };
24
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
25
+ var __objRest = (source, exclude) => {
26
+ var target = {};
27
+ for (var prop in source)
28
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
29
+ target[prop] = source[prop];
30
+ if (source != null && __getOwnPropSymbols)
31
+ for (var prop of __getOwnPropSymbols(source)) {
32
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
33
+ target[prop] = source[prop];
34
+ }
35
+ return target;
36
+ };
37
+ var __export = (target, all) => {
38
+ for (var name in all)
39
+ __defProp(target, name, { get: all[name], enumerable: true });
40
+ };
41
+ var __copyProps = (to, from, except, desc) => {
42
+ if (from && typeof from === "object" || typeof from === "function") {
43
+ for (let key of __getOwnPropNames(from))
44
+ if (!__hasOwnProp.call(to, key) && key !== except)
45
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
46
+ }
47
+ return to;
48
+ };
49
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
50
+ // If the importer is in node compatibility mode or this is not an ESM
51
+ // file that has been converted to a CommonJS file using a Babel-
52
+ // compatible transform (i.e. "__esModule" has not been set), then set
53
+ // "default" to the CommonJS "module.exports" for node compatibility.
54
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
55
+ mod
56
+ ));
57
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
58
+
59
+ // src/molecules/empty-state.tsx
60
+ var empty_state_exports = {};
61
+ __export(empty_state_exports, {
62
+ EmptyState: () => EmptyState
63
+ });
64
+ module.exports = __toCommonJS(empty_state_exports);
65
+
66
+ // src/atoms/flex.tsx
67
+ var import_themes = require("@radix-ui/themes");
68
+
69
+ // src/atoms/heading.tsx
70
+ var import_themes2 = require("@radix-ui/themes");
71
+ var import_clsx = require("clsx");
72
+ var import_react = require("react");
73
+
74
+ // src/utils/map-with-responsive.ts
75
+ var mapWithResponsive = (args) => {
76
+ const { value, mapFn } = args;
77
+ if (typeof value === "string") {
78
+ return mapFn(value);
79
+ }
80
+ ;
81
+ if (typeof value === "object") {
82
+ const newObj = {};
83
+ let key;
84
+ for (key in value) {
85
+ newObj[key] = mapFn(value[key]);
86
+ }
87
+ return newObj;
88
+ }
89
+ return value;
90
+ };
91
+
92
+ // src/utils/clamp-style.ts
93
+ var clampStyle = (lines) => ({
94
+ display: "-webkit-box",
95
+ WebkitBoxOrient: "vertical",
96
+ WebkitLineClamp: lines,
97
+ lineClamp: lines,
98
+ overflow: "hidden"
99
+ });
100
+
101
+ // src/utils/mono-style.ts
102
+ var MONO_STYLE = {
103
+ fontFamily: 'var(--code-font-family, ui-monospace, "SF Mono", monospace)',
104
+ fontVariantNumeric: "tabular-nums"
105
+ };
106
+
107
+ // src/utils/resolve-color.ts
108
+ var SEMANTIC_COLOR_MAP = {
109
+ error: "red",
110
+ neutral: "gray",
111
+ success: "green",
112
+ accent: void 0
113
+ };
114
+ var CUSTOM_COLOR_MAP = {
115
+ black: { className: "tipp-accent-black", fallbackColor: "gray" }
116
+ };
117
+ var isSemanticColor = (color) => color !== void 0 && color in SEMANTIC_COLOR_MAP;
118
+ var isCustomColor = (color) => color !== void 0 && color in CUSTOM_COLOR_MAP;
119
+ var resolveColor = (color) => {
120
+ if (isCustomColor(color)) {
121
+ const { className, fallbackColor } = CUSTOM_COLOR_MAP[color];
122
+ return { color: fallbackColor, className };
123
+ }
124
+ if (isSemanticColor(color)) {
125
+ return { color: SEMANTIC_COLOR_MAP[color] };
126
+ }
127
+ return { color };
128
+ };
129
+
130
+ // src/atoms/heading.tsx
131
+ var import_themes3 = require("@radix-ui/themes");
132
+ var import_jsx_runtime = require("react/jsx-runtime");
133
+ var mapVariant = (variant) => {
134
+ switch (variant) {
135
+ case "heading1":
136
+ return "7";
137
+ case "heading2":
138
+ return "6";
139
+ case "heading3":
140
+ return "5";
141
+ case "heading4":
142
+ return "4";
143
+ case "heading5":
144
+ return "3";
145
+ default:
146
+ return void 0;
147
+ }
148
+ };
149
+ function Heading2(props) {
150
+ const _a = props, {
151
+ size,
152
+ children,
153
+ variant,
154
+ color,
155
+ className,
156
+ mono,
157
+ clamp,
158
+ style
159
+ } = _a, rest = __objRest(_a, [
160
+ "size",
161
+ "children",
162
+ "variant",
163
+ "color",
164
+ "className",
165
+ "mono",
166
+ "clamp",
167
+ "style"
168
+ ]);
169
+ const { color: radixColor, className: colorClassName } = (0, import_react.useMemo)(
170
+ () => resolveColor(color),
171
+ [color]
172
+ );
173
+ const radixSize = (0, import_react.useMemo)(() => {
174
+ return variant ? mapWithResponsive({
175
+ value: variant,
176
+ mapFn: mapVariant
177
+ }) : size;
178
+ }, [size, variant]);
179
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
180
+ import_themes2.Heading,
181
+ __spreadProps(__spreadValues({}, rest), {
182
+ className: (0, import_clsx.clsx)(colorClassName, className),
183
+ color: radixColor,
184
+ size: radixSize,
185
+ style: __spreadValues(__spreadValues(__spreadValues({}, mono ? MONO_STYLE : null), clamp ? clampStyle(clamp) : null), style),
186
+ children
187
+ })
188
+ );
189
+ }
190
+
191
+ // src/atoms/typo.tsx
192
+ var import_themes4 = require("@radix-ui/themes");
193
+ var import_clsx2 = require("clsx");
194
+ var import_react2 = require("react");
195
+ var import_jsx_runtime2 = require("react/jsx-runtime");
196
+ var Typo = (0, import_react2.forwardRef)(
197
+ (props, ref) => {
198
+ const _a = props, {
199
+ size,
200
+ variant,
201
+ children,
202
+ color,
203
+ className,
204
+ mono,
205
+ clamp,
206
+ style
207
+ } = _a, rest = __objRest(_a, [
208
+ "size",
209
+ "variant",
210
+ "children",
211
+ "color",
212
+ "className",
213
+ "mono",
214
+ "clamp",
215
+ "style"
216
+ ]);
217
+ const { color: radixColor, className: colorClassName } = (0, import_react2.useMemo)(
218
+ () => resolveColor(color),
219
+ [color]
220
+ );
221
+ const radixSize = (0, import_react2.useMemo)(() => {
222
+ if (size !== void 0) return size;
223
+ if (variant === void 0) return "2";
224
+ return mapWithResponsive({
225
+ value: variant,
226
+ mapFn: (variantValue) => {
227
+ switch (variantValue) {
228
+ case "caption":
229
+ return "1";
230
+ case "subtitle":
231
+ return "3";
232
+ case "body":
233
+ default:
234
+ return "2";
235
+ }
236
+ }
237
+ });
238
+ }, [size, variant]);
239
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
240
+ import_themes4.Text,
241
+ __spreadProps(__spreadValues({}, rest), {
242
+ className: (0, import_clsx2.clsx)(colorClassName, className),
243
+ color: radixColor,
244
+ ref,
245
+ size: radixSize,
246
+ style: __spreadValues(__spreadValues(__spreadValues({}, mono ? MONO_STYLE : null), clamp ? clampStyle(clamp) : null), style),
247
+ children
248
+ })
249
+ );
250
+ }
251
+ );
252
+ Typo.displayName = "Typo";
253
+
254
+ // src/icons/empty-box.tsx
255
+ var React2 = __toESM(require("react"), 1);
256
+ var import_jsx_runtime3 = require("react/jsx-runtime");
257
+ var EmptyBoxIcon = React2.forwardRef(
258
+ (_a, forwardedRef) => {
259
+ var _b = _a, { color = "currentColor", width = 120, height = 120 } = _b, props = __objRest(_b, ["color", "width", "height"]);
260
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
261
+ "svg",
262
+ __spreadProps(__spreadValues({
263
+ fill: color,
264
+ height,
265
+ viewBox: "0 0 462.035 462.035",
266
+ width,
267
+ xmlns: "http://www.w3.org/2000/svg"
268
+ }, props), {
269
+ ref: forwardedRef,
270
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M457.83,158.441c-0.021-0.028-0.033-0.058-0.057-0.087l-50.184-62.48c-0.564-0.701-1.201-1.305-1.879-1.845c-2.16-2.562-5.355-4.225-8.967-4.225H65.292c-3.615,0-6.804,1.661-8.965,4.225c-0.678,0.54-1.316,1.138-1.885,1.845l-50.178,62.48c-0.023,0.029-0.034,0.059-0.057,0.087C1.655,160.602,0,163.787,0,167.39v193.07c0,6.5,5.27,11.771,11.77,11.771h438.496c6.5,0,11.77-5.271,11.77-11.771V167.39C462.037,163.787,460.381,160.602,457.83,158.441z M408.516,134.615l16.873,21.005h-16.873V134.615z M384.975,113.345v42.274H296.84c-2.514,0-4.955,0.805-6.979,2.293l-58.837,43.299l-58.849-43.305c-2.023-1.482-4.466-2.287-6.978-2.287H77.061v-42.274H384.975z M53.523,155.62H36.65l16.873-21.005V155.62z M438.498,348.69H23.54V179.16h137.796l62.711,46.148c4.15,3.046,9.805,3.052,13.954-0.005l62.698-46.144h137.799V348.69L438.498,348.69z" })
271
+ })
272
+ );
273
+ }
274
+ );
275
+ EmptyBoxIcon.displayName = "EmptyBoxIcon";
276
+
277
+ // src/molecules/empty-state.tsx
278
+ var import_jsx_runtime4 = require("react/jsx-runtime");
279
+ var ICON_SIZE = {
280
+ illustration: 120,
281
+ compact: 56
282
+ };
283
+ function EmptyState(_a) {
284
+ var _b = _a, {
285
+ size = "illustration",
286
+ heading,
287
+ body,
288
+ icon
289
+ } = _b, flexProps = __objRest(_b, [
290
+ "size",
291
+ "heading",
292
+ "body",
293
+ "icon"
294
+ ]);
295
+ const isCompact = size === "compact";
296
+ const iconSize = ICON_SIZE[size];
297
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
298
+ import_themes.Flex,
299
+ __spreadProps(__spreadValues({
300
+ align: "center",
301
+ direction: "column",
302
+ gap: isCompact ? "2" : "3",
303
+ justify: "center",
304
+ py: isCompact ? "5" : "9",
305
+ width: "100%"
306
+ }, flexProps), {
307
+ children: [
308
+ icon != null ? icon : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
309
+ EmptyBoxIcon,
310
+ {
311
+ color: "var(--gray-8)",
312
+ height: iconSize,
313
+ width: iconSize
314
+ }
315
+ ),
316
+ heading || body ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_themes.Flex, { align: "center", direction: "column", gap: "1", children: [
317
+ heading ? isCompact ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Typo, { color: "gray", variant: "subtitle", children: heading }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Heading2, { color: "gray", variant: "heading5", children: heading }) : null,
318
+ body ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Typo, { color: "gray", variant: isCompact ? "caption" : "body", children: body }) : null
319
+ ] }) : null
320
+ ]
321
+ })
322
+ );
323
+ }
324
+ // Annotate the CommonJS export names for ESM import in node:
325
+ 0 && (module.exports = {
326
+ EmptyState
327
+ });
328
+ //# sourceMappingURL=empty-state.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/molecules/empty-state.tsx","../../src/atoms/flex.tsx","../../src/atoms/heading.tsx","../../src/utils/map-with-responsive.ts","../../src/utils/clamp-style.ts","../../src/utils/mono-style.ts","../../src/utils/resolve-color.ts","../../src/atoms/typo.tsx","../../src/icons/empty-box.tsx"],"sourcesContent":["import type { FlexProps } from '@/atoms/flex';\nimport { Flex } from '@/atoms/flex';\nimport { Heading } from '@/atoms/heading';\nimport { Typo } from '@/atoms/typo';\nimport * as React from 'react';\nimport { EmptyBoxIcon } from '../icons/empty-box';\n\nexport type EmptyStateSize = 'illustration' | 'compact';\n\nexport type EmptyStateProps = FlexProps & {\n /** 일러스트 크기 — illustration: 페이지 전체용(큰 일러스트), compact: 테이블 셀 등 좁은 곳(작은 일러스트) */\n size?: EmptyStateSize;\n /** 제목 텍스트 */\n heading?: string;\n /** 보조 설명 텍스트 */\n body?: string;\n /** 기본 empty-box 일러스트 대신 사용할 아이콘/이미지 */\n icon?: React.ReactNode;\n};\n\nconst ICON_SIZE: Record<EmptyStateSize, number> = {\n illustration: 120,\n compact: 56,\n};\n\n/**\n * 데이터 없음(빈 상태)을 표시하는 공용 컴포넌트.\n * ExpandTable 등 데이터가 비는 모든 화면에서 공용으로 사용한다.\n */\nexport function EmptyState({\n size = 'illustration',\n heading,\n body,\n icon,\n ...flexProps\n}: EmptyStateProps): React.ReactElement {\n const isCompact = size === 'compact';\n const iconSize = ICON_SIZE[size];\n\n return (\n <Flex\n align=\"center\"\n direction=\"column\"\n gap={isCompact ? '2' : '3'}\n justify=\"center\"\n py={isCompact ? '5' : '9'}\n width=\"100%\"\n {...flexProps}\n >\n {icon ?? (\n <EmptyBoxIcon\n color=\"var(--gray-8)\"\n height={iconSize}\n width={iconSize}\n />\n )}\n {heading || body ? (\n <Flex align=\"center\" direction=\"column\" gap=\"1\">\n {heading ? (\n isCompact ? (\n <Typo color=\"gray\" variant=\"subtitle\">\n {heading}\n </Typo>\n ) : (\n <Heading color=\"gray\" variant=\"heading5\">\n {heading}\n </Heading>\n )\n ) : null}\n {body ? (\n <Typo color=\"gray\" variant={isCompact ? 'caption' : 'body'}>\n {body}\n </Typo>\n ) : null}\n </Flex>\n ) : null}\n </Flex>\n );\n}\n","export { Flex, type FlexProps } from '@radix-ui/themes';\n","import {\n Heading as RadixHeading,\n type HeadingProps as RadixHeadingProps,\n} from '@radix-ui/themes';\nimport type { Responsive } from '@radix-ui/themes/props';\nimport { clsx } from 'clsx';\nimport { useMemo } from 'react';\nimport { mapWithResponsive } from '@/utils/map-with-responsive';\nimport { clampStyle } from '../utils/clamp-style';\nimport { MONO_STYLE } from '../utils/mono-style';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\nexport { Heading as RadixHeading } from '@radix-ui/themes';\ntype HeadingVariant =\n | 'heading1'\n | 'heading2'\n | 'heading3'\n | 'heading4'\n | 'heading5';\nexport type HeadingProps = DistributiveOmit<RadixHeadingProps, 'color'> & {\n variant?: Responsive<HeadingVariant>;\n color?: UiColor;\n /** 등폭(monospace) 폰트 + 숫자 고정폭 정렬(tabular-nums). 점수·퍼센트 등 수치 표시에 사용한다. */\n mono?: boolean;\n /** 여러 줄 말줄임(line-clamp). 지정한 줄 수까지만 표시하고 넘치면 …로 자른다. */\n clamp?: number;\n};\n\ntype HeadingSize = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';\n\nconst mapVariant = (variant?: HeadingVariant): HeadingSize | undefined => {\n switch (variant) {\n case 'heading1':\n return '7';\n case 'heading2':\n return '6';\n case 'heading3':\n return '5';\n case 'heading4':\n return '4';\n case 'heading5':\n return '3';\n default:\n return undefined;\n }\n};\n\nexport function Heading(props: HeadingProps): React.ReactNode {\n const {\n size,\n children,\n variant,\n color,\n className,\n mono,\n clamp,\n style,\n ...rest\n } = props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n const radixSize = useMemo<RadixHeadingProps['size']>(() => {\n return variant\n ? mapWithResponsive({\n value: variant,\n mapFn: mapVariant,\n })\n : size;\n\n }, [size, variant]);\n\n return (\n <RadixHeading\n {...rest}\n className={clsx(colorClassName, className)}\n color={radixColor}\n size={radixSize}\n style={{\n ...(mono ? MONO_STYLE : null),\n ...(clamp ? clampStyle(clamp) : null),\n ...style,\n }}\n >\n {children}\n </RadixHeading>\n );\n}\n","import type { Breakpoint, Responsive } from \"@radix-ui/themes/props\";\n\nexport const mapWithResponsive = <T extends string,K extends string>(\n args: {value: Responsive<T>, mapFn: (value?:T)=>K |undefined}\n): Responsive<K> | undefined => {\n const {value, mapFn} = args;\n if(typeof value === 'string'){\n return mapFn(value);\n };\n \n if(typeof value === 'object'){\n const newObj: Partial<Record<Breakpoint, K>> = {};\n let key: Breakpoint;\n for(key in value){\n newObj[key] = mapFn(value[key]);\n }\n return newObj;\n }\n return value;\n};\n","import type { CSSProperties } from 'react';\n\n/**\n * 여러 줄 말줄임(line-clamp) 스타일. 지정한 줄 수까지만 표시하고 넘치면 `…`로 자른다.\n *\n * Radix의 `truncate`(white-space:nowrap 강제 1줄)와 달리, 줄바꿈을 허용한 뒤\n * `lines` 줄에서 자른다. `Typo`/`Heading`의 `clamp` prop 구현에 사용된다.\n *\n * @param lines - 표시할 최대 줄 수 (1, 2, 3 …)\n */\nexport const clampStyle = (lines: number): CSSProperties => ({\n display: '-webkit-box',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: lines,\n lineClamp: lines,\n overflow: 'hidden',\n});\n","import type { CSSProperties } from 'react';\n\n/**\n * 등폭(monospace) 텍스트 스타일.\n * - `font-family`: 등폭 폰트(`--code-font-family`는 Radix Themes가 제공, 없으면 시스템 등폭으로 폴백)\n * - `font-variant-numeric: tabular-nums`: 숫자를 고정폭으로 정렬해 점수·퍼센트·통계가 자릿수마다 흔들리지 않게 함\n *\n * `Typo`/`Heading`의 `mono` prop 구현에 사용된다.\n */\nexport const MONO_STYLE: CSSProperties = {\n fontFamily: 'var(--code-font-family, ui-monospace, \"SF Mono\", monospace)',\n fontVariantNumeric: 'tabular-nums',\n};\n","import type { BadgeProps as RadixBadgeProps } from '@radix-ui/themes';\n\n/**\n * Radix Themes가 제공하는 accent color union (gray, red, blue, ...).\n * 모든 color 지원 컴포넌트가 동일한 union을 공유하므로 Badge에서 파생한다.\n */\nexport type RadixColor = NonNullable<RadixBadgeProps['color']>;\n\n/** TIPP 시맨틱 color 별칭. */\nexport type SemanticColor = 'error' | 'accent' | 'neutral' | 'success';\n\n/**\n * Radix accent에 대응이 없어 CSS accent override로 처리하는 커스텀 color.\n * (예: black — `style/black.scss`의 `.tipp-accent-black` 참고)\n */\nexport type CustomColor = 'black';\n\n/** color 지원 컴포넌트가 노출하는 통합 color 타입. */\nexport type UiColor = RadixColor | SemanticColor | CustomColor;\n\n/**\n * union 각 멤버에 분배되는 Omit.\n * Radix의 polymorphic 컴포넌트 props(Text/Heading/Link 등 `as`로 분기되는 union)에서\n * 키를 제거할 때 일반 Omit은 union을 단일 객체로 합쳐 `as` 분기를 무너뜨리므로 이 타입을 쓴다.\n */\nexport type DistributiveOmit<T, K extends PropertyKey> = T extends unknown\n ? Omit<T, K>\n : never;\n\nconst SEMANTIC_COLOR_MAP: Record<SemanticColor, RadixColor | undefined> = {\n error: 'red',\n neutral: 'gray',\n success: 'green',\n accent: undefined,\n};\n\ninterface CustomColorConfig {\n /**\n * accent override를 적용할 className.\n */\n className: string;\n /**\n * Radix에 넘길 fallback color.\n * Text/Heading/Link 등은 `color` prop이 있어야 `data-accent-color`가 붙어\n * `--accent-*`를 참조하므로, 유효한 Radix color를 함께 넘긴 뒤 className으로\n * `--accent-*`를 덮어쓴다. (Badge/Button은 prop 없이도 accent 기반이라 무해)\n */\n fallbackColor: RadixColor;\n}\n\nconst CUSTOM_COLOR_MAP: Record<CustomColor, CustomColorConfig> = {\n black: { className: 'tipp-accent-black', fallbackColor: 'gray' },\n};\n\nconst isSemanticColor = (color?: UiColor): color is SemanticColor =>\n color !== undefined && color in SEMANTIC_COLOR_MAP;\n\nconst isCustomColor = (color?: UiColor): color is CustomColor =>\n color !== undefined && color in CUSTOM_COLOR_MAP;\n\nexport interface ResolvedColor {\n /** Radix 컴포넌트의 `color` prop에 그대로 전달할 값. custom color면 undefined. */\n color?: RadixColor;\n /** accent override를 적용하기 위해 요소에 붙일 className. */\n className?: string;\n}\n\n/**\n * 통합 color 입력을 Radix color prop과 className으로 정규화한다.\n *\n * - custom color(black 등): Radix color는 비우고 accent override className을 반환\n * - semantic color(error/neutral/success/accent): 대응 Radix color로 변환\n * - Radix color: 그대로 pass-through\n */\nexport const resolveColor = (color?: UiColor): ResolvedColor => {\n if (isCustomColor(color)) {\n const { className, fallbackColor } = CUSTOM_COLOR_MAP[color];\n return { color: fallbackColor, className };\n }\n\n if (isSemanticColor(color)) {\n return { color: SEMANTIC_COLOR_MAP[color] };\n }\n\n return { color };\n};\n","import type { TextProps as RadixTextProps } from '@radix-ui/themes';\nimport type { Responsive } from '@radix-ui/themes/props';\nimport { Text as RadixText } from '@radix-ui/themes';\nimport { clsx } from 'clsx';\nimport React, { useMemo, forwardRef } from 'react';\nimport { mapWithResponsive } from '@/utils/map-with-responsive';\nimport { clampStyle } from '../utils/clamp-style';\nimport { MONO_STYLE } from '../utils/mono-style';\nimport {\n resolveColor,\n type DistributiveOmit,\n type UiColor,\n} from '../utils/resolve-color';\n\nexport type TypoProps = DistributiveOmit<RadixTextProps, 'color'> & {\n variant?: Responsive<'body' | 'caption' | 'subtitle'>;\n color?: UiColor;\n /** 등폭(monospace) 폰트 + 숫자 고정폭 정렬(tabular-nums). 점수·퍼센트 등 수치 표시에 사용한다. */\n mono?: boolean;\n /** 여러 줄 말줄임(line-clamp). 지정한 줄 수까지만 표시하고 넘치면 …로 자른다. */\n clamp?: number;\n};\n\nexport const Typo = forwardRef<HTMLSpanElement, TypoProps>(\n (props: TypoProps, ref): React.ReactNode => {\n const {\n size,\n variant,\n children,\n color,\n className,\n mono,\n clamp,\n style,\n ...rest\n } = props;\n\n const { color: radixColor, className: colorClassName } = useMemo(\n () => resolveColor(color),\n [color]\n );\n\n const radixSize = useMemo<RadixTextProps['size']>(() => {\n if (size !== undefined) return size;\n\n if (variant === undefined) return '2';\n\n return mapWithResponsive({\n value: variant,\n mapFn: (variantValue?: 'body' | 'caption' | 'subtitle') => {\n switch (variantValue) {\n case 'caption':\n return '1';\n case 'subtitle':\n return '3';\n case 'body':\n default:\n return '2';\n }\n },\n });\n }, [size, variant]);\n\n return (\n <RadixText\n {...rest}\n className={clsx(colorClassName, className)}\n color={radixColor}\n ref={ref}\n size={radixSize}\n style={{\n ...(mono ? MONO_STYLE : null),\n ...(clamp ? clampStyle(clamp) : null),\n ...style,\n }}\n >\n {children}\n </RadixText>\n );\n }\n);\n\nTypo.displayName = 'Typo';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\n/**\n * 빈 상태(데이터 없음)를 나타내는 빈 상자 일러스트.\n * 단색 아이콘이므로 `color`(기본 currentColor)로 색을 지정한다.\n * 크기는 width/height prop으로 조절한다(기본 120).\n *\n * Source: https://www.svgrepo.com/svg/97068/empty-box (License: CC0)\n */\nexport const EmptyBoxIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', width = 120, height = 120, ...props }, forwardedRef) => {\n return (\n <svg\n fill={color}\n height={height}\n viewBox=\"0 0 462.035 462.035\"\n width={width}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <path d=\"M457.83,158.441c-0.021-0.028-0.033-0.058-0.057-0.087l-50.184-62.48c-0.564-0.701-1.201-1.305-1.879-1.845c-2.16-2.562-5.355-4.225-8.967-4.225H65.292c-3.615,0-6.804,1.661-8.965,4.225c-0.678,0.54-1.316,1.138-1.885,1.845l-50.178,62.48c-0.023,0.029-0.034,0.059-0.057,0.087C1.655,160.602,0,163.787,0,167.39v193.07c0,6.5,5.27,11.771,11.77,11.771h438.496c6.5,0,11.77-5.271,11.77-11.771V167.39C462.037,163.787,460.381,160.602,457.83,158.441z M408.516,134.615l16.873,21.005h-16.873V134.615z M384.975,113.345v42.274H296.84c-2.514,0-4.955,0.805-6.979,2.293l-58.837,43.299l-58.849-43.305c-2.023-1.482-4.466-2.287-6.978-2.287H77.061v-42.274H384.975z M53.523,155.62H36.65l16.873-21.005V155.62z M438.498,348.69H23.54V179.16h137.796l62.711,46.148c4.15,3.046,9.805,3.052,13.954-0.005l62.698-46.144h137.799V348.69L438.498,348.69z\" />\n </svg>\n );\n }\n);\n\nEmptyBoxIcon.displayName = 'EmptyBoxIcon';\n"],"mappings":"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","names":["import_themes","import_themes","Heading","RadixHeading","import_themes","import_clsx","import_react","import_jsx_runtime","RadixText","React","import_jsx_runtime","import_jsx_runtime","Heading"]}
@@ -0,0 +1,21 @@
1
+ import { FlexProps } from '@radix-ui/themes';
2
+ import * as React from 'react';
3
+
4
+ type EmptyStateSize = 'illustration' | 'compact';
5
+ type EmptyStateProps = FlexProps & {
6
+ /** 일러스트 크기 — illustration: 페이지 전체용(큰 일러스트), compact: 테이블 셀 등 좁은 곳(작은 일러스트) */
7
+ size?: EmptyStateSize;
8
+ /** 제목 텍스트 */
9
+ heading?: string;
10
+ /** 보조 설명 텍스트 */
11
+ body?: string;
12
+ /** 기본 empty-box 일러스트 대신 사용할 아이콘/이미지 */
13
+ icon?: React.ReactNode;
14
+ };
15
+ /**
16
+ * 데이터 없음(빈 상태)을 표시하는 공용 컴포넌트.
17
+ * ExpandTable 등 데이터가 비는 모든 화면에서 공용으로 사용한다.
18
+ */
19
+ declare function EmptyState({ size, heading, body, icon, ...flexProps }: EmptyStateProps): React.ReactElement;
20
+
21
+ export { EmptyState, type EmptyStateProps, type EmptyStateSize };
@@ -0,0 +1,21 @@
1
+ import { FlexProps } from '@radix-ui/themes';
2
+ import * as React from 'react';
3
+
4
+ type EmptyStateSize = 'illustration' | 'compact';
5
+ type EmptyStateProps = FlexProps & {
6
+ /** 일러스트 크기 — illustration: 페이지 전체용(큰 일러스트), compact: 테이블 셀 등 좁은 곳(작은 일러스트) */
7
+ size?: EmptyStateSize;
8
+ /** 제목 텍스트 */
9
+ heading?: string;
10
+ /** 보조 설명 텍스트 */
11
+ body?: string;
12
+ /** 기본 empty-box 일러스트 대신 사용할 아이콘/이미지 */
13
+ icon?: React.ReactNode;
14
+ };
15
+ /**
16
+ * 데이터 없음(빈 상태)을 표시하는 공용 컴포넌트.
17
+ * ExpandTable 등 데이터가 비는 모든 화면에서 공용으로 사용한다.
18
+ */
19
+ declare function EmptyState({ size, heading, body, icon, ...flexProps }: EmptyStateProps): React.ReactElement;
20
+
21
+ export { EmptyState, type EmptyStateProps, type EmptyStateSize };
@@ -0,0 +1,16 @@
1
+ import {
2
+ EmptyState
3
+ } from "../chunk-2EPKY2VT.js";
4
+ import "../chunk-USGOLLYO.js";
5
+ import "../chunk-L4QQGIYQ.js";
6
+ import "../chunk-LDBWASUA.js";
7
+ import "../chunk-PO2PBAHW.js";
8
+ import "../chunk-36W7VD2Z.js";
9
+ import "../chunk-25HMMI7R.js";
10
+ import "../chunk-IAKMJR72.js";
11
+ import "../chunk-VFQD57ZY.js";
12
+ import "../chunk-CRTRMMJ7.js";
13
+ export {
14
+ EmptyState
15
+ };
16
+ //# sourceMappingURL=empty-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}