@ncds/ui-admin 1.8.1 → 1.8.2

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 (438) hide show
  1. package/dist/cjs/src/components/badge/index.js +11 -0
  2. package/dist/cjs/src/components/date-picker/index.js +11 -0
  3. package/dist/cjs/src/components/image-file-input/components/index.js +16 -0
  4. package/dist/cjs/src/components/image-file-input/index.js +11 -0
  5. package/dist/cjs/src/components/progress-bar/components/index.js +27 -0
  6. package/dist/cjs/src/components/progress-bar/hooks/index.js +16 -0
  7. package/dist/cjs/src/components/progress-bar/index.js +33 -0
  8. package/dist/cjs/src/components/select/Select.js +0 -1
  9. package/dist/cjs/src/components/select-dropdown/index.js +11 -7
  10. package/dist/cjs/src/components/switch/index.js +11 -7
  11. package/dist/cjs/src/components/tooltip/Tooltip.js +170 -104
  12. package/dist/cjs/src/hooks/dropdown/index.js +61 -37
  13. package/dist/cjs/src/hooks/index.js +31 -25
  14. package/dist/cjs/vitest.config.js +13 -0
  15. package/dist/esm/src/components/badge/index.js +2 -1
  16. package/dist/esm/src/components/date-picker/index.js +1 -0
  17. package/dist/esm/src/components/empty-state/EmptyState.js +2 -3
  18. package/dist/esm/src/components/image-file-input/components/index.js +1 -0
  19. package/dist/esm/src/components/image-file-input/index.js +2 -1
  20. package/dist/esm/src/components/progress-bar/components/index.js +2 -0
  21. package/dist/esm/src/components/progress-bar/hooks/index.js +1 -0
  22. package/dist/esm/src/components/progress-bar/index.js +4 -1
  23. package/dist/esm/src/components/select/Select.js +0 -1
  24. package/dist/esm/src/components/select-dropdown/index.js +1 -1
  25. package/dist/esm/src/components/switch/index.js +1 -1
  26. package/dist/esm/src/components/tag/Tag.js +2 -3
  27. package/dist/esm/src/components/tooltip/Tooltip.js +172 -106
  28. package/dist/esm/src/hooks/dropdown/index.js +6 -6
  29. package/dist/esm/src/hooks/index.js +3 -3
  30. package/dist/esm/src/types/component-meta.js +2 -0
  31. package/dist/esm/vitest.config.js +7 -0
  32. package/dist/temp/src/components/badge/index.d.ts +1 -0
  33. package/dist/temp/src/components/badge/index.js +1 -0
  34. package/dist/temp/src/components/date-picker/index.d.ts +1 -0
  35. package/dist/temp/src/components/date-picker/index.js +1 -0
  36. package/dist/temp/src/components/empty-state/EmptyState.d.ts +3 -5
  37. package/dist/temp/src/components/empty-state/EmptyState.js +1 -2
  38. package/dist/temp/src/components/image-file-input/components/index.d.ts +1 -0
  39. package/dist/temp/src/components/image-file-input/components/index.js +1 -0
  40. package/dist/temp/src/components/image-file-input/index.d.ts +1 -0
  41. package/dist/temp/src/components/image-file-input/index.js +1 -0
  42. package/dist/temp/src/components/progress-bar/components/index.d.ts +2 -0
  43. package/dist/temp/src/components/progress-bar/components/index.js +2 -0
  44. package/dist/temp/src/components/progress-bar/hooks/index.d.ts +1 -0
  45. package/dist/temp/src/components/progress-bar/hooks/index.js +1 -0
  46. package/dist/temp/src/components/progress-bar/index.d.ts +3 -0
  47. package/dist/temp/src/components/progress-bar/index.js +3 -0
  48. package/dist/temp/src/components/select/Select.js +1 -1
  49. package/dist/temp/src/components/select-dropdown/index.d.ts +1 -1
  50. package/dist/temp/src/components/select-dropdown/index.js +1 -1
  51. package/dist/temp/src/components/spinner/Spinner.d.ts +1 -2
  52. package/dist/temp/src/components/switch/index.d.ts +1 -2
  53. package/dist/temp/src/components/switch/index.js +1 -1
  54. package/dist/temp/src/components/tag/Tag.d.ts +3 -5
  55. package/dist/temp/src/components/tag/Tag.js +1 -2
  56. package/dist/temp/src/components/tooltip/Tooltip.d.ts +4 -2
  57. package/dist/temp/src/components/tooltip/Tooltip.js +126 -68
  58. package/dist/temp/src/hooks/dropdown/index.d.ts +6 -6
  59. package/dist/temp/src/hooks/dropdown/index.js +6 -6
  60. package/dist/temp/src/hooks/index.d.ts +3 -3
  61. package/dist/temp/src/hooks/index.js +3 -3
  62. package/dist/temp/src/types/component-meta.d.ts +26 -0
  63. package/dist/temp/src/types/component-meta.js +2 -0
  64. package/dist/temp/src/types/dropdown/option.d.ts +2 -4
  65. package/dist/temp/src/types/side-slot.d.ts +9 -1
  66. package/dist/temp/vitest.config.d.ts +2 -0
  67. package/dist/temp/vitest.config.js +7 -0
  68. package/dist/types/src/components/badge/index.d.ts +1 -0
  69. package/dist/types/src/components/date-picker/index.d.ts +1 -0
  70. package/dist/types/src/components/empty-state/EmptyState.d.ts +3 -5
  71. package/dist/types/src/components/image-file-input/components/index.d.ts +1 -0
  72. package/dist/types/src/components/image-file-input/index.d.ts +1 -0
  73. package/dist/types/src/components/progress-bar/components/index.d.ts +2 -0
  74. package/dist/types/src/components/progress-bar/hooks/index.d.ts +1 -0
  75. package/dist/types/src/components/progress-bar/index.d.ts +3 -0
  76. package/dist/types/src/components/select-dropdown/index.d.ts +1 -1
  77. package/dist/types/src/components/spinner/Spinner.d.ts +1 -2
  78. package/dist/types/src/components/switch/index.d.ts +1 -2
  79. package/dist/types/src/components/tag/Tag.d.ts +3 -5
  80. package/dist/types/src/components/tooltip/Tooltip.d.ts +4 -2
  81. package/dist/types/src/hooks/dropdown/index.d.ts +6 -6
  82. package/dist/types/src/hooks/index.d.ts +3 -3
  83. package/dist/types/src/types/component-meta.d.ts +26 -0
  84. package/dist/types/src/types/dropdown/option.d.ts +2 -4
  85. package/dist/types/src/types/side-slot.d.ts +9 -1
  86. package/dist/types/vitest.config.d.ts +2 -0
  87. package/dist/ui-admin/assets/styles/style.css +18 -7
  88. package/package.json +6 -1
  89. package/dist/cjs/assets/scripts/baseBox.js +0 -146
  90. package/dist/cjs/assets/scripts/comboBox.js +0 -137
  91. package/dist/cjs/assets/scripts/datePicker.js +0 -671
  92. package/dist/cjs/assets/scripts/featuredIcon.js +0 -87
  93. package/dist/cjs/assets/scripts/fileInput/const/classNames.js +0 -25
  94. package/dist/cjs/assets/scripts/fileInput/const/index.js +0 -27
  95. package/dist/cjs/assets/scripts/fileInput/const/types.js +0 -13
  96. package/dist/cjs/assets/scripts/fileInput/fileInput.js +0 -78
  97. package/dist/cjs/assets/scripts/fileInput/fileInputModel.js +0 -53
  98. package/dist/cjs/assets/scripts/fileInput/fileInputView.js +0 -152
  99. package/dist/cjs/assets/scripts/fileInput/index.js +0 -44
  100. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInput.js +0 -184
  101. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -222
  102. package/dist/cjs/assets/scripts/imageFileInput/ImageFileInputView.js +0 -356
  103. package/dist/cjs/assets/scripts/imageFileInput/const/classNames.js +0 -31
  104. package/dist/cjs/assets/scripts/imageFileInput/const/index.js +0 -27
  105. package/dist/cjs/assets/scripts/imageFileInput/const/types.js +0 -13
  106. package/dist/cjs/assets/scripts/imageFileInput/index.js +0 -44
  107. package/dist/cjs/assets/scripts/index.js +0 -32
  108. package/dist/cjs/assets/scripts/modal/Modal.js +0 -104
  109. package/dist/cjs/assets/scripts/modal/ModalActions.js +0 -116
  110. package/dist/cjs/assets/scripts/modal/ModalContent.js +0 -46
  111. package/dist/cjs/assets/scripts/modal/ModalHeader.js +0 -104
  112. package/dist/cjs/assets/scripts/modal/const/classNames.js +0 -33
  113. package/dist/cjs/assets/scripts/modal/const/index.js +0 -27
  114. package/dist/cjs/assets/scripts/modal/index.js +0 -61
  115. package/dist/cjs/assets/scripts/modal/utils/contentUtils.js +0 -35
  116. package/dist/cjs/assets/scripts/notification/FloatingNotification.js +0 -178
  117. package/dist/cjs/assets/scripts/notification/FullWidthNotification.js +0 -132
  118. package/dist/cjs/assets/scripts/notification/MessageNotification.js +0 -159
  119. package/dist/cjs/assets/scripts/notification/Notification.js +0 -101
  120. package/dist/cjs/assets/scripts/notification/const/classNames.js +0 -50
  121. package/dist/cjs/assets/scripts/notification/const/icons.js +0 -31
  122. package/dist/cjs/assets/scripts/notification/const/index.js +0 -87
  123. package/dist/cjs/assets/scripts/notification/const/sizes.js +0 -46
  124. package/dist/cjs/assets/scripts/notification/const/types.js +0 -14
  125. package/dist/cjs/assets/scripts/notification/index.js +0 -92
  126. package/dist/cjs/assets/scripts/notification/utils.js +0 -97
  127. package/dist/cjs/assets/scripts/progress-bar/ProgressBar.js +0 -271
  128. package/dist/cjs/assets/scripts/progress-bar/index.js +0 -12
  129. package/dist/cjs/assets/scripts/selectBox.js +0 -169
  130. package/dist/cjs/assets/scripts/shared/ButtonCloseX.js +0 -45
  131. package/dist/cjs/assets/scripts/tab.js +0 -40
  132. package/dist/cjs/assets/scripts/table/Table.js +0 -377
  133. package/dist/cjs/assets/scripts/table/const/classNames.js +0 -33
  134. package/dist/cjs/assets/scripts/table/const/index.js +0 -27
  135. package/dist/cjs/assets/scripts/table/const/types.js +0 -5
  136. package/dist/cjs/assets/scripts/table/index.js +0 -43
  137. package/dist/cjs/assets/scripts/tag/Tag.js +0 -261
  138. package/dist/cjs/assets/scripts/tag/const/classNames.js +0 -20
  139. package/dist/cjs/assets/scripts/tag/const/index.js +0 -38
  140. package/dist/cjs/assets/scripts/tag/const/sizes.js +0 -13
  141. package/dist/cjs/assets/scripts/tag/const/types.js +0 -5
  142. package/dist/cjs/assets/scripts/tag/index.js +0 -44
  143. package/dist/cjs/assets/scripts/tooltip/Tooltip.js +0 -353
  144. package/dist/cjs/assets/scripts/tooltip/TooltipLayerManager.js +0 -82
  145. package/dist/cjs/assets/scripts/tooltip/const/classNames.js +0 -29
  146. package/dist/cjs/assets/scripts/tooltip/const/constants.js +0 -56
  147. package/dist/cjs/assets/scripts/tooltip/const/icons.js +0 -15
  148. package/dist/cjs/assets/scripts/tooltip/const/index.js +0 -123
  149. package/dist/cjs/assets/scripts/tooltip/const/templates.js +0 -66
  150. package/dist/cjs/assets/scripts/tooltip/const/types.js +0 -5
  151. package/dist/cjs/assets/scripts/tooltip/index.js +0 -57
  152. package/dist/cjs/assets/scripts/tooltip/utils.js +0 -40
  153. package/dist/cjs/assets/scripts/utils/debounce.js +0 -32
  154. package/dist/cjs/assets/scripts/utils/unifiedBox/domRenderer.js +0 -370
  155. package/dist/cjs/assets/scripts/utils/unifiedBox/dropdownModel.js +0 -285
  156. package/dist/cjs/assets/scripts/utils/unifiedBox/unifiedBoxController.js +0 -622
  157. package/dist/cjs/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +0 -473
  158. package/dist/esm/assets/scripts/baseBox.js +0 -139
  159. package/dist/esm/assets/scripts/comboBox.js +0 -130
  160. package/dist/esm/assets/scripts/datePicker.js +0 -663
  161. package/dist/esm/assets/scripts/featuredIcon.js +0 -80
  162. package/dist/esm/assets/scripts/fileInput/const/classNames.js +0 -16
  163. package/dist/esm/assets/scripts/fileInput/const/index.js +0 -2
  164. package/dist/esm/assets/scripts/fileInput/const/types.js +0 -7
  165. package/dist/esm/assets/scripts/fileInput/fileInput.js +0 -71
  166. package/dist/esm/assets/scripts/fileInput/fileInputModel.js +0 -46
  167. package/dist/esm/assets/scripts/fileInput/fileInputView.js +0 -145
  168. package/dist/esm/assets/scripts/fileInput/index.js +0 -9
  169. package/dist/esm/assets/scripts/imageFileInput/ImageFileInput.js +0 -177
  170. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -215
  171. package/dist/esm/assets/scripts/imageFileInput/ImageFileInputView.js +0 -349
  172. package/dist/esm/assets/scripts/imageFileInput/const/classNames.js +0 -20
  173. package/dist/esm/assets/scripts/imageFileInput/const/index.js +0 -2
  174. package/dist/esm/assets/scripts/imageFileInput/const/types.js +0 -7
  175. package/dist/esm/assets/scripts/imageFileInput/index.js +0 -9
  176. package/dist/esm/assets/scripts/index.js +0 -30
  177. package/dist/esm/assets/scripts/modal/Modal.js +0 -98
  178. package/dist/esm/assets/scripts/modal/ModalActions.js +0 -109
  179. package/dist/esm/assets/scripts/modal/ModalContent.js +0 -39
  180. package/dist/esm/assets/scripts/modal/ModalHeader.js +0 -97
  181. package/dist/esm/assets/scripts/modal/const/classNames.js +0 -23
  182. package/dist/esm/assets/scripts/modal/const/index.js +0 -2
  183. package/dist/esm/assets/scripts/modal/const/types.js +0 -1
  184. package/dist/esm/assets/scripts/modal/index.js +0 -15
  185. package/dist/esm/assets/scripts/modal/utils/contentUtils.js +0 -28
  186. package/dist/esm/assets/scripts/notification/FloatingNotification.js +0 -172
  187. package/dist/esm/assets/scripts/notification/FullWidthNotification.js +0 -125
  188. package/dist/esm/assets/scripts/notification/MessageNotification.js +0 -152
  189. package/dist/esm/assets/scripts/notification/Notification.js +0 -94
  190. package/dist/esm/assets/scripts/notification/const/classNames.js +0 -44
  191. package/dist/esm/assets/scripts/notification/const/icons.js +0 -25
  192. package/dist/esm/assets/scripts/notification/const/index.js +0 -4
  193. package/dist/esm/assets/scripts/notification/const/sizes.js +0 -40
  194. package/dist/esm/assets/scripts/notification/const/types.js +0 -8
  195. package/dist/esm/assets/scripts/notification/index.js +0 -11
  196. package/dist/esm/assets/scripts/notification/utils.js +0 -84
  197. package/dist/esm/assets/scripts/progress-bar/ProgressBar.js +0 -264
  198. package/dist/esm/assets/scripts/progress-bar/index.js +0 -1
  199. package/dist/esm/assets/scripts/selectBox.js +0 -162
  200. package/dist/esm/assets/scripts/shared/ButtonCloseX.js +0 -37
  201. package/dist/esm/assets/scripts/tab.js +0 -33
  202. package/dist/esm/assets/scripts/table/Table.js +0 -370
  203. package/dist/esm/assets/scripts/table/const/classNames.js +0 -27
  204. package/dist/esm/assets/scripts/table/const/index.js +0 -2
  205. package/dist/esm/assets/scripts/table/const/types.js +0 -1
  206. package/dist/esm/assets/scripts/table/index.js +0 -8
  207. package/dist/esm/assets/scripts/tag/Tag.js +0 -254
  208. package/dist/esm/assets/scripts/tag/const/classNames.js +0 -12
  209. package/dist/esm/assets/scripts/tag/const/index.js +0 -3
  210. package/dist/esm/assets/scripts/tag/const/sizes.js +0 -7
  211. package/dist/esm/assets/scripts/tag/const/types.js +0 -1
  212. package/dist/esm/assets/scripts/tag/index.js +0 -9
  213. package/dist/esm/assets/scripts/tooltip/Tooltip.js +0 -346
  214. package/dist/esm/assets/scripts/tooltip/TooltipLayerManager.js +0 -75
  215. package/dist/esm/assets/scripts/tooltip/const/classNames.js +0 -23
  216. package/dist/esm/assets/scripts/tooltip/const/constants.js +0 -50
  217. package/dist/esm/assets/scripts/tooltip/const/icons.js +0 -9
  218. package/dist/esm/assets/scripts/tooltip/const/index.js +0 -4
  219. package/dist/esm/assets/scripts/tooltip/const/templates.js +0 -59
  220. package/dist/esm/assets/scripts/tooltip/const/types.js +0 -1
  221. package/dist/esm/assets/scripts/tooltip/index.js +0 -10
  222. package/dist/esm/assets/scripts/tooltip/utils.js +0 -34
  223. package/dist/esm/assets/scripts/utils/debounce.js +0 -26
  224. package/dist/esm/assets/scripts/utils/unifiedBox/domRenderer.js +0 -363
  225. package/dist/esm/assets/scripts/utils/unifiedBox/dropdownModel.js +0 -279
  226. package/dist/esm/assets/scripts/utils/unifiedBox/unifiedBoxController.js +0 -615
  227. package/dist/esm/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +0 -466
  228. package/dist/temp/assets/scripts/baseBox.d.ts +0 -55
  229. package/dist/temp/assets/scripts/baseBox.js +0 -140
  230. package/dist/temp/assets/scripts/comboBox.d.ts +0 -60
  231. package/dist/temp/assets/scripts/comboBox.js +0 -132
  232. package/dist/temp/assets/scripts/datePicker.d.ts +0 -86
  233. package/dist/temp/assets/scripts/datePicker.js +0 -699
  234. package/dist/temp/assets/scripts/featuredIcon.d.ts +0 -22
  235. package/dist/temp/assets/scripts/featuredIcon.js +0 -79
  236. package/dist/temp/assets/scripts/fileInput/const/classNames.d.ts +0 -15
  237. package/dist/temp/assets/scripts/fileInput/const/classNames.js +0 -16
  238. package/dist/temp/assets/scripts/fileInput/const/index.d.ts +0 -2
  239. package/dist/temp/assets/scripts/fileInput/const/index.js +0 -2
  240. package/dist/temp/assets/scripts/fileInput/const/types.d.ts +0 -88
  241. package/dist/temp/assets/scripts/fileInput/const/types.js +0 -7
  242. package/dist/temp/assets/scripts/fileInput/fileInput.d.ts +0 -13
  243. package/dist/temp/assets/scripts/fileInput/fileInput.js +0 -71
  244. package/dist/temp/assets/scripts/fileInput/fileInputModel.d.ts +0 -12
  245. package/dist/temp/assets/scripts/fileInput/fileInputModel.js +0 -37
  246. package/dist/temp/assets/scripts/fileInput/fileInputView.d.ts +0 -42
  247. package/dist/temp/assets/scripts/fileInput/fileInputView.js +0 -145
  248. package/dist/temp/assets/scripts/fileInput/index.d.ts +0 -3
  249. package/dist/temp/assets/scripts/fileInput/index.js +0 -9
  250. package/dist/temp/assets/scripts/imageFileInput/ImageFileInput.d.ts +0 -63
  251. package/dist/temp/assets/scripts/imageFileInput/ImageFileInput.js +0 -180
  252. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputModel.d.ts +0 -73
  253. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputModel.js +0 -214
  254. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputView.d.ts +0 -79
  255. package/dist/temp/assets/scripts/imageFileInput/ImageFileInputView.js +0 -350
  256. package/dist/temp/assets/scripts/imageFileInput/const/classNames.d.ts +0 -19
  257. package/dist/temp/assets/scripts/imageFileInput/const/classNames.js +0 -20
  258. package/dist/temp/assets/scripts/imageFileInput/const/index.d.ts +0 -2
  259. package/dist/temp/assets/scripts/imageFileInput/const/index.js +0 -2
  260. package/dist/temp/assets/scripts/imageFileInput/const/types.d.ts +0 -125
  261. package/dist/temp/assets/scripts/imageFileInput/const/types.js +0 -7
  262. package/dist/temp/assets/scripts/imageFileInput/index.d.ts +0 -3
  263. package/dist/temp/assets/scripts/imageFileInput/index.js +0 -9
  264. package/dist/temp/assets/scripts/index.d.ts +0 -34
  265. package/dist/temp/assets/scripts/index.js +0 -30
  266. package/dist/temp/assets/scripts/modal/Modal.d.ts +0 -27
  267. package/dist/temp/assets/scripts/modal/Modal.js +0 -100
  268. package/dist/temp/assets/scripts/modal/ModalActions.d.ts +0 -18
  269. package/dist/temp/assets/scripts/modal/ModalActions.js +0 -117
  270. package/dist/temp/assets/scripts/modal/ModalContent.d.ts +0 -13
  271. package/dist/temp/assets/scripts/modal/ModalContent.js +0 -39
  272. package/dist/temp/assets/scripts/modal/ModalHeader.d.ts +0 -15
  273. package/dist/temp/assets/scripts/modal/ModalHeader.js +0 -96
  274. package/dist/temp/assets/scripts/modal/const/classNames.d.ts +0 -22
  275. package/dist/temp/assets/scripts/modal/const/classNames.js +0 -23
  276. package/dist/temp/assets/scripts/modal/const/index.d.ts +0 -2
  277. package/dist/temp/assets/scripts/modal/const/index.js +0 -2
  278. package/dist/temp/assets/scripts/modal/const/types.d.ts +0 -61
  279. package/dist/temp/assets/scripts/modal/const/types.js +0 -1
  280. package/dist/temp/assets/scripts/modal/index.d.ts +0 -7
  281. package/dist/temp/assets/scripts/modal/index.js +0 -15
  282. package/dist/temp/assets/scripts/modal/utils/contentUtils.d.ts +0 -10
  283. package/dist/temp/assets/scripts/modal/utils/contentUtils.js +0 -29
  284. package/dist/temp/assets/scripts/notification/FloatingNotification.d.ts +0 -24
  285. package/dist/temp/assets/scripts/notification/FloatingNotification.js +0 -157
  286. package/dist/temp/assets/scripts/notification/FullWidthNotification.d.ts +0 -21
  287. package/dist/temp/assets/scripts/notification/FullWidthNotification.js +0 -110
  288. package/dist/temp/assets/scripts/notification/MessageNotification.d.ts +0 -22
  289. package/dist/temp/assets/scripts/notification/MessageNotification.js +0 -140
  290. package/dist/temp/assets/scripts/notification/Notification.d.ts +0 -21
  291. package/dist/temp/assets/scripts/notification/Notification.js +0 -94
  292. package/dist/temp/assets/scripts/notification/const/classNames.d.ts +0 -43
  293. package/dist/temp/assets/scripts/notification/const/classNames.js +0 -44
  294. package/dist/temp/assets/scripts/notification/const/icons.d.ts +0 -25
  295. package/dist/temp/assets/scripts/notification/const/icons.js +0 -25
  296. package/dist/temp/assets/scripts/notification/const/index.d.ts +0 -5
  297. package/dist/temp/assets/scripts/notification/const/index.js +0 -4
  298. package/dist/temp/assets/scripts/notification/const/sizes.d.ts +0 -32
  299. package/dist/temp/assets/scripts/notification/const/sizes.js +0 -40
  300. package/dist/temp/assets/scripts/notification/const/types.d.ts +0 -19
  301. package/dist/temp/assets/scripts/notification/const/types.js +0 -8
  302. package/dist/temp/assets/scripts/notification/index.d.ts +0 -7
  303. package/dist/temp/assets/scripts/notification/index.js +0 -11
  304. package/dist/temp/assets/scripts/notification/utils.d.ts +0 -8
  305. package/dist/temp/assets/scripts/notification/utils.js +0 -89
  306. package/dist/temp/assets/scripts/progress-bar/ProgressBar.d.ts +0 -67
  307. package/dist/temp/assets/scripts/progress-bar/ProgressBar.js +0 -263
  308. package/dist/temp/assets/scripts/progress-bar/index.d.ts +0 -1
  309. package/dist/temp/assets/scripts/progress-bar/index.js +0 -1
  310. package/dist/temp/assets/scripts/selectBox.d.ts +0 -50
  311. package/dist/temp/assets/scripts/selectBox.js +0 -170
  312. package/dist/temp/assets/scripts/shared/ButtonCloseX.d.ts +0 -5
  313. package/dist/temp/assets/scripts/shared/ButtonCloseX.js +0 -33
  314. package/dist/temp/assets/scripts/tab.d.ts +0 -7
  315. package/dist/temp/assets/scripts/tab.js +0 -33
  316. package/dist/temp/assets/scripts/table/Table.d.ts +0 -41
  317. package/dist/temp/assets/scripts/table/Table.js +0 -378
  318. package/dist/temp/assets/scripts/table/const/classNames.d.ts +0 -27
  319. package/dist/temp/assets/scripts/table/const/classNames.js +0 -27
  320. package/dist/temp/assets/scripts/table/const/index.d.ts +0 -2
  321. package/dist/temp/assets/scripts/table/const/index.js +0 -2
  322. package/dist/temp/assets/scripts/table/const/types.d.ts +0 -23
  323. package/dist/temp/assets/scripts/table/const/types.js +0 -1
  324. package/dist/temp/assets/scripts/table/index.d.ts +0 -3
  325. package/dist/temp/assets/scripts/table/index.js +0 -8
  326. package/dist/temp/assets/scripts/tag/Tag.d.ts +0 -27
  327. package/dist/temp/assets/scripts/tag/Tag.js +0 -259
  328. package/dist/temp/assets/scripts/tag/const/classNames.d.ts +0 -11
  329. package/dist/temp/assets/scripts/tag/const/classNames.js +0 -12
  330. package/dist/temp/assets/scripts/tag/const/index.d.ts +0 -3
  331. package/dist/temp/assets/scripts/tag/const/index.js +0 -3
  332. package/dist/temp/assets/scripts/tag/const/sizes.d.ts +0 -7
  333. package/dist/temp/assets/scripts/tag/const/sizes.js +0 -7
  334. package/dist/temp/assets/scripts/tag/const/types.d.ts +0 -33
  335. package/dist/temp/assets/scripts/tag/const/types.js +0 -1
  336. package/dist/temp/assets/scripts/tag/index.d.ts +0 -3
  337. package/dist/temp/assets/scripts/tag/index.js +0 -9
  338. package/dist/temp/assets/scripts/tooltip/Tooltip.d.ts +0 -54
  339. package/dist/temp/assets/scripts/tooltip/Tooltip.js +0 -335
  340. package/dist/temp/assets/scripts/tooltip/TooltipLayerManager.d.ts +0 -21
  341. package/dist/temp/assets/scripts/tooltip/TooltipLayerManager.js +0 -71
  342. package/dist/temp/assets/scripts/tooltip/const/classNames.d.ts +0 -17
  343. package/dist/temp/assets/scripts/tooltip/const/classNames.js +0 -23
  344. package/dist/temp/assets/scripts/tooltip/const/constants.d.ts +0 -33
  345. package/dist/temp/assets/scripts/tooltip/const/constants.js +0 -46
  346. package/dist/temp/assets/scripts/tooltip/const/icons.d.ts +0 -4
  347. package/dist/temp/assets/scripts/tooltip/const/icons.js +0 -9
  348. package/dist/temp/assets/scripts/tooltip/const/index.d.ts +0 -5
  349. package/dist/temp/assets/scripts/tooltip/const/index.js +0 -4
  350. package/dist/temp/assets/scripts/tooltip/const/templates.d.ts +0 -16
  351. package/dist/temp/assets/scripts/tooltip/const/templates.js +0 -59
  352. package/dist/temp/assets/scripts/tooltip/const/types.d.ts +0 -14
  353. package/dist/temp/assets/scripts/tooltip/const/types.js +0 -1
  354. package/dist/temp/assets/scripts/tooltip/index.d.ts +0 -6
  355. package/dist/temp/assets/scripts/tooltip/index.js +0 -10
  356. package/dist/temp/assets/scripts/tooltip/utils.d.ts +0 -2
  357. package/dist/temp/assets/scripts/tooltip/utils.js +0 -33
  358. package/dist/temp/assets/scripts/utils/debounce.d.ts +0 -8
  359. package/dist/temp/assets/scripts/utils/debounce.js +0 -23
  360. package/dist/temp/assets/scripts/utils/unifiedBox/domRenderer.d.ts +0 -107
  361. package/dist/temp/assets/scripts/utils/unifiedBox/domRenderer.js +0 -367
  362. package/dist/temp/assets/scripts/utils/unifiedBox/dropdownModel.d.ts +0 -142
  363. package/dist/temp/assets/scripts/utils/unifiedBox/dropdownModel.js +0 -286
  364. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxController.d.ts +0 -156
  365. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxController.js +0 -604
  366. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxManager.d.ts +0 -95
  367. package/dist/temp/assets/scripts/utils/unifiedBox/unifiedBoxManager.js +0 -482
  368. package/dist/types/assets/scripts/baseBox.d.ts +0 -55
  369. package/dist/types/assets/scripts/comboBox.d.ts +0 -60
  370. package/dist/types/assets/scripts/datePicker.d.ts +0 -86
  371. package/dist/types/assets/scripts/featuredIcon.d.ts +0 -22
  372. package/dist/types/assets/scripts/fileInput/const/classNames.d.ts +0 -15
  373. package/dist/types/assets/scripts/fileInput/const/index.d.ts +0 -2
  374. package/dist/types/assets/scripts/fileInput/const/types.d.ts +0 -88
  375. package/dist/types/assets/scripts/fileInput/fileInput.d.ts +0 -13
  376. package/dist/types/assets/scripts/fileInput/fileInputModel.d.ts +0 -12
  377. package/dist/types/assets/scripts/fileInput/fileInputView.d.ts +0 -42
  378. package/dist/types/assets/scripts/fileInput/index.d.ts +0 -3
  379. package/dist/types/assets/scripts/imageFileInput/ImageFileInput.d.ts +0 -63
  380. package/dist/types/assets/scripts/imageFileInput/ImageFileInputModel.d.ts +0 -73
  381. package/dist/types/assets/scripts/imageFileInput/ImageFileInputView.d.ts +0 -79
  382. package/dist/types/assets/scripts/imageFileInput/const/classNames.d.ts +0 -19
  383. package/dist/types/assets/scripts/imageFileInput/const/index.d.ts +0 -2
  384. package/dist/types/assets/scripts/imageFileInput/const/types.d.ts +0 -125
  385. package/dist/types/assets/scripts/imageFileInput/index.d.ts +0 -3
  386. package/dist/types/assets/scripts/index.d.ts +0 -34
  387. package/dist/types/assets/scripts/modal/Modal.d.ts +0 -27
  388. package/dist/types/assets/scripts/modal/ModalActions.d.ts +0 -18
  389. package/dist/types/assets/scripts/modal/ModalContent.d.ts +0 -13
  390. package/dist/types/assets/scripts/modal/ModalHeader.d.ts +0 -15
  391. package/dist/types/assets/scripts/modal/const/classNames.d.ts +0 -22
  392. package/dist/types/assets/scripts/modal/const/index.d.ts +0 -2
  393. package/dist/types/assets/scripts/modal/const/types.d.ts +0 -61
  394. package/dist/types/assets/scripts/modal/index.d.ts +0 -7
  395. package/dist/types/assets/scripts/modal/utils/contentUtils.d.ts +0 -10
  396. package/dist/types/assets/scripts/notification/FloatingNotification.d.ts +0 -24
  397. package/dist/types/assets/scripts/notification/FullWidthNotification.d.ts +0 -21
  398. package/dist/types/assets/scripts/notification/MessageNotification.d.ts +0 -22
  399. package/dist/types/assets/scripts/notification/Notification.d.ts +0 -21
  400. package/dist/types/assets/scripts/notification/const/classNames.d.ts +0 -43
  401. package/dist/types/assets/scripts/notification/const/icons.d.ts +0 -25
  402. package/dist/types/assets/scripts/notification/const/index.d.ts +0 -5
  403. package/dist/types/assets/scripts/notification/const/sizes.d.ts +0 -32
  404. package/dist/types/assets/scripts/notification/const/types.d.ts +0 -19
  405. package/dist/types/assets/scripts/notification/index.d.ts +0 -7
  406. package/dist/types/assets/scripts/notification/utils.d.ts +0 -8
  407. package/dist/types/assets/scripts/progress-bar/ProgressBar.d.ts +0 -67
  408. package/dist/types/assets/scripts/progress-bar/index.d.ts +0 -1
  409. package/dist/types/assets/scripts/selectBox.d.ts +0 -50
  410. package/dist/types/assets/scripts/shared/ButtonCloseX.d.ts +0 -5
  411. package/dist/types/assets/scripts/tab.d.ts +0 -7
  412. package/dist/types/assets/scripts/table/Table.d.ts +0 -41
  413. package/dist/types/assets/scripts/table/const/classNames.d.ts +0 -27
  414. package/dist/types/assets/scripts/table/const/index.d.ts +0 -2
  415. package/dist/types/assets/scripts/table/const/types.d.ts +0 -23
  416. package/dist/types/assets/scripts/table/index.d.ts +0 -3
  417. package/dist/types/assets/scripts/tag/Tag.d.ts +0 -27
  418. package/dist/types/assets/scripts/tag/const/classNames.d.ts +0 -11
  419. package/dist/types/assets/scripts/tag/const/index.d.ts +0 -3
  420. package/dist/types/assets/scripts/tag/const/sizes.d.ts +0 -7
  421. package/dist/types/assets/scripts/tag/const/types.d.ts +0 -33
  422. package/dist/types/assets/scripts/tag/index.d.ts +0 -3
  423. package/dist/types/assets/scripts/tooltip/Tooltip.d.ts +0 -54
  424. package/dist/types/assets/scripts/tooltip/TooltipLayerManager.d.ts +0 -21
  425. package/dist/types/assets/scripts/tooltip/const/classNames.d.ts +0 -17
  426. package/dist/types/assets/scripts/tooltip/const/constants.d.ts +0 -33
  427. package/dist/types/assets/scripts/tooltip/const/icons.d.ts +0 -4
  428. package/dist/types/assets/scripts/tooltip/const/index.d.ts +0 -5
  429. package/dist/types/assets/scripts/tooltip/const/templates.d.ts +0 -16
  430. package/dist/types/assets/scripts/tooltip/const/types.d.ts +0 -14
  431. package/dist/types/assets/scripts/tooltip/index.d.ts +0 -6
  432. package/dist/types/assets/scripts/tooltip/utils.d.ts +0 -2
  433. package/dist/types/assets/scripts/utils/debounce.d.ts +0 -8
  434. package/dist/types/assets/scripts/utils/unifiedBox/domRenderer.d.ts +0 -107
  435. package/dist/types/assets/scripts/utils/unifiedBox/dropdownModel.d.ts +0 -142
  436. package/dist/types/assets/scripts/utils/unifiedBox/unifiedBoxController.d.ts +0 -156
  437. package/dist/types/assets/scripts/utils/unifiedBox/unifiedBoxManager.d.ts +0 -95
  438. /package/dist/cjs/{assets/scripts/modal/const/types.js → src/types/component-meta.js} +0 -0
@@ -1,2 +1 @@
1
- export type { SwitchProps } from './Switch';
2
- export { Switch } from './Switch';
1
+ export * from './Switch';
@@ -1 +1 @@
1
- export { Switch } from './Switch';
1
+ export * from './Switch';
@@ -1,7 +1,7 @@
1
1
  import { type MouseEventHandler } from 'react';
2
2
  import type { Size } from '../../../constant/size';
3
3
  import type { SideSlotType } from '../../types/side-slot';
4
- interface TagProps {
4
+ export interface TagProps {
5
5
  size?: Extract<Size, 'sm' | 'md'>;
6
6
  icon?: SideSlotType;
7
7
  text: string;
@@ -11,7 +11,5 @@ interface TagProps {
11
11
  onButtonClick?: MouseEventHandler<HTMLButtonElement>;
12
12
  maxLength?: number;
13
13
  }
14
- type CalculatedPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
15
- declare const Tag: ({ size, icon, text, count, close, onButtonClick, maxLength }: TagProps) => import("react/jsx-runtime").JSX.Element;
16
- export type { CalculatedPosition };
17
- export { Tag };
14
+ export type CalculatedPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
15
+ export declare const Tag: ({ size, icon, text, count, close, onButtonClick, maxLength }: TagProps) => import("react/jsx-runtime").JSX.Element;
@@ -41,7 +41,7 @@ const calculateOptimalPosition = (triggerElement, tooltipElement) => {
41
41
  const fallbackPosition = hasTopSpace ? 'top-right' : 'bottom-right';
42
42
  return fallbackPosition;
43
43
  };
44
- const Tag = ({ size = 'sm', icon, text, count, close, onButtonClick, maxLength = 20 }) => {
44
+ export const Tag = ({ size = 'sm', icon, text, count, close, onButtonClick, maxLength = 20 }) => {
45
45
  const [isTooltipVisible, setIsTooltipVisible] = useState(false);
46
46
  const [calculatedPosition, setCalculatedPosition] = useState('top-right');
47
47
  const tagRef = useRef(null);
@@ -93,4 +93,3 @@ const Tag = ({ size = 'sm', icon, text, count, close, onButtonClick, maxLength =
93
93
  'ncua-tag--truncated': shouldTruncate,
94
94
  }), onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, children: [icon && sideSlotRender(icon), _jsx("span", { className: "ncua-tag__text", children: displayText }), count && _jsx("span", { className: "ncua-tag__count", children: count }), close && (_jsx("button", { type: "button", className: "ncua-tag__close", onClick: onButtonClick, children: _jsx(XClose, { color: COLOR.gray300, width: iconSize[size], height: iconSize[size] }) })), shouldTruncate && isTooltipVisible && (_jsx("span", { ref: tooltipRef, className: classNames('ncua-tag__tooltip', `ncua-tag__tooltip--${calculatedPosition}`), children: _jsx("span", { className: "ncua-tag__tooltip-content", children: text }) }))] }));
95
95
  };
96
- export { Tag };
@@ -1,7 +1,8 @@
1
+ type CalculatedPosition = 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
1
2
  interface TooltipProps {
2
3
  tooltipType?: 'white' | 'black';
3
4
  iconType?: 'stroke' | 'fill';
4
- position?: 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'auto';
5
+ position?: CalculatedPosition | 'auto';
5
6
  size?: 'sm' | 'md';
6
7
  hideArrow?: boolean;
7
8
  title?: string;
@@ -10,6 +11,7 @@ interface TooltipProps {
10
11
  className?: string;
11
12
  iconColor?: string;
12
13
  iconStyle?: 'help-circle' | 'alert-circle';
14
+ zIndex?: number;
13
15
  }
14
- export declare const Tooltip: ({ tooltipType, iconType, position, size, title, content, hideArrow, type, iconColor, iconStyle, className, }: TooltipProps) => import("react/jsx-runtime").JSX.Element;
16
+ export declare const Tooltip: ({ tooltipType, iconType, position, size, title, content, hideArrow, type, iconColor, iconStyle, className, zIndex, }: TooltipProps) => import("react/jsx-runtime").JSX.Element;
15
17
  export {};
@@ -1,82 +1,133 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { AlertCircle, AlertCircleFill, HelpCircle, HelpCircleFill } from '@ncds/ui-admin-icon';
3
3
  import classNames from 'classnames';
4
- import { useCallback, useMemo, useRef, useState } from 'react';
4
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
5
+ import { createPortal } from 'react-dom';
5
6
  import { ButtonCloseX } from '../button/ButtonCloseX';
6
7
  const ICON_SIZE_SM = 14;
7
8
  const ICON_SIZE_DEFAULT = 16;
8
- const MARGIN = 10;
9
- const DEFAULT_TOOLTIP_WIDTH = 200;
10
- const DEFAULT_TOOLTIP_HEIGHT = 60;
11
- const POSITION_PRIORITY = ['bottom', 'top', 'right', 'left'];
12
- // 수직 위치(top/bottom)일 때 수평 정렬 보정
13
- const resolveVerticalAlignment = (position, triggerRect, tooltipWidth, viewportWidth) => {
14
- const centerX = triggerRect.left + triggerRect.width / 2;
15
- const tooltipHalfWidth = tooltipWidth / 2;
16
- if (centerX - tooltipHalfWidth < MARGIN) {
17
- return `${position}-left`;
9
+ // HTML 구현체(assets/scripts/tooltip)와 동일한 상수
10
+ const TOOLTIP_OFFSET = 6;
11
+ const VIEWPORT_MARGIN = 8;
12
+ const EDGE_ALIGN_OFFSET = 12;
13
+ const OFFSCREEN = -99999;
14
+ // HTML 구현체(TooltipLayerManager)가 body에 만드는 `#tooltip-global-layer`와 동일 id.
15
+ // 한쪽만 바뀌면 포털이 body로 fallback되며 사일런트 동작 이상이 날 수 있으므로 함께 유지한다.
16
+ const GLOBAL_LAYER_ID = 'tooltip-global-layer';
17
+ // body 하위의 전역 레이어를 찾거나 없으면 body로 fallback
18
+ const resolvePortalTarget = () => {
19
+ if (typeof document === 'undefined')
20
+ return null;
21
+ return document.getElementById(GLOBAL_LAYER_ID) ?? document.body;
22
+ };
23
+ // 앵커 rect와 패널 rect를 기반으로 viewport 고정 좌표 계산
24
+ const computePanelCoords = (prefer, anchor, panel) => {
25
+ let resolved = prefer;
26
+ if (resolved === 'auto') {
27
+ const enoughTop = anchor.top - TOOLTIP_OFFSET - panel.height >= VIEWPORT_MARGIN;
28
+ resolved = enoughTop ? 'top' : 'bottom';
18
29
  }
19
- if (centerX + tooltipHalfWidth > viewportWidth - MARGIN) {
20
- return `${position}-right`;
30
+ let top = 0;
31
+ let left = 0;
32
+ let calculatedPosition = 'bottom';
33
+ if (resolved === 'bottom') {
34
+ top = anchor.bottom + TOOLTIP_OFFSET;
35
+ left = anchor.left + anchor.width / 2 - panel.width / 2;
36
+ calculatedPosition = 'bottom';
21
37
  }
22
- return position;
23
- };
24
- // 해당 위치에 툴팁을 배치할 충분한 공간이 있는지 확인
25
- const hasEnoughSpace = (position, spaces, tooltipWidth, tooltipHeight) => {
26
- const isVertical = position === 'bottom' || position === 'top';
27
- const requiredSpace = isVertical ? tooltipHeight : tooltipWidth;
28
- return spaces[position] >= requiredSpace + MARGIN;
29
- };
30
- // 위치 계산 position='auto' 일 때 사용
31
- const calculateOptimalPosition = (triggerElement, tooltipElement, preferredPosition = 'bottom') => {
32
- const triggerRect = triggerElement.getBoundingClientRect();
33
- const tooltipRect = tooltipElement.getBoundingClientRect();
34
- const { innerWidth: viewportWidth, innerHeight: viewportHeight } = window;
35
- const spaces = {
36
- top: triggerRect.top,
37
- bottom: viewportHeight - triggerRect.bottom,
38
- left: triggerRect.left,
39
- right: viewportWidth - triggerRect.right,
40
- };
41
- const tooltipWidth = tooltipRect.width || DEFAULT_TOOLTIP_WIDTH;
42
- const tooltipHeight = tooltipRect.height || DEFAULT_TOOLTIP_HEIGHT;
43
- for (const position of POSITION_PRIORITY) {
44
- if (!hasEnoughSpace(position, spaces, tooltipWidth, tooltipHeight)) {
45
- continue;
46
- }
47
- const isVertical = position === 'bottom' || position === 'top';
48
- if (isVertical) {
49
- return resolveVerticalAlignment(position, triggerRect, tooltipWidth, viewportWidth);
50
- }
51
- return position;
38
+ else if (resolved === 'top') {
39
+ top = anchor.top - panel.height - TOOLTIP_OFFSET;
40
+ left = anchor.left + anchor.width / 2 - panel.width / 2;
41
+ calculatedPosition = 'top';
42
+ }
43
+ else if (resolved === 'left') {
44
+ top = anchor.top + anchor.height / 2 - panel.height / 2;
45
+ left = anchor.left - panel.width - TOOLTIP_OFFSET;
46
+ calculatedPosition = 'left';
47
+ }
48
+ else if (resolved === 'right') {
49
+ top = anchor.top + anchor.height / 2 - panel.height / 2;
50
+ left = anchor.right + TOOLTIP_OFFSET;
51
+ calculatedPosition = 'right';
52
+ }
53
+ else if (resolved === 'top-left') {
54
+ top = anchor.top - panel.height - TOOLTIP_OFFSET;
55
+ left = anchor.left - EDGE_ALIGN_OFFSET;
56
+ calculatedPosition = 'top-left';
52
57
  }
53
- return preferredPosition;
58
+ else if (resolved === 'top-right') {
59
+ top = anchor.top - panel.height - TOOLTIP_OFFSET;
60
+ left = anchor.right - panel.width + EDGE_ALIGN_OFFSET;
61
+ calculatedPosition = 'top-right';
62
+ }
63
+ else if (resolved === 'bottom-left') {
64
+ top = anchor.bottom + TOOLTIP_OFFSET;
65
+ left = anchor.left - EDGE_ALIGN_OFFSET;
66
+ calculatedPosition = 'bottom-left';
67
+ }
68
+ else if (resolved === 'bottom-right') {
69
+ top = anchor.bottom + TOOLTIP_OFFSET;
70
+ left = anchor.right - panel.width + EDGE_ALIGN_OFFSET;
71
+ calculatedPosition = 'bottom-right';
72
+ }
73
+ left = Math.max(VIEWPORT_MARGIN, Math.min(left, window.innerWidth - panel.width - VIEWPORT_MARGIN));
74
+ top = Math.max(VIEWPORT_MARGIN, Math.min(top, window.innerHeight - panel.height - VIEWPORT_MARGIN));
75
+ return { top: Math.round(top), left: Math.round(left), calculatedPosition };
54
76
  };
55
- export const Tooltip = ({ tooltipType = 'white', iconType = 'stroke', position = 'auto', size = 'sm', title, content, hideArrow = false, type = 'short', iconColor = 'var(--gray-300)', iconStyle = 'help-circle', className, }) => {
77
+ export const Tooltip = ({ tooltipType = 'white', iconType = 'stroke', position = 'auto', size = 'sm', title, content, hideArrow = false, type = 'short', iconColor = 'var(--gray-300)', iconStyle = 'help-circle', className, zIndex, }) => {
56
78
  const iconSize = size === 'sm' ? ICON_SIZE_SM : ICON_SIZE_DEFAULT;
57
- const tooltipRef = useRef(null);
58
- const tooltipBgRef = useRef(null);
79
+ const anchorRef = useRef(null);
80
+ const panelRef = useRef(null);
81
+ const rafIdRef = useRef(null);
82
+ const [mounted, setMounted] = useState(false);
83
+ const [coords, setCoords] = useState({ top: OFFSCREEN, left: OFFSCREEN });
59
84
  const [calculatedPosition, setCalculatedPosition] = useState(position === 'auto' ? 'bottom' : position);
60
85
  const [isVisible, setIsVisible] = useState(false);
61
86
  const [isManuallyClose, setIsManuallyClose] = useState(false);
62
- const [isMeasuring, setIsMeasuring] = useState(false);
87
+ useEffect(() => {
88
+ setMounted(true);
89
+ return () => {
90
+ if (rafIdRef.current !== null) {
91
+ cancelAnimationFrame(rafIdRef.current);
92
+ rafIdRef.current = null;
93
+ }
94
+ };
95
+ }, []);
96
+ const updatePosition = useCallback(() => {
97
+ if (!anchorRef.current || !panelRef.current)
98
+ return;
99
+ const anchor = anchorRef.current.getBoundingClientRect();
100
+ const panel = panelRef.current.getBoundingClientRect();
101
+ const next = computePanelCoords(position, anchor, panel);
102
+ setCoords({ top: next.top, left: next.left });
103
+ setCalculatedPosition(next.calculatedPosition);
104
+ }, [position]);
105
+ useEffect(() => {
106
+ if (!isVisible)
107
+ return;
108
+ updatePosition();
109
+ window.addEventListener('resize', updatePosition, { passive: true });
110
+ window.addEventListener('scroll', updatePosition, { passive: true, capture: true });
111
+ return () => {
112
+ window.removeEventListener('resize', updatePosition);
113
+ window.removeEventListener('scroll', updatePosition, { capture: true });
114
+ };
115
+ }, [isVisible, updatePosition]);
63
116
  const handleMouseEnter = useCallback(() => {
64
117
  if (isManuallyClose)
65
118
  return;
119
+ // opacity 전환 전에 좌표 확정 (ref 가드는 updatePosition 내부)
120
+ updatePosition();
121
+ // 웹폰트 로드·max-content 재계산 등 비동기 layout 안정화 후 한 번 더 보정
122
+ // 빠른 hover in/out 시 이전 프레임 요청은 취소해 중복/unmount 후 실행 방지
123
+ if (rafIdRef.current !== null)
124
+ cancelAnimationFrame(rafIdRef.current);
125
+ rafIdRef.current = requestAnimationFrame(() => {
126
+ rafIdRef.current = null;
127
+ updatePosition();
128
+ });
66
129
  setIsVisible(true);
67
- if (position === 'auto' && tooltipRef.current && tooltipBgRef.current) {
68
- // 크기 측정을 위해 임시로 measuring 클래스 추가
69
- setIsMeasuring(true);
70
- // 다음 렌더링 사이클에서 크기 측정
71
- setTimeout(() => {
72
- if (tooltipRef.current && tooltipBgRef.current) {
73
- const optimalPosition = calculateOptimalPosition(tooltipRef.current, tooltipBgRef.current, 'bottom');
74
- setCalculatedPosition(optimalPosition);
75
- setIsMeasuring(false);
76
- }
77
- }, 0);
78
- }
79
- }, [position, isManuallyClose]);
130
+ }, [isManuallyClose, updatePosition]);
80
131
  const handleMouseLeave = useCallback(() => {
81
132
  if (type === 'short') {
82
133
  setIsVisible(false);
@@ -93,12 +144,19 @@ export const Tooltip = ({ tooltipType = 'white', iconType = 'stroke', position =
93
144
  'ncua-tooltip--stroke': iconType === 'stroke',
94
145
  'ncua-tooltip--auto': position === 'auto',
95
146
  }, className), [size, type, hideArrow, iconType, position, className]);
96
- const tooltipBgClassName = useMemo(() => classNames('ncua-tooltip__bg', `ncua-tooltip__bg--${tooltipType}`, `ncua-tooltip__bg--${finalPosition}`, {
147
+ const panelClassName = useMemo(() => classNames('ncua-tooltip-panel', 'ncua-tooltip__bg', `ncua-tooltip__bg--${tooltipType}`, `ncua-tooltip__bg--${finalPosition}`, {
97
148
  'ncua-tooltip__bg--visible': isVisible,
98
- 'ncua-tooltip__bg--measuring': isMeasuring,
99
149
  'ncua-tooltip__bg--force-hidden': isManuallyClose,
100
- }), [tooltipType, finalPosition, isVisible, isMeasuring, isManuallyClose]);
101
- return (_jsxs("span", { ref: tooltipRef, className: tooltipClassName, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, children: [iconStyle === 'help-circle' &&
102
- (iconType === 'stroke' ? (_jsx(HelpCircle, { width: iconSize, height: iconSize, color: iconColor })) : (_jsx(HelpCircleFill, { width: iconSize, height: iconSize, color: iconColor }))), iconStyle === 'alert-circle' &&
103
- (iconType === 'stroke' ? (_jsx(AlertCircle, { width: iconSize, height: iconSize, color: iconColor })) : (_jsx(AlertCircleFill, { width: iconSize, height: iconSize, color: iconColor }))), _jsxs("span", { ref: tooltipBgRef, className: tooltipBgClassName, children: [title && _jsx("span", { className: "ncua-tooltip__title", children: title }), content && _jsx("span", { className: "ncua-tooltip__content", children: content }), type === 'long' && (_jsx(ButtonCloseX, { className: "ncua-tooltip__close-button", size: "xs", theme: tooltipType === 'white' ? 'dark' : 'light', onClick: handleCloseClick, "aria-label": "\uD234\uD301 \uB2EB\uAE30" }))] })] }));
150
+ }), [tooltipType, finalPosition, isVisible, isManuallyClose]);
151
+ const panelStyle = {
152
+ top: `${coords.top}px`,
153
+ left: `${coords.left}px`,
154
+ opacity: isVisible ? 1 : 0,
155
+ ...(zIndex && { zIndex }),
156
+ };
157
+ const portalTarget = mounted ? resolvePortalTarget() : null;
158
+ const panel = (_jsxs("span", { ref: panelRef, className: panelClassName, style: panelStyle, children: [title && _jsx("span", { className: "ncua-tooltip__title", children: title }), content && _jsx("span", { className: "ncua-tooltip__content", children: content }), type === 'long' && (_jsx(ButtonCloseX, { className: "ncua-tooltip__close-button", size: "xs", theme: tooltipType === 'white' ? 'dark' : 'light', onClick: handleCloseClick, "aria-label": "\uD234\uD301 \uB2EB\uAE30" }))] }));
159
+ return (_jsxs(_Fragment, { children: [_jsxs("span", { ref: anchorRef, className: tooltipClassName, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, children: [iconStyle === 'help-circle' &&
160
+ (iconType === 'stroke' ? (_jsx(HelpCircle, { width: iconSize, height: iconSize, color: iconColor })) : (_jsx(HelpCircleFill, { width: iconSize, height: iconSize, color: iconColor }))), iconStyle === 'alert-circle' &&
161
+ (iconType === 'stroke' ? (_jsx(AlertCircle, { width: iconSize, height: iconSize, color: iconColor })) : (_jsx(AlertCircleFill, { width: iconSize, height: iconSize, color: iconColor })))] }), portalTarget && createPortal(panel, portalTarget)] }));
104
162
  };
@@ -1,6 +1,6 @@
1
- export { useDropdown } from './useDropdown';
2
- export { useDropdownKeyboard } from './useDropdownKeyboard';
3
- export { useDropdownPosition } from './useDropdownPosition';
4
- export { useOutsideClick } from './useOutsideClick';
5
- export { useScrollLock } from './useScrollLock';
6
- export { useWindowResize } from './useWindowResize';
1
+ export * from './useDropdown';
2
+ export * from './useDropdownKeyboard';
3
+ export * from './useDropdownPosition';
4
+ export * from './useOutsideClick';
5
+ export * from './useScrollLock';
6
+ export * from './useWindowResize';
@@ -1,6 +1,6 @@
1
- export { useDropdown } from './useDropdown';
2
- export { useDropdownKeyboard } from './useDropdownKeyboard';
3
- export { useDropdownPosition } from './useDropdownPosition';
4
- export { useOutsideClick } from './useOutsideClick';
5
- export { useScrollLock } from './useScrollLock';
6
- export { useWindowResize } from './useWindowResize';
1
+ export * from './useDropdown';
2
+ export * from './useDropdownKeyboard';
3
+ export * from './useDropdownPosition';
4
+ export * from './useOutsideClick';
5
+ export * from './useScrollLock';
6
+ export * from './useWindowResize';
@@ -1,4 +1,4 @@
1
1
  export * from './dropdown';
2
- export { useCallbackRef } from './useCallbackRef';
3
- export { useMediaQuery } from './useMediaQuery';
4
- export { useMergeRefs } from './useMergeRefs';
2
+ export * from './useCallbackRef';
3
+ export * from './useMediaQuery';
4
+ export * from './useMergeRefs';
@@ -1,6 +1,6 @@
1
1
  // 기존 공통 hooks
2
2
  // 드롭다운 관련 hooks
3
3
  export * from './dropdown';
4
- export { useCallbackRef } from './useCallbackRef';
5
- export { useMediaQuery } from './useMediaQuery';
6
- export { useMergeRefs } from './useMergeRefs';
4
+ export * from './useCallbackRef';
5
+ export * from './useMediaQuery';
6
+ export * from './useMergeRefs';
@@ -0,0 +1,26 @@
1
+ /** AI 에이전트용 컴포넌트 메타데이터 타입 */
2
+ /** DES INDEX §3-1~§3-8 기준 카테고리 (commerce-rag design 네임스페이스) */
3
+ export type ComponentCategory = 'action' | 'input' | 'icon' | 'overlay' | 'navigation' | 'feedback' | 'layout' | 'data-display';
4
+ export interface ComponentMeta {
5
+ category: ComponentCategory;
6
+ aliases: string[];
7
+ hasChildren: boolean;
8
+ description: string;
9
+ whenToUse: string[];
10
+ forbiddenRules: string[];
11
+ seeAlso: string[];
12
+ jsRequired: boolean;
13
+ /** Props가 확장하는 HTML 요소 — 에이전트가 표준 HTML 속성 사용 가능 여부를 판단 */
14
+ htmlElement?: string;
15
+ /**
16
+ * render_to_html에 전달할 실제 사용 예시 props.
17
+ *
18
+ * 작성 규칙 (props-type-guide.md § usageExamples 참조):
19
+ * - key: 시나리오 이름 (예: "default", "withIcon", "rangePicker")
20
+ * - value: render_to_html의 props 파라미터에 그대로 전달 가능한 객체
21
+ * - 모든 required prop 포함 필수. optional은 시나리오에 필요한 것만.
22
+ * - 에이전트가 복사해서 바로 사용할 수 있는 수준의 실제 데이터.
23
+ * - 빈 문자열(""), 빈 객체({}) 금지. 의미 있는 값을 넣을 것.
24
+ */
25
+ usageExamples?: Record<string, Record<string, unknown>>;
26
+ }
@@ -0,0 +1,2 @@
1
+ /** AI 에이전트용 컴포넌트 메타데이터 타입 */
2
+ export {};
@@ -1,13 +1,11 @@
1
+ import type { SlotIconComponent } from '../side-slot';
1
2
  /**
2
3
  * 기본 옵션 타입
3
4
  */
4
5
  export type OptionType = {
5
6
  id: string | number;
6
7
  label: string;
7
- icon?: React.ComponentType<{
8
- width?: number;
9
- height?: number;
10
- }>;
8
+ icon?: SlotIconComponent;
11
9
  };
12
10
  /**
13
11
  * 옵션 값 타입 (단일 또는 다중 선택)
@@ -1,12 +1,20 @@
1
1
  import type { ComponentType, ReactNode } from 'react';
2
2
  import type { COLOR } from '../../constant/color';
3
3
  import type { DotProps } from '../components';
4
+ /**
5
+ * 아이콘 컴포넌트 자리에 쓰이는 타입. MCP가 props 추출 시 이 타입의 정체성을 감지하여
6
+ * 문자열 이름을 실제 아이콘 컴포넌트로 치환할 수 있도록 nominal brand를 부착한다.
7
+ *
8
+ * 런타임 영향 없음 (브랜드 필드는 optional never, 실제로 할당할 수 없음).
9
+ */
4
10
  export type SlotIconComponent = ComponentType<{
5
11
  height?: number;
6
12
  width?: number;
7
13
  color?: string;
8
14
  className?: string;
9
- }>;
15
+ }> & {
16
+ readonly __ncuaSlotIconBrand?: never;
17
+ };
10
18
  export type IconSlotType = {
11
19
  type: 'icon';
12
20
  icon: SlotIconComponent;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vite").UserConfig;
2
+ export default _default;
@@ -0,0 +1,7 @@
1
+ import { defineConfig } from 'vitest/config';
2
+ export default defineConfig({
3
+ test: {
4
+ include: ['scripts/**/__tests__/**/*.test.ts'],
5
+ environment: 'node',
6
+ },
7
+ });
@@ -1 +1,2 @@
1
1
  export * from './Badge';
2
+ export * from './utils';
@@ -1,2 +1,3 @@
1
1
  export * from './DatePicker';
2
+ export * from './CustomInput';
2
3
  export * from './utils';
@@ -1,14 +1,12 @@
1
1
  import { type ButtonProps } from '../button/Button';
2
- interface ButtonOptions extends Pick<ButtonProps, 'hierarchy' | 'size' | 'leadingIcon' | 'trailingIcon'> {
2
+ export interface ButtonOptions extends Pick<ButtonProps, 'hierarchy' | 'size' | 'leadingIcon' | 'trailingIcon'> {
3
3
  label: string;
4
4
  onClick?: () => void;
5
5
  disabled?: boolean;
6
6
  }
7
- interface EmptyStateProps {
7
+ export interface EmptyStateProps {
8
8
  title: string;
9
9
  description: string;
10
10
  buttons?: ButtonOptions | ButtonOptions[];
11
11
  }
12
- declare const EmptyState: ({ title, description, buttons }: EmptyStateProps) => import("react/jsx-runtime").JSX.Element;
13
- export type { ButtonOptions };
14
- export { EmptyState };
12
+ export declare const EmptyState: ({ title, description, buttons }: EmptyStateProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export * from './ImagePreview';
@@ -1 +1,2 @@
1
1
  export * from './ImageFileInput';
2
+ export * from './components';
@@ -0,0 +1,2 @@
1
+ export * from './SegmentBar';
2
+ export * from './SegmentLabels';
@@ -0,0 +1 @@
1
+ export * from './useProgressBar';
@@ -1,2 +1,5 @@
1
1
  export * from './ProgressBar';
2
+ export * from './components';
3
+ export * from './hooks';
2
4
  export * from './types';
5
+ export * from './utils';
@@ -1 +1 @@
1
- export { type DropdownDirection, SelectDropdown, type SelectDropdownProps } from './SelectDropdown';
1
+ export * from './SelectDropdown';
@@ -1,9 +1,8 @@
1
1
  import type { ElementType, ReactNode } from 'react';
2
- interface SpinnerProps {
2
+ export interface SpinnerProps {
3
3
  as?: ElementType;
4
4
  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
5
5
  children?: ReactNode;
6
6
  backdrop?: boolean;
7
7
  }
8
8
  export declare const Spinner: ({ as, size, children, backdrop }: SpinnerProps) => import("react/jsx-runtime").JSX.Element;
9
- export {};
@@ -1,2 +1 @@
1
- export type { SwitchProps } from './Switch';
2
- export { Switch } from './Switch';
1
+ export * from './Switch';
@@ -1,7 +1,7 @@
1
1
  import { type MouseEventHandler } from 'react';
2
2
  import type { Size } from '../../../constant/size';
3
3
  import type { SideSlotType } from '../../types/side-slot';
4
- interface TagProps {
4
+ export interface TagProps {
5
5
  size?: Extract<Size, 'sm' | 'md'>;
6
6
  icon?: SideSlotType;
7
7
  text: string;
@@ -11,7 +11,5 @@ interface TagProps {
11
11
  onButtonClick?: MouseEventHandler<HTMLButtonElement>;
12
12
  maxLength?: number;
13
13
  }
14
- type CalculatedPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
15
- declare const Tag: ({ size, icon, text, count, close, onButtonClick, maxLength }: TagProps) => import("react/jsx-runtime").JSX.Element;
16
- export type { CalculatedPosition };
17
- export { Tag };
14
+ export type CalculatedPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
15
+ export declare const Tag: ({ size, icon, text, count, close, onButtonClick, maxLength }: TagProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,8 @@
1
+ type CalculatedPosition = 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
1
2
  interface TooltipProps {
2
3
  tooltipType?: 'white' | 'black';
3
4
  iconType?: 'stroke' | 'fill';
4
- position?: 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'auto';
5
+ position?: CalculatedPosition | 'auto';
5
6
  size?: 'sm' | 'md';
6
7
  hideArrow?: boolean;
7
8
  title?: string;
@@ -10,6 +11,7 @@ interface TooltipProps {
10
11
  className?: string;
11
12
  iconColor?: string;
12
13
  iconStyle?: 'help-circle' | 'alert-circle';
14
+ zIndex?: number;
13
15
  }
14
- export declare const Tooltip: ({ tooltipType, iconType, position, size, title, content, hideArrow, type, iconColor, iconStyle, className, }: TooltipProps) => import("react/jsx-runtime").JSX.Element;
16
+ export declare const Tooltip: ({ tooltipType, iconType, position, size, title, content, hideArrow, type, iconColor, iconStyle, className, zIndex, }: TooltipProps) => import("react/jsx-runtime").JSX.Element;
15
17
  export {};
@@ -1,6 +1,6 @@
1
- export { useDropdown } from './useDropdown';
2
- export { useDropdownKeyboard } from './useDropdownKeyboard';
3
- export { useDropdownPosition } from './useDropdownPosition';
4
- export { useOutsideClick } from './useOutsideClick';
5
- export { useScrollLock } from './useScrollLock';
6
- export { useWindowResize } from './useWindowResize';
1
+ export * from './useDropdown';
2
+ export * from './useDropdownKeyboard';
3
+ export * from './useDropdownPosition';
4
+ export * from './useOutsideClick';
5
+ export * from './useScrollLock';
6
+ export * from './useWindowResize';
@@ -1,4 +1,4 @@
1
1
  export * from './dropdown';
2
- export { useCallbackRef } from './useCallbackRef';
3
- export { useMediaQuery } from './useMediaQuery';
4
- export { useMergeRefs } from './useMergeRefs';
2
+ export * from './useCallbackRef';
3
+ export * from './useMediaQuery';
4
+ export * from './useMergeRefs';
@@ -0,0 +1,26 @@
1
+ /** AI 에이전트용 컴포넌트 메타데이터 타입 */
2
+ /** DES INDEX §3-1~§3-8 기준 카테고리 (commerce-rag design 네임스페이스) */
3
+ export type ComponentCategory = 'action' | 'input' | 'icon' | 'overlay' | 'navigation' | 'feedback' | 'layout' | 'data-display';
4
+ export interface ComponentMeta {
5
+ category: ComponentCategory;
6
+ aliases: string[];
7
+ hasChildren: boolean;
8
+ description: string;
9
+ whenToUse: string[];
10
+ forbiddenRules: string[];
11
+ seeAlso: string[];
12
+ jsRequired: boolean;
13
+ /** Props가 확장하는 HTML 요소 — 에이전트가 표준 HTML 속성 사용 가능 여부를 판단 */
14
+ htmlElement?: string;
15
+ /**
16
+ * render_to_html에 전달할 실제 사용 예시 props.
17
+ *
18
+ * 작성 규칙 (props-type-guide.md § usageExamples 참조):
19
+ * - key: 시나리오 이름 (예: "default", "withIcon", "rangePicker")
20
+ * - value: render_to_html의 props 파라미터에 그대로 전달 가능한 객체
21
+ * - 모든 required prop 포함 필수. optional은 시나리오에 필요한 것만.
22
+ * - 에이전트가 복사해서 바로 사용할 수 있는 수준의 실제 데이터.
23
+ * - 빈 문자열(""), 빈 객체({}) 금지. 의미 있는 값을 넣을 것.
24
+ */
25
+ usageExamples?: Record<string, Record<string, unknown>>;
26
+ }
@@ -1,13 +1,11 @@
1
+ import type { SlotIconComponent } from '../side-slot';
1
2
  /**
2
3
  * 기본 옵션 타입
3
4
  */
4
5
  export type OptionType = {
5
6
  id: string | number;
6
7
  label: string;
7
- icon?: React.ComponentType<{
8
- width?: number;
9
- height?: number;
10
- }>;
8
+ icon?: SlotIconComponent;
11
9
  };
12
10
  /**
13
11
  * 옵션 값 타입 (단일 또는 다중 선택)
@@ -1,12 +1,20 @@
1
1
  import type { ComponentType, ReactNode } from 'react';
2
2
  import type { COLOR } from '../../constant/color';
3
3
  import type { DotProps } from '../components';
4
+ /**
5
+ * 아이콘 컴포넌트 자리에 쓰이는 타입. MCP가 props 추출 시 이 타입의 정체성을 감지하여
6
+ * 문자열 이름을 실제 아이콘 컴포넌트로 치환할 수 있도록 nominal brand를 부착한다.
7
+ *
8
+ * 런타임 영향 없음 (브랜드 필드는 optional never, 실제로 할당할 수 없음).
9
+ */
4
10
  export type SlotIconComponent = ComponentType<{
5
11
  height?: number;
6
12
  width?: number;
7
13
  color?: string;
8
14
  className?: string;
9
- }>;
15
+ }> & {
16
+ readonly __ncuaSlotIconBrand?: never;
17
+ };
10
18
  export type IconSlotType = {
11
19
  type: 'icon';
12
20
  icon: SlotIconComponent;